docs(gc)+feat(gc): ADR 0004 amendment — forwarding encodings finalizedVerified
The Phase 3 entry dependency lands (codex gate item 6's design half). Two single-read-discriminable encodings, both inert until copying: - Other-pointer objects: a forwarded header IS the to-space tagged pointer, verbatim. (header & 7) == 3 discriminates — the loaded word on the forwarded branch is already the healed reference, exactly the Phase 4 LRB slow-path shape. Price, paid permanently: every widetag with low bits 011 is retired (0x03, 0x0B ... 0xFB). Hash-table moved 0x03 -> 0x07 while still layoutless, so the renumber costs nothing; the descriptor table answers size -1 for retired values, so walkers fail loudly. - Conses: an evacuated cons's car carries the to-space address under reserved lowtag 100 (ADR 0001 amendment 2's young-cons evacuation). The lowtag reservation is now spent; 101 and 110 remain free. Runtime constants (+gc-forwarded-header-lowtag+, +gc-cons-forwarded-lowtag+) and gc-header-forwarded-p are in the tree now so nothing accretes onto the retired space. GC.md's forwarding-layout sketch replaced with the finalized rule. Header reserved bits 63..56 stay collector-reserved; Phase 1-3 leave them zero and gc-header-length masks them (landed earlier). make test-gc PASS; test-smoke PASS; full suite 202/202. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By:
Claude Fable 5 <noreply@anthropic.com>