gizmoduck: row 270 (264c, #1775) gate run 1 red placed (mos-1272): compactions-launch.test's host wires row 271's five clear ops, as session-clear.test does; the clear test's successor never started without them; kill lines +5 in mutants.py K; BUILD.md run 1

This commit is contained in:
jason.woltje committed 2026-10-22 19:09:45 -05:00
1 parent 0f5e5d62d6
commit 5f697db995
3 files changed
+37 -5

No files matched your search

+27
View File
@@ -566,3 +566,30 @@ A shell-phase timeout goes to Mos unplaced. A timeout with no failed test is a h
2. bus, seat and cli suites whole.
3. The ten scripts/test-*.sh, test-config.sh among them, with skips named.
4. 270 M1-M24, each on its K file whole. Then 271 M1-M14, each on bus and cli session-clear.test whole.
### Run 1: a first-run red, placed (mos-1272)
Run 1 started 00:06:57Z on 0f5e5d62d. In phase 1, the 15 bus files and session-compactions passed.
Then cli compactions-launch.test.mjs, new in this row and on its first run, went RED: 4 of 5 pass. The
failure was in the clear test, "REQ-THREAD-2 T3 T4 a clear leaves the retired session's count...", at
:319 (now :324):
`[done?.state, done?.start]` was `[undefined, undefined]`, not `["retired", "started"]`, after the
30 s settle (31433 ms).
The cause is in the test, not the product. The test's host `ops` table had no entries for row 271's
five clear ops: sessionClears, sessionClearExited, sessionClearUncertain, sessionClearRetire and
sessionClearStart. The launcher's clear calls through host.op were refused as invalid-host-request,
so the successor never started. cli session-clear.test.mjs:96-100 wires the same five, and its clear
tests passed in this run (5 of 5).
The placement adds those five lines, copied from session-clear.test.mjs, after landRelease. No assertion
changed, and no product file changed. The file alone then passed 5 of 5
(/mnt/storage/scratch/gizmo-271-out/place-compactions-launch.log). The five lines move 270's
compactions-launch kill lines by +5 in queue-270/mutants.py K: :188, :203, :254 and :290. Round 2
and round 3 above cite the old lines.
Run 1 stopped at 00:07:59Z (the log's last write), after phase 1's cli session-clear.test, so that the gate runs on one
tree. No node process was left, and the tree was clean. Its log is
/mnt/storage/scratch/gizmo-271-out/r4-run1/. This is the row's first red. Run 2 is the whole gate
again on the commit that adds the placement. That commit changes the 270 manifest (compactions-launch.test.mjs,
mutants.py and this file), so Sage and Duckworth see it before landing.
+5 -5
View File
@@ -81,17 +81,17 @@ K = {
"M11": (BT, "a legacy session is asked for with legacy true", 76, "asked with legacy false"),
"M12": (BT, "without a reader the count is unknown, never 0; a reader that throws is store-unreadable", 81,
"{count 0, known true} for no reader"),
"M13": (CT, "a run collects compactions at its start and its end, and the count holds across a resume and a host restart", 183,
"M13": (CT, "a run collects compactions at its start and its end, and the count holds across a resume and a host restart", 188,
"no start collection: run 1 logs only [D,2,true,null]; settle returns after 5 s with one event"),
"M14": (CT, "a run collects compactions at its start and its end, and the count holds across a resume and a host restart", 183,
"M14": (CT, "a run collects compactions at its start and its end, and the count holds across a resume and a host restart", 188,
"no end collection: run 1 logs only [D,1,true,null]"),
"M15": (CT, "a run collects compactions at its start and its end, and the count holds across a resume and a host restart", 198,
"M15": (CT, "a run collects compactions at its start and its end, and the count holds across a resume and a host restart", 203,
"session.list's compactions is null: {at: 'undefined'} and no count; the clear test's :323 and the legacy :343 fail the same way"),
"M16": (SB, "a stream past the default budget is not-collected with a lower bound, and a later collection catches up", 50,
"the whole 66 MiB is read: {count 1, known true, reason null}"),
"M17": (SB, "the budget is the setting's whole number of bytes from 1 MiB to 1 GiB, and the default for anything else", 39,
"readBudget(null) is the default, but readBudget('8388608') is the string"),
"M18": (CT, "the read budget is the system config's compactionReadBytes, and a bad value takes the default", 249,
"M18": (CT, "the read budget is the system config's compactionReadBytes, and a bad value takes the default", 254,
"the 1 MiB setting is ignored, the 2 MiB hole is read whole: [D,1,true,null] twice"),
"M19": (SB, "a line split across reads counts once", 81,
"c1's two halves parse alone and fail: {count null, known false, reason store-incomplete}"),
@@ -103,7 +103,7 @@ K = {
"all four streams are opened: {count 4, known true, reason null}; the default-cap test's :141 fails the same way (1025 cursors)"),
"M23": (SB, "the stream cap is the setting's whole number from 32 to 65536, and the default for anything else", 118,
"readStreams(null) is the default, but readStreams('2048') is the string"),
"M24": (CT, "the stream cap is the system config's compactionStreams, and a bad value takes the default", 285,
"M24": (CT, "the stream cap is the system config's compactionStreams, and a bad value takes the default", 290,
"the cap of 32 is ignored, all 34 streams are opened: [D,1,true,null] twice"),
}
cmd = sys.argv[1]
@@ -101,6 +101,11 @@ async function start(t, { f, adapter }) {
landHeld: (m) => runtime.landHeld(m.record),
landHolders: (m) => runtime.landHolders(m.business),
landRelease: (m) => runtime.landRelease(m.record),
sessionClears: (m) => runtime.sessionClears(m.business),
sessionClearExited: (m) => runtime.sessionClearExited(m.record),
sessionClearUncertain: (m) => runtime.sessionClearUncertain(m.record),
sessionClearRetire: (m) => runtime.sessionClearRetire(m.record),
sessionClearStart: (m) => runtime.sessionClearStart(m.record),
};
const refusing = (what, fn) => async (m) => {
try {