CI and Triage

CI structure, local workflow, and failure diagnosis.

CI structure

JobTriggerWhatProptest cases
examplesAlwaysAll .lisp files in examples/
test-rustAfter examplesUnit + integration tests (skip property)
test-propertyAfter test-rustAll property tests8 (PR) / 16 (merge queue)
toolchain-checkWeeklyFull suite on beta/nightly128

Examples gate everything. Fast tier (PR): ~5 minutes. Thorough tier (merge queue): ~30 minutes. Weekly: full coverage on beta/nightly.

Local development workflow

# Smoke test (what agents should run first)
make smoke

# Fast feedback (examples + elle scripts + unit tests)
make smoke

# Run only Elle scripts
cargo test elle::

# Run only property tests, reduced
PROPTEST_CASES=8 cargo test property::

# Run a specific Elle test script
cargo run -- tests/elle/core.lisp

# Full suite (before opening PR, or let CI handle it)
cargo test --workspace

Failure triage

FailureSymptomLikely causeFix
elle-doc generationdocs job fails on ./target/release/elle elle-doc/generate.lispUsing nil? to check end-of-list. Lists terminate with EMPTY_LIST, not NIL.Use empty? for list termination checks. Check elle-doc/generate.lisp and elle-doc/lib/.
Examples failexamples job failsRuntime error in .lisp file. Assertions use assert-eq, assert-true, etc. from examples/assertions.lisp.Run cargo run -- examples/failing.lisp locally. Check assertion message.
Elle scripts failexamples job fails on Elle script testsRuntime error in tests/elle/.lisp.Run cargo run -- tests/elle/failing.lisp locally. Check assertion message.
Property tests failtest-property job fails with shrunk counterexampleThe shrunk output shows the minimal failing input.Reproduce with the exact shrunk values as a unit test. Check proptest-regressions/ files.
Integration tests failtest-rust job failsTests use eval_source() which runs the full pipeline.Read the assertion. Check whether the test expects .unwrap() (success) or .is_err() (error).
Clippyclippy job failsAny Rust warning. CI runs with -D warnings.Run cargo clippy --workspace --all-targets -- -D warnings locally.
Formattingfmt job failsUnformatted Rust code.Run cargo fmt.
Rustdocdocs job fails on cargo doc stepBroken intra-doc links or malformed doc comments.Run RUSTDOCFLAGS="-D warnings" cargo doc --workspace --no-deps locally.

See also