#294 stage1: (error "BAD") lands in TYPE-ERROR arithmetic-on-NIL instead of raising — regression from f2767ea conditions-as-CLOS (2 suite tests)
closedBisected: f2767ea~1 works ((handler-case (error "BAD") (error (c) c)) => BAD at the stage1 REPL); f2767ea and later print (TYPE-ERROR The value is not of type NUMBER. NIL NUMBER arithmetic) instead. f2767ea made conditions CLOS objects (cave#204) — but the host-built stage1 has NO mini-clos, so the error/make-condition path hits arithmetic on NIL where a class/registry lookup comes back empty.
Repro: printf '(handler-case (error "BAD") (error (c) c))\n' | build/funcl-stage1 Expect BAD; get the TYPE-ERROR line. (handler-case 42 (error (c) 99)) => 42 still works, so the handler frames are fine — it is the error->condition construction that breaks without mini-clos.
Fails bootstrap tests funcl-stage1-repl-supports-handler-case and funcl-stage1-save-image-restart-evaluates (the latter SIGSEGVs — likely the same broken condition path reached during save-image error handling; re-verify after fixing the first).
Fix shape: the two-tier bridge in f2767ea needs a working non-CLOS fallback tier when mini-clos is absent (stage1), instead of assuming the mc registry exists. Split off from cave#293 (whose funclrc boot hang is fixed in c5494e4) — same suite run surfaced both, different causes.
Comments (2)
Conditions family FIXED in 198df11: mc-conditions-live persisted-marker gate (same-tier defvar read before any ag-fn-lookup; carried across save-image via the cave#291 tables channel, slot 3). 4 of the 5 tests pass (handler-case, condition-system-stubs, bitwise-and-arithmetic, fboundp); native tier + save-image round-trip verified, fasl oracle 4/4. The residual save-image-restart-evaluates failure reproduces at f2767ea~1 (pre-CLOS-conditions) — OUT of this family, split to its own issue, as is the root 'stage1 runtime code cannot call baked defuns' class.
Scope update: THREE more stage1 tests share this family — funcl-stage1-condition-system-stubs, funcl-stage1-supports-bitwise-and-arithmetic, funcl-stage1-supports-fboundp (each fails one battery case with a source-run returning exit 1 instead of 42). Attribution verified twice: they fail at d8d2ac5 (pre-fasl) + the cave#293 guard cherry-picked, clean build — so they pre-date the ADR-0030 fasl work entirely and sit in the same earlier stack as the handler-case failure (bisected boundary: f2767ea works-before/breaks-after for handler-case; the exact breaking commit for these three is TBD within the f2767ea-era range). Total known-failing bootstrap tests on main: 5, all this family. NOTE: they were invisible in suite runs before c5494e4 because the cave#293 boot breakage distorted stage1 test behavior — c5494e4 unmasked them.