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>
Anthony Green2026-06-12 13:52:11 -0400 d087f58bc058b0e6e54235f5648e68beac734d24
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>