diff --git a/plans/agent-briefings/conformance-loop.md b/plans/agent-briefings/conformance-loop.md index 95188a9c..83a71cd3 100644 --- a/plans/agent-briefings/conformance-loop.md +++ b/plans/agent-briefings/conformance-loop.md @@ -85,7 +85,7 @@ Blocked with specifics and move to the next candidate next iteration. ## Checklist -- [ ] common-lisp +- [!] common-lisp — blocked: needs per-suite counter names + per-suite preloads (see Blocked) - [ ] erlang - [ ] feed - [ ] forth @@ -100,8 +100,30 @@ Blocked with specifics and move to the next candidate next iteration. ## Progress log (newest first) -- (none yet) +- 2026-06-07 — common-lisp: classified migratable-in-kind (SX suites over epoch) but + BLOCKED on driver feature gaps. Baseline `bash lib/common-lisp/conformance.sh` = + 305 passed / 0 failed across 12 suites (3 — evaluator/geometry/mop-trace — already + emit 0/0, a pre-existing extraction quirk). Not a foreign runner, so not Excluded. + Did NOT migrate (parity unachievable under current modes); left conformance.sh + untouched. See Blocked. Driver left unchanged (out of strict per-iteration scope). ## Blocked -- (none yet) +- **common-lisp** — the shared driver's two modes can't reproduce its 305/0 breakdown: + 1. **Per-suite counter variable names.** Old script reads 8 distinct pairs across + its 12 suites: `cl-test-pass`/`cl-test-fail` (read, lambda, eval), `passed`/`failed` + (conditions, clos), `demo-passed`/`demo-failed`, `parse-passed`/`parse-failed`, + `debugger-passed`/`debugger-failed`, `geo-passed`/`geo-failed`, + `mop-passed`/`mop-failed`, `macro-passed`/`macro-failed`, `stdlib-passed`/`stdlib-failed`. + `MODE=counters` supports only one global `COUNTERS_PASS`/`COUNTERS_FAIL`. + 2. **Per-suite preload chains.** Each suite loads a different file set + (e.g. read: `reader.sx`; clos: `runtime.sx clos.sx`; macros: `reader parser eval loop`). + `MODE=counters` loads one fixed `PRELOADS` set before every suite. + `MODE=dict` also fails: these tests run at *load* time mutating globals (no + `-tests-run!` runner fns), and dict mode loads all suites into one session — the + shared `passed`/`failed` counters used by both conditions and clos would collide. + **Unblock path (driver enhancement, deferred — out of this loop's per-iteration scope):** + extend `MODE=counters` with optional per-suite counter names and per-suite preloads + in the `SUITES` entry format (backward-compatible with the `name:file` shape haskell + uses). Same gap likely affects other remaining candidates; worth a one-time driver + change before resuming migrations.