test: re-cite retired-mechanism comments in surviving carriers

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.
This commit is contained in:
2026-08-08 01:34:05 +09:00
parent f6628b985e
commit 939d0938e2
19 changed files with 42 additions and 57 deletions

View File

@@ -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"

View File

@@ -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).
*

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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

View File

@@ -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 <stdio.h>
#include <stdlib.h>

View File

@@ -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

View File

@@ -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);

View File

@@ -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

View File

@@ -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 <stem>.sepwork/<pkg>.s — the
* lib body lands in <pkg>.s, NOT in __root.s (which holds only the test
* fixture / probe main). So the byte-id MUST concat EVERY <pkg>.s (the
@@ -472,7 +471,7 @@ corpus_complete(const char *cwd)
* <stem>.sepwork/<pkg>.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;

View File

@@ -1,8 +1,8 @@
/*
* 989_m2wwi_run — M2 `.wwi` export-data producer gate (task #22 arc).
* Both stages (rule-10): the new `w6c -I <out.wwi>` 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 <out.wwi>`
* 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

View File

@@ -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

View File

@@ -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);

View File

@@ -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 <stdio.h>
#include <stdlib.h>
@@ -72,7 +72,7 @@ build_via(const char *bin, const char *driver, const char *src,
{
char cmd[4096];
/* -o <workdir>/<out> 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,

View File

@@ -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 <stdio.h>
#include <stdlib.h>
@@ -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];

View File

@@ -88,7 +88,7 @@ struct buildjob {
* inherits no concurrent siblings — system() spawns a fresh /bin/sh -c.
* stderr lands in <workdir>/build.err so concurrent builds don't merge
* their diagnostics. `-o <workdir>/main` (T3) makes the driver write its
* intermediates (main.{combined.ww,s,o}) beside the output in <workdir>
* intermediates (main.{s,o} and the sepwork tree) beside the output in <workdir>
* 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