Compare commits

...
274 Commits
Author SHA1 Message Date
jason.woltje 7defb58e97 sessions: Sage 10-23 rows 291 and 306 landings, row 308 launch 2026-10-23 11:37:34 -05:00
jason.woltje 9c8877bdf3 plans: DEFERRED row 306 N1 (revoke Set lost on broker restart) and N2 (pending limit stop answers not-holder first), landed 2d0318a44 (mos-1463) 2026-10-23 11:35:21 -05:00
jason.woltje 2d0318a44a morgana: row 306 build (#1813): #accessRevoked from #revokeLost, #agent answers thread-revoked until endLaunch, runner stops on thread-revoked, READMEs, access-revoke.test 7 7 (mos-1463) 2026-10-23 11:33:17 -05:00
jason.woltje bd3fa2a484 morgana: row 306 red-first tests (#1813): bus revoke-window T1/T2, cli revoke-window T3 forcing test; no product code 2026-10-23 11:33:17 -05:00
jason.woltje ab575ee553 morgana: row 306 design r2 (dewey-0918 C1-C3, sage-3483/mos-1463): T3 asserts no thread-revoked event for A, T2 limit half makes a second call, six-suite gate, access-revoke edit bounded to 7 7 2026-10-23 11:33:17 -05:00
jason.woltje 1676ad0de8 morgana: row 306 design r1 (#1813, sage-3478): #accessRevoked set from #revokeLost, #agent answers thread-revoked until endLaunch, runner maps it to stopped; T1-T3, M1-M3, six access-revoke asserts to Mos via Sage 2026-10-23 11:33:17 -05:00
jason.woltje 4874d1e83a gosalyn: PRD 1.16 routes library.write under REQ-LIB-6 (mos-1328, mos-1329, sage-2919, webby-0164 B2). REQ-WAIT-3 gains the routing paragraph with its bounds, creative roles only and within-role, Markdown under supporting folders a human marks, never a story file, the writing agent's live Gitea grant on the library project, one commit per write by its own account with the trailer, notice and revert. REQ-LIB-6 names the action. Status, the header, a 1.16 source line and a 1.16 note. requirements.json changes its version only, with the test pin 2026-10-23 11:15:49 -05:00
jason.woltje e909ef51a2 plans: PRD 1.17 brief (Gitea #1815, Vikunja 570): Gosalyn builds d9 4607e15b8 onto 1.16 after row 291, Webby reviews, four files, Sage gates 2026-10-23 10:44:58 -05:00
jason.woltje 4607e15b83 sage: PRD 1.17 d9 r3 (02f28dec), Mos's J-b check mos-1470: J-b records N20 as confirmed, REQ-LIB-5's version tag cites Q239 for the Connections view (N21), d9 changes names both 2026-10-23 10:41:08 -05:00
jason.woltje 8b42010551 sage: PRD 1.17 d9 round 2 (b17ce386), Webby round 6 B1: REQ-LIB-5, its note, the Risks line and the A6 line take mos-1443 R3's text as written; J-b in the past tense (N19); the import-waits line cited as Mos's R3 default (N20) 2026-10-23 10:36:16 -05:00
jason.woltje 4863e2caf4 sage: PRD 1.17 draft 9 (7dfc52fd), d8 plus Jason's Q41 O2 (Q239, mos-1467): REQ-LIB-5 requires the Console Connections view for converted chapters, note and Risks line follow, J-b records the answer; Webby round 5 N15-N17 2026-10-23 10:25:37 -05:00
jason.woltje 7b25a60633 agents: webui runs set MOSAIC_REQUIRE_EDITOR_BUILD=1 and linked worktrees npm ci packages/webui (Vikunja 597) 2026-10-23 10:01:25 -05:00
jason.woltje e86df37d76 sessions: Sage 272 and 307 landings, 306 design, 252 rebase check 2026-10-23 09:59:29 -05:00
jason.woltje fe4ee8c7b5 queue: revs 3582-3588: row 307 in-review and failed request (gizmoduck 3582-3583), request (sage 3584-3585, comment 31189), round 1 approve record (duckworth 3586), landing note and done at d243f6b25 (sage 3587-3588); queue only 2026-10-23 09:42:05 -05:00
jason.woltje 0621c439e0 plans: DEFERRED gains row 307 N1 (row 270's store-unreadable doesn't stick; #1814 landed d243f6b25) 2026-10-23 09:40:06 -05:00
jason.woltje d243f6b25f gizmoduck: row 307 run logs: capture.mjs makes each fixture's data root before sessionStore (base session.mjs:78 needs it), BUILD.md expected red adds claude-history test B (duckworth-0287), steps 1-6 results on 1f6db1589 and 1f00d4f91 with skips named and M1-M4 killed (sage-3455, sage-3465) 2026-10-23 09:37:50 -05:00
jason.woltje 869670d1b1 gizmoduck: row 307 BUILD.md: commits, old-test edits against mos-1459, new tests and the empty-session correction to test B, expected red on 1f6db1589, run plan with mos-1275 limits, mutants M1-M4 2026-10-23 09:37:50 -05:00
jason.woltje dbbda25373 gizmoduck: row 307 (#1814, Vikunja 598) harness kind gains compactions: pi's stream scan and Claude-history check move to packages/plugins/harness/pi/compactions.mjs, claude-code answers harness-unsupported, core keeps the ledger and checks each answer, readLedger reads the reason only, the launcher passes the loaded module; four old-test edits under mos-1459 2026-10-23 09:37:50 -05:00
jason.woltje a9da046f83 gizmoduck: row 307 (#1814, Vikunja 598) new tests, red first: row 270's ledgers per reason read the same count and the next collection goes through the harness module, core refuses an answer out of contract, pi answers what base scanPi read, claude-code answers harness-unsupported, a module without compactions refuses missing-export; capture.mjs checks the literals against base 1e629c892 2026-10-23 09:37:49 -05:00
jason.woltje 4a71b56abc gizmoduck: row 307 design r1 notes: seat suite whole and compactions-launch T3 run-not-skip in the gate (Duckworth C1, C2), launcher closure comment on bypassing call() (N1), line refs :301 and :302 (N2) (duckworth-0280) 2026-10-23 09:37:49 -05:00
jason.woltje 5208894196 gizmoduck: row 307 (#1814, Vikunja 598) design: harness export compactions({ store, cursors, budget, streams, first }), interfaceVersion stays 1, core keeps the ledger, readLedger reads the reason, ledger compatibility table, four old-test edits for Mos (sage-3440) 2026-10-23 09:37:49 -05:00
jason.woltje 8dc132bec8 queue: revs 3572-3581: row 272 round 3 approve record (scrooge 3572, comment 31177), row 307 claim (gizmoduck 3573), row 272 round 4 moves (huey 3574-3576), request (sage 3577-3578, comment 31183), round 4 approve record (scrooge 3579, comment 31184), landing note and done at d33989230 (sage 3580-3581); queue only 2026-10-23 08:58:25 -05:00
jason.woltje 08b8831bce plans: DEFERRED gains row 272 N1 (user session verbs) and the row 270 N6 rebound after row 307 (#1777 landed d33989230) 2026-10-23 08:56:47 -05:00
jason.woltje d339892301 row 272: scope unavailable-session waits to the chat area 2026-10-23 08:53:07 -05:00
jason.woltje 0ea3db297b row 272: fix session fixture authority and initial chat render 2026-10-23 08:53:07 -05:00
jason.woltje f859d06d20 row 272: preserve granted-user default chat on denied session catalog 2026-10-23 08:53:07 -05:00
jason.woltje 70651f45d8 row 272: retain session recovery state on invalid selection 2026-10-23 08:53:07 -05:00
jason.woltje 490f45f024 row 272: preserve untested session CLI and Console draft (sage-3145) 2026-10-23 08:53:07 -05:00
jason.woltje 1e629c892d queue: revs 3565-3571: row 272 round 3 moves on 72690cae7 (huey 3565-3567) and request (sage 3569-3570, comment 31174); row 307 added and briefed (#1814, Vikunja 598, mos-1455 item 3; sage 3568, 3571); queue only 2026-10-23 08:08:15 -05:00
jason.woltje 84de3fbca3 plans: row 270 pi compaction reading moves behind the harness kind (#1814, Vikunja 598, mos-1455 item 3, Gizmoduck, reviewer Duckworth); gate template runs all five suites and sets MOSAIC_REQUIRE_EDITOR_BUILD=1 (mos-1455 item 4, mos-1453) 2026-10-23 08:02:15 -05:00
jason.woltje 1e4c1e6e94 queue: revs 3539-3564: rows 300 and 301 round 1 claims and in-review moves (launchpad 3539-3544), round 1 requests (sage 3545-3548), round 2 moves (launchpad 3549-3554), round 2 requests (sage 3555-3558), Duckworth approve records 300 (3559) and 301 (3560), landing notes and done at 07315e651 and 5b846b048 (sage 3561-3564); queue only 2026-10-23 07:33:26 -05:00
jason.woltje 5b846b048a launchpad: row 301 (#1808): library-cli and thread-claims bus.mjs fixtures export throwing busBusiness and userCaller stubs (mos-1451 under mos-1272); BUILD.md repaired with run 1 and the ruling; manifest seven paths; unrun 2026-10-23 07:26:44 -05:00
jason.woltje 59f0e44f47 launchpad: row 301 (#1808): channel-proof re-pins webui bus.mjs at 39fcb27c for the user transport fold, humanCall unchanged (mos-1449 under mos-1272); unrun 2026-10-23 07:26:44 -05:00
jason.woltje bb031ec840 launchpad: row 301 (#1808): R6-N4, user-bus.mjs folded into bus.mjs beside humanCall, unchanged; channel-proof re-pin held for Mos's go; unrun 2026-10-23 07:26:44 -05:00
jason.woltje 07315e6514 launchpad: row 300 (#1807): run 1 gate results in BUILD.md (1/0, webui 375/0, M12 killed) and Duckworth's N1; packet only 2026-10-23 07:26:44 -05:00
jason.woltje fb04cbc431 launchpad: row 300 (#1807): run 1 first-run red placed (mos-1272), the test's call helper resolves headers again as granted-user.test does; manifest re-hashed 2026-10-23 07:26:44 -05:00
jason.woltje 9d929911c8 launchpad: row 300 (#1807): R6-N1, an HTTP-level test of the user-session option swap with the userRoute gate stubbed open by a load hook, and mutant M12; unrun 2026-10-23 07:26:44 -05:00
jason.woltje bcf3c1dacf queue: revs 3531-3538: row 303 landing note and done at e551cd846 (sage 3531/3532); row 304 approve record (dewey 3533), row 305 approve record (filbert 3534); row 304 landing note and done at a863015a5 (sage 3535/3536); row 305 landing note and done at d52d9f1f2 (sage 3537/3538); queue only 2026-10-23 06:54:46 -05:00
jason.woltje d52d9f1f2f row 305 (#1812): gate run 1 evidence (sage-3374): both suites green, mutants a and b killed in both, c a known survivor 2026-10-23 06:49:49 -05:00
jason.woltje 830f3d8bff row 305 (#1812): BUILD.md notes the SIGKILL leak and its cleanup (Filbert N1) 2026-10-23 06:49:49 -05:00
jason.woltje e48d602165 row 305 (#1812): BUILD.md with the trace, change, gate and the three mos-1445 mutants 2026-10-23 06:49:49 -05:00
jason.woltje cabcb81d49 row 305 (#1812): each suite's network check also requires the network present under the run's project before the remove (mos-1445) 2026-10-23 06:49:49 -05:00
jason.woltje 353d65f577 row 305 (#1812, Vikunja 591) draft: per-run COMPOSE_PROJECT_NAME, exit trap removes that one network, one absent-network check per suite; for Mos through Sage before the build (mos-1272) 2026-10-23 06:49:49 -05:00
jason.woltje 2c289f6f0d SESSIONS: filbert row 305 round 1 approve (c31127, rev 3534) 2026-10-23 06:47:32 -05:00
Rocko a863015a51 test: match Claude memory slug normalization under mos-1442 2026-10-23 06:46:02 -05:00
jason.woltje e551cd8466 launchpad: row 303 (#1810): R9 asserts the rehearsal directory is set before the placeholders check joins it, so a null shows the rehearsal output (mos-1422, Vikunja 589) 2026-10-23 06:41:07 -05:00
jason.woltje c13c337e16 queue: revs 3521-3530: rows 304 and 305 claimed (rocko 3521, gizmoduck 3522); row 305 in-review on 7e8218a2e (gizmoduck 3523), request failed without a token (gizmoduck 3524), sage's request posted c31126 (3525/3526); row 304 in-review on 5e8354ebb (rocko 3527), request failed without a token (rocko 3528), sage's request posted c31128 (3529/3530); queue only 2026-10-23 06:27:36 -05:00
jason.woltje 435a7458d3 sage: PRD 1.17 draft 8 (343cff6f), d7 plus Mos's d8 fix list mos-1443 (R1-R14, M1-M45, J-i to J-l) and the mos-1446 choices (M10 default, M15 quotes Q235 in full, M40 both sentences); M15 and M16 cite b99ca86b9. Webby APPROVE round 5 webby-0210, no B items; N15-N17 carry to d9 2026-10-23 06:21:31 -05:00
jason.woltje b99ca86b9c docs: align editor conversion boundary and host restore with PRD d8 2026-10-23 06:08:20 -05:00
jason.woltje 0e057e05eb queue: revs 3511-3520: rows 304, 305 and 306 added and briefed (sage 3511-3516); row 272 round 2 in-review on b44332a93 (huey 3517), request failed without a token (huey 3518), sage's request posted c31120 (3519/3520); queue only (sage) 2026-10-23 06:02:42 -05:00
jason.woltje c16e943b90 briefs: mos-1442 approvals for the 590 and 591 rows (#1811, #1812), the 295 N1 revoke-window row (#1813); DEFERRED 295 N1 (sage) 2026-10-23 05:51:16 -05:00
jason.woltje ac1644e1ce BUILD-LOG and SESSIONS: rows 302, 295 and 219 landings, the Docker pool diagnostic; DEFERRED 219 N1 (U6); brief for the Vikunja 590 and 591 rows (sage) 2026-10-23 05:48:40 -05:00
jason.woltje 90633c8648 queue: revs 3495-3509: row 295 round 2 in-progress and in-review (morgana 3495-3497), sage's request posted (3498/3499), dewey approve record (3500), row 295 landing note and done at 2efd127ce (sage 3501/3502); row 219 in-review on b899095e4 (rocko 3503/3504, request failed without a token), sage's request posted c31107 (3505/3506), dewey approve record c31108 (3507), row 219 landing note and done at 5fdfd7275 (sage 3508/3509); queue only 2026-10-23 05:45:46 -05:00
Rocko 5fdfd7275c docs: preserve row 219 full gate on the post-295 merge 2026-10-23 05:37:44 -05:00
Rocko a236dbc30a docs: preserve row 219 mos-1429 short-run evidence 2026-10-23 05:37:44 -05:00
Rocko 312260db7b test: prepare row 219 admission pins under mos-1429 2026-10-23 05:37:43 -05:00
Rocko d7b4967ed0 docs: record row 219 rebase after granted-user Console 2026-10-23 05:37:43 -05:00
Rocko 90a3c03cfb test: assert creative history in its native session store
Apply only the paths and legacy absence pins approved by mos-1420 and sage-3243. Preserve exact expected history and the stopped run evidence. No product change or rerun.
2026-10-23 05:37:43 -05:00
Rocko 282f5b4e45 test: pin the compaction audit before the persona refusal
Apply the exact two-row fixture assertion approved by mos-1418 and sage-3232. Preserve earlier red logs; no product change and no rerun before review.
2026-10-23 05:37:43 -05:00
Rocko 781fd509c4 test: give row 219 persona fixture its explicit session
Apply mos-1408 and sage-3178 without creating the directory being asserted. Preserve the first red evidence and select TAP explicitly for the next approved run.
2026-10-23 05:37:43 -05:00
Rocko 52a73e83bd docs: rebase row 219 gate packet and record run bounds 2026-10-23 05:37:43 -05:00
Rocko 049214486b wip: publish unverified row 219 inspection candidate
Preserve the draft for inspection under sage-3113. Tests and mutants have not run. Old-test adaptations approved in mos-1316 and mos-1317 are recorded in OLD-TEST-CHANGES.md.
2026-10-23 05:37:43 -05:00
jason.woltje 2efd127ce6 morgana: row 295 r2 gate results on d68b4300d (sage-3338, sage-3340): red first, green, M8 count, whole files, suites, script limits and skips, M1-M16 killed 2026-10-23 05:06:14 -05:00
jason.woltje fdbe95d88d morgana: row 295 r2 narrow alice grant (Dewey F1, sage-3333): aliceAccess(ref) names only the test's project, set after project.create; asserts and bindLaunch lines byte-identical; BUILD.md preservation record updated 2026-10-23 05:06:14 -05:00
jason.woltje cb96220b53 morgana: row 295 r2 old-test setup (mos-1436 option a): message-filter's :117 and governance-pin tests get an alice collaborator access document, spec-fixtures fixture() takes an optional access (null default); asserts and bindLaunch lines byte-identical; BUILD.md gate record, assertion preservation, N1 revoke window 2026-10-23 05:06:14 -05:00
jason.woltje 6408dcec4f morgana: row 295 r2 first-run reds placed (mos-1272): claim rows spread off the store's null prototype in access-revoke and thread-revoke, demo switches the pi harness on for startBroker, Alice binds at her first call in thread-revoke 2026-10-23 05:06:14 -05:00
jason.woltje 0c8f12ea20 morgana: row 295 r2 rebase on 80793d824 (sage-3256): accessFor comment is stamp-cached (dewey-0871 N3); BUILD.md rebase note 2026-10-23 05:06:14 -05:00
jason.woltje 24f8f5d739 morgana: row 295 r2: wrap the launcher's revoked comment (dewey-0874 nit) 2026-10-23 05:06:14 -05:00
jason.woltje 31da9dcb85 morgana: row 295 r2 (dewey-0871): threadsState ends an expired grant's held claim from the cached read by access-expiry (B1, D7, M16, M11 claim row); access.reload scope as D8 (N1); bus README access.reload, revoked and revocation (N2); tests unrun 2026-10-23 05:06:14 -05:00
jason.woltje ff54a15563 morgana: row 295 FED R4 revocation (#1801): 30 s access timer, access.reload, one-transaction claim end on a loss, threadsState revoked, launcher SIGTERM and no start, CLI reload after grant/revoke; tests unrun (no CLEAR yet) 2026-10-23 05:06:14 -05:00
jason.woltje 249d42dfc5 morgana: row 295 plan (FED R4 revocation, #1801): sweep on timer, access.reload and user requests; threadsState revoked; launcher skip and SIGTERM; bindLaunch and role.claim refuse thread-revoked 2026-10-23 05:06:14 -05:00
jason.woltje 07802dc57a queue: revs 3488-3494: row 302 (#1809) in-review on 2a8281a6f (gizmoduck 3488), gizmoduck's request failed without a token (3489), sage's request posted c31091 (3490/3491), dewey approve record c31092 (3492); row 302 landing note and done move at 3ed9fd754 (sage 3493/3494); queue only 2026-10-23 03:53:06 -05:00
jason.woltje 3ed9fd754a gizmoduck: row 302 (#1809) gate results: run 1 stopped on launcher-released.test:89 (d6, mos-1430); run 2 on merge 783602e06 (5b63ea323 onto 1ac655005) red as ruled, suites green, M1-M5 M7-M9 killed; RESULTS.md and logs, packet only 2026-10-23 03:47:38 -05:00
jason.woltje c9fcf9b5af gizmoduck: row 302 (#1809) d6: launcher-released.test:89 counts only a-run's delivery rows and pins the one routed row with holder_run null; #route writes that row for every message (gizmoduck-0388, sage-3294, sage-3296, Mos ruling pending sage-3293); local, not pushed 2026-10-23 03:47:38 -05:00
jason.woltje 2b6111a176 row 302 (#1809, Vikunja 588): a run threadIdle or landRelease released answers launcher-released on every call needing the claim until it ends, role.claim refuses it (Dewey D1), and the runner exits stopped without releasing again 2026-10-23 03:47:38 -05:00
jason.woltje 4a827edb0c row 302 (#1809, Vikunja 588): red first, the final forcing tests and the four pins Mos ruled (mos-1414/1415/1416), over unfixed product files; BUILD.md d3-d5 and ASSERTION-PRESERVATION 2026-10-23 03:47:38 -05:00
jason.woltje 908f92b039 gizmoduck: row 302 design d2: threads.test pins are :392/:394/:395 (sage-3204), land-relaunch grep finds land.test:464 as a third old pin under Q1 2026-10-23 03:47:38 -05:00
jason.woltje 62470a3ec3 gizmoduck: row 302 BUILD.md folds Dewey's d1 approval (dewey-0875): D1 role.claim refuses a released run, landRelease reaches runner.test:742-772 so Q1 moves :771-772, Q2-Q4 and N1-N4 settled 2026-10-23 03:47:38 -05:00
jason.woltje fee08d7ab9 gizmoduck: row 302 (#1809, Vikunja 588) idle-stop race design round d1 for Dewey: idle-released code from the broker's own record of threadIdle's release, runner maps it to stopped/0, forcing cli test holds the window open until a call lands, threads.test:393 is the one changed pin (sage-3200, mos-1411) 2026-10-23 03:47:38 -05:00
jason.woltje 1ac655005e BUILD-LOG and SESSIONS: row 299 gate and landing, row 303 review, 219 and 295 rebases (sage) 2026-10-23 03:10:29 -05:00
jason.woltje 8a35ffadb4 queue: revs 3474-3487: row 303 (#1810) in-progress and in-review on 3c3be5d3 (launchpad 3474/3475), launchpad's request failed without a token (3476), sage's request posted c31082 (3477/3478), duckworth approve record c31079 (3480); row 299 (#1806) claim (gander 3479), in-review on 277ace0b (gander 3481), gander's request failed without a token (3482), sage's request posted c31083 (3483/3484), filbert approve record c31084 (3485); row 299 landing note and done move at ffb2fedfb (sage 3486/3487); queue only 2026-10-23 03:07:32 -05:00
jason.woltje ffb2fedfbc docs(row299): record fresh timing gate and six assertion kills 2026-10-23 03:03:09 -05:00
jason.woltje 11d1e2e0ce docs(row299): record clean integration on 80793d824 2026-10-23 03:03:09 -05:00
jason.woltje ed81f6eba0 docs(row299): record mos-1409 preservation and static candidate 2026-10-23 03:03:09 -05:00
jason.woltje e14164ab49 test(case): observe P10 wait directly under mos-1409 2026-10-23 03:03:09 -05:00
jason.woltje 10113b04f5 docs(row299): propose direct P10 wait timing for mos-1272 review 2026-10-23 03:03:09 -05:00
jason.woltje c1f910b4cc SESSIONS: filbert row 299 manifest round 1 approve (c31084, rev 3485) 2026-10-23 03:00:12 -05:00
jason.woltje 15e688cc01 BUILD-LOG and SESSIONS: row 294 rounds 3-4 and landing, R9 transient and row 303, row 219 edits 2-3 (sage) 2026-10-23 02:11:43 -05:00
jason.woltje 80793d824e queue: revs 3464-3473: row 294 (#1800) round 4 in-progress and in-review on a1ff5d67 (launchpad 3464/3465), launchpad's request without a token failed (3466), sage's request posted c31055 (3467/3468), duckworth approve record c31053 (3469); row 294 landing note and done move at d3059c2c3 (sage 3470/3471); row 303 (R9 guard, #1810, Vikunja 589, mos-1422) added and briefed (sage 3472/3473); queue only 2026-10-23 02:10:05 -05:00
jason.woltje ad6ca79304 docs: brief for the R9 guard row (Vikunja 589, #1810, mos-1422); docs only 2026-10-23 02:07:02 -05:00
jason.woltje d3059c2c3d launchpad: row 294 run 4 (#1800): whole gate green on 8616b9a4f (webui 365, cli 909, bus 873, 10 scripts), M1-M11 killed; M1 record names G4's first failure and G5 green (Duckworth C1); receipts in run4/ 2026-10-23 01:37:03 -05:00
jason.woltje 6f07930679 launchpad: row 294 round 4 (#1800): rehearsal fixture copies carry cli access.mjs and transport.mjs, B1-B3 pin the fixture's tracker warning in full (Mos mos-1419, sage-3238); manifest round 4 (19 paths), run 3 receipts; unrun 2026-10-23 01:37:03 -05:00
jason.woltje b01e1c9ee1 launchpad: row 294 round 3 (#1800): G5's baseline is coalesce(max(seq), 0), since max(seq) is NULL on the fixture's empty events table and run 2 read 0 of 22 refusal events (sage-3212, Mos ruling pending sage-3211); manifest round 3, run 2 receipts; unrun 2026-10-23 01:37:03 -05:00
jason.woltje 8716e72f26 launchpad: row 294 round 2 (#1800): browser.test pin gains /federation.js at index 2 (Mos mos-1412 (a)), G5 pins one action.refused {code: access-refused} per refused verb and every other table unchanged (sage-3194); manifest round 2 (18 paths), ASSERTION-PRESERVATION.json, run 1 receipts; unrun 2026-10-23 01:37:03 -05:00
jason.woltje 9beeeb9955 launchpad: row 294 run limits from recorded durations, 3x or more (sage-3187, mos-1275) 2026-10-23 01:37:03 -05:00
jason.woltje 9e43fefe60 launchpad: row 294 BUILD.md M1 expectation corrected (Duckworth C1), review recorded with N1-N4 dispositions 2026-10-23 01:37:03 -05:00
jason.woltje d0460ed475 launchpad: row 294 round 1 manifest (17 paths from 9450774cb) and notes with the owner-transport exception 2026-10-23 01:37:03 -05:00
jason.woltje 26f93fa746 launchpad: row 294 sage-3157, owner-transport exception written out, userOptionsFor, G9 pins no user value, M10/M11 (unrun, #1800) 2026-10-23 01:37:03 -05:00
jason.woltje c9e67e7d2d launchpad: row 294 BUILD.md M4 kill names the moved test 2026-10-23 01:37:03 -05:00
jason.woltje 52d2a16109 launchpad: row 294 rulings sage-3153 (boot refusal line, owner transport seam G9, C7 follow-up, access.test.mjs unchanged; unrun, #1800) 2026-10-23 01:37:03 -05:00
jason.woltje afef0ea887 launchpad: row 294 FED R6 build and plan, granted-user sign-in (unrun, #1800)
Console granted-user sign-in, a user-cli transport per session, the
per-request grant re-read, the owner-only gate and user page, the notice,
the hub label and peer links, accessContextFor peers, and the bus boot
access wiring (sage-3142). Tests G1-G8 and B1-B3 are written and not yet
run; runs wait for Sage's CLEAR. Choices C1-C9 in
agents/launchpad/work/queue-294/BUILD.md.
2026-10-23 01:37:03 -05:00
jason.woltje 09d0d6fafa queue: revs 3457-3463: row 294 (#1800) round 3 in-progress and in-review on cb1648f3 (launchpad 3457/3458), launchpad's request without a token failed (3459), sage's request posted c31049 (3460/3461), duckworth approve record c31045 (3462); row 219 restart note on b97a3ff97 (rocko 3463); queue only 2026-10-23 00:53:42 -05:00
jason.woltje ffbc0d7a6d BUILD-LOG and SESSIONS: row 292 landing, idle-stop race row 302 and its rulings, rows 300/301, row 294 rounds 2-3 (sage) 2026-10-23 00:47:17 -05:00
jason.woltje 756284e8e9 queue: revs 3448-3456: row 294 (#1800) round 2 in-progress and in-review on 7ec7b1ea (launchpad 3448/3449), launchpad's request without a token failed (3450), sage's request without a token failed (3451/3452), sage's request posted c31042 (3453/3454), duckworth approve record c31029 (3455); row 302 (#1809) in-progress (gizmoduck 3456); queue only 2026-10-23 00:40:17 -05:00
jason.woltje 0e30a85fac queue: revs 3444-3447: row 302 (idle-stop race, #1809, Vikunja 588, mos-1411) added and briefed; row 292 (#1797) landing note and done move at 6aab979e6 (sage); queue only 2026-10-23 00:22:51 -05:00
jason.woltje 6aab979e6c row 292 (#1797) gate results on 0d0021454: r2 old-test red compactions-launch:229 (exit-22 race, Vikunja 588), mos-1411 diagnostic 0/10 with one not-holder exit 22 seen in the clear test, r3 cli rerun 910/910, ten shells green, M1-M9 killed; rebase receipts (sage-3183, sage-3185, sage-3193) 2026-10-23 00:18:02 -05:00
jason.woltje e5ffa76932 row 292 (#1797) packet: targeted mutant kill rules per sage-3152 (pattern, stack lines and text per mutant; anything else is a STOP; a survivor gets one whole-file run), short TMPDIR per stage, run plan after Duckworth's round 2026-10-23 00:18:02 -05:00
jason.woltje bf4ba4280e row 292 (#1797) packet: rebase onto b23783f39 with the 0585b3213 resolution (row 203's console and federation text kept word for word, Gander's text for any other key), range-diff, the three patch-ids, C1/N3, mutants M1-M9 (unrun) and the run plan (sage-3146, sage-3148) 2026-10-23 00:18:02 -05:00
jason.woltje 495c128658 row 292 (#1797) C1 and N3 for duckworth-0229: a pre-270 loader stand-in of its own (C1's loader without the row 270 concat, the list before bce491715) refuses compactionReadBytes and compactionStreams on a full activate and rollback, naming the key; C1's loader reads both; the missing-loader case uses compactionStreams 1024 and checks row 203's console and federation text word for word with no loader 2026-10-23 00:18:02 -05:00
jason.woltje 4b612781b4 docs(release): record static approval and post-compaction review conditions 2026-10-23 00:18:02 -05:00
jason.woltje be43572166 docs(release): record any-key config plan and static review packet 2026-10-23 00:18:02 -05:00
jason.woltje 39bde4fd43 fix(release): validate non-console config keys with target loader 2026-10-23 00:18:01 -05:00
jason.woltje fdedc56e2a docs: idle-stop race brief records the 10-run diagnostic (not-holder seen once, run r846b8d083502); docs only 2026-10-23 00:04:20 -05:00
jason.woltje e3ef1eaf6f docs: brief for the idle-stop race row (Vikunja 588, #1809, mos-1411); docs only 2026-10-23 00:00:21 -05:00
jason.woltje c902a767dc queue: revs 3439-3443: rocko row 219 claim (3439), sage adds rows 300 (R6-N1, #1807) and 301 (R6-N4, #1808) and briefs both; queue only 2026-10-22 23:30:34 -05:00
jason.woltje 86d5ac69bf docs: R6 follow-up briefs for row 294 N1 (#1807) and N4 (#1808); docs only 2026-10-22 23:13:49 -05:00
jason.woltje 4a9c536e86 Row 293 (574) landing e51d11640 and the 3m-3n live window (activation 20261023T034557Z-464010fbe4c6): BUILD-LOG phase line, Darkwing and Sage SESSIONS lines; docs only 2026-10-22 23:01:20 -05:00
jason.woltje 83f1f854de queue: row 293 (574, #1805) landing note and done move (sage); queue only 2026-10-22 23:01:20 -05:00
jason.woltje e51d116402 docs(row293): record green integrated trace and whole suites 2026-10-22 22:55:25 -05:00
jason.woltje 78bbe12233 docs(row293): record integrated run2 and short TMPDIR correction 2026-10-22 22:55:25 -05:00
jason.woltje 92c0ca3db2 docs: preserve row293 first trace run and TMPDIR stop 2026-10-22 22:55:25 -05:00
jason.woltje d0ede15b95 docs(v574): record static approval and trace evidence requirements 2026-10-22 22:55:25 -05:00
jason.woltje 29bb1ccd46 docs(v574): audit fixture comparisons and plan trace proof 2026-10-22 22:55:25 -05:00
jason.woltje 4e22bd49f9 test(git): disable detached fixture maintenance per mos-1369 2026-10-22 22:55:25 -05:00
jason.woltje 464010fbe4 queue: revs 3435-3436. Row 294 (#1800): Duckworth APPROVE c30998 (3435, candidate 0b3f9c9d). Row 272 (#1777): Scrooge CHANGES c31006 (3436, candidate 0c3dc2ed); queue only 2026-10-22 22:39:36 -05:00
jason.woltje e57bfde734 queue: revs 3407-3434. Row 293 (574, #1805): Gander in-review r1 (3407, failed pre-send 3408), Sage request c30981 (3409/3410), Filbert APPROVE c30982 (3411). Row 292 (#1797): assigned gizmoduck (mos-1387), claim 3413, in-review r1 3419 (3420 failed), Sage request c30992 (3425/3426), Duckworth APPROVE c30975 (3433). Row 294 (#1800): Launchpad claim 3418, in-review r1 3422 (3423 failed), Sage request c30993 (3427/3428). Row 295 (#1801): Morgana claim 3414, in-review r1 3416 (3417 failed), Sage request c30991 resolved (3421/3424), Dewey CHANGES c30994 (3431). Row 272 (#1777): Huey claim 3415, in-review r1 3429 (3430 failed), Sage request c30997 resolved (3432/3434); queue only 2026-10-22 22:34:14 -05:00
jason.woltje 319d9f87ea sessions: Filbert row 293 (Vikunja 574) APPROVE c30982 rev 3411, plus re-added S0 re-check and 574 static review lines; docs only 2026-10-22 22:15:06 -05:00
jason.woltje b23783f395 Rows 270+271 landing (7328da8ca), 571 landing, MVP rows 293-299: BUILD-LOG phase line and Sage SESSIONS line; docs only 2026-10-22 21:34:23 -05:00
jason.woltje e18ad27115 docs: define mixed-format chapter ordering for conversion 2026-10-22 21:34:23 -05:00
jason.woltje 12f8c3089c queue: rows 293-299 briefed (revs 3399, 3401-3406, sage) and row 293 claimed by gander (rev 3400, gander-293-start); queue only 2026-10-22 21:34:06 -05:00
jason.woltje 253346e3c3 queue: rows 293-299 added (574 #1805, FED R6 #1800, FED R4 #1801, FED R7 #1802, GitHub grant method #1803, Q228 #1804, 573 #1806; mos-1371/1372), 208 after 294; 270 round 3 request c30929 and Duckworth APPROVE c30930; 270+271 done at 7328da8ca (mos-1351); queue only 2026-10-22 21:19:12 -05:00
jason.woltje 7328da8ca4 gizmoduck: row 270 (264c, #1775) gate results: run 3 red on case1-accept P10 band (Vikunja 573) and run 4 red on the checkout.test fixture race (Vikunja 574), both old tests unchanged in the range; run 5 GREEN on 53406f3e4 under mos-1369 and sage-3106, all phases and 38/38 mutants killed; BUILD.md only 2026-10-22 21:07:51 -05:00
jason.woltje 84002f960a gizmoduck: row 270 (264c, #1775) gate run 2 second red, fixed under mos-1364 and sage-3093: compactions-budget.test F1 (:39 input 8.5 * MiB is a whole number, now MiB + 0.5) and F2 (the 0o000 window in try/finally; the after-hook ran after setup's rm); K M22 :129, M23 :120, M22 and M15 notes; BUILD.md run 2 2026-10-22 21:07:51 -05:00
jason.woltje f89aaf57fe 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 2026-10-22 21:07:51 -05:00
jason.woltje d3a49f301a gizmoduck: rows 270+271 combined gate (C2) record before the first run (sage-3073, sage-3086, mos-1275, mos-1351): blob table, timeout table, GREEN and RED, order; code is ac44d0de9's 2026-10-22 21:07:51 -05:00
jason.woltje 562b05b43c gizmoduck: row 270 (264c, #1775) round 4 for sage-3073 and sage-3078: rows 270 and 271 rebased onto 25c09f19f (row 203 plus the O2 docs); mosaic-config.mjs keeps 203's federation key and both compaction keys; BUILD.md round 4 with the range-diff, the three merged files and C1 after 203; not run 2026-10-22 21:07:51 -05:00
jason.woltje 8c28ee7315 gizmoduck: row 270 (264c, #1775) round 3 for duckworth-0226 B4 (sage-3038): one collection opens at most the system config's compactionStreams stream files in name order (default 1024, 32 to 65536, a bad value takes the default and logs), not-collected past it with no cursor for an unopened stream; the missing-stream check uses a Set; readStreams, cap and launcher tests; mutants M22-M24, M10 anchor moved; docs/TOOLS.md has both keys and C1 (N4); BUILD.md round 3 with stream counts, the 231 KB bound, C1 and N5; not run 2026-10-22 21:07:51 -05:00
jason.woltje bce4917154 gizmoduck: row 270 (264c, #1775) round 2 for duckworth-0223 B1-B3 (sage-3030, sage-3031, mos-1352, sage-3033): pi streams read in 1 MiB chunks under a budget from the system config's compactionReadBytes (default 64 MiB, 1 MiB to 1 GiB, a bad value takes the default and logs), not-collected past it; Claude history from before the ledger is harness-unsupported for good; launcher, runtime reader, clear and legacy tests; mutants M13-M21; BUILD.md round 2 with sizes, schema change, rollback hazard, N1-N3; not run 2026-10-22 21:07:51 -05:00
jason.woltje 01b57f48bb gizmoduck: row 270 (264c, #1775) round 1 for review (sage-3024): mutants.py M1-M12 with anchors at 7d199f033, each matching once, kills read from the tests; run plan with broker.mjs reruns; launcher and runtime wiring named as untested; not run 2026-10-22 21:07:51 -05:00
jason.woltje 54ec0005e0 row 271 (264d, #1776): BUILD.md r3 gate on 9e18a9aaf (sage-3017): cli and bus session-clear.test whole green (5/5, 19/19), cli suite 874/874, M14 killed by the T6 test's first lines() assertion at :365; no first-run red. Doc only. 2026-10-22 21:07:51 -05:00
jason.woltje 61e262b7c0 row 271 (264d, #1776): r3 packet carries mutants.py, M1-M14 with their anchors, as the gate applies them (duckworth-0212 C1). Doc and harness only; no src or test change. 2026-10-22 21:07:51 -05:00
jason.woltje 540b6f16ba row 271 (264d, #1776): r3, T6 per sage-3001. New cli test: a bus unavailable (broker-exited) at the exit proof, then at retirement, holds the clear with no retirement, successor launch or slot handed on, logs once, and resumes when the bus answers. BUILD.md maps the halt case to session-launch.test.mjs:372 and launcher.mjs:824, binds the Q198 hold to row 257 with duckworth-0210's carry, and names M14 (drop clearPass's try/catch) and its kill. No src change. Not run (no CLEAR). 2026-10-22 21:07:51 -05:00
jason.woltje e6a675ee83 row 271 (264d, #1776): BUILD.md gate results on e8af389e6 (sage-2991): 18 touched files, bus/seat/cli suites and every test-*.sh green, M1-M13 killed by assertions in the named tests; the row gate's T6 coverage open to Sage. Doc only. 2026-10-22 21:07:51 -05:00
jason.woltje e77635cebb row 271 (264d, #1776): BUILD.md run limits for the e567f949c gate (mos-1275, sage-2991); mutant lines moved one down past the B1 comment. Doc only. 2026-10-22 21:07:51 -05:00
jason.woltje 3fc8ccef1a row 271 (264d, #1776): duckworth-0201 B1: #ownerRefusal passes 'session.clear' to #granted, so the project and instance sit in their own slots and a live collaborator grant passes the retirement recheck. N4 setup shared; a second N4 test keeps the grant and expects retired plus the successor; M13 restores the defect. 264e carry noted at the N4 tests. Not run (no CLEAR). 2026-10-22 21:07:51 -05:00
jason.woltje 27d3266fff row 271 (264d, #1776): BUILD.md records mos-1336, Mos's approval under mos-1292 of the later3l, rows() and thread-shares migration test changes on the 3m to 3n rebase, with its conditions 2026-10-22 21:07:51 -05:00
jason.woltje 6bd67225b5 row 271 (264d, #1776): BUILD.md states the post-rebase '3m' grep result as measured 2026-10-22 21:07:51 -05:00
jason.woltje 14715d644a row 271 (264d, #1776): r2 on 0cbe2e9b3 (sage-2968): 3m to 3n migration and 3m engine tests from fixtures/schema-3m.sql; BUILD.md records the label change, the old-test changes (later3l, rows() and the thread-shares migration test outside the mos-1315 list, for Mos) and the mutant lines on the rebased tree 2026-10-22 21:07:51 -05:00
jason.woltje f9a9c9b5a0 row 271 (264d, #1776): BUILD.md defines M1-M12 with their expected kills 2026-10-22 21:07:51 -05:00
jason.woltje 34388223d8 row 271 (264d, #1776): launcher uncertain-path test with test-driven ticks and a stopped runner; start() takes stopTimeoutMs 2026-10-22 21:07:51 -05:00
jason.woltje 3adb391b57 row 271 (264d, #1776): N4 failed-clear test on a user's thread with raw first rows; BUILD.md notes the failed path has no verb route yet 2026-10-22 21:07:51 -05:00
jason.woltje 4da907cd5e row 271 (264d, #1776): T4 tests round 1, not run (slot held). Bus session-clear.test.mjs (15), cli session-clear.test.mjs (3, bwrap) with clear-adapter.mjs; BUILD.md maps each T4 item and names what is still open (failed clear, launcher uncertain path, mutants) 2026-10-22 21:07:51 -05:00
jason.woltje aa8fc490f5 row 271 (264d, #1776): clear context build round 1, not run (slot held). Broker: session.clear, session.cancel and session.operation, the fence on send/open/claim, cancel at arrival for routed messages, the drained receive and the end drain, trusted ops sessionClears and sessionClearExited/Uncertain/Retire/Start. Launcher: clearPass before the threads loop (stop, proof, retire, successor start through check()/start()), waiting on a live row 269 survivor. Old tests per mos-1315, rebased on row 206 (sage-2968): label 3m to 3n, future step 3n to 3o, 3m-3n.sql in the engine copies and file lists, ready lines, later3l and the rows() exclusions gain both tables as 206 did for thread_shares (mos-1292, approved in mos-1336), schema.test counts 25 tables and 96 triggers, COUNTED and T45 LISTED gain both tables after thread_shares (mos-1318, mos-1319), TESTER_VERBS pin (mos-1325), fixtures/schema-3m.sql 2026-10-22 21:07:51 -05:00
jason.woltje a9884dc75c row 271 (264d, #1776): schema step 3m to 3n (rebased on row 206's 3l to 3m, sage-2968), session_ops and message_cancels with 7 triggers; successor id pinned as a lowercase version 8 UUID for Huey (gizmoduck-0274) 2026-10-22 21:07:51 -05:00
jason.woltje 25c2c1a560 gizmoduck: row 271 design: duckworth-0171 C1 (start stages keyed on a report counter, work attempt in its own column) and C2 (cancelled in the stage CHECK at attempt 0 and closing the op, claim and cancels untouched by a pre-retire cancel, post-retire successor reading stated, race and held tests); N1 grep at build 2026-10-22 21:07:51 -05:00
jason.woltje 4f827a5e81 gizmoduck: row 271 design: session.cancel and the cancelled stage built in 271 (sage-2828 re-rules Q3 per D7:263-264), pre- and post-retire paths, cancel tests and the fence-release mutant; N2 refuses session-name-too-long at accept 2026-10-22 21:07:51 -05:00
jason.woltje 7dc8ff1bfa gizmoduck: row 271 design: T45 LISTED gains session_ops and message_cancels to match COUNTED (mos-1319) 2026-10-22 21:07:51 -05:00
jason.woltje 61df3061ed gizmoduck: row 271 design: duckworth-0170 B1-B4 folded (cancel at arrival for routed messages, claim refused while clearing, op namespace both ways, attempt key on start stages) and N1-N8 answered; cancel recorded as a departure from D7:263-264 2026-10-22 21:07:51 -05:00
jason.woltje b212182ed1 gizmoduck: row 271 design: both new tables join COUNTED in stack-release.sh, so T46 passes unchanged; schema.test count pins name the 2 tables and 7 triggers; T45 LISTED question to Mos (mos-1318) 2026-10-22 21:07:51 -05:00
jason.woltje dac64ff311 gizmoduck: row 271 (264d) design draft 2: drained acknowledged by the run's own receive at a turn boundary (a landing turn has unread 0 with a child running), SIGTERM only after it; successor <old>-N bound at request with a deterministic id; no cancel (sage-2826); pre-existing test change list per mos-1315 2026-10-22 21:07:51 -05:00
jason.woltje b329ad69f5 gizmoduck: row 271 (264d) design draft 1 in the packet: the threadIdle fence as the drain, the idle stop as the only signal, a session_ops journal and message_cancels in one schema step; Q1-Q4 for Sage and Mos 2026-10-22 21:07:51 -05:00
jason.woltje 8d4d4ec598 gizmoduck: row 270: the bus legacy test inserts its legacy thread by hand (sessions is append-only) and the test business has the assistant thread.create needs; not run 2026-10-22 21:07:51 -05:00
jason.woltje 5ddc36ca97 gizmoduck: row 270 (264c, #1775): completed Pi compactions counted into a host ledger beside the session store, keyed (entry id, timestamp) store-wide (sage-2806, sage-2814); launcher collects at run start and end under the workspace lock; session.list rows gain compactions through a runtime-injected reader; not run (slot held) 2026-10-22 21:07:51 -05:00
jason.woltje f510d73676 gizmoduck: rows 270 and 271 packets: the 264c count and 264d clear contracts pinned for row 272 (Huey), and the Pi 0.85.1 compaction source contract 2026-10-22 21:07:51 -05:00
jason.woltje 767bb62c7d docs: close remote credential and private review access findings 2026-10-22 21:06:29 -05:00
jason.woltje 6345aae3d8 docs: align editor graph, Markdown transition and archive with PRD d6 2026-10-22 21:06:29 -05:00
jason.woltje ee5f7b9ef8 docs: align O2 chapter conversion and Case 2 access with owner rulings 2026-10-22 21:06:22 -05:00
jason.woltje 0b923a2759 MVP readiness briefs (mos-1371/1372): FED R6 #1800, FED R4 #1801, FED R7 #1802, GitHub grant method #1803, Q228 grant scope #1804, 574 #1805, 573 #1806; docs only 2026-10-22 20:32:37 -05:00
jason.woltje b0a6838ca6 SESSIONS: Filbert Q195 O2 S0 review (#1798, c30914); doc only 2026-10-22 19:05:06 -05:00
jason.woltje 0626464874 Q195 O2 W4 (#1799): log lines for the W4 design and review landing, row 203 and O2 landing; docs only 2026-10-22 18:55:11 -05:00
jason.woltje 66299eeef7 Q195 O2 W4 (#1799): Megavolt's round 4 review of 994c3f7fb (blob 2af460ab7): APPROVE, R3-B1 and R3-B2 closed, R4-N1 (re-migration after a pre-W4b restore) non-blocking for W4b; doc only 2026-10-22 18:54:51 -05:00
jason.woltje 569bb6b177 Q195 O2 W4 (#1799): Megavolt's round 3 review of 54246cb32 (blob 0c4f55826): CHANGES, R2-B1 projection and R2-B2 closed, R3-B1 (reserved notes keyed on negative IDs) and R3-B2 (fence initial state and confirmation scope undefined); doc only 2026-10-22 18:54:51 -05:00
jason.woltje fb404c909d Q195 O2 W4 (#1799): Megavolt's round 2 review of 019a0ea5b (blob 14dfe92d9): CHANGES, B1-B9 and M1 closed, R2-B1 (paragraph-mark revisions, reserved-note leaves) and R2-B2 (release backup/restore keeps O2 text and revives revocations); doc only 2026-10-22 18:54:51 -05:00
jason.woltje 4c0a2c4fd4 Q195 O2 W4 (#1799): Megavolt's review of the DOCX citation design at 15e91538f (blob 662abdb7c): CHANGES, B1-B9 and M1 (Case 2 narrowing in O2-context turns goes to Mos/Jason); doc only 2026-10-22 18:54:51 -05:00
Rocko 2f06aad3f0 docs: define reserved notes and initial O2 restore fence 2026-10-22 18:54:51 -05:00
Rocko 6863d4c852 docs: specify O2 projection marks and restore revocation fence 2026-10-22 18:54:51 -05:00
Rocko 9ef5798acb docs: close W4 locator and access review gaps 2026-10-22 18:54:51 -05:00
Rocko 4897520c31 docs: define committed DOCX citation and access contract 2026-10-22 18:54:51 -05:00
jason.woltje 4ca2703079 queue: revs 3360-3368. Row 203 (#1701): Sage brief re-pin to 8adfb261f (3360, Webby N2), Quackerjack claim, in-review r2 and outcome (3361-3363), Sage request as jarvis (3364-3365), Webby approve record (3366), Sage landing note and done (3367-3368). 2026-10-22 18:54:10 -05:00
jason.woltje 25c09f19fe docs: name save-group settings and enforce adoption gates 2026-10-22 18:51:33 -05:00
jason.woltje a6da8718c4 docs: fix O2 review gates, shipping and save semantics 2026-10-22 18:51:33 -05:00
jason.woltje ee26cfbada docs: redesign Q195 for full WordCraft O2 editor 2026-10-22 18:51:33 -05:00
jason.woltje a4da4e6df4 row 203: gate results on the rebased tip (c7b754d7b): stack-release 219/0, test-config 51/0, mutants 17/17, cli 895/0, ten scripts green with named skips; code tree unchanged from 7309260ae 2026-10-22 18:39:28 -05:00
jason.woltje 7309260aeb row 203: gate record on the rebased tip (c7b754d7b): blob table and timeout table, written before the first run 2026-10-22 18:01:35 -05:00
jason.woltje 7c543fd4a1 row 203 FED R2: cases for missing self, peer id and label (webby-0191 B3)
The pattern test coerces an absent value to the string 'undefined', which
matches, so the typeof halves are the only refusal for a missing value. Adds
a case for each, and M15-M17 in BUILD.md; keeps the config-console-key check
name on purpose. Not run yet.
2026-10-22 17:57:25 -05:00
jason.woltje 284d55cf2c row 203 FED R2: stack-release probe reads federation; a refusal case per federation check
stack-release config_checks refuses a target whose loader refuses a key the
config holds; it looked only for console, so a federation-only config passed
to a pre-203 copy. The probe now reads console or federation. The fixture's
B loader replace follows the new rejectUnknownKeys list, which the federation
key changed.

Adds a test for each federation refusal in test-config.sh (six uncovered,
plus trailing slash and duplicate peer id), and one stack-release test for
the target-loader refusal. Mutants M7-M14 in BUILD.md. Not run yet.
2026-10-22 17:57:25 -05:00
jason.woltje 93a491d732 row 203 FED R2: federation key in the system config (#1701)
The loader validates an optional federation block: self and peers[].id
labels, peers[].origin as an https origin with no path, query or userinfo,
peers[].label non-empty and at most 80 characters, peer ids unique and
distinct from self. Unknown sub-keys refuse. Labels and URLs only; the key
grants no trust. Absent key: config loads with no federation output.

Tests in scripts/test-config.sh cover each refusal and the no-key case.
Notes and mutants M1-M6 in agents/quackerjack/work/queue-203/BUILD.md.
Not run yet: the gate runs on CLEAR.
2026-10-22 17:57:25 -05:00
jason.woltje c7b754d7b1 queue: revs 3339-3359. Row 292 (#1797, Gander) added and briefed (Sage, 3339-3340). Row 291: Gosalyn claim and in-review r1 (3341, 3344-3345), Sage request as jarvis (3353-3354), Webby approve record (3357). Row 207: Megavolt in-review (3342), Sage abandon and request as jarvis, resolved on c30841 (3347, 3349-3350), Duckworth approve record (3356), Sage landing note and done (3358-3359). Row 270: Gizmoduck claim and in-review r3 (3343, 3346), Sage abandon and request as jarvis (3348, 3351-3352), Duckworth approve record (3355). 2026-10-22 17:53:26 -05:00
jason.woltje a94c95522f docs: row 207 landing records (SESSIONS, BUILD-LOG, Megavolt's lines), DEFERRED 207 N1 (duckworth-0230) and 270 N6 bound to row 272 (duckworth-0228) 2026-10-22 17:51:32 -05:00
jason.woltje c4f77373f9 row 207 (#1705): BUILD.md Runs records the gate on 712f79c0a (sage-3041): access.test 31/31, M1-M8 killed on their named tests, cli 894/894, ten scripts green under the mos-1275 limits, and the stopped first run's kill-check correction; doc only 2026-10-22 17:28:04 -05:00
jason.woltje c7e77202d6 row 207 (#1705): BUILD.md records sage-2810 (Q1 no reload, cited to broker.mjs:384; Q2 refuse with user-has-grants) and the usage/help pin sweep: access.test.mjs is the only reader, no hash pin; doc only 2026-10-22 17:28:04 -05:00
jason.woltje a0094633f6 row 207 (#1705): access.test.mjs T1-T9 for user add|remove; BUILD.md pins M7/M8 as edits and records the row 275 path check (bus only, morgana/row275 empty); not yet run, waits for Sage's CLEAR (sage-2790) 2026-10-22 17:28:04 -05:00
jason.woltje 721268b084 row 207 (#1705): mosaic access user add|remove on R5's path (proof, lock, revision, checkAccess, receipt user.add/user.remove); remove refuses user-has-grants; --level viewer already in R5; BUILD.md records Q1-Q5 (no access.reload, R4's) and the tests and mutants; tests held for the row 275 manifest check (sage-2790) 2026-10-22 17:28:04 -05:00
jason.woltje f0e3dcdf41 plans: brief for the config_checks follow-up (row 270 rollback hazard, duckworth-0226, sage-3038) 2026-10-22 17:11:21 -05:00
jason.woltje 01983cd3f1 queue: rev 3338. Row 224 waits on row 216 (Sage, mos-1351: della/row224 carries row 216's commit 4f3fbc25a). 2026-10-22 17:06:42 -05:00
jason.woltje 626c19e78c queue: revs 3325-3337. Row 271: Gizmoduck claim and in-review r3 (3325-3327), Sage review request as jarvis (3328-3329), Duckworth approve record (3330). Row 276: Gander in-review r1 (3331-3332), Sage review request as jarvis (3333-3334), Duckworth approve record (3335), Sage landing note and done (3336-3337). 2026-10-22 17:04:08 -05:00
jason.woltje f32b867f34 docs(row276): record green run5 gate and all seventeen assertion kills 2026-10-22 16:59:44 -05:00
jason.woltje 826e8fd7ff docs(row276): refresh mos-1350 baseline cleanup packet and limits 2026-10-22 16:59:44 -05:00
jason.woltje e06130fc01 test(case): require baseline session cleanup per mos-1350 review 2026-10-22 16:59:44 -05:00
jason.woltje 466562ba03 docs(row276): pin mos-1350 baseline candidate and timing audit 2026-10-22 16:59:44 -05:00
jason.woltje 931fab079a perf(case): remove duplicate head validation per mos-1350 2026-10-22 16:59:44 -05:00
jason.woltje 135bb8fae2 test(case): isolate P10 timing with per-mode baseline per mos-1350 2026-10-22 16:59:44 -05:00
jason.woltje cf228eabc9 docs(row276): record run4 stop and mos-1349 timing pairs 2026-10-22 16:59:44 -05:00
jason.woltje 41f8bd1972 docs(row276): packet stdout spool and M17 per mos-1345 2026-10-22 16:59:44 -05:00
jason.woltje 47906e4fde fix(case): isolate legacy stdout after outer timeout per mos-1345 2026-10-22 16:59:44 -05:00
jason.woltje c2b845c76d docs(row276): preserve run3 whole-file stop for placement 2026-10-22 16:59:44 -05:00
jason.woltje 74635fc608 fix(row276): correct multi-file driver path per mos-1337 review 2026-10-22 16:59:44 -05:00
jason.woltje 257003ba1a test(row276): record mos-1337 N5 delta and both-copy mutant 2026-10-22 16:59:44 -05:00
jason.woltje 537ce2dd4a fix(case): silence vanished stat opens per mos-1337 N5 2026-10-22 16:59:44 -05:00
jason.woltje 3b90428021 docs(row276): record run2 stop for Mos placement 2026-10-22 16:59:44 -05:00
jason.woltje 859ae37083 docs(row276): void setup-red run and pin first fixture correction 2026-10-22 16:59:44 -05:00
jason.woltje 88179d6de4 test(row276): define read helper for new legacy fixtures 2026-10-22 16:59:44 -05:00
jason.woltje ccfa17eefc docs(row276): integrate schema3m base and record dependency drift 2026-10-22 16:59:44 -05:00
jason.woltje b5d9efa1ba docs(row276): pin integration on 94c33a43c and preserve upstream docs 2026-10-22 16:59:44 -05:00
jason.woltje 69979bb8a8 docs(row276): record static approval and upstream deferred drift 2026-10-22 16:59:44 -05:00
jason.woltje 155f643224 docs(row276): pin supervised-call candidate and fifteen mutants 2026-10-22 16:59:44 -05:00
jason.woltje b96b4e303d fix(case1): supervise legacy user calls across sudo sessions 2026-10-22 16:59:44 -05:00
jason.woltje f2735bb6a1 queue: revs 3317-3324. Row 206: Launchpad claim and in-review (3317-3319), Sage review request (3320-3321), Duckworth approve record (3322), Sage landing note and done (3323-3324). 2026-10-22 15:14:46 -05:00
jason.woltje 0cbe2e9b35 row 206 (#1704): BUILD.md Runs, gate GREEN on 9538e0fc8 (bus 850, cli 869, shell suites, M2-M9 and Q2 killed) 2026-10-22 14:40:53 -05:00
jason.woltje 9538e0fc86 row 206 (#1704): thread-shares trail test threads the reply into A's default session, not the thread id (first-run red, mos-1272) 2026-10-22 14:19:00 -05:00
jason.woltje 1a228f395f row 206 r4 (#1704): BUILD.md records the slot rebase onto 17f415792 (269, 282 landed) and the drift sweep 2026-10-22 14:16:21 -05:00
jason.woltje 8295622600 row 206 (#1704): BUILD.md records duckworth-0179/0180, C3 met on the pushed tip 670658dd1 2026-10-22 14:15:48 -05:00
jason.woltje ac0e4dc9bc row 206 r3 (#1704): BUILD.md records the C3 rebase onto 275 at 3410df7c3 on 253's 48e450ce8, and the sweep 2026-10-22 14:15:47 -05:00
jason.woltje c49fdb2692 row 206 (#1704): BUILD.md records duckworth-0175 (round 2 meets C1/C2, APPROVE carries) and C3 2026-10-22 14:15:47 -05:00
jason.woltje cfb86f1bd7 row 206 r2 (#1704): rebased on 275 r3 957a9bfe0; share verbs need collaborator, viewer reads a share (duckworth-0169 C1, C2) 2026-10-22 14:15:47 -05:00
jason.woltje 178eefd5c4 row 206 (#1704): BUILD.md records Duckworth's manifest APPROVE (duckworth-0169), C1/C2 for the 275 round, N1-N4 2026-10-22 14:15:47 -05:00
jason.woltje 8a29f94771 row 206 (193b2, #1704): sage-2818 rulings, only a human principal matches a share
#readable returns false for an agent session, so a `*` share no longer shows a user's message
in an agent's trail. New tests: a sharee's session.list refuses (Q1), and an agent bound to the
shared thread, a chief run and the tester match no share (Q2). BUILD.md records the Q1
follow-up, Q2-Q4 and the live --migrate as Mos's go under Q173. README names the agent rule.
2026-10-22 14:15:47 -05:00
jason.woltje d78a9cc83c row 206 (193b2, #1704): thread shares, schema 3l→3m
thread_shares (row 193 design 5.2) with its index and append-only triggers; the
3l-3m step only adds them. thread.share, thread.unshare and thread.shares for a
thread's owner; #readable holds design 5.4's four rules, #threadRead serves
thread.messages only, and thread.list {shared:true} adds owner. replies and
trail show shared user threads to the owner and readers. COUNTED, LISTED,
timedTables and the clock list take the table. Tests: thread-shares.test.mjs
and the 3l→3m pins. Packet agents/launchpad/work/queue-206/BUILD.md. Not run
yet: node waits for Sage's CLEAR (sage-2789).
2026-10-22 14:15:47 -05:00
jason.woltje 17f4157920 queue: revs 3217-3316. Q226 gap (rows 216-229, 265-267 re-pins; 217 unblocked; 223 blocked; rows 282-290 added), rows 253, 275, 269 and 282 reviews, notes and done moves, row 291 (PRD 1.16, #1796) added, claims and in-review moves for 173, 207, 211, 214, 224, 239, 252, 258, 276 (sage, darkwing, della, dewey, gander, herb, honker, megavolt, scrooge, ludwig, gizmoduck, gosalyn, webby, duckworth, morgana); review requests posted as jarvis by Sage 2026-10-22 14:13:04 -05:00
jason.woltje 647424442f gosalyn: PRD 1.15 round 2 for Webby webby-0158 B1: requireCitation makes every reply carry a citation except the runner's four fixed notices, as the design keeps them passing, and the REQ-LIB-1 rewrap joins organization file to its sentence (N1) 2026-10-22 14:06:25 -05:00
jason.woltje 71fed6281c gosalyn: PRD 1.15 rewrites REQ-LIB-6 to Q223 and Q226 (mos-1320 item 8): agents never write story and write .md files only in supporting folders a human marks, each as a commit by their own Gitea account with a notice she can revert, chat is free text, any citation is checked, and requireCitation is a human-only setting off by default. REQ-LIB-1 and REQ-LIB-2 gain supporting folders and the canon-cite rule. The 1.12 note's residual becomes the supporting-doc residual, and the 1.15 note records the old texts and lists REQ-LIB-3, 4, 5 and 7 as unchanged. requirements.json version 1.15 with three titles changed, and the test's version pin. The id count stays 85 2026-10-22 14:06:25 -05:00
jason.woltje 86a665bdf0 docs: PRD 1.16 brief, library.write routes under REQ-LIB-6 (#1796, mos-1328) 2026-10-22 13:51:55 -05:00
jason.woltje efcc9ea8dd row 269 (264b, #1774): BUILD.md M11 kill line is the survivor log assertion at session-launch.test.mjs:309, not the outcome assertion (mutant run 17:49Z, duckworth-0181) 2026-10-22 13:37:34 -05:00
jason.woltje f39508c24f row 269 (264b, #1774): the M6 halt test halts after mayLaunch answers
A halt inside the op reaches the bus's own fence first (runtime.mjs:564-566,
processingWork at :352-356), so the launcher refused limit-check-failed
(launcher.mjs:389-391) before its recheck admission() at :397. First-run red of
a new test on 6d9ab3503 early signal, placed under mos-1272.
2026-10-22 13:37:34 -05:00
jason.woltje d20ef317fc row 269 (264b, #1774): BUILD.md names the sessioned-survivor residual in Q2 and records N1's mos-1292 allowance (duckworth-0159 N3, N4) 2026-10-22 13:37:34 -05:00
jason.woltje 6e50bd6304 row 269 (264b, #1774): BUILD.md Q2 notes that a survivor's released claim doesn't prove its run has exited, and the per-leftover 5 s wait (duckworth-0158 N1, N2) 2026-10-22 13:37:34 -05:00
jason.woltje 6c80b12904 row 269 (264b, #1774): BUILD.md answers sage-2750 on the recover() change; the survivor log names its pids
The section "recover() change, for a design read" covers three things, with
file:line against aca16404c. Every leftover is still bound and ended as
host-lost, and a survivor only refuses legacy-run-live while it lives. The
5 s wait applies only in the bwrap kill branch. No old test's expected value
changes. The fallback is to revert to the base recover() and leave the
refusal untested. The survivor log line now names the outer and runner pids
so an operator can clear it, and the new test's log assertion matches.
2026-10-22 13:37:34 -05:00
jason.woltje 42fd3edd45 row 269 (264b, #1774): legacy-run-live gets its test (duckworth-0156)
recover() kept a survivor only when a bwrap outer pid outlived SIGKILL, so
the Q2 refusal (BUILD.md:177-179, t1-sessions.md:109) had no test. A leftover
whose runner still ran after its outer pid was gone was ended and dropped.
Now recover() waits on the outer pid and the runner, keeps any leftover where
either still runs, and logs that it still runs. check() reads only the
survivors that still run.

session-launch.test.mjs adds a test where a sessionless leftover's runner is
a sleep child and its outer pid is gone. It asserts the legacy-run-live
refusal with no launch and no session workspace, then one launch once the
child exits. BUILD.md adds mutants M10-M12 and replaces the "no test" note.
2026-10-22 13:37:34 -05:00
jason.woltje dc5836c7df row 269 (264b, #1774): refusedOnce in sessions.test.mjs pins actor_run, closing Duckworth N1 (DEFERRED.md:474-480)
Allowed by Mos in mos-1292 (copy mos-1294) on mos-1285's terms. The SELECT
reads actor_run, the expected row gets the run-name literal, and the three
callers pass `${name}-run`. Nothing else in the test changes. The old
expected row was:

  [['action.refused', { code: 'not-holder' }]]

DEFERRED.md gets a closing line on the entry naming row 269.
2026-10-22 13:37:34 -05:00
jason.woltje 2133c5a0c6 row 269 (264b, #1774): per-session store, workspace and single-writer lock
threadsState gives one row per session with `session` and `legacy`; threadIdle
idles a run against its bound session. Each session gets its own store
(threads/<b>/<t>/sessions/<s>/, or the thread's old store for a legacy-3l
session) and its own workspace (session-workspaces/<b>/<i>/<s>/), held by an
O_EXCL <ws>.lock from before the clones to the run's proven exit. A legacy
session's workspace binds in-sandbox at the old instance path. sessions.json
is v2 and reads v1. New tests: cli session-launch.test.mjs, seat
session-workspace.test.mjs. Not yet run: tests wait for Sage's CLEAR.

Two old assertions change as exact updates:
- mos-1285: end-launch.test.mjs threadsState deepEqual. The old row shape was
  { thread: 'th-1', instance: 'coder', pending: 0, unread: 0, lastMessage: null,
  lastOpen: '2026-10-15T00:00:01.000Z', lastClaim: null, holder: null }; the
  row keeps every key and value and adds session: 'th-1', legacy: true.
- mos-1289: thread-launch.test.mjs:182, old line
  `const store = join(f.dataRoot, "threads", "acme", A);`
  now reads A's default session id from threadsState's `session` key; :183-185
  unchanged; one added assert that threads/acme/<A>/session is absent.
2026-10-22 13:37:34 -05:00
jason.woltje 194dec83d6 row 269 (264b, #1774): BUILD.md lists thread-launch.test.mjs:182 as a second old assertion that changes. A thread.create thread's default session isn't legacy-3l, so its store takes D2's layout (t1-sessions.md:100, :294). Proposed as an exact path update, for Mos through Sage 2026-10-22 13:37:34 -05:00
jason.woltje 84b32e3903 row 269 (264b, #1774): BUILD.md drops the planned bindLaunch session-running refusal. Two old tests bind a second unended run to one session and expect the claim refusal (threads.test.mjs:88-89, sessions.test.mjs:119-120), so the broker half of the fence is the existing per-session claim, thread-already-held (broker.mjs:4815) 2026-10-22 13:37:34 -05:00
jason.woltje 9d241fdcc2 row 269 (264b, #1774): design notes for Duckworth's early look (duckworth-0150). C1 adds the Console and R-guard sessions.json readers, the 264a refusals a v2 file causes, the /proc live check and the Console restart; C2 pins M6 to a generation change after check() with all eight start() admission calls named; C3 gives the realpath compare its own code and a symlinked workspaces root as M4's input; C4 lists the old threadsState assertions, end-launch.test:193 the only change, under mos-1285 2026-10-22 13:37:34 -05:00
jason.woltje 76a6524cfe row 269 (264b, #1774): design notes for sage-2717. Rollback names the four steps past the 264a exit-3 refusal and the re-pin plan section that carries them; new M8 binds a non-default session at the legacy path, old M8 becomes M9; Duckworth's legacy-bind check 2026-10-22 13:37:34 -05:00
jason.woltje 693f7e745e row 269 (264b, #1774): design notes. D9 audit of every sessions.json reader at 84f53540d and of threadsState's consumers; sessions.json goes to v2 because recover() rebinds without session; pi 0.85.1 resumes by cwd, so the legacy session keeps its in-sandbox path; mutants M1-M8 and run limits (sage-2707) 2026-10-22 13:37:34 -05:00
jason.woltje 94c33a43c0 docs: row 275 landing line; Researcher session line 2026-10-22 13:13:47 -05:00
jason.woltje a870fd85bb docs: seat log lines for rows 281, 224, 219, 214, 211 and 258, the row 253 landing line, Sage's SESSIONS line, and DEFERRED for the 224 residual and the 206 sharee list 2026-10-22 13:10:27 -05:00
jason.woltje 5b1f1dc885 docs: DEFERRED gains row 253 N1 (Vikunja 532, mos-1297), row 198 N2 (/api/seen 400, sage-2867) and the stale row 203 text in access.mjs (Quackerjack) 2026-10-22 13:10:27 -05:00
jason.woltje 8c638b6f66 agents: register Della, Scrooge, Huey, Louie and Ludwig as seats so the queue can name them as row owners (Q220, mos-1301) 2026-10-22 13:10:27 -05:00
jason.woltje a700992cd4 docs: 193b2 brief, the live --migrate window needs Mos's go under Q173, not Jason (mos-1310 item 4) 2026-10-22 13:10:27 -05:00
jason.woltje d30f35e292 docs: SESSIONS line for Gizmoduck, rows 264a and 268 after-landing docs and the row 269 plan 2026-10-22 13:10:27 -05:00
jason.woltje e5b7d1d083 row 268 (#1773): BUILD.md Runs records the r2 gate on ecd9b35eb and the r3 and r4 carry reruns with every count and skip; doc only (sage-2455) 2026-10-22 13:10:27 -05:00
jason.woltje 836b2f25ca docs: preserve email hard-wait approval and tune parser limits 2026-10-22 13:10:27 -05:00
jason.woltje 73516da853 docs: apply Q217 and Q222 to email source settings 2026-10-22 13:10:27 -05:00
jason.woltje 95e3f71661 docs: address Q195 editor design review findings 2026-10-22 13:10:26 -05:00
jason.woltje cde0cd0832 docs: Q195 writing editor design and Q196 options 2026-10-22 13:10:26 -05:00
jason.woltje 100f018af3 gosalyn: row 229 design round 2 for Webby webby-0148: the settings.json allowlist is three keys a fresh /login writes, written in Mosaic code with httpProxy and the path and command keys refused by name and a sha256 bump test on pi's setter names, models-store.json and keybindings.json now refuse, auth.json.lock is the only allowed dir, pi-login runs --offline and --no-session in an empty temporary cwd with a 229b allowlist test, the contents check runs before preflight, and creativeHumanOnly covers the fallback (R1, R2, N1-N5) 2026-10-22 13:10:26 -05:00
jason.woltje 4a8215e3a1 gosalyn: row 229 design draft 1 after mos-1306: Chet's route has no fallback by default with a human-only fallback still possible through routes, and the dates note records that the live check gates every build row, not the design 2026-10-22 13:10:26 -05:00
jason.woltje 669e680368 gosalyn: row 229 design draft 1, a per-instance pi agent dir for Chet's Codex login: the host-made 0700 store per instance, a same-path rw bind with PI_CODING_AGENT_DIR through the pi module env, a contents allowlist since pi reads models.json and settings.json there, a refusal for roles with bash, a no-refresh auth check preflight, no fallback for Chet, a fresh-grant mosaic pi-login, the live check that gates the build, and rows 229a and 229b (#428, #1730) 2026-10-22 13:10:26 -05:00
jason.woltje c06ccc9ba4 gosalyn: Case 2 C2-03b round 3 for Webby webby-0156 R4: the fetch fallback reads the append-only events table for any GRANT_EVIDENCE event with method gitea and agent the chief, never gitea_grants, whose row a revoke and a grant-lost delete. It names no project, since grant.applied and grant.revoked carry none, so a chief grant on any project ends the fallback and fails safe. The revoked and fired tests go through grants.revoke and instance.fire and assert the row is gone before the fetch 2026-10-22 13:10:26 -05:00
jason.woltje 136e5c1ca3 gosalyn: Case 2 Q226 row briefs with Webby's round webby-0151, Mos's mos-1320 and Sage's sage-2833 folded in. C2-06 rewritten and taking in C2-07: an unreadable business file resolves requireCitation to true (R2), a send over 64 KiB gets the one retry and then a fourth fixed text (R1). C2-03b falls back to slot library-gitea only while no chief grant record has ever existed and refuses library-fetch-no-grant after (R3), with library-human-missing for her save and revert. C2-02 after C2-05c, revert and save by her editor (N1). C2-21 cites mos-1320 item 2 and keeps the host-creative-role refusals, and records two Gitea facts that don't gate it (N4, item 5). C2-08b names what the chief's credential needs (N5). C2-05b restored to the brief row 224 built, which lands as built, and new row C2-05c carries the supporting scope and blob. A PRD row brief for REQ-LIB-6 (mos-1320 item 8). New briefs C2-01d, 05c, 08b, 03b, 21, 02, 11b and 12b 2026-10-22 13:10:26 -05:00
jason.woltje cf17ab387b gosalyn: C2-06 brief Q222 round 2 for Webby webby-0144: M11 compares against the on-disk human and replyLimits on document and written and refuses agent actor shapes, an unreadable business file checks at the defaults, keys read by Object.hasOwn and Number.isInteger, the verb refuses unknown keys, the new tests, the residual line, cites at aca16404c, and the hold moves to Q30 (mos-1305, design f164dcef8) 2026-10-22 13:10:26 -05:00
jason.woltje 09948da187 gosalyn: C2-06 brief makes every M5 limit a replyLimits setting with Q219's numbers as defaults, the human's library.limits.set and mosaic limits replies, the M11 writer check, read at check time with per-key fallback to the default, the setup sheet's settings line, the settings and M11 tests, After C2-04, and the build held for Q29 (Q222, mos-1302, design df29550c9) 2026-10-22 13:10:26 -05:00
jason.woltje 35615b01b7 gosalyn: C2-06 brief cites the setup sheet's reply limits paragraph at :115-118 (webby-0140 N4) 2026-10-22 13:10:26 -05:00
jason.woltje 3f1f4e44fa gosalyn: C2-06 brief owns the setup sheet's reply limits paragraph, which says 3 ideas of up to 120 characters and drops the lower-limits offer, and the tests paragraph is rewrapped (webby-0139 N1, N2, Q219) 2026-10-22 13:10:26 -05:00
jason.woltje 65b8c8a9bd gosalyn: C2-06 brief takes Jason's idea caps, 3 items of 120 characters per reply, tested one past each boundary, and the idea-text residual line reads 360 characters closed in Q219 (mos-1299, design 2852348d2) 2026-10-22 13:10:26 -05:00
jason.woltje 271cef205c gosalyn: Case 2 design round 3 for Webby webby-0156 R4: the fetch fallback reads GRANT_EVIDENCE events with method gitea and agent the chief in the append-only events table, never gitea_grants, and names no project, so it survives a revoke, a grant-lost and a fire and fails safe. The ruling paragraph, 7.2 and section 10 steps 4 and 4b say so, cited at aca16404c 2026-10-22 13:10:26 -05:00
jason.woltje 3e5db651b7 gosalyn: Case 2 design ruling after r11, agents never write story (Q223, Q226, mos-1309), with Webby's round webby-0151 and Mos's mos-1320 folded in. Supporting prefix lists agents may write .md files under through library.doc.write and library.doc.delete, fenced by M12 supportingPath, plumbing commits pushed fast-forward only with a Mosaic-Agent trailer, a notice and a human revert authored by her editor on slot library-human. Chat is free text with optional citations, replyLimits keys requireCitation and citationsPerReply, and an unreadable business file resolves requireCitation to true (R2). A send over 64 KiB gets the one retry and then a fixed text (R1). The fetch falls back to slot library-gitea only while no chief grant record has ever existed, and Jason deletes the slot once status shows the chief's grant (R3). A missing editor or slot refuses before any git call (N1), runner and tools cites fixed at aca16404c (N2, N3), two record-only Gitea facts at C2-21 (N4, mos-1320 item 5), mos-1163 narrowed to gitea library projects (mos-1320 item 2), M3 at eight or ten (mos-1320 item 4). C2-05b is row 224 as built and C2-05c carries the supporting scope and blob (sage-2833). New rows C2-01d, C2-05c, C2-08b, C2-12b and C2-21 2026-10-22 13:10:26 -05:00
jason.woltje e1c9c09935 gosalyn: Case 2 Q222 round 2 for Webby webby-0144: the M11 fence compares against the on-disk human and refuses agent actor shapes, checks document and written as M9 does, a failed business file read checks at the defaults and never skips, the fallback reads keys by Object.hasOwn and Number.isInteger with booleans, arrays and objects named, the verb refuses unknown keys, the ceilings residual line, and cites at aca16404c (R1-R3, N1-N3, N5, N6) 2026-10-22 13:10:26 -05:00
jason.woltje aaaf45576a gosalyn: Case 2 design ruling after r11, reply limits are settings: every M5 limit is a replyLimits key in the business file with Q219's numbers as defaults, changed only by the human's library.limits.set and fenced in organizationWriter.write as M11, read at check time, with a missing or invalid value using its default. C2-06 carries it and waits on Q29 (Q222, mos-1302) 2026-10-22 13:10:26 -05:00
jason.woltje cf6abca9c0 gosalyn: Case 2 design ruling after r11, idea items capped at 3 of 120 characters: M5, the B5 note, the 5.1 residual (now 360 characters per reply) and 10 step 8 closed by Jason; the rest of M5 unchanged, C2-06 builds and tests the new boundaries (Q219, mos-1299, Vikunja 465, ludwig-0014 Q4) 2026-10-22 13:10:26 -05:00
jason.woltje 3410df7c3b morgana: row 275 r3 (duckworth-0166): B1 bob asks create only, open and send on alice's own thread; N1 thread B holds a message and the viewer read asserts its id 2026-10-22 12:46:09 -05:00
jason.woltje 1e3db53436 morgana: row 275 r2 (mos-1311): downgraded viewer keeps send and open refusals with nothing stored in the R3 test; BUILD.md lists each changed assertion, old and new, with design 4.3 lines 2026-10-22 12:46:09 -05:00
jason.woltje 4dd85c6716 morgana: row 275 (193b1b, #1780): viewer verbs and board refusals. VIEWER_VERBS at any grant level, collaborator for thread.create/open/send per verb, BOARD_VERBS exported and refused to users, user-side governance pin, mutants 6 and 10; FED R3 viewer-refused assertions reversed per design 4.3 2026-10-22 12:46:09 -05:00
1157 changed files with 377378 additions and 930 deletions

No files matched your search

+85
View File
@@ -5322,3 +5322,88 @@ Gander: after Duckworth-0100 design approval with C1-C5, prepared the two host-s
2026-10-22 14:45 UTC | Gander row253 focused27 on finalaca16404c base | Fresh0604d91fc / manifest573c51cf:27 whole files604/0/0, no timeout/retry, case134/0 in99.281s, case243/0 in66.418s, stack-release includingT46221/0 in583.453s. N9 sandbox bind ran and passed, no focused skips. Seven source blobs unchanged; sweep0 run-created leftovers, pre-existing infrastructure receipts retained. Whole gate and M1-M40 await separate Sage CLEAR after Duckworth rebase check. No live action.
2026-10-22 14:46 UTC | Gander correction to the row253 focused27 entry immediately above | stack-release whole was218/0/0, not221/0. The27-file sum604/0/0 and duration583.453s are unchanged; raw files/results.json and SUMMARY.json give the exact per-file totals.
2026-10-21T16:04:23Z | Q195/Q196 writing editor design, #1752 / Vikunja #448 | Before: row 154 edits Markdown in a separate Docs view, with no selected-word thesaurus or document pins. After: design draft on gyro/editor-design compares three editor approaches, records WordNet source/license/size, folds the pane/pin model and specifies guarded context/proposal APIs, DesignCraft handoff and seven proposed briefs. Q196 changes the basis to a Word-like interface. Verification so far: editor/provenance checks 10 pass, 1 explicit rebuild skip (pinned esbuild absent); brief fields, unique headings and 11-line checklist checked. Product, queue and live state unchanged. WordCraft scratch evaluation is being incorporated before publication. Review and Jason choices remain open.
2026-10-21T16:22:36Z | Q195/Q196 design verification, #1752 / Vikunja #448 | Folded Fenton 7caf8008b and Louie 880ef19e0. Recommend bounded O3: Word-like DOM editor plus isolated headless DOCX export, with explicit feature cut and semantic loss checks. WordCraft web 44,179,239 bytes, identical twice; measured comment/footnote conversion limits recorded. Seven briefs and 12-line checklist validated. Fresh editor/provenance: 10 pass, 0 fail, 1 explicit rebuild skip (esbuild 0.28.2 absent). CI queue guard identity gyro/purpose push returned documented degraded-pass (exit 0), CANNOT_ASSERT credential-unresolvable, scratch audit gyro-q195-ci-queue-audit.jsonl; no fallback or CI-green claim. Documentation-only candidate for Mos/Fenton review, no source, queue or live changes.
2026-10-22T16:06:34Z | Q195/Q196 design review fixes, #1752 / Vikunja #448, mos-1300 / fenton-0004 | Before: draft 105811400 had owner-only thread wording, stale source positions, two mismatched seat/model assignments, an assumed library save boundary and 12 owner questions. After: grant-aware pin validation and stale/revoked access redaction; references refreshed against aca16404c, including public/bus.js and README offsets; Sage assigns model-only seats; unimplemented library.file.save/C2-11b brief blocks book editing; tabs explicitly cover 62-76rem; J7 stricter context choice recorded; pronouns removed; six owner questions. Static docs/source-anchor checks only, no builds, product suites, MVP gate slot or live action. Fenton re-check pending; O3 and both companion folds retained.
2026-10-22T16:09:56Z | Della mos-1303 / Vikunja 460 Q217/Q222 revision | Before: Q1/Q2 open and Q3-Q7 phrased as Jason questions. After: Jason-created InMotion/woltje.com ingress recorded; per-source mailboxScope defaults none with human-only CLI then Console writer and named default/change/agent-refusal tests. Q3-Q7 settings/defaults/owners documented; no new external decision required for default development, conditional provider/spend/exposure list retained. PRD/grant/data.delete/live gates preserved. Docs only, no product suite or live operation. Earlier uncommitted append-only PRD review session receipts are preserved in this docs commit. Ludwig reviews before Sage landing.
2026-10-22T16:12:26Z | Della ludwig-0035 / mos-1303 / Vikunja 460 focused corrections | Verified REQ-WAIT-2/3 at db1e7732a: Jason approval is required to route mail.access out of hard waits. Restored explicit Jason-approved PRD gate; no Q211 waiver inferred. Named tunable parser/attachment settings, defaults and schema/test review ownership of resource bounds; E04 checks changed values and bound refusals. Clarified Q8 extraction stays Jason choice. Docs-only checks, no product/live action; focused review before Sage handoff.
2026-10-22 13:06 UTC | Megavolt | Row 281 (#1786) build. Before: a fire or delete left host_grants/gitea_grants rows, the host line and the Gitea token live. After: step G in broker.mjs revokes them in a detached job per agent (the host line first, then Gitea local-first with an admin preflight); a refusal is grant.revoke.refused plus a human message; open grant decisions are in the set; a raise for a fired agent refuses instance-fired. Tests T1-T14 (bus fire-revokes-grants, lifecycle-revoke, grant-executor, gitea-grant; cli lifecycle). Gate on 7979fb41e: base 121/121 + 24/24, 29 anchors, M1 exit check rc1/17, M1-M22 22/22 killed, dewey-0840 files 76+14+23, bus 819, business 231, cli 837, ten shells rc 0 under the mos-1275 limits; skips: test-task row 244 live-provider pair, test-queue canonical-root check. Corrections: the first base run on c174f37ac went red on five first-run test defects (b3, test only); the first mutant run on 06ee5ed6b hung on M1 because T6c's held loop never ended (b4a fixed the teardown, and the runner now has timeout -k 10 180 and an exit check without --test-force-exit).
2026-10-22T16:36:30Z | Della row224 C2-05b #1725 preparation | Before: C2-05a queries exist at 4f3fbc25a but no broker lookup verbs or typed tools. Scope: broker/tools plus Sage-authorized runtime/bundle integration, tests and docs. Existing human-only library reads retained; five agent queries require a live holder and trusted configured source. Code/docs only under row253 gate; no Node/test/push/claim. Runtime ownership coordinated with Rocko219/Huey272.
2026-10-22T16:52:55Z | Rocko | Row219 prepared under sage2793/2807; explicit creative thread/default-session selection, narrow metadata route/picker U1–U5,22 static mutant sites; unrun while253 holds.
2026-10-22T17:42:16Z | Sage | Row 253 (#1758, Gander, Duckworth) LANDED 48e450ce8. Before: refactor at aca16404c; case-sudo calls had no supervised session check and the M21 survivor hid behind a fast-exit fixture (mos-1297). After: a fast-forward of 22 commits; manifest 591020a1 rechecked with 0 mismatches; run 5 whole gate green with M1-M40 killed, the M38 PID equals SID assertion added under mos-1298; Duckworth APPROVE rev 3252, note rev 3253, done rev 3254; #1758 comment 30701 and closed; P19 416 comment 719. N1 (fast child reported as exit 85) is DEFERRED as Vikunja 532.
2026-10-22T18:11:57Z | Sage | Row 275 (#1780, Morgana, Duckworth) LANDED 3410df7c3. Before: refactor at 48e450ce8; viewers had no verb list of their own and board reads were not refused to users. After: a fast-forward of 3 commits; manifest 39847b15 (4 paths) blobs match; gate 17:52:12Z-18:05:00Z green (whole files 7/22/6, bus 834, cli 861, harness 151, business 231, seat 167, 10 scripts with 3 named skips), M6 and M10 killed; Duckworth APPROVE rev 3260 (comment 30717); note and done by sage-2897; #1780 comment 30728 and closed. N1 (board refusal test as a loop over BOARD_VERBS) is non-blocking.
2026-10-22 18:11:58 UTC | Gander row276 #1781 prepared, gate pending | Before: row253 left5legacy Case1 AS_USER calls unsupervised across sudo pty sessions. After: candidate uses its unchanged supervisor with per-call inner/outer budgets, separate streams, strict display-only failure trailer, fake-only paired process-model cases and15unique mutants. Duckworth0182 B1 corrected the plan before product code;0183 cleared build. Parse-only Bash checks pass; no Node, behavioral test, host, unit or config action. Runtime gate and publication await Sage.
2026-10-22T22:51:32Z | Megavolt | Row 207 (193c, #1705): rebased onto 01983cd3f as 712f79c0a; gate green under sage-3041 (access.test 31/31, M1-M8 killed on named tests, cli 894/894, ten scripts under mos-1275 limits). Correction: the first run's kill check grepped TAP "not ok" against node's spec output and was stopped and rerun. Runs note in 9bb406c6c.
2026-10-22T22:51:32Z | Sage | Row 207 (#1705, Megavolt, Duckworth) LANDED c4f77373f. Before: refactor at f0e3dcdf4; mosaic access had no user verbs. After: fast-forward of 4 commits, a cherry-pick of the gated 01983cd3f..9bb406c6c (range-diff 4/4 equal, patch-ids equal, the 4 manifest blobs equal; the base moved only by the #1797 brief, which no test reads; no open branch touches the manifest). Duckworth APPROVE c30849 rev 3356; done rev after the note. N1 (any-business refusal untested) DEFERRED. No live change. Correction: my first 207 review request ran under timeout 120, which killed it while it wrote the outcome; the comment (c30841) had posted, so I removed the dead lock and resolved it at rev 3350.
2026-10-22T23:03:39Z | Gyro Q195 O2 rewrite, #1752 / Vikunja #448, mos-1356 | Before: landed O3 design 95e3f7166/blob 4cb59999. After: Q231/Q233 full WordCraft O2 design on gyro/editor-o2 from refactor c4f77373f; canonical git DOCX, original Markdown/wiki preservation, human cadence default 0 with instant accepted-save commits, full rich-feature first slice. Ten briefs include independent source/dependency security clearance before any build queue entry, exact editor-only CSP approval gate, restricted source/build/bridge, separate reviewed DOCX citation gate and flags-only agent access. Existing Case 2 semantics unchanged; any integration requirement change goes through Mos to Jason. Static checks: ten briefs/seven fields, independent reviewers, unique anchors, current source/base/blob pins, docs scope and append-only logs pass. No builds, browser/worker runs, code, queue or live changes. Fenton review pending; CSP and implementation gates remain closed.
2026-10-22T23:03:53Z | Gyro Q195 O2 push guard | CI queue guard identity gyro / purpose push returned exit 0, documented degraded-pass: CANNOT_ASSERT credential-unresolvable. Audit: /mnt/storage/scratch/gyro-q195-ci-queue-audit.jsonl. No credential fallback or CI-green claim.
2026-10-22T23:09:38Z | Gyro Q195 O2 fenton-0006 fixes | Before: e012bab0b left stale-source ambiguity, incomplete migration/shipping ownership, undefined typing transactions and an unmeasured CSP gate. After: D12 explicitly routes superseded-source/C2 reply notices to Mos/Jason and refuses adoption before W4b/notice path; Q2 remains open. F2-F6 add schema-edge placeholders and restore-accounting files, shipped runtime data/writing closure with no sandbox store mount, per-chapter DOCX and 2s-pause/15s-span save groups, volume/latency/growth gates, split-run clickable wikilinks and historical Obsidian graph warning, and S0 isolated existing-artifact CSP measurement before exact-header approval. Static ten-brief/ownership/settings/checklist checks pass. No build/browser run, product/queue/live change. Independent re-check pending.
2026-10-22T23:09:50Z | Gyro fenton-0006 push guard | identity gyro, purpose push, exit 0 documented degraded-pass CANNOT_ASSERT credential-unresolvable; audit gyro-q195-ci-queue-audit.jsonl. No fallback credentials or CI-green claim.
2026-10-22T23:10:14Z | Gyro mos-1358 ruling recorded | Q36 / Vikunja 562 keeps C2 superseded notices OPEN with Jason. Markdown adoption refusal until W4b PASS is now a separate settled Mos build-order ruling, not a Jason question. D12 and Q2 distinguish them; no notice build authorized.
2026-10-22T23:13:27Z | Gyro Q195 O2 fenton-0007 F7/F8 | Named human-only editor.saveGroupPauseMs=2000 and editor.saveGroupMaxMs=15000 with integer/range/cross-field validation and W3a UI/CLI refusal tests. W3b owns production adoption refusal until W4b; isolated fixture conversion remains testable without request-flag bypass. W4b owns adoption module/API tests and reviewed lifting only with committed-reader/citation readiness and, if Q36 approves, the separate notice row PASS. Q36 unresolved stays closed. Static ten-brief, setting-key/bounds, refusal/lift ownership and two-question checks pass. Docs only; no build, browser/worker run, product/queue/live change. Fenton checks F7/F8 on next push.
2026-10-22T23:13:48Z | Gyro mos-1359 / r3 push guard | D13 records save-group timing as Mos's accepted reading of Q226 F41, not Jason's ruling; both defaults remain human-only settings. Push guard identity gyro/purpose push: exit 0 documented degraded-pass, CANNOT_ASSERT credential-unresolvable; audit gyro-q195-ci-queue-audit.jsonl, no credential fallback or CI-green claim.
2026-10-22T23:23:42Z | Rocko, W4 #1799 | Before, D24-D26 had no separate exact DOCX citation/access contract. After, 15e91538f proposed a versioned schema, parser/story/view/refusal rules, live authorization/sharing and generic/git/session bypass closure, compatibility gates and 22 acceptance rows. Two JSON examples parse, diff check clean; no code or implementation acceptance. Megavolt review pending.
2026-10-22T23:55:11Z | Sage, W4 #1799 docs landing | Megavolt reviewed four rounds (CHANGES 15e91538f, 019a0ea5b, 54246cb32; APPROVE 994c3f7fb, #1799 c30868/c30870/c30876/c30884). Landed here as cherry-picks: docs/plans/2026-10-22_q195-docx-citations.md blob 2af460ab7 and docs/reviews/2026-10-22_q195-docx-citations.md blob bedde1716, both new files. 32 acceptance rows go to W4b; R4-N1 (re-migration after a pre-W4b restore keeps the rotated fence and needs owner confirmation) goes into W4b's brief and A32. W4 is design-approved only: its gate still needs Sage's W4b implementation brief, which waits for S0 (#1798) PASS. Q36 open, adoption closed. Docs only, no test reads these files.
2026-10-23T00:52:58Z | Gyro Q235-Q237 policy rewrite started, Vikunja 571, mos-1366/1367 | Before: approved O2 e36bce352 keeps Markdown originals at their paths and Q36 notices open; landed W4 2af460ab7 has the same boundary. Imported that byte-identical W4 baseline as 1ac76a417, from refactor 062646487, to make the policy-only revision diff explicit. Prepared P1-P6/B1-B4: human one-way per-story import, human-set source-repo archive, DOCX current reader, scoped format map/archived non-canon reads, W7 conversion publication after W4b/approved PRD/10-27 and Jason first-real-book go. Q234 exact CSP, mos-1363 and S0 M1-M14 retained. W4 locator/extractor, shares and restore-fence blocks compare byte-identical to the approved baseline. Scope/source review ongoing; Mos impact map must be folded before Fenton handoff. No build/browser/worker run, code, queue, private-book or live action.
2026-10-23T01:37:07Z | Gyro Vikunja571 final impact-map / mos-1372/1375 fold | Prepared parent/W4 rewrite against brain-redux d183246 impact map at stack 062646487. P1-P6/B1-B4 and engineering Q1-Q16 are mapped to eleven briefs. D9 replaces the earlier private O2-only context/per-document/share model: normal Case 2 access in any authorized thread/room, supporting writes intact, changed policy awaits PRD 1.17 approval. New DOCX story creation has the same opening gate as human per-story import. Host-only push to human-set off-host remote replaces the no-remote ban; remoteURL defaults unset and same-host bare is disallowed. W7 gates on Hermes #423 step5, W4b, PRD approval, post-10-27 and first-real-book go; owns conversion events COUNTED/--events/pre-conversion restore reconciliation, manifest order/next_chapter, creative role cite wording, archive/old-path edits and format/link/citation routing. Store+off-host acknowledgment precedes archive commit/push, then catalogue publication; post-push failures remain resumable pending with pinned source. Current checks pass: complete brief fields, policy/map coverage, exact Q234 CSP, locator/projection mechanics byte-equivalent except explicit authority wording, A01-A35 IDs, immutable map pin, four-doc scope and append-only logs. W4 authority/remote/recovery sections reopened for Fenton; older APPROVE not reused. No product/build/browser/worker/private-book/queue/live action. Earlier entry describing preserved shares/fence applies only to the pre-D9 intermediate draft; D9 now withdraws those unimplemented structures.
2026-10-23T01:37:55Z | Gyro 571 push guard | identity gyro/purpose push: exit 0 documented degraded-pass CANNOT_ASSERT credential-unresolvable, scratch audit gyro-q195-ci-queue-audit.jsonl; no credential fallback or CI-green claim.
2026-10-23T01:41:59Z | Gyro sage-3121 A1-A3 PRD alignment | Before: 8d209016b adds a current Connections graph, excludes new Markdown stories in converted books and defaults archiveFolder. After: parent/W4 align with PRD1.17 d6 sha256 886b93c571f87bfbb2f27ee3113b6800a32d8f89196d95ace33566031bee380a: clickable editor links only; graph/tests later pending J-b; new different-path Markdown in a converted book remains canon until import, only recreated converted old paths are unmapped; archive folder is human-set in library mapping with no default, missing folder refuses conversion. Static A1-A3/11-brief checks pass; W4 locator/extractor/access/remote/recovery blocks unchanged. Local commit only, push held for Sage's named gap while Gizmoduck holds 270+271 run5. No product/build/browser/worker/queue/live action. Fenton gets local SHA through shared object store.
2026-10-23T01:49:08Z | Gyro fenton-0012 B1/B2 and N1-N6, mos-1379 | B1: off-host remote must deny the real shared jason.woltje seat-helper credential as well as seat identities until #431; private visibility/dummy-token denial is insufficient; W3b/A16/A26 require that future fixture proof. B2 follows mos-1379: human-only editor.agentReadComments and editor.agentReadTrackedDeletions both default false, comment/original/markup reads/resolves/index/context refuse when off; final access remains D9 and no role allowlist/per-document grant. N1 staging-ref allowlist and retained private refused/published audit refs; N2 URLs literal with fidelity-report loss and confirmation; N3 future paths marked new or predecessor row; N4 rename/sharing wording fixed; N5 historical thread text not refreshed; N6 protected VM1012 backup cited in P5. Static checks pass, locator JSON/package/projection mechanics retained. Local commit only; HTTPS push still held for Sage's named gap. No credentials tested/read/printed, no product/build/browser/worker/queue/live action. Fenton gets exact local SHA/blobs.
2026-10-23T01:53:25Z | Gyro fenton-0013 N7 mixed-format chapter order | Fenton approved local 0f4fa4f93. D10 now explicitly orders every chapter ID regardless of Markdown/DOCX format, inserts new canon Markdown by row216 or human committed order, and preserves ID/position at import. W7 tests cover mixed traversal/insertion/import stability. Static diff/append-only checks and docs hook pass. Local commit only, narrow re-check requested, HTTPS push still held for Sage gap. No runtime, queue or live change.
2026-10-23T02:21:06Z | Sage, rows 270+271 landing, 571 landing, MVP rows | Before: 270 (#1775) and 271 (#1776) were approved on gizmoduck/row270-271-r4 49cee846e and 2b964a082 after combined gate C2 run 5 GREEN on 53406f3e4 (bus 873, seat 202, cli 905, ten scripts, 38/38 mutants). After: 33 commits cherry-picked onto 767bb62c7 as 7328da8ca, range-diff all "=", 40 paths identical to the candidate; 270 manifest f4174458 matches, 271 manifest 3ab1f5c8 matches on 29 paths, the other 4 moved under 270 and match its manifest. Done revs 3396/3398, #1775 c30962 and #1776 c30964 closed, P19 463 c861. 571 (Gyro, Fenton APPROVE) picked as ee5f7b9ef, 6345aae3d, 767bb62c7 (blobs 9382f85b, 7ec0897b), 1ac76a417 left out; N7 911dad2aa (Fenton-0014) picked after. Rows 293-299 added (574, FED R6, R4, R7, GitHub grant, Q228, 573), queue commit 253346e3c. Correction: the push sync step checked out O..S paths over the canonical worktree without testing for uncommitted edits, so any pending SESSIONS or BUILD-LOG line in the canonical checkout at 02:06Z would have been overwritten; the sync now skips edited paths. Schema 3n is not live (LIVE 0cbe2e9b3 at 3m).
2026-10-23T03:59:52Z | Sage, row 293 (Vikunja 574) landing and 3m-3n live window | Before: live 0cbe2e9b3 at schema 3m; 574 approved by Filbert (c30982, cdda41f5) on gander/v574-r2 a9cae2bd6 after run 2 GREEN on 6bfab273b (four files 153/0, seat 202/0, cli 905/0, 312 flagged commits with 0 maintenance children). After: Darkwing's window put live on 464010fbe at 3n (activation 20261023T034557Z-464010fbe4c6, 26/97/5/28, Console 7332 200, W9b pm ra38826f3c6e2 left live, STATE darkwing/window-migrate-3n 8708927e5); 574's six commits cherry-picked onto 464010fbe as e51d11640, range-diff all =, patch-ids equal, only docs differ from a9cae2bd6. #1805 closed c31013, P19 386 c887 and 574 c888. Residual: queue store.mjs, discord git.mjs, harness tools.mjs commit without the maintenance flags; no whole-root test covers them yet.
2026-10-23T05:47:17Z | Sage, row 292 (#1797) landing, idle-stop race row 302, rows 300/301, row 294 rounds 2-3 | Before: refactor 4a9c536e8; 292's gate on 0d0021454 hit one red at compactions-launch.test.mjs:229, ['session-invalid',22,null] where ['stopped',0,null] was expected, product and test unchanged. Gizmoduck read it as a race: threadIdle releases the claim, then the launcher sends SIGTERM, and a runner call in between gets not-holder and exits 22. Mos (mos-1411) rejected loosening :229, let 292 count one whole unedited green cli rerun, and allowed one rerun for that exact signature on other gates until the race row lands (hits logged on Vikunja 588). The 10-run diagnostic passed 10/10, but one runner log (r846b8d083502) showed not-holder then exit 22. After: the cli rerun was 910/910. 292 LANDED 6aab979e6 05:18Z (7 cherry-picks, range-diff all =, patch-ids equal), done rev 3447, #1797 closed c31038, Vikunja 588 c891. Briefs 86d5ac69b (R6-N1 #1807, R6-N4 #1808, rows 300/301) and e3ef1eaf6/fdedc56e2 (race, #1809, row 302). Row 302 design d1/d2 approved by Dewey with D1 (role.claim refuses a released run), c31044. Mos ruled landRelease folded in, code launcher-released, and four old-test lines moved to exact values (mos-1414/1415/1416): threads.test:394, runner.test:771-772, land.test:464. Row 294 round 2 stopped at webui G5 granted-user.test:269: max(seq) over an empty events table is NULL. Round 3 is one line, coalesce(max(seq),0) (mos-1417), Duckworth APPROVE c31045 rev 3462, gate pending. Queue commit 756284e8e (revs 3448-3456). Correction: two review-request attempts this window ran without MOSAIC_GITEA_CREDENTIAL_FILE exported and failed (3450 Launchpad, 3451/3452 Sage); the posted request was 3453/3454.
2026-10-23T07:11:43Z | Sage, row 294 (#1800) rounds 3-4 and landing, row 219 edits 2-3, R9 transient and row 303 | Before: refactor 09d0d6faf; 294 run 3 on cb1648f3 stopped with 20 cli reds from two causes. A: the stack-release rehearsal fixture copies lacked cli access.mjs and transport.mjs, which 294's config.mjs now imports. B: the B1-B3 boot tests read warnings that now carry the fixture tracker line. Mos ruled A as two copy-list entries and B as a full pin, no filter: a TRACKER const and deepEqual (mos-1419). After: round 4 8616b9a4f, manifest a1ff5d67, Duckworth APPROVE c31053 rev 3469 with C1/C2. Run 4 from npm ci green: webui 365, cli 909, bus 873, 10 scripts, M1-M11 killed. Merged tree d3059c2c3 (11 cherry-picks, range-diff all =, patch-id 8371405a equal): stack-release-external 25/25, stack-upgrade 21/21. stack-release 223/224 on the first run, R9 at :2178: TypeError on join(r.dir) with r.dir null, so rehearse stopped before its directory and the output was lost. R9 passed 6/6 run alone on d3059c2c3, 09d0d6faf and 24b745447. Mos (mos-1422) allowed one unedited whole rerun: 224/224. 294 LANDED d3059c2c3 07:04Z, done rev 3471, #1800 closed c31068, P19 269 c895. Row 303 (#1810, Vikunja 589, brief ad6ca7930) adds an r.dir guard in R9 only. Queue commit 80793d824 (revs 3464-3473). Row 219: Rocko's second edit 7cbd839d0 (mos-1418, Dewey dewey-0883) restarted and went red at thread-launch C2-09a :489 on a legacy history path. The third edit 5f2ef92e5 (mos-1420, Dewey dewey-0885) reads the native session path. 219 now rebases onto 80793d824, because 294 overlaps its webui files. Correction: the first merged-tree check counted on the 292 drift and found an unrelated transient, and my P19 placeholder sed also rewrote the script's own guard line; the guard refused to post, and I restored the line before posting.
Row 299 (573, #1806, Gander, Filbert): before, the P10 band test timed a fault run minus a separate baseline run, and a loaded whole-suite run went red. Mos approved direct timing from host /proc/uptime stamps with ambient load only (mos-1409). After: rebased onto 80793d824 as ffa93b054 (range-diff 3/3 =, manifest 277ace0b unchanged). Gate 07:26Z-07:50Z: case1 whole 3x 53/0/0, cli whole 917/0/0 (59 files, load 1.54-7.17), P10 inner 2.27 s, outer 4.01 s, M1-M6 killed. M4's planned guard return then exact outer-reason failure counts as its kill (sage-3271, mos-1426). Filbert APPROVE c31084 rev 3485, N1 M1 margin 0.02 s. 299 LANDED ffb2fedfb 08:03Z, done rev 3487, #1806 closed c31087; queue commit 8a35ffadb (revs 3474-3487). Row 303: Duckworth APPROVE c31079 rev 3480 with C1, the whole-file gate. Rows 219 (bfa421b6c) and 295 r2 (b16cef1d0) rebases: Dewey static clean. Corrections: Launchpad and Gander have no token, and the CLI refuses another seat's token file, so I posted both requests as sage (c31082, c31083). My sage-3265 wording led Duckworth to poll queue show into Gander's slot (07:20Z-07:26Z); I ruled it ambient load (sage-3274).
2026-10-23T10:48:40Z | Sage, rows 302, 295 and 219 landings, the Docker pool diagnostic, rows for Vikunja 590 and 591 | Before: refactor 1ac655005. 302 (#1809, Gizmoduck, Dewey) LANDED 3ed9fd754 08:49Z: 7 commits onto 1ac655005, range-diff all =, tree = gated merge 783602e06; queue commit 07802dc57 (revs 3488-3494). Row 219's gate went 11/3 in test-release.sh: release activate's health check failed because Docker could not create sage-diag1437_default, since all predefined address pools were used up. Under mos-1437 I reproduced it on clean 07802dc57 (11/3, the same stderr). I then removed 18 unused gate _default networks, and the rerun went 14/0 with the run-task marker ok. Mos accepted the removal and ruled that a probe that can create something waits for the go and a removal waits for the report (mos-1438). 295 (#1801, Morgana, Dewey) round 2 gate on d68b4300d (manifest e94c9aeb) was green. It LANDED 2efd127ce 10:10Z: 9 commits onto 07802dc57, HEAD~1 tree = gated a86592ffc. Done rev 3502, #1801 c31105, P19 414 c911. 219 (#1720, Rocko, Dewey): the restart on the post-295 merge 054da642f (manifest 4a2271dd, my mos-1439 call) passed node 2523/0/2 and shells 449/0, with 24 mutants killed. It LANDED 5fdfd7275 10:40Z (8 row commits plus packet-only evidence, tree e86a84a85 = gated). Done rev 3509, #1720 c31110, P19 416 c913. Queue commit 90633c864 (revs 3495-3510). Brief docs/plans/2026-10-23_gate-env-rows.md names rows for 590 (claude-session slug) and 591 (compose network cleanup), and DEFERRED.md gets 219 N1 (U6). Row 272 (Huey) conflicts with 5fdfd7275 in code, so it moves back to in-progress for a rebase. Its new fallback is bounded to a session.list access-refused on an omitted-session route (sage-3357). Corrections: my network create probe ran before Mos's go, and the removal ran before the report. My first slot-order line put the diag start at 09:44Z; it was about 09:41Z. My 219 push piped its output through grep, but the after-fetch confirmed origin. Queue commit 90633c864 also carries Huey's rev 3510 (272 back to in-progress), and its message names only 3495-3509.
2026-10-23T11:03:46Z | Gyro Vikunja571 mos-1444 PRD d8 follow-on | Branch gyro/editor-571-d8 from origin/refactor c16e943b9. Both designs now keep library.convert outside ACTIONS/ROUTED and broker processing, retain REQ-WAIT-1/hard-wait test unchanged, constrain unmarked story eligibility to mapped book/playground scope, and add whole-host pre-import restore recovery from remote import manifests plus the Gitea archive commit. Lookups refuse until one current version is proven; VM1012 restore needs Jason present under Q185. W7 no longer owns hard-waits.test.mjs. Canonical queue next gyro returned nothing; direct Mos assignment governs. Static diff, exact replacement and append-only checks pass. No code, tests, build, browser, private-file or live action. Fenton re-check requested after authorized branch push.
2026-10-22 | Huey | Row 272 / 264e (#1777) preparation on huey/row272, base 2d0d407ba. Before: bus session metadata and launcher isolation exist, CLI/Console expose only the saved thread default. Draft: session CLI, Console chooser with isolated drafts/cursors/receipts, metadata counts and safe-clear operation receipts against Gizmoduck's 0260 contracts; narrow deferred B6 reply fence. Tests authored, not run: Gander row 253 holds Sage's slot; no Node, claim, HTTPS git, push or live changes. This entry records preparation after the first draft, not a green acceptance result.
2026-10-22 | Huey | Row 272 draft, 264d additive contract gizmoduck-0272 (78e14352f). Added confirmed cancellation through the human channel, cancelled receipt retirement distinction, named refusals and routed-message cancellation output. Before: cancelled was not recognized as terminal; after: draft CLI stops polling and Console shows the before/after retirement outcome. Acceptance remains unverified: no Node/tests/claim/commit/push under Sage's gate. No runtime/lifecycle authority expanded.
2026-10-23 | Huey | Row 272 / 264e sage-3141 local rebase. Before: uncommitted draft on 2d0d407ba. After: same draft on new huey/row272-b23783f39 at b23783f39, with 270/271 landed (7328da8ca) and schema 3n. Product changes auto-merged; both append-only logs retain the full new base and original Huey additions. Checked landed session.list and clear/cancel/operation envelopes against the wired draft: no incompatible contract change. Historical unavailable-dependency cases stay as stand-ins; actual base supplies counters and lifecycle state. No tests/Node/claim/commit/push while Gander holds row 574 run 2. Existing-test fixture/assertion delta is named in the packet for Mos's ruling via Sage before execution.
2026-10-23 | Huey | Row 272 sage-3145 preservation correction. refs/stash is shared, so it was unsafe as sole draft storage. Pinned exact stash commit 07dc9d2f7944b4781b5e80dfa18425f4749f7a45 to local huey/row272-stash-keep and left the entry untouched. Sage explicitly directed committing the rebased draft before testing to preserve it: an untested local checkpoint, no acceptance claim. No Node/test/queue/network/live action. Separate claims and test CLEARs remain pending; old-test delta is with Mos via sage-3144.
2026-10-23 | Huey | Row 272 early static review follow-up, scrooge-272-early-read-huey-1. Before: a bad-session 404 erased sibling draft/recovery caches, malformed clear/cancel write receipts omitted the audit line, and another session's op key produced an ambiguous error. Draft after: purge only on named thread-level refusals, write one redacted malformed-receipt audit line, and identify key reuse without a write. New browser/HTTP/CLI tests authored, unrun under test hold; approved old-test hunks unchanged. Published 850b22680/round-1 manifest unchanged; follow-up is uncommitted, no acceptance claim.
2026-10-23 | Huey | Row 272 round 2 on row 219 landing 5fdfd7275, after 295. Replayed round 1 and B1/N1/N2; seven conflicts resolved retaining both log histories, both test sets, 219 instance chooser and 295 owner-settings-only transport. Static comparison confirms old tests differ only by mos-1388 approved hunks. Sage3357/Mos1442 authorize bounded granted-user legacy fallback: only session.list access-refused and omitted-session route; no new session grants or owner routing. RED first under3358 on new file only: 1 expected legacy assertion failure, 3 guards pass, 3.504s, TMPDIR mktemp/no underscore, no compose network; slot returned as huey0035. Then implemented fallback and added timeout/bus/malformed guards plus isolated-copy mutant runner, all unrun afterward. Candidate commit/push precedes Sage's full gate by3354; no green claim.
2026-10-23 | Huey | Row 272 round 3 per mos-1455 / sage-3435. Gate run 1 on b44332a93 RED: bus 891/0, business 231/0, CLI 940/1, plugins 110/1, webui 372/20; no mutants. Fixed only new CLI fixture role authority and three null-old render guards. Catching browser tests unchanged. manifest.r3 freezes the same 17 paths. Authorized pre-gate follow-up commit/push; no local tests, Node or queue writes; separate compactions dependency and Sage gate remain pending.
2026-10-23 | Sage (1ef1e4f8) | Row 272 landing (#1777, 264e) | Gate r4 on bea0c8e1c over 1e629c892: bus 891/0, cli 941/0, webui 392/0, business 231/0; plugins 110/1, the single red being row 65 harness.test.mjs:192 naming compactions.mjs, which row 307 owned and fixed. M1-M6 and F1-F4 killed, restore clean. Landed d33989230, queue commit 8dc132bec.
2026-10-23 | Sage (1ef1e4f8) | Row 307 landing (#1814, Vikunja 598) | Six first-parent commits replayed onto 8dc132bec with matching patch-ids, 16 paths equal to 6fdfe3790, manifest digest 17c9f8d9 rebuilt from git. Gate green 14:37:21Z: bus 891/0, cli 941/0, plugins 119/0, webui 392/0, business 231/0, every other package 0 failed 0 skipped, every scripts/test-*.sh passed (skips: test-queue canonical root, test-task live provider x2). M1-M4 killed, restore clean. Landed d243f6b25, DEFERRED 307 N1 0621c439e, queue commit fe4ee8c7b. Correction: my first note said Vikunja 598 done when I had only commented (951); Mos closed it (952).
+13
View File
@@ -27,6 +27,11 @@ not fleet seats. Keep changes in `/mnt/storage/src/mosaic-stack`; do not modify
| Gizmoduck | Federation design (#414) and builder of FED R1 | T3 session (Claude, Opus 5.5, thread 9312a896) | none, T3 only |
| Webby | Reviewer: Case 2 designs, rows 192 and 194 | T3 session (Claude, Opus 5.5, thread 03086006), started by Mos (mos-0981) | none, T3 only |
| Duckworth | Reviewer: federation designs, row 193 | T3 session (Claude, Opus 5.5, thread ffceafec), started by Mos (mos-0977) | none, T3 only |
| Della | Builder, email plan (Vikunja 460) and row 224 (C2-05b) | T3 session (Codex, gpt-6.1-sol, thread 66735a7f), started by Mos | none, T3 only |
| Scrooge | Builder of row 252 and reviewer of row 272 | T3 session (Claude, Opus 5.5, thread 629b6cd3), started by Mos | none, T3 only |
| Huey | Builder, row 272 (T1 sessions) | T3 session (Codex, gpt-6.1-sol, thread cabd45ca), started by Mos | none, T3 only |
| Louie | Builder and research, editor evaluation and row 174 | T3 session (Codex, gpt-6-luna, thread bfd13d49), started by Mos | none, T3 only |
| Ludwig | Builder and reviewer, post-v1 email PRD and row 258 (E01) | T3 session (Claude, Opus 5.5, thread 8615b2a6), started by Mos | none, T3 only |
| Sage | Project lead: coordination, review, integration; earlier DYOR strategy records retained | T3 session (Claude Code); Pi launcher `zai/glm-5.3:high` retained | `agents/sage/launch.sh` |
Each script supports `--check` and `--fresh`. Normal launches resume the agent's
@@ -42,6 +47,14 @@ its launch configuration remains fixed, including on resume. Use Filbert's
wrapper to select that configuration; a direct shared-helper invocation uses
its own supplied flags or the system defaults.
Any run that includes the webui suite, whether a seat's slot run or a landing
gate, sets `MOSAIC_REQUIRE_EDITOR_BUILD=1`, so a missing editor toolchain fails
the run instead of skipping the rebuild test. A worktree that links the
canonical `node_modules` also runs `npm ci --ignore-scripts --no-audit --no-fund`
in its own `packages/webui` first. The root install carries esbuild 0.28.1
through pi-coding-agent, and the rebuild needs the 0.28.2 that
`packages/webui/package-lock.json` pins (Vikunja 597, mos-1453).
All agents follow repository governance and current user direction. Team
leadership does not add deployment or push authority. Coordinate overlapping
work with Sage and preserve other sessions' changes.
+8
View File
@@ -0,0 +1,8 @@
# Della
Builder seat, Codex gpt-6.1-sol, started by Mos for the email plan (Vikunja 460). Owns row 224 (C2-05b) under Q220.
No launcher in this directory. The seat runs as a T3 thread (thread 66735a7f) and works in its own worktree. It has no
credentials of its own; it pushes only its own `della/*` branches through the repository credential helper (mos-0981),
never `refactor`, `main` or another seat's branch. Registered by Sage on 2026-10-22 so the queue can name the seat as
row owner under Q220 (mos-1301).
@@ -0,0 +1,7 @@
{
"base": "01983cd3f",
"test": "packages/cli/tests/stack-release.test.mjs",
"base_is_byte_exact_prefix": true,
"old_assertions_changed": 0,
"old_console_refusal_text_unchanged": true
}
@@ -0,0 +1,48 @@
# Target config validation for every key implementation plan
Goal: #1797, mos-1353, brief f0e3dcdf4:docs/plans/2026-10-22_config-checks-any-key-brief.md. Base01983cd3f, branchgander/config-checks-any-key. Reviewer Duckworth. Queue number pending Sage; packet moves to queue-N when assigned. No Node, test or push before Sage gap/CLEAR. Rows270/271/203 land first; rebase under a new branch name before the gate.
Architecture: config_checks classifies missing/parseable/unreadable config independently of console presence. With a loader, every existing parseable config goes through the target's own validate. Missing config passes. Malformed JSON refuses. With no loader, allow only the oldest four top-level keys: configVersion, environment, dataRoot, execution. Evidence: c3d29e796:scripts/mosaic-config.mjs:114, the first loader commit, rejectUnknownKeys; row200 fixture's LOADER_OLD has the same list. A missing loader plus a later key refuses and names that key, without inventing validation support. The legacy public refusal code config-console-key and existing console-specific message stay byte-identical; new non-console refusals name the loader's first diagnostic and preserve restore-config-backup instruction. The target loader's resolved stdout is discarded. Its first stderr diagnostic is reported and may echo an invalid value.
Files: scripts/stack-release.sh config_checks/comment only; packages/cli/tests/stack-release.test.mjs appended regression coverage only; docs/TOOLS.md broadens the current console-only release-check description. Existing row200 tests and assertions stay unchanged. No fixture-module edit, flags, pointers, migration, schema, data, live unit or host change.
Tests to write before implementation, unrun until CLEAR:
- A target loader rejecting a non-console key refuses activate and rollback before any unit stop/start, pointer/unit/store mutation; one refused log entry; --plan preserves state and lists refusal. Reuse refused() and planOnly(). Use execution, already known to the current loader, to prove console-free dispatch before row270 integration; add compactionReadBytes/compactionStreams cases on final post270 base if needed.
- An accepting target loader is actually called with validate and the selected MOSAIC_CONFIG, succeeds activate/rollback without console, and resolved stdout is not leaked.
- Missing-loader target permits oldest-key config but rejects a later key with backup instruction. A stand-in rejecting the existing execution key exercises the generic target-validation branch; missing-loader later-key test may use console until final post270 base supplies non-console new keys.
- Missing file passes the isolated real config_checks function; malformed JSON refuses there, since load_config otherwise exits before this function. Tests extract only that function and provide copies/path/check_refuse stand-ins, never live state.
- Existing console-key row200 tests and malformed-load test run whole unchanged.
Mutants, each unique target, syntax preflight and byte-identical restore:
M1 restores the console-only skip, killed by the named non-console activate/rollback refusal test.
M2 ignores failed target validation, killed by the same refusal assertions.
M3 allows a missing-loader target with a later key, killed by the explicit missing-loader regression.
M4 treats malformed JSON as absence, killed by isolated parse guard test.
M5 skips the loader for an oldest-key config, killed by accepting-loader invocation witness.
Gate after static review and required rebases: intended RED/GREEN; touched stack-release.test.mjs whole, CLI suite whole and every scripts/test-*.sh whole; M1-M5 with fresh passing controls, no timeout counted as kill, restored bytes/status before next. TMPDIR mktemp-d /mnt/storage/scratch/tmp/gXXX; pipefail/tee and busy check before each start. Node timeout-k10 uses at least3x measured duration plus margin; stack-release prior full receipt around584s implies at least1871s, to be recorded from actual receipts before CLEAR. Shell3x table retained with receipts. No test ran and no behavior passes claimed.
Review focus: parser races after load_config; target stderr naming only the refused key, stdout never persisted; current versus target loader selection; unknown key with no console; missing loader compatibility set from immutable history; upcoming row270 loader-list fixture drift. Final integration audits every test dependency and hash pin against the named base. Session registration remains Sage's.
Implementation ready, unrun. Four appended tests cover full activate/rollback refusal and plan; actual accepting validate witness/configpath and stdout nonleak; oldest-only missing loader with both compaction keys; missing/invalid JSON isolated realfunction. Stand-in loaders are ESM, matching .mjs. Every old test byte is preserved as a prefix. Existing console refusal text including missing-loader diagnostic is unchanged. Missing-loader compatibility is top-level key compatibility only; current load_config still validates the whole config before normal release operations. Three-path manifest, no fixture-module changes. Static target uniqueness M1-M5 passes. No Node parse, Bash execution or behavior run. Exact full compaction activate/rollback cases must be added against post270 loader, before final gate.
Execution state:
- [x] Read brief, config_checks and row200 assertions.
- [x] Pin oldest key set from immutable loader history.
- [x] Write regression tests, implement bounded scope, prepare unique mutants.
- [ ] Duckworth static review.
- [ ] Move packet to queue-N on assignment, rebase after270/271/203 and add full compaction-key cases.
- [ ] On CLEAR run intendedRED/GREEN, touched whole file, CLI whole, M1-M5, ten shells; commit/push records only when authorized.
## Duckworth0229 static approval, gate conditions
Source0585b3213, packet e7371025f, manifestd6226d28 approved by static read, note a5a717391:agents/duckworth/work/row1797/ROUND1-0585b3213.md. No runtime proof yet.
C1: after270/271/203 land, rebase under a new branch name and open a new static round. Add exact compactionReadBytes and compactionStreams full activate/rollback refusals. The existing LOADER_OLD uses the current loader plus concat after270, so it is not a pre270 witness; the new test requires its own pre270 stand-in. Reviewer checks the integrated manifest/test before CLEAR. N3 joins that delta: compactionStreams fixture value1024, matching the real type, instead of ['messages'].
C2: every existing B/C1/C release now validates its copied real loader, including external/upgrade suites. Any old CLI red is a change-related suspect and goes to Mos/Sage under mos-1272; no automatic placement as an unrelated fixture.
N1 console plus another refused key retains the old console text by design. N2 missing-loader wording is retained pending final integration review. N4 corrected above: only resolved stdout is suppressed; first stderr may echo a value, so no blanket secrecy claim. No runtime/Node/queue/push authorization is inferred from static approval.
@@ -0,0 +1,3 @@
eea06caad07c746d194f793603052b210e437b7184009f8b1617c88db49a5517 docs/TOOLS.md
a35c49c5703e02f35073450e4a98e1b90cffcda581490f97a70cbdc6d2afee59 packages/cli/tests/stack-release.test.mjs
f8fe1348796d40a096362fb0c6d5072c15ca68ff8fe10384a3eaa708eb92c150 scripts/stack-release.sh
@@ -0,0 +1,9 @@
{
"reviewer": "duckworth",
"verdict": "static approve, conditions C1-C2",
"message": "duckworth-0229",
"source": "0585b3213",
"manifest": "d6226d28",
"note": "a5a717391:agents/duckworth/work/row1797/ROUND1-0585b3213.md",
"next": "wait for row number and post270/271/203 base, new integration static round before gate"
}
@@ -0,0 +1,5 @@
{
"docs/TOOLS.md": "eea06caad07c746d194f793603052b210e437b7184009f8b1617c88db49a5517",
"packages/cli/tests/stack-release.test.mjs": "a35c49c5703e02f35073450e4a98e1b90cffcda581490f97a70cbdc6d2afee59",
"scripts/stack-release.sh": "f8fe1348796d40a096362fb0c6d5072c15ca68ff8fe10384a3eaa708eb92c150"
}
@@ -0,0 +1,14 @@
{
"issue": 1797,
"row": "pending Sage assignment",
"branch": "gander/config-checks-any-key",
"base": "01983cd3f",
"source": "0585b321309e4d8a199afb1a1024cf6091f56770",
"manifest": "d6226d281c778677a45e90993bbd9c985de89ba0f870d4a3ca12b6923a497e4a",
"runtime": "NOT RUN; no Node, tests or push authorized",
"after": [
270,
271,
203
]
}
@@ -0,0 +1,32 @@
[
{
"id": "M1",
"occurrences": 1,
"before": "f8fe1348796d40a096362fb0c6d5072c15ca68ff8fe10384a3eaa708eb92c150",
"after": "804a86442527f2728f633f485eaeca02552df66a34350eac5101127046415188"
},
{
"id": "M2",
"occurrences": 1,
"before": "f8fe1348796d40a096362fb0c6d5072c15ca68ff8fe10384a3eaa708eb92c150",
"after": "1c2acb6397e29ab898d8a89bc5bc691a294be749ca7d7f7897c83ec1b3e9f9ef"
},
{
"id": "M3",
"occurrences": 1,
"before": "f8fe1348796d40a096362fb0c6d5072c15ca68ff8fe10384a3eaa708eb92c150",
"after": "954c9a9735904e1c566d844001b2e85c13cd16eb16e7b4b91b752974bb6dc754"
},
{
"id": "M4",
"occurrences": 1,
"before": "f8fe1348796d40a096362fb0c6d5072c15ca68ff8fe10384a3eaa708eb92c150",
"after": "953d91bf28073b11e4bc5a6da516a0db1b8dfff892083cd3e6fcebe9c47b6bbf"
},
{
"id": "M5",
"occurrences": 1,
"before": "f8fe1348796d40a096362fb0c6d5072c15ca68ff8fe10384a3eaa708eb92c150",
"after": "310c32b16f0fc554d5a7ffeeb0742ea7dd9fc84e1ddafabb25d7ca3f449865ef"
}
]
@@ -0,0 +1,37 @@
[
{
"id": "M1",
"file": "scripts/stack-release.sh",
"old": " [ \"$key\" != 1 ] || return 0\n if [ \"$key\" != 0 ]; then",
"new": " [ \"$key\" != 1 ] || return 0\n [ \"$extra\" = '\"console\"' ] || return 0\n if [ \"$key\" != 0 ]; then",
"killer": "config-any-key: a non-console target refusal"
},
{
"id": "M2",
"file": "scripts/stack-release.sh",
"old": "elif out=\"$(MOSAIC_CONFIG=\"$cfg\" node \"$loader\" validate 2>&1 >/dev/null)\"; then return 0",
"new": "elif out=\"$(MOSAIC_CONFIG=\"$cfg\" node \"$loader\" validate 2>&1 >/dev/null)\" || true; then return 0",
"killer": "config-any-key: a non-console target refusal"
},
{
"id": "M3",
"file": "scripts/stack-release.sh",
"old": " [ -n \"$extra\" ] || return 0",
"new": " return 0 # drop missing-loader later-key refusal",
"killer": "config-any-key: missing-loader copies"
},
{
"id": "M4",
"file": "scripts/stack-release.sh",
"old": " if [ \"$key\" != 0 ]; then\n check_refuse config-console-key",
"new": " if [ \"$key\" = 99 ]; then\n check_refuse config-console-key",
"killer": "config-any-key: missing config passes but malformed JSON refuses"
},
{
"id": "M5",
"file": "scripts/stack-release.sh",
"old": " if [ ! -f \"$loader\" ]; then",
"new": " [ -n \"$extra\" ] || return 0\n if [ ! -f \"$loader\" ]; then",
"killer": "config-any-key: accepting loaders run validate"
}
]
@@ -0,0 +1,24 @@
{
"base": "48e450ce8",
"removed_assertions": [
" assert.deepEqual([...new Set(cmds)].sort(), [CLI, PRECHECK, CLAUDE, NODE].sort());"
],
"authority": "mos-1326",
"all_other_original_assertion_lines_preserved": true,
"command_level_talk_and_precheck_checks_unchanged": true,
"mos_1350": {
"authority": "mos-1350",
"file": "packages/cli/tests/case1-accept.test.mjs",
"shape": "b: same fixture host and mode healthy baseline before fault",
"old_timing_assertions": [
" if(fault==='inner')assert.ok(seconds<4,`${mode}: ${seconds}s includes functional checks`);",
" assert.ok(seconds>=4&&seconds<6,`${mode}: ${seconds}s; 2s functional-check slack`);"
],
"new_timing_assertions": [
" if(fault==='inner')assert.ok(probeSeconds>=1.25&&probeSeconds<2.75,`${mode}: probe ${probeSeconds}s after baseline ${baselineSeconds}s`);",
" assert.ok(probeSeconds>=3.25&&probeSeconds<4.75,`${mode}: probe ${probeSeconds}s after baseline ${baselineSeconds}s`);"
],
"reason_residual_cleanup_assertions_unchanged": true,
"mutant_timing_dependencies": "Static inspection of row276 M1-M17 and historical row253 M1-M40: no target or named killer refers to either changed timing assertion. Row276 M11 names overflow, whose assertions and baseline-free behavior are unchanged."
}
}
+148
View File
@@ -0,0 +1,148 @@
# Row276 build, gate pending
Base48e450ce8, branchgander/row276. Claim rev3255, gander-276-start-1. Brief b0d0b7f76; Mos1324 starts build, Sage2893 approves plan and authorizes local commits. Duckworth0182 B1 corrected the exit-status plan before product code;0183 approves that correction with C1-C4. PLAN.md records decisions. No runtime/Node check has run.
All5legacy calls use legacy_run: talk320/330 with unchanged conversation300 and concurrent F5 scan; precheck200/210 preserves its existing180s Claude probe; versions5/7; PM list10/12. Both scripts keep the exact old supervisor payload. Case2 code changes only its setuid-member header. Header N2 names inner-cleanup refusal for a uid-changing unkillable member. Root capture/tools N1 counterparts are M10/M11.
Supervisor0 is the sole pass authority. The dropped-uid builtin-only Node runner exits its original command status. Supervisor87 stays87; only its ffail display number may come from the strict final newline-terminated decimal1..255 trailer. A0trailer under87 gives display87, never exited0. Missing/bad256/999/leading-zero/sign/no-newline records also give87 and the fixed reason. Private display files live in root's mktemp WORK directory, explicitly0700, never in user data. Root reads at most65536stderr bytes using a validated system tail. NODE is invoked only after uid drop; ownership fence means non-user-writable, not non-executable by the user. Test stand-ins retain0755.
F3/F4 retain the old displayed code and failure strings. F4's stripped stderr follows its stdout when merged; its precheck contract is whole-check success/failure plus last diagnostic, and no existing test asserts interleaving. F6/F7/F10 now require supervisor0 before interpreting stdout, intentionally tightening their old pipeline behavior. Existing content/refusal assertions remain. The one existing wiring assertion now requires five supervised Bash launcher calls plus the two isolated metadata/probe calls; direct talk/precheck argv assertions remain unchanged.
Tests are written before source, but intentionally unrun because Sage holds all execution until CLEAR. New tests cover each call under exec/hop, exact inner reasons/no-leftovers, stalled outer reason with explicit R3 fixture cleanup, streams, child statuses1/7/81/137, forged trailers before/after actual status, grammar edge refusals, bounded stderr and stdout that looks successful under supervisor failure. Existing case1/case2 whole files are the gate scope because they import the shared fake module. No actual sudo, host or live service is used. Static SUPERVISOR-SHAS and UNIQUENESS verify bytes/targets. Bash-n on source and15variants passes; Node parse/behavior remains pending.
Gate request: intended RED/GREEN against old script; case1-accept.test.mjs andcase2-unit.test.mjs whole under timeout-k10 900 initially; M1-M15 with passing fresh controls, exact restores and no timeout counted as kill; all10scripts/test-*.sh whole under SHELL-LIMITS.json, based on the longest retained row253/196/278 receipts (ceil3x+120). Busy check before every file. TMPDIR from mktemp-d /mnt/storage/scratch/tmp/gXXX. First unexpected failure/survivor/timeout stops for Sage/Mos. Report named skips,timing,full counts and cwd sweep. No passing claim until that gate.
Manifest excludes BUILD-LOG for a doc-only append if Sage needs it. DEFERRED's conditional closure lists F5,N1,N2 individually; R3 and532 remain. No new dependency installation, live state, credentials, ports or units touched. Push waits for a Sage gap. No queue writes after claim.
## mos-1326 wiring assertion authorization
packages/cli/tests/case1-accept.test.mjs:726. The old direct-command shape cannot express the required supervisor. All other old assertion lines are byte-identical, including command-level talk and precheck argv checks. ASSERTION-PRESERVATION.json records the exact static comparison. Structured sudo-argv.jsonl records every argv element before fake path translation. The replacement compares full arrays, never a substring. Its only variable text is the random message marker, separately pinned by the unchanged original talk assertion. Both supervisor bytes and literal bounds are pinned.
Old:
```js
assert.deepEqual([...new Set(cmds)].sort(), [CLI, PRECHECK, CLAUDE, NODE].sort());
```
New:
```js
assert.equal(asMosaic.length,7,'two metadata/probe calls and five legacy calls');
assert.deepEqual([...new Set(cmds)].sort(), ['/usr/bin/bash']);
// mos-1326: assert every argv element, not flattened/substr command detection.
const source=read(SCRIPT);
const supervisor=source.split("<<'MOSAIC_TESTER_SUPERVISOR'")[1].split('\n').slice(1).join('\n').split('\nMOSAIC_TESTER_SUPERVISOR')[0]+'\n';
assert.equal(createHash('sha256').update(supervisor).digest('hex'),'17b881513c35107e26f78c3722bc4a2927d206b197597be0bdbb2c8a8588bb4c');
const runner=/LEGACY_COMMAND_RUNNER='([\s\S]*?)'\nlegacy_display_rc/.exec(source)[1];
const f7=/F7_JS='([\s\S]*?)';\ncheck_f7/.exec(source)[1];
const raw=read(join(h.hc,'sudo-argv.jsonl')).trim().split('\n').map(line=>JSON.parse(line));
const legacy=raw.filter(a=>a[0]==='-u'&&a[1]==='mosaic'&&a[4].startsWith('PATH='));
const marker=legacy[0][20].split(':')[0];
const argv=(tag,inner,command)=>['-u','mosaic','-H','env',`PATH=/opt/mosaic-stack/node-${NODE_PIN}/bin:/usr/local/bin:/usr/bin:/bin`,
'/usr/bin/bash','-c',supervisor,'--',String(inner),'/usr/bin/setsid','/usr/bin/sleep',NODE,'-e',runner,'--',tag,...command];
assert.deepEqual(legacy,[
argv('talk',320,[CLI,'talk','chief',marker+': this is the Case 1 acceptance; reply with one short line.','--business','mosaic-stack','--tester','--wait','300']),
argv('precheck',200,[PRECHECK,'--business','mosaic-stack','--profile','factory']),
argv('claude-version',5,[CLAUDE,'--version']),
argv('pm-list',10,[NODE,'-e',f7,'--',`${HOME}/.config/mosaic-dev/businesses/mosaic-stack.json`,CLI,'mosaic-stack']),
argv('node-version',5,[NODE,'--version']),
]);
```
The existing target-uid config query already requires executing this same NODE before any F check, so a root-only executable mode that prevents the dropped uid running it fails preflight. No new root NODE execution is introduced.
## Static review0186 and upstream drift
Duckworth0186 statically approves164e16647/6887825e4, subject to green gate and log review. N1: M2 is the stand-in for the brief's diagnostic outer-bound mutant. It removes the shared legacy_run outer timer; its named killer runs only the precheck diagnostic in exec/hop with an independently guarded stalled supervisor, exact outer-timeout reason and bounded return. The fixed per-call production budget is also pinned by the inventory assertion. Keep the accepted M1-M15 scope. N2: M5 must die at the streams test because the wiring test reads runner text from source. N3: stderr disk growth retains the old talk.err risk; only root's tail read is bounded, with no new cap claim.
Sage2898 publication: original branch6887825e4 pushed after range check. Drift48e450ce8..94c33a43c on five manifest paths is only31added DEFERRED lines, inserted into its gaps section; no deletion or source/test drift. UPSTREAM-DRIFT.diff/json retain it. Final integration must keep those entries and row276's appended closure; no integration or manifest rewrite has happened yet. No tests or Node ran.
## sage-2964 final integration and gate grant
Rebased05af615fb onto0cbe2e9b3 as gander/row276-0cbe, clean, no conflict. Four source/test blobs identical to164e16647; DEFERRED preserves full new base plus closure. integration-0cbe/DRIFT.json records every upstream changed path and transitive import overlap. Helpers import Broker/Store, so schema3m and its migrations are checked on import; sandbox bind test reads new sandbox.mjs and copies runner files including broker. Neither case test nor case script uses schema step counts or COUNTED/restore guard lists; stack-release appears only in a comment. Ten shells run on this base. No test carried; claim3255 stands. Gate under sage-2964 uses this committed integration and regenerated manifest 4dab70cd251f5ae170856482bde923157ee667d342cd8ea412d242f707307303. Runtime pending.
## Run1 first new-test setup red, placed under sage-2964/mos-1272
New helper calls read(), absent from the original test file. Both old-script intendedRED and focusedGREEN hit ReferenceError before any product call; intendedRED is invalid, focusedGREEN is first unexpected new-test red. No old assertion ran. Fix is one alias near the existing test helpers, readFileSync(file,"utf8"), with no assertion or product change. Sourcec2b39b5d4. Run1 void, no results carry, run2 starts from top; RED harness now checks expected missing-block assertion. New manifestee573455115fa148981dcbd097058b7071d17baba18137945f4f2191ea5f1b11. Any subsequent unexpected red goes to Mos before change.
## Run2 stop, second unexpected red
Syntax2/0. Intended RED is the expected missing-block assertion with byte-identical restore. Focused GREEN0/1: an existing supervisor vanished-/proc diagnostic precedes the expected inner-timeout line, failing exact stderr at test789. No timeout, no whole files, mutants or shells. gander-0140 reports unplaced to Mos, Sage and Duckworth. Slot returned. No code or assertion change; await Mos before repair. run2/STOP.md and raw logs retain evidence. Sweep0 run leftovers,9 pre-existing infrastructure processes separately recorded.
## mos-1337 N5 repair for run2 base red
Mos places the red in row253 base. Sourcec72cdc02f swaps stderr redirection before the stat open in both scripts and changes nothing else in the supervisor. Both copies stay byte-identical; row276 heredoc pin is now34063098d7edb9067c11456165dc7535bc0e779d053c43599884d6b614528639. The exact inner-timeout stderr assertion stays unchanged. New deterministic test extracts stat_fields from each script, uses absent PID2147483647, and requires status3 plus empty stdout/stderr. M16 restores old ordering in both files, killed by that test; one-copy drift remains covered by unchanged case2-unit.test.mjs byte equality. Driver now accepts also_files, checks each unique target and restores/checks all bytes in finally. M1-M15 unchanged. DEFERRED names the separate cmdline read at case1:413; it remains out of scope. No runtime, node or rerun before review and CLEAR. Fresh whole gate on this candidate, M1-M16, both touched files and ten shells, nothing carried.
## Run3 stopped under sage-2988
HEAD804a854dc, manifest214aeb9e. Syntax2/0, valid intendedRED, focusedGREEN1/0. Whole case1 file46/3/0 in225.790s: wiring F7 extraction null at734, new precheck hop timing4.5403s at827, new version/PM extraction at848. Vanished-pid regression passed; no timeout. No case2, mutants or shells started. No source/assertion change after stop. gander-0146 sends unplaced to Mos/Sage/Duckworth, slot returned. run3 holds raw evidence/counts/sweep0;9 pre-existing infrastructure excluded. No results carried.
## mos-1345 run3 placement and stdout spool
Mos places the outer-bound red as a row276 product defect: the outer timer fires82, but a stalled setsid residual holds the caller stdout pipe until the fixture guard. legacy_run now mktemps a stdout spool under private WORK and opens it in root's wrapper before exec sudo. Both errors and output are regular files; the same EXIT trap unlinks them. Root snapshots stdout length with wc -c and copies exactly that size with validated TS_HEAD, only on0 or valid87. Other supervision refusals discard stdout. Published stdout precedes stripped stderr. No cap is added; the R3 residual may grow unlinked spool files and is named in DEFERRED. No cross-session kill. Supervisor heredoc and34063098 pin are unchanged.
Five callers, locations at804a854dc:497 talk redirects stdout to WORK/talk.out while F5 scans and reads only after wait;519 precheck merges the wrapper's stdout then stderr in command substitution for its last diagnostic;528 Claude version captures stdout and private stderr separately;550 PM list captures stdout and private stderr;593 Node version does the same. All four substitutions must get EOF without residual help. F3/F4 existing diagnostic strings stay, and the3s hop regression stays exact.
Row-owned extraction fixes:734 F7 delimiter removes the nonexistent semicolon;847 uses the shell '# The PM check' marker. Existing full argv and FAIL assertions remain exact. New real legacyCall bytes test checks no-terminal-newline stdout exactly on0 and87 in exec/hop, and suppresses a nonempty stalled stdout payload on82 with explicit residual cleanup. M17 restores inherited stdout, killed by the unchanged precheck hop under3s assertion. M1-M16 definitions unchanged. No repair runtime, Node or push before delta review/gap. Whole gate fresh, no carried results; any red goes to Mos.
## sage-3004 run4 limits, recorded before launch
Candidatef3a55ddf7, manifestd7466207. Fresh whole case1 then whole case2, M1-M17, ten shells; no carry and no push in slot. Both whole Node test files and each mutant killer use timeout -k 10 900 with outer930. Shell limits from unchanged SHELL-LIMITS.json (ceil3x maximum receipt +120):
- scripts/test-auth.sh: timeout -k 10 126; longest recorded 1.9081228229999543s, receipt 3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained).
- scripts/test-conductor.sh: timeout -k 10 145; longest recorded 8.057173820000026s, receipt 3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained).
- scripts/test-config.sh: timeout -k 10 130; longest recorded 3.1678915339999367s, receipt 3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained).
- scripts/test-discord.sh: timeout -k 10 147; longest recorded 8.776727847000002s, receipt 3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained).
- scripts/test-extension-package.sh: timeout -k 10 130; longest recorded 3.01285702399991s, receipt 3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained).
- scripts/test-foundation.sh: timeout -k 10 269; longest recorded 49.367s, receipt 3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained).
- scripts/test-land-work.sh: timeout -k 10 171; longest recorded 16.854s, receipt 3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained).
- scripts/test-queue.sh: timeout -k 10 226; longest recorded 35.155s, receipt 3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained).
- scripts/test-release.sh: timeout -k 10 157; longest recorded 12.168674453999964s, receipt 3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained).
- scripts/test-task.sh: timeout -k 10 231; longest recorded 36.783798266s, receipt 3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained).
Estimate12-18minutes. Any unexpected result follows sage-3004/mos-1272.
## Run4 old-test red and mos-1349 measurement
Whole case1:49/1/0,247.951s. Only old P10 inner timing fails exec4.19657134 against4s. All own new tests, wiring, exact bytes and outer<3 regression pass. Driver stops before case2/M1-M17/shells; no timeout. gander-0151 reports unplaced. Sage3007/Mos1349 measurements: five alternating804a/f3a scratch runs, no code edits,900s limits/freshTMPDIR, before3/2 after0/5. Test durations and only actually printed exec timers in run4/timing/NOTE.md. Passing per-mode numbers unavailable without editing; not invented. gander-0153 sends table to Mos/Sage/Duckworth for ruling before more work. Sweeps0 test leftovers; no push.
## mos-1350 old P10 timing correction, test-only
Choose shape(b): each inner/outer mode runs the same host once with no fault and checks baseline status0, before installing the fault or starting its cleanup guard. Subtract that fresh per-mode duration from the fault run. No constant functional cost is assumed. Overflow behavior is unchanged. Exact reason, no-observed, hop-residual and cleanup assertions remain byte-identical. Diagnostics print baseline/fault/net for each mode so the ten repeated runs can be checked.
Probe's configured timers are2s inner and4s outer. Use net windows[1.25,2.75) and[3.25,4.75), a0.75s margin around those timer costs and0.5s separation between inner top and outer floor. The baseline includes the healthy probe startup itself, so net values may sit slightly below the configured timer. Run4's failing whole costs4.0057..4.3695 and its healthy functional checks around2s show why the old whole-run heuristic is unsuitable; actual net values must be proved by10 isolated runs per test before run5. No timing proof is claimed yet. Bound widening on the whole run is not used.
ASSERTION-PRESERVATION.json records the two Mos-authorized old timing replacements. M1-M17 have no target or killer dependent on those lines; M11's old P10 overflow killer is unchanged. Historical row253 inner/outer mutants require fresh proof if used again, and none is carried or claimed in row276. Test-only commit changes no product script. No runtime or timing run until Sage returns the slot after271r3 and Duckworth approves.
## Duckworth0218 B1 and repeated-run condition
After every baseline status0, require pollFixtureGone(files) empty with exact baseline leaves no session assertion. Thus a baseline cannot supply outer-hop residual evidence. No pre-existing reason/residual/cleanup assertion changed. Case1 observed247.951s plus four estimated3s baselines gives259.951s; ceil3x+120=900s, so existing timeout-k10 900 still covers the extended whole file. Recheck after isolated timings before whole launch. Case2 unchanged900; shell3x table unchanged. Ten repetitions per fault must report min/max probeSeconds per mode. Any red or any value within0.25s of either accepted window edge stops for Mos, with no window tuning. Execution remains held for static approval and Sage CLEAR.
## sage-3023 isolated proof and pre-whole limits recheck
Twenty isolated test invocations pass,10 per fault,40 mode measurements. Net min/max inner-exec2.033094/2.171078, inner-hop2.054551/2.135443, outer-exec3.757506/3.960917, outer-hop3.736194/3.910606. Closest edge0.486194s, above0.25 stop threshold. Raw diagnostics in run5/proof; no window tuning. Max measured baseline2.119750332s; prior whole247.951 plus4x baseline gives256.430s; ceil3x+120=890s, existing900s retained. Case2/shell tables unchanged. Fresh whole stage follows with no results carried from any prior gate.
## Run5 GREEN, sage-3023
518pass/0fail/3named skips (93whole,425shell), proof20/0 with40mode timings,17/17 assertion kills,10passing controls,0timeouts/survivors,522.311s whole phase. Sweep0 with9pre-existing infrastructure excluded. N9 passes verbatim in RESULTS. Raw per-step/kill table in run5/SUMMARY.json. Manifest5 blobs unchanged; no result carried. Slot returned gander-0161. Review packet ready.
@@ -0,0 +1,7 @@
{
"docs/plans/DEFERRED.md": "9d40dfe1bc91f60cd9999b3224dcea5b44f46f79019678ec98c6987f815a5099",
"packages/cli/tests/case-sudo-fixture.mjs": "eac5c83f43056bdeb5781101307e17d4bc01f03e97e02f4f5e930436d7e43535",
"packages/cli/tests/case1-accept.test.mjs": "1e8af0656707d93dedade923bf60556022dc7121c43761876a5d7e02731c14aa",
"scripts/case1-accept.sh": "89b45bb84e8365f32f08fd055c7db8a0259533f23fe7ab03f484acb25bee92c2",
"scripts/case2-unit.sh": "f615d09cd0998bd3a109faff9a16a78ac3f414686300fadc282a7773ec08491a"
}
@@ -0,0 +1,40 @@
{
"whole_files": [
"packages/cli/tests/case1-accept.test.mjs",
"packages/cli/tests/case2-unit.test.mjs"
],
"shells": [
"scripts/test-auth.sh",
"scripts/test-conductor.sh",
"scripts/test-config.sh",
"scripts/test-discord.sh",
"scripts/test-extension-package.sh",
"scripts/test-foundation.sh",
"scripts/test-land-work.sh",
"scripts/test-queue.sh",
"scripts/test-release.sh",
"scripts/test-task.sh"
],
"mutants": [
"M1",
"M2",
"M3",
"M4",
"M5",
"M6",
"M7",
"M8",
"M9",
"M10",
"M11",
"M12",
"M13",
"M14",
"M15",
"M16",
"M17"
],
"red_pattern": "row276 talk legacy inner timeout",
"node_seconds": 900,
"estimate_minutes": "12-18; no row276 measured runtime yet"
}
+9
View File
@@ -0,0 +1,9 @@
# Row276 manifest, unrun candidate
Source 164e166479378caf0702ab8b1eb3871b54219da3, base48e450ce8, branchgander/row276. Five-path manifest digest b0fdd91183d7e1911ed327e32c03b8de7f0efd4c86bd143fa0ad54390358ee63. BUILD-LOG excluded for append-only doc sweep. SOURCE.json pins committed blobs; no Node or behavior run. Duckworth reviews candidate and15mutants (changes.json), including mos-1326 exact wiring and preserved old assertions. Gate scope and stop rules in BUILD.md; next publication waits for Sage gap.
sage-2901 integration onto94c33a43c: source6b898fab465c200db14313a49c07c06b5dff285d, newbranchgander/row276-94c3; manifest2af7e8bafcbf0bb977a26ab1f57371b8453c7a6659dc7233a68f186ef7b5d5f2. Only DEFERRED changes among prior manifest entries. Four source/test blobs identical to164e16647. integration-94c3/BLOB-PROOF.json and range-diff.txt retain evidence. No execution.
Current gated candidate4e76bd6fc, branchgander/row276-0cbe, base0cbe2e9b3. Five-path manifest8f30c19a530789df8b22a77bed24250a5ccd94f9eb0a38534f512d3dd0e82189. Run5 GREEN under sage-3023; RESULTS.md and run5/SUMMARY.json are the final evidence. Historical unrun entries above are superseded. BUILD-LOG remains excluded; Sage appends its phase tail separately.
@@ -0,0 +1,5 @@
9d40dfe1bc91f60cd9999b3224dcea5b44f46f79019678ec98c6987f815a5099 docs/plans/DEFERRED.md
eac5c83f43056bdeb5781101307e17d4bc01f03e97e02f4f5e930436d7e43535 packages/cli/tests/case-sudo-fixture.mjs
1e8af0656707d93dedade923bf60556022dc7121c43761876a5d7e02731c14aa packages/cli/tests/case1-accept.test.mjs
89b45bb84e8365f32f08fd055c7db8a0259533f23fe7ab03f484acb25bee92c2 scripts/case1-accept.sh
f615d09cd0998bd3a109faff9a16a78ac3f414686300fadc282a7773ec08491a scripts/case2-unit.sh
@@ -0,0 +1,9 @@
{
"base": "3c4c463da",
"source": "c72cdc02f",
"only_script_change": "single redirection order swap in each copy",
"existing_test_prefix_unchanged_except_authorized_pin": true,
"case2_test_unchanged": true,
"mutant": "M16 both-copy old-order restore",
"gate": "Pending static review and CLEAR; no runtime check"
}
@@ -0,0 +1,14 @@
[
{
"row": 253,
"count": 40,
"old_timing_targets": [],
"old_timing_killers": []
},
{
"row": 276,
"count": 17,
"old_timing_targets": [],
"old_timing_killers": []
}
]
+23
View File
@@ -0,0 +1,23 @@
# Supervised legacy Case calls implementation plan
Goal: finish row253 F5 on base48e450ce8, brief docs/plans/2026-10-22_case-sudo-legacy-followup.md (b0d0b7f76), row276/#1781. Reviewer Duckworth. No live host, units, config, ports or credentials. Tests and Node wait for Sage CLEAR; publication waits for a gap.
Architecture: keep TESTER_SUPERVISOR byte-identical in both scripts. A case1 legacy launcher uses the validated system Bash/setsid/sleep tools after sudo drops uid, with a separate trusted GNU-timeout outer bound and private notice channel. stdout stays streamed to the caller, stderr stays separate. No root import of copy code. All five original calls are covered; no exception remains.
Bounds (inner/outer seconds): talk320/330, with its unchanged --wait300 conversation and concurrent F5 scan; precheck200/210, preserving its existing timeout180 Claude probe; Claude version5/7; PM launches10/12; Node version5/7. Test extraction substitutes shorter bounds, with tests pinning the production values. Root stderr notice distinguishes outer-timeout from child137. Existing supervisor codes/reasons apply.
Exit-status compatibility (Duckworth0182 B1): the inline builtin-only Node runner exits with its command's own status. Supervisor0 is the only success authority. On87 (inner-command), root may parse a final stderr trailer only to save a display code for ffail text; legacy_run still returns87 even if that trailer says0. A missing/bad trailer gives display87 plus the fixed inner-command reason, never pass. All other supervisor reasons ignore the trailer. Root saves display-only status in a private WORK file so background talk/command substitutions can report original exit numbers without changing their pass condition. F3/F4 use that number only in existing failure text; no old assertion changes.
Trailer grammar: one last, newline-terminated line `MOSAIC_LEGACY_STATUS=<decimal>` with canonical decimal0..255 (0 or nonzero-leading up to3 digits). The runner writes it after command stderr and exits with the actual status. A child/escaped descendant may spoof display diagnostics, but can never change supervisor failure into success. Tests cover an earlier forged0 then actual7, an appended forged0 after a real7, malformed/missing records and statuses137/81.
Root bounds trailer processing to the last65536bytes through a root-validated system tail; oversized diagnostics are explicitly truncated. stdout remains streamed. stderr's retained tail is emitted without only the final valid trailer. On supervisor0 the trailer is ignored as status; on87 it can alter display only. F6/F7/F10 now check supervisor rc before considering stdout, while retaining their original successful output. They capture stderr privately; F4 merges emitted stdout and stripped stderr at its existing capture, so stderr is emitted after buffered capture. Talk keeps its two files. The NODE runner executes only after uid drop. Its existing F9 root-only path check means uid ownership/no group-or-other write, not owner-only execute; activation's executable mode remains required. Tests pin executable-as-user behavior.
Files: scripts/case1-accept.sh (launcher, five call sites, header); scripts/case2-unit.sh (setuid-member header note only); packages/cli/tests/case-sudo-fixture.mjs (fake-mode cases/seams); packages/cli/tests/case1-accept.test.mjs (per-call tests and extraction); docs/plans/DEFERRED.md (bounded closure when acceptance passes). Row276 packet keeps manifest, mutants and test scope. Existing assertions remain.
- [ ] Extend fake-only tests for all5 calls under exec and hop: healthy stdout/stderr and exit status, blocking descendants, PID/SID ownership, exact inner reason, no leftover; stalled supervisor outer reason and explicit fixture cleanup residual; status/trailer invalid refusal. Talk retains300s argv and separate diagnostics, background scan.
- [ ] Implement legacy launcher and five call sites; remove the remaining AS_USER array. Preserve all row253 supervisor bytes and root-only command fences.
- [ ] Add root-side capture/tools counterparts for case1 (row253 N1), header setuid-member inner-cleanup refusal (N2), and exact timeout-vs-child137 tests.
- [ ] Prepare mutants: drop talk supervision; drop outer bound on one diagnostic; bypass individual call, wrong/unchecked SID, trailer0 turns failed supervision into success, missing stream/display-code preservation; case1 tools/capture mutants. Unique target and byte-identical restore checks.
- [ ] Duckworth reads candidate/manifest/mutants. On Sage CLEAR, intended RED/GREEN, each touched test whole, all mutants with passing controls and no timeout counted as kill, ten whole shell suites under recorded3x bounds. Report counts,timing,skips,sweep; stop on unexpected red/survivor/timeout for ruling.
Review focus: instant command exit retains fail-closed inner-session residual532; hostile same-uid setsid-away or killed/stalled supervisor remains row253 R3, never claimed cleanup; a member changing uid yields inner-cleanup; no stdout is treated as authority; no outer-timeout parsed from caller stderr.
+56
View File
@@ -0,0 +1,56 @@
# Row276 run5: GREEN
Candidate4e76bd6fc, base0cbe2e9b3, manifest8f30c19a, grant sage-3023. No result from run1-run4 is carried. Isolated proof20/0,40 mode timings. Whole gate518/0/3. M1-M17 all killed at ERR_ASSERTION, with10 fresh passing controls, no timeout or survivor. Sweep0;9 pre-existing infrastructure excluded.
| File | Pass | Fail | Skip | Wall s |
|---|---:|---:|---:|---:|
|packages/cli/tests/case1-accept.test.mjs|50|0|0|237.717|
|packages/cli/tests/case2-unit.test.mjs|43|0|0|66.260|
|scripts/test-auth.sh|15|0|0|0.916|
|scripts/test-conductor.sh|17|0|0|6.428|
|scripts/test-config.sh|31|0|0|1.918|
|scripts/test-discord.sh|81|0|0|9.389|
|scripts/test-extension-package.sh|18|0|0|2.219|
|scripts/test-foundation.sh|44|0|0|44.611|
|scripts/test-land-work.sh|86|0|0|13.794|
|scripts/test-queue.sh|28|0|1|28.228|
|scripts/test-release.sh|14|0|0|3.121|
|scripts/test-task.sh|91|0|2|15.448|
Whole stage wall522.311s, including controls and mutations. Case1 237.717s, case2 66.260s, shells126.072s. Each Node test uses timeout-k10 900; shell command receipts show the unchanged mos-1275 table. No timeout fired.
| Mutant | Named killer | Base s | Changed s | Outcome |
|---|---|---:|---:|---|
|M1|row276 talk legacy inner timeout|1.868|2.269|assertion kill|
|M2|row276 precheck outer bound|2.369|4.724|assertion kill|
|M3|row276 talk legacy inner timeout|1.868|2.369|assertion kill|
|M4|row276 earlier forged trailer|0.665|0.415|assertion kill|
|M5|row276 legacy streams and display status|2.670|0.665|assertion kill|
|M6|row276 trailer grammar|2.168|0.665|assertion kill|
|M7|row276 trailer grammar|2.168|1.166|assertion kill|
|M8|row276 trailer grammar|2.168|1.918|assertion kill|
|M9|row276 legacy streams and display status|2.670|0.415|assertion kill|
|M10|row276 case1 capture and legacy tools|0.264|0.315|assertion kill|
|M11|row253 C4 acceptance query overflow|0.665|0.415|assertion kill|
|M12|row276 version and PM checks|0.214|0.214|assertion kill|
|M13|row276 version and PM checks|0.214|0.164|assertion kill|
|M14|row276 version and PM checks|0.214|0.214|assertion kill|
|M15|row276 stderr retention is bounded|0.465|0.465|assertion kill|
|M16|row276 vanished pid stat read|0.164|0.164|assertion kill|
|M17|row276 precheck outer bound|2.369|5.827|assertion kill|
M5 dies in streams/status assertion; M16 in vanished-PID empty-stderr assertion; M17 at the unchanged precheck hop<3 assertion (4.543492s). Driver finally restores every changed file byte-identically and compares tracked git status, including both files for M16. Final manifest5 paths match the gated commit.
Named skips, verbatim:
- scripts/test-queue.sh: `skip queue verify and render --check: this checkout (/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196) is not the queue's canonical root (/mnt/storage/src/mosaic-stack)`
- scripts/test-task.sh: `skip live provider cases (row 244: no provider call in the gate)`
- scripts/test-task.sh: `skip live provider cases (row 244: no provider call in the gate)`
N9 passed, no skip:
`ok 43 - inside a session's sandbox a bind below 1024 fails with EACCES, and a bind on a free high port succeeds`
Proof min/max seconds: inner exec2.033094..2.171078, hop2.054551..2.135443; outer exec3.757506..3.960917, hop3.736194..3.910606. Closest edge0.486194s. All baseline cleanup/reason/residual assertions pass. Raw results.json and logs in run5, proof/ and changes/. Summary computed from raw TAP/shell summaries, not guessed.
Slot returned in gander-0161. No live units, ports or host state changed. Publication and claimant review move use Sage3035 gap.
@@ -0,0 +1,132 @@
{
"authority": [
"mos-1275",
"sage-2659"
],
"scope": "Own Gander row196 receipt set documented for row278, plus the complete row278 run3 shell phase. Row253 old C4 results do not carry. Receipts choose timeouts only.",
"consulted_records": [
"ec1e7fad8:agents/gander/work/queue-196/evidence/suite-results-run1.json",
"ec1e7fad8:agents/gander/work/queue-196/evidence/suite-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r2/mutants/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r2/run2/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r2/run2/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r3/gate/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r3/gate/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r3/gate/sso-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/sso-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/whole-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r5/gate/whole-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r5/resume/summary.json",
"ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/first-attempt/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/summary.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"385a7194c:agents/gander/work/queue-278/run3/whole/results.json"
],
"scripts": {
"scripts/test-auth.sh": {
"recorded_duration_seconds": 1.9081228229999543,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 126,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "dd4720cb0cbecd2fc523a318f2222d21d257c8c5889996a3d69e522ee971a707",
"previous_maximum_seconds": 1.9081228229999543,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"row278_run3_seconds": 0.816
},
"scripts/test-conductor.sh": {
"recorded_duration_seconds": 8.057173820000026,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 145,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "da84150467494a4c979759f400854411bd93a7efce981139757bf526d688a23b",
"previous_maximum_seconds": 8.057173820000026,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"row278_run3_seconds": 6.078
},
"scripts/test-config.sh": {
"recorded_duration_seconds": 3.1678915339999367,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 130,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "3301c1fabf616bb961d62f6decd0a46dadb0f399b8ba7f3c2ca60023d2b24c78",
"previous_maximum_seconds": 3.1678915339999367,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"row278_run3_seconds": 1.868
},
"scripts/test-discord.sh": {
"recorded_duration_seconds": 8.776727847000002,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 147,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "a5dcf783c51a5d5d184a357f91ebf9fa1c4e054f0cb84a3d1d7668f6156e025e",
"previous_maximum_seconds": 8.776727847000002,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 7.431
},
"scripts/test-extension-package.sh": {
"recorded_duration_seconds": 3.01285702399991,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 130,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "5d7b687f16fd1a9414b229501177d530ba3af4eadd3cac319b33f38fdba9bf99",
"previous_maximum_seconds": 3.01285702399991,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 1.366
},
"scripts/test-foundation.sh": {
"recorded_duration_seconds": 49.367,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 269,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "2e11038e7f784ec4f539eb768f63bab0fab9c9940334388a1fe2d47ab9e2b008",
"previous_maximum_seconds": 39.70872647900006,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 39.901
},
"scripts/test-land-work.sh": {
"recorded_duration_seconds": 16.854,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 171,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "c9d1d5c9b006d5c12e5f796a9828361059f8e0410846fc55c070c0148b15cef4",
"previous_maximum_seconds": 12.623263413000037,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 11.338
},
"scripts/test-queue.sh": {
"recorded_duration_seconds": 35.155,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 226,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "c270f181d1fa8b6d42ff4131c339beba786a8fd620bb66f8afdcec05e8b10868",
"previous_maximum_seconds": 23.443742031000088,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 21.158
},
"scripts/test-release.sh": {
"recorded_duration_seconds": 12.168674453999964,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 157,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "be706dff832257bd4781abeabd19faa4ac16edf9a4af0c96457e33cf3bb6deb3",
"previous_maximum_seconds": 12.168674453999964,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 2.67
},
"scripts/test-task.sh": {
"recorded_duration_seconds": 36.783798266,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 231,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "10c4abb70bf9b83e617089b06a5436cc7fa6b866a176458b22128c3a15163f94",
"previous_maximum_seconds": 36.783798266,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 13.843
}
}
}
+21
View File
@@ -0,0 +1,21 @@
{
"source": "d7606c8c7b71368efcd7d73b2840c2d53677a6f9",
"base": "0cbe2e9b35e51fe06dedde69c022b46e040f98c0",
"branch": "gander/row276-0cbe",
"manifest": "8f30c19a530789df8b22a77bed24250a5ccd94f9eb0a38534f512d3dd0e82189",
"paths": {
"docs/plans/DEFERRED.md": "9d40dfe1bc91f60cd9999b3224dcea5b44f46f79019678ec98c6987f815a5099",
"packages/cli/tests/case-sudo-fixture.mjs": "eac5c83f43056bdeb5781101307e17d4bc01f03e97e02f4f5e930436d7e43535",
"packages/cli/tests/case1-accept.test.mjs": "1e8af0656707d93dedade923bf60556022dc7121c43761876a5d7e02731c14aa",
"scripts/case1-accept.sh": "89b45bb84e8365f32f08fd055c7db8a0259533f23fe7ab03f484acb25bee92c2",
"scripts/case2-unit.sh": "f615d09cd0998bd3a109faff9a16a78ac3f414686300fadc282a7773ec08491a"
},
"mutants": 17,
"tests": "Run5 GREEN:93/0 whole,425/0 shells with3named skips,proof20/0,17assertion kills; see RESULTS.md",
"static_checks": [
"git diff --check",
"both supervisor copies byte-identical except authorized delta from prior",
"unique mutant targets"
],
"original_source": "164e166479378caf0702ab8b1eb3871b54219da3"
}
@@ -0,0 +1,14 @@
{
"base": "0cbe2e9b3",
"bytes": 2860,
"sha256": "7561aa5c21409b716d65de036aba19b4c7180328424aae88e25e2891650a2627",
"both_scripts_byte_identical": true,
"base_byte_identical": false,
"authorized_delta": "mos-1337 N5: only move stderr redirect before stat open in both scripts",
"previous": {
"base": "48e450ce8",
"bytes": 2763,
"sha256": "c828087085a1dfdade55c0fb1083f9a2dff8d9b72885708186136497711c9bae",
"both_scripts_and_base_byte_identical": true
}
}
@@ -0,0 +1,128 @@
[
{
"id": "M1",
"file": "scripts/case1-accept.sh",
"occurrences": 1,
"before": "89b45bb84e8365f32f08fd055c7db8a0259533f23fe7ab03f484acb25bee92c2",
"after": "f7994147a5eefb924630063cb3bba17bd8ed0b65e7c24d913ee1580f4a9a0b47"
},
{
"id": "M2",
"file": "scripts/case1-accept.sh",
"occurrences": 1,
"before": "89b45bb84e8365f32f08fd055c7db8a0259533f23fe7ab03f484acb25bee92c2",
"after": "8a93c378b1f91238a32c885180e70d7d33b6201d9a2f63f8dea8e39ad577ad01"
},
{
"id": "M3",
"file": "scripts/case1-accept.sh",
"occurrences": 1,
"before": "89b45bb84e8365f32f08fd055c7db8a0259533f23fe7ab03f484acb25bee92c2",
"after": "d3dadb97ca9a1ee26b92af01bd7451804e9b80346bf0673cf63dbad7e7bb5e78"
},
{
"id": "M4",
"file": "scripts/case1-accept.sh",
"occurrences": 1,
"before": "89b45bb84e8365f32f08fd055c7db8a0259533f23fe7ab03f484acb25bee92c2",
"after": "d6754f354b59135f377e8cabdd211553257722fe8298e7d1e65f0a3a5a0de113"
},
{
"id": "M5",
"file": "scripts/case1-accept.sh",
"occurrences": 1,
"before": "89b45bb84e8365f32f08fd055c7db8a0259533f23fe7ab03f484acb25bee92c2",
"after": "3ade5f4cbba5fa7bb2427ef7c5166033efe86231e4479c72a7a1f1b2186f4a73"
},
{
"id": "M6",
"file": "scripts/case1-accept.sh",
"occurrences": 1,
"before": "89b45bb84e8365f32f08fd055c7db8a0259533f23fe7ab03f484acb25bee92c2",
"after": "1a7cd233c86b9ed4bd05d57adb5e6b9c35b537e698615870523429f21dcf3170"
},
{
"id": "M7",
"file": "scripts/case1-accept.sh",
"occurrences": 1,
"before": "89b45bb84e8365f32f08fd055c7db8a0259533f23fe7ab03f484acb25bee92c2",
"after": "bdf3a911e8d287d2459f6b5d8ceb51d5202499b8091e97cf31b3c9c4dbe76058"
},
{
"id": "M8",
"file": "scripts/case1-accept.sh",
"occurrences": 1,
"before": "89b45bb84e8365f32f08fd055c7db8a0259533f23fe7ab03f484acb25bee92c2",
"after": "c0c21ac1bde823f28d5fd3937973128fa59eee042ba4a1e675b4dc7957713f2b"
},
{
"id": "M9",
"file": "scripts/case1-accept.sh",
"occurrences": 1,
"before": "89b45bb84e8365f32f08fd055c7db8a0259533f23fe7ab03f484acb25bee92c2",
"after": "bddfa558b71c12d5fd04782a746382d817008b7cc4cdb0b831afb9c5ec82a251"
},
{
"id": "M10",
"file": "scripts/case1-accept.sh",
"occurrences": 1,
"before": "89b45bb84e8365f32f08fd055c7db8a0259533f23fe7ab03f484acb25bee92c2",
"after": "9bd7b50361ef7b3cef92b02e206711418d831ebf7c6c46073a102991433c3f66"
},
{
"id": "M11",
"file": "scripts/case1-accept.sh",
"occurrences": 1,
"before": "89b45bb84e8365f32f08fd055c7db8a0259533f23fe7ab03f484acb25bee92c2",
"after": "db7c45d67d05f03fea863f50bb167c6d25ebcc2cf47c9f9e79aff07f41c73a64"
},
{
"id": "M12",
"file": "scripts/case1-accept.sh",
"occurrences": 1,
"before": "89b45bb84e8365f32f08fd055c7db8a0259533f23fe7ab03f484acb25bee92c2",
"after": "49e03600ed40deefa1389e50451d353c59f3493175f077e76d511bbabfb33987"
},
{
"id": "M13",
"file": "scripts/case1-accept.sh",
"occurrences": 1,
"before": "89b45bb84e8365f32f08fd055c7db8a0259533f23fe7ab03f484acb25bee92c2",
"after": "788cdbbe10f8056c94d4e9816388509cd1069f328c4e12e3ade8d7c706bcbc16"
},
{
"id": "M14",
"file": "scripts/case1-accept.sh",
"occurrences": 1,
"before": "89b45bb84e8365f32f08fd055c7db8a0259533f23fe7ab03f484acb25bee92c2",
"after": "7e6f382c9e51e67eb173d42ddb402178a6af49822c3c37d36332c08bd65c98a5"
},
{
"id": "M15",
"file": "scripts/case1-accept.sh",
"occurrences": 1,
"before": "89b45bb84e8365f32f08fd055c7db8a0259533f23fe7ab03f484acb25bee92c2",
"after": "a81acad889e36e7b405ac622fc8a75276d3933e07c490637d77007ad43cd6552"
},
{
"id": "M16",
"file": "scripts/case1-accept.sh",
"occurrences": 1,
"before": "89b45bb84e8365f32f08fd055c7db8a0259533f23fe7ab03f484acb25bee92c2",
"after": "a6956292666b7ef35bac215b8213344b29d48a969da60c075fa7c331bbb4e2e0"
},
{
"id": "M16",
"file": "scripts/case2-unit.sh",
"occurrences": 1,
"before": "f615d09cd0998bd3a109faff9a16a78ac3f414686300fadc282a7773ec08491a",
"after": "d2709a1da6c9a03f4c8b31bf57ad00df4c0ae62a5cbc0e7588cdceb9dc0e2aa1"
},
{
"id": "M17",
"file": "scripts/case1-accept.sh",
"occurrences": 1,
"before": "89b45bb84e8365f32f08fd055c7db8a0259533f23fe7ab03f484acb25bee92c2",
"after": "98f65d07e80b4bfd593e56c0d4a8dc693dc886bbe7296bc60cc278c5d1188e7c"
}
]
@@ -0,0 +1,42 @@
diff --git a/docs/plans/DEFERRED.md b/docs/plans/DEFERRED.md
index 0baa52809..7e393b060 100644
--- a/docs/plans/DEFERRED.md
+++ b/docs/plans/DEFERRED.md
@@ -487,6 +487,37 @@ at every gate. Started 2026-09-12 during the control board MVP.
touches the webui build: install the pinned esbuild in the gate checkout
so the check runs, or record why it can't. (2026-10-22)
+- **The case supervisor reports a fast child as an inner-session failure.**
+ (Row 253 N1, mos-1297 item 5.) A child that exits before the supervisor
+ verifies its session is reaped first, so the supervisor exits 85
+ (inner-session) instead of the child's own code. Mos measured rc85 in 39
+ of 40 fast-child bash runs. It fails closed, so it is not a 10-27 defect;
+ row 253 fixed only its own fixture (PYTHON_STUB execs python3). The
+ product fix is Vikunja 532, after 10-27. (2026-10-22)
+
+- **boardSend /api/seen returns 400 for a scan failure after writeMark.**
+ (Webby N2 on row 198, ruled sage-2867.) The mark is written, then the
+ rescan fails, and the client gets 400 as if its request were bad. Webby
+ suggests 500. It does not hold the 198 gate; binds the next row that
+ touches serve.mjs. (2026-10-22)
+
+- **Stale "row 203" text in the access command.** (Quackerjack, row 203
+ BUILD.md follow-up.) packages/cli/src/access.mjs lines 26-27, its help
+ string at line 36 and line 44, and packages/cli/README.md line 1107 say
+ peer homes stay unread "until row 203" adds the federation key. Row 203
+ changes only scripts/mosaic-config.mjs and test-config.sh, so once it
+ lands those lines point at a row that did not do the work. Binds the next
+ row that edits access.mjs. (2026-10-22)
+
+- **A remote outage can make the first library lookup outlast the tool
+ timeout.** (Row 224 residual, sage-2819.) In each 60 s window the first
+ lookup still runs an inline fetch, and that fetch can take longer than the
+ 60 s tool timeout. Bound the inline fetch in a later row. (2026-10-22)
+
+- **A sharee's session.list stays refused.** (Row 206, sage-2818, Q7.)
+ Whichever of row 193's session wiring or the share wiring lands second
+ wires it. (2026-10-22)
+
## Queue
Moved to `docs/plans/QUEUE.md` on 2026-09-13. This file holds only gaps.
@@ -0,0 +1,12 @@
{
"base": "48e450ce8",
"upstream": "94c33a43c",
"manifest": "b0fdd91183d7e1911ed327e32c03b8de7f0efd4c86bd143fa0ad54390358ee63",
"changed": [
"docs/plans/DEFERRED.md"
],
"stat": " docs/plans/DEFERRED.md | 31 +++++++++++++++++++++++++++++++\n 1 file changed, 31 insertions(+)\n",
"source_test_path_drift": false,
"detail": "31 added lines, no deletions, inserted in upstream gaps section. This is not an exact-tail append. Preserve these upstream entries and append row276 conditional closure at final integration. No rebase performed yet; keep original branch.",
"tests": "NOT RUN"
}
@@ -0,0 +1,15 @@
{
"files": {
"packages/cli/tests/case1-accept.test.mjs": 900,
"packages/cli/tests/case2-unit.test.mjs": 900
},
"basis": "Case1 longest complete observed run4 247.951s; ceil(3x)+120=864s, existing900s exceeds it. Two new per-mode baselines in each of inner/outer add four healthy runs; conservative4x3s=12s gives ceil(3x259.951)+120=900s. Case2 retains900s; unchanged since row253/row276; no new runtime measurement. Revisit after10 isolated repetitions before whole gate.",
"mos_1275": {
"case1_recorded_seconds": 247.951,
"case1_receipt": "run4/results.json",
"case1_estimated_extra_seconds": 12,
"case1_sizing_seconds": 259.951,
"case1_three_x_plus_120": 900,
"actual_limit": 900
}
}
+141
View File
@@ -0,0 +1,141 @@
[
{
"id": "M1",
"file": "scripts/case1-accept.sh",
"old": " # WORK is root's private mktemp directory. The dropped uid cannot write it.",
"new": " # WORK is root's private mktemp directory. The dropped uid cannot write it.\n [ \"$tag\" != talk ] || TESTER_SUPERVISOR='shift 3; exec \"$@\"'",
"killer": "packages/cli/tests/case1-accept.test.mjs",
"pattern": "row276 talk legacy inner timeout"
},
{
"id": "M2",
"file": "scripts/case1-accept.sh",
"old": "LC_ALL=C \"$TS_TIMEOUT\" --verbose --signal=KILL \"${outer}s\" \"$TS_BASH\" -c '\n errors=",
"new": "LC_ALL=C \"$TS_BASH\" -c '\n errors=",
"killer": "packages/cli/tests/case1-accept.test.mjs",
"pattern": "row276 precheck outer bound"
},
{
"id": "M3",
"file": "scripts/case1-accept.sh",
"old": "\"$setsid_bin\" \"$@\" & child=$!",
"new": "\"$@\" & child=$!",
"killer": "packages/cli/tests/case1-accept.test.mjs",
"pattern": "row276 talk legacy inner timeout"
},
{
"id": "M4",
"file": "scripts/case1-accept.sh",
"old": "if [ \"$rc\" = 87 ] && [ \"$valid\" = 1 ] && [ \"$display\" -gt 0 ]; then\n printf '%s\\n' \"$display\" > \"$WORK/legacy-$tag.rc\"\n exit 87",
"new": "if [ \"$rc\" = 87 ] && [ \"$valid\" = 1 ] && [ \"$display\" -ge 0 ]; then\n printf '%s\\n' \"$display\" > \"$WORK/legacy-$tag.rc\"\n exit \"$display\"",
"killer": "packages/cli/tests/case1-accept.test.mjs",
"pattern": "row276 earlier forged trailer"
},
{
"id": "M5",
"file": "scripts/case1-accept.sh",
"old": "process.exitCode=code;",
"new": "process.exitCode=0;",
"killer": "packages/cli/tests/case1-accept.test.mjs",
"pattern": "row276 legacy streams and display status"
},
{
"id": "M6",
"file": "scripts/case1-accept.sh",
"old": "&& [ \"${BASH_REMATCH[1]}\" -le 255 ]; then",
"new": "; then",
"killer": "packages/cli/tests/case1-accept.test.mjs",
"pattern": "row276 trailer grammar"
},
{
"id": "M7",
"file": "scripts/case1-accept.sh",
"old": "(0|[1-9][0-9]{0,2})$'\\n'$",
"new": "([0-9]{1,3})$'\\n'$",
"killer": "packages/cli/tests/case1-accept.test.mjs",
"pattern": "row276 trailer grammar"
},
{
"id": "M8",
"file": "scripts/case1-accept.sh",
"old": "(0|[1-9][0-9]{0,2})$'\\n'$",
"new": "(0|[1-9][0-9]{0,2})$'\\n'?$",
"killer": "packages/cli/tests/case1-accept.test.mjs",
"pattern": "row276 trailer grammar"
},
{
"id": "M9",
"file": "scripts/case1-accept.sh",
"old": " printf '%s' \"$raw\" >&2",
"new": " : # dropped stderr",
"killer": "packages/cli/tests/case1-accept.test.mjs",
"pattern": "row276 legacy streams and display status"
},
{
"id": "M10",
"file": "scripts/case1-accept.sh",
"old": "[ \"${st% *}\" = 0 ] && [[ \"${st#* }\" =~ ^[0-7]{3,4}$ ]] && (( (8#${st#* } & 8#022) == 0 )) || return 1",
"new": "[ \"${st% *}\" = 0 ] && [[ \"${st#* }\" =~ ^[0-7]{3,4}$ ]] || return 1",
"killer": "packages/cli/tests/case1-accept.test.mjs",
"pattern": "row276 case1 capture and legacy tools"
},
{
"id": "M11",
"file": "scripts/case1-accept.sh",
"old": "[ \"$(wc -c < \"$file\")\" -le \"$maximum\" ] || exit 83",
"new": ": # dropped capture byte limit",
"killer": "packages/cli/tests/case1-accept.test.mjs",
"pattern": "row253 C4 acceptance query overflow"
},
{
"id": "M12",
"file": "scripts/case1-accept.sh",
"old": "if [ \"$rc\" = 0 ] && [ \"$v\" = \"$CLAUDE_PIN (Claude Code)\" ];",
"new": "if [ \"$v\" = \"$CLAUDE_PIN (Claude Code)\" ];",
"killer": "packages/cli/tests/case1-accept.test.mjs",
"pattern": "row276 version and PM checks"
},
{
"id": "M13",
"file": "scripts/case1-accept.sh",
"old": "if [ \"$rc\" = 0 ] && [[ \"$out\" =~ ^ok\\ ",
"new": "if [[ \"$out\" =~ ^ok\\ ",
"killer": "packages/cli/tests/case1-accept.test.mjs",
"pattern": "row276 version and PM checks"
},
{
"id": "M14",
"file": "scripts/case1-accept.sh",
"old": "if [ \"$rc\" = 0 ] && [ \"$v\" = \"$NODE_PIN\" ];",
"new": "if [ \"$v\" = \"$NODE_PIN\" ];",
"killer": "packages/cli/tests/case1-accept.test.mjs",
"pattern": "row276 version and PM checks"
},
{
"id": "M15",
"file": "scripts/case1-accept.sh",
"old": "\"$TS_TAIL\" -c 65536 -- \"$errors\"",
"new": "\"$TS_TAIL\" -c 999999999 -- \"$errors\"",
"killer": "packages/cli/tests/case1-accept.test.mjs",
"pattern": "row276 stderr retention is bounded"
},
{
"id": "M16",
"file": "scripts/case1-accept.sh",
"also_files": [
"scripts/case2-unit.sh"
],
"old": "IFS= read -r -d '' raw 2>/dev/null < \"/proc/$pid/stat\" || :",
"new": "IFS= read -r -d '' raw < \"/proc/$pid/stat\" 2>/dev/null || :",
"killer": "packages/cli/tests/case1-accept.test.mjs",
"pattern": "row276 vanished pid stat read"
},
{
"id": "M17",
"file": "scripts/case1-accept.sh",
"old": "exec \"$@\" > \"$output\" 2> \"$errors\"",
"new": "exec \"$@\" 2> \"$errors\"",
"killer": "packages/cli/tests/case1-accept.test.mjs",
"pattern": "row276 precheck outer bound"
}
]
+116
View File
@@ -0,0 +1,116 @@
#!/usr/bin/env python3
"""Run explicit row276 changes only under Sage's grant. --static runs no tests."""
import argparse
import hashlib
import json
import os
from pathlib import Path
import signal
import subprocess
import time
HERE = Path(__file__).resolve().parent
REPO = HERE.parents[3]
def digest(data):
return hashlib.sha256(data).hexdigest()
def busy():
p = subprocess.run(['bash', '/mnt/storage/scratch/sage-busy-now.sh'], text=True, capture_output=True)
if p.returncode or p.stdout.splitlines()[-1:] != ['CLEAR']:
raise RuntimeError('busy refusal: ' + p.stdout + p.stderr)
def run(command, path, seconds=60):
if command[:2] == ['node', '--test']:
limits = json.loads((HERE/'WHOLE-GATE-LIMITS.json').read_text())['files']
limit = limits.get(command[-1], 900)
command = ['timeout','-k','10',str(limit),*command]
seconds = limit + 30
busy()
started = time.monotonic()
command_file = path.with_suffix('.command.json')
command_file.write_text(json.dumps(command))
# Keep command text out of wrapper argv: the busy guard scans every argv.
# launch.py execs the structured command. bash owns a pipefail/tee pipeline.
p = subprocess.Popen(['bash','-o','pipefail','-c',
'python3 "$1" "$2" 2>&1 | tee "$3"', '--',str(HERE/'launch.py'),str(command_file),str(path)],
cwd=REPO,start_new_session=True)
expired = False
try:
code = p.wait(timeout=seconds)
expired = code in (124, 137)
except subprocess.TimeoutExpired:
expired = True
os.killpg(p.pid, signal.SIGKILL)
code = p.wait()
finally:
try:
os.killpg(p.pid, signal.SIGKILL)
except ProcessLookupError:
pass
return dict(code=code, timeout=expired, seconds=round(time.monotonic()-started, 3), log=str(path))
def main():
ap = argparse.ArgumentParser()
ap.add_argument('--static', action='store_true')
ap.add_argument('--grant')
ap.add_argument('--out', type=Path)
args = ap.parse_args()
definitions = json.loads((HERE/'changes.json').read_text())
checked = []
for d in definitions:
for file in [d['file'], *d.get('also_files', [])]:
original = (REPO/file).read_bytes()
count = original.count(d['old'].encode())
if count != 1:
raise RuntimeError(f"{d['id']}: {file}: target occurs {count} times")
changed = original.replace(d['old'].encode(), d['new'].encode(), 1)
checked.append(dict(id=d['id'], file=file, occurrences=count,
before=digest(original), after=digest(changed)))
if args.static:
print(json.dumps(checked, indent=2))
return
if not args.grant or not args.out:
ap.error('execution needs --grant and --out')
if not os.environ.get('TMPDIR', '').startswith('/mnt/storage/scratch/tmp/g'):
raise RuntimeError('TMPDIR must be the granted scratch directory')
status = subprocess.check_output(['git','status','--porcelain','--untracked-files=no'],cwd=REPO)
args.out.mkdir(parents=True, exist_ok=True)
results = dict(grant=args.grant, static=checked, bases={}, changes=[])
failures = 0
for d in definitions:
key = d['killer']+'|'+d['pattern']
command = ['node','--test','--test-reporter=tap','--test-name-pattern',d['pattern'],d['killer']]
if key not in results['bases']:
base = run(command, args.out/(d['id']+'-base.log'))
results['bases'][key] = base
(args.out/'results.json').write_text(json.dumps(results,indent=2)+'\n')
if base['code'] != 0 or base['seconds'] > 30:
raise RuntimeError('base failed or exceeded 30 seconds: '+d['id'])
originals = {REPO/file: (REPO/file).read_bytes() for file in [d['file'], *d.get('also_files', [])]}
try:
for target, original in originals.items():
target.write_bytes(original.replace(d['old'].encode(),d['new'].encode(),1))
pre = subprocess.run(['bash','-n',str(target)],capture_output=True)
if pre.returncode:
raise RuntimeError('invalid syntax: '+d['id'])
result = run(command,args.out/(d['id']+'.log'))
result.update(id=d['id'], base_seconds=results['bases'][key]['seconds'],
outcome='timeout' if result['timeout'] else 'killed' if result['code'] != 0 else 'survived')
results['changes'].append(result)
if result['timeout']:
raise RuntimeError('timeout requires Sage/Mos classification: '+d['id'])
if result['outcome'] != 'killed':
failures += 1
finally:
for target, original in originals.items():
target.write_bytes(original)
assert target.read_bytes() == original
assert subprocess.check_output(['git','status','--porcelain','--untracked-files=no'],cwd=REPO) == status
(args.out/'results.json').write_text(json.dumps(results,indent=2)+'\n')
if failures >= 1:
raise RuntimeError('first unexpected failure: end the row276 window')
print(json.dumps(results,indent=2))
if __name__ == '__main__':
main()
@@ -0,0 +1,66 @@
{
"base": "0cbe2e9b3",
"source": "24bdde7eedb3b3ecf01d426370f17648c2915a54",
"previous_tip": "05af615fba88f5b0df5ac60d9a60b33214f0d322",
"rebased_tip": "fe21ec0f70037310d769b5d11484ba4f779d4765",
"four_identical": {
"packages/cli/tests/case-sudo-fixture.mjs": "eac5c83f43056bdeb5781101307e17d4bc01f03e97e02f4f5e930436d7e43535",
"packages/cli/tests/case1-accept.test.mjs": "fe4bc897497d83ef247b229cd49acf78b1a607af44e803a8a0a866115ff8cf87",
"scripts/case1-accept.sh": "46245e2bc19c8bcab2ac4fbda16cc72f2dfbf656e4bad8db707bb5a254694900",
"scripts/case2-unit.sh": "d2709a1da6c9a03f4c8b31bf57ad00df4c0ae62a5cbc0e7588cdceb9dc0e2aa1"
},
"upstream_changed": [
"agents/gizmoduck/work/queue-269/BUILD.md",
"agents/launchpad/work/queue-206/BUILD.md",
"docs/plans/2026-10-22_prd-1-16-brief.md",
"docs/plans/DEFERRED.md",
"docs/plans/QUEUE.md",
"docs/plans/queue.json",
"docs/prd/mosaic-stack.md",
"packages/bus/README.md",
"packages/bus/schema.sql",
"packages/bus/src/broker.mjs",
"packages/bus/src/migrations/3l-3m.sql",
"packages/bus/src/store.mjs",
"packages/bus/tests/account-migration.test.mjs",
"packages/bus/tests/chief-of-staff.test.mjs",
"packages/bus/tests/comment-migration.test.mjs",
"packages/bus/tests/end-launch.test.mjs",
"packages/bus/tests/fixtures/schema-3l.sql",
"packages/bus/tests/gitea-migration.test.mjs",
"packages/bus/tests/grant-migration.test.mjs",
"packages/bus/tests/name-migration.test.mjs",
"packages/bus/tests/schema.test.mjs",
"packages/bus/tests/sessions.test.mjs",
"packages/bus/tests/spec-migration.test.mjs",
"packages/bus/tests/thread-migration.test.mjs",
"packages/bus/tests/thread-shares.test.mjs",
"packages/bus/tests/usage-migration.test.mjs",
"packages/bus/tests/user-principal.test.mjs",
"packages/cli/src/launcher.mjs",
"packages/cli/tests/fixtures/session-adapter.mjs",
"packages/cli/tests/session-launch.test.mjs",
"packages/cli/tests/stack-release.test.mjs",
"packages/cli/tests/thread-launch.test.mjs",
"packages/seat/src/sandbox.mjs",
"packages/seat/src/session.mjs",
"packages/seat/tests/session-workspace.test.mjs",
"packages/tasks/requirements.json",
"packages/tasks/tests/requirements.test.mjs",
"scripts/stack-release.sh"
],
"transitive_import_overlap": [
"packages/bus/src/broker.mjs",
"packages/bus/src/store.mjs",
"packages/seat/src/sandbox.mjs"
],
"explicit_dependencies": [
"packages/bus/schema.sql",
"packages/bus/src/migrations/3l-3m.sql",
"packages/bus/src/store.mjs",
"packages/bus/src/broker.mjs",
"packages/seat/src/sandbox.mjs"
],
"assessment": "helpers imports Broker/Store; Store hash-checks schema/migrations at import. case2 sandboxProblem/prepareRun/binds consumes sandbox.mjs and copies RUNNER_FILES including broker. New schema3m is exercised on integrated base. case scripts never read COUNTED/restore guard lists or stack-release.sh; only a comment names pm_external. Config and webui CLI are generated stand-ins. All ten whole shell suites run on integrated base. No changed test pins schema step counts or restore guard lists. Claim3255 already stands; no redundant queue write.",
"manifest": "4dab70cd251f5ae170856482bde923157ee667d342cd8ea412d242f707307303"
}
@@ -0,0 +1,4 @@
1: 6b898fab4 = 1: 24bdde7ee fix(case1): supervise legacy user calls across sudo sessions
2: 824e5de10 = 2: de983422d docs(row276): pin supervised-call candidate and fifteen mutants
3: d65b89899 = 3: 8fa6e5f03 docs(row276): record static approval and upstream deferred drift
4: 05af615fb = 4: fe21ec0f7 docs(row276): pin integration on 94c33a43c and preserve upstream docs
@@ -0,0 +1,31 @@
{
"base": "94c33a43c",
"source": "6b898fab465c200db14313a49c07c06b5dff285d",
"rebased_tip_before_records": "d65b898998f07b3a63024620b10b7566b362dd0a",
"old_source": "164e166479378caf0702ab8b1eb3871b54219da3",
"four_identical": {
"packages/cli/tests/case-sudo-fixture.mjs": {
"original_sha256": "eac5c83f43056bdeb5781101307e17d4bc01f03e97e02f4f5e930436d7e43535",
"integrated_sha256": "eac5c83f43056bdeb5781101307e17d4bc01f03e97e02f4f5e930436d7e43535"
},
"packages/cli/tests/case1-accept.test.mjs": {
"original_sha256": "fe4bc897497d83ef247b229cd49acf78b1a607af44e803a8a0a866115ff8cf87",
"integrated_sha256": "fe4bc897497d83ef247b229cd49acf78b1a607af44e803a8a0a866115ff8cf87"
},
"scripts/case1-accept.sh": {
"original_sha256": "46245e2bc19c8bcab2ac4fbda16cc72f2dfbf656e4bad8db707bb5a254694900",
"integrated_sha256": "46245e2bc19c8bcab2ac4fbda16cc72f2dfbf656e4bad8db707bb5a254694900"
},
"scripts/case2-unit.sh": {
"original_sha256": "d2709a1da6c9a03f4c8b31bf57ad00df4c0ae62a5cbc0e7588cdceb9dc0e2aa1",
"integrated_sha256": "d2709a1da6c9a03f4c8b31bf57ad00df4c0ae62a5cbc0e7588cdceb9dc0e2aa1"
}
},
"deferred_exact_new_base_plus_original_own_tail": true,
"build_log_exact_new_base_plus_original_own_tail": true,
"manifest": "2af7e8bafcbf0bb977a26ab1f57371b8453c7a6659dc7233a68f186ef7b5d5f2",
"changed_manifest_entries": [
"docs/plans/DEFERRED.md"
],
"tests": "NOT RUN"
}
@@ -0,0 +1,3 @@
# sage-2901 integration
Rebased old29996fb82 onto94c33a43c under newgander/row276-94c3, preserving old branch. DEFERRED auto-merged; only BUILD-LOG conflicted. Both are exact new-base prefixes followed by unchanged row276 tails. Four source/test blobs byte-identical to164e16647. Regenerated five-path manifest 2af7e8bafcbf0bb977a26ab1f57371b8453c7a6659dc7233a68f186ef7b5d5f2. No tests, Node or queue write. BUILD-LOG excluded.
@@ -0,0 +1,42 @@
diff --git a/docs/plans/DEFERRED.md b/docs/plans/DEFERRED.md
index 0baa52809..7e393b060 100644
--- a/docs/plans/DEFERRED.md
+++ b/docs/plans/DEFERRED.md
@@ -487,6 +487,37 @@ at every gate. Started 2026-09-12 during the control board MVP.
touches the webui build: install the pinned esbuild in the gate checkout
so the check runs, or record why it can't. (2026-10-22)
+- **The case supervisor reports a fast child as an inner-session failure.**
+ (Row 253 N1, mos-1297 item 5.) A child that exits before the supervisor
+ verifies its session is reaped first, so the supervisor exits 85
+ (inner-session) instead of the child's own code. Mos measured rc85 in 39
+ of 40 fast-child bash runs. It fails closed, so it is not a 10-27 defect;
+ row 253 fixed only its own fixture (PYTHON_STUB execs python3). The
+ product fix is Vikunja 532, after 10-27. (2026-10-22)
+
+- **boardSend /api/seen returns 400 for a scan failure after writeMark.**
+ (Webby N2 on row 198, ruled sage-2867.) The mark is written, then the
+ rescan fails, and the client gets 400 as if its request were bad. Webby
+ suggests 500. It does not hold the 198 gate; binds the next row that
+ touches serve.mjs. (2026-10-22)
+
+- **Stale "row 203" text in the access command.** (Quackerjack, row 203
+ BUILD.md follow-up.) packages/cli/src/access.mjs lines 26-27, its help
+ string at line 36 and line 44, and packages/cli/README.md line 1107 say
+ peer homes stay unread "until row 203" adds the federation key. Row 203
+ changes only scripts/mosaic-config.mjs and test-config.sh, so once it
+ lands those lines point at a row that did not do the work. Binds the next
+ row that edits access.mjs. (2026-10-22)
+
+- **A remote outage can make the first library lookup outlast the tool
+ timeout.** (Row 224 residual, sage-2819.) In each 60 s window the first
+ lookup still runs an inline fetch, and that fetch can take longer than the
+ 60 s tool timeout. Bound the inline fetch in a later row. (2026-10-22)
+
+- **A sharee's session.list stays refused.** (Row 206, sage-2818, Q7.)
+ Whichever of row 193's session wiring or the share wiring lands second
+ wires it. (2026-10-22)
+
## Queue
Moved to `docs/plans/QUEUE.md` on 2026-09-13. This file holds only gaps.
@@ -0,0 +1,15 @@
1: 164e16647 ! 1: 6b898fab4 fix(case1): supervise legacy user calls across sudo sessions
@@ Commit message
## BUILD-LOG.md ##
@@ BUILD-LOG.md: Gander: after Duckworth-0100 design approval with C1-C5, prepared the two host-s
- 2026-10-22 14:45 UTC | Gander row253 focused27 on finalaca16404c base | Fresh0604d91fc / manifest573c51cf:27 whole files604/0/0, no timeout/retry, case134/0 in99.281s, case243/0 in66.418s, stack-release includingT46221/0 in583.453s. N9 sandbox bind ran and passed, no focused skips. Seven source blobs unchanged; sweep0 run-created leftovers, pre-existing infrastructure receipts retained. Whole gate and M1-M40 await separate Sage CLEAR after Duckworth rebase check. No live action.
+ 2026-10-22T17:42:16Z | Sage | Row 253 (#1758, Gander, Duckworth) LANDED 48e450ce8. Before: refactor at aca16404c; case-sudo calls had no supervised session check and the M21 survivor hid behind a fast-exit fixture (mos-1297). After: a fast-forward of 22 commits; manifest 591020a1 rechecked with 0 mismatches; run 5 whole gate green with M1-M40 killed, the M38 PID equals SID assertion added under mos-1298; Duckworth APPROVE rev 3252, note rev 3253, done rev 3254; #1758 comment 30701 and closed; P19 416 comment 719. N1 (fast child reported as exit 85) is DEFERRED as Vikunja 532.
- 2026-10-22 14:46 UTC | Gander correction to the row253 focused27 entry immediately above | stack-release whole was218/0/0, not221/0. The27-file sum604/0/0 and duration583.453s are unchanged; raw files/results.json and SUMMARY.json give the exact per-file totals.
+ 2026-10-22T18:11:57Z | Sage | Row 275 (#1780, Morgana, Duckworth) LANDED 3410df7c3. Before: refactor at 48e450ce8; viewers had no verb list of their own and board reads were not refused to users. After: a fast-forward of 3 commits; manifest 39847b15 (4 paths) blobs match; gate 17:52:12Z-18:05:00Z green (whole files 7/22/6, bus 834, cli 861, harness 151, business 231, seat 167, 10 scripts with 3 named skips), M6 and M10 killed; Duckworth APPROVE rev 3260 (comment 30717); note and done by sage-2897; #1780 comment 30728 and closed. N1 (board refusal test as a loop over BOARD_VERBS) is non-blocking.
+
+2026-10-22 18:11:58 UTC | Gander row276 #1781 prepared, gate pending | Before: row253 left5legacy Case1 AS_USER calls unsupervised across sudo pty sessions. After: candidate uses its unchanged supervisor with per-call inner/outer budgets, separate streams, strict display-only failure trailer, fake-only paired process-model cases and15unique mutants. Duckworth0182 B1 corrected the plan before product code;0183 cleared build. Parse-only Bash checks pass; no Node, behavioral test, host, unit or config action. Runtime gate and publication await Sage.
2: 6887825e4 = 2: 824e5de10 docs(row276): pin supervised-call candidate and fifteen mutants
3: 29996fb82 = 3: d65b89899 docs(row276): record static approval and upstream deferred drift
+8
View File
@@ -0,0 +1,8 @@
#!/usr/bin/env python3
"""Exec a structured command without putting its text in wrapper argv."""
import json
import os
import sys
with open(sys.argv[1]) as source:
command = json.load(source)
os.execvp(command[0], command)
@@ -0,0 +1,184 @@
{
"grant": "sage-2964",
"head": "f8d44db2f9153a0e76aebcd0288d0fc74bf7c108",
"base": "0cbe2e9b3",
"manifest": "4dab70cd251f5ae170856482bde923157ee667d342cd8ea412d242f707307303",
"scope": {
"whole_files": [
"packages/cli/tests/case1-accept.test.mjs",
"packages/cli/tests/case2-unit.test.mjs"
],
"shells": [
"scripts/test-auth.sh",
"scripts/test-conductor.sh",
"scripts/test-config.sh",
"scripts/test-discord.sh",
"scripts/test-extension-package.sh",
"scripts/test-foundation.sh",
"scripts/test-land-work.sh",
"scripts/test-queue.sh",
"scripts/test-release.sh",
"scripts/test-task.sh"
],
"mutants": [
"M1",
"M2",
"M3",
"M4",
"M5",
"M6",
"M7",
"M8",
"M9",
"M10",
"M11",
"M12",
"M13",
"M14",
"M15"
],
"red_pattern": "row276 talk legacy inner timeout",
"node_seconds": 900,
"estimate_minutes": "12-18; no row276 measured runtime yet"
},
"limits": {
"files": {
"packages/cli/tests/case1-accept.test.mjs": 900,
"packages/cli/tests/case2-unit.test.mjs": 900
},
"basis": "No row276 timing yet; initial900s per whole file; Sage may adjust before CLEAR."
},
"shell_limits": {
"authority": [
"mos-1275",
"sage-2659"
],
"scope": "Own Gander row196 receipt set documented for row278, plus the complete row278 run3 shell phase. Row253 old C4 results do not carry. Receipts choose timeouts only.",
"consulted_records": [
"ec1e7fad8:agents/gander/work/queue-196/evidence/suite-results-run1.json",
"ec1e7fad8:agents/gander/work/queue-196/evidence/suite-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r2/mutants/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r2/run2/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r2/run2/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r3/gate/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r3/gate/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r3/gate/sso-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/sso-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/whole-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r5/gate/whole-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r5/resume/summary.json",
"ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/first-attempt/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/summary.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"385a7194c:agents/gander/work/queue-278/run3/whole/results.json"
],
"scripts": {
"scripts/test-auth.sh": {
"recorded_duration_seconds": 1.9081228229999543,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 126,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "dd4720cb0cbecd2fc523a318f2222d21d257c8c5889996a3d69e522ee971a707",
"previous_maximum_seconds": 1.9081228229999543,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"row278_run3_seconds": 0.816
},
"scripts/test-conductor.sh": {
"recorded_duration_seconds": 8.057173820000026,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 145,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "da84150467494a4c979759f400854411bd93a7efce981139757bf526d688a23b",
"previous_maximum_seconds": 8.057173820000026,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"row278_run3_seconds": 6.078
},
"scripts/test-config.sh": {
"recorded_duration_seconds": 3.1678915339999367,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 130,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "3301c1fabf616bb961d62f6decd0a46dadb0f399b8ba7f3c2ca60023d2b24c78",
"previous_maximum_seconds": 3.1678915339999367,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"row278_run3_seconds": 1.868
},
"scripts/test-discord.sh": {
"recorded_duration_seconds": 8.776727847000002,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 147,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "a5dcf783c51a5d5d184a357f91ebf9fa1c4e054f0cb84a3d1d7668f6156e025e",
"previous_maximum_seconds": 8.776727847000002,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 7.431
},
"scripts/test-extension-package.sh": {
"recorded_duration_seconds": 3.01285702399991,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 130,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "5d7b687f16fd1a9414b229501177d530ba3af4eadd3cac319b33f38fdba9bf99",
"previous_maximum_seconds": 3.01285702399991,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 1.366
},
"scripts/test-foundation.sh": {
"recorded_duration_seconds": 49.367,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 269,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "2e11038e7f784ec4f539eb768f63bab0fab9c9940334388a1fe2d47ab9e2b008",
"previous_maximum_seconds": 39.70872647900006,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 39.901
},
"scripts/test-land-work.sh": {
"recorded_duration_seconds": 16.854,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 171,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "c9d1d5c9b006d5c12e5f796a9828361059f8e0410846fc55c070c0148b15cef4",
"previous_maximum_seconds": 12.623263413000037,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 11.338
},
"scripts/test-queue.sh": {
"recorded_duration_seconds": 35.155,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 226,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "c270f181d1fa8b6d42ff4131c339beba786a8fd620bb66f8afdcec05e8b10868",
"previous_maximum_seconds": 23.443742031000088,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 21.158
},
"scripts/test-release.sh": {
"recorded_duration_seconds": 12.168674453999964,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 157,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "be706dff832257bd4781abeabd19faa4ac16edf9a4af0c96457e33cf3bb6deb3",
"previous_maximum_seconds": 12.168674453999964,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 2.67
},
"scripts/test-task.sh": {
"recorded_duration_seconds": 36.783798266,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 231,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "10c4abb70bf9b83e617089b06a5436cc7fa6b866a176458b22128c3a15163f94",
"previous_maximum_seconds": 36.783798266,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 13.843
}
}
},
"carry": "NONE"
}
+1
View File
@@ -0,0 +1 @@
/mnt/storage/scratch/tmp/gfhk
@@ -0,0 +1 @@
Run1 void: new-test first-run ReferenceError read is not defined. Intended RED failed for the same setup reason and is invalid evidence; focused GREEN is the first unexpected red. No old test assertion ran. Syntax2checks passed. No whole files/mutants/shells ran. Placed test-only alias under sage2964/mos1272, no assertion/product change. Fresh run2 from top.
@@ -0,0 +1,257 @@
{
"grant": "sage-2964",
"head": "f8d44db2f9153a0e76aebcd0288d0fc74bf7c108",
"base": "0cbe2e9b3",
"manifest": "4dab70cd251f5ae170856482bde923157ee667d342cd8ea412d242f707307303",
"scope": {
"whole_files": [
"packages/cli/tests/case1-accept.test.mjs",
"packages/cli/tests/case2-unit.test.mjs"
],
"shells": [
"scripts/test-auth.sh",
"scripts/test-conductor.sh",
"scripts/test-config.sh",
"scripts/test-discord.sh",
"scripts/test-extension-package.sh",
"scripts/test-foundation.sh",
"scripts/test-land-work.sh",
"scripts/test-queue.sh",
"scripts/test-release.sh",
"scripts/test-task.sh"
],
"mutants": [
"M1",
"M2",
"M3",
"M4",
"M5",
"M6",
"M7",
"M8",
"M9",
"M10",
"M11",
"M12",
"M13",
"M14",
"M15"
],
"red_pattern": "row276 talk legacy inner timeout",
"node_seconds": 900,
"estimate_minutes": "12-18; no row276 measured runtime yet"
},
"limits": {
"files": {
"packages/cli/tests/case1-accept.test.mjs": 900,
"packages/cli/tests/case2-unit.test.mjs": 900
},
"basis": "No row276 timing yet; initial900s per whole file; Sage may adjust before CLEAR."
},
"shell_limits": {
"authority": [
"mos-1275",
"sage-2659"
],
"scope": "Own Gander row196 receipt set documented for row278, plus the complete row278 run3 shell phase. Row253 old C4 results do not carry. Receipts choose timeouts only.",
"consulted_records": [
"ec1e7fad8:agents/gander/work/queue-196/evidence/suite-results-run1.json",
"ec1e7fad8:agents/gander/work/queue-196/evidence/suite-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r2/mutants/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r2/run2/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r2/run2/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r3/gate/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r3/gate/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r3/gate/sso-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/sso-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/whole-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r5/gate/whole-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r5/resume/summary.json",
"ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/first-attempt/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/summary.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"385a7194c:agents/gander/work/queue-278/run3/whole/results.json"
],
"scripts": {
"scripts/test-auth.sh": {
"recorded_duration_seconds": 1.9081228229999543,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 126,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "dd4720cb0cbecd2fc523a318f2222d21d257c8c5889996a3d69e522ee971a707",
"previous_maximum_seconds": 1.9081228229999543,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"row278_run3_seconds": 0.816
},
"scripts/test-conductor.sh": {
"recorded_duration_seconds": 8.057173820000026,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 145,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "da84150467494a4c979759f400854411bd93a7efce981139757bf526d688a23b",
"previous_maximum_seconds": 8.057173820000026,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"row278_run3_seconds": 6.078
},
"scripts/test-config.sh": {
"recorded_duration_seconds": 3.1678915339999367,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 130,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "3301c1fabf616bb961d62f6decd0a46dadb0f399b8ba7f3c2ca60023d2b24c78",
"previous_maximum_seconds": 3.1678915339999367,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"row278_run3_seconds": 1.868
},
"scripts/test-discord.sh": {
"recorded_duration_seconds": 8.776727847000002,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 147,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "a5dcf783c51a5d5d184a357f91ebf9fa1c4e054f0cb84a3d1d7668f6156e025e",
"previous_maximum_seconds": 8.776727847000002,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 7.431
},
"scripts/test-extension-package.sh": {
"recorded_duration_seconds": 3.01285702399991,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 130,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "5d7b687f16fd1a9414b229501177d530ba3af4eadd3cac319b33f38fdba9bf99",
"previous_maximum_seconds": 3.01285702399991,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 1.366
},
"scripts/test-foundation.sh": {
"recorded_duration_seconds": 49.367,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 269,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "2e11038e7f784ec4f539eb768f63bab0fab9c9940334388a1fe2d47ab9e2b008",
"previous_maximum_seconds": 39.70872647900006,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 39.901
},
"scripts/test-land-work.sh": {
"recorded_duration_seconds": 16.854,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 171,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "c9d1d5c9b006d5c12e5f796a9828361059f8e0410846fc55c070c0148b15cef4",
"previous_maximum_seconds": 12.623263413000037,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 11.338
},
"scripts/test-queue.sh": {
"recorded_duration_seconds": 35.155,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 226,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "c270f181d1fa8b6d42ff4131c339beba786a8fd620bb66f8afdcec05e8b10868",
"previous_maximum_seconds": 23.443742031000088,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 21.158
},
"scripts/test-release.sh": {
"recorded_duration_seconds": 12.168674453999964,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 157,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "be706dff832257bd4781abeabd19faa4ac16edf9a4af0c96457e33cf3bb6deb3",
"previous_maximum_seconds": 12.168674453999964,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 2.67
},
"scripts/test-task.sh": {
"recorded_duration_seconds": 36.783798266,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 231,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "10c4abb70bf9b83e617089b06a5436cc7fa6b866a176458b22128c3a15163f94",
"previous_maximum_seconds": 36.783798266,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 13.843
}
}
},
"carry": "NONE"
}
START syntax-0
END syntax-0
START syntax-1
END syntax-1
START intended-red
TAP version 13
# Subtest: row276 talk legacy inner timeout cleans both sudo models
not ok 1 - row276 talk legacy inner timeout cleans both sudo models
---
duration_ms: 9.361046
type: 'test'
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:780:33'
failureType: 'testCodeFailure'
error: 'read is not defined'
code: 'ERR_TEST_FAILURE'
name: 'ReferenceError'
stack: |-
legacyBody (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:763:15)
legacyCall (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:767:63)
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:786:35)
Test.runInAsyncScope (node:async_hooks:226:14)
Test.run (node:internal/test_runner/test:1402:25)
Test.start (node:internal/test_runner/test:1262:17)
startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17)
...
1..1
# tests 1
# suites 0
# pass 0
# fail 1
# cancelled 0
# skipped 0
# todo 0
# duration_ms 118.685125
END intended-red
START focused-green
TAP version 13
# Subtest: row276 talk legacy inner timeout cleans both sudo models
not ok 1 - row276 talk legacy inner timeout cleans both sudo models
---
duration_ms: 9.91699
type: 'test'
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:780:33'
failureType: 'testCodeFailure'
error: 'read is not defined'
code: 'ERR_TEST_FAILURE'
name: 'ReferenceError'
stack: |-
legacyBody (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:763:15)
legacyCall (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:767:63)
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:786:35)
Test.runInAsyncScope (node:async_hooks:226:14)
Test.run (node:internal/test_runner/test:1402:25)
Test.start (node:internal/test_runner/test:1262:17)
startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17)
...
1..1
# tests 1
# suites 0
# pass 0
# fail 1
# cancelled 0
# skipped 0
# todo 0
# duration_ms 105.850018
Traceback (most recent call last):
File "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-276/run1/execute.py", line 19, in <module>
step('focused-green',['node','--test','--test-reporter=tap','--test-name-pattern','row276 talk legacy inner timeout','packages/cli/tests/case1-accept.test.mjs'])
File "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-276/run1/execute.py", line 9, in step
if v['timeout'] or (v['code']==0 if red else v['code']!=0):raise RuntimeError('unexpected result: stop and classify '+name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: unexpected result: stop and classify focused-green
@@ -0,0 +1,26 @@
import datetime,hashlib,importlib.util,json,os,pathlib,subprocess,sys,time
sys.dont_write_bytecode=True
r=pathlib.Path(__file__).resolve().parent;p=r.parent
spec=importlib.util.spec_from_file_location('row276_driver',p/'driver.py');d=importlib.util.module_from_spec(spec);spec.loader.exec_module(d)
start=time.monotonic();results=dict(grant='sage-2964',steps=[])
(r/'start.txt').write_text(datetime.datetime.now(datetime.timezone.utc).isoformat()+'\n');print((r/'HEADER.json').read_text(),flush=True)
def step(name,cmd,red=False,seconds=1200):
print('START '+name,flush=True);v=d.run(cmd,r/(name+'.log'),seconds=seconds);v.update(name=name,expected_red=red);results['steps'].append(v);results['wall_seconds']=round(time.monotonic()-start,3);(r/'results.json').write_text(json.dumps(results,indent=2)+'\n')
if v['timeout'] or (v['code']==0 if red else v['code']!=0):raise RuntimeError('unexpected result: stop and classify '+name)
print('END '+name,flush=True)
for f in ['packages/cli/tests/case1-accept.test.mjs','packages/cli/tests/case-sudo-fixture.mjs']:
step('syntax-'+str(len(results['steps'])),['timeout','-k','10','60','node','--check',f],seconds=90)
target=d.REPO/'scripts/case1-accept.sh';original=target.read_bytes();status=subprocess.check_output(['git','status','--porcelain','--untracked-files=no'],cwd=d.REPO)
try:
target.write_bytes(subprocess.check_output(['git','show','48e450ce8:scripts/case1-accept.sh'],cwd=d.REPO))
step('intended-red',['node','--test','--test-reporter=tap','--test-name-pattern','row276 talk legacy inner timeout','packages/cli/tests/case1-accept.test.mjs'],red=True)
finally:
target.write_bytes(original);assert target.read_bytes()==original;assert subprocess.check_output(['git','status','--porcelain','--untracked-files=no'],cwd=d.REPO)==status
step('focused-green',['node','--test','--test-reporter=tap','--test-name-pattern','row276 talk legacy inner timeout','packages/cli/tests/case1-accept.test.mjs'])
scope=json.loads((p/'GATE-SCOPE.json').read_text())
for i,f in enumerate(scope['whole_files']):step('whole-'+str(i+1),['node','--test','--test-reporter=tap',f])
step('changes-controller',[sys.executable,str(p/'driver.py'),'--grant','sage-2964','--out',str(r/'changes')],seconds=900)
limits=json.loads((p/'SHELL-LIMITS.json').read_text())['scripts']
for i,f in enumerate(scope['shells']):
limit=limits[f]['limit_seconds'];step('shell-'+str(i+1),['timeout','-k','10',str(limit),'bash',f],seconds=limit+30)
(r/'end.txt').write_text(datetime.datetime.now(datetime.timezone.utc).isoformat()+'\n');print('GATE COMPLETE',flush=True)
@@ -0,0 +1 @@
["timeout", "-k", "10", "900", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row276 talk legacy inner timeout", "packages/cli/tests/case1-accept.test.mjs"]
@@ -0,0 +1,29 @@
TAP version 13
# Subtest: row276 talk legacy inner timeout cleans both sudo models
not ok 1 - row276 talk legacy inner timeout cleans both sudo models
---
duration_ms: 9.91699
type: 'test'
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:780:33'
failureType: 'testCodeFailure'
error: 'read is not defined'
code: 'ERR_TEST_FAILURE'
name: 'ReferenceError'
stack: |-
legacyBody (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:763:15)
legacyCall (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:767:63)
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:786:35)
Test.runInAsyncScope (node:async_hooks:226:14)
Test.run (node:internal/test_runner/test:1402:25)
Test.start (node:internal/test_runner/test:1262:17)
startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17)
...
1..1
# tests 1
# suites 0
# pass 0
# fail 1
# cancelled 0
# skipped 0
# todo 0
# duration_ms 105.850018
@@ -0,0 +1 @@
["timeout", "-k", "10", "900", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row276 talk legacy inner timeout", "packages/cli/tests/case1-accept.test.mjs"]
@@ -0,0 +1,29 @@
TAP version 13
# Subtest: row276 talk legacy inner timeout cleans both sudo models
not ok 1 - row276 talk legacy inner timeout cleans both sudo models
---
duration_ms: 9.361046
type: 'test'
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:780:33'
failureType: 'testCodeFailure'
error: 'read is not defined'
code: 'ERR_TEST_FAILURE'
name: 'ReferenceError'
stack: |-
legacyBody (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:763:15)
legacyCall (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:767:63)
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:786:35)
Test.runInAsyncScope (node:async_hooks:226:14)
Test.run (node:internal/test_runner/test:1402:25)
Test.start (node:internal/test_runner/test:1262:17)
startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17)
...
1..1
# tests 1
# suites 0
# pass 0
# fail 1
# cancelled 0
# skipped 0
# todo 0
# duration_ms 118.685125
@@ -0,0 +1,38 @@
{
"grant": "sage-2964",
"steps": [
{
"code": 0,
"timeout": false,
"seconds": 0.064,
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-276/run1/syntax-0.log",
"name": "syntax-0",
"expected_red": false
},
{
"code": 0,
"timeout": false,
"seconds": 0.064,
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-276/run1/syntax-1.log",
"name": "syntax-1",
"expected_red": false
},
{
"code": 1,
"timeout": false,
"seconds": 0.214,
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-276/run1/intended-red.log",
"name": "intended-red",
"expected_red": true
},
{
"code": 1,
"timeout": false,
"seconds": 0.164,
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-276/run1/focused-green.log",
"name": "focused-green",
"expected_red": false
}
],
"wall_seconds": 5.977
}
@@ -0,0 +1 @@
2026-10-22T19:52:30.155247+00:00
@@ -0,0 +1 @@
["timeout", "-k", "10", "60", "node", "--check", "packages/cli/tests/case1-accept.test.mjs"]
Whitespace-only changes.
@@ -0,0 +1 @@
["timeout", "-k", "10", "60", "node", "--check", "packages/cli/tests/case-sudo-fixture.mjs"]
Whitespace-only changes.
@@ -0,0 +1,184 @@
{
"grant": "sage-2964",
"head": "3c4c463da064f495d0315324299c4dabedd98658",
"base": "0cbe2e9b3",
"manifest": "ee573455115fa148981dcbd097058b7071d17baba18137945f4f2191ea5f1b11",
"scope": {
"whole_files": [
"packages/cli/tests/case1-accept.test.mjs",
"packages/cli/tests/case2-unit.test.mjs"
],
"shells": [
"scripts/test-auth.sh",
"scripts/test-conductor.sh",
"scripts/test-config.sh",
"scripts/test-discord.sh",
"scripts/test-extension-package.sh",
"scripts/test-foundation.sh",
"scripts/test-land-work.sh",
"scripts/test-queue.sh",
"scripts/test-release.sh",
"scripts/test-task.sh"
],
"mutants": [
"M1",
"M2",
"M3",
"M4",
"M5",
"M6",
"M7",
"M8",
"M9",
"M10",
"M11",
"M12",
"M13",
"M14",
"M15"
],
"red_pattern": "row276 talk legacy inner timeout",
"node_seconds": 900,
"estimate_minutes": "12-18; no row276 measured runtime yet"
},
"limits": {
"files": {
"packages/cli/tests/case1-accept.test.mjs": 900,
"packages/cli/tests/case2-unit.test.mjs": 900
},
"basis": "No row276 timing yet; initial900s per whole file; Sage may adjust before CLEAR."
},
"shell_limits": {
"authority": [
"mos-1275",
"sage-2659"
],
"scope": "Own Gander row196 receipt set documented for row278, plus the complete row278 run3 shell phase. Row253 old C4 results do not carry. Receipts choose timeouts only.",
"consulted_records": [
"ec1e7fad8:agents/gander/work/queue-196/evidence/suite-results-run1.json",
"ec1e7fad8:agents/gander/work/queue-196/evidence/suite-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r2/mutants/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r2/run2/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r2/run2/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r3/gate/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r3/gate/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r3/gate/sso-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/sso-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/whole-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r5/gate/whole-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r5/resume/summary.json",
"ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/first-attempt/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/summary.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"385a7194c:agents/gander/work/queue-278/run3/whole/results.json"
],
"scripts": {
"scripts/test-auth.sh": {
"recorded_duration_seconds": 1.9081228229999543,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 126,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "dd4720cb0cbecd2fc523a318f2222d21d257c8c5889996a3d69e522ee971a707",
"previous_maximum_seconds": 1.9081228229999543,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"row278_run3_seconds": 0.816
},
"scripts/test-conductor.sh": {
"recorded_duration_seconds": 8.057173820000026,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 145,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "da84150467494a4c979759f400854411bd93a7efce981139757bf526d688a23b",
"previous_maximum_seconds": 8.057173820000026,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"row278_run3_seconds": 6.078
},
"scripts/test-config.sh": {
"recorded_duration_seconds": 3.1678915339999367,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 130,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "3301c1fabf616bb961d62f6decd0a46dadb0f399b8ba7f3c2ca60023d2b24c78",
"previous_maximum_seconds": 3.1678915339999367,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"row278_run3_seconds": 1.868
},
"scripts/test-discord.sh": {
"recorded_duration_seconds": 8.776727847000002,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 147,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "a5dcf783c51a5d5d184a357f91ebf9fa1c4e054f0cb84a3d1d7668f6156e025e",
"previous_maximum_seconds": 8.776727847000002,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 7.431
},
"scripts/test-extension-package.sh": {
"recorded_duration_seconds": 3.01285702399991,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 130,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "5d7b687f16fd1a9414b229501177d530ba3af4eadd3cac319b33f38fdba9bf99",
"previous_maximum_seconds": 3.01285702399991,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 1.366
},
"scripts/test-foundation.sh": {
"recorded_duration_seconds": 49.367,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 269,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "2e11038e7f784ec4f539eb768f63bab0fab9c9940334388a1fe2d47ab9e2b008",
"previous_maximum_seconds": 39.70872647900006,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 39.901
},
"scripts/test-land-work.sh": {
"recorded_duration_seconds": 16.854,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 171,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "c9d1d5c9b006d5c12e5f796a9828361059f8e0410846fc55c070c0148b15cef4",
"previous_maximum_seconds": 12.623263413000037,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 11.338
},
"scripts/test-queue.sh": {
"recorded_duration_seconds": 35.155,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 226,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "c270f181d1fa8b6d42ff4131c339beba786a8fd620bb66f8afdcec05e8b10868",
"previous_maximum_seconds": 23.443742031000088,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 21.158
},
"scripts/test-release.sh": {
"recorded_duration_seconds": 12.168674453999964,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 157,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "be706dff832257bd4781abeabd19faa4ac16edf9a4af0c96457e33cf3bb6deb3",
"previous_maximum_seconds": 12.168674453999964,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 2.67
},
"scripts/test-task.sh": {
"recorded_duration_seconds": 36.783798266,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 231,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "10c4abb70bf9b83e617089b06a5436cc7fa6b866a176458b22128c3a15163f94",
"previous_maximum_seconds": 36.783798266,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 13.843
}
}
},
"carry": "NONE; run1 void"
}
@@ -0,0 +1,7 @@
# Run2 stopped, unplaced
Grant sage-2964. HEAD3c4c463da, manifestee573455. Two syntax preflights passed. Intended RED failed on the exact missing-supervisor-block assertion and the script was restored byte-identically. Focused GREEN failed its exact stderr assertion at case1-accept.test.mjs:789. Expected only `case1-accept: talk inner-timeout\n`; received a vanished `/proc/1540171/stat` diagnostic first. No timeout. No whole files, mutants or shells ran. This is the second unexpected red; no repair or rerun is authorized pending Mos placement. Report gander-0140 went directly to Mos, Sage and Duckworth; slot returned.
Static lead only: existing supervisor stat_fields redirects stdin before stderr. Duckworth0113 N5 identified that ordering. This row preserved the supervisor bytes. No product or assertion change made after this stop.
Read-only sweep:0 run leftovers,9 pre-existing MCP/npm/code-mode processes excluded by pre-run start ticks (19:49:17..29 UTC). Initial raw sweep and final classification retained. No processes signalled. All run2 evidence retained; no passing gate claim.
+1
View File
@@ -0,0 +1 @@
/mnt/storage/scratch/tmp/gTa6
@@ -0,0 +1,273 @@
{
"grant": "sage-2964",
"head": "3c4c463da064f495d0315324299c4dabedd98658",
"base": "0cbe2e9b3",
"manifest": "ee573455115fa148981dcbd097058b7071d17baba18137945f4f2191ea5f1b11",
"scope": {
"whole_files": [
"packages/cli/tests/case1-accept.test.mjs",
"packages/cli/tests/case2-unit.test.mjs"
],
"shells": [
"scripts/test-auth.sh",
"scripts/test-conductor.sh",
"scripts/test-config.sh",
"scripts/test-discord.sh",
"scripts/test-extension-package.sh",
"scripts/test-foundation.sh",
"scripts/test-land-work.sh",
"scripts/test-queue.sh",
"scripts/test-release.sh",
"scripts/test-task.sh"
],
"mutants": [
"M1",
"M2",
"M3",
"M4",
"M5",
"M6",
"M7",
"M8",
"M9",
"M10",
"M11",
"M12",
"M13",
"M14",
"M15"
],
"red_pattern": "row276 talk legacy inner timeout",
"node_seconds": 900,
"estimate_minutes": "12-18; no row276 measured runtime yet"
},
"limits": {
"files": {
"packages/cli/tests/case1-accept.test.mjs": 900,
"packages/cli/tests/case2-unit.test.mjs": 900
},
"basis": "No row276 timing yet; initial900s per whole file; Sage may adjust before CLEAR."
},
"shell_limits": {
"authority": [
"mos-1275",
"sage-2659"
],
"scope": "Own Gander row196 receipt set documented for row278, plus the complete row278 run3 shell phase. Row253 old C4 results do not carry. Receipts choose timeouts only.",
"consulted_records": [
"ec1e7fad8:agents/gander/work/queue-196/evidence/suite-results-run1.json",
"ec1e7fad8:agents/gander/work/queue-196/evidence/suite-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r2/mutants/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r2/run2/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r2/run2/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r3/gate/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r3/gate/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r3/gate/sso-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/sso-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/whole-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r5/gate/whole-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r5/resume/summary.json",
"ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/first-attempt/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/summary.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"385a7194c:agents/gander/work/queue-278/run3/whole/results.json"
],
"scripts": {
"scripts/test-auth.sh": {
"recorded_duration_seconds": 1.9081228229999543,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 126,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "dd4720cb0cbecd2fc523a318f2222d21d257c8c5889996a3d69e522ee971a707",
"previous_maximum_seconds": 1.9081228229999543,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"row278_run3_seconds": 0.816
},
"scripts/test-conductor.sh": {
"recorded_duration_seconds": 8.057173820000026,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 145,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "da84150467494a4c979759f400854411bd93a7efce981139757bf526d688a23b",
"previous_maximum_seconds": 8.057173820000026,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"row278_run3_seconds": 6.078
},
"scripts/test-config.sh": {
"recorded_duration_seconds": 3.1678915339999367,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 130,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "3301c1fabf616bb961d62f6decd0a46dadb0f399b8ba7f3c2ca60023d2b24c78",
"previous_maximum_seconds": 3.1678915339999367,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"row278_run3_seconds": 1.868
},
"scripts/test-discord.sh": {
"recorded_duration_seconds": 8.776727847000002,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 147,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "a5dcf783c51a5d5d184a357f91ebf9fa1c4e054f0cb84a3d1d7668f6156e025e",
"previous_maximum_seconds": 8.776727847000002,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 7.431
},
"scripts/test-extension-package.sh": {
"recorded_duration_seconds": 3.01285702399991,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 130,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "5d7b687f16fd1a9414b229501177d530ba3af4eadd3cac319b33f38fdba9bf99",
"previous_maximum_seconds": 3.01285702399991,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 1.366
},
"scripts/test-foundation.sh": {
"recorded_duration_seconds": 49.367,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 269,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "2e11038e7f784ec4f539eb768f63bab0fab9c9940334388a1fe2d47ab9e2b008",
"previous_maximum_seconds": 39.70872647900006,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 39.901
},
"scripts/test-land-work.sh": {
"recorded_duration_seconds": 16.854,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 171,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "c9d1d5c9b006d5c12e5f796a9828361059f8e0410846fc55c070c0148b15cef4",
"previous_maximum_seconds": 12.623263413000037,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 11.338
},
"scripts/test-queue.sh": {
"recorded_duration_seconds": 35.155,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 226,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "c270f181d1fa8b6d42ff4131c339beba786a8fd620bb66f8afdcec05e8b10868",
"previous_maximum_seconds": 23.443742031000088,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 21.158
},
"scripts/test-release.sh": {
"recorded_duration_seconds": 12.168674453999964,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 157,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "be706dff832257bd4781abeabd19faa4ac16edf9a4af0c96457e33cf3bb6deb3",
"previous_maximum_seconds": 12.168674453999964,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 2.67
},
"scripts/test-task.sh": {
"recorded_duration_seconds": 36.783798266,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 231,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "10c4abb70bf9b83e617089b06a5436cc7fa6b866a176458b22128c3a15163f94",
"previous_maximum_seconds": 36.783798266,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 13.843
}
}
},
"carry": "NONE; run1 void"
}
START syntax-0
END syntax-0
START syntax-1
END syntax-1
START intended-red
TAP version 13
# Subtest: row276 talk legacy inner timeout cleans both sudo models
not ok 1 - row276 talk legacy inner timeout cleans both sudo models
---
duration_ms: 10.867344
type: 'test'
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:781:33'
failureType: 'testCodeFailure'
error: 'legacy supervisor block exists'
code: 'ERR_ASSERTION'
name: 'AssertionError'
expected: true
actual: false
operator: '=='
stack: |-
legacyBody (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:765:9)
legacyCall (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:768:63)
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:787:35)
Test.runInAsyncScope (node:async_hooks:226:14)
Test.run (node:internal/test_runner/test:1402:25)
Test.start (node:internal/test_runner/test:1262:17)
startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17)
...
1..1
# tests 1
# suites 0
# pass 0
# fail 1
# cancelled 0
# skipped 0
# todo 0
# duration_ms 137.286411
END intended-red
START focused-green
TAP version 13
# Subtest: row276 talk legacy inner timeout cleans both sudo models
not ok 1 - row276 talk legacy inner timeout cleans both sudo models
---
duration_ms: 933.722299
type: 'test'
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:781:33'
failureType: 'testCodeFailure'
error: |-
Expected values to be strictly equal:
+ actual - expected
+ '--: line 7: /proc/1540171/stat: No such file or directory\n' +
+ 'case1-accept: talk inner-timeout\n'
- 'case1-accept: talk inner-timeout\n'
code: 'ERR_ASSERTION'
name: 'AssertionError'
expected: |-
case1-accept: talk inner-timeout
actual: |-
--: line 7: /proc/1540171/stat: No such file or directory
case1-accept: talk inner-timeout
operator: 'strictEqual'
stack: |-
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:789:10)
Test.runInAsyncScope (node:async_hooks:226:14)
Test.run (node:internal/test_runner/test:1402:25)
Test.start (node:internal/test_runner/test:1262:17)
startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17)
...
1..1
# tests 1
# suites 0
# pass 0
# fail 1
# cancelled 0
# skipped 0
# todo 0
# duration_ms 1030.268812
Traceback (most recent call last):
File "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-276/run2/execute.py", line 20, in <module>
step('focused-green',['node','--test','--test-reporter=tap','--test-name-pattern','row276 talk legacy inner timeout','packages/cli/tests/case1-accept.test.mjs'])
File "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-276/run2/execute.py", line 9, in step
if v['timeout'] or (v['code']==0 if red else v['code']!=0):raise RuntimeError('unexpected result: stop and classify '+name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: unexpected result: stop and classify focused-green
@@ -0,0 +1 @@
2026-10-22T19:59:17.245959+00:00
@@ -0,0 +1,27 @@
import datetime,hashlib,importlib.util,json,os,pathlib,subprocess,sys,time
sys.dont_write_bytecode=True
r=pathlib.Path(__file__).resolve().parent;p=r.parent
spec=importlib.util.spec_from_file_location('row276_driver',p/'driver.py');d=importlib.util.module_from_spec(spec);spec.loader.exec_module(d)
start=time.monotonic();results=dict(grant='sage-2964',steps=[])
(r/'start.txt').write_text(datetime.datetime.now(datetime.timezone.utc).isoformat()+'\n');print((r/'HEADER.json').read_text(),flush=True)
def step(name,cmd,red=False,seconds=1200):
print('START '+name,flush=True);v=d.run(cmd,r/(name+'.log'),seconds=seconds);v.update(name=name,expected_red=red);results['steps'].append(v);results['wall_seconds']=round(time.monotonic()-start,3);(r/'results.json').write_text(json.dumps(results,indent=2)+'\n')
if v['timeout'] or (v['code']==0 if red else v['code']!=0):raise RuntimeError('unexpected result: stop and classify '+name)
if red and 'legacy supervisor block exists' not in (r/(name+'.log')).read_text():raise RuntimeError('wrong RED reason: stop and classify')
print('END '+name,flush=True)
for f in ['packages/cli/tests/case1-accept.test.mjs','packages/cli/tests/case-sudo-fixture.mjs']:
step('syntax-'+str(len(results['steps'])),['timeout','-k','10','60','node','--check',f],seconds=90)
target=d.REPO/'scripts/case1-accept.sh';original=target.read_bytes();status=subprocess.check_output(['git','status','--porcelain','--untracked-files=no'],cwd=d.REPO)
try:
target.write_bytes(subprocess.check_output(['git','show','48e450ce8:scripts/case1-accept.sh'],cwd=d.REPO))
step('intended-red',['node','--test','--test-reporter=tap','--test-name-pattern','row276 talk legacy inner timeout','packages/cli/tests/case1-accept.test.mjs'],red=True)
finally:
target.write_bytes(original);assert target.read_bytes()==original;assert subprocess.check_output(['git','status','--porcelain','--untracked-files=no'],cwd=d.REPO)==status
step('focused-green',['node','--test','--test-reporter=tap','--test-name-pattern','row276 talk legacy inner timeout','packages/cli/tests/case1-accept.test.mjs'])
scope=json.loads((p/'GATE-SCOPE.json').read_text())
for i,f in enumerate(scope['whole_files']):step('whole-'+str(i+1),['node','--test','--test-reporter=tap',f])
step('changes-controller',[sys.executable,str(p/'driver.py'),'--grant','sage-2964','--out',str(r/'changes')],seconds=900)
limits=json.loads((p/'SHELL-LIMITS.json').read_text())['scripts']
for i,f in enumerate(scope['shells']):
limit=limits[f]['limit_seconds'];step('shell-'+str(i+1),['timeout','-k','10',str(limit),'bash',f],seconds=limit+30)
(r/'end.txt').write_text(datetime.datetime.now(datetime.timezone.utc).isoformat()+'\n');print('GATE COMPLETE',flush=True)
@@ -0,0 +1 @@
["timeout", "-k", "10", "900", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row276 talk legacy inner timeout", "packages/cli/tests/case1-accept.test.mjs"]
@@ -0,0 +1,42 @@
TAP version 13
# Subtest: row276 talk legacy inner timeout cleans both sudo models
not ok 1 - row276 talk legacy inner timeout cleans both sudo models
---
duration_ms: 933.722299
type: 'test'
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:781:33'
failureType: 'testCodeFailure'
error: |-
Expected values to be strictly equal:
+ actual - expected
+ '--: line 7: /proc/1540171/stat: No such file or directory\n' +
+ 'case1-accept: talk inner-timeout\n'
- 'case1-accept: talk inner-timeout\n'
code: 'ERR_ASSERTION'
name: 'AssertionError'
expected: |-
case1-accept: talk inner-timeout
actual: |-
--: line 7: /proc/1540171/stat: No such file or directory
case1-accept: talk inner-timeout
operator: 'strictEqual'
stack: |-
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:789:10)
Test.runInAsyncScope (node:async_hooks:226:14)
Test.run (node:internal/test_runner/test:1402:25)
Test.start (node:internal/test_runner/test:1262:17)
startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17)
...
1..1
# tests 1
# suites 0
# pass 0
# fail 1
# cancelled 0
# skipped 0
# todo 0
# duration_ms 1030.268812
@@ -0,0 +1 @@
["timeout", "-k", "10", "900", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row276 talk legacy inner timeout", "packages/cli/tests/case1-accept.test.mjs"]
@@ -0,0 +1,32 @@
TAP version 13
# Subtest: row276 talk legacy inner timeout cleans both sudo models
not ok 1 - row276 talk legacy inner timeout cleans both sudo models
---
duration_ms: 10.867344
type: 'test'
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:781:33'
failureType: 'testCodeFailure'
error: 'legacy supervisor block exists'
code: 'ERR_ASSERTION'
name: 'AssertionError'
expected: true
actual: false
operator: '=='
stack: |-
legacyBody (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:765:9)
legacyCall (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:768:63)
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:787:35)
Test.runInAsyncScope (node:async_hooks:226:14)
Test.run (node:internal/test_runner/test:1402:25)
Test.start (node:internal/test_runner/test:1262:17)
startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17)
...
1..1
# tests 1
# suites 0
# pass 0
# fail 1
# cancelled 0
# skipped 0
# todo 0
# duration_ms 137.286411
@@ -0,0 +1,38 @@
{
"grant": "sage-2964",
"steps": [
{
"code": 0,
"timeout": false,
"seconds": 0.064,
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-276/run2/syntax-0.log",
"name": "syntax-0",
"expected_red": false
},
{
"code": 0,
"timeout": false,
"seconds": 0.064,
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-276/run2/syntax-1.log",
"name": "syntax-1",
"expected_red": false
},
{
"code": 1,
"timeout": false,
"seconds": 0.214,
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-276/run2/intended-red.log",
"name": "intended-red",
"expected_red": true
},
{
"code": 1,
"timeout": false,
"seconds": 1.116,
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-276/run2/focused-green.log",
"name": "focused-green",
"expected_red": false
}
],
"wall_seconds": 6.99
}
@@ -0,0 +1 @@
2026-10-22T19:58:15.792523+00:00
@@ -0,0 +1,62 @@
{
"timestamp": "2026-10-22T19:58:35.030134+00:00",
"count": 9,
"remaining": [
{
"pid": 1425557,
"comm": "npm exec @model",
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
"started_utc": "2026-10-22T19:49:17.210000+00:00"
},
{
"pid": 1425563,
"comm": "node-MainThread",
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
"started_utc": "2026-10-22T19:49:17.230000+00:00"
},
{
"pid": 1425568,
"comm": "npm exec @playw",
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
"started_utc": "2026-10-22T19:49:17.240000+00:00"
},
{
"pid": 1425580,
"comm": "npm exec chrome",
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
"started_utc": "2026-10-22T19:49:17.240000+00:00"
},
{
"pid": 1425769,
"comm": "chrome-devtools",
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
"started_utc": "2026-10-22T19:49:18.330000+00:00"
},
{
"pid": 1425776,
"comm": "node-MainThread",
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
"started_utc": "2026-10-22T19:49:18.360000+00:00"
},
{
"pid": 1425783,
"comm": "node-MainThread",
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
"started_utc": "2026-10-22T19:49:18.440000+00:00"
},
{
"pid": 1425797,
"comm": "node-MainThread",
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
"started_utc": "2026-10-22T19:49:18.660000+00:00"
},
{
"pid": 1426427,
"comm": "codex-code-mode",
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
"started_utc": "2026-10-22T19:49:29.150000+00:00"
}
],
"excluded_preexisting_infrastructure": [],
"note": "Read-only /proc cwd sweep, including deleted cwd under this run TMPDIR. Own ancestry excluded. Only known MCP/npm/code-mode infrastructure PIDs with pre-run start ticks are excluded. No signalling."
}
@@ -0,0 +1,62 @@
{
"timestamp": "2026-10-22T19:58:41.939818+00:00",
"count": 0,
"remaining": [],
"excluded_preexisting_infrastructure": [
{
"pid": 1425557,
"comm": "npm exec @model",
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
"started_utc": "2026-10-22T19:49:17.210000+00:00"
},
{
"pid": 1425563,
"comm": "node-MainThread",
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
"started_utc": "2026-10-22T19:49:17.230000+00:00"
},
{
"pid": 1425568,
"comm": "npm exec @playw",
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
"started_utc": "2026-10-22T19:49:17.240000+00:00"
},
{
"pid": 1425580,
"comm": "npm exec chrome",
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
"started_utc": "2026-10-22T19:49:17.240000+00:00"
},
{
"pid": 1425769,
"comm": "chrome-devtools",
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
"started_utc": "2026-10-22T19:49:18.330000+00:00"
},
{
"pid": 1425776,
"comm": "node-MainThread",
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
"started_utc": "2026-10-22T19:49:18.360000+00:00"
},
{
"pid": 1425783,
"comm": "node-MainThread",
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
"started_utc": "2026-10-22T19:49:18.440000+00:00"
},
{
"pid": 1425797,
"comm": "node-MainThread",
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
"started_utc": "2026-10-22T19:49:18.660000+00:00"
},
{
"pid": 1426427,
"comm": "codex-code-mode",
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
"started_utc": "2026-10-22T19:49:29.150000+00:00"
}
],
"note": "Read-only /proc cwd sweep, including deleted cwd under this run TMPDIR. Own ancestry excluded. Only known MCP/npm/code-mode infrastructure PIDs with pre-run start ticks are excluded. No signalling."
}
@@ -0,0 +1,34 @@
#!/usr/bin/env python3
"""Read-only sweep of this worktree and focused TMPDIR, including deleted cwd."""
import datetime
import json
import os
from pathlib import Path
HERE=Path(__file__).resolve().parent.parent
REPO=HERE.parents[3]
RUN=HERE/'run2'
def main():
tmp=Path((RUN/'TMPDIR').read_text().strip())
started=datetime.datetime.fromisoformat((RUN/'start.txt').read_text().strip().replace('Z','+00:00')).timestamp()
boot=int(next(s.split()[1] for s in Path('/proc/stat').read_text().splitlines() if s.startswith('btime ')))
ancestors=set();pid=os.getpid()
while pid and pid not in ancestors:
ancestors.add(pid)
try:pid=int(next(s.split(':')[1] for s in Path(f'/proc/{pid}/status').read_text().splitlines() if s.startswith('PPid:')))
except (OSError,StopIteration):break
known={1425557,1425563,1425568,1425580,1425769,1425776,1425783,1425797,1426427,2880281,2880282,2880283,2880284,2880445,2880487,2880537,2883251,2880439,2469277,2469278,2469279,2469292,2469478,2469485,2469518,2469601,2470486}
remaining=[];excluded=[]
for proc in Path('/proc').iterdir():
if not proc.name.isdigit() or int(proc.name) in ancestors:continue
try:
rawcwd=os.readlink(proc/'cwd');cwd=Path(rawcwd.removesuffix(' (deleted)'))
if not(cwd==REPO or REPO in cwd.parents or cwd==tmp or tmp in cwd.parents):continue
stat=(proc/'stat').read_text().rsplit(') ',1)[1].split()
stamp=boot+int(stat[19])/os.sysconf('SC_CLK_TCK')
item=dict(pid=int(proc.name),comm=(proc/'comm').read_text().strip(),cwd=rawcwd,started_utc=datetime.datetime.fromtimestamp(stamp,datetime.timezone.utc).isoformat())
if int(proc.name) in known and stamp<started:excluded.append(item)
else:remaining.append(item)
except (OSError,ValueError,IndexError):continue
result=dict(timestamp=datetime.datetime.now(datetime.timezone.utc).isoformat(),count=len(remaining),remaining=remaining,excluded_preexisting_infrastructure=excluded,note='Read-only /proc cwd sweep, including deleted cwd under this run TMPDIR. Own ancestry excluded. Only known MCP/npm/code-mode infrastructure PIDs with pre-run start ticks are excluded. No signalling.')
(RUN/'sweep.json').write_text(json.dumps(result,indent=2)+'\n');print(json.dumps(result,indent=2))
if __name__=='__main__':main()
@@ -0,0 +1 @@
["timeout", "-k", "10", "60", "node", "--check", "packages/cli/tests/case1-accept.test.mjs"]
Whitespace-only changes.
@@ -0,0 +1 @@
["timeout", "-k", "10", "60", "node", "--check", "packages/cli/tests/case-sudo-fixture.mjs"]
Whitespace-only changes.
@@ -0,0 +1,8 @@
{
"tests": 49,
"pass": 46,
"fail": 3,
"skipped": 0,
"cancelled": 0,
"todo": 0
}
@@ -0,0 +1,9 @@
{
"base": "0cbe2e9b3",
"refactor": "f2735bb6a",
"manifest_path_drift": "",
"all_changed_paths": [
"docs/plans/QUEUE.md",
"docs/plans/queue.json"
]
}
@@ -0,0 +1,185 @@
{
"grant": "sage-2988",
"head": "804a854dcab1d1876e274e8fbc7391ac979936d2",
"base": "0cbe2e9b3",
"manifest": "214aeb9e6c4437d66f3bee7c51dca5e20e0e1b2b8415cb8389dff567d0e8538a",
"scope": {
"whole_files": [
"packages/cli/tests/case1-accept.test.mjs",
"packages/cli/tests/case2-unit.test.mjs"
],
"shells": [
"scripts/test-auth.sh",
"scripts/test-conductor.sh",
"scripts/test-config.sh",
"scripts/test-discord.sh",
"scripts/test-extension-package.sh",
"scripts/test-foundation.sh",
"scripts/test-land-work.sh",
"scripts/test-queue.sh",
"scripts/test-release.sh",
"scripts/test-task.sh"
],
"mutants": [
"M1",
"M2",
"M3",
"M4",
"M5",
"M6",
"M7",
"M8",
"M9",
"M10",
"M11",
"M12",
"M13",
"M14",
"M15",
"M16"
],
"red_pattern": "row276 talk legacy inner timeout",
"node_seconds": 900,
"estimate_minutes": "12-18; no row276 measured runtime yet"
},
"limits": {
"files": {
"packages/cli/tests/case1-accept.test.mjs": 900,
"packages/cli/tests/case2-unit.test.mjs": 900
},
"basis": "No row276 timing yet; initial900s per whole file; Sage may adjust before CLEAR."
},
"shell_limits": {
"authority": [
"mos-1275",
"sage-2659"
],
"scope": "Own Gander row196 receipt set documented for row278, plus the complete row278 run3 shell phase. Row253 old C4 results do not carry. Receipts choose timeouts only.",
"consulted_records": [
"ec1e7fad8:agents/gander/work/queue-196/evidence/suite-results-run1.json",
"ec1e7fad8:agents/gander/work/queue-196/evidence/suite-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r2/mutants/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r2/run2/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r2/run2/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r3/gate/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r3/gate/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r3/gate/sso-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/sso-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/whole-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r5/gate/whole-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r5/resume/summary.json",
"ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/first-attempt/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/summary.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"385a7194c:agents/gander/work/queue-278/run3/whole/results.json"
],
"scripts": {
"scripts/test-auth.sh": {
"recorded_duration_seconds": 1.9081228229999543,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 126,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "dd4720cb0cbecd2fc523a318f2222d21d257c8c5889996a3d69e522ee971a707",
"previous_maximum_seconds": 1.9081228229999543,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"row278_run3_seconds": 0.816
},
"scripts/test-conductor.sh": {
"recorded_duration_seconds": 8.057173820000026,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 145,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "da84150467494a4c979759f400854411bd93a7efce981139757bf526d688a23b",
"previous_maximum_seconds": 8.057173820000026,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"row278_run3_seconds": 6.078
},
"scripts/test-config.sh": {
"recorded_duration_seconds": 3.1678915339999367,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 130,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "3301c1fabf616bb961d62f6decd0a46dadb0f399b8ba7f3c2ca60023d2b24c78",
"previous_maximum_seconds": 3.1678915339999367,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"row278_run3_seconds": 1.868
},
"scripts/test-discord.sh": {
"recorded_duration_seconds": 8.776727847000002,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 147,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "a5dcf783c51a5d5d184a357f91ebf9fa1c4e054f0cb84a3d1d7668f6156e025e",
"previous_maximum_seconds": 8.776727847000002,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 7.431
},
"scripts/test-extension-package.sh": {
"recorded_duration_seconds": 3.01285702399991,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 130,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "5d7b687f16fd1a9414b229501177d530ba3af4eadd3cac319b33f38fdba9bf99",
"previous_maximum_seconds": 3.01285702399991,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 1.366
},
"scripts/test-foundation.sh": {
"recorded_duration_seconds": 49.367,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 269,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "2e11038e7f784ec4f539eb768f63bab0fab9c9940334388a1fe2d47ab9e2b008",
"previous_maximum_seconds": 39.70872647900006,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 39.901
},
"scripts/test-land-work.sh": {
"recorded_duration_seconds": 16.854,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 171,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "c9d1d5c9b006d5c12e5f796a9828361059f8e0410846fc55c070c0148b15cef4",
"previous_maximum_seconds": 12.623263413000037,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 11.338
},
"scripts/test-queue.sh": {
"recorded_duration_seconds": 35.155,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 226,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "c270f181d1fa8b6d42ff4131c339beba786a8fd620bb66f8afdcec05e8b10868",
"previous_maximum_seconds": 23.443742031000088,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 21.158
},
"scripts/test-release.sh": {
"recorded_duration_seconds": 12.168674453999964,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 157,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "be706dff832257bd4781abeabd19faa4ac16edf9a4af0c96457e33cf3bb6deb3",
"previous_maximum_seconds": 12.168674453999964,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 2.67
},
"scripts/test-task.sh": {
"recorded_duration_seconds": 36.783798266,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 231,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "10c4abb70bf9b83e617089b06a5436cc7fa6b866a176458b22128c3a15163f94",
"previous_maximum_seconds": 36.783798266,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 13.843
}
}
},
"carry": "NONE; fresh run3 after mos-1337"
}
@@ -0,0 +1,7 @@
# Run3 stop, unplaced
Grant sage-2988 on804a854dc, manifest214aeb9e. Manifest drift to refactorf2735bb6a is empty; only queue files moved. Syntax2/0, intended RED expected missing-block assertion, restore exact, focused GREEN1/0. Whole case1 file46/3/0,225.790s, no timeout. No case2 whole, mutants or shell suites started.
Failures: wiring test at734 null F7 regex capture; precheck outer-bound hop timing4.5403s at827 vs <3; new version/PM extraction test at848 failed at/end assertion. New vanished-pid test passes. Existing exact inner timeout assertions pass all five legacy cases. No assertion or source edited after run. gander-0146 reports all failures unplaced to Mos, Sage and Duckworth and returns slot. Sweep0 run leftovers,9 pre-existing infrastructure excluded.
Static leads only, no repair authorized: F7 regex expects a semicolon before check_f7, and extraction delimiter for check_f6 is a JavaScript-style comment string. The hop stalled fake retains a session until fixture guard at4500ms; elapsed needs diagnosis, not a wider limit. No rerun or product change.
+1
View File
@@ -0,0 +1 @@
/mnt/storage/scratch/tmp/gyHG
@@ -0,0 +1,603 @@
{
"grant": "sage-2988",
"head": "804a854dcab1d1876e274e8fbc7391ac979936d2",
"base": "0cbe2e9b3",
"manifest": "214aeb9e6c4437d66f3bee7c51dca5e20e0e1b2b8415cb8389dff567d0e8538a",
"scope": {
"whole_files": [
"packages/cli/tests/case1-accept.test.mjs",
"packages/cli/tests/case2-unit.test.mjs"
],
"shells": [
"scripts/test-auth.sh",
"scripts/test-conductor.sh",
"scripts/test-config.sh",
"scripts/test-discord.sh",
"scripts/test-extension-package.sh",
"scripts/test-foundation.sh",
"scripts/test-land-work.sh",
"scripts/test-queue.sh",
"scripts/test-release.sh",
"scripts/test-task.sh"
],
"mutants": [
"M1",
"M2",
"M3",
"M4",
"M5",
"M6",
"M7",
"M8",
"M9",
"M10",
"M11",
"M12",
"M13",
"M14",
"M15",
"M16"
],
"red_pattern": "row276 talk legacy inner timeout",
"node_seconds": 900,
"estimate_minutes": "12-18; no row276 measured runtime yet"
},
"limits": {
"files": {
"packages/cli/tests/case1-accept.test.mjs": 900,
"packages/cli/tests/case2-unit.test.mjs": 900
},
"basis": "No row276 timing yet; initial900s per whole file; Sage may adjust before CLEAR."
},
"shell_limits": {
"authority": [
"mos-1275",
"sage-2659"
],
"scope": "Own Gander row196 receipt set documented for row278, plus the complete row278 run3 shell phase. Row253 old C4 results do not carry. Receipts choose timeouts only.",
"consulted_records": [
"ec1e7fad8:agents/gander/work/queue-196/evidence/suite-results-run1.json",
"ec1e7fad8:agents/gander/work/queue-196/evidence/suite-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r2/mutants/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r2/run2/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r2/run2/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r3/gate/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r3/gate/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r3/gate/sso-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/sso-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/whole-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r5/gate/whole-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r5/resume/summary.json",
"ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/first-attempt/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/summary.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"385a7194c:agents/gander/work/queue-278/run3/whole/results.json"
],
"scripts": {
"scripts/test-auth.sh": {
"recorded_duration_seconds": 1.9081228229999543,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 126,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "dd4720cb0cbecd2fc523a318f2222d21d257c8c5889996a3d69e522ee971a707",
"previous_maximum_seconds": 1.9081228229999543,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"row278_run3_seconds": 0.816
},
"scripts/test-conductor.sh": {
"recorded_duration_seconds": 8.057173820000026,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 145,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "da84150467494a4c979759f400854411bd93a7efce981139757bf526d688a23b",
"previous_maximum_seconds": 8.057173820000026,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"row278_run3_seconds": 6.078
},
"scripts/test-config.sh": {
"recorded_duration_seconds": 3.1678915339999367,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 130,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "3301c1fabf616bb961d62f6decd0a46dadb0f399b8ba7f3c2ca60023d2b24c78",
"previous_maximum_seconds": 3.1678915339999367,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"row278_run3_seconds": 1.868
},
"scripts/test-discord.sh": {
"recorded_duration_seconds": 8.776727847000002,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 147,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "a5dcf783c51a5d5d184a357f91ebf9fa1c4e054f0cb84a3d1d7668f6156e025e",
"previous_maximum_seconds": 8.776727847000002,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 7.431
},
"scripts/test-extension-package.sh": {
"recorded_duration_seconds": 3.01285702399991,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 130,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "5d7b687f16fd1a9414b229501177d530ba3af4eadd3cac319b33f38fdba9bf99",
"previous_maximum_seconds": 3.01285702399991,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 1.366
},
"scripts/test-foundation.sh": {
"recorded_duration_seconds": 49.367,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 269,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "2e11038e7f784ec4f539eb768f63bab0fab9c9940334388a1fe2d47ab9e2b008",
"previous_maximum_seconds": 39.70872647900006,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 39.901
},
"scripts/test-land-work.sh": {
"recorded_duration_seconds": 16.854,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 171,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "c9d1d5c9b006d5c12e5f796a9828361059f8e0410846fc55c070c0148b15cef4",
"previous_maximum_seconds": 12.623263413000037,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 11.338
},
"scripts/test-queue.sh": {
"recorded_duration_seconds": 35.155,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 226,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "c270f181d1fa8b6d42ff4131c339beba786a8fd620bb66f8afdcec05e8b10868",
"previous_maximum_seconds": 23.443742031000088,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 21.158
},
"scripts/test-release.sh": {
"recorded_duration_seconds": 12.168674453999964,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 157,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "be706dff832257bd4781abeabd19faa4ac16edf9a4af0c96457e33cf3bb6deb3",
"previous_maximum_seconds": 12.168674453999964,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 2.67
},
"scripts/test-task.sh": {
"recorded_duration_seconds": 36.783798266,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 231,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "10c4abb70bf9b83e617089b06a5436cc7fa6b866a176458b22128c3a15163f94",
"previous_maximum_seconds": 36.783798266,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 13.843
}
}
},
"carry": "NONE; fresh run3 after mos-1337"
}
START syntax-0
END syntax-0
START syntax-1
END syntax-1
START intended-red
TAP version 13
# Subtest: row276 talk legacy inner timeout cleans both sudo models
not ok 1 - row276 talk legacy inner timeout cleans both sudo models
---
duration_ms: 9.813976
type: 'test'
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:781:33'
failureType: 'testCodeFailure'
error: 'legacy supervisor block exists'
code: 'ERR_ASSERTION'
name: 'AssertionError'
expected: true
actual: false
operator: '=='
stack: |-
legacyBody (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:765:9)
legacyCall (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:768:63)
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:787:35)
Test.runInAsyncScope (node:async_hooks:226:14)
Test.run (node:internal/test_runner/test:1402:25)
Test.start (node:internal/test_runner/test:1262:17)
startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17)
...
1..1
# tests 1
# suites 0
# pass 0
# fail 1
# cancelled 0
# skipped 0
# todo 0
# duration_ms 104.754607
END intended-red
START focused-green
TAP version 13
# Subtest: row276 talk legacy inner timeout cleans both sudo models
ok 1 - row276 talk legacy inner timeout cleans both sudo models
---
duration_ms: 1652.495229
type: 'test'
...
1..1
# tests 1
# suites 0
# pass 1
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 1746.329797
END focused-green
START whole-1
TAP version 13
# Subtest: row253 socket observation uses configured root, metadata and the Console peer without sending bytes
ok 1 - row253 socket observation uses configured root, metadata and the Console peer without sending bytes
---
duration_ms: 1791.657354
type: 'test'
...
# Subtest: row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure
ok 2 - row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure
---
duration_ms: 28974.729265
type: 'test'
...
# Subtest: row253 acceptance rejects bad config and unsupported copies before talk
ok 3 - row253 acceptance rejects bad config and unsupported copies before talk
---
duration_ms: 1380.961821
type: 'test'
...
# Subtest: row253 stalled peer observation ends within its bound without leaving a reader
ok 4 - row253 stalled peer observation ends within its bound without leaving a reader
---
duration_ms: 4084.655072
type: 'test'
...
# Subtest: row253 P8 refuses both retired TCP and board listeners
ok 5 - row253 P8 refuses both retired TCP and board listeners
---
duration_ms: 3693.053088
type: 'test'
...
# Subtest: row253 C4 acceptance query inner reason holds under both sudo models
ok 6 - row253 C4 acceptance query inner reason holds under both sudo models
---
duration_ms: 10711.01411
type: 'test'
...
# Subtest: row253 C4 acceptance query outer reason discards stdout and names residual cleanup
ok 7 - row253 C4 acceptance query outer reason discards stdout and names residual cleanup
---
duration_ms: 14176.546153
type: 'test'
...
# Subtest: row253 C4 acceptance query overflow is output-limit in both models
ok 8 - row253 C4 acceptance query overflow is output-limit in both models
---
duration_ms: 462.612226
type: 'test'
...
# Subtest: row253 C4 P10 inner reason holds under both sudo models
ok 9 - row253 C4 P10 inner reason holds under both sudo models
---
duration_ms: 7942.352401
type: 'test'
...
# Subtest: row253 C4 P10 outer reason holds under both sudo models
ok 10 - row253 C4 P10 outer reason holds under both sudo models
---
duration_ms: 11450.396895
type: 'test'
...
# Subtest: row253 C4 P10 overflow reason holds under both sudo models
ok 11 - row253 C4 P10 overflow reason holds under both sudo models
---
duration_ms: 3725.029658
type: 'test'
...
# Subtest: row 195 accept: every check passing exits 0, with each P mark and counts that match the lines
ok 12 - row 195 accept: every check passing exits 0, with each P mark and counts that match the lines
---
duration_ms: 1801.220055
type: 'test'
...
# Subtest: row 195 accept: exits 1 with each F check failing alone, and its line names it
ok 13 - row 195 accept: exits 1 with each F check failing alone, and its line names it
---
duration_ms: 20137.622527
type: 'test'
...
# Subtest: row 195 accept: F3 fails on exit 0 with no reply line, and its evidence takes talk's error
ok 14 - row 195 accept: F3 fails on exit 0 with no reply line, and its evidence takes talk's error
---
duration_ms: 3624.936861
type: 'test'
...
# Subtest: row 195 accept: F1 fails on a unit that isn't active or isn't User=mosaic
ok 15 - row 195 accept: F1 fails on a unit that isn't active or isn't User=mosaic
---
duration_ms: 3463.316786
type: 'test'
...
# Subtest: row 195 accept: F2 fails when healthz doesn't answer and when another pid holds the port
ok 16 - row 195 accept: F2 fails when healthz doesn't answer and when another pid holds the port
---
duration_ms: 3660.585067
type: 'test'
...
# Subtest: row 195 accept: F5 fails on unpriv_bwrap (enforce), on complain and on a trailing space
ok 17 - row 195 accept: F5 fails on unpriv_bwrap (enforce), on complain and on a trailing space
---
duration_ms: 8491.604323
type: 'test'
...
# Subtest: row 195 accept: F5 fails with no bwrap of mosaic's, and passes on comm alone
ok 18 - row 195 accept: F5 fails with no bwrap of mosaic's, and passes on comm alone
---
duration_ms: 3962.982132
type: 'test'
...
# Subtest: row 195 accept: F6 fails on a stub that prints nothing, on a path outside claude-<pin> and on a .. segment
ok 19 - row 195 accept: F6 fails on a stub that prints nothing, on a path outside claude-<pin> and on a .. segment
---
duration_ms: 5070.327942
type: 'test'
...
# Subtest: row 195 accept: F7 fails on two live PM launches, one for another business, and no launch.by
ok 20 - row 195 accept: F7 fails on two live PM launches, one for another business, and no launch.by
---
duration_ms: 5489.785764
type: 'test'
...
# Subtest: row 195 accept: F8 fails on 0640, on another owner and on a symlink, and never prints the credential
ok 21 - row 195 accept: F8 fails on 0640, on another owner and on a symlink, and never prints the credential
---
duration_ms: 5414.01691
type: 'test'
...
# Subtest: row 195 accept: F9 fails on another owner, a group-writable mode and a number for the flag
ok 22 - row 195 accept: F9 fails on another owner, a group-writable mode and a number for the flag
---
duration_ms: 5333.670892
type: 'test'
...
# Subtest: row 195 accept: F9 won't run --node as root off the pin path or with a writable directory above it
ok 23 - row 195 accept: F9 won't run --node as root off the pin path or with a writable directory above it
---
duration_ms: 5055.165314
type: 'test'
...
# Subtest: row 195 accept: F11 fails on one *.json under discord/ and passes on an empty directory
ok 24 - row 195 accept: F11 fails on one *.json under discord/ and passes on an empty directory
---
duration_ms: 3590.767257
type: 'test'
...
# Subtest: row 195 accept: each P check reports unnamed on its fault, and the exit stays 0
ok 25 - row 195 accept: each P check reports unnamed on its fault, and the exit stays 0
---
duration_ms: 15882.813145
type: 'test'
...
# Subtest: row 195 accept: P2 is unnamed with a supplementary group, and P5 names docker
ok 26 - row 195 accept: P2 is unnamed with a supplementary group, and P5 names docker
---
duration_ms: 3560.261141
type: 'test'
...
# Subtest: row 195 accept: P5 is closed with no jarvis account, and P2 with an empty authorized_keys
ok 27 - row 195 accept: P5 is closed with no jarvis account, and P2 with an empty authorized_keys
---
duration_ms: 1775.619161
type: 'test'
...
# Subtest: row 195 accept: P9 is unnamed once for each item missing
ok 28 - row 195 accept: P9 is unnamed once for each item missing
---
duration_ms: 8987.832036
type: 'test'
...
# Subtest: row253 accept: P10 fails its observation with another peer; P11 with the unit disabled
ok 29 - row253 accept: P10 fails its observation with another peer; P11 with the unit disabled
---
duration_ms: 3612.933951
type: 'test'
...
# Subtest: row 195 accept: every P check unnamed together still exits 0
ok 30 - row 195 accept: every P check unnamed together still exits 0
---
duration_ms: 1592.94325
type: 'test'
...
# Subtest: row 195 accept: a bad args file refuses with exit 2 before any check, each for its own reason
ok 31 - row 195 accept: a bad args file refuses with exit 2 before any check, each for its own reason
---
duration_ms: 97.51146
type: 'test'
...
# Subtest: row 195 accept: usage errors and a run without --root as a user exit 2
ok 32 - row 195 accept: usage errors and a run without --root as a user exit 2
---
duration_ms: 10.079888
type: 'test'
...
# Subtest: row 195 accept: every in-instance call goes through sudo -u mosaic -H env PATH=<node dir>:...
not ok 33 - row 195 accept: every in-instance call goes through sudo -u mosaic -H env PATH=<node dir>:...
---
duration_ms: 1864.06547
type: 'test'
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:716:1'
failureType: 'testCodeFailure'
error: "Cannot read properties of null (reading '1')"
code: 'ERR_TEST_FAILURE'
name: 'TypeError'
stack: |-
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:734:56)
Test.runInAsyncScope (node:async_hooks:226:14)
Test.run (node:internal/test_runner/test:1402:25)
Test.processPendingSubtests (node:internal/test_runner/test:974:18)
Test.postRun (node:internal/test_runner/test:1542:19)
Test.run (node:internal/test_runner/test:1467:12)
process.processTicksAndRejections (node:internal/process/task_queues:104:5)
async Test.processPendingSubtests (node:internal/test_runner/test:974:7)
...
# Subtest: row 195 accept: the host check runs with --check and never --enforce
ok 34 - row 195 accept: the host check runs with --check and never --enforce
---
duration_ms: 1819.074577
type: 'test'
...
# Subtest: row276 legacy call inventory pins every production bound and the conversation contract
ok 35 - row276 legacy call inventory pins every production bound and the conversation contract
---
duration_ms: 0.361373
type: 'test'
...
# Subtest: row276 talk legacy inner timeout cleans both sudo models
ok 36 - row276 talk legacy inner timeout cleans both sudo models
---
duration_ms: 1657.346938
type: 'test'
...
# Subtest: row276 precheck legacy inner timeout cleans both sudo models
ok 37 - row276 precheck legacy inner timeout cleans both sudo models
---
duration_ms: 1647.727149
type: 'test'
...
# Subtest: row276 claude-version legacy inner timeout cleans both sudo models
ok 38 - row276 claude-version legacy inner timeout cleans both sudo models
---
duration_ms: 1643.329062
type: 'test'
...
# Subtest: row276 pm-list legacy inner timeout cleans both sudo models
ok 39 - row276 pm-list legacy inner timeout cleans both sudo models
---
duration_ms: 1655.927476
type: 'test'
...
# Subtest: row276 node-version legacy inner timeout cleans both sudo models
ok 40 - row276 node-version legacy inner timeout cleans both sudo models
---
duration_ms: 1653.008191
type: 'test'
...
# Subtest: row276 legacy streams and display status preserve failures without granting success
ok 41 - row276 legacy streams and display status preserve failures without granting success
---
duration_ms: 2546.234277
type: 'test'
...
# Subtest: row276 trailer grammar cannot make supervisor failure pass
ok 42 - row276 trailer grammar cannot make supervisor failure pass
---
duration_ms: 2012.451527
type: 'test'
...
# Subtest: row276 earlier forged trailer and appended zero remain failures
ok 43 - row276 earlier forged trailer and appended zero remain failures
---
duration_ms: 508.948745
type: 'test'
...
# Subtest: row276 precheck outer bound discards success status and fixture cleans residual
not ok 44 - row276 precheck outer bound discards success status and fixture cleans residual
---
duration_ms: 5625.767184
type: 'test'
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:821:1'
failureType: 'testCodeFailure'
error: 'hop:4.540313794999995s'
code: 'ERR_ASSERTION'
name: 'AssertionError'
expected: true
actual: false
operator: '=='
stack: |-
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:827:10)
process.processTicksAndRejections (node:internal/process/task_queues:104:5)
async Test.run (node:internal/test_runner/test:1409:7)
async Test.processPendingSubtests (node:internal/test_runner/test:974:7)
...
# Subtest: row276 case1 capture and legacy tools refuse unsafe system tools
ok 45 - row276 case1 capture and legacy tools refuse unsafe system tools
---
duration_ms: 76.528587
type: 'test'
...
# Subtest: row276 stderr retention is bounded and keeps the final diagnostic
ok 46 - row276 stderr retention is bounded and keeps the final diagnostic
---
duration_ms: 254.174414
type: 'test'
...
# Subtest: row276 version and PM checks refuse successful-looking stdout on supervisor failure
not ok 47 - row276 version and PM checks refuse successful-looking stdout on supervisor failure
---
duration_ms: 6.032229
type: 'test'
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:845:1'
failureType: 'testCodeFailure'
error: |-
The expression evaluated to a falsy value:
assert.ok(at>=0&&end>at)
code: 'ERR_ASSERTION'
name: 'AssertionError'
expected: true
actual: false
operator: '=='
stack: |-
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:848:75)
Test.runInAsyncScope (node:async_hooks:226:14)
Test.run (node:internal/test_runner/test:1402:25)
Test.processPendingSubtests (node:internal/test_runner/test:974:18)
Test.postRun (node:internal/test_runner/test:1542:19)
Test.run (node:internal/test_runner/test:1467:12)
process.processTicksAndRejections (node:internal/process/task_queues:104:5)
async Test.processPendingSubtests (node:internal/test_runner/test:974:7)
...
# Subtest: row276 full acceptance keeps all five healthy calls in both sudo models
ok 48 - row276 full acceptance keeps all five healthy calls in both sudo models
---
duration_ms: 3643.367206
type: 'test'
...
# Subtest: row276 vanished pid stat read returns 3 with empty stderr in both scripts
ok 49 - row276 vanished pid stat read returns 3 with empty stderr in both scripts
---
duration_ms: 4.486716
type: 'test'
...
1..49
# tests 49
# suites 0
# pass 46
# fail 3
# cancelled 0
# skipped 0
# todo 0
# duration_ms 225725.92281
Traceback (most recent call last):
File "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-276/run3/execute.py", line 22, in <module>
for i,f in enumerate(scope['whole_files']):step('whole-'+str(i+1),['node','--test','--test-reporter=tap',f])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-276/run3/execute.py", line 9, in step
if v['timeout'] or (v['code']==0 if red else v['code']!=0):raise RuntimeError('unexpected result: stop and classify '+name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: unexpected result: stop and classify whole-1
@@ -0,0 +1 @@
2026-10-22T20:28:19.036637+00:00
@@ -0,0 +1,27 @@
import datetime,hashlib,importlib.util,json,os,pathlib,subprocess,sys,time
sys.dont_write_bytecode=True
r=pathlib.Path(__file__).resolve().parent;p=r.parent
spec=importlib.util.spec_from_file_location('row276_driver',p/'driver.py');d=importlib.util.module_from_spec(spec);spec.loader.exec_module(d)
start=time.monotonic();results=dict(grant='sage-2988',steps=[])
(r/'start.txt').write_text(datetime.datetime.now(datetime.timezone.utc).isoformat()+'\n');print((r/'HEADER.json').read_text(),flush=True)
def step(name,cmd,red=False,seconds=1200):
print('START '+name,flush=True);v=d.run(cmd,r/(name+'.log'),seconds=seconds);v.update(name=name,expected_red=red);results['steps'].append(v);results['wall_seconds']=round(time.monotonic()-start,3);(r/'results.json').write_text(json.dumps(results,indent=2)+'\n')
if v['timeout'] or (v['code']==0 if red else v['code']!=0):raise RuntimeError('unexpected result: stop and classify '+name)
if red and 'legacy supervisor block exists' not in (r/(name+'.log')).read_text():raise RuntimeError('wrong RED reason: stop and classify')
print('END '+name,flush=True)
for f in ['packages/cli/tests/case1-accept.test.mjs','packages/cli/tests/case-sudo-fixture.mjs']:
step('syntax-'+str(len(results['steps'])),['timeout','-k','10','60','node','--check',f],seconds=90)
target=d.REPO/'scripts/case1-accept.sh';original=target.read_bytes();status=subprocess.check_output(['git','status','--porcelain','--untracked-files=no'],cwd=d.REPO)
try:
target.write_bytes(subprocess.check_output(['git','show','48e450ce8:scripts/case1-accept.sh'],cwd=d.REPO))
step('intended-red',['node','--test','--test-reporter=tap','--test-name-pattern','row276 talk legacy inner timeout','packages/cli/tests/case1-accept.test.mjs'],red=True)
finally:
target.write_bytes(original);assert target.read_bytes()==original;assert subprocess.check_output(['git','status','--porcelain','--untracked-files=no'],cwd=d.REPO)==status
step('focused-green',['node','--test','--test-reporter=tap','--test-name-pattern','row276 talk legacy inner timeout','packages/cli/tests/case1-accept.test.mjs'])
scope=json.loads((p/'GATE-SCOPE.json').read_text())
for i,f in enumerate(scope['whole_files']):step('whole-'+str(i+1),['node','--test','--test-reporter=tap',f])
step('changes-controller',[sys.executable,str(p/'driver.py'),'--grant','sage-2988','--out',str(r/'changes')],seconds=900)
limits=json.loads((p/'SHELL-LIMITS.json').read_text())['scripts']
for i,f in enumerate(scope['shells']):
limit=limits[f]['limit_seconds'];step('shell-'+str(i+1),['timeout','-k','10',str(limit),'bash',f],seconds=limit+30)
(r/'end.txt').write_text(datetime.datetime.now(datetime.timezone.utc).isoformat()+'\n');print('GATE COMPLETE',flush=True)
@@ -0,0 +1 @@
["timeout", "-k", "10", "900", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row276 talk legacy inner timeout", "packages/cli/tests/case1-accept.test.mjs"]
@@ -0,0 +1,16 @@
TAP version 13
# Subtest: row276 talk legacy inner timeout cleans both sudo models
ok 1 - row276 talk legacy inner timeout cleans both sudo models
---
duration_ms: 1652.495229
type: 'test'
...
1..1
# tests 1
# suites 0
# pass 1
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 1746.329797
@@ -0,0 +1 @@
["timeout", "-k", "10", "900", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row276 talk legacy inner timeout", "packages/cli/tests/case1-accept.test.mjs"]
@@ -0,0 +1,32 @@
TAP version 13
# Subtest: row276 talk legacy inner timeout cleans both sudo models
not ok 1 - row276 talk legacy inner timeout cleans both sudo models
---
duration_ms: 9.813976
type: 'test'
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:781:33'
failureType: 'testCodeFailure'
error: 'legacy supervisor block exists'
code: 'ERR_ASSERTION'
name: 'AssertionError'
expected: true
actual: false
operator: '=='
stack: |-
legacyBody (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:765:9)
legacyCall (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:768:63)
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:787:35)
Test.runInAsyncScope (node:async_hooks:226:14)
Test.run (node:internal/test_runner/test:1402:25)
Test.start (node:internal/test_runner/test:1262:17)
startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17)
...
1..1
# tests 1
# suites 0
# pass 0
# fail 1
# cancelled 0
# skipped 0
# todo 0
# duration_ms 104.754607
@@ -0,0 +1,46 @@
{
"grant": "sage-2988",
"steps": [
{
"code": 0,
"timeout": false,
"seconds": 0.064,
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-276/run3/syntax-0.log",
"name": "syntax-0",
"expected_red": false
},
{
"code": 0,
"timeout": false,
"seconds": 0.064,
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-276/run3/syntax-1.log",
"name": "syntax-1",
"expected_red": false
},
{
"code": 1,
"timeout": false,
"seconds": 0.164,
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-276/run3/intended-red.log",
"name": "intended-red",
"expected_red": true
},
{
"code": 0,
"timeout": false,
"seconds": 1.817,
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-276/run3/focused-green.log",
"name": "focused-green",
"expected_red": false
},
{
"code": 1,
"timeout": false,
"seconds": 225.79,
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-276/run3/whole-1.log",
"name": "whole-1",
"expected_red": false
}
],
"wall_seconds": 234.6
}
@@ -0,0 +1 @@
2026-10-22T20:23:26.510970+00:00
@@ -0,0 +1,62 @@
{
"timestamp": "2026-10-22T20:27:43.031302+00:00",
"count": 0,
"remaining": [],
"excluded_preexisting_infrastructure": [
{
"pid": 1425557,
"comm": "npm exec @model",
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
"started_utc": "2026-10-22T19:49:17.210000+00:00"
},
{
"pid": 1425563,
"comm": "node-MainThread",
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
"started_utc": "2026-10-22T19:49:17.230000+00:00"
},
{
"pid": 1425568,
"comm": "npm exec @playw",
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
"started_utc": "2026-10-22T19:49:17.240000+00:00"
},
{
"pid": 1425580,
"comm": "npm exec chrome",
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
"started_utc": "2026-10-22T19:49:17.240000+00:00"
},
{
"pid": 1425769,
"comm": "chrome-devtools",
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
"started_utc": "2026-10-22T19:49:18.330000+00:00"
},
{
"pid": 1425776,
"comm": "node-MainThread",
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
"started_utc": "2026-10-22T19:49:18.360000+00:00"
},
{
"pid": 1425783,
"comm": "node-MainThread",
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
"started_utc": "2026-10-22T19:49:18.440000+00:00"
},
{
"pid": 1425797,
"comm": "node-MainThread",
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
"started_utc": "2026-10-22T19:49:18.660000+00:00"
},
{
"pid": 1426427,
"comm": "codex-code-mode",
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
"started_utc": "2026-10-22T19:49:29.150000+00:00"
}
],
"note": "Read-only /proc cwd sweep, including deleted cwd under this run TMPDIR. Own ancestry excluded. Only known MCP/npm/code-mode infrastructure PIDs with pre-run start ticks are excluded. No signalling."
}
@@ -0,0 +1,34 @@
#!/usr/bin/env python3
"""Read-only sweep of this worktree and focused TMPDIR, including deleted cwd."""
import datetime
import json
import os
from pathlib import Path
HERE=Path(__file__).resolve().parent.parent
REPO=HERE.parents[3]
RUN=HERE/'run3'
def main():
tmp=Path((RUN/'TMPDIR').read_text().strip())
started=datetime.datetime.fromisoformat((RUN/'start.txt').read_text().strip().replace('Z','+00:00')).timestamp()
boot=int(next(s.split()[1] for s in Path('/proc/stat').read_text().splitlines() if s.startswith('btime ')))
ancestors=set();pid=os.getpid()
while pid and pid not in ancestors:
ancestors.add(pid)
try:pid=int(next(s.split(':')[1] for s in Path(f'/proc/{pid}/status').read_text().splitlines() if s.startswith('PPid:')))
except (OSError,StopIteration):break
known={1425557,1425563,1425568,1425580,1425769,1425776,1425783,1425797,1426427,2880281,2880282,2880283,2880284,2880445,2880487,2880537,2883251,2880439,2469277,2469278,2469279,2469292,2469478,2469485,2469518,2469601,2470486}
remaining=[];excluded=[]
for proc in Path('/proc').iterdir():
if not proc.name.isdigit() or int(proc.name) in ancestors:continue
try:
rawcwd=os.readlink(proc/'cwd');cwd=Path(rawcwd.removesuffix(' (deleted)'))
if not(cwd==REPO or REPO in cwd.parents or cwd==tmp or tmp in cwd.parents):continue
stat=(proc/'stat').read_text().rsplit(') ',1)[1].split()
stamp=boot+int(stat[19])/os.sysconf('SC_CLK_TCK')
item=dict(pid=int(proc.name),comm=(proc/'comm').read_text().strip(),cwd=rawcwd,started_utc=datetime.datetime.fromtimestamp(stamp,datetime.timezone.utc).isoformat())
if int(proc.name) in known and stamp<started:excluded.append(item)
else:remaining.append(item)
except (OSError,ValueError,IndexError):continue
result=dict(timestamp=datetime.datetime.now(datetime.timezone.utc).isoformat(),count=len(remaining),remaining=remaining,excluded_preexisting_infrastructure=excluded,note='Read-only /proc cwd sweep, including deleted cwd under this run TMPDIR. Own ancestry excluded. Only known MCP/npm/code-mode infrastructure PIDs with pre-run start ticks are excluded. No signalling.')
(RUN/'sweep.json').write_text(json.dumps(result,indent=2)+'\n');print(json.dumps(result,indent=2))
if __name__=='__main__':main()
@@ -0,0 +1 @@
["timeout", "-k", "10", "60", "node", "--check", "packages/cli/tests/case1-accept.test.mjs"]
Whitespace-only changes.
@@ -0,0 +1 @@
["timeout", "-k", "10", "60", "node", "--check", "packages/cli/tests/case-sudo-fixture.mjs"]
Whitespace-only changes.
@@ -0,0 +1 @@
["timeout", "-k", "10", "900", "node", "--test", "--test-reporter=tap", "packages/cli/tests/case1-accept.test.mjs"]
@@ -0,0 +1,352 @@
TAP version 13
# Subtest: row253 socket observation uses configured root, metadata and the Console peer without sending bytes
ok 1 - row253 socket observation uses configured root, metadata and the Console peer without sending bytes
---
duration_ms: 1791.657354
type: 'test'
...
# Subtest: row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure
ok 2 - row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure
---
duration_ms: 28974.729265
type: 'test'
...
# Subtest: row253 acceptance rejects bad config and unsupported copies before talk
ok 3 - row253 acceptance rejects bad config and unsupported copies before talk
---
duration_ms: 1380.961821
type: 'test'
...
# Subtest: row253 stalled peer observation ends within its bound without leaving a reader
ok 4 - row253 stalled peer observation ends within its bound without leaving a reader
---
duration_ms: 4084.655072
type: 'test'
...
# Subtest: row253 P8 refuses both retired TCP and board listeners
ok 5 - row253 P8 refuses both retired TCP and board listeners
---
duration_ms: 3693.053088
type: 'test'
...
# Subtest: row253 C4 acceptance query inner reason holds under both sudo models
ok 6 - row253 C4 acceptance query inner reason holds under both sudo models
---
duration_ms: 10711.01411
type: 'test'
...
# Subtest: row253 C4 acceptance query outer reason discards stdout and names residual cleanup
ok 7 - row253 C4 acceptance query outer reason discards stdout and names residual cleanup
---
duration_ms: 14176.546153
type: 'test'
...
# Subtest: row253 C4 acceptance query overflow is output-limit in both models
ok 8 - row253 C4 acceptance query overflow is output-limit in both models
---
duration_ms: 462.612226
type: 'test'
...
# Subtest: row253 C4 P10 inner reason holds under both sudo models
ok 9 - row253 C4 P10 inner reason holds under both sudo models
---
duration_ms: 7942.352401
type: 'test'
...
# Subtest: row253 C4 P10 outer reason holds under both sudo models
ok 10 - row253 C4 P10 outer reason holds under both sudo models
---
duration_ms: 11450.396895
type: 'test'
...
# Subtest: row253 C4 P10 overflow reason holds under both sudo models
ok 11 - row253 C4 P10 overflow reason holds under both sudo models
---
duration_ms: 3725.029658
type: 'test'
...
# Subtest: row 195 accept: every check passing exits 0, with each P mark and counts that match the lines
ok 12 - row 195 accept: every check passing exits 0, with each P mark and counts that match the lines
---
duration_ms: 1801.220055
type: 'test'
...
# Subtest: row 195 accept: exits 1 with each F check failing alone, and its line names it
ok 13 - row 195 accept: exits 1 with each F check failing alone, and its line names it
---
duration_ms: 20137.622527
type: 'test'
...
# Subtest: row 195 accept: F3 fails on exit 0 with no reply line, and its evidence takes talk's error
ok 14 - row 195 accept: F3 fails on exit 0 with no reply line, and its evidence takes talk's error
---
duration_ms: 3624.936861
type: 'test'
...
# Subtest: row 195 accept: F1 fails on a unit that isn't active or isn't User=mosaic
ok 15 - row 195 accept: F1 fails on a unit that isn't active or isn't User=mosaic
---
duration_ms: 3463.316786
type: 'test'
...
# Subtest: row 195 accept: F2 fails when healthz doesn't answer and when another pid holds the port
ok 16 - row 195 accept: F2 fails when healthz doesn't answer and when another pid holds the port
---
duration_ms: 3660.585067
type: 'test'
...
# Subtest: row 195 accept: F5 fails on unpriv_bwrap (enforce), on complain and on a trailing space
ok 17 - row 195 accept: F5 fails on unpriv_bwrap (enforce), on complain and on a trailing space
---
duration_ms: 8491.604323
type: 'test'
...
# Subtest: row 195 accept: F5 fails with no bwrap of mosaic's, and passes on comm alone
ok 18 - row 195 accept: F5 fails with no bwrap of mosaic's, and passes on comm alone
---
duration_ms: 3962.982132
type: 'test'
...
# Subtest: row 195 accept: F6 fails on a stub that prints nothing, on a path outside claude-<pin> and on a .. segment
ok 19 - row 195 accept: F6 fails on a stub that prints nothing, on a path outside claude-<pin> and on a .. segment
---
duration_ms: 5070.327942
type: 'test'
...
# Subtest: row 195 accept: F7 fails on two live PM launches, one for another business, and no launch.by
ok 20 - row 195 accept: F7 fails on two live PM launches, one for another business, and no launch.by
---
duration_ms: 5489.785764
type: 'test'
...
# Subtest: row 195 accept: F8 fails on 0640, on another owner and on a symlink, and never prints the credential
ok 21 - row 195 accept: F8 fails on 0640, on another owner and on a symlink, and never prints the credential
---
duration_ms: 5414.01691
type: 'test'
...
# Subtest: row 195 accept: F9 fails on another owner, a group-writable mode and a number for the flag
ok 22 - row 195 accept: F9 fails on another owner, a group-writable mode and a number for the flag
---
duration_ms: 5333.670892
type: 'test'
...
# Subtest: row 195 accept: F9 won't run --node as root off the pin path or with a writable directory above it
ok 23 - row 195 accept: F9 won't run --node as root off the pin path or with a writable directory above it
---
duration_ms: 5055.165314
type: 'test'
...
# Subtest: row 195 accept: F11 fails on one *.json under discord/ and passes on an empty directory
ok 24 - row 195 accept: F11 fails on one *.json under discord/ and passes on an empty directory
---
duration_ms: 3590.767257
type: 'test'
...
# Subtest: row 195 accept: each P check reports unnamed on its fault, and the exit stays 0
ok 25 - row 195 accept: each P check reports unnamed on its fault, and the exit stays 0
---
duration_ms: 15882.813145
type: 'test'
...
# Subtest: row 195 accept: P2 is unnamed with a supplementary group, and P5 names docker
ok 26 - row 195 accept: P2 is unnamed with a supplementary group, and P5 names docker
---
duration_ms: 3560.261141
type: 'test'
...
# Subtest: row 195 accept: P5 is closed with no jarvis account, and P2 with an empty authorized_keys
ok 27 - row 195 accept: P5 is closed with no jarvis account, and P2 with an empty authorized_keys
---
duration_ms: 1775.619161
type: 'test'
...
# Subtest: row 195 accept: P9 is unnamed once for each item missing
ok 28 - row 195 accept: P9 is unnamed once for each item missing
---
duration_ms: 8987.832036
type: 'test'
...
# Subtest: row253 accept: P10 fails its observation with another peer; P11 with the unit disabled
ok 29 - row253 accept: P10 fails its observation with another peer; P11 with the unit disabled
---
duration_ms: 3612.933951
type: 'test'
...
# Subtest: row 195 accept: every P check unnamed together still exits 0
ok 30 - row 195 accept: every P check unnamed together still exits 0
---
duration_ms: 1592.94325
type: 'test'
...
# Subtest: row 195 accept: a bad args file refuses with exit 2 before any check, each for its own reason
ok 31 - row 195 accept: a bad args file refuses with exit 2 before any check, each for its own reason
---
duration_ms: 97.51146
type: 'test'
...
# Subtest: row 195 accept: usage errors and a run without --root as a user exit 2
ok 32 - row 195 accept: usage errors and a run without --root as a user exit 2
---
duration_ms: 10.079888
type: 'test'
...
# Subtest: row 195 accept: every in-instance call goes through sudo -u mosaic -H env PATH=<node dir>:...
not ok 33 - row 195 accept: every in-instance call goes through sudo -u mosaic -H env PATH=<node dir>:...
---
duration_ms: 1864.06547
type: 'test'
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:716:1'
failureType: 'testCodeFailure'
error: "Cannot read properties of null (reading '1')"
code: 'ERR_TEST_FAILURE'
name: 'TypeError'
stack: |-
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:734:56)
Test.runInAsyncScope (node:async_hooks:226:14)
Test.run (node:internal/test_runner/test:1402:25)
Test.processPendingSubtests (node:internal/test_runner/test:974:18)
Test.postRun (node:internal/test_runner/test:1542:19)
Test.run (node:internal/test_runner/test:1467:12)
process.processTicksAndRejections (node:internal/process/task_queues:104:5)
async Test.processPendingSubtests (node:internal/test_runner/test:974:7)
...
# Subtest: row 195 accept: the host check runs with --check and never --enforce
ok 34 - row 195 accept: the host check runs with --check and never --enforce
---
duration_ms: 1819.074577
type: 'test'
...
# Subtest: row276 legacy call inventory pins every production bound and the conversation contract
ok 35 - row276 legacy call inventory pins every production bound and the conversation contract
---
duration_ms: 0.361373
type: 'test'
...
# Subtest: row276 talk legacy inner timeout cleans both sudo models
ok 36 - row276 talk legacy inner timeout cleans both sudo models
---
duration_ms: 1657.346938
type: 'test'
...
# Subtest: row276 precheck legacy inner timeout cleans both sudo models
ok 37 - row276 precheck legacy inner timeout cleans both sudo models
---
duration_ms: 1647.727149
type: 'test'
...
# Subtest: row276 claude-version legacy inner timeout cleans both sudo models
ok 38 - row276 claude-version legacy inner timeout cleans both sudo models
---
duration_ms: 1643.329062
type: 'test'
...
# Subtest: row276 pm-list legacy inner timeout cleans both sudo models
ok 39 - row276 pm-list legacy inner timeout cleans both sudo models
---
duration_ms: 1655.927476
type: 'test'
...
# Subtest: row276 node-version legacy inner timeout cleans both sudo models
ok 40 - row276 node-version legacy inner timeout cleans both sudo models
---
duration_ms: 1653.008191
type: 'test'
...
# Subtest: row276 legacy streams and display status preserve failures without granting success
ok 41 - row276 legacy streams and display status preserve failures without granting success
---
duration_ms: 2546.234277
type: 'test'
...
# Subtest: row276 trailer grammar cannot make supervisor failure pass
ok 42 - row276 trailer grammar cannot make supervisor failure pass
---
duration_ms: 2012.451527
type: 'test'
...
# Subtest: row276 earlier forged trailer and appended zero remain failures
ok 43 - row276 earlier forged trailer and appended zero remain failures
---
duration_ms: 508.948745
type: 'test'
...
# Subtest: row276 precheck outer bound discards success status and fixture cleans residual
not ok 44 - row276 precheck outer bound discards success status and fixture cleans residual
---
duration_ms: 5625.767184
type: 'test'
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:821:1'
failureType: 'testCodeFailure'
error: 'hop:4.540313794999995s'
code: 'ERR_ASSERTION'
name: 'AssertionError'
expected: true
actual: false
operator: '=='
stack: |-
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:827:10)
process.processTicksAndRejections (node:internal/process/task_queues:104:5)
async Test.run (node:internal/test_runner/test:1409:7)
async Test.processPendingSubtests (node:internal/test_runner/test:974:7)
...
# Subtest: row276 case1 capture and legacy tools refuse unsafe system tools
ok 45 - row276 case1 capture and legacy tools refuse unsafe system tools
---
duration_ms: 76.528587
type: 'test'
...
# Subtest: row276 stderr retention is bounded and keeps the final diagnostic
ok 46 - row276 stderr retention is bounded and keeps the final diagnostic
---
duration_ms: 254.174414
type: 'test'
...
# Subtest: row276 version and PM checks refuse successful-looking stdout on supervisor failure
not ok 47 - row276 version and PM checks refuse successful-looking stdout on supervisor failure
---
duration_ms: 6.032229
type: 'test'
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:845:1'
failureType: 'testCodeFailure'
error: |-
The expression evaluated to a falsy value:
assert.ok(at>=0&&end>at)
code: 'ERR_ASSERTION'
name: 'AssertionError'
expected: true
actual: false
operator: '=='
stack: |-
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:848:75)
Test.runInAsyncScope (node:async_hooks:226:14)
Test.run (node:internal/test_runner/test:1402:25)
Test.processPendingSubtests (node:internal/test_runner/test:974:18)
Test.postRun (node:internal/test_runner/test:1542:19)
Test.run (node:internal/test_runner/test:1467:12)
process.processTicksAndRejections (node:internal/process/task_queues:104:5)
async Test.processPendingSubtests (node:internal/test_runner/test:974:7)
...
# Subtest: row276 full acceptance keeps all five healthy calls in both sudo models
ok 48 - row276 full acceptance keeps all five healthy calls in both sudo models
---
duration_ms: 3643.367206
type: 'test'
...
# Subtest: row276 vanished pid stat read returns 3 with empty stderr in both scripts
ok 49 - row276 vanished pid stat read returns 3 with empty stderr in both scripts
---
duration_ms: 4.486716
type: 'test'
...
1..49
# tests 49
# suites 0
# pass 46
# fail 3
# cancelled 0
# skipped 0
# todo 0
# duration_ms 225725.92281
@@ -0,0 +1,8 @@
{
"tests": 50,
"pass": 49,
"fail": 1,
"skipped": 0,
"cancelled": 0,
"todo": 0
}
@@ -0,0 +1,186 @@
{
"grant": "sage-3004",
"head": "f3a55ddf73cde1d1eadf593d35953d0bc03921e4",
"base": "0cbe2e9b3",
"manifest": "d746620768df71585dd2be1bc8a9fff93cb493fdf4a59fd16bc479dde4bc067d",
"scope": {
"whole_files": [
"packages/cli/tests/case1-accept.test.mjs",
"packages/cli/tests/case2-unit.test.mjs"
],
"shells": [
"scripts/test-auth.sh",
"scripts/test-conductor.sh",
"scripts/test-config.sh",
"scripts/test-discord.sh",
"scripts/test-extension-package.sh",
"scripts/test-foundation.sh",
"scripts/test-land-work.sh",
"scripts/test-queue.sh",
"scripts/test-release.sh",
"scripts/test-task.sh"
],
"mutants": [
"M1",
"M2",
"M3",
"M4",
"M5",
"M6",
"M7",
"M8",
"M9",
"M10",
"M11",
"M12",
"M13",
"M14",
"M15",
"M16",
"M17"
],
"red_pattern": "row276 talk legacy inner timeout",
"node_seconds": 900,
"estimate_minutes": "12-18; no row276 measured runtime yet"
},
"limits": {
"files": {
"packages/cli/tests/case1-accept.test.mjs": 900,
"packages/cli/tests/case2-unit.test.mjs": 900
},
"basis": "No row276 timing yet; initial900s per whole file; Sage may adjust before CLEAR."
},
"shell_limits": {
"authority": [
"mos-1275",
"sage-2659"
],
"scope": "Own Gander row196 receipt set documented for row278, plus the complete row278 run3 shell phase. Row253 old C4 results do not carry. Receipts choose timeouts only.",
"consulted_records": [
"ec1e7fad8:agents/gander/work/queue-196/evidence/suite-results-run1.json",
"ec1e7fad8:agents/gander/work/queue-196/evidence/suite-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r2/mutants/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r2/run2/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r2/run2/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r3/gate/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r3/gate/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r3/gate/sso-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/sso-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/whole-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r5/gate/whole-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r5/resume/summary.json",
"ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/first-attempt/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/summary.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"385a7194c:agents/gander/work/queue-278/run3/whole/results.json"
],
"scripts": {
"scripts/test-auth.sh": {
"recorded_duration_seconds": 1.9081228229999543,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 126,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "dd4720cb0cbecd2fc523a318f2222d21d257c8c5889996a3d69e522ee971a707",
"previous_maximum_seconds": 1.9081228229999543,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"row278_run3_seconds": 0.816
},
"scripts/test-conductor.sh": {
"recorded_duration_seconds": 8.057173820000026,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 145,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "da84150467494a4c979759f400854411bd93a7efce981139757bf526d688a23b",
"previous_maximum_seconds": 8.057173820000026,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"row278_run3_seconds": 6.078
},
"scripts/test-config.sh": {
"recorded_duration_seconds": 3.1678915339999367,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 130,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "3301c1fabf616bb961d62f6decd0a46dadb0f399b8ba7f3c2ca60023d2b24c78",
"previous_maximum_seconds": 3.1678915339999367,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"row278_run3_seconds": 1.868
},
"scripts/test-discord.sh": {
"recorded_duration_seconds": 8.776727847000002,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 147,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "a5dcf783c51a5d5d184a357f91ebf9fa1c4e054f0cb84a3d1d7668f6156e025e",
"previous_maximum_seconds": 8.776727847000002,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 7.431
},
"scripts/test-extension-package.sh": {
"recorded_duration_seconds": 3.01285702399991,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 130,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "5d7b687f16fd1a9414b229501177d530ba3af4eadd3cac319b33f38fdba9bf99",
"previous_maximum_seconds": 3.01285702399991,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 1.366
},
"scripts/test-foundation.sh": {
"recorded_duration_seconds": 49.367,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 269,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "2e11038e7f784ec4f539eb768f63bab0fab9c9940334388a1fe2d47ab9e2b008",
"previous_maximum_seconds": 39.70872647900006,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 39.901
},
"scripts/test-land-work.sh": {
"recorded_duration_seconds": 16.854,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 171,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "c9d1d5c9b006d5c12e5f796a9828361059f8e0410846fc55c070c0148b15cef4",
"previous_maximum_seconds": 12.623263413000037,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 11.338
},
"scripts/test-queue.sh": {
"recorded_duration_seconds": 35.155,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 226,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "c270f181d1fa8b6d42ff4131c339beba786a8fd620bb66f8afdcec05e8b10868",
"previous_maximum_seconds": 23.443742031000088,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 21.158
},
"scripts/test-release.sh": {
"recorded_duration_seconds": 12.168674453999964,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 157,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "be706dff832257bd4781abeabd19faa4ac16edf9a4af0c96457e33cf3bb6deb3",
"previous_maximum_seconds": 12.168674453999964,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 2.67
},
"scripts/test-task.sh": {
"recorded_duration_seconds": 36.783798266,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 231,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "10c4abb70bf9b83e617089b06a5436cc7fa6b866a176458b22128c3a15163f94",
"previous_maximum_seconds": 36.783798266,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 13.843
}
}
},
"carry": "NONE; fresh run4 per mos-1345/duckworth0208"
}
@@ -0,0 +1,5 @@
# Run4 old timing red, unplaced
Grant sage-3004, candidatef3a55ddf7, manifestd7466207. First whole file case1:49pass/1fail/0skip, TAP247951.35731ms. Only failure is existing row253 C4 P10 inner reason at380: exec4.19657134s vs <4. All row276 tests and wiring assertions passed, including unchanged outer<3 regression, vanished pid and new exact stdout bytes. No case2 whole, mutants or shells launched. No timeout. gander-0151 reports red immediately; file finishes before measurement. Sweep0 with9 pre-existing infrastructure excluded.
Sage3007/Mos1349 authorize five alternating scratch measurements804a854dc/f3a55ddf7, no code edits, freshgXXX percall and900s limits. See timing/NOTE.md and raw logs. Before3/2, after0/5, no timeout. Each failure stops at exec and never reaches hop; passing tests print neither mode timer. Both candidates cross4s. No assertion or candidate code changed, including duplicatehead. gander-0153 sends table and awaits placement, slot held idle as Sage directs. Scratch sweep0. No push.
+1
View File
@@ -0,0 +1 @@
/mnt/storage/scratch/tmp/gdUk
@@ -0,0 +1,523 @@
{
"grant": "sage-3004",
"head": "f3a55ddf73cde1d1eadf593d35953d0bc03921e4",
"base": "0cbe2e9b3",
"manifest": "d746620768df71585dd2be1bc8a9fff93cb493fdf4a59fd16bc479dde4bc067d",
"scope": {
"whole_files": [
"packages/cli/tests/case1-accept.test.mjs",
"packages/cli/tests/case2-unit.test.mjs"
],
"shells": [
"scripts/test-auth.sh",
"scripts/test-conductor.sh",
"scripts/test-config.sh",
"scripts/test-discord.sh",
"scripts/test-extension-package.sh",
"scripts/test-foundation.sh",
"scripts/test-land-work.sh",
"scripts/test-queue.sh",
"scripts/test-release.sh",
"scripts/test-task.sh"
],
"mutants": [
"M1",
"M2",
"M3",
"M4",
"M5",
"M6",
"M7",
"M8",
"M9",
"M10",
"M11",
"M12",
"M13",
"M14",
"M15",
"M16",
"M17"
],
"red_pattern": "row276 talk legacy inner timeout",
"node_seconds": 900,
"estimate_minutes": "12-18; no row276 measured runtime yet"
},
"limits": {
"files": {
"packages/cli/tests/case1-accept.test.mjs": 900,
"packages/cli/tests/case2-unit.test.mjs": 900
},
"basis": "No row276 timing yet; initial900s per whole file; Sage may adjust before CLEAR."
},
"shell_limits": {
"authority": [
"mos-1275",
"sage-2659"
],
"scope": "Own Gander row196 receipt set documented for row278, plus the complete row278 run3 shell phase. Row253 old C4 results do not carry. Receipts choose timeouts only.",
"consulted_records": [
"ec1e7fad8:agents/gander/work/queue-196/evidence/suite-results-run1.json",
"ec1e7fad8:agents/gander/work/queue-196/evidence/suite-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r2/mutants/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r2/run2/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r2/run2/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r3/gate/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r3/gate/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r3/gate/sso-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/sso-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r4/gate/whole-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r5/gate/whole-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r5/resume/summary.json",
"ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/base-results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/first-attempt/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/killers/results.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/summary.json",
"ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"385a7194c:agents/gander/work/queue-278/run3/whole/results.json"
],
"scripts": {
"scripts/test-auth.sh": {
"recorded_duration_seconds": 1.9081228229999543,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 126,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "dd4720cb0cbecd2fc523a318f2222d21d257c8c5889996a3d69e522ee971a707",
"previous_maximum_seconds": 1.9081228229999543,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"row278_run3_seconds": 0.816
},
"scripts/test-conductor.sh": {
"recorded_duration_seconds": 8.057173820000026,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 145,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "da84150467494a4c979759f400854411bd93a7efce981139757bf526d688a23b",
"previous_maximum_seconds": 8.057173820000026,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"row278_run3_seconds": 6.078
},
"scripts/test-config.sh": {
"recorded_duration_seconds": 3.1678915339999367,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 130,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "3301c1fabf616bb961d62f6decd0a46dadb0f399b8ba7f3c2ca60023d2b24c78",
"previous_maximum_seconds": 3.1678915339999367,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
"row278_run3_seconds": 1.868
},
"scripts/test-discord.sh": {
"recorded_duration_seconds": 8.776727847000002,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 147,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "a5dcf783c51a5d5d184a357f91ebf9fa1c4e054f0cb84a3d1d7668f6156e025e",
"previous_maximum_seconds": 8.776727847000002,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 7.431
},
"scripts/test-extension-package.sh": {
"recorded_duration_seconds": 3.01285702399991,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 130,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "5d7b687f16fd1a9414b229501177d530ba3af4eadd3cac319b33f38fdba9bf99",
"previous_maximum_seconds": 3.01285702399991,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 1.366
},
"scripts/test-foundation.sh": {
"recorded_duration_seconds": 49.367,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 269,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "2e11038e7f784ec4f539eb768f63bab0fab9c9940334388a1fe2d47ab9e2b008",
"previous_maximum_seconds": 39.70872647900006,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 39.901
},
"scripts/test-land-work.sh": {
"recorded_duration_seconds": 16.854,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 171,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "c9d1d5c9b006d5c12e5f796a9828361059f8e0410846fc55c070c0148b15cef4",
"previous_maximum_seconds": 12.623263413000037,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 11.338
},
"scripts/test-queue.sh": {
"recorded_duration_seconds": 35.155,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 226,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "c270f181d1fa8b6d42ff4131c339beba786a8fd620bb66f8afdcec05e8b10868",
"previous_maximum_seconds": 23.443742031000088,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 21.158
},
"scripts/test-release.sh": {
"recorded_duration_seconds": 12.168674453999964,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 157,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "be706dff832257bd4781abeabd19faa4ac16edf9a4af0c96457e33cf3bb6deb3",
"previous_maximum_seconds": 12.168674453999964,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 2.67
},
"scripts/test-task.sh": {
"recorded_duration_seconds": 36.783798266,
"receipt": "3b91cfdaf:agents/gander/work/queue-253/run5-gate/SUMMARY.json (with earlier maximum retained)",
"limit_seconds": 231,
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
"script_sha256": "10c4abb70bf9b83e617089b06a5436cc7fa6b866a176458b22128c3a15163f94",
"previous_maximum_seconds": 36.783798266,
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
"row278_run3_seconds": 13.843
}
}
},
"carry": "NONE; fresh run4 per mos-1345/duckworth0208"
}
START whole-1
TAP version 13
# Subtest: row253 socket observation uses configured root, metadata and the Console peer without sending bytes
ok 1 - row253 socket observation uses configured root, metadata and the Console peer without sending bytes
---
duration_ms: 2382.905768
type: 'test'
...
# Subtest: row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure
ok 2 - row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure
---
duration_ms: 32808.565531
type: 'test'
...
# Subtest: row253 acceptance rejects bad config and unsupported copies before talk
ok 3 - row253 acceptance rejects bad config and unsupported copies before talk
---
duration_ms: 1532.966192
type: 'test'
...
# Subtest: row253 stalled peer observation ends within its bound without leaving a reader
ok 4 - row253 stalled peer observation ends within its bound without leaving a reader
---
duration_ms: 4226.036952
type: 'test'
...
# Subtest: row253 P8 refuses both retired TCP and board listeners
ok 5 - row253 P8 refuses both retired TCP and board listeners
---
duration_ms: 4093.370563
type: 'test'
...
# Subtest: row253 C4 acceptance query inner reason holds under both sudo models
ok 6 - row253 C4 acceptance query inner reason holds under both sudo models
---
duration_ms: 10771.174759
type: 'test'
...
# Subtest: row253 C4 acceptance query outer reason discards stdout and names residual cleanup
ok 7 - row253 C4 acceptance query outer reason discards stdout and names residual cleanup
---
duration_ms: 14196.557616
type: 'test'
...
# Subtest: row253 C4 acceptance query overflow is output-limit in both models
ok 8 - row253 C4 acceptance query overflow is output-limit in both models
---
duration_ms: 494.350009
type: 'test'
...
# Subtest: row253 C4 P10 inner reason holds under both sudo models
not ok 9 - row253 C4 P10 inner reason holds under both sudo models
---
duration_ms: 4212.907096
type: 'test'
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:368:49'
failureType: 'testCodeFailure'
error: 'exec: 4.196571339999995s includes functional checks'
code: 'ERR_ASSERTION'
name: 'AssertionError'
expected: true
actual: false
operator: '=='
stack: |-
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:380:29)
Test.runInAsyncScope (node:async_hooks:226:14)
Test.run (node:internal/test_runner/test:1402:25)
Test.processPendingSubtests (node:internal/test_runner/test:974:18)
Test.postRun (node:internal/test_runner/test:1542:19)
Test.run (node:internal/test_runner/test:1467:12)
process.processTicksAndRejections (node:internal/process/task_queues:104:5)
async Test.processPendingSubtests (node:internal/test_runner/test:974:7)
...
# Subtest: row253 C4 P10 outer reason holds under both sudo models
ok 10 - row253 C4 P10 outer reason holds under both sudo models
---
duration_ms: 11787.811949
type: 'test'
...
# Subtest: row253 C4 P10 overflow reason holds under both sudo models
ok 11 - row253 C4 P10 overflow reason holds under both sudo models
---
duration_ms: 4130.665081
type: 'test'
...
# Subtest: row 195 accept: every check passing exits 0, with each P mark and counts that match the lines
ok 12 - row 195 accept: every check passing exits 0, with each P mark and counts that match the lines
---
duration_ms: 1942.69162
type: 'test'
...
# Subtest: row 195 accept: exits 1 with each F check failing alone, and its line names it
ok 13 - row 195 accept: exits 1 with each F check failing alone, and its line names it
---
duration_ms: 22752.034579
type: 'test'
...
# Subtest: row 195 accept: F3 fails on exit 0 with no reply line, and its evidence takes talk's error
ok 14 - row 195 accept: F3 fails on exit 0 with no reply line, and its evidence takes talk's error
---
duration_ms: 3929.312009
type: 'test'
...
# Subtest: row 195 accept: F1 fails on a unit that isn't active or isn't User=mosaic
ok 15 - row 195 accept: F1 fails on a unit that isn't active or isn't User=mosaic
---
duration_ms: 3898.532647
type: 'test'
...
# Subtest: row 195 accept: F2 fails when healthz doesn't answer and when another pid holds the port
ok 16 - row 195 accept: F2 fails when healthz doesn't answer and when another pid holds the port
---
duration_ms: 4366.57563
type: 'test'
...
# Subtest: row 195 accept: F5 fails on unpriv_bwrap (enforce), on complain and on a trailing space
ok 17 - row 195 accept: F5 fails on unpriv_bwrap (enforce), on complain and on a trailing space
---
duration_ms: 9838.222823
type: 'test'
...
# Subtest: row 195 accept: F5 fails with no bwrap of mosaic's, and passes on comm alone
ok 18 - row 195 accept: F5 fails with no bwrap of mosaic's, and passes on comm alone
---
duration_ms: 4668.88132
type: 'test'
...
# Subtest: row 195 accept: F6 fails on a stub that prints nothing, on a path outside claude-<pin> and on a .. segment
ok 19 - row 195 accept: F6 fails on a stub that prints nothing, on a path outside claude-<pin> and on a .. segment
---
duration_ms: 5713.829938
type: 'test'
...
# Subtest: row 195 accept: F7 fails on two live PM launches, one for another business, and no launch.by
ok 20 - row 195 accept: F7 fails on two live PM launches, one for another business, and no launch.by
---
duration_ms: 6209.075615
type: 'test'
...
# Subtest: row 195 accept: F8 fails on 0640, on another owner and on a symlink, and never prints the credential
ok 21 - row 195 accept: F8 fails on 0640, on another owner and on a symlink, and never prints the credential
---
duration_ms: 6473.171739
type: 'test'
...
# Subtest: row 195 accept: F9 fails on another owner, a group-writable mode and a number for the flag
ok 22 - row 195 accept: F9 fails on another owner, a group-writable mode and a number for the flag
---
duration_ms: 6213.723726
type: 'test'
...
# Subtest: row 195 accept: F9 won't run --node as root off the pin path or with a writable directory above it
ok 23 - row 195 accept: F9 won't run --node as root off the pin path or with a writable directory above it
---
duration_ms: 6016.277175
type: 'test'
...
# Subtest: row 195 accept: F11 fails on one *.json under discord/ and passes on an empty directory
ok 24 - row 195 accept: F11 fails on one *.json under discord/ and passes on an empty directory
---
duration_ms: 4586.041986
type: 'test'
...
# Subtest: row 195 accept: each P check reports unnamed on its fault, and the exit stays 0
ok 25 - row 195 accept: each P check reports unnamed on its fault, and the exit stays 0
---
duration_ms: 18724.032782
type: 'test'
...
# Subtest: row 195 accept: P2 is unnamed with a supplementary group, and P5 names docker
ok 26 - row 195 accept: P2 is unnamed with a supplementary group, and P5 names docker
---
duration_ms: 4306.726814
type: 'test'
...
# Subtest: row 195 accept: P5 is closed with no jarvis account, and P2 with an empty authorized_keys
ok 27 - row 195 accept: P5 is closed with no jarvis account, and P2 with an empty authorized_keys
---
duration_ms: 2034.549139
type: 'test'
...
# Subtest: row 195 accept: P9 is unnamed once for each item missing
ok 28 - row 195 accept: P9 is unnamed once for each item missing
---
duration_ms: 10394.742707
type: 'test'
...
# Subtest: row253 accept: P10 fails its observation with another peer; P11 with the unit disabled
ok 29 - row253 accept: P10 fails its observation with another peer; P11 with the unit disabled
---
duration_ms: 4270.380528
type: 'test'
...
# Subtest: row 195 accept: every P check unnamed together still exits 0
ok 30 - row 195 accept: every P check unnamed together still exits 0
---
duration_ms: 1859.930246
type: 'test'
...
# Subtest: row 195 accept: a bad args file refuses with exit 2 before any check, each for its own reason
ok 31 - row 195 accept: a bad args file refuses with exit 2 before any check, each for its own reason
---
duration_ms: 117.410521
type: 'test'
...
# Subtest: row 195 accept: usage errors and a run without --root as a user exit 2
ok 32 - row 195 accept: usage errors and a run without --root as a user exit 2
---
duration_ms: 14.287058
type: 'test'
...
# Subtest: row 195 accept: every in-instance call goes through sudo -u mosaic -H env PATH=<node dir>:...
ok 33 - row 195 accept: every in-instance call goes through sudo -u mosaic -H env PATH=<node dir>:...
---
duration_ms: 2172.062142
type: 'test'
...
# Subtest: row 195 accept: the host check runs with --check and never --enforce
ok 34 - row 195 accept: the host check runs with --check and never --enforce
---
duration_ms: 2107.070518
type: 'test'
...
# Subtest: row276 legacy call inventory pins every production bound and the conversation contract
ok 35 - row276 legacy call inventory pins every production bound and the conversation contract
---
duration_ms: 0.430447
type: 'test'
...
# Subtest: row276 talk legacy inner timeout cleans both sudo models
ok 36 - row276 talk legacy inner timeout cleans both sudo models
---
duration_ms: 1804.941733
type: 'test'
...
# Subtest: row276 precheck legacy inner timeout cleans both sudo models
ok 37 - row276 precheck legacy inner timeout cleans both sudo models
---
duration_ms: 1868.88839
type: 'test'
...
# Subtest: row276 claude-version legacy inner timeout cleans both sudo models
ok 38 - row276 claude-version legacy inner timeout cleans both sudo models
---
duration_ms: 1714.839012
type: 'test'
...
# Subtest: row276 pm-list legacy inner timeout cleans both sudo models
ok 39 - row276 pm-list legacy inner timeout cleans both sudo models
---
duration_ms: 1708.30916
type: 'test'
...
# Subtest: row276 node-version legacy inner timeout cleans both sudo models
ok 40 - row276 node-version legacy inner timeout cleans both sudo models
---
duration_ms: 1721.472041
type: 'test'
...
# Subtest: row276 legacy streams and display status preserve failures without granting success
ok 41 - row276 legacy streams and display status preserve failures without granting success
---
duration_ms: 2801.676908
type: 'test'
...
# Subtest: row276 trailer grammar cannot make supervisor failure pass
ok 42 - row276 trailer grammar cannot make supervisor failure pass
---
duration_ms: 2221.823199
type: 'test'
...
# Subtest: row276 earlier forged trailer and appended zero remain failures
ok 43 - row276 earlier forged trailer and appended zero remain failures
---
duration_ms: 594.314017
type: 'test'
...
# Subtest: row276 precheck outer bound discards success status and fixture cleans residual
ok 44 - row276 precheck outer bound discards success status and fixture cleans residual
---
duration_ms: 2218.865472
type: 'test'
...
# Subtest: row276 case1 capture and legacy tools refuse unsafe system tools
ok 45 - row276 case1 capture and legacy tools refuse unsafe system tools
---
duration_ms: 81.609844
type: 'test'
...
# Subtest: row276 stderr retention is bounded and keeps the final diagnostic
ok 46 - row276 stderr retention is bounded and keeps the final diagnostic
---
duration_ms: 286.857078
type: 'test'
...
# Subtest: row276 version and PM checks refuse successful-looking stdout on supervisor failure
ok 47 - row276 version and PM checks refuse successful-looking stdout on supervisor failure
---
duration_ms: 17.876988
type: 'test'
...
# Subtest: row276 full acceptance keeps all five healthy calls in both sudo models
ok 48 - row276 full acceptance keeps all five healthy calls in both sudo models
---
duration_ms: 4170.98118
type: 'test'
...
# Subtest: row276 vanished pid stat read returns 3 with empty stderr in both scripts
ok 49 - row276 vanished pid stat read returns 3 with empty stderr in both scripts
---
duration_ms: 5.049826
type: 'test'
...
# Subtest: row276 legacy stdout snapshot preserves exact bytes on success and command failure
ok 50 - row276 legacy stdout snapshot preserves exact bytes on success and command failure
---
duration_ms: 3373.039347
type: 'test'
...
1..50
# tests 50
# suites 0
# pass 49
# fail 1
# cancelled 0
# skipped 0
# todo 0
# duration_ms 247951.35731
Traceback (most recent call last):
File "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-276/run4/execute.py", line 13, in <module>
for i,f in enumerate(scope['whole_files']):step('whole-'+str(i+1),['node','--test','--test-reporter=tap',f])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-276/run4/execute.py", line 9, in step
if v['timeout'] or (v['code']==0 if red else v['code']!=0):raise RuntimeError('unexpected result: stop and classify '+name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: unexpected result: stop and classify whole-1
@@ -0,0 +1 @@
2026-10-22T21:09:19.218606+00:00
@@ -0,0 +1,18 @@
import datetime,hashlib,importlib.util,json,os,pathlib,subprocess,sys,time
sys.dont_write_bytecode=True
r=pathlib.Path(__file__).resolve().parent;p=r.parent
spec=importlib.util.spec_from_file_location('row276_driver',p/'driver.py');d=importlib.util.module_from_spec(spec);spec.loader.exec_module(d)
start=time.monotonic();results=dict(grant='sage-3004',steps=[])
(r/'start.txt').write_text(datetime.datetime.now(datetime.timezone.utc).isoformat()+'\n');print((r/'HEADER.json').read_text(),flush=True)
def step(name,cmd,red=False,seconds=1200):
print('START '+name,flush=True);v=d.run(cmd,r/(name+'.log'),seconds=seconds);v.update(name=name,expected_red=red);results['steps'].append(v);results['wall_seconds']=round(time.monotonic()-start,3);(r/'results.json').write_text(json.dumps(results,indent=2)+'\n')
if v['timeout'] or (v['code']==0 if red else v['code']!=0):raise RuntimeError('unexpected result: stop and classify '+name)
if red and 'legacy supervisor block exists' not in (r/(name+'.log')).read_text():raise RuntimeError('wrong RED reason: stop and classify')
print('END '+name,flush=True)
scope=json.loads((p/'GATE-SCOPE.json').read_text())
for i,f in enumerate(scope['whole_files']):step('whole-'+str(i+1),['node','--test','--test-reporter=tap',f])
step('changes-controller',[sys.executable,str(p/'driver.py'),'--grant','sage-3004','--out',str(r/'changes')],seconds=900)
limits=json.loads((p/'SHELL-LIMITS.json').read_text())['scripts']
for i,f in enumerate(scope['shells']):
limit=limits[f]['limit_seconds'];step('shell-'+str(i+1),['timeout','-k','10',str(limit),'bash',f],seconds=limit+30)
(r/'end.txt').write_text(datetime.datetime.now(datetime.timezone.utc).isoformat()+'\n');print('GATE COMPLETE',flush=True)
Loaded 100 of 1157 files, more files were not shown because too many files have changed in this diff. Show more