sage: docs for landings 191, 205, 268; #1782 owner thread-claims brief (mos-1262); re-pin 86f95bb27 plan; phase 2 window draft 3; seat SESSIONS and BUILD-LOG lines
This commit is contained in:
1 parent
c27207f6e6
commit
b3665f5ab1
9 files changed
+805
-34
No files matched your search
@@ -5220,8 +5220,62 @@ Before: managed project/thread verbs had no Console conversation area. After: fi
|
|||||||
|
|
||||||
2026-10-21T22:30:20Z | Huey | T1 sessions design r3, scrooge-0007 R1, Vikunja 463 | Before: r2 e19e30df2 nested new session checkouts under the retained legacy instance workspace, allowing project-name collision or historical parent inspection to reach live siblings. After: exact path is dataRoot/session-workspaces/business/instance/session, outside the legacy root; canonicalized ancestor/descendant overlap refuses; T2 nesting mutant covers historical mount/inspection and a legacy project named sessions. All other r2 content retained as approved, revision label updated. Verification: old nested path absent, manual R1-only delta, whitespace and installed queue guard checked; no code/builds/suites/live changes/provider calls/credential reads.
|
2026-10-21T22:30:20Z | Huey | T1 sessions design r3, scrooge-0007 R1, Vikunja 463 | Before: r2 e19e30df2 nested new session checkouts under the retained legacy instance workspace, allowing project-name collision or historical parent inspection to reach live siblings. After: exact path is dataRoot/session-workspaces/business/instance/session, outside the legacy root; canonicalized ancestor/descendant overlap refuses; T2 nesting mutant covers historical mount/inspection and a legacy project named sessions. All other r2 content retained as approved, revision label updated. Verification: old nested path absent, manual R1-only delta, whitespace and installed queue guard checked; no code/builds/suites/live changes/provider calls/credential reads.
|
||||||
|
|
||||||
|
2026-10-20 18:51:10 UTC | Row 191 #1689 design phase | Before: per-business launch revoke and per-binding Discord STOP leave task containers, active sessions and background work without one switch. Proposed per-data-root durable halt with human-only resume, generation-fenced starts, bounded concurrent termination, write-once stop receipts and existing event mirror; no schema migration. DESIGN.md inventories starter/continuation paths and container control-mount restriction. Sent to Dewey with Sage copied; implementation waits independent design approval. No tests, commits or live actions.
|
||||||
|
|
||||||
|
2026-10-20 18:57:51 UTC | Row 191 design revision | Dewey r1 changes: interim Console --send absence, reserved processing events and missing-state semantics required correction. DESIGN-r2.md now names CLI interim path, unavailable UI controls, trusted initialization and fail-closed missing leaf, container delete/replace mount tests, reservations and id-bound reconciliation. Small notes addressed including diagnostic seats and aliases. Recommended smaller Docker scope to Sage; design and scope approval pending, no code or test runs.
|
||||||
|
|
||||||
|
2026-10-20T19:50:56Z | Rocko | row 191 #1689 implementation stage: from independent brakes to shared root state, generation-fenced launcher and tracked stops, Discord/task guards and control HTTP/UI. Evidence is agents/rocko/work/queue-191/logs/ and PROGRESS.md. Fixture single files only so far; heavy verification and candidate not complete. Scope additions sage-1367 (one read-only CODE file) and sage-1392 (processing-only client socket timeout); no schema, proof baseline, live file/unit, commit or push change.
|
||||||
|
|
||||||
|
2026-10-20 22:58:45 UTC | Rocko | row 191 #1689 rebase inspection candidate | Rebuilt uncommitted kill-switch tree from da230ca48 onto landed row 190 base 00d4cc1f6 under new branch rocko/row191-r2-00d4. Hand merges retained instance flags and SSO/sign-out changes; fixture tests exposed and fixed SSO signer compatibility and two unknown-runtime cleanup defects. Final touched singles 249/249 across 26 files; 15 overlapping Client reader files 102/102. Manifest a4f780c2 has 78 paths; packet 185 files verified with scan clear. Mutants and owner gate remain pending; no review-ready or activation claim, no commit/push/live action.
|
||||||
|
|
||||||
|
2026-10-21 23:39:21 UTC | Rocko | row 191 #1689 inspection snapshot | Sage-2242 authorized a local inspection commit for Honker's row 194 S6. Created d52b4db1c on new rocko/row191-inspection-20261021, parent 00d4cc1f6, preserving the reviewed-design build and candidate a4f780c2 (78 paths). Static manifest/index/source scan and diff check verified; no tests run, no push credential or push attempt. Existing single-file evidence is historical, 249/249 and overlapping Client readers 102/102; suites/mutants/gate remain pending. Current code has verified runtime signalling and instance halt, but no dedicated per-run stop API yet; Honker and Sage notified of that seam directly. Snapshot is not review-ready or approved for live use.
|
||||||
|
|
||||||
|
2026-10-22 00:04:05 UTC | Rocko | row 191 #1689 per-run stop inspection | Implemented agreed Honker-0079/0081 stopRun contract with verified per-signal identity, fixed 5s+2s, durable first-owner join and immutable result plus later-exit observations. Focused CLEAR sage-2250: final 9 files 62/62, no skipped, after correcting host guard placement and peer-discovery fixture timeout isolation; initial failures and failed teardown logs retained, only own failed group stopped. Slot returned with cwd sweep clear. Sage published f7bf7dfec; sage-2265 clean rebase creates 7aa18b0f6 on dcd8d4dda under new branch, explicit Rocko identity, all 79 manifest product blobs identical so 62/62 evidence carried. Direct S6 handoff sent to Honker and Sage. Wider suites, mutants, review and activation remain pending.
|
||||||
|
|
||||||
2026-10-22T00:18:12Z | Sage (Opus 5.5) | row 254 landing (#1759), library.sync human timeout | Before: the human transport gave library.sync the 5-second default, so a sync longer than that reported outcome-unknown, and six library-* codes reached the Console as 502. After: 331597709 lands Megavolt's candidate (7 paths, tree d49e4626f, manifest digest be63cfbe recomputed and matched). human-cli.mjs waits 130 s for library.sync, past the server's 120 s hold, and 5 s for other verbs. webui bus.mjs maps library-sync-busy, library-diverged and library-accept-stale to 409, library-accept-invalid to 400, and library-credential-missing and library-fetch-failed to 503. channel-proof re-pinned. Merged-tree gate on the landing commit: library 77/0, bus 628/0, webui 305/0 (1 skip), cli 749/0 (23:44:33-23:55:11Z). eb9672c91 adds the README request-timeout sentence (Dewey N1) and a DEFERRED entry for the four library codes still at 502 (Dewey N2, binds the Console library routes row). Overlap sweep before push: 268 rebased to r2 ecd9b35eb (README only, approval carried webby-0096), 194 rebased to b7. Done rev 3072, #1759 closed.
|
2026-10-22T00:18:12Z | Sage (Opus 5.5) | row 254 landing (#1759), library.sync human timeout | Before: the human transport gave library.sync the 5-second default, so a sync longer than that reported outcome-unknown, and six library-* codes reached the Console as 502. After: 331597709 lands Megavolt's candidate (7 paths, tree d49e4626f, manifest digest be63cfbe recomputed and matched). human-cli.mjs waits 130 s for library.sync, past the server's 120 s hold, and 5 s for other verbs. webui bus.mjs maps library-sync-busy, library-diverged and library-accept-stale to 409, library-accept-invalid to 400, and library-credential-missing and library-fetch-failed to 503. channel-proof re-pinned. Merged-tree gate on the landing commit: library 77/0, bus 628/0, webui 305/0 (1 skip), cli 749/0 (23:44:33-23:55:11Z). eb9672c91 adds the README request-timeout sentence (Dewey N1) and a DEFERRED entry for the four library codes still at 502 (Dewey N2, binds the Console library routes row). Overlap sweep before push: 268 rebased to r2 ecd9b35eb (README only, approval carried webby-0096), 194 rebased to b7. Done rev 3072, #1759 closed.
|
||||||
|
|
||||||
|
2026-10-22 00:24:34 UTC | Rocko (Codex gpt-6.1-sol, d99326cc) | row 191 #1689 full gate on c78f48946 | stopped on second integration failure per sage-2275; singles 269/269, processing-control 61/61, bus 646/646; CLI interrupted with 26 observed failures; no further edits; cwd sweep empty and slot returned to Sage.
|
||||||
|
|
||||||
|
2026-10-22 00:48:20 UTC | Rocko (Codex gpt-6.1-sol, d99326cc) | row 191 #1689 eb3abba12 full gate | stopped at Discord 190/192; 32 singles 304/304, processing-control 61/61, bus 646/646, cli 761/761; two uninitialized Discord fixtures reported to Sage; no later run; cwd sweep empty, slot clear.
|
||||||
|
|
||||||
|
2026-10-22 00:58:27 UTC | Rocko (Codex gpt-6.1-sol, d99326cc) | row 191 #1689 sage-2294 fixture fix | e6800380d on eb3abba12, two test files/four additions, assertions preserved; 338-entry static all-package sweep recorded; no tests; sent Sage for publication and Honker for dependent gate.
|
||||||
|
|
||||||
|
2026-10-22 01:30:04 UTC | Rocko (Codex gpt-6.1-sol, d99326cc) | row 191 #1689 e6800380d resume | binding15/15, recover5/5, Discord192/192; stopped WebUI314 passed/4 failed/1 esbuild skip; processing polling violates sign-out/manual redirect and bar changes layout; no fixes/retries, cwd sweep empty, slot returned.
|
||||||
|
|
||||||
|
2026-10-22 01:38:08 UTC | Rocko (Codex gpt-6.1-sol, d99326cc) | row 191 #1689 sage-2317 Console integration fix | 8e1f55c1d on e6800380d; shared sign-out/manual redirect/interval and desktop frame fixes, assertions retained, six browser cases, 73 mutant sites preflight; syntax only, no tests; sent Sage/Honker.
|
||||||
|
|
||||||
|
2026-10-22 02:06:38 UTC | Rocko (Codex gpt-6.1-sol, d99326cc) | row 191 #1689 rebase sage-2329 | eafcbd3e7 on ddfb29af7, new branch, dispatcher retains processing and access; CLI/readme auto-merges checked; 87-path fd0f2740 manifest and 73-site preflight; Sage2333 published, awaiting CLEAR; no tests.
|
||||||
|
|
||||||
|
2026-10-22 02:20:51 UTC | Rocko (Codex gpt-6.1-sol, d99326cc) | row 191 #1689 eafcbd3e7 full gate | stopped singles313/6: six new browser cases count app freshness timer as processing timer; diagnosis sent Sage, no fix/retry; no suites/shells/mutants; cwd sweep empty, slot clear.
|
||||||
|
|
||||||
|
2026-10-22 02:23:13 UTC | Rocko (Codex gpt-6.1-sol, d99326cc) | row 191 #1689 sage-2345 timer fixture | 4db8b5778 on eafcbd3e7, one line attributes timer to processing.js; all assertions retained, no product change or tests; sent Sage and Honker; awaiting publication/CLEAR.
|
||||||
|
|
||||||
|
2026-10-22 02:25:29 UTC | Rocko (Codex gpt-6.1-sol, d99326cc) | row 191 #1689 sage-2349 record commit | 0f8235277 on 4db8b5778 adds packet BUILD.md cause record; product manifest remains ffb46fbd/87 paths; no amend, product change or tests; Sage/Honker notified.
|
||||||
|
|
||||||
|
2026-10-22 02:48:36 UTC | Rocko (Codex gpt-6.1-sol, d99326cc) | row 191 #1689 0f8235277 full gate second red | singles330/330, processing61/61, bus646/646, cli783/783, discord192/192; WebUI323/1/1 host esbuild skip; shell geometry1062vs1000; stopped/no retry, no later suites/shells/mutants; cwd sweep empty, slot returned, Sage escalates Mos.
|
||||||
|
|
||||||
|
2026-10-22 02:57:36 UTC | Rocko (Codex gpt-6.1-sol, d99326cc) | row 191 #1689 mos-1248 desktop layout restart | FF 5cd32f4c1 on 0f8235277: desktop grid allocates processing bar, existing shell assertions kept, visibility/no-scroll assertions added; 74 static mutant sites; candidate 2f93ef19; sent Webby/Sage for static review; no runs, awaiting review and CLEAR.
|
||||||
|
|
||||||
|
2026-10-22 03:11:09 UTC | Rocko (Codex gpt-6.1-sol, d99326cc) | row 191 static nav layout, mos-1249/1250 | FF da4334806 on 5cd32f4c1; controls first in nav, non-sticky per sage-2386/webby-0108; candidate-only placement assertion changed, landed shell assertions preserved; 77 mutants statically preflighted; manifest 245dceb1; Webby/Sage handoff sent, no runs, awaiting static look/publish/debug CLEAR.
|
||||||
|
|
||||||
|
2026-10-22 03:15:11 UTC | Rocko (d99326cc) | row 191 sage-2394 debug | da4334806 shell5/5 and processing-browser9/9, awk14/0/0; geometry heights reported with read-only distinction; cwd sweep[] and slot returned; full window awaits separate CLEAR.
|
||||||
|
|
||||||
2026-10-22 02:01:30 UTC | Sage (Claude Opus 5.5, 1ef1e4f8) | row 202 #1700 FED R5 landing | ddfb29af7 on 9c9732983: 6 manifest paths from a74cd9f87 (digests match CANDIDATE.sha256, patch-id 9d89077b equal); Duckworth APPROVE r5 rev 3026; C1 gate by Quackerjack on merge 3b86180b9: cli 771/771 skip 0 (run 2, run 1 red on gate TMPDIR length), 10 test-*.sh rc 0, M1-M13 killed; done rev 3108; landing note refused for length before the done move, so the record is the commit body and #1700 c30265; 191 and 194 rebased onto it (one scripts/mosaic case line)
|
2026-10-22 02:01:30 UTC | Sage (Claude Opus 5.5, 1ef1e4f8) | row 202 #1700 FED R5 landing | ddfb29af7 on 9c9732983: 6 manifest paths from a74cd9f87 (digests match CANDIDATE.sha256, patch-id 9d89077b equal); Duckworth APPROVE r5 rev 3026; C1 gate by Quackerjack on merge 3b86180b9: cli 771/771 skip 0 (run 2, run 1 red on gate TMPDIR length), 10 test-*.sh rc 0, M1-M13 killed; done rev 3108; landing note refused for length before the done move, so the record is the commit body and #1700 c30265; 191 and 194 rebased onto it (one scripts/mosaic case line)
|
||||||
|
|
||||||
2026-10-22 03:35:55 UTC | Sage (Claude Opus 5.5, 1ef1e4f8) | row 273 #1778 activate --send/--no-sso landing | 0bbf0f6d1 landed on 378a76b85, a rebase of cac7d0f67 (0042f713d) with all 6 range-diff pairs = and equal patch-ids; 4-path manifest e1031023 unchanged; Filbert APPROVE rev 3111 (c30308) carried merge-scoped under mos-1160, carry comment c30319 names 0bbf0f6d1. Gate on 0bbf0f6d1 by Darkwing: stack-release.test.mjs 218/218 skip 0, stack-release-external.test.mjs 25/25 skip 0, test-release.sh rc 0 (selftest 14/0, no skips), T58 controls c0 11/11 pass and c1 11/11 fail, M1-M7 killed. Rerun because row 202 changed scripts/mosaic, which stack-release.test.mjs copies. Red 1 was 978143bf4 (T53 test 6 usage pin). This doc commit adds the TOOLS.md usage line and F39 rules (Filbert N1).
|
2026-10-22 03:35:55 UTC | Sage (Claude Opus 5.5, 1ef1e4f8) | row 273 #1778 activate --send/--no-sso landing | 0bbf0f6d1 landed on 378a76b85, a rebase of cac7d0f67 (0042f713d) with all 6 range-diff pairs = and equal patch-ids; 4-path manifest e1031023 unchanged; Filbert APPROVE rev 3111 (c30308) carried merge-scoped under mos-1160, carry comment c30319 names 0bbf0f6d1. Gate on 0bbf0f6d1 by Darkwing: stack-release.test.mjs 218/218 skip 0, stack-release-external.test.mjs 25/25 skip 0, test-release.sh rc 0 (selftest 14/0, no skips), T58 controls c0 11/11 pass and c1 11/11 fail, M1-M7 killed. Rerun because row 202 changed scripts/mosaic, which stack-release.test.mjs copies. Red 1 was 978143bf4 (T53 test 6 usage pin). This doc commit adds the TOOLS.md usage line and F39 rules (Filbert N1).
|
||||||
|
|
||||||
|
2026-10-22 04:02:12 UTC | Rocko (d99326cc) | row191 full window0fa7bf421 | touched35files336pass, packages2403pass/1esbuildskip, shells425selftests+156queue node pass; SR01–07killed, SR08timeout,69unrun; stopped/no retry;88blobs restored,cwd sweep[],owned network removed,slot returned Sage; await Mos ruling.
|
||||||
|
|
||||||
|
2026-10-22 04:14:56 UTC | Rocko (d99326cc) | row191 control/resume sage-2427 | control12/12;SR08separate timeoutkill;49resumed assertionkills thenKS43survived;total56assertionkills+1timeout,1survivor,19unrun;88blobs restored,cwd sweep[],slot returned,Sage/Mos informed;no retry/edit.
|
||||||
|
|
||||||
|
2026-10-22 04:21:30 UTC | Rocko (d99326cc) | row191 KS43+19 retarget run | KS43assertionkill thenKS44invalid mutation syntax;57assertionkills+1timeout,1invalid,18unrun;stopped,no edit/retry;88hashes restored,cwd sweep[],slot returned,Sage/Mos notified.
|
||||||
|
|
||||||
|
2026-10-22 04:30:06 UTC | Rocko (d99326cc) | row191 KS44+18 resume | 10assertionkills thenKS54timeout-without-control despite dependency assertion;total67assertionkills+1timeoutkill,1unqualifiedtimeout,8unrun;88hashes restored,cwd sweep[],slot returned,Sage/Mos notified,no retry/edit.
|
||||||
|
|
||||||
|
2026-10-22 04:41:46 UTC | Rocko (Codex gpt-6.1-sol,d99326cc) | row191 #1689 builder complete/in-review | published0fa7bf421,manifest0bcbf337;35singles336pass,9packages2403pass/1knownskip,10shells425selftests+156queue nodepass;75assertionkills+2controlledtimeoutkills=77;88hashrestore,cwd sweep[],slotreturned;in-review rev3114,expected no-token failure3115(exit1);Sage/Dewey handoff,no live action.
|
||||||
|
|
||||||
|
2026-10-22 05:03:18 UTC | Rocko (Codex gpt-6.1-sol,d99326cc) | Vikunja502 processing test/runner hardening | brief+isolatedrocko-v502;expected wordingred→green,Node27/27,Python4/4,5/5assertionkills(includingSR08andKS54nohang),0skips/timeouts;sweep[],candidate5hashrestored,slotreturned05:01:29Z;candidate968d6ee3,runnerc5bdc764;packetready,no commit/push/liveaction.
|
||||||
|
|
||||||
|
2026-10-22 05:07:34 UTC | Rocko (d99326cc) | Vikunja502 committed/review handoff sage-2482 | newbranchrocko/vikunja502-ce6a-20261022,source8e3c6a79b+packet9bf4683c6 on ce6a96ad6;5paths no base drift,range-diff=,patch-id37135ebe unchanged;manifest968d6ee3,packet93889519 verifies39/39;focused runs carry;Sage publish/Dewey review handoff sent,no push/liveaction.
|
||||||
|
|
||||||
|
2026-10-22 05:10:00 UTC | Sage (1ef1e4f8) | serial landing 205 then 268 | 205: 3 commits, 4 paths, digest 858463b1, every scripts/test-*.sh green on ce6a96ad6, Duckworth N1-N4 carried (N1/N3 to 205b or R3, N2 to the 193b2 brief, N4 #1782 before any user thread goes live). 268 r4: c27207f6e on 205, 9 paths, digest caa0fa4e, patch-id 2942acc8 equal to r3. Overlap checks clean before both pushes. No live action; LIVE stays 86f95bb27.
|
||||||
@@ -393,6 +393,45 @@ with nothing carried. Sage-2345 counts the timer-fixture red as the first in
|
|||||||
this 191 window; any second red stops and is escalated to Mos. Previous logs
|
this 191 window; any second red stops and is escalated to Mos. Previous logs
|
||||||
are retained in gate-attempt-eaf/.
|
are retained in gate-attempt-eaf/.
|
||||||
|
|
||||||
|
## Full gate on 0f8235277: second red (sage-2351)
|
||||||
|
|
||||||
|
Candidate: 0f8235277e1fc21588edb6f2931d66c8e154a400 on ddfb29af7.
|
||||||
|
Manifest: ffb46fbdb875f97ff2eb7a7bed8bf6d5c4df53b8a63c738ffcde5fc5f6b7f6ad.
|
||||||
|
No prior result carried. Start 2026-10-22T02:33:41Z; failed-step exit
|
||||||
|
2026-10-22T02:46:17Z. Fresh TMPDIR /mnt/storage/scratch/tmp/giNF.
|
||||||
|
Compose project rocko-r191-gate, trapped ownership-checked network cleanup.
|
||||||
|
|
||||||
|
| Step | Passed | Failed | Skipped | Exit |
|
||||||
|
|---|---:|---:|---:|---:|
|
||||||
|
| 34 changed test files singly | 330 | 0 | 0 | 0 |
|
||||||
|
| processing-control | 61 | 0 | 0 | 0 |
|
||||||
|
| bus | 646 | 0 | 0 | 0 |
|
||||||
|
| cli (including access) | 783 | 0 | 0 | 0 |
|
||||||
|
| discord | 192 | 0 | 0 | 0 |
|
||||||
|
| webui | 323 | 1 | 1 | 1 |
|
||||||
|
| tasks, seat, project, library | not run | — | — | — |
|
||||||
|
| all ten scripts/test-*.sh | not run | — | — | — |
|
||||||
|
| all 73 mutants | not run | — | — | — |
|
||||||
|
|
||||||
|
Singles sum independently confirmed with awk over all 34 TAP logs.
|
||||||
|
The sole failure is shell.test.mjs:380 in the full shell-browser test:
|
||||||
|
scrollHeight 1062 vs innerHeight 1000. Full evidence is
|
||||||
|
gate-logs/package-webui.log (not ok 271, line 1626).
|
||||||
|
All prior manual-redirect/sign-out failures and eight processing-browser cases
|
||||||
|
pass, but the desktop short-page geometry is still wrong. No passing layout
|
||||||
|
or full-gate claim is made.
|
||||||
|
|
||||||
|
Known host-drift TAP skip: editor rebuild requires exactly esbuild 0.28.2,
|
||||||
|
while shared node_modules has 0.28.1. Full line is in tap-skips.json. This skip
|
||||||
|
is not counted as a red. No shell suite ran, so skip-lines.txt has no ^skip
|
||||||
|
shell line. No Docker test workload or mutant started.
|
||||||
|
|
||||||
|
Stopped at the first failed step without retry or product edits, per sage-2351.
|
||||||
|
This is the second red in the 191 window and is with Sage for Mos escalation
|
||||||
|
under mos-0823. Parent runner exited; EXIT cleanup completed. Cwd-scoped node
|
||||||
|
and chromium sweep returned [] at 02:47:14Z, product worktree is clean, and the
|
||||||
|
slot was returned. No in-review move was made.
|
||||||
|
|
||||||
|
|
||||||
### mos-1248 / sage-2363: desktop viewport allocation (unrun static candidate)
|
### mos-1248 / sage-2363: desktop viewport allocation (unrun static candidate)
|
||||||
|
|
||||||
@@ -472,3 +511,304 @@ the 334px nav at1440x420 before the window. No run yet.
|
|||||||
Mutant delta: KS59 now reverts the complete layout (HTML and CSS together);
|
Mutant delta: KS59 now reverts the complete layout (HTML and CSS together);
|
||||||
KS60 hides the controls; KS61 moves them into #main; KS62 drops the (0,3,0)
|
KS60 hides the controls; KS61 moves them into #main; KS62 drops the (0,3,0)
|
||||||
button reset. Total77. Every new site has its named killing test.
|
button reset. Total77. Every new site has its named killing test.
|
||||||
|
|
||||||
|
|
||||||
|
### sage-2394 debug on published da4334806 (2026-10-22)
|
||||||
|
|
||||||
|
03:14:37Z–03:14:53Z: shell.test.mjs whole 5/5, processing-browser.test.mjs
|
||||||
|
whole 9/9, 0 failures/skips. awk sum14/0/0. Original shell short-page and
|
||||||
|
long-page assertions pass unchanged. Logs/results and empty cwd sweep are in
|
||||||
|
debug-da4334806/. Slot clear sent Sage/Webby03:15:11Z after sweep.
|
||||||
|
Controls/tree/main heights: read-only shell1440x1000 212.5/914/914; writable
|
||||||
|
processing fixture1440x1000 127/914/914;1440x420 127/334/907.734375;800x420
|
||||||
|
127/334/1131.65625. Stop visible/order0/focusable/aboveProjects at400x1000.
|
||||||
|
Writable127 is below half the334 nav. The read-only212.5 height at1000 was
|
||||||
|
flagged for Sage's usability call; that state was not measured at420, so no
|
||||||
|
claim is made that all states use less than half the short nav.
|
||||||
|
No mutants or full gate run under this debug grant. Await separate CLEAR.
|
||||||
|
|
||||||
|
|
||||||
|
### R6 accepted: sage-2399 / webby-0111 (2026-10-22 03:16Z)
|
||||||
|
|
||||||
|
Sage accepts the short-nav usability tradeoff. Writable controls occupy38%
|
||||||
|
of the334px nav at1440x420. The read-only recovery note makes that about64%,
|
||||||
|
inferred from the measured212.5px height at the same width. The region is
|
||||||
|
non-sticky and scrolls away; Projects was already below the fold at that size
|
||||||
|
before191. Webby confirmed the debug TAP and has no window blocker. Sage
|
||||||
|
tracks the read-only note length with the halt-banner follow-up; no change
|
||||||
|
to this row.
|
||||||
|
|
||||||
|
Do not rebase or run now. Row273 lands first. On Sage's landing message,
|
||||||
|
rebase the candidate including the two latest layout commits onto the new
|
||||||
|
refactor under a new branch name (mos-1086), then provide range-diff,
|
||||||
|
patch-ids and the refreshed88-product-path manifest. The full no-carry
|
||||||
|
window requires a separate Sage CLEAR on that published tip.
|
||||||
|
|
||||||
|
|
||||||
|
### Rebase after row273: sage-2402 (2026-10-22 03:42Z)
|
||||||
|
|
||||||
|
New branch rocko/row191-stoprun-86f9-20261022, tip
|
||||||
|
0fa7bf421fc153a226b5f06ed484e089e48e23ba, on86f95bb27. All10 commits
|
||||||
|
rebase cleanly and range-diff pairs each with '='; no conflict resolution.
|
||||||
|
All88 per-file patch-ids match the old candidate. Whole product diff stable
|
||||||
|
patch-id before/after:0846823aefe165363601a6c68134ad46cc701c73.
|
||||||
|
87 product blobs are identical; only docs/TOOLS.md changes because the new
|
||||||
|
base carries row273's --send/--no-sso usage and three explanatory F39 lines.
|
||||||
|
191's TOOLS hunks stay unchanged. New88-path manifestSHA256:
|
||||||
|
0bcbf337433f6d46d809ee1dcaf8a5a8503160403d273cf73d6dac64adef3c02.
|
||||||
|
Range-diff, per-path patch-ids and TOOLS comparison are rebase-86f9-* files.
|
||||||
|
Static77-site exact-once preflight has0errors. No tests run, nothing carried
|
||||||
|
into the required full window; await Sage publication and separate CLEAR.
|
||||||
|
|
||||||
|
|
||||||
|
### Full no-carry window on0fa7bf421: stopped at SR08 (sage-2407/2418)
|
||||||
|
|
||||||
|
03:44:56Z–04:01:29Z. All35touched files passed336/0/0; nine packages
|
||||||
|
passed2403/0 with1known editor/esbuild skip. Every shell exited0:425selftests
|
||||||
|
plus156queue node tests passed; the canonical-root queue check and two
|
||||||
|
explicit live-provider exclusions are saved in skip-lines.txt. See
|
||||||
|
GATE-RESULTS.md for per-suite counts and mutant table.
|
||||||
|
SR01–SR07 killed. SR08 timed out at90seconds without named assertion failure
|
||||||
|
(TAP header only); runner restored all88candidate blobs and stopped. The69
|
||||||
|
later mutants did not run. SR08 is not counted as killed. Cwd sweep[] and
|
||||||
|
owned network cleanup completed; slot clear sent Sage04:02:12Z.
|
||||||
|
Saved mutation, timeout policy lines64–89 and shell/skip table sent Sage in
|
||||||
|
response to sage-2418. No source edit or retry; no in-review move. Await
|
||||||
|
Mos ruling and explicit Sage CLEAR before any control/replay/resume.
|
||||||
|
|
||||||
|
|
||||||
|
### SR08 timeout policy: mos-1259 / sage-2423 (2026-10-22 04:07Z)
|
||||||
|
|
||||||
|
Cause confirmed by Mos: runtimes.mjs:333 loops on now() <= deadline, while
|
||||||
|
stop-run.test.mjs:106-108 gives the second host a fixed fake clock with real
|
||||||
|
sleep. Removing the join branch enters the stop loop without advancing that
|
||||||
|
clock. Original SR08 log contains TAP header only; original timeout record
|
||||||
|
stays immutable. Mos permits separate classification as killed-by-timeout
|
||||||
|
only after the unmutated same whole test file passes the same90second
|
||||||
|
harness in this resumed run. **Control result: not run; awaiting CLEAR.**
|
||||||
|
No assertion kill is claimed for SR08.
|
||||||
|
|
||||||
|
Runner review requested from Dewey, Sage copied. SHA256 of run-mutants.py:
|
||||||
|
fe0d360f86d86ab2df967da5338479c593c27c88d06eb38a1389d99a08489369. Diff:runner-mos1259.diff; baseline:
|
||||||
|
run-mutants.before-mos1259.py. Shared execution harness uses90seconds, own
|
||||||
|
process groups, verified descendant cleanup and restored source bytes. A
|
||||||
|
control must pass every test with exit0, no not-ok/skip/cancel/fail. Its record
|
||||||
|
binds invocation id, candidate HEAD/manifest and test hash; all88candidate
|
||||||
|
blobs verified before and after control, and before each mutation. The
|
||||||
|
approved historical SR08 classification and69-site SR09+resume use separate
|
||||||
|
files so the original seven kills and timeout evidence remain intact.
|
||||||
|
Assertion kills and timeout kills have separate counters. No control for the
|
||||||
|
same file in this invocation means a timeout stops; survivors and invalid
|
||||||
|
failures stop too. Every timeout gets a cause/control record before review.
|
||||||
|
|
||||||
|
No product/test change, no control/mutant execution. Wait for independent
|
||||||
|
runner approval and Sage CLEAR. Green suites carry only on unchanged0fa7bf421
|
||||||
|
and manifest0bcbf337. Test clock fix is deferred to Vikunja502 as Mos ruled.
|
||||||
|
|
||||||
|
|
||||||
|
### Independent runner approval: dewey-0789 (2026-10-22 04:11:20Z)
|
||||||
|
|
||||||
|
Dewey APPROVES the frozen fe0d360f86d86ab2df967da5338479c593c27c88d06eb38a1389d99a08489369
|
||||||
|
runner, static only. Use only the proposed --control-file stop-run.test.mjs
|
||||||
|
--adjudicate-timeout SR08 --resume-from SR09 invocation. A positional-id or
|
||||||
|
full run would overwrite the original evidence and is not this resume.
|
||||||
|
|
||||||
|
Report the complete tally as7 prior assertion kills (old status killed),
|
||||||
|
plus SR08 separately adjudicated by timeout after control passes, plus69
|
||||||
|
resumed sites. The summary file counts only this invocation. No control or
|
||||||
|
resume result exists yet; Sage CLEAR remains required.
|
||||||
|
|
||||||
|
Classification change: the reviewed runner recognizes indented not-ok lines
|
||||||
|
with ^\s* rather than only top-level lines. Controls therefore reject nested
|
||||||
|
failures too, and mutant assertion kills still require the named pattern in
|
||||||
|
a failing test name. SR01–SR07 evidence was classified by the original runner.
|
||||||
|
|
||||||
|
Historical SR08 has no HEAD field. Its binding to0fa7bf421 relies on the saved
|
||||||
|
commit.txt/log timestamps and the new candidate HEAD+88blob check, not a
|
||||||
|
retroactively invented HEAD field in the old result. Preserve this provenance
|
||||||
|
in the adjudication report. Any newly detected timeout needs a concrete cause
|
||||||
|
before review; the generic placeholder is not accepted review evidence.
|
||||||
|
|
||||||
|
|
||||||
|
### Control and resume: sage-2427, stopped on KS43
|
||||||
|
|
||||||
|
Control/resume began04:13:44Z; last saved mutant result2026-10-22T04:14:08Z; process
|
||||||
|
absence confirmed04:14:56Z and slot returned to Sage. Whole unmutated
|
||||||
|
stop-run.test.mjs control passed12/12, exit0, no not-ok, no skips/cancels,
|
||||||
|
in0.459seconds. The reviewed runner adjudicated original SR08 separately
|
||||||
|
as killed-by-timeout under mos-1259. The immutable original SR08 row/log
|
||||||
|
stay unchanged; adjudication binds the control, exact cause, current HEAD
|
||||||
|
and manifest. Historical HEAD provenance remains as Dewey N4 described.
|
||||||
|
|
||||||
|
Resume stopped at KS43, not retried. It removes the inner processingHTTP
|
||||||
|
origin check and its selected outer-route test passed1/1(exit0). Saved
|
||||||
|
evidence:resume-mutant-logs/KS43.tap and resume-mutant-results.json.
|
||||||
|
Tally:7prior assertion kills +49resumed assertion kills =56assertion kills;
|
||||||
|
1historical timeout kill;1survivor(KS43);19unrun. No new timeouts or placeholder
|
||||||
|
causes. All88candidate blobs restored and resume cwd sweep[]; no product or
|
||||||
|
test change. No in-review move. Sage and Mos notified directly.
|
||||||
|
|
||||||
|
Static diagnosis only: KS43 selects processing.test.mjs:52's outer-server
|
||||||
|
fence test. The unchanged direct-handler test at:95 already isolates this
|
||||||
|
origin guard from serve's outer refusal. Its pattern was not selected. Sent
|
||||||
|
recommendation to Sage/Mos to correct only the mutant's named killer after
|
||||||
|
their ruling, then run KS43+19remaining. No metadata edit or rerun authorized
|
||||||
|
yet; no claim the direct-handler test kills it until the run proves it.
|
||||||
|
|
||||||
|
|
||||||
|
### KS43 metadata retarget: mos-1261 (2026-10-22 04:16:41Z)
|
||||||
|
|
||||||
|
Original pattern `processing write fences refuse` selected processing.test:52.
|
||||||
|
KS43 survived with1passing test and no writer call, preserved in
|
||||||
|
resume-mutant-results.json and resume-mutant-logs/KS43.tap. The serve-level
|
||||||
|
test cannot isolate the handler guard: outer fences and later refusal can
|
||||||
|
mask its removal. No product defect or new kill is claimed from static read.
|
||||||
|
New pattern: `processing handler independently refuses wrong origin and cross-site before its writer`,
|
||||||
|
the existing direct processingHTTP test at:95-107 with valid user/site/content
|
||||||
|
headers, asserted403 and no writer call. Only KS43's pattern changed in the
|
||||||
|
77-site table; product/test/mutation bytes unchanged. Generator mirrors it.
|
||||||
|
|
||||||
|
TableSHA256:5dbc8308c995e1974d6da63b3daa967896d822154eab38a8bb96154be667edf5. Diff:mutant-table-mos1261.diff,
|
||||||
|
baseline:all-mutants.before-mos1261.json. Dewey must independently review
|
||||||
|
this metadata diff before the next run. Static audit of all19unrun sites:
|
||||||
|
mutant-pattern-audit-mos1261.md; no other serve-level/direct-handler mismatch
|
||||||
|
with an existing direct test warrants retargeting. KS44 body-bound case has
|
||||||
|
no direct-handler counterpart; its oversized whitespace+{} case is valid
|
||||||
|
JSON without the bound, so it retains the existing pattern.
|
||||||
|
|
||||||
|
Carry56assertion kills+1timeout kill and green suites only on unchanged
|
||||||
|
0fa7bf421. Next approved scope is KS43+19sites after review and Sage CLEAR.
|
||||||
|
No run authorized by this metadata change.
|
||||||
|
|
||||||
|
|
||||||
|
### Retarget review APPROVE and C1 archive: dewey-0791 (2026-10-22 04:19:55Z)
|
||||||
|
|
||||||
|
Dewey approves table5dbc8308 and the19-site audit, conditional on preserving
|
||||||
|
the first resume evidence before any next run. Archive:mos-1261-archive/,
|
||||||
|
full per-file inventory:mos-1261-archive/sha256-manifest.txt.
|
||||||
|
|
||||||
|
- `resume-mutant-results.json` SHA256 `f5725ef26cdb488441285081fadaa9ce4a3e7d390ab2a1c6d04acfd27f105fc6`
|
||||||
|
|
||||||
|
- `resume-mutant-logs/KS43.tap` SHA256 `c778ee33edb667f795ab560a328fd5c1c04ef6acf99d7b79c364f6302cf29864`
|
||||||
|
|
||||||
|
- `unmutated-control.json` SHA256 `ee9ddcd69d24276165abe1185f159a2737157fcae8fd37f731768e9324b765e5`
|
||||||
|
|
||||||
|
- `SR08-timeout-adjudication.json` SHA256 `214a04696d3329ef67bf10578daf4d251599816fd246bc31abecae1a6230e1e0`
|
||||||
|
|
||||||
|
The50-row result, all first-resume logs and control/adjudication records
|
||||||
|
were copied byte-for-byte. Original paths remain untouched too. A separate
|
||||||
|
retarget-mos1261/ directory holds byte-identical approved runnerfe0d360f,
|
||||||
|
reviewed table5dbc8308 and identical candidate/commit files. The proposed
|
||||||
|
--resume-from KS43 invocation there selects20sites and writes its own logs
|
||||||
|
and results without overwriting either original or archive. No control flag
|
||||||
|
is needed for these tests; any timeout without a same-file control stops.
|
||||||
|
Final tally will combine7old assertionkills +49first-resume assertionkills +
|
||||||
|
SR08separate timeout adjudication +20retarget results. Still no run; awaiting
|
||||||
|
Sage CLEAR. Product/test bytes remain unchanged.
|
||||||
|
|
||||||
|
|
||||||
|
### KS43 retarget run: sage-2436, stopped on KS44 invalid mutation
|
||||||
|
|
||||||
|
Run began04:21:06Z; KS43 is killed by the named direct-handler assertion.
|
||||||
|
KS44 then fails import with SyntaxError Unexpected token catch at
|
||||||
|
processing-http.mjs:40. The failing TAP name is the test file, not the
|
||||||
|
selected test, so runner records invalid-failure and stops without a kill.
|
||||||
|
Evidence remains in retarget-mos1261/console.log,resume-mutant-results.json
|
||||||
|
and resume-mutant-logs/KS43.tap,KS44.tap. No original evidence overwritten.
|
||||||
|
|
||||||
|
Cause: our KS44 mutation uses `// no body bound` to replace an inline
|
||||||
|
`if (size > 1024) throw Error();` in a one-line for-await body. The comment
|
||||||
|
swallows the remaining chunks.push and closing brace. This is malformed
|
||||||
|
mutation metadata, not an observed product failure. No metadata correction
|
||||||
|
or retry yet. Proposed to Sage/Mos: replace only the new text with `void 0;`,
|
||||||
|
then independent review and a new CLEAR for KS44+18 on unchanged candidate.
|
||||||
|
|
||||||
|
Current tally57assertionkills (7+49+1),1SR08timeoutkill,1invalid(KS44),18unrun.
|
||||||
|
Cwd sweep[] and all88candidate hashes restored04:21:30Z; slot returned and
|
||||||
|
Sage/Mos notified. No in-review move. Wait for ruling before any edit or run.
|
||||||
|
|
||||||
|
|
||||||
|
### KS44 syntax metadata correction: mos-1264 (2026-10-22 04:22:16Z)
|
||||||
|
|
||||||
|
Only KS44.new changes from `// no body bound` to `void 0;`. Old site,
|
||||||
|
test and pattern stay unchanged. The invalid import result remains in
|
||||||
|
retarget-mos1261/resume-mutant-results.json and resume-mutant-logs/KS44.tap.
|
||||||
|
TableSHA256:85d9a7b13ad510e840f258d892afbfce393cefbc4006e1f808605b83adc84570. Diff:mutant-table-mos1264.diff;
|
||||||
|
baseline:all-mutants.before-mos1264.json. Generator mirrors the one field.
|
||||||
|
|
||||||
|
Authorized syntax-class preflight applied KS44–KS62 individually in scratch,
|
||||||
|
ran node --check on each JavaScript file, and restored before advancing.
|
||||||
|
All15JS checks passed; no other replacement fix was needed. KS59–KS62
|
||||||
|
change only HTML/CSS and are explicitly asset-only/not-applicable for the
|
||||||
|
Node parser; Mos/Sage informed, no false JS syntax pass claimed. All19
|
||||||
|
mutations restored and88candidate hashes match. Per-site logs/results and
|
||||||
|
restoration record:syntax-mos1264/. No behavioral test or assertion-mutant
|
||||||
|
run occurred. Dewey must review table diff and syntax results before next
|
||||||
|
Sage CLEAR for KS44+18. Carry57assertionkills+1timeoutkill only on unchanged
|
||||||
|
0fa7bf421. No product or test change.
|
||||||
|
|
||||||
|
|
||||||
|
### dewey-0795 approval: syntaxfixed-mos1264 staged (unrun)
|
||||||
|
|
||||||
|
Dewey APPROVES table85d9a7b1 and syntax preflight, static only. Conditions
|
||||||
|
met:syntaxfixed-mos1264/ holds byte copies of runnerfe0d360f, table85d9a7b1,
|
||||||
|
commit.txt,candidate.txt,candidate-manifest.sha256. Full SHA256 and byte-cmp
|
||||||
|
list is syntaxfixed-mos1264/byte-copy-check.txt. Invocation after Sage CLEAR:
|
||||||
|
python3 syntaxfixed-mos1264/run-mutants.py --resume-from KS44 (19sites).
|
||||||
|
All previous invalid/survivor evidence stays untouched in its original dirs.
|
||||||
|
No behavioral run occurred during preparation.
|
||||||
|
|
||||||
|
|
||||||
|
### Final19 resume stopped at KS54: sage-2444 (2026-10-22)
|
||||||
|
|
||||||
|
Run began04:27:45Z; KS44–KS53 are10named assertion kills. KS54 then timed out
|
||||||
|
at90.073seconds. Its log contains the expected dependency-list assertion:
|
||||||
|
"the runtime refuses an invalid adapter and closes a valid one" at
|
||||||
|
bus/tests/tasks.test.mjs:263. The mutation drops processing from runtime.mjs
|
||||||
|
tasks factory deps. The test opens runtime then asserts before close at:265;
|
||||||
|
a failing assertion skips the close and leaves Node alive. No same-file
|
||||||
|
control ran in this invocation, so this is timeout-without-control, not a
|
||||||
|
kill. No assertion or timeout kill is claimed for KS54.
|
||||||
|
|
||||||
|
Raw resume result's generic cause sentence says a control passed, which is
|
||||||
|
incorrect: its control:null and timeout-without-control status establish the
|
||||||
|
opposite. The raw evidence remains unchanged; the concrete cause and
|
||||||
|
correction are in syntaxfixed-mos1264/KS54-timeout-report.json. This explicit
|
||||||
|
report replaces the placeholder as explanation without altering the log.
|
||||||
|
|
||||||
|
Current tally67assertionkills(7+49+1+10),1adjudicatedSR08timeoutkill,
|
||||||
|
1unqualifiedKS54timeout,8unrun. All88candidate blobs restored; cwd sweep[]
|
||||||
|
and slot returned04:30:06Z to Sage, Mos directly copied as instructed. No
|
||||||
|
retry, product/test edit or in-review move. Sage's disclosed syntaxcheck
|
||||||
|
caused no busy refusal or foreign-node report. Await owner ruling/CLEAR.
|
||||||
|
|
||||||
|
|
||||||
|
### Final controls/mutants GREEN: mos-1267, sage-2448, dewey-0798
|
||||||
|
|
||||||
|
On unchanged0fa7bf421, whole-file tasks control9/9 passed in0.815s; KS54
|
||||||
|
rerun killed-by-timeout with the exact dependency not-ok at tasks.test:263.
|
||||||
|
KS55–KS62 are8assertionkills. Final run04:35:32Z–04:37:17Z, cwd sweep[] and
|
||||||
|
88hashrestore04:37:48Z; slot returned to Sage and direct handoff to Dewey/Mos.
|
||||||
|
Final77-site tally:75assertionkills(7+49+1+10+8),2separate timeoutkills
|
||||||
|
(SR08adjudication,KS54control+rerun). final-mutant-results.json consolidates
|
||||||
|
latest accepted evidence by id; no prior record or log overwritten.
|
||||||
|
GATE-RESULTS.md is the final per-suite/mutant table; prior narrative saved
|
||||||
|
as GATE-RESULTS-before-final.md.
|
||||||
|
|
||||||
|
KS54 raw placeholder result saved as resume-mutant-results.raw.json before
|
||||||
|
filling concrete cause in its review result. Same-invocation control id
|
||||||
|
1792643732624962173; prior syntaxfixed eleven-row result file remains exact
|
||||||
|
0ede036954ff77c21f29e1a744b21d1d9b18eb75736f78ecd1cf4ae559358911.
|
||||||
|
Dewey independently read logs/control/restoration and confirmed tally in
|
||||||
|
dewey-0798, explicitly not yet a manifest verdict. N6test cleanup stays
|
||||||
|
deferred under mos-1267/Vikunja502; no candidate byte changes permitted.
|
||||||
|
|
||||||
|
|
||||||
|
### Claimant review handoff
|
||||||
|
|
||||||
|
Queue move rocko-191-review-r1 entered in-review at revision3114, round1
|
||||||
|
on#1689, manifest0bcbf337. Revision3115 records the expected missing-token
|
||||||
|
request failure; command exit1. Receipt:in-review-receipt.txt. Sage posts
|
||||||
|
the request as jarvis; Dewey owns the manifest verdict. Candidate source
|
||||||
|
remains published0fa7bf421 with88product paths, base86f95bb27. No live
|
||||||
|
action, push, source change or further gate authorized by this handoff.
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
// Sage, 2026-10-22: row 191 (kill switch) landed, comment on P19 414 (Q174 landing comment). Sage's own key (bot user 13); the sync key reads back. Comments only: no task edits.
|
||||||
|
// Checks each task's title before posting. Prints no secret.
|
||||||
|
// Usage: node comment-r191-landed.mjs https://tasks.woltje.com SAGE_TOKEN_FILE SYNC_TOKEN_FILE OUT_JSON
|
||||||
|
import { readFileSync, writeFileSync, existsSync } from "node:fs";
|
||||||
|
const [ORIGIN, KEY, SYNC, OUT] = process.argv.slice(2);
|
||||||
|
if (!/^https:\/\/tasks\.woltje\.com$/.test(ORIGIN)) throw new Error("tasks.woltje.com only");
|
||||||
|
if (!OUT || existsSync(OUT)) throw new Error("OUT_JSON missing or exists; refusing");
|
||||||
|
const PROJECT = 19;
|
||||||
|
const PSIG = "Posted by Sage (T3 1ef1e4f8) with Sage's own key (bot user 13).";
|
||||||
|
const esc = (s) => s.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
||||||
|
const ps = (xs) => xs.map((x) => `<p>${esc(x)}</p>`).join("") + `<p>${esc(PSIG)}</p>`;
|
||||||
|
const POSTS = [
|
||||||
|
{ id: 414, title: /^MVP platform: the Given list for Cases 1 and 2/, body: [
|
||||||
|
"Row 191 (kill switch, stopRun) landed on refactor as 0fa7bf421 on 10-22 (recorded 04:49Z), a fast-forward on 86f95bb27. An owner can halt an instance: agent verbs that start or continue work refuse with a fixed code, reads and the human's own verbs (including the clear) still work, and running runs are stopped. Gitea #1689 is closed (comment 30360). Queue row 191 is done (rev 3120).",
|
||||||
|
"Rocko built it, and Dewey approved the manifest (88 paths, digest 0bcbf337, comment 30359, rev 3118). Gate on 0fa7bf421: 35 touched files whole, every package suite, the ten scripts/test-*.sh, and 77/77 mutants checked. Sage ran the runs suite 43/0/0 for Dewey's N7. Follow-ups are on Vikunja 502 (real clock, exact HTTP refusals, runtime close in finally, runner cause text).",
|
||||||
|
"It isn't live yet. Live is still 86f95bb27. The switch reaches dragon-lin at the next re-pin, through the window plan and Mos.",
|
||||||
|
] },
|
||||||
|
];
|
||||||
|
const key = readFileSync(KEY, "utf8").trim(), sync = readFileSync(SYNC, "utf8").trim();
|
||||||
|
async function api(method, path, body, auth) {
|
||||||
|
const r = await fetch(ORIGIN + path, { method, headers: { Authorization: `Bearer ${auth}`, "Content-Type": "application/json" }, body: body === undefined ? undefined : JSON.stringify(body), redirect: "error" });
|
||||||
|
const t = await r.text(); let json = null; try { json = JSON.parse(t); } catch {}
|
||||||
|
return { status: r.status, json };
|
||||||
|
}
|
||||||
|
const list = (j) => j?.items ?? (Array.isArray(j) ? j : []);
|
||||||
|
const rec = { at: new Date().toISOString(), comments: [], problems: [] };
|
||||||
|
const save = () => {
|
||||||
|
const out = JSON.stringify(rec, null, 1) + "\n";
|
||||||
|
if (out.includes(key) || out.includes(sync)) throw new Error("secret in the record; not written");
|
||||||
|
writeFileSync(OUT, out);
|
||||||
|
};
|
||||||
|
for (const P of POSTS) {
|
||||||
|
const t = await api("GET", `/api/v2/tasks/${P.id}`, undefined, sync);
|
||||||
|
if (t.status !== 200 || t.json?.project_id !== PROJECT || !P.title.test(t.json?.title ?? "")) throw new Error(`task ${P.id}: ${t.status}, title check failed; nothing posted`);
|
||||||
|
}
|
||||||
|
writeFileSync(OUT, "", { flag: "wx" });
|
||||||
|
for (const P of POSTS) {
|
||||||
|
const c = await api("PUT", `/api/v1/tasks/${P.id}/comments`, { comment: ps(P.body) }, key);
|
||||||
|
const e = { task: P.id, status: c.status, id: c.json?.id ?? null };
|
||||||
|
rec.comments.push(e);
|
||||||
|
if (c.status >= 300 || !Number.isSafeInteger(c.json?.id)) { rec.problems.push(`comment ${P.id}: ${c.status} ${c.json?.message ?? ""}`); save(); continue; }
|
||||||
|
const back = await api("GET", `/api/v2/tasks/${P.id}/comments?per_page=50`, undefined, sync);
|
||||||
|
const found = list(back.json).find((x) => x.id === c.json.id);
|
||||||
|
Object.assign(e, { readBack: back.status, found: Boolean(found) });
|
||||||
|
if (back.status !== 200 || !found) rec.problems.push(`comment ${P.id} read-back: ${back.status}`);
|
||||||
|
save();
|
||||||
|
}
|
||||||
|
save();
|
||||||
|
process.stdout.write(JSON.stringify(rec, null, 1) + "\n");
|
||||||
|
if (rec.problems.length) process.exit(2);
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
// Sage, 2026-10-22: files the 10-27 owner thread-claim row (mos-1262) as a P19 task. No relation, labels, assignees,
|
||||||
|
// due dates or bucket moves. Sage's own key (bot user 13); the sync key reads back. Refuses if the title exists.
|
||||||
|
// Prints no secret.
|
||||||
|
// Usage: node file-thread-claims.mjs https://tasks.woltje.com SAGE_TOKEN_FILE SYNC_TOKEN_FILE OUT_JSON ROW ISSUE
|
||||||
|
import { readFileSync, writeFileSync, existsSync } from "node:fs";
|
||||||
|
const [ORIGIN, KEY, SYNC, OUT, ROW, ISSUE] = process.argv.slice(2);
|
||||||
|
if (!/^[0-9]+$/.test(ROW ?? "") || !/^[0-9]+$/.test(ISSUE ?? "")) throw new Error("ROW and ISSUE must be numbers");
|
||||||
|
if (!/^https:\/\/tasks\.woltje\.com$/.test(ORIGIN)) throw new Error("tasks.woltje.com only");
|
||||||
|
if (!OUT || existsSync(OUT)) throw new Error("OUT_JSON missing or exists; refusing");
|
||||||
|
const PROJECT = 19;
|
||||||
|
const SIG = "Created by Sage (T3 1ef1e4f8) with Sage's own key (bot user 13).";
|
||||||
|
const esc = (s) => s.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
||||||
|
const ps = (sig, xs) => xs.map((x) => `<p>${esc(x)}</p>`).join("") + `<p>${esc(sig)}</p>`;
|
||||||
|
const TASKS = [
|
||||||
|
{
|
||||||
|
title: `The owner sees a thread agent's claims: agents lists held thread claims (row ${ROW}, #${ISSUE}, 10-27)`,
|
||||||
|
description: ps(SIG, [
|
||||||
|
"Filed by Mos's ruling mos-1262 as a 10-27 row, not post-v1. Row 205's message filter found it (morgana-0072, Sage ruling sage-2430).",
|
||||||
|
"A thread run's role.claim writes thread_claims only (broker.mjs:2682), and the owner's agents verb reads role_claims only (:3309). So the owner can't see a thread agent's claim, which PRD :1083-1084 and the FED R6 user sentence promise. No user thread goes live before this row lands, the same bind as the 193b1a filter. Q176 Case 1 needs it.",
|
||||||
|
`Queue row ${ROW}, after row 205, owner Morgana, reviewer Duckworth, gate Sage. Brief: docs/plans/2026-10-22_owner-thread-claims.md. If it can't make 10-27, that's a scope question for Jason, and it goes to Mos first.`,
|
||||||
|
]),
|
||||||
|
},
|
||||||
|
];
|
||||||
|
const key = readFileSync(KEY, "utf8").trim(), sync = readFileSync(SYNC, "utf8").trim();
|
||||||
|
async function api(method, path, body, auth) {
|
||||||
|
const r = await fetch(ORIGIN + path, { method, headers: { Authorization: `Bearer ${auth}`, "Content-Type": "application/json" }, body: body === undefined ? undefined : JSON.stringify(body), redirect: "error" });
|
||||||
|
const t = await r.text(); let json = null; try { json = JSON.parse(t); } catch {}
|
||||||
|
return { status: r.status, json };
|
||||||
|
}
|
||||||
|
const list = (j) => j?.items ?? (Array.isArray(j) ? j : []);
|
||||||
|
async function existing() {
|
||||||
|
const out = [];
|
||||||
|
for (let page = 1; page < 20; page++) {
|
||||||
|
const r = await api("GET", `/api/v2/projects/${PROJECT}/tasks?per_page=50&page=${page}`, undefined, sync);
|
||||||
|
if (r.status !== 200) throw new Error(`list tasks: ${r.status}`);
|
||||||
|
out.push(...list(r.json));
|
||||||
|
if (list(r.json).length < 50) return out;
|
||||||
|
}
|
||||||
|
throw new Error("more than 19 pages");
|
||||||
|
}
|
||||||
|
const rec = { at: new Date().toISOString(), project: PROJECT, created: null, problems: [] };
|
||||||
|
const save = () => {
|
||||||
|
const out = JSON.stringify(rec, null, 1) + "\n";
|
||||||
|
if (out.includes(key) || out.includes(sync)) throw new Error("secret in the record; not written");
|
||||||
|
writeFileSync(OUT, out);
|
||||||
|
};
|
||||||
|
const have = await existing();
|
||||||
|
for (const T of TASKS) if (have.some((t) => t.title === T.title)) throw new Error("title exists; refusing");
|
||||||
|
writeFileSync(OUT, "", { flag: "wx" });
|
||||||
|
rec.created = [];
|
||||||
|
for (const T of TASKS) {
|
||||||
|
const r = await api("PUT", `/api/v1/projects/${PROJECT}/tasks`, { title: T.title, description: T.description }, key);
|
||||||
|
const c = { status: r.status, id: r.json?.id ?? null };
|
||||||
|
rec.created.push(c);
|
||||||
|
if (r.status >= 300 || !Number.isSafeInteger(r.json?.id)) { rec.problems.push(`create: ${r.status} ${r.json?.message ?? ""}`); continue; }
|
||||||
|
const back = await api("GET", `/api/v2/tasks/${r.json.id}`, undefined, sync);
|
||||||
|
Object.assign(c, { readBack: back.status, done: back.json?.done });
|
||||||
|
if (back.status !== 200 || back.json?.title !== T.title || back.json?.done) rec.problems.push(`read-back differs for ${r.json.id}`);
|
||||||
|
}
|
||||||
|
save();
|
||||||
|
console.log(JSON.stringify(rec));
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
// Sage, 2026-10-22: re-pin window 7247d80c7 to 86f95bb27 done (mos-1253, mos-1263). Comments on P19 386 and 435 (Mos posted 412 himself, mos-1266),
|
||||||
|
// text from Darkwing (darkwing-0160). No task is closed. Sage's own key (bot user 13); the sync key reads back.
|
||||||
|
// Checks each task's title before anything is posted. Prints no secret.
|
||||||
|
// Usage: node post-w12-86f95bb27.mjs https://tasks.woltje.com SAGE_TOKEN_FILE SYNC_TOKEN_FILE OUT_JSON
|
||||||
|
import { readFileSync, writeFileSync, existsSync } from "node:fs";
|
||||||
|
const [ORIGIN, KEY, SYNC, OUT] = process.argv.slice(2);
|
||||||
|
if (!/^https:\/\/tasks\.woltje\.com$/.test(ORIGIN)) throw new Error("tasks.woltje.com only");
|
||||||
|
if (!OUT || existsSync(OUT)) throw new Error("OUT_JSON missing or exists; refusing");
|
||||||
|
const PROJECT = 19;
|
||||||
|
const PSIG = "Posted by Sage (T3 1ef1e4f8) with Sage's own key (bot user 13). Text from Darkwing, the window operator.";
|
||||||
|
const esc = (s) => s.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
||||||
|
const ps = (xs) => xs.map((x) => `<p>${esc(x)}</p>`).join("") + `<p>${esc(PSIG)}</p>`;
|
||||||
|
const WIN = "agents/darkwing/work/window-repin-86f95bb27/";
|
||||||
|
const POSTS = [
|
||||||
|
{ id: 386, title: /^Q173 test system/, close: false, body: [
|
||||||
|
"Re-pin 7247d80c7 to 86f95bb27 done on dragon-lin, 2026-10-22, with Darkwing operating. Activation 20261022T040256Z-86f95bb27f6c, pointer at 04:03:00Z UTC, schema 3j with no migration. P1 to P6, B0, W0 to W5 and W9 to W11 passed. Nothing was rolled back, and there's no counted failure (mos-1260). W5 backup SHA256SUMS 45b18429.",
|
||||||
|
"S1 to S2 (03:55:33Z to 04:24:42Z UTC): schema 3j at both, events 1798 to 1817 with no grant.* kind, and hosts and host_grants at 0 rows.",
|
||||||
|
"W12 (w12c.sh, mos-1263) W12_PASS at 04:26:43Z. Backup w12-20261022T042555Z first (SHA256SUMS 210ce775). The chief relayed the pm read and launched pm r2cf8536da2c3, which answered PRD 1.14 with 85 ids. Row 66 on chief rd0b8fdb4d62d: turn 1 drew 4 banned words and the [unslop: note, turn 2 got the notice, and counts went from 1/0/0 to checked 6, flagged 1, notices 1, broken null.",
|
||||||
|
`STATE: ${WIN}STATE.md`,
|
||||||
|
] },
|
||||||
|
{ id: 435, title: /^Console inbox: Approve\/Deny/, close: false, body: [
|
||||||
|
"Re-pin to 86f95bb27 (activation 20261022T040256Z-86f95bb27f6c). Row 202's access verbs are live, and nobody created a grant. The bus journal since W5 has no grant.* event, and hosts and host_grants hold 0 rows.",
|
||||||
|
`STATE: ${WIN}STATE.md`,
|
||||||
|
] },
|
||||||
|
];
|
||||||
|
const key = readFileSync(KEY, "utf8").trim(), sync = readFileSync(SYNC, "utf8").trim();
|
||||||
|
async function api(method, path, body, auth) {
|
||||||
|
const r = await fetch(ORIGIN + path, { method, headers: { Authorization: `Bearer ${auth}`, "Content-Type": "application/json" }, body: body === undefined ? undefined : JSON.stringify(body), redirect: "error" });
|
||||||
|
const t = await r.text(); let json = null; try { json = JSON.parse(t); } catch {}
|
||||||
|
return { status: r.status, json };
|
||||||
|
}
|
||||||
|
const list = (j) => j?.items ?? (Array.isArray(j) ? j : []);
|
||||||
|
const rec = { at: new Date().toISOString(), comments: [], closes: [], problems: [] };
|
||||||
|
const save = () => {
|
||||||
|
const out = JSON.stringify(rec, null, 1) + "\n";
|
||||||
|
if (out.includes(key) || out.includes(sync)) throw new Error("secret in the record; not written");
|
||||||
|
writeFileSync(OUT, out);
|
||||||
|
};
|
||||||
|
const before = {};
|
||||||
|
for (const P of POSTS) {
|
||||||
|
const t = await api("GET", `/api/v2/tasks/${P.id}`, undefined, sync);
|
||||||
|
if (t.status !== 200 || t.json?.project_id !== PROJECT || !P.title.test(t.json?.title ?? "")) throw new Error(`task ${P.id}: ${t.status}, title check failed; nothing posted`);
|
||||||
|
if (P.close && t.json.done) throw new Error(`task ${P.id} is already done; nothing posted`);
|
||||||
|
before[P.id] = { title: t.json.title, description: t.json.description };
|
||||||
|
}
|
||||||
|
writeFileSync(OUT, "", { flag: "wx" });
|
||||||
|
for (const P of POSTS) {
|
||||||
|
const c = await api("PUT", `/api/v1/tasks/${P.id}/comments`, { comment: ps(P.body) }, key);
|
||||||
|
const e = { task: P.id, status: c.status, id: c.json?.id ?? null };
|
||||||
|
rec.comments.push(e);
|
||||||
|
if (c.status >= 300 || !Number.isSafeInteger(c.json?.id)) { rec.problems.push(`comment ${P.id}: ${c.status} ${c.json?.message ?? ""}`); save(); continue; }
|
||||||
|
const back = await api("GET", `/api/v2/tasks/${P.id}/comments?per_page=50`, undefined, sync);
|
||||||
|
const found = list(back.json).find((x) => x.id === c.json.id);
|
||||||
|
Object.assign(e, { readBack: back.status, found: Boolean(found) });
|
||||||
|
if (back.status !== 200 || !found) { rec.problems.push(`comment ${P.id} read-back: ${back.status}`); save(); continue; }
|
||||||
|
if (P.close) {
|
||||||
|
const full = await api("GET", `/api/v1/tasks/${P.id}`, undefined, key);
|
||||||
|
if (full.status !== 200 || full.json?.id !== P.id) { rec.problems.push(`v1 get ${P.id}: ${full.status}`); save(); continue; }
|
||||||
|
const u = await api("POST", `/api/v1/tasks/${P.id}`, { ...full.json, done: true }, key);
|
||||||
|
const b2 = await api("GET", `/api/v2/tasks/${P.id}`, undefined, sync);
|
||||||
|
const x = { task: P.id, status: u.status, readBack: b2.status, done: b2.json?.done, titleSame: b2.json?.title === before[P.id].title, descriptionSame: b2.json?.description === before[P.id].description, inverse: `mark undone: POST /api/v1/tasks/${P.id} done false (sage key)` };
|
||||||
|
rec.closes.push(x);
|
||||||
|
if (u.status >= 300 || b2.status !== 200 || b2.json?.done !== true || !x.titleSame || !x.descriptionSame) rec.problems.push(`close ${P.id}: update or read-back differs`);
|
||||||
|
}
|
||||||
|
save();
|
||||||
|
}
|
||||||
|
save();
|
||||||
|
process.stdout.write(JSON.stringify(rec, null, 1) + "\n");
|
||||||
|
if (rec.problems.length) process.exit(2);
|
||||||
@@ -0,0 +1,118 @@
|
|||||||
|
# Re-pin 7247d80c7 to 86f95bb27 (rows 251, 244, 254, 202, 273, PRD 1.11-1.14), no migration
|
||||||
|
|
||||||
|
Sage, 2026-10-22, for mos-1253 under DECISIONS Q173 and mos-1246. The step layout is
|
||||||
|
`repin-1024-draft1.md`, with the copy changed and `--migrate` dropped. Where a step is unchanged I name it
|
||||||
|
and say only what differs. Mos checks this file's sha256 before P0, and any change after that means a new
|
||||||
|
check (mos-0849/0850). This file stays uncommitted until row 191's window ends, because refactor doesn't
|
||||||
|
move while a rebased candidate's gate runs.
|
||||||
|
|
||||||
|
## Who, and what nobody does
|
||||||
|
|
||||||
|
- Darkwing operates if free. Otherwise I operate. Mos verifies each step's output before the next one,
|
||||||
|
runs P3, and gives the W5 go. Row 191's full window keeps first claim on the slot (mos-1225). Steps that
|
||||||
|
start no test and no stub run alongside it: P1, W0, P4, P5, P6, B0, W1-W4. P2 waits for a gap or CLEAR,
|
||||||
|
because it starts node stubs that a busy check counts.
|
||||||
|
- Jason has no step. Nothing is pruned. Nobody acts as Jason: no `--by jason`, no human shell or tmux
|
||||||
|
pane, every bus read and write carries `--tester`, and `bus.tester` stays as it is. If it isn't `true`,
|
||||||
|
stop at P1.
|
||||||
|
- No pi (#383). No Save in the human Console, no `mosaic name`.
|
||||||
|
- Outside reach doesn't change. No `--send`, no `--sso`, no proof pair. Both go on together in the phase 2
|
||||||
|
window, which still waits for Jason's start (Vikunja 412). The tunnel forwards 7332 only.
|
||||||
|
- dragon-lin only. .53 and .54 take nothing (mos-1198, mos-1167).
|
||||||
|
|
||||||
|
## Names
|
||||||
|
|
||||||
|
- OLD, live: `7247d80c7af7ffa70fc61557406bf491cdf3bfc7`, schema 3j, pointer `pm: true`, activation
|
||||||
|
`20261021T215926Z-7247d80c7af7`. Console flags at W5 last time: `--port 7332 --public-host
|
||||||
|
mosaic.woltje.com --auth-header X-authentik-username --allow-user jason.woltje --tester-socket`. P1
|
||||||
|
re-reads them from `status`. I don't copy them from this file.
|
||||||
|
- NEW: `86f95bb27f6cb237bf9fa9ba53320bace6c4de0b`, 59 commits past OLD (`git rev-list --count`). The last
|
||||||
|
code landing in it is 0bbf0f6d1 (row 273). The two commits after that are docs and queue files.
|
||||||
|
- `WIN=agents/darkwing/work/window-repin-86f95bb27/` if Darkwing operates, else
|
||||||
|
`agents/sage/work/window-repin-86f95bb27/`. The scripts adapt last window's, in
|
||||||
|
`agents/sage/work/window-repin-7247d80c7/`, with NEW and OLD changed and every `--migrate` removed.
|
||||||
|
|
||||||
|
## What NEW carries over OLD
|
||||||
|
|
||||||
|
Non-test paths changed from OLD to NEW (`git diff --name-only`, tests and READMEs left out):
|
||||||
|
|
||||||
|
| Row | Commit | Paths | Live effect to check |
|
||||||
|
|---|---|---|---|
|
||||||
|
| 251, 244 | d37210288, e69260a3c | scripts/test-release.sh, test-task.sh, scripts/testing/* | Gate tooling. Not in the live path. |
|
||||||
|
| PRD 1.11-1.14 | ea0b2a16d..db1e7732a | packages/tasks/requirements.json | W9: the pm's requirements read gives 1.14 with 85 ids. |
|
||||||
|
| 254 | 331597709 | packages/bus/src/human-cli.mjs (library.sync client timeout 130 s), packages/webui/src/bus.mjs (six `library-*` STATUS codes) | No library entry is live, so neither path runs. |
|
||||||
|
| 202 | ddfb29af7 | packages/cli/src/access.mjs, cli.mjs, scripts/mosaic | `mosaic access list/grant/revoke`. Nobody runs them in this window (Q188, mos-1141). |
|
||||||
|
| 273 | 7991662dc..0bbf0f6d1 | scripts/stack-release.sh | `--send` and `--no-sso`. With neither given, the plan keeps the pointer's Console flags. W3 checks that. |
|
||||||
|
|
||||||
|
Nothing else in packages/bus/src or packages/webui/src changed (`git diff --quiet` with those two files left
|
||||||
|
out). The four service scripts and scripts/stack-copy.sh are unchanged from OLD (`git diff --quiet 7247d80c7
|
||||||
|
86f95bb27 --` on them). package-lock.json is unchanged.
|
||||||
|
|
||||||
|
## Schema and backups
|
||||||
|
|
||||||
|
- `SCHEMA_VERSION` is 3j at both commits (`packages/bus/src/store.mjs:17`). No migration step and no
|
||||||
|
schema.sql change in the range. W3's plan must show no migration line. If it asks for `--migrate`, stop.
|
||||||
|
- B0 is the backup taken first. It's an online copy of the live store through sqlite's backup API, read only
|
||||||
|
on the source, as in last window's W12. It is laid out the way `rehearse --backup PATH` reads it
|
||||||
|
(`stack-release.sh:2232-2235`): `$DATA/backups/b0-<STAMP>/bus/bus.sqlite`, `SHA256SUMS` written from
|
||||||
|
inside `bus/`, `SCHEMA` reading 3j, and `CHECK` holding the integrity_check result, the event count and
|
||||||
|
maxSeq. The operator sends Mos the path and the SHA256SUMS sha256 before P3.
|
||||||
|
- W5 takes the stopped-store backup every activate takes, plus the rollback set. That one is the rollback
|
||||||
|
point.
|
||||||
|
- The grant look-alike count from draft 1 is dropped. It guarded the 3i-3j migration, and there is none.
|
||||||
|
- Rollback is a pointer flip. OLD and NEW share 3j, so `rollback --plan` then the real run, with no
|
||||||
|
`--restore`. Any restore goes to Mos and ends the window (mos-1226, mos-1253 item 5).
|
||||||
|
|
||||||
|
## Before the window (nothing stopped)
|
||||||
|
|
||||||
|
| # | Who | Step |
|
||||||
|
|---|-----|------|
|
||||||
|
| P0 | Mos | The sha check of NEW and of this file. |
|
||||||
|
| P1 | operator | `status`: pointer, activation, 3j, Console flags, unit flags match. Business file sha256 and `business-check.mjs` LOAD_OK for OLD now and for NEW after W0. `ls -ld $DATA/console` is 0700 and `tester.sock` is 0600 (row 196 made them at the last W5). `bus.tester` is `true`. |
|
||||||
|
| W0 | operator | `scripts/stack-copy.sh copy $NEW`. The copy has `tools/unslop-hook` and `packages/library/bin/askpass` with NEW's mode. |
|
||||||
|
| P2 | operator, in a gap | The two stub runs from last window's p2.sh against NEW's copy, then render both units from REPO's service scripts and diff them against the live units. The only difference allowed is the copy path. |
|
||||||
|
| B0 | operator | The backup above. Path and SHA256SUMS sha256 to Mos. |
|
||||||
|
| P3 | Mos | `stack-release.sh rehearse $NEW mosaic-stack --backup <B0 path> --port <scratch>`, no `--migrate`. It must show no migration, the interpreter preflight passing, one receipt line, no `library:` line, and one pm reply. Mos also reads healthz, `/api/config` and the two tester-http reads on NEW's Console with the pointer's flags, as in mos-1107. |
|
||||||
|
| P4 | operator | The tunnel read. |
|
||||||
|
| P5 | operator | The four service scripts held at NEW, and empty porcelain on them. |
|
||||||
|
| P6 | operator | The 7332 matrix (a)-(g) on OLD as `$WIN/matrix-old.txt`, plus the two tester-http reads, for W10. |
|
||||||
|
|
||||||
|
## The window
|
||||||
|
|
||||||
|
| # | Who | Step |
|
||||||
|
|---|-----|------|
|
||||||
|
| W0b | operator | The business file copy. |
|
||||||
|
| W1 | operator | Idle check, start stamp from `date -u`, S1 with `$SNAP --held`. Open pm tasks: the pm finishes or parks them, or the operator records which piece crosses the window. |
|
||||||
|
| W2 | operator | `status`: pointer on OLD, `pm: true`, 3j, unit flags match. |
|
||||||
|
| W3 | operator | `stack-release.sh activate $NEW mosaic-stack --pm --tester-socket --plan`. It must show OLD to NEW, no migration, the backup line, and a Console line with OLD's flags exactly: `--tester-socket`, no `--send`, no `--sso`, no proof pair, no drop line. Any other difference stops here. |
|
||||||
|
| W4 | operator | The unit reads, as last window. W3 and W4 go to Mos for the W5 go. |
|
||||||
|
| W5 | operator, on Mos's go | The same command without `--plan`. Exit 0, `result ok`, every gate check passing, `pm_launched` included. Record the activation id, backup path, STAMP and the backup SHA256SUMS sha256. Then `status`. |
|
||||||
|
| W9 | operator, after Mos verifies W5 | Last window's W9 list: no `Sign-in:` line in the webui journal since the W5 stamp (with `UTC`), `/proc/<Console pid>/cwd` names NEW's copy, `tester.sock` 0600 in a 0700 `console/`, one new `peercred-starts.jsonl` line, no `library:` line in the bus journal. The pm's requirements read gives 1.14 with 85 ids. If the pm isn't relaunched by the restart (mos-1230), the read moves to W12, as last time. |
|
||||||
|
| W10 | operator | The matrix again as `$WIN/matrix-new.txt`, identical to `matrix-old.txt` apart from named lines. The two tester-http reads match P6's. No listener on 7333 (`ss -ltn`). P4 again. A Console POST on the main port with no signed-in session is refused (the mos-1195 baseline). |
|
||||||
|
| W11 | operator | STATE report in `$WIN/STATE.md`, posted on P19 386, 412 and 435, and on the Gitea issues for 202 (#1700), 254 (#1759) and 273 (#1778). |
|
||||||
|
| W12 | operator, after W11 | Row 66's live check as last time: backup first, one Claude Code managed session with a known tell, the RESULT note, the next-turn notice and the `unslop.jsonl` counts. Pi isn't run (#383). |
|
||||||
|
|
||||||
|
After W12 I write draft 3 of the phase 2 plan naming 86f95bb27. That window still waits for Jason.
|
||||||
|
|
||||||
|
## Steps skipped, and why
|
||||||
|
|
||||||
|
Mos allowed skipping a step that only repeats a test row 273's or row 202's gate already ran on the same
|
||||||
|
code. The blob ids at the gated commit and at NEW are equal for every one of those files (`git rev-parse`):
|
||||||
|
scripts/stack-release.sh `7c7676c71` at 0bbf0f6d1 and NEW, and access.mjs `a0a7c9364`, cli.mjs `b14b8fd79`,
|
||||||
|
scripts/mosaic `91c79ab4b` and human-cli.mjs `27b67fbf7` at ddfb29af7 and NEW.
|
||||||
|
|
||||||
|
- No separate run of the `--send`/`--no-sso` walk or the rollback flag carry. Darkwing's gate on 0bbf0f6d1
|
||||||
|
ran stack-release.test.mjs 218/218 (T53, T57, T58 c0/c1) and test-release.sh rc 0. W3's live plan line is
|
||||||
|
the only check left.
|
||||||
|
- No live `mosaic access` run. Row 202's gate ran access.test.mjs on ddfb29af7. A live grant would also
|
||||||
|
break Q188.
|
||||||
|
- The grant look-alike count, for the reason under Schema. It's a scope drop, not a gate repeat.
|
||||||
|
|
||||||
|
Nothing else is skipped. P2 and P3 aren't gate repeats: they check NEW's copy as built on dragon-lin.
|
||||||
|
|
||||||
|
## Stop conditions and rollback
|
||||||
|
|
||||||
|
As in draft 1. The first failure stops the step and goes to Mos. A second failure, or any restore, ends
|
||||||
|
the window (mos-0823, mos-1253 item 5). Before W5 there's nothing to undo. After W5, rollback is
|
||||||
|
`rollback --plan` then the real run, which flips the pointer to OLD with the same Console flags. Keep every
|
||||||
|
copy. Prune nothing.
|
||||||
@@ -1455,4 +1455,42 @@ are never rewritten or removed; corrections are new entries.
|
|||||||
2026-10-21T22:30:20Z | Huey (gpt-6.1-sol) | T1 item 7 r3, scrooge-0007 R1, Vikunja 463 | isolated session-workspaces root and nesting mutant recorded; R1-only confirmation requested, other r2 findings closed; doc-only checks
|
2026-10-21T22:30:20Z | Huey (gpt-6.1-sol) | T1 item 7 r3, scrooge-0007 R1, Vikunja 463 | isolated session-workspaces root and nesting mutant recorded; R1-only confirmation requested, other r2 findings closed; doc-only checks
|
||||||
2026-10-21 | Ludwig | PRD 1.11-1.14 drafts (Vikunja 459, 462, 463, 464) | approved by Della, handed to Sage
|
2026-10-21 | Ludwig | PRD 1.11-1.14 drafts (Vikunja 459, 462, 463, 464) | approved by Della, handed to Sage
|
||||||
2026-10-21T22:51:07Z | Sage (Opus 5.5) | PRD 1.13 and 1.14 landing with Gosalyn's C2-01c brief and Case 2 design (51fdfb7e2), rows 264-268 filed (#1769-#1773), Case 2 re-pin to a6ac627c8, Vikunja 463 closed | pushed 6ba8a582e..db1e7732a; requirements tests 3/3 and 3/3 and verbs 31/31 on 5f73b388c and db1e7732a
|
2026-10-21T22:51:07Z | Sage (Opus 5.5) | PRD 1.13 and 1.14 landing with Gosalyn's C2-01c brief and Case 2 design (51fdfb7e2), rows 264-268 filed (#1769-#1773), Case 2 re-pin to a6ac627c8, Vikunja 463 closed | pushed 6ba8a582e..db1e7732a; requirements tests 3/3 and 3/3 and verbs 31/31 on 5f73b388c and db1e7732a
|
||||||
|
2026-10-21 23:39:21 UTC | Rocko (d99326cc) | row 191 inspection handoff, sage-2242 | authorized local snapshot d52b4db1c on new rocko/row191-inspection-20261021; 78 blobs match a4f780c2; no push credential, no push or tests; Sage/Honker messaged directly; per-run API seam and mutants/gate pending.
|
||||||
|
2026-10-22 00:04:05 UTC | Rocko (d99326cc) | row 191 stopRun focused stage and S6 handoff | 9 files final 62/62; two bus failures diagnosed/fixed and logged, own failed fixture group cleaned; no runners remain, slot returned. Export in f7bf7dfec, rebased on new branch to 7aa18b0f6 (dcd8d4dda), 79 product blobs identical. Honker/Sage handed the sha directly; broader gate/mutants pending, no live action.
|
||||||
2026-10-22T00:18:12Z | Sage (Opus 5.5) | row 254 landing, rows 269-272 (264b-264e, #1774-#1777), 268 r2 request, row 191 publish and gate slot | 331597709 and eb9672c91 landed, queue e3c0446f5 pushed; rocko/row191-stoprun-dcd8-20261022 7aa18b0f6 and 81889b58d published as jarvis; 191 full gate on Rocko's slot from 00:17Z
|
2026-10-22T00:18:12Z | Sage (Opus 5.5) | row 254 landing, rows 269-272 (264b-264e, #1774-#1777), 268 r2 request, row 191 publish and gate slot | 331597709 and eb9672c91 landed, queue e3c0446f5 pushed; rocko/row191-stoprun-dcd8-20261022 7aa18b0f6 and 81889b58d published as jarvis; 191 full gate on Rocko's slot from 00:17Z
|
||||||
|
2026-10-22 00:24:34 UTC | Rocko (Codex gpt-6.1-sol, d99326cc) | row 191 #1689 full gate on c78f48946 | stopped on second integration failure per sage-2275; singles 269/269, processing-control 61/61, bus 646/646; CLI interrupted with 26 observed failures; no further edits; cwd sweep empty and slot returned to Sage.
|
||||||
|
2026-10-22 00:48:20 UTC | Rocko (Codex gpt-6.1-sol, d99326cc) | row 191 #1689 eb3abba12 full gate | stopped at Discord 190/192; 32 singles 304/304, processing-control 61/61, bus 646/646, cli 761/761; two uninitialized Discord fixtures reported to Sage; no later run; cwd sweep empty, slot clear.
|
||||||
|
2026-10-22 00:58:27 UTC | Rocko (Codex gpt-6.1-sol, d99326cc) | row 191 #1689 sage-2294 fixture fix | e6800380d on eb3abba12, two test files/four additions, assertions preserved; 338-entry static all-package sweep recorded; no tests; sent Sage for publication and Honker for dependent gate.
|
||||||
|
2026-10-22T01:04:44Z | Dewey (Opus 5.5, 84fb346c) | FED R3 early look, e7d2dc3e6 (morgana-0065) | static only, no queue record; mutant rulings: M3x stays plus reply-chain under M3x, #threadFor user clause equivalent, 193b1a filter mutant n/a; N1 role key user to fix in R3 (:359 and instance-settings:90), Sage rules on widening; dewey-0777 to Morgana, dewey-0778 to Sage
|
||||||
|
2026-10-22T01:08:21Z | Dewey (Opus 5.5, 84fb346c) | FED R3 r2 62de33760 delta (morgana-0066) | static, no findings; N1 fixed at broker :361 and instance-settings :91 with tests; Sage rules instance-settings scope; dewey-0779 Morgana, dewey-0780 Sage
|
||||||
|
2026-10-22 01:30:04 UTC | Rocko (Codex gpt-6.1-sol, d99326cc) | row 191 #1689 e6800380d resume | binding15/15, recover5/5, Discord192/192; stopped WebUI314 passed/4 failed/1 esbuild skip; processing polling violates sign-out/manual redirect and bar changes layout; no fixes/retries, cwd sweep empty, slot returned.
|
||||||
|
2026-10-22 01:38:08 UTC | Rocko (Codex gpt-6.1-sol, d99326cc) | row 191 #1689 sage-2317 Console integration fix | 8e1f55c1d on e6800380d; shared sign-out/manual redirect/interval and desktop frame fixes, assertions retained, six browser cases, 73 mutant sites preflight; syntax only, no tests; sent Sage/Honker.
|
||||||
|
2026-10-22 02:06:38 UTC | Rocko (Codex gpt-6.1-sol, d99326cc) | row 191 #1689 rebase sage-2329 | eafcbd3e7 on ddfb29af7, new branch, dispatcher retains processing and access; CLI/readme auto-merges checked; 87-path fd0f2740 manifest and 73-site preflight; Sage2333 published, awaiting CLEAR; no tests.
|
||||||
|
2026-10-22 02:20:51 UTC | Rocko (Codex gpt-6.1-sol, d99326cc) | row 191 #1689 eafcbd3e7 full gate | stopped singles313/6: six new browser cases count app freshness timer as processing timer; diagnosis sent Sage, no fix/retry; no suites/shells/mutants; cwd sweep empty, slot clear.
|
||||||
|
2026-10-22 02:23:13 UTC | Rocko (Codex gpt-6.1-sol, d99326cc) | row 191 #1689 sage-2345 timer fixture | 4db8b5778 on eafcbd3e7, one line attributes timer to processing.js; all assertions retained, no product change or tests; sent Sage and Honker; awaiting publication/CLEAR.
|
||||||
|
2026-10-22 02:25:29 UTC | Rocko (Codex gpt-6.1-sol, d99326cc) | row 191 #1689 sage-2349 record commit | 0f8235277 on 4db8b5778 adds packet BUILD.md cause record; product manifest remains ffb46fbd/87 paths; no amend, product change or tests; Sage/Honker notified.
|
||||||
|
2026-10-22 02:48:36 UTC | Rocko (Codex gpt-6.1-sol, d99326cc) | row 191 #1689 0f8235277 full gate second red | singles330/330, processing61/61, bus646/646, cli783/783, discord192/192; WebUI323/1/1 host esbuild skip; shell geometry1062vs1000; stopped/no retry, no later suites/shells/mutants; cwd sweep empty, slot returned, Sage escalates Mos.
|
||||||
|
2026-10-22 02:57:36 UTC | Rocko (Codex gpt-6.1-sol, d99326cc) | row 191 #1689 mos-1248 desktop layout restart | FF 5cd32f4c1 on 0f8235277: desktop grid allocates processing bar, existing shell assertions kept, visibility/no-scroll assertions added; 74 static mutant sites; candidate 2f93ef19; sent Webby/Sage for static review; no runs, awaiting review and CLEAR.
|
||||||
|
2026-10-22T02:58:24Z | Dewey (Opus 5.5, 84fb346c) | row 236 (#1742) early static look at 8bf442be9 (megavolt-0112) | B1 step 7 revoke undone by step 8 write, B2 sweep fire retry skips D1 id check, N1-N4; dewey-0781 Megavolt, dewey-0782 Sage; no queue verdict
|
||||||
|
2026-10-22 03:01:02 UTC | Rocko (d99326cc) | row 191 Webby static review | B1 accepted: 5cd32f4c1 preserves the content floor; earlier root-cause claim withdrawn in BUILD.md; no runs; requesting fixture measurement slot and owner layout ruling.
|
||||||
|
2026-10-22T03:08:58Z | Dewey (Opus 5.5, 84fb346c) | row 236 (#1742) r2 77dd43c9e delta look (megavolt-0115) | B1 and B2 closed by reading; N5 (settle unknown/401 branches unguarded) not blocking; N1-N4 DEFERRED agreed with README lines; dewey-0783 Megavolt, dewey-0784 Sage; no queue verdict
|
||||||
|
2026-10-22T03:10:55Z | Dewey (Opus 5.5, 84fb346c) | row 236 (#1742) r3 7965efd0f delta look (megavolt-0119) | N5 closed by reading; r3 is the run candidate; dewey-0785 Megavolt, dewey-0786 Sage; no queue verdict
|
||||||
|
2026-10-22 03:11:09 UTC | Rocko (Codex gpt-6.1-sol, d99326cc) | row 191 static nav layout, mos-1249/1250 | FF da4334806 on 5cd32f4c1; controls first in nav, non-sticky per sage-2386/webby-0108; candidate-only placement assertion changed, landed shell assertions preserved; 77 mutants statically preflighted; manifest 245dceb1; Webby/Sage handoff sent, no runs, awaiting static look/publish/debug CLEAR.
|
||||||
|
2026-10-22T03:11:36Z | Dewey (Opus 5.5, 84fb346c) | row 236 (#1742) r4 1c0048911 static look (sage-2390) | README N3/N4 sentences match the rulings; N5 test split per branch, same asserts; r4 is the run candidate; dewey-0787 Sage, dewey-0788 Megavolt
|
||||||
|
2026-10-22 03:15:11 UTC | Rocko (d99326cc) | row 191 sage-2394 debug | da4334806 shell5/5 and processing-browser9/9, awk14/0/0; geometry heights reported with read-only distinction; cwd sweep[] and slot returned; full window awaits separate CLEAR.
|
||||||
|
2026-10-22T03:36:37Z | Filbert (Opus 5.5, sage-2398) | row 273 (#1778) static review, darkwing/row273 978143bf4 to cac7d0f67, carried to 0bbf0f6d1 | APPROVE c30308, queue rev 3111 (filbert-273-record-r1), digest e1031023 rebuilt and matched; B1/N1 fixed, T57 item 3 change approved, N1 TOOLS.md by Sage at landing. Posted before sage-2396 hold; my drift check missed row 202 scripts/mosaic (test-copied). Merge-scoped carry c30319 on 0bbf0f6d1: range-diff 6/6 =, patch-ids equal; rerun green per darkwing-0147 (not mine). Line left uncommitted: HEAD 378a76b85 behind origin 0bbf0f6d1.
|
||||||
|
2026-10-22T03:42:29Z | Darkwing (claude-opus-5-5) | row 273 (#1778) activate --send/--no-sso, sage-2301/mos-1246 F39 | LANDED 0bbf0f6d1 (docs 5365adaef, done rev 3113, #1778 closed c30324); 978143bf4 run red (stale T53 usage pin, fixed cac7d0f67), cac7d0f67 green on old base, rebased darkwing/row273-b2 (range-diff all =, digest e1031023) green 218/218, 25/25, 14/0, M1-M7 killed; in-review rev 3109/3110 c30307; TOOLS.md F39 lines match darkwing-0137
|
||||||
|
2026-10-22 04:02:12 UTC | Rocko (d99326cc) | row191 full window0fa7bf421 | touched35files336pass, packages2403pass/1esbuildskip, shells425selftests+156queue node pass; SR01–07killed, SR08timeout,69unrun; stopped/no retry;88blobs restored,cwd sweep[],owned network removed,slot returned Sage; await Mos ruling.
|
||||||
|
2026-10-22T04:11:48Z | Dewey (Opus 5.5, 84fb346c) | row 191 runner review (sage-2424, mos-1259 item 3): run-mutants.py fe0d360f static | APPROVE to Rocko dewey-0789 and Sage dewey-0790; N1-N5 non-blocking (placeholder timeout cause, 7+1+69 tally, indented not-ok match, SR08 time binding, resume-only invocation)
|
||||||
|
2026-10-22 04:14:56 UTC | Rocko (d99326cc) | row191 control/resume sage-2427 | control12/12;SR08separate timeoutkill;49resumed assertionkills thenKS43survived;total56assertionkills+1timeout,1survivor,19unrun;88blobs restored,cwd sweep[],slot returned,Sage/Mos informed;no retry/edit.
|
||||||
|
2026-10-22T04:20:27Z | Dewey (Opus 5.5, 84fb346c) | row 191 mos-1261 mutant table review: all-mutants.json 5dbc8308 KS43 pattern retarget + 19-site audit, static | APPROVE to Rocko dewey-0791 and Sage dewey-0792; C1 archive resume-mutant-results.json (f5725ef2) and KS43.tap (c778ee33) before a --resume-from KS43 run
|
||||||
|
2026-10-22 04:21:30 UTC | Rocko (d99326cc) | row191 KS43+19 retarget run | KS43assertionkill thenKS44invalid mutation syntax;57assertionkills+1timeout,1invalid,18unrun;stopped,no edit/retry;88hashes restored,cwd sweep[],slot returned,Sage/Mos notified.
|
||||||
|
2026-10-22T04:25:19Z | Dewey (Opus 5.5, 84fb346c) | row 191 mos-1264 KS44 table fix (85d9a7b1, // -> void 0) + 19-site syntax preflight, static; also C1 archive check (dewey-0793/0794) | APPROVE to Rocko dewey-0795 and Sage dewey-0796; run condition: new subdir with byte copies, --resume-from KS44 (19 sites); tally 57 kills + SR08
|
||||||
|
2026-10-22 04:30:06 UTC | Rocko (d99326cc) | row191 KS44+18 resume | 10assertionkills thenKS54timeout-without-control despite dependency assertion;total67assertionkills+1timeoutkill,1unqualifiedtimeout,8unrun;88hashes restored,cwd sweep[],slot returned,Sage/Mos notified,no retry/edit.
|
||||||
|
2026-10-22T04:38:59Z | Dewey (Opus 5.5, 84fb346c) | row 191 final mutant evidence check (control-ks54-mos1267, syntaxfixed-mos1264), static | tally 75 assertion + 2 timeout kills = 77 confirmed (dewey-0798 Rocko, dewey-0799 Sage); N6 tasks.test.mjs:262-266 runtime not closed on failure, Sage rules
|
||||||
|
2026-10-22 04:41:46 UTC | Rocko (Codex gpt-6.1-sol,d99326cc) | row191 #1689 builder complete/in-review | published0fa7bf421,manifest0bcbf337;35singles336pass,9packages2403pass/1knownskip,10shells425selftests+156queue nodepass;75assertionkills+2controlledtimeoutkills=77;88hashrestore,cwd sweep[],slotreturned;in-review rev3114,expected no-token failure3115(exit1);Sage/Dewey handoff,no live action.
|
||||||
|
2026-10-22T04:46:51Z | Dewey (Opus 5.5, 84fb346c) | row 191 manifest review round 1 (#1689, candidate 0bcbf337, source 0fa7bf421 on 86f95bb27) | APPROVE comment 30359, queue rev 3118; manifest, gate logs (2739/0/1 named), 77 mutants and 712-file packet checked; N6 carried to Vikunja 502; N7/N8 non-blocking; dewey-0800 Sage, dewey-0801 Rocko
|
||||||
|
2026-10-22T04:52:40Z | Dewey (Opus 5.5, 84fb346c) | row 236 static look at rebase 08840f3c1 on 0fa7bf421 (#1742) | clean, not a verdict: commit 1 only the three 191 union lines, 2-6 =, commit 7 grants.status read with a test; manifest 32 paths digest 1e40433b matches; dewey-0802 Megavolt, dewey-0803 Sage
|
||||||
|
2026-10-22 05:03:18 UTC | Rocko (Codex gpt-6.1-sol,d99326cc) | Vikunja502 processing test/runner hardening | brief+isolatedrocko-v502;expected wordingred→green,Node27/27,Python4/4,5/5assertionkills(includingSR08andKS54nohang),0skips/timeouts;sweep[],candidate5hashrestored,slotreturned05:01:29Z;candidate968d6ee3,runnerc5bdc764;packetready,no commit/push/liveaction.
|
||||||
|
2026-10-22 05:07:34 UTC | Rocko (d99326cc) | Vikunja502 committed/review handoff sage-2482 | newbranchrocko/vikunja502-ce6a-20261022,source8e3c6a79b+packet9bf4683c6 on ce6a96ad6;5paths no base drift,range-diff=,patch-id37135ebe unchanged;manifest968d6ee3,packet93889519 verifies39/39;focused runs carry;Sage publish/Dewey review handoff sent,no push/liveaction.
|
||||||
|
2026-10-22 05:10:00 UTC | Sage (Opus 5.5, 1ef1e4f8) | landings 191, 205, 268 (MVP 10-27) | 191 LANDED 0fa7bf421 (P19 414 c595); 205 LANDED ce6a96ad6 (gate GATE_PASSED 04:56:43Z, Duckworth APPROVE rev 3125, done rev 3127, #1703 closed c30379); 268 r4 LANDED c27207f6e as a carry on 205 (rerun 14/83/209, Webby 0112/0113, done rev 3129, #1773 closed c30384); doc commit adds the #1782 brief, re-pin plan, phase 2 draft 3
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
# The owner sees a thread agent's claims (10-27 row)
|
||||||
|
|
||||||
|
Sage, 2026-10-22, for mos-1262. Row 205's message filter found the gap (morgana-0072, ruling sage-2430).
|
||||||
|
|
||||||
|
## Why
|
||||||
|
|
||||||
|
PRD :1083-1084 promises that what a thread's agent does with the owner's authority stays visible to the
|
||||||
|
owner: its decisions, inbox entries, claims, tasks and project files. FED R6 shows users the same list word
|
||||||
|
for word. Today a thread run's `role.claim` writes `thread_claims` only and returns at broker.mjs:2682. The
|
||||||
|
`agents` verb (:3309) reads `role_claims` only, and no other owner verb shows thread claims. So the owner
|
||||||
|
can't see a thread agent's claim.
|
||||||
|
|
||||||
|
Mos ruled this a 10-27 row, not post-v1 (mos-1262). No user thread goes live before it lands, the same
|
||||||
|
bind as the 193b1a filter. Q176 Case 1 ("Shared and private agent sessions available per user; RBAC")
|
||||||
|
needs it. If it can't make 10-27, that's a scope question for Jason, and it goes to Mos first.
|
||||||
|
|
||||||
|
## Brief: the owner sees thread claims
|
||||||
|
|
||||||
|
Chained on row 205 (193b1a). Start from refactor after 205 lands.
|
||||||
|
|
||||||
|
What to build:
|
||||||
|
|
||||||
|
1. A human or reader session's `agents` result also lists every thread claim currently held in the
|
||||||
|
business: thread id, holder run, harness and claim time. A claim counts as held when its thread's
|
||||||
|
latest `thread_claims` op is `claim`. Role claim rows keep their current shape and order. Thread
|
||||||
|
claim rows are added after them, marked so a reader can tell the two apart.
|
||||||
|
2. A role session's `agents` result is unchanged.
|
||||||
|
3. The rows carry no message content and no thread name a user wrote. The 205 filter still hides user
|
||||||
|
messages. This row adds claims only.
|
||||||
|
4. The CLI's `agents` output (packages/cli format.mjs reads `c.role` and `holder_run`) shows the thread
|
||||||
|
rows without breaking the role rows.
|
||||||
|
5. Row 205's governance pin (message-filter.test.mjs, the "claims" item) moves from `threadsState` to the
|
||||||
|
owner's `agents` call. Its comment naming this row goes away.
|
||||||
|
|
||||||
|
If the builder finds a cleaner shape, for example a separate owner verb, it goes in BUILD.md to Duckworth
|
||||||
|
before code. A widening beyond owner and reader sessions goes to Mos (mos-1202).
|
||||||
|
|
||||||
|
Tests:
|
||||||
|
|
||||||
|
- Owner `agents` shows a held thread claim. After revoke or release, it doesn't.
|
||||||
|
- A role session's `agents` result is byte-equal to before for the same store.
|
||||||
|
- No message body or user-written thread text appears in the output.
|
||||||
|
- The CLI renders a mixed list.
|
||||||
|
|
||||||
|
Mutants, each killed by a named test:
|
||||||
|
|
||||||
|
- M1. Thread rows dropped from the owner result.
|
||||||
|
- M2. The held check reads the first op instead of the latest, so a released claim shows.
|
||||||
|
- M3. Thread rows added to a role session's result.
|
||||||
|
|
||||||
|
Gate: Duckworth approves the manifest. The touched test files run whole, the bus and cli suites and every
|
||||||
|
scripts/test-*.sh are green on Sage's gate, and the mutants are killed.
|
||||||
@@ -1,36 +1,24 @@
|
|||||||
# Plan: Q175 phase 2 window, the live Console switches to --sso
|
# Plan: Q175 phase 2 window, the live Console switches to --sso
|
||||||
|
|
||||||
Sage, 2026-10-22. Draft 2 for Mos, after mos-1245. Sources: `agents/sage/work/q175-sso/DESIGN.md` sections 5
|
Sage, 2026-10-22. Draft 3 for Mos, after mos-1266. It names 86f95bb27, live since 04:03:00Z on 10-22. Sources: `agents/sage/work/q175-sso/DESIGN.md` sections 5
|
||||||
and 10 (phase 2 order, rollback, Jason-gated steps), Mos's C1 condition (mos-0977, b416d2ede), Jason's phase 2
|
and 10 (phase 2 order, rollback, Jason-gated steps), Mos's C1 condition (mos-0977, b416d2ede), Jason's phase 2
|
||||||
answers (Q209, mos-1216, mos-1217), mos-1195, mos-1197 and mos-1245. Rows 192 (phase 1), 200 (`activate --sso`)
|
answers (Q209, mos-1216, mos-1217), mos-1195, mos-1197 and mos-1245. Rows 192 (phase 1), 200 (`activate --sso`),
|
||||||
and its N1 follow-up have landed. Vikunja #412, Gitea #385.
|
its N1 follow-up and 273 (`activate --send` and `--no-sso`) have landed. Vikunja #412, Gitea #385.
|
||||||
|
|
||||||
## Blocked on a tool gap
|
## The tool gap is closed
|
||||||
|
|
||||||
Two steps need `scripts/stack-release.sh` flags that don't exist at 02da6a2ae:
|
Draft 2 found two missing `scripts/stack-release.sh` flags: `activate --send` and `activate --no-sso`. Row 273
|
||||||
|
added both (mos-1246, F39). It landed as 0bbf0f6d1 (Gitea #1778), and the 86f95bb27 re-pin put it live
|
||||||
- `activate` has `--no-send` but no `--send`. The live pointer holds no `--send`: the 10-20 19:29:56Z
|
(activation 20261022T040256Z-86f95bb27f6c). `--send` refuses unless the run's Console flags hold `--sso`,
|
||||||
re-pin of 490e2771d gave `--no-send`, and every activation since has carried it off. So step 5 can't turn
|
given or carried. `--no-sso` takes the Console flags from the rollback set of the activation that turned
|
||||||
`--send` on (mos-1195).
|
`--sso` on, and it drops `--send`. Neither flag ran in that re-pin, so step 5 and rollback 1 are their first
|
||||||
- `activate` has no way to turn `--sso` off. Without `--sso`, `sso_base` carries it from the pointer
|
live use. Darkwing's gate on 0bbf0f6d1 ran stack-release.test.mjs 218/218, including T53, T57 and T58.
|
||||||
(`sso: carried`), and `check_target` refuses the pointer's own copy as `already-active`. The pre-window
|
|
||||||
flags (`--public-host`, `--auth-header`, `--allow-user`) have no activate option either. So R1's
|
|
||||||
same-copy rollback can't run.
|
|
||||||
|
|
||||||
The fix is one small row, approved in mos-1246: `activate --send` and `activate --no-sso`. `--no-sso`
|
|
||||||
takes the Console flags from the rollback set of the activation that turned `--sso` on, the way `sso_base`
|
|
||||||
already does for a rollback to a copy without `--sso`. It drops `--send`, and its plan line says so. `--send`
|
|
||||||
refuses unless the run's Console flags hold `--sso`, given or carried (F39). The cases for both go in
|
|
||||||
`packages/cli/tests/stack-release.test.mjs`. F39 named test-release.sh, but that suite tests `release.sh`
|
|
||||||
and never calls `stack-release.sh`, so it runs whole and unchanged. Darkwing builds it, and a seat other than Sage and Darkwing reviews it. Brief:
|
|
||||||
`docs/plans/2026-10-22_activate-send-nosso.md`. It lands and is re-pinned before the window, on Mos's go,
|
|
||||||
run by Jason or Mos. The steps below assume it, and draft 3 names the new copy.
|
|
||||||
|
|
||||||
## When
|
## When
|
||||||
|
|
||||||
Only when Jason starts the window (mos-1197). Nothing below runs before his start. The 10-24 re-pin
|
Only when Jason starts the window (mos-1197). Nothing below runs before his start. The re-pin condition is met:
|
||||||
condition is met: W12 passed on 7247d80c7 at 22:27:13Z (mos-1245). This plan names 7247d80c7, which already
|
W12 passed on 86f95bb27 at 04:26:43Z on 10-22, and Mos closed that window in mos-1266. This plan names
|
||||||
carries phase 1, so its loader accepts a config with or without `console`. If another re-pin lands before
|
86f95bb27, which carries phase 1 and row 273, so its loader accepts a config with or without `console`. If another re-pin lands before
|
||||||
Jason starts, the plan names the copy live at that point, and step 3 runs against it.
|
Jason starts, the plan names the copy live at that point, and step 3 runs against it.
|
||||||
|
|
||||||
## Who
|
## Who
|
||||||
@@ -64,12 +52,12 @@ Jason starts, the plan names the copy live at that point, and step 3 runs agains
|
|||||||
`wc -l` is 1; `tr -cd '\r' <slot | wc -c` is 0; the last byte is a newline (`tail -c1 | od -An -c`).
|
`wc -l` is 1; `tr -cd '\r' <slot | wc -c` is 0; the last byte is a newline (`tail -c1 | od -An -c`).
|
||||||
3. Straggler check (C1): list every running process, unit and timer that reads config.json, with the
|
3. Straggler check (C1): list every running process, unit and timer that reads config.json, with the
|
||||||
copy it runs from (`/proc/<pid>/exe` and cwd links, `systemctl --user list-units`, `list-timers`). Each one
|
copy it runs from (`/proc/<pid>/exe` and cwd links, `systemctl --user list-units`, `list-timers`). Each one
|
||||||
must run from 7247d80c7, or be shown never to re-read config. Step 4 waits until the list is clean.
|
must run from 86f95bb27, or be shown never to re-read config. Step 4 waits until the list is clean.
|
||||||
4. Config write 1 (agent, backup from step 1): add `console.sso` with the values above and one subject
|
4. Config write 1 (agent, backup from step 1): add `console.sso` with the values above and one subject
|
||||||
`{ "sub": "pending-first-sign-in", "name": "jason.woltje" }`. `scripts/mosaic-config.mjs validate`
|
`{ "sub": "pending-first-sign-in", "name": "jason.woltje" }`. `scripts/mosaic-config.mjs validate`
|
||||||
reads it back before anything starts.
|
reads it back before anything starts.
|
||||||
5. First `scripts/stack-release.sh activate 7247d80c7 mosaic-stack --sso --send --plan`. Its from line must
|
5. First `scripts/stack-release.sh activate 86f95bb27 mosaic-stack --sso --send --plan`. Its from line must
|
||||||
name 7247d80c7 (`--expect-from` is for `--units external` only, so the live user units refuse it as a
|
name 86f95bb27 (`--expect-from` is for `--units external` only, so the live user units refuse it as a
|
||||||
usage error). Then the same command without `--plan`, the same way earlier re-pins handled the
|
usage error). Then the same command without `--plan`, the same way earlier re-pins handled the
|
||||||
Console. The tester stays the private socket from row 196 (`--tester-socket`). The `--plan` output
|
Console. The tester stays the private socket from row 196 (`--tester-socket`). The `--plan` output
|
||||||
names every flag it drops (`--public-host`, `--auth-header`, `--allow-user`) and every flag it carries.
|
names every flag it drops (`--public-host`, `--auth-header`, `--allow-user`) and every flag it carries.
|
||||||
@@ -108,15 +96,16 @@ Jason starts, the plan names the copy live at that point, and step 3 runs agains
|
|||||||
|
|
||||||
## Rollback
|
## Rollback
|
||||||
|
|
||||||
1. Same-copy re-activate (mos-1245 R1): `scripts/stack-release.sh activate 7247d80c7 mosaic-stack --no-sso
|
1. Same-copy re-activate (mos-1245 R1): `scripts/stack-release.sh activate 86f95bb27 mosaic-stack --no-sso
|
||||||
--plan`, then the same without `--plan`. R1 asked for `--expect-from 7247d80c7`, but `--expect-from` is
|
--plan`, then the same without `--plan`. R1 asked for `--expect-from 7247d80c7`, but `--expect-from` is
|
||||||
for `--units external` only and the live units are user units, so the plan's from line must name
|
for `--units external` only and the live units are user units, so the plan's from line must name
|
||||||
7247d80c7 instead. The `--plan` output must show the pre-window Console flags from the step 1 pointer backup: `--port 7332 --public-host
|
86f95bb27 instead. The `--plan` output must show the pre-window Console flags from the step 1 pointer backup: `--port 7332 --public-host
|
||||||
mosaic.woltje.com --auth-header X-authentik-username --allow-user jason.woltje --tester-socket`, exactly.
|
mosaic.woltje.com --auth-header X-authentik-username --allow-user jason.woltje --tester-socket`, exactly.
|
||||||
`--no-sso` drops `--send` (mos-1246 F39), so there's no `--send`. A plan that differs is a stop. Mos or Jason restarts the Console.
|
`--no-sso` drops `--send` (mos-1246 F39), so there's no `--send`. A plan that differs is a stop. Mos or Jason restarts the Console.
|
||||||
2. Restore config.json from the step 1 backup, which removes `console`. 7247d80c7 loads config with or
|
2. Restore config.json from the step 1 backup, which removes `console`. 86f95bb27 loads config with or
|
||||||
without the key, so the order of 1 and 2 doesn't matter on this copy.
|
without the key, so the order of 1 and 2 doesn't matter on this copy.
|
||||||
3. STATE after the rollback reads config.json, the unit's Console flags and the pointer.
|
3. STATE after the rollback reads config.json, the unit's Console flags and the pointer.
|
||||||
4. Last resort only, and it waits for Jason: `scripts/stack-release.sh rollback` goes to the previous
|
4. Last resort only, and it goes to Mos first: `scripts/stack-release.sh rollback` goes to the previous
|
||||||
distinct copy, 4429a104f at schema 3i. The store has been at 3j since 21:59Z on 10-21, so that rollback
|
distinct copy, 7247d80c7. Both copies are at schema 3j and 7247d80c7 carries phase 1, so it's a pointer
|
||||||
needs `--restore`, and any events after the backup make it Jason's call (header condition 3).
|
flip with no `--restore`. Its `--plan` must show the pre-window Console flags above. Any restore goes to
|
||||||
|
Mos and ends the window (mos-1226).
|
||||||
Reference in new issue
Block a user