feat(linkage): ADR-0032 Stage B.2 checkpoint — shared closure-cell stub (dormant), two blockers isolated and filedVerified

The B.2 deliverables that survived adversarial testing, plus the two
that didn't ship and why:

SHIPPED:
- The shared closure-cell call stub (ag-emit-cell-closure-stub):
  verifies widetag 0x08, pops the site return address into R11,
  pushes the ncaps captures per the ADR-0028 trailing-param
  convention, re-pushes the return address, tail-jumps the entry —
  the callee's ret-pop returns straight to the site.  Emitted at
  REPL-ready on BOTH ADR-0017 witness producers (bytes are
  name-independent, so cave#315's drift is unchanged) at a
  boot-deterministic offset so fasl COs may carry raw rel32 calls to
  it.  Probe-verified for 0-cap, 1-cap, and 2-user+2-cap closures,
  including across forced GC.  DORMANT: both arms' non-raw paths
  keep the B.1 name-keyed fallback (see cave#316).
- Two hard-won stub rules, now encoded in comments + this history:
  stack ops inside boot-emitted stubs must be RAW byte emissions
  (the asm push/pop helpers bump the emission-time CFI tracker, and
  a stub's cap loop runs N times at runtime vs once at emit); and
  NEVER pop into R13 — it is the GC allocation-window limit
  ([R15,R13)); doing so nuked the heap limit with a code address and
  the first collection under a stub-called callee spun forever in
  GC-REGION-SYNC.
- asm helpers: asm-jmp-rcx; r13 push/pop added then deliberately
  removed.

NOT SHIPPED, isolated + filed:
- Routing non-raw cells through the stub: asdf's uiop/package stores
  some widetag-0x08 callable whose entry does NOT take trailing caps
  ("__G63__ expected 2, got 4") — cave#316 has the species hunt.
- The pkgsym arm's bind-and-retry migration: compile-file's wire
  machinery mints package-own records for INHERITED names
  (UIOP/UTILITY::SECOND) whose empty cells only the name-keyed
  fallback kept alive; the ADR-0031 rule-2 raise then kills the asdf
  compile.  The emit-side accessibility-first intern (ADR-0031 rule
  3 completion) is the prerequisite — cave#317.

Verified: 8/8 sharded suite, smoke, spike suite 16/0, alexandria via
the auto-loaded fasl, 12/12 package edge probes, bind-path probes
pre/post forced GC; replay boot 161.06G instructions (+0.12% vs
B.1 — the dormant stub costs nothing).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Anthony Green2026-07-14 19:57:55 -0400 39c99dbce6e3d9de7d61513520f553fce6cadafa
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>