From 939d0938e20e0647d5aa44a42c80bfccddfd4f48 Mon Sep 17 00:00:00 2001 From: Hojun-Cho Date: Sat, 8 Aug 2026 01:34:05 +0900 Subject: [PATCH] test: re-cite retired-mechanism comments in surviving carriers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The migrate-and-retire audit left the surviving carriers as the only files still describing the retired combined.ww amalgamator as live: m2wwi/m3sep headers claimed .wwi was dead code, four byteid carriers carried dead cleanup of never-written .combined.ww intermediates, and sepbuild's enumeration mirror plus lib_byteid's completeness scan still skipped the retired artifact form (the same silent accommodation just removed from both drivers — dropping it here surfaced and flushed 39 stale untracked amalgamator outputs across lib/, which the gates now reject loudly). Remaining mentions are past-tense history or quoted diagnostics. --- test/wcc/727_modcall_widen_slice.c | 2 +- test/wcc/784_xmod_alias_struct_collide_run.c | 2 +- test/wcc/785_structvariant_largeunion_return.c | 2 -- test/wcc/786_narrow_alias_deref_store.c | 2 -- test/wcc/787_xmod_variant_match.c | 4 ++-- test/wcc/789_named_ptr_alias_variant_widen.c | 2 -- test/wcc/790_single_field_struct_zeroinit.c | 2 -- test/wcc/795_xmod_valglobal_run.c | 3 +-- test/wcc/848_xmod_qualstructlit_run.c | 4 ++-- test/wcc/901_asserttyped_gap.c | 8 ++++---- test/wcc/989_c6soak_run.c | 3 +-- test/wcc/989_declns_sep.c | 6 +++--- test/wcc/989_lib_byteid.c | 17 ++++++++--------- test/wcc/989_m2wwi_run.c | 6 +++--- test/wcc/989_m3sep_run.c | 4 ++-- test/wcc/989_sepbuild_run.c | 8 +++----- test/wcc/993_ww_ww.c | 4 ++-- test/wcc/994_w6c_ww.c | 18 ++++++++---------- test/wcc/995_self_rebuild.c | 2 +- 19 files changed, 42 insertions(+), 57 deletions(-) diff --git a/test/wcc/727_modcall_widen_slice.c b/test/wcc/727_modcall_widen_slice.c index 30ba4a01..bfc752e1 100644 --- a/test/wcc/727_modcall_widen_slice.c +++ b/test/wcc/727_modcall_widen_slice.c @@ -47,7 +47,7 @@ struct row { /* Two-module probe: `caller` calls `needle.want(h, n)` where `n: []u8` * widens into `(u8 | []u8)`. The // MODULE: directives + `use needle;` - * shape parallels what cmd/ww driver synthesises in combined.ww. */ + * shape parallels the cmd/ww driver's resolved .unit.ww form. */ static const struct row rows[] = { { "dot_callee_slice_widen", "package needle;\n" diff --git a/test/wcc/784_xmod_alias_struct_collide_run.c b/test/wcc/784_xmod_alias_struct_collide_run.c index 3855758a..b80aca13 100644 --- a/test/wcc/784_xmod_alias_struct_collide_run.c +++ b/test/wcc/784_xmod_alias_struct_collide_run.c @@ -45,7 +45,7 @@ * The dispatcher uses a BRANCHED callee (void arm → -1, fn-ptr arm → * v+100) so the field load actually feeds control flow (gate-blind * discipline). cstage `ww build` + run pins runtime; raw w6c vs w6c_ww - * `.s` cmp on the driver-produced combined.ww pins rule-10 byte-id + * `.s` cmp on the self-built two-module unit pins rule-10 byte-id * (the discriminating net for #223 — pre-fix the dispatcher diverges * `MOVQ reader(SB)` vs the pointer-field load). * diff --git a/test/wcc/785_structvariant_largeunion_return.c b/test/wcc/785_structvariant_largeunion_return.c index 4a7c76df..fc6ca968 100644 --- a/test/wcc/785_structvariant_largeunion_return.c +++ b/test/wcc/785_structvariant_largeunion_return.c @@ -130,8 +130,6 @@ cleanup_tmp(const char *tmpdir, const char *base) } snprintf(p, sizeof p, "%s/%s.o", tmpdir, base); if (unlink(p) != 0 && errno != ENOENT) { perror(p); bad = 1; } - snprintf(p, sizeof p, "%s/%s.combined.ww", tmpdir, base); - if (unlink(p) != 0 && errno != ENOENT) { perror(p); bad = 1; } if (rmdir(tmpdir) != 0) { perror(tmpdir); bad = 1; } return bad; } diff --git a/test/wcc/786_narrow_alias_deref_store.c b/test/wcc/786_narrow_alias_deref_store.c index 2c2e5321..b661b411 100644 --- a/test/wcc/786_narrow_alias_deref_store.c +++ b/test/wcc/786_narrow_alias_deref_store.c @@ -130,8 +130,6 @@ cleanup_tmp(const char *tmpdir, const char *base) } snprintf(p, sizeof p, "%s/%s.o", tmpdir, base); if (unlink(p) != 0 && errno != ENOENT) { perror(p); bad = 1; } - snprintf(p, sizeof p, "%s/%s.combined.ww", tmpdir, base); - if (unlink(p) != 0 && errno != ENOENT) { perror(p); bad = 1; } if (rmdir(tmpdir) != 0) { perror(tmpdir); bad = 1; } return bad; } diff --git a/test/wcc/787_xmod_variant_match.c b/test/wcc/787_xmod_variant_match.c index c39917ab..ea79c38b 100644 --- a/test/wcc/787_xmod_variant_match.c +++ b/test/wcc/787_xmod_variant_match.c @@ -27,8 +27,8 @@ * (AST-name vs cstage tinfo); precise Type identity is the #10 endgame. * * The PRE-FIX failure mode is a wwstage CHECKER REJECT, so the - * discriminator is the `w6c_ww` build of the combined.ww succeeding at - * all — pre-fix it errored out; post-fix it succeeds AND is byte-id + * discriminator is the `w6c_ww` build of the two-module unit succeeding + * at all — pre-fix it errored out; post-fix it succeeds AND is byte-id * with cstage. Self-contained 2-module fixtures (no lib coupling). * * scenario | shape | exit | byte-id diff --git a/test/wcc/789_named_ptr_alias_variant_widen.c b/test/wcc/789_named_ptr_alias_variant_widen.c index ef16fde3..46577a4e 100644 --- a/test/wcc/789_named_ptr_alias_variant_widen.c +++ b/test/wcc/789_named_ptr_alias_variant_widen.c @@ -111,8 +111,6 @@ cleanup_tmp(const char *tmpdir, const char *base) } snprintf(p, sizeof p, "%s/%s.o", tmpdir, base); if (unlink(p) != 0 && errno != ENOENT) { perror(p); bad = 1; } - snprintf(p, sizeof p, "%s/%s.combined.ww", tmpdir, base); - if (unlink(p) != 0 && errno != ENOENT) { perror(p); bad = 1; } if (rmdir(tmpdir) != 0) { perror(tmpdir); bad = 1; } return bad; } diff --git a/test/wcc/790_single_field_struct_zeroinit.c b/test/wcc/790_single_field_struct_zeroinit.c index e1ddfb1c..39feb9a6 100644 --- a/test/wcc/790_single_field_struct_zeroinit.c +++ b/test/wcc/790_single_field_struct_zeroinit.c @@ -111,8 +111,6 @@ cleanup_tmp(const char *tmpdir, const char *base) } snprintf(p, sizeof p, "%s/%s.o", tmpdir, base); if (unlink(p) != 0 && errno != ENOENT) { perror(p); bad = 1; } - snprintf(p, sizeof p, "%s/%s.combined.ww", tmpdir, base); - if (unlink(p) != 0 && errno != ENOENT) { perror(p); bad = 1; } if (rmdir(tmpdir) != 0) { perror(tmpdir); bad = 1; } return bad; } diff --git a/test/wcc/795_xmod_valglobal_run.c b/test/wcc/795_xmod_valglobal_run.c index 8960eb52..4460a315 100644 --- a/test/wcc/795_xmod_valglobal_run.c +++ b/test/wcc/795_xmod_valglobal_run.c @@ -35,8 +35,7 @@ * Single-file multi-package form (like 953): `package aa; ... package * main; import aa; ...` in one source, so w6c/w6c_ww see the cross- * module reference without -I path plumbing, and the build is self- - * contained (no selfhost traversal → no .combined.ww fixture race, so - * this lives in the parallel phase, not the 990-997 skip-set). + * contained (no selfhost traversal). * * GATE POLARITY: must stay GREEN. A wrong exit means the value-global * mangle regressed (collision returned); a byte-id FAIL means the stages diff --git a/test/wcc/848_xmod_qualstructlit_run.c b/test/wcc/848_xmod_qualstructlit_run.c index c12658c6..e9d8790c 100644 --- a/test/wcc/848_xmod_qualstructlit_run.c +++ b/test/wcc/848_xmod_qualstructlit_run.c @@ -53,8 +53,8 @@ * or the two stages' .s diverged (rule-10 break). * * Builds its own 2-module fixtures in a private mktemp dir, so all - * intermediates (main.combined.ww, the linked binary, the .s probes) - * land OFF the source tree (CLAUDE.md rule 14). + * intermediates (the linked binary, the .s probes) land OFF the + * source tree (CLAUDE.md rule 14). */ #include #include diff --git a/test/wcc/901_asserttyped_gap.c b/test/wcc/901_asserttyped_gap.c index a3559b5b..179fb67b 100644 --- a/test/wcc/901_asserttyped_gap.c +++ b/test/wcc/901_asserttyped_gap.c @@ -1,10 +1,10 @@ /* * 901_asserttyped_gap — ww-stage checker nil-type gap-corpus net. * - * The live `make test` stdlib _run suite drives the CSTAGE `ww` - * (cmd/ check.c), which has no asserttyped pass; 990_selfhost feeds - * the ww-stage dumper only -t/-a (tokens/ast), never the checker. So - * the wwstage checker's asserttyped diagnostics (check.ww — the + * The ordinary suites drive the CSTAGE `ww` (cmd/ check.c), which has + * no asserttyped pass, and nothing else feeds the ww-stage dumper's + * checker (-c) — only -t/-a (tokens/ast) run elsewhere. So the + * wwstage checker's asserttyped diagnostics (check.ww — the * #15 / A.6.2.1e post-checker nil-type invariant gate) are UNOBSERVED * by every other test, yet the gate is now ARMED (a non-exempt * nil-typed value node writes its diagnostic and os.exit(1)s). This diff --git a/test/wcc/989_c6soak_run.c b/test/wcc/989_c6soak_run.c index a505147b..d8b61737 100644 --- a/test/wcc/989_c6soak_run.c +++ b/test/wcc/989_c6soak_run.c @@ -209,8 +209,7 @@ main(void) if (getcwd(cwd, sizeof cwd) == NULL) return 1; /* The real include set the sep producer needs to resolve the lib + - * frontend package graph (verified live; the bare default path grabs - * the in-tree *test.combined.ww fixtures and collides on `main`). */ + * frontend package graph (verified live). */ char inc[4096]; snprintf(inc, sizeof inc, "-I %s/lib -I %s/lib/ww -I %s/selfhost/cmd/wcc", cwd, cwd, cwd); diff --git a/test/wcc/989_declns_sep.c b/test/wcc/989_declns_sep.c index 63fb24f6..a954ffce 100644 --- a/test/wcc/989_declns_sep.c +++ b/test/wcc/989_declns_sep.c @@ -5,9 +5,9 @@ * (with duplicate-type already owned by runww_dup_type_reject). This * residual retains only the modfn separate-package artifact leg. * - * Re-hosts every decl-namespace assertion that today lives ONLY in - * 910/997 onto a gate that survives the M4 flip (910/997 are deleted at - * the flip — they feed combined.ww / amalgamation inputs). Three legs: + * Re-hosts every decl-namespace assertion that once lived ONLY in + * 910/997 onto a gate that survives the M4 flip (910/997 were deleted + * at the flip — they fed the retired amalgamation inputs). Three legs: * * dup family — a duplicate top-level fn/type/def/let in one (flat) * module must build-FAIL on BOTH stages. The fixtures diff --git a/test/wcc/989_lib_byteid.c b/test/wcc/989_lib_byteid.c index 0c20e469..4953b3b9 100644 --- a/test/wcc/989_lib_byteid.c +++ b/test/wcc/989_lib_byteid.c @@ -1,17 +1,16 @@ /* - * 989_lib_byteid — cstage-vs-wwstage byte-identity gate over the lib/ - * surface that the embedded combined.ww set does NOT cover. + * 989_lib_byteid — cstage-vs-wwstage byte-identity gate over the whole + * lib/ surface, and the ONE owner of wwstage-DRIVER-leg byte identity. * - * The 990-997 gates byte-id only the modules the selfhost tools import - * (ascii/bytes/errors/io/math/memio/os/rt/strconv/strings/time/types/ - * utf8 + lex/parse/wcc/ww). Every other lib/ module compiles through - * the CSTAGE driver alone (the 9xx _run tests), so a cs≠ww divergence + * The bootstrap gates (991-995) byte-id only the modules the selfhost + * tools import (ascii/bytes/errors/io/math/memio/os/rt/strconv/strings/ + * time/types/utf8 + lex/parse/wcc/ww). Every other lib/ module compiles + * through the CSTAGE driver alone elsewhere, so a cs≠ww divergence * there ships gate-green — regex.finish was cs≠ww for weeks this way * (task #21, FC0). This gate closes the class: each lib test fixture is * sep-built through BOTH driver stages and the per-package asm compared. * - * #94 sep layout: the gate drives `ww` (cstage) and `ww_ww` - * (wwstage) instead of feeding a single .combined.ww to raw w6c/w6c_ww. + * #94 sep layout: the gate drives `ww` (cstage) and `ww_ww` (wwstage). * Under sep EACH package compiles to its OWN .sepwork/.s — the * lib body lands in .s, NOT in __root.s (which holds only the test * fixture / probe main). So the byte-id MUST concat EVERY .s (the @@ -472,7 +471,7 @@ corpus_complete(const char *cwd) * .sepwork/.unit.ww scratch next to source; exclude it so * the scan enrols real source dirs only, not generated work dirs. */ snprintf(cmd, sizeof cmd, "cd %s && find lib -name '*.ww' " - "! -name '*.combined.ww' ! -path '*.sepwork/*' " + "! -path '*.sepwork/*' " "| sed 's|/[^/]*$||' | sort -u", cwd); FILE *p = popen(cmd, "r"); if (!p) return -1; diff --git a/test/wcc/989_m2wwi_run.c b/test/wcc/989_m2wwi_run.c index 36e69390..36c295df 100644 --- a/test/wcc/989_m2wwi_run.c +++ b/test/wcc/989_m2wwi_run.c @@ -1,8 +1,8 @@ /* * 989_m2wwi_run — M2 `.wwi` export-data producer gate (task #22 arc). - * Both stages (rule-10): the new `w6c -I ` producer is DEAD on - * the live path (combined.ww stays the compile substrate; nothing reads - * `.wwi`), so this is purely a new cross-stage byte-id substrate. + * Both stages (rule-10): since the sep flip the `w6c -I ` + * producer IS the live import path, and `.wwi` is a cross-stage + * byte-id substrate this gate pins directly. * * POSITIVE gate — for each package (ascii/strings/getopt, drew2-audited * leak-free), drive the target as the PRIMARY module of a driver-combined diff --git a/test/wcc/989_m3sep_run.c b/test/wcc/989_m3sep_run.c index b1783337..982af698 100644 --- a/test/wcc/989_m3sep_run.c +++ b/test/wcc/989_m3sep_run.c @@ -3,8 +3,8 @@ * * M3 = w6c `-c` (separate-compile / primary-only codegen) reads each imported * package's `.wwi` prototypes (M2's producer output) as import scope INSTEAD of - * re-checking dep bodies. Pure addition: combined.ww stays the LIVE path, `-c` - * is off on every existing invocation. This gate certifies the consumer. + * re-checking dep bodies. Since the sep flip this IS the sole compile + * path. This gate certifies the consumer. * * Fixture: a leaf -> mid -> root chain carrying ALL FOUR cross-boundary fact- * classes — fn SIGNATURE (leaf.add), struct/type LAYOUT (leaf.Point, used as a diff --git a/test/wcc/989_sepbuild_run.c b/test/wcc/989_sepbuild_run.c index 52cb2f84..d61cc53e 100644 --- a/test/wcc/989_sepbuild_run.c +++ b/test/wcc/989_sepbuild_run.c @@ -121,10 +121,9 @@ strs_cmp(const void *a, const void *b) return strcmp(*(const char *const *)a, *(const char *const *)b); } -/* Concatenate a package directory's *.ww bodies (less *test.ww and - * *.combined.ww, byte-sorted) into `out`. Mirrors the driver's body - * enumeration so the substituted bodies-unit matches the sep-unit - * structurally. */ +/* Concatenate a package directory's *.ww bodies (less *test.ww, + * byte-sorted) into `out`. Mirrors the driver's body enumeration so + * the substituted bodies-unit matches the sep-unit structurally. */ static int append_dir_bodies(FILE *out, const char *dir) { @@ -138,7 +137,6 @@ append_dir_bodies(FILE *out, const char *dir) size_t nl = strlen(nm); if (nl <= 3 || strcmp(nm + nl - 3, ".ww") != 0) continue; if (nl >= 7 && strcmp(nm + nl - 7, "test.ww") == 0) continue; - if (nl >= 12 && strcmp(nm + nl - 12, ".combined.ww") == 0) continue; names[n++] = strdup(nm); } closedir(d); diff --git a/test/wcc/993_ww_ww.c b/test/wcc/993_ww_ww.c index 1b0ec1e1..1845a666 100644 --- a/test/wcc/993_ww_ww.c +++ b/test/wcc/993_ww_ww.c @@ -9,7 +9,7 @@ * `use` resolution + the -I search path + the libwwrt.a link. * * Each build runs from a per-driver scratch directory so the - * intermediate .combined.ww/.s/.o files don't collide. + * intermediate .s/.o files don't collide. */ #include #include @@ -72,7 +72,7 @@ build_via(const char *bin, const char *driver, const char *src, { char cmd[4096]; /* -o / keeps the binary where the diff expects it AND - * routes the .combined.ww/.s/.o into the workdir (T3) — no longer + * routes the .s/.o intermediates into the workdir (T3) — no longer * next to the source, so concurrent driver builds never collide. */ if (incs && incs[0]) { snprintf(cmd, sizeof cmd, diff --git a/test/wcc/994_w6c_ww.c b/test/wcc/994_w6c_ww.c index ed4b9d3f..174560f6 100644 --- a/test/wcc/994_w6c_ww.c +++ b/test/wcc/994_w6c_ww.c @@ -7,10 +7,9 @@ * so w6c_ww must produce byte-identical output to wwdump_ww -c on * every program — this test pins that. * - * (We do not diff against C-side `w6c` here because the C compiler has - * features the ww cgen has not yet ported — float compare, fn-address - * @symbol, indirect call. Test 990 probe 5 covers the C-vs-ww diff on - * the subset that the ww cgen handles today.) + * (We do not diff against C-side `w6c` here: this carrier's oracle is + * the wwdump_ww -c TOOL OUTPUT, not the tool binary. The C-vs-ww diff + * on real programs is owned by the blanket byte-identity gates.) */ #include #include @@ -189,9 +188,8 @@ main(void) char cwd[1024]; if (getcwd(cwd, sizeof cwd) == NULL) return 1; - /* In-source corpus: programs the ww-side cgen handles today. - * Mirrors probe 5 in 990_selfhost without the parts that drift - * against C w6c. */ + /* In-source corpus: programs the ww-side cgen handles today, + * kept free of the parts that drift against C w6c. */ struct { const char *label; const char *src; } progs[] = { { "ret42", "fn main() i32 = { return 42; };" }, @@ -360,9 +358,9 @@ main(void) * The load-bearing M4 oracle: build w6c by SEPARATE compilation under * BOTH driver stages and prove they sep-produce byte-identical per-package * .s/.o/.wwi (cs==ww on the real tool's sep artifacts, rule 10). The - * combined corpus + the sep-out==combined-out leg are gone — combined-mode - * is being retired (E3 flip), so combined.ww is no longer fed as compiler - * INPUT; the per-pkg cs==ww comparison is the surviving live oracle. Its + * combined corpus + the sep-out==combined-out leg are gone with the + * retired combined mode (E3 flip); the per-pkg cs==ww comparison is + * the surviving live oracle. Its * cold pid-keyed scratch is wiped after the explicit bootstrap gate. */ { char inc[4096], cmd[16384]; diff --git a/test/wcc/995_self_rebuild.c b/test/wcc/995_self_rebuild.c index d1a81f22..f6ec8832 100644 --- a/test/wcc/995_self_rebuild.c +++ b/test/wcc/995_self_rebuild.c @@ -88,7 +88,7 @@ struct buildjob { * inherits no concurrent siblings — system() spawns a fresh /bin/sh -c. * stderr lands in /build.err so concurrent builds don't merge * their diagnostics. `-o /main` (T3) makes the driver write its - * intermediates (main.{combined.ww,s,o}) beside the output in + * intermediates (main.{s,o} and the sepwork tree) beside the output in * instead of next to every traversed source — so concurrent driver * builds no longer share the next-to-source fixed paths, and this gate * may run in the parallel group. The rebuilt binary still lands at