Commit Graph

1460 Commits

Author SHA1 Message Date
5f23fe9b67 test: port the assembler input gates to ww
asmgate_test.ww absorbs 530_w6a_parsenum and 989_datargate_run: the
strtoll-semantics identity rows plus the bare-minus reject against
both assemblers with cross-stage .o byte-identity, and the undefined
DATAR-slot loud reject (no .o written) with the defined-slot
byte-identical ok path. The w6a_ww skip gates drop: the Make target
declares both assemblers.
2026-08-08 14:50:43 +09:00
0c98500603 test: port the archive-driven linker observers to ww
archive_test.ww absorbs 610_arch and 632_w6l_manyflags: archive
member selectivity through a load-bearing undefined @symbol extern
(link exit 0, run exit 7), and the -L capacity table {1,64,65,100,
128} against both w6l and w6l_ww with an ET_EXEC check per leg. ar is
/usr/bin/ar via runcommand; the junk -L flags are real argv entries
instead of a 16KB shell string.
2026-08-08 14:50:43 +09:00
4f9ba86058 test: port the w6l link-layout observers to ww
link_test.ww absorbs 600_w6l and 620_data_link: ET_EXEC on the
trivial pipeline, writable-global read/write runs, the exact
two-PT_LOAD R+X/R+W split, the single-PT_LOAD no-DATAW invariant 992
depends on, and the BSS filesz trim (filesz 1 < memsz 32, loader
zero-fill). Strengthened: the ldd staticness proxy is replaced by a
direct no-PT_INTERP phdr scan.
2026-08-08 14:50:43 +09:00
42d8fbe950 test: port the w6a ELF-object observers to ww
elfobj_test.ww (test/object, on testenv) absorbs 500_w6a, 510_dataw,
and 520_datar: ELF64 header magic/class over the 4 inline programs,
DATAW section/symbol layout plus the 6-section no-DATAW legacy
invariant 991 depends on, and the DATAR .rela.data reloc through
link and run. Strengthened: the reloc symbol is resolved to
'greeting' (declared but never implemented in the C carrier).
2026-08-08 14:50:43 +09:00
6657d68349 test: little-endian ELF field readers in testenv
The test/object observers parse assembler/linker artifacts; the
readers reinterpret readfile's byte str and route through endian's
canonical legetu* instead of re-deriving the bit math.
2026-08-08 14:50:12 +09:00
5d100dbd42 test: port the match-dispatch asm observer to ww
728 -> test/asm/matchdispatch_test.ww. The distinct-CMPQ-tag
collection window over TEXT b.next preserved on both stages.
Strengthened: per-row byte-id legs added -- the C header claimed a
cmp -s its code never ran; all three rows verify green.
2026-08-08 14:45:02 +09:00
8c15ab5145 test: port the data/def-emit asm observers to ww
719/724/744/746 -> test/asm/dataemit_test.ww. Exact DATAW payload
needles, the produce-window zero-init and MOVQ-load count floors,
and the strdef inline-pair want/anti windows preserved with their
per-row byte-id legs.
2026-08-08 14:45:02 +09:00
ff36d94be4 test: port the chained-index asm observers to ww
739/740/741 -> test/asm/chain_test.ww. Narrow load/store mnemonics,
the u8 write anti-needle, the greedy MOVQ-$N/IMULQ scale-pair
exact counts and per-row byte-id preserved; 741's never-armed
anti-needle machinery dropped as machinery, not assertion.
2026-08-08 14:45:02 +09:00
6a871cf541 test: port the call-arg asm observers to ww
720/723/727/743 -> test/asm/callarg_test.ww. Ordered PUSHQ windows,
tag-synth + stack-overflow-cleanup needles and the variadic
eightbyte store-count floors preserved. Strengthened: 720's
4-variant row gains the byte-id leg the C skipped behind the
then-open #22 zero-init gate — #22 landed (724 pins the fix), and
the leg verifies green on both stages.
2026-08-08 14:45:02 +09:00
3cca8cd249 test: port the sret/struct-return asm observers to ww
718/721/730 -> test/asm/sret_test.ww. Frame-size and max--K(BP)
stomp sentinels, line-adjacency sret triangle (hidden-RDI, return-
the-pointer, no-AX-capture, forwarding reload) and narrow-trailing-
field windows preserved, including 718's #15 byte-id gate on the
three-return row. 718's whole-suite ww_ww-executable gate dropped
with the other skip gates (the Make target declares the tools).
2026-08-08 14:45:02 +09:00
a50429138c test: port the modshadow asm-window observers to ww; birth test/asm
726/731/732/733/734/735/745/747 -> test/asm/modshadow_test.ww, one
@test per carrier, every want/anti window, occurrence floor and
byte-id leg preserved. New ASM_WW_TESTS block runs the test/asm
observers under test-compiler beside the residual carriers.
2026-08-08 14:45:02 +09:00
90b1005478 test: point attest_userrun comment at the ported collide owner 2026-08-08 14:34:59 +09:00
c7bd0fd48a test: port the module-reset adjacency pin to ww 2026-08-08 14:34:53 +09:00
dc6fff3af8 test: port the enumerator-capacity observer to ww 2026-08-08 14:34:53 +09:00
e0afe48c21 test: port the xmod typecheck reject observers to ww
test/xmod/typecheck_test.ww replaces 989_callarg_typecheck.c and
989_tagged_subset_reject.c. Preserved: both -T __wwtests reservation
faces (both stages, diagnostic required), the shape-mismatch collision
(both stages), the cstage-only same-shape #37 pin, and both tagged
leaf-bridge xmod rows. Not ported, owned elsewhere per the audit: the
carriers' twelve ordinary call-arg rows (r989_callarg_* fixtures) and
the three w6c-vs-w6c_ww byte-id rows (test-data-byteid over
r989_tagsubset_{flatten_subset,slice_subset,nested_wrap}).
2026-08-08 14:34:53 +09:00
cf74d59e87 test: port the fn/mklabel mangle observers to ww
test/xmod/label_test.ww replaces 706_fnlabel_mangle.c and
750_mklabel_modscoped.c with every assertion preserved (fnlabelmangle
fixture run-112 both stages; three mklabel rows with run exits and
module-qualified label needles). Strengthened: fnlabel adds the
cs==ww sepwork .s byte-id the carrier never asserted.
2026-08-08 14:34:53 +09:00
3f0b7647f6 test: port the M1 mangle/usehint run observers to ww
test/xmod/m1_test.ww replaces 989_m1mangle_run.c and
989_m1usehint_run.c with every assertion preserved (5 tree rows +
2 usehint rows, both stages, plus the leaf_collision byte-id leg;
concat order strengthened from shell glob to byte-sorted listdir).
2026-08-08 14:34:53 +09:00
57675431e2 test: port the xmod collide observers to ww; birth test/xmod
test/xmod/collide_test.ww replaces 989_fnptrcollide_run.c and
989_barefn_collide_run.c with every assertion preserved (build-reject
both stages; run-exit 9 + exactly-one TEXT main.run/aa.run + cs==ww).
Makefile grows the XMOD_WW_TESTS block mirroring SEP_WW_TESTS, wired
into test-compiler.
2026-08-08 14:34:53 +09:00
89a4b82ba3 test: port 944_alias_cgen_b5_run to a compile fixture
944_alias_cgen_b5_run.c -> alias_g73_heapfill (//ww:compile), joining
its migrated alias_* siblings. The carrier's stated fixture blocker
('//ww:compile links') is stale: the COMPILE cell runs the bare
frontend, no link. The live #24 field(SB) deref-read leak enters
DATABYTEID_DIVERGED, upgrading the carrier's silent byte-id waiver
with a graduation tripwire.
2026-08-08 14:33:23 +09:00
a4839d0176 test: port 915/949 module-global access carriers to corpus fixtures
915_arr_module_index_run.c -> r915_arr_mod_idx0 (run), r915_arr_mod_
  idx2 (run-exit 1), r915_arr_mod_idx4 (run-exit 6); the single-file
  rows were already owned by r915_arr_local_* + test-data-byteid.
949_xmod_fnptr_const_run.c -> r949_xmod_fnptr_const_table (run),
  r949_xmod_fnptr_wrong_sig, r949_xmod_fnptr_nonfn_dotted (error
  'not assignable' both stages).

The 915 module rows upgrade from 994-delegated to per-fixture cs==ww
byte identity; 949's 2-file -I tree was not load-bearing — inline
packages exercise the same N_DOT &mod.fn mangle (mafn(leaf, module)).
2026-08-08 14:33:23 +09:00
5a8b662d6e test: port 839_xmod_nominal_typeeqast to corpus fixtures
839_xmod_nominal_typeeqast.c -> r839_xmod_nominal_match (run-exit 42),
  r839_xmod_a6_concrete (run), r839_xmod_incompat_concrete (error
  'not assignable'), r839_xmod_distinct_alias (error 'ambiguous
  without nominal layout').

r839_xmod_nominal_match enters DATABYTEID_DIVERGED: the carrier waived
byte-id for the pre-existing cross-module tagged-return spill
divergence; the DIVERGED row makes it loud-on-fix instead. The
typeeqast-layer discriminator itself stays with the lib byteid gate
(test/byteid/libbyteid_test.ww), as the carrier documented.
2026-08-08 14:33:23 +09:00
2680fba303 test: port 787/929 cross-module match carriers to corpus fixtures
787_xmod_variant_match.c -> r787_xmod_variant_no_default (run-exit 21),
  r787_xmod_variant_bind_default (42), r787_xmod_variant_shape_a (12)
  (pkg/errs module dirs), r787_xmod_variant_foreign_qualifier (staged
  error: w6c 'is not a variant of', w6c_ww rejects via the #95
  ambiguity guard — the carrier asserted reject polarity only)
929_match_4arm_cross_module_run.c -> r929_match_{4arm_shadowed_
  canonical,3arm_shadowed,5arm_shadowed,6arm_shadowed,4arm_mixed_kinds,
  4arm_shadowed_reverse} (run; single-file a+b packages, dropping the
  carrier's accidental doubled 'package b;' line)

929's byte-id upgrades from 994-delegated to per-fixture via
test-data-byteid; the asm-level distinct-CMPQ sentinel remains 728's
separate concern. All rows probed green on both stages.
2026-08-08 14:33:23 +09:00
c78bf6ebca test: port the xmod same-leaf collision carriers to corpus fixtures
752_modparam_callee.c -> r752_modparam_xmod_variadic_vs_scalar,
  r752_modparam_variadic_no_collision (run; alpha/beta module dirs)
784_xmod_alias_struct_collide_run.c -> r784_xmod_alias_struct_collide
  (run-exit 42), r784_xmod_alias_struct_symmetric (21),
  r784_xmod_alias_control (30) (sa/sb module dirs)
793_xmod_struct_argpush_collide_run.c -> r793_xmod_argpush_
  {recvpush_t16 107, fieldread_t16 107, combined_t16 114,
  recvpush_t12 6} (m1/m2 module dirs)
797_xmod_struct_field_layout_collide_run.c -> r797_xmod_layout_
  {ptrread_t16 107, letcopy_t16 107, addrptr_pq 10, addrval_pq 10,
  ptrwrite_t16 109, valwrite_t16 109} (m1/m2) + r797_nestfill_box (66)

r770-style sibling module dirs express the trees; the fixture corpus
runs both drivers natively (784's wwstage-build-only leg upgrades to
build+run) and test-data-byteid owns each carrier's aggregated per-
package .s compare (letcopy_t16's real discriminator). All 16 probed
green on both stages including per-package byte identity.
2026-08-08 14:33:23 +09:00
be852d51d9 test: port 732_def_const_fold residue to corpus fixtures
732_def_const_fold.c -> r732_def_xmod_fold (run-exit 42; stronger than
  the carrier's DATA-row grep — links AND reads the folded cross-module
  value), r732_def_xmod_cycle (error 'def value: reference chain too
  deep', upgrading the needle-less exit!=0 check).

The five same-module exec rows and both same-module fail-loud rows were
already owned by the r732_def_* fixtures; their cs-vs-ww byte identity
rides test-data-byteid, which now also covers the xmod fold row. The
timeout-124 hang distinction devolves to the wwfixture harness timeout.
2026-08-08 14:33:23 +09:00
f45360bbec test: port 696/697/699 resolver carriers to corpus fixtures
696_modtype_leaf_collision.c -> r696_modtype_leaf_pos (run-exit 26),
  r696_modtype_leaf_neg (staged error; w6c 'no field', w6c_ww
  asserttyped: dot — the old no-wwstage-checkfile comment is stale)
697_samemod_prefer.c -> r697_samemod_prefer (compile)
699_use_promote_alias.c -> r699_usepromote_{type,fn,def,var}
  (run-exit 42 each)

Single-file multi-package form folds the modcollision/samemodprefer/
usepromote data trees into the fixtures; the trees retire with their
carriers. The dir-tree .wwi transport of colliding type decls is owned
by test/byteid/wwi_test.ww. Coverage upgrades: 697 and the 699 rows
gain the wwstage leg the carriers gated or skipped, and all positive
rows enter the blanket test-data-byteid net.
2026-08-08 14:33:23 +09:00
08cae16a0a docs: @test shape diagnostics landed 2026-08-08 14:20:34 +09:00
5ba410ff60 wcc: reject exported/bodyless/duplicate @test shapes
Both frontends, byte-stable fragments; -T-mode checks, so the rows
live in test/package (the fixture compile cell cannot reach -T).
2026-08-08 14:19:50 +09:00
ff7bf08d81 test: port the M3 .wwi-consumer keystone to ww; retire 989_m3sep
m3sep_test.ww drives the raw w6c/w6a/w6l toolchains (+_ww twins) over
hand-composed //ww:module units splicing produced .wwi bytes: the
bodies==.wwi keystone on both stages per package (mid/root/smid) with
determinism, rule-10 and the value-global DATA guard; the end-to-end
i32 chain (exit 59) with final-exe byte-id; and the #49 str-label /
#53 export-leaf link legs (exits 160/140) with their .s needle
proofs. Each @test re-produces its .wwi cold instead of sharing the
carrier's single scratch dir (same claims, sharper isolation).
2026-08-08 14:13:50 +09:00
92d5f1cb56 test: port the ww-test sep observer to ww; retire 989_septest
septest_test.ww keeps all five rows (pass/fail run-exits, the
userman + badsig @test rejects, the collide_run user-fn-run coexist)
plus the full-sepwork .s/.wwi byte-id sweep and the -T synth
TEXT-main / CALL-test.run presence needles, both driver stages. The
pass/fail run-exit rows overlap package_test ownership but stay:
retiring them would drop audit-listed assertions from this gate. The
attest_* data fixtures remain in test/wcc/data (also consumed by the
911_attest_* carriers).
2026-08-08 14:13:50 +09:00
cd408195fa test: port the sep scratch-contract observer to ww; retire 989_sepscratch
sepscratch_test.ww pins the #59 build_one_sep scratch ownership on
both driver stages: build -o keeps <stem>.sepwork, `run` leaves no
/tmp/ww_run_<pid> root, and a foreign pre-existing .sepwork is
refused with exit exactly 1, sentinel intact. The C fork/execl pid
capture becomes `sh -c 'echo $$ ...; exec <drv> run ...'` -- exec
keeps the shell's pid and passes the full driver path as argv[0].
2026-08-08 14:13:50 +09:00
ad189c2ee2 test: port the sep archive/link observers to ww; retire 989_{separchive,sepcycle_dup}
seplink_test.ww carries the .a substrate legs (root-as-.o layout, .a
byte-id + 3x determinism, the #31 masked-dup PASS-3 reject with its
non-vacuity flip), the loud dependency-cycle reject with byte-equal
cs/ww stderr, and the w6l/w6l_ww bare-main duplicate-symbol reject
(achievable substring parity per the filed message divergence).
2026-08-08 14:13:50 +09:00
7c84c52db4 test: port the sep import/namespace observers to ww; retire 989_{coloimport,depmain,declns,slttypepref}
sepimport_test.ww re-hosts the #98 colo srcd-shadow `ww test` gate,
the #99 imported-dep bare-main mangle count, the #23/#30 modfn
coexist byte-id (incl. the cross-layout vbu order pin), and the
#58/#50 scopelookuptype mod-preference rows over the checked-in and
synthesized module trees. slttypepref's ww_ww-absent skip gate is
dropped: the Make target declares both drivers (mangle_test
precedent).
2026-08-08 14:13:50 +09:00
cd49966539 test: port the sep-layout observers to ww; retire 989_{sepbuild,seproot_export,sepstructdef,wwispread}
Birth test/sep/ (single-file ww observers on test/testenv, run by the
new SEP_WW_TARGETS pattern rule under test-compiler) with
sepbuild_test.ww: the build_one_sep real-chain gate incl. the
bodies==.wwi keystone recompile, the #69 root-without--I contract, the
#70 aggregate-def .wwi prototypes, and the #95 spread-marker
round-trip. Every carrier assertion has a successor row; the C
cleanup-accounting ledgers collapse into testenv.clean.
2026-08-08 14:13:50 +09:00
d127c95630 make: restore the dropped ffivariadic callee-archive rule 2026-08-08 14:12:58 +09:00
df453100d0 test: roster appends struct call rvalues; cursor idiom retired (#34) 2026-08-08 14:12:16 +09:00
50d70e74e4 w6c: append() accepts struct CALL rvalue elements (#34)
Evaluate the call pre-grow into a per-site scratch, receiving by the
N_LET matrix (sret / float / odd-tail / GP), then grow, slot, sized
ladder. Both stages, byte-identical. The two reject pins graduate to
16B GP accept rows; three new fixtures cover 24B GP, 3B/4B tails,
16B float, and 40B sret.
2026-08-08 14:10:55 +09:00
956246b3f0 test: migrate 700_e2e rows to corpus fixtures; retire the carrier
136 rows migrated, 0 already owned, 3 wwstage-failing rows held out.
2026-08-08 14:10:46 +09:00
ddb44405ea docs: coordinator concurrency + tree walk are landed driver work 2026-08-08 13:53:15 +09:00
7ad837ff9e lib: uncollide strconv test helper for package composition 2026-08-08 13:52:34 +09:00
d19845abd7 lib: canonicalize syntax tests to package syntax_test 2026-08-08 13:52:09 +09:00
dc93bcee76 test: retire owned observers 989_sepdotpath + 989_syntaxexport 2026-08-08 13:48:18 +09:00
51f8c615d8 lib: canonicalize regex whitebox test name 2026-08-08 13:48:18 +09:00
3ad10bcef1 test: enroll lib/regex in test-library; retire 989_regex_run 2026-08-08 13:47:55 +09:00
74c9243ca3 test: retire 911_attest_record; record-continue owned by test/package 2026-08-08 13:47:16 +09:00
15137054e2 wwtest: bounded package concurrency via exec start/poll 2026-08-08 13:43:55 +09:00
0f0fd36563 ww: recursive DIR/... package discovery for ww test 2026-08-08 13:35:34 +09:00
81e7f95548 test: port the asm-pattern observers to ww; byteid carrier partition empty
Four ww tests carry the last eight native byteid carriers' assertions:
asmwindow (753 convwrap beta/main/alpha order + window polarity, 754
slice stride + negative scale scan, 755 amp-dot-idx four rows, 758
first-CALL-line extraction + tab-framed disp literals, direct
w6c/w6c_ww never ww build), freenoop (930 byte-id strengthened to
per-stream compare + negative 'free' grep), structabi (946 param/ret
MOVSD windows with polarity tables and SEND/RECV agreement), mangle
(989_m1mangle needles + concat byte-id, glob order strengthened to
byte-lexicographic). Dead want/stage_mask row fields documented, not
invented into runtime legs; the w6c_ww-absent skip gates drop because
the Make target declares the tools.

BYTEID_WRAPPER_SOURCES, its bins, and test-native-byteid are deleted —
the native byte/artifact partition is EMPTY (11 -> 0 this session);
docs counts move to 123 carriers.
2026-08-08 04:41:42 +09:00
fa4b9a134b lib: migrate every test file to the canonical *_test.ww name
25 renames (git mv, content untouched). _test.ww is what the package
coordinator's test detection and the sep loader's canonical exclusion
key on; the old *test.ww spellings survived only through the
line-leading-@test compatibility scan. Consumers updated in place:
LIBRARY_TESTS, the libbyteid roster, the 901/974/975/976 carriers that
copy or invoke these files, and the check.c/check.ww + path/ftos
comments that cite them. Closes the open-driver-work migration bullet.
2026-08-08 04:29:31 +09:00
634f7a2b3f test: port the .wwi observers to ww; retire 989_m2wwi + 989_wwileaf
test/byteid/wwi_test.ww carries every assertion of both carriers: the
M2 producer gate (ascii/strings/getopt driver-combined positives with
byte-id + wwdump -a re-parse, the synth decl-kind/type-node sweep with
the #47 @symbol round-trip, the #48 types export-def gate, and the
negative private-nominal leak with both-stage identical reject
diagnostics), plus the #11 wwileaf decl-less-leaf rows (package-line
leaf, cross-stage .wwi byte-id, importer resolution + .s byte-id).
Byteid carriers 10 -> 8; docs counts move; the byteid ww target gains
the wwdump prereq its re-parse legs invoke.
2026-08-08 04:25:34 +09:00
cf80c603a8 test: port 989_lib_byteid to ww; birth test/testenv + test/byteid
test/testenv (package testenv) is the shared plumbing for ww-native
test drivers — subprocess launch with captured output, file IO, string
search, byte-sorted directory listing, scratch ownership — lifted from
the proven package_test.ww idiom; a utility, not a framework.

test/byteid/libbyteid_test.ww carries every assertion of the retired C
carrier: the 44-entry roster (fixtures + sentinel-guarded import probes
+ the zero-dep root-only build), both-stage sep builds with the
resolved-unit proof, per-package .s concat compare with the empty-concat
guard, the ID/DIVERGE/WWREJECT pin discipline, and the lib/ corpus
completeness scan (negative-verified against a planted un-enrolled
module). Concat order strengthened from shell-glob to explicit
byte-lexicographic. The roster fills by cursor-driven field writes
because append() rejects struct-call-result sources (#34).

Byteid carriers 11 -> 10; docs counts move; test-byteid runs the ww
test via the wwtest/ pattern with WW_TEST_REPO.
2026-08-08 04:22:04 +09:00