From b7191e72f0399985ef475009eae2ad803c46aada Mon Sep 17 00:00:00 2001 From: Jason Woltje Date: Thu, 22 Oct 2026 09:53:56 -0500 Subject: [PATCH] duckworth: row 269 thread-launch.test:182 addition (duckworth-0153) on e2e51bae1 BUILD.md --- agents/duckworth/work/row269/REVIEW-design-early.md | 9 +++++++++ docs/SESSIONS.md | 1 + 2 files changed, 10 insertions(+) diff --git a/agents/duckworth/work/row269/REVIEW-design-early.md b/agents/duckworth/work/row269/REVIEW-design-early.md index 611301c21..a96e5f88f 100644 --- a/agents/duckworth/work/row269/REVIEW-design-early.md +++ b/agents/duckworth/work/row269/REVIEW-design-early.md @@ -92,3 +92,12 @@ Any other change to a pre-existing test goes to Mos first. - threads.test.mjs:87-89 and sessions.test.mjs:117-120 at aca16404c bind a second unended run to one session and expect `thread-already-held` at claim. A bind refusal would change both old tests, and under mos-1285 that goes to Mos. - The brief (docs/plans/2026-10-21_t1-sessions.md:111-112) asks for "a private per-session lock plus the broker's unique holder/generation fence". The claim check at broker.mjs:4815 (`#sessionHolder(s.session)?.op === 'claim'`) is that broker fence, and the `.lock` O_EXCL lock is the private lock. - What this means for the code round: the claim comes after the spawn, so only the host lock and the registry check stop a second setup or spawn. M3 (the lock ignores a live holder) carries that. The brief's T2 "two concurrent dispatchers claim the same session: one holder" is the existing claim refusal, which stays tested. + +## thread-launch.test:182 (duckworth-0153) + +- Input: gizmoduck-0240. Local commit e2e51bae1, BUILD.md blob a4b8a1629. The diff from 7b985f8bf is 11 lines added in "Old assertions that change", with nothing removed. Read with git. +- No blockers. Mos rules on the change (gizmoduck-0239), and I check the exact diff at the manifest round. +- The reason holds. :171-172 make the threads with `thread.create`, so A's default session isn't `legacy-3l`. The brief puts new stores in D2's layout (t1-sessions.md:100, :294), so `threads/acme//session` at :182 moves. + - :183-185 and the later reads go through the same `store` variable, so changing only :182 carries them. + - :381 and :384 hold if the store check runs before the session workspace is made. That's the case for `../evil`, and the code round confirms it. +- Other old path reads I checked at aca16404c: launcher.test:37, :351, :637 and lifecycle.test:360, :391, :395, :430 use workspaceDir for non-thread instances (chief, coder, sec-1, .retired). Non-thread work keeps its instance path, so these don't change. diff --git a/docs/SESSIONS.md b/docs/SESSIONS.md index deecf7ca0..008df8cb7 100644 --- a/docs/SESSIONS.md +++ b/docs/SESSIONS.md @@ -1488,3 +1488,4 @@ are never rewritten or removed; corrections are new entries. 2026-10-22T14:46Z | Duckworth (Opus 5.5) | row 269 (264b, #1774) C1-C4 fold check on 04676f57b BUILD.md (duckworth-0151) | C1-C4 met, no blockers, code can start | 2026-10-22T14:48Z | Duckworth (Opus 5.5) | row 253 (#1758) run-log part on record tip 34401e7c9 (duckworth-0151) | 27 whole files 604/0/0 verified from logs, N9 pass accepted, no blockers | 2026-10-22T14:51Z | Duckworth (Opus 5.5) | row 269 (264b) bindLaunch change f684317eb BUILD.md 7b985f8bf (duckworth-0152) | session-running drop accepted, matches brief :111-112, no blockers | +2026-10-22T14:53Z | Duckworth (Opus 5.5) | row 269 (264b) thread-launch.test:182 addition e2e51bae1 BUILD.md a4b8a1629 (duckworth-0153) | reason holds, Mos rules, no blockers |