Close-by-construction replacing containment — the designed graduation
path from F1-c1's commit body. The 6 fld_alias_tripwire call sites
(indexed-elem field store/read, heap struct-lit field fill, tuple-elem
read, ptr-chain field read, static struct-lit emit) chase their fu
through type_chase_named; the 6 tripwire calls AND the helper itself
(incl. its :447 peel) are DELETED. Raw `->under` in cgen.c 69→62.
#73 CLOSES.
TRAIN INVARIANT holds: cs-only; w6c_ww/ww_ww bit-identical to the
bcd948d baseline md5s (28ad889042bad8006f1997cbcec94805 /
4e9ca8741f19e1f68219ff799a5e5a14). ZERO new corpus movers vs the c1
tip (kb*/kna corpus + five mains byte-NEUTRAL — the chased gates only
fire on 2+-level alias aggregate fields, none in corpus).
Gate-arm graduations (pre = loud "#73" fatal on cs, ww ok/0; post =
0/0 BYTE-ID): slice/str/tagged arms at the indexed STORE gate
(g73_idxstore/g73_strfield/g73_tagfield), slice arm at the indexed
READ / ptr-chain READ / tuple-elem READ gates (g73_idxread/g73_ptrread/
g73_tupread), nested-struct arm at the static emit gate
(g73_static_struct). The existing 944_alias_accept_run tripwire bound
row graduates K_BUILDERR_CS → K_RUN.
Two arms cannot pin the full 0/0 byte-id cell — documented, not silent:
- heap fill (g73_heapfill, COMPILE-only pin): bare /tmp programs
never link malloc (both stages, pre-existing infra) and ww's
deref-field READ carries the #24-kin field(SB) leak; the chased
FILL bytes verified byte-id by hand against the plain (non-alias)
control — divergence shape identical, all of it in the pre-existing
read sites.
- str-field static emit (g73_static_str): the #73 fatal gave way to
the pre-existing #129 A.2 foldability loud on cs — now both-loud
twin texts (fill0 class), pinned as K_BUILDERR.
- struct-copy arm: NO runnable repro reaches these gates — indexed
whole-struct field reads take the (already chased, byte-id) address
spine, and tuple-of-struct louds upstream on BOTH stages (#54-kin
"aggregate init from unhandled rhs shape"). The arm's only carrier
was the heap gate, covered by the compile pin above.
944_alias_cgen_b5_run grows 16→25 rows (65 checks); all 944-family
suites green; sizelint 0.
46 KiB
46 KiB