From 6e7c23d7d91499c0bbeef474d6f52d055304d21f Mon Sep 17 00:00:00 2001 From: Jason Woltje Date: Mon, 19 Oct 2026 12:55:51 -0500 Subject: [PATCH] sage: Darkwing's Window A and B scratch --plan and load checks, cited in both plans (#1558) Darkwing's queue-162 packet for sage-1004/1006/1008: the two scratch --plan runs on blob 4b16e848 and the load checks of the usage-source file under 5fa9cc8f2 and 8e7ea89a1 (mos-0845 D3, mos-0847). Secrets scan clean. Both plans cite the files. W3 notes that the scratch store line reads the pointer, since the scratch root has no store. --- .../work/queue-162/scratch-business-A.json | 158 +++++++++++++++++ .../work/queue-162/scratch-business-B.json | 162 ++++++++++++++++++ .../work/queue-162/scratch-load-check.mjs | 18 ++ .../work/queue-162/scratch-load-check.txt | 45 +++++ .../darkwing/work/queue-162/scratch-mkbiz.mjs | 22 +++ .../scratch-plan-5fa9cc8f2-steps.log | 7 + .../work/queue-162/scratch-plan-5fa9cc8f2.txt | 97 +++++++++++ .../scratch-plan-ca15d73e9-steps.log | 7 + .../work/queue-162/scratch-plan-ca15d73e9.txt | 30 ++++ .../sage/work/window-plan/repin-5fa9cc8f2.md | 4 +- .../sage/work/window-plan/repin-ca15d73e9.md | 2 +- 11 files changed, 549 insertions(+), 3 deletions(-) create mode 100644 agents/darkwing/work/queue-162/scratch-business-A.json create mode 100644 agents/darkwing/work/queue-162/scratch-business-B.json create mode 100644 agents/darkwing/work/queue-162/scratch-load-check.mjs create mode 100644 agents/darkwing/work/queue-162/scratch-load-check.txt create mode 100644 agents/darkwing/work/queue-162/scratch-mkbiz.mjs create mode 100644 agents/darkwing/work/queue-162/scratch-plan-5fa9cc8f2-steps.log create mode 100644 agents/darkwing/work/queue-162/scratch-plan-5fa9cc8f2.txt create mode 100644 agents/darkwing/work/queue-162/scratch-plan-ca15d73e9-steps.log create mode 100644 agents/darkwing/work/queue-162/scratch-plan-ca15d73e9.txt diff --git a/agents/darkwing/work/queue-162/scratch-business-A.json b/agents/darkwing/work/queue-162/scratch-business-A.json new file mode 100644 index 000000000..f5a583aff --- /dev/null +++ b/agents/darkwing/work/queue-162/scratch-business-A.json @@ -0,0 +1,158 @@ +{ + "businessVersion": 1, + "id": "mosaic-stack", + "human": "jason", + "arbiters": { + "delivery": "pm", + "technical": "cto" + }, + "projects": { + "stack": { + "root": "/mnt/storage/src/mosaic-stack" + } + }, + "vars": { + "tracker.baseUrl": "http://127.0.0.1:9", + "gitea.baseUrl": "http://127.0.0.1:9" + }, + "tracker": { + "sync": { + "bot": "bot-mosaic-stack-sync", + "botId": 1, + "credentials": { + "vikunja": { + "file": "/home/jwoltje/darkwing-scratch/r1004/bfiles/nosecret/sync-vikunja.token", + "expires": "2027-01-01" + } + } + }, + "labels": {} + }, + "roles": { + "pm": { + "definition": "pm", + "holder": "sage", + "tracker": { + "bot": "bot-mosaic-stack-pm", + "botId": 2 + }, + "credentials": { + "gitea": { + "file": "/home/jwoltje/darkwing-scratch/r1004/bfiles/nosecret/pm-gitea.token", + "rotateBy": "2027-01-01" + }, + "vikunja": { + "file": "/home/jwoltje/darkwing-scratch/r1004/bfiles/nosecret/pm-vikunja.token", + "expires": "2027-01-01" + } + }, + "vars": { + "model": "opus" + } + }, + "cto": { + "definition": "cto", + "holder": "darkwing", + "tracker": { + "bot": "bot-mosaic-stack-cto", + "botId": 3 + }, + "credentials": { + "gitea": { + "file": "/home/jwoltje/darkwing-scratch/r1004/bfiles/nosecret/cto-gitea.token", + "rotateBy": "2027-01-01" + }, + "vikunja": { + "file": "/home/jwoltje/darkwing-scratch/r1004/bfiles/nosecret/cto-vikunja.token", + "expires": "2027-01-01" + } + }, + "vars": { + "model": "opus" + } + }, + "coder": { + "definition": "coder", + "tracker": { + "bot": "bot-mosaic-stack-coder", + "botId": 4 + }, + "credentials": { + "gitea": { + "file": "/home/jwoltje/darkwing-scratch/r1004/bfiles/nosecret/coder-gitea.token", + "rotateBy": "2027-01-01" + }, + "vikunja": { + "file": "/home/jwoltje/darkwing-scratch/r1004/bfiles/nosecret/coder-vikunja.token", + "expires": "2027-01-01" + } + }, + "vars": { + "model": "sonnet" + } + }, + "reviewer": { + "definition": "reviewer", + "tracker": { + "bot": "bot-mosaic-stack-reviewer", + "botId": 5 + }, + "credentials": { + "gitea": { + "file": "/home/jwoltje/darkwing-scratch/r1004/bfiles/nosecret/reviewer-gitea.token", + "rotateBy": "2027-01-01" + }, + "vikunja": { + "file": "/home/jwoltje/darkwing-scratch/r1004/bfiles/nosecret/reviewer-vikunja.token", + "expires": "2027-01-01" + } + }, + "vars": { + "model": "opus" + } + }, + "chief": { + "definition": "chief-of-staff", + "vars": { + "model": "opus" + } + }, + "assistant": { + "definition": "assistant", + "holder": "mos", + "vars": { + "model": "opus" + } + } + }, + "launch": { + "by": "chief", + "instances": [ + "coder", + "reviewer" + ], + "models": { + "opus": { + "provider": "your-provider", + "model": "claude-opus-5-5" + }, + "sonnet": { + "provider": "your-provider", + "model": "claude-sonnet-5-5" + } + }, + "limits": { + "models": { + "your-provider": { + "claude-opus-5-5": 4, + "claude-sonnet-5-5": 4 + } + } + } + }, + "plugins": { + "usage-source": [ + "transcript" + ] + } +} diff --git a/agents/darkwing/work/queue-162/scratch-business-B.json b/agents/darkwing/work/queue-162/scratch-business-B.json new file mode 100644 index 000000000..b5c0a96aa --- /dev/null +++ b/agents/darkwing/work/queue-162/scratch-business-B.json @@ -0,0 +1,162 @@ +{ + "businessVersion": 1, + "id": "mosaic-stack", + "human": "jason", + "arbiters": { + "delivery": "pm", + "technical": "cto" + }, + "projects": { + "stack": { + "root": "/mnt/storage/src/mosaic-stack" + } + }, + "vars": { + "tracker.baseUrl": "http://127.0.0.1:9", + "gitea.baseUrl": "http://127.0.0.1:9" + }, + "tracker": { + "sync": { + "bot": "bot-mosaic-stack-sync", + "botId": 1, + "credentials": { + "vikunja": { + "file": "/home/jwoltje/darkwing-scratch/r1004/bfiles/nosecret/sync-vikunja.token", + "expires": "2027-01-01" + } + } + }, + "labels": {} + }, + "roles": { + "pm": { + "definition": "pm", + "holder": "sage", + "tracker": { + "bot": "bot-mosaic-stack-pm", + "botId": 2 + }, + "credentials": { + "gitea": { + "file": "/home/jwoltje/darkwing-scratch/r1004/bfiles/nosecret/pm-gitea.token", + "rotateBy": "2027-01-01" + }, + "vikunja": { + "file": "/home/jwoltje/darkwing-scratch/r1004/bfiles/nosecret/pm-vikunja.token", + "expires": "2027-01-01" + } + }, + "vars": { + "model": "opus" + } + }, + "cto": { + "definition": "cto", + "holder": "darkwing", + "tracker": { + "bot": "bot-mosaic-stack-cto", + "botId": 3 + }, + "credentials": { + "gitea": { + "file": "/home/jwoltje/darkwing-scratch/r1004/bfiles/nosecret/cto-gitea.token", + "rotateBy": "2027-01-01" + }, + "vikunja": { + "file": "/home/jwoltje/darkwing-scratch/r1004/bfiles/nosecret/cto-vikunja.token", + "expires": "2027-01-01" + } + }, + "vars": { + "model": "opus" + } + }, + "coder": { + "definition": "coder", + "tracker": { + "bot": "bot-mosaic-stack-coder", + "botId": 4 + }, + "credentials": { + "gitea": { + "file": "/home/jwoltje/darkwing-scratch/r1004/bfiles/nosecret/coder-gitea.token", + "rotateBy": "2027-01-01" + }, + "vikunja": { + "file": "/home/jwoltje/darkwing-scratch/r1004/bfiles/nosecret/coder-vikunja.token", + "expires": "2027-01-01" + } + }, + "vars": { + "model": "sonnet" + } + }, + "reviewer": { + "definition": "reviewer", + "tracker": { + "bot": "bot-mosaic-stack-reviewer", + "botId": 5 + }, + "credentials": { + "gitea": { + "file": "/home/jwoltje/darkwing-scratch/r1004/bfiles/nosecret/reviewer-gitea.token", + "rotateBy": "2027-01-01" + }, + "vikunja": { + "file": "/home/jwoltje/darkwing-scratch/r1004/bfiles/nosecret/reviewer-vikunja.token", + "expires": "2027-01-01" + } + }, + "vars": { + "model": "opus" + } + }, + "chief": { + "definition": "chief-of-staff", + "vars": { + "model": "opus" + } + }, + "assistant": { + "definition": "assistant", + "holder": "mos", + "vars": { + "model": "opus" + } + } + }, + "launch": { + "by": "chief", + "instances": [ + "coder", + "reviewer" + ], + "models": { + "opus": { + "provider": "your-provider", + "model": "claude-opus-5-5" + }, + "sonnet": { + "provider": "your-provider", + "model": "claude-sonnet-5-5" + } + }, + "limits": { + "models": { + "your-provider": { + "claude-opus-5-5": 4, + "claude-sonnet-5-5": 4 + } + } + } + }, + "plugins": { + "usage-source": [ + "transcript" + ], + "channel": [ + "cli", + "webui" + ] + } +} diff --git a/agents/darkwing/work/queue-162/scratch-load-check.mjs b/agents/darkwing/work/queue-162/scratch-load-check.mjs new file mode 100644 index 000000000..6011236c3 --- /dev/null +++ b/agents/darkwing/work/queue-162/scratch-load-check.mjs @@ -0,0 +1,18 @@ +// business-check-style load (repin-de352dfaf/business-check.mjs) of a scratch business file under COPY's own +// loader and roles. usage: node load-check.mjs COPY_DIR CONFIG_DIR. Prints counts, plug-in kinds, HOLDS lines, LOAD_OK or REFUSED. +const [copy, dir] = process.argv.slice(2); +const { loadBusiness } = await import(`${copy}/packages/business/src/business.mjs`); +const { resolveInstance } = await import(`${copy}/packages/business/src/resolve.mjs`); +try { + const b = loadBusiness('mosaic-stack', { dir, rolesDir: `${copy}/roles` }); + const count = (o) => Object.keys(o ?? {}).length; + console.log(`copy ${copy.split('/').pop().slice(0, 9)}: roles ${count(b.roles)}, projects ${count(b.projects)}, arbiters ${count(b.arbiters)}, plugins ${JSON.stringify(b.plugins)}`); + for (const instance of ['chief', 'pm']) { + const { limits: { authority: a } } = resolveInstance({ system: {}, business: b, instance }); + console.log(`HOLDS ${instance} instance.name ${[...a.withinRole, ...a.crossRole].includes('instance.name') ? 'yes' : 'no'}`); + } + console.log('LOAD_OK'); +} catch (e) { + console.log(`REFUSED ${e.message}`); + process.exit(1); +} diff --git a/agents/darkwing/work/queue-162/scratch-load-check.txt b/agents/darkwing/work/queue-162/scratch-load-check.txt new file mode 100644 index 000000000..350450c95 --- /dev/null +++ b/agents/darkwing/work/queue-162/scratch-load-check.txt @@ -0,0 +1,45 @@ +# SCRATCH, NOT LIVE. Business-check-style loads run by darkwing at 2026-10-19T17:54:24Z for sage-1004/1006/1008 (mos-0845 D3). +# Each copy loads the file with its own packages/business/src/business.mjs and roles/. +# File A: /home/jwoltje/darkwing-scratch/r1004/bfiles/A/businesses/mosaic-stack.json, sha256 d4c109fa4a169c18f7a29c7e9caaee392169a9ed9e185e14c8c70678f320a933 +# the committed packages/business/examples/mosaic-stack.example.json (blob 3a81ca0faea6 at all three commits) through mkbiz.mjs, +# plugins {"usage-source":["transcript"]}. File B: same plus "channel":["cli","webui"], sha256 a3104f0ecda189a6704dbd301ddb36c4ed9ee3ff86973ad90d5a5490d9b62dec +# mkbiz.mjs: bot ids 1..n, date placeholders 2027-01-01, credential files point at a path that does not exist, +# tracker.baseUrl and gitea.baseUrl 127.0.0.1:9. The live business file was not read (mos-0847). + +## Part 1. Window A file under 5fa9cc8f2 (the target) +# command: node /home/jwoltje/darkwing-scratch/r1004/load-check.mjs /home/jwoltje/darkwing-scratch/r1004/copies/5fa9cc8f2c66b52408b652b59c3070f7210b44d0 /home/jwoltje/darkwing-scratch/r1004/bfiles/A +copy 5fa9cc8f2: roles 6, projects 1, arbiters 2, plugins {"usage-source":["transcript"]} +HOLDS chief instance.name yes +HOLDS pm instance.name no +LOAD_OK +# exit 0 + +## Part 2. Window A file under 8e7ea89a1 (the rollback load) +# command: node /home/jwoltje/darkwing-scratch/r1004/load-check.mjs /home/jwoltje/darkwing-scratch/r1004/copies/8e7ea89a1e86447d26ec335e4b138acfd5130cbc /home/jwoltje/darkwing-scratch/r1004/bfiles/A +copy 8e7ea89a1: roles 6, projects 1, arbiters 2, plugins {"usage-source":["transcript"]} +HOLDS chief instance.name yes +HOLDS pm instance.name no +LOAD_OK +# exit 0 + +## Part 3. Window B seed file under 5fa9cc8f2 +# command: node /home/jwoltje/darkwing-scratch/r1004/load-check.mjs /home/jwoltje/darkwing-scratch/r1004/copies/5fa9cc8f2c66b52408b652b59c3070f7210b44d0 /home/jwoltje/darkwing-scratch/r1004/bfiles/B +copy 5fa9cc8f2: roles 6, projects 1, arbiters 2, plugins {"usage-source":["transcript"],"channel":["cli","webui"]} +HOLDS chief instance.name yes +HOLDS pm instance.name no +LOAD_OK +# exit 0 + +## Part 4. Window B seed file under ca15d73e9 +# command: node /home/jwoltje/darkwing-scratch/r1004/load-check.mjs /home/jwoltje/darkwing-scratch/r1004/copies/ca15d73e9fdcdcf66a10f86cdedeb2d6a08f2b00 /home/jwoltje/darkwing-scratch/r1004/bfiles/B +copy ca15d73e9: roles 6, projects 1, arbiters 2, plugins {"usage-source":["transcript"],"channel":["cli","webui"]} +HOLDS chief instance.name yes +HOLDS pm instance.name no +LOAD_OK +# exit 0 + +## Part 5. Control: Window B file under 8e7ea89a1, expected REFUSED (no channel kind there) +# command: node /home/jwoltje/darkwing-scratch/r1004/load-check.mjs /home/jwoltje/darkwing-scratch/r1004/copies/8e7ea89a1e86447d26ec335e4b138acfd5130cbc /home/jwoltje/darkwing-scratch/r1004/bfiles/B +REFUSED /home/jwoltje/darkwing-scratch/r1004/bfiles/B/businesses/mosaic-stack.json plugins names unknown kind "channel"; adding a kind is a core change +# exit 1 + diff --git a/agents/darkwing/work/queue-162/scratch-mkbiz.mjs b/agents/darkwing/work/queue-162/scratch-mkbiz.mjs new file mode 100644 index 000000000..30203a8d6 --- /dev/null +++ b/agents/darkwing/work/queue-162/scratch-mkbiz.mjs @@ -0,0 +1,22 @@ +// Scratch business file for sage-1004/1006: the committed example, made loadable, with the given plug-ins. +// Bot ids become distinct positive integers, date placeholders become 2027-01-01, every credential file +// points at a path under NOSECRET that does not exist, and both base URLs go to 127.0.0.1:9 (discard), +// so a scratch bus never reaches the live tracker or Gitea. usage: node mkbiz.mjs EXAMPLE NOSECRET PLUGINS_JSON +import { readFileSync } from 'node:fs'; +import { basename } from 'node:path'; +const [example, nosecret, plugins] = process.argv.slice(2); +const b = JSON.parse(readFileSync(example, 'utf8')); +let id = 0; +const walk = (o) => { + for (const [k, v] of Object.entries(o)) { + if (k === 'botId') o[k] = ++id; + else if (v === 'YYYY-MM-DD') o[k] = '2027-01-01'; + else if (k === 'file' && typeof v === 'string') o[k] = `${nosecret}/${basename(v)}`; + else if (v && typeof v === 'object') walk(v); + } +}; +walk(b); +b.vars['tracker.baseUrl'] = 'http://127.0.0.1:9'; +b.vars['gitea.baseUrl'] = 'http://127.0.0.1:9'; +b.plugins = JSON.parse(plugins); +process.stdout.write(JSON.stringify(b, null, 2) + '\n'); diff --git a/agents/darkwing/work/queue-162/scratch-plan-5fa9cc8f2-steps.log b/agents/darkwing/work/queue-162/scratch-plan-5fa9cc8f2-steps.log new file mode 100644 index 000000000..853d28840 --- /dev/null +++ b/agents/darkwing/work/queue-162/scratch-plan-5fa9cc8f2-steps.log @@ -0,0 +1,7 @@ +2026-10-19T17:47:04Z tool: /home/jwoltje/darkwing-scratch/r1004/wt at 6dbc673022e4ec3c22ada4a86bf4095e62269d8b, scripts/stack-release.sh blob 4b16e848a6b9905b6a568668367bad6df5f65c7b +2026-10-19T17:47:05Z pointer: hand-written, copy 8e7ea89a1e86447d26ec335e4b138acfd5130cbc, schema 3h, pm true +2026-10-19T17:47:05Z copy: (cd /home/jwoltje/darkwing-scratch/r1004/wt && scripts/stack-copy.sh copy 5fa9cc8f2c66b52408b652b59c3070f7210b44d0 --copies /home/jwoltje/darkwing-scratch/r1004/plan-5fa9cc8f2/copies --allow-worktree) +2026-10-19T17:47:06Z copy: copied: /home/jwoltje/darkwing-scratch/r1004/plan-5fa9cc8f2/copies/5fa9cc8f2c66b52408b652b59c3070f7210b44d0 +2026-10-19T17:47:06Z plan: written to /home/jwoltje/darkwing-scratch/r1004/out/scratch-plan-5fa9cc8f2.txt +2026-10-19T17:47:06Z files under the data root after the plan: . ./bus ./state ./state/stack-active.json +2026-10-19T17:47:06Z removed: chmod -R u+w /home/jwoltje/darkwing-scratch/r1004/plan-5fa9cc8f2/copies/5fa9cc8f2c66b52408b652b59c3070f7210b44d0 && rm -rf /home/jwoltje/darkwing-scratch/r1004/plan-5fa9cc8f2/copies/5fa9cc8f2c66b52408b652b59c3070f7210b44d0; left: 0 entries diff --git a/agents/darkwing/work/queue-162/scratch-plan-5fa9cc8f2.txt b/agents/darkwing/work/queue-162/scratch-plan-5fa9cc8f2.txt new file mode 100644 index 000000000..c7115e209 --- /dev/null +++ b/agents/darkwing/work/queue-162/scratch-plan-5fa9cc8f2.txt @@ -0,0 +1,97 @@ +# SCRATCH ROOT, NOT LIVE. activate --plan run by darkwing at 2026-10-19T17:47:06Z for sage-1004 (mos-0838 D2). +# Tool: scripts/stack-release.sh blob 4b16e848a6b9905b6a568668367bad6df5f65c7b, worktree at 6dbc673022e4ec3c22ada4a86bf4095e62269d8b. +# Data root: /home/jwoltje/darkwing-scratch/r1004/plan-5fa9cc8f2/data (config /home/jwoltje/darkwing-scratch/r1004/plan-5fa9cc8f2/cfg/config.json). There is no store file, so the store schema +# comes from the pointer. The pointer is HAND-WRITTEN: copy 8e7ea89a1e86447d26ec335e4b138acfd5130cbc, pm true; +# schema 3h is that copy's SCHEMA_VERSION read with git show. claude and console are +# placeholders, so the bus and Console lines below are not the live flags. +# Copies: /home/jwoltje/darkwing-scratch/r1004/plan-5fa9cc8f2/copies (a scratch copy of 5fa9cc8f2c66b52408b652b59c3070f7210b44d0). +# Command: MOSAIC_CONFIG=/home/jwoltje/darkwing-scratch/r1004/plan-5fa9cc8f2/cfg/config.json scripts/stack-release.sh activate 5fa9cc8f2c66b52408b652b59c3070f7210b44d0 mosaic-stack --plan --copies /home/jwoltje/darkwing-scratch/r1004/plan-5fa9cc8f2/copies --bin /home/jwoltje/darkwing-scratch/r1004/plan-5fa9cc8f2/bin +plan: activate for mosaic-stack +from: 8e7ea89a1e86447d26ec335e4b138acfd5130cbc +to: 5fa9cc8f2c66b52408b652b59c3070f7210b44d0 +store schema: 3h (from the pointer; there is no store file) +target schema: 3h +migration: none; the store is at the target's version +commits: the run adds 78 (newest first, at most 200): + 5fa9cc8f2 webui: one settings snapshot and a names read that rethrows a refusal (row 167, #1664) + ee3f1fb3f sessions: Filbert row 167 r1 review, approve + 0434ecfef sessions: Darkwing lines from 2026-10-16 to 2026-10-19 (rows 137, 141, 150, 87, 155, 162, 165, 166) + 81f26551b queue: row 165 r3 in-review, approvals and done, row 166 r2 in-review and Filbert approve (sage) + cff5f31ed sessions: Sage row 165 landing + 9466f3e5e business: the human adds and changes role instances from the CLI and the Console (row 165, Q171, #1662) + 50a57e454 sessions: Filbert row 166 r2 review, approve + 7f9b976c9 sessions: Filbert row 165 r3 review, approve + e8b09735a sessions: Sage row 156 landing + d6a008ad2 agents/dewey: row 156 packet, round 2 (#1651) + 1cf77e466 queue: row 156 done, row 165 r2 in-review and approvals, row 166 r1 in-review and Filbert approve (sage) + 4f45cadc0 bus, cli, harness: the host starts the landing run once a merge decision is approved (row 156, #1651) + 4d92151bc sessions: Filbert row 166 r1 review, approve + c9c8c14d4 sessions: Filbert row 165 r2 review, approve + a618528b2 sessions: Filbert row 156 r2 review, approve + 37dbf0862 sessions: Dewey rows 156 r2 accepted, 165 r1 review, 126 packet and Mos go request + c3cd27345 queue: row 165 r1 in-review and Filbert approve, row 156 round 2 in-review (sage) + de34256c6 sessions: Filbert row 165 r1 review, approve + 9d6aca571 sessions: Sage queue commit 756bc1af1 rev range correction and PM standup + 756bc1af1 queue: revs 1882-1885, row 156 round 1 in-review and Filbert changes (sage) + 139e28673 sessions: Filbert row 156 r1 review, changes + 70c9131f0 queue: revs 1879-1881, row 154 round 5 approvals and done (sage) + 76e2b6e6f sessions: Sage row 154 landing + 9353675d1 webui: a WYSIWYG Markdown editor in the Console docs view, built from reviewable source (row 154, Q168, #1648) + 72c3fa598 sessions: Filbert row 154 r5 review, approve + df078c9c4 queue: revs 1877-1878, row 154 round 5 review request posted as comment 29024 (sage) + 31788ef85 sessions: Researcher row 154 rounds 3 to 5 and Sage row 154 round 5 request, row 165 credentials ruling + 81b0041e3 agents/researcher: row 154 (#1648) packet through the d88613bac rebase round (manifest 3a4bc21c), without the five superseded 2 MB candidate.patch files (root, r2, r3, rebase-7bd2a348c, rebase-850484a7d), which stay untracked on disk + 5e2a1bc11 queue: revs 1869-1874, row 165 briefed, claimed and brief re-pinned on b3cf580a (Sage 1869-1870, 1872-1873; Darkwing 1871); 154 back to in-progress for the d88613bac round (Sage 1874) + b8036b608 plans: row 165 brief correction, the second reviewer waits on P19 367 (mos-0823) + d88613bac queue: revs 1866-1868, row 155 done, 167 add and briefed (sage) + ab7889899 sessions: Sage row 155 landing + 68fc31a94 plans: brief for the Settings reads and snapshot follow-up to row 155 (Darkwing's draft, Mos's mos-0816 notes, Dewey's F1) + 53f3f29a3 sage: window plan repin-8e7ea89a1 records P2, CONSOLE_PASS on a scratch copy (mos-0819, mos-0820) + 66f9e9d0c darkwing: row 155 packet, rounds 1-3 and the follow-up brief draft (#1649) + b2f57ca70 bus, business, harness, webui: the human and the chief of staff configure the assistant (row 155, Q169, #1649) + 197722caa queue: revs 1861-1865, row 155 r3 in review (darkwing) and confirm-only approvals (filbert, dewey) + f74217551 sessions: Filbert row 155 r3 review, approve + 0473574b0 queue: revs 1846-1860, rows 155 r1-r2 reviews (darkwing, dewey, filbert), 162 done, 166 add and briefed (sage), 154 r4 in review (researcher) + 359adff56 sessions: Filbert row 155 r2 review, approve + 449cadd1f sessions: Filbert row 155 r1 review, approve + 7bd2a348c sessions: Sage row 162 landing + c70f360ae plans: D1 brief item 8 re-pinned to the held or stopped store read; stack-release hardening brief (row 162 follow-up) + f5b5aa509 sage: window plan repin-8e7ea89a1 on row 162's verbs, de352dfaf superseded (mos-0814, mos-0815) + d132b369e darkwing: row 162 packet, rounds 1-2, scratch plans and follow-up draft (#1659) + 7e7f8e208 scripts: health-gated stack activate and rollback, stack-release.sh (row 162, D1, #1659) + 23622980f queue: revs 1838-1845, row 125 done (Sage 1838); 156 in progress (Dewey 1839); 162 r2 in review (Darkwing 1840-1842); 126 brief re-pin on 7ce156259 and briefed (Sage 1843-1844); 162 r2 Filbert approve on c213a801 (1845, comment 29004) + 6b21085c4 sessions: Filbert row 162 r2 review, approve + 7ce156259 plans: row 126 brief rewritten on Dewey's tokens.daily design after row 125 landed (#1620) + de74dd473 sessions: Sage row 125 landing + df4d5702f dewey: row 125 packet, rounds 1-3 (#1619) + aa625565f bus, cli, webui: token limits per instance, model, provider and key (row 125, #1619) + b6827d19e queue: revs 1836-1837, row 125 r3 Filbert approve on 8b71c405 (1836, comment 28996); row 162 r1 Filbert approve on 091693c5 (1837, comment 28997) + e972b5969 sessions: Filbert row 162 r1 review, approve + 5f8e5f041 sessions: Dewey rows 125 r3, 154 r3 and 164 r2 + 4c2ff00cd sessions: Filbert row 125 r3 review + 99d2b49c9 queue: revs 1828-1835, row 154 r3 Filbert approve (1828); 164 done (Sage 1829); 165 brief re-pin after Jason's Q4 (Sage 1830); 125 r3 in review (Dewey 1831-1833); 162 r1 in review (Darkwing 1834-1835) + 8e47e5e3b sessions: Sage row 164 landing, row 165 brief + 606fafd43 plans: row 165 brief, Jason's Q4 confirmation relayed (mos-0805), hold lifted + cfde62f9f agents: Rocko row 164 r2 packet (#1661) + 008746b6e plugins: channel kind for the CLI and Console chat paths (row 164, #1661) + e5b10d275 sessions: Filbert row 154 r3 review, approve + 27f01be2e queue: revs 1805-1827, row 164 r1 in review (Rocko 1806-1807, request by Sage 1808-1809), r1 changes (Dewey 1814), r2 in review (Rocko 1816, 1820-1821, request by Sage 1824-1825) and approve (Dewey 1826); 125 r2 in review (Dewey 1805, 1811-1812) and approve (Filbert 1815); 154 r2 changes (Filbert 1810, Dewey 1813), r3 in review (Researcher 1817-1819, request by Sage 1822-1823) and Dewey approve (1827) + 1dbf45610 sessions: Filbert row 125 r2 review, approve + 6f963fd65 sessions: Filbert row 154 r2 review, changes + ed92e2e1e logs: correct Rocko row 164 resume stamp from recorded clock + 3d527871c docs: Rocko row 164 candidate packet and own verification logs + 370c4d897 sessions: Researcher row 154 phase 1, phase 2 and round 2 lines, row 128 mutants line (their own lines) + 5ec790f14 queue: revs 1798-1804, row 165 added queued (Sage 1798, P19 332), 154 r2 in review (Researcher 1799-1801, request posted by Sage 1803-1804), 125 r1 changes (Filbert 1802) + 7a7d7442d sessions: Filbert row 125 r1 review, changes + ab9f23d9e docs: row brief for adding and changing role instances (P19 332, #1662); I6 brief records Jason's P19 333 ruling + d62c61fbd logs: Rocko row 164 focused pass and full-gate fixture boundary (own lines) + fe7eef8fb queue: revs 1791-1797, row 129 r2 approve (Filbert 1791) and done (1792), 164 claimed (Rocko 1793), 154 r1 changes (Filbert 1794, Dewey 1797), 125 r2 in review (Dewey 1795-1796) + 20b5030b5 sessions: Dewey row 125 in-review and row 154 r1 security review + fdb1d4b34 logs: Rocko row 164 test preparation and landed reference check (own lines) + e79ba6c94 sessions: Sage row 129 landing (850484a7d, #1623 closed) + 3cbfbaac4 sessions: Filbert row 154 r1 review (changes, comment 28954) + 850484a7d webui: Console chat area over the bus's project and thread verbs (row 129, #1623) +bus: scripts/bus-service.sh install --copy 5fa9cc8f2c66b52408b652b59c3070f7210b44d0 --copies /home/jwoltje/darkwing-scratch/r1004/plan-5fa9cc8f2/copies --pm --claude /hand-written/no-claude-pin-read +Console: scripts/webui-service.sh install --copy 5fa9cc8f2c66b52408b652b59c3070f7210b44d0 --copies /home/jwoltje/darkwing-scratch/r1004/plan-5fa9cc8f2/copies +CLI: scripts/stack-copy.sh wrapper 5fa9cc8f2c66b52408b652b59c3070f7210b44d0 --copies /home/jwoltje/darkwing-scratch/r1004/plan-5fa9cc8f2/copies --bin /home/jwoltje/darkwing-scratch/r1004/plan-5fa9cc8f2/bin +# exit 0 diff --git a/agents/darkwing/work/queue-162/scratch-plan-ca15d73e9-steps.log b/agents/darkwing/work/queue-162/scratch-plan-ca15d73e9-steps.log new file mode 100644 index 000000000..f1f7758a6 --- /dev/null +++ b/agents/darkwing/work/queue-162/scratch-plan-ca15d73e9-steps.log @@ -0,0 +1,7 @@ +2026-10-19T17:47:16Z tool: /home/jwoltje/darkwing-scratch/r1004/wt at 6dbc673022e4ec3c22ada4a86bf4095e62269d8b, scripts/stack-release.sh blob 4b16e848a6b9905b6a568668367bad6df5f65c7b +2026-10-19T17:47:17Z pointer: hand-written, copy 5fa9cc8f2c66b52408b652b59c3070f7210b44d0, schema 3h, pm true +2026-10-19T17:47:17Z copy: (cd /home/jwoltje/darkwing-scratch/r1004/wt && scripts/stack-copy.sh copy ca15d73e9fdcdcf66a10f86cdedeb2d6a08f2b00 --copies /home/jwoltje/darkwing-scratch/r1004/plan-ca15d73e9/copies --allow-worktree) +2026-10-19T17:47:18Z copy: copied: /home/jwoltje/darkwing-scratch/r1004/plan-ca15d73e9/copies/ca15d73e9fdcdcf66a10f86cdedeb2d6a08f2b00 +2026-10-19T17:47:18Z plan: written to /home/jwoltje/darkwing-scratch/r1004/out/scratch-plan-ca15d73e9.txt +2026-10-19T17:47:18Z files under the data root after the plan: . ./bus ./state ./state/stack-active.json +2026-10-19T17:47:18Z removed: chmod -R u+w /home/jwoltje/darkwing-scratch/r1004/plan-ca15d73e9/copies/ca15d73e9fdcdcf66a10f86cdedeb2d6a08f2b00 && rm -rf /home/jwoltje/darkwing-scratch/r1004/plan-ca15d73e9/copies/ca15d73e9fdcdcf66a10f86cdedeb2d6a08f2b00; left: 0 entries diff --git a/agents/darkwing/work/queue-162/scratch-plan-ca15d73e9.txt b/agents/darkwing/work/queue-162/scratch-plan-ca15d73e9.txt new file mode 100644 index 000000000..e7bc0c587 --- /dev/null +++ b/agents/darkwing/work/queue-162/scratch-plan-ca15d73e9.txt @@ -0,0 +1,30 @@ +# SCRATCH ROOT, NOT LIVE. activate --plan run by darkwing at 2026-10-19T17:47:18Z for sage-1004 (mos-0838 D2). +# Tool: scripts/stack-release.sh blob 4b16e848a6b9905b6a568668367bad6df5f65c7b, worktree at 6dbc673022e4ec3c22ada4a86bf4095e62269d8b. +# Data root: /home/jwoltje/darkwing-scratch/r1004/plan-ca15d73e9/data (config /home/jwoltje/darkwing-scratch/r1004/plan-ca15d73e9/cfg/config.json). There is no store file, so the store schema +# comes from the pointer. The pointer is HAND-WRITTEN: copy 5fa9cc8f2c66b52408b652b59c3070f7210b44d0, pm true; +# schema 3h is that copy's SCHEMA_VERSION read with git show. claude and console are +# placeholders, so the bus and Console lines below are not the live flags. +# Copies: /home/jwoltje/darkwing-scratch/r1004/plan-ca15d73e9/copies (a scratch copy of ca15d73e9fdcdcf66a10f86cdedeb2d6a08f2b00). +# Command: MOSAIC_CONFIG=/home/jwoltje/darkwing-scratch/r1004/plan-ca15d73e9/cfg/config.json scripts/stack-release.sh activate ca15d73e9fdcdcf66a10f86cdedeb2d6a08f2b00 mosaic-stack --plan --copies /home/jwoltje/darkwing-scratch/r1004/plan-ca15d73e9/copies --bin /home/jwoltje/darkwing-scratch/r1004/plan-ca15d73e9/bin +plan: activate for mosaic-stack +from: 5fa9cc8f2c66b52408b652b59c3070f7210b44d0 +to: ca15d73e9fdcdcf66a10f86cdedeb2d6a08f2b00 +store schema: 3h (from the pointer; there is no store file) +target schema: 3i +migration: 3h to 3i, after a backup of the stopped store +migration steps: 3h to 3i +needs: --migrate (not given; the run would roll back with migration-needs-flag) +needs: Jason present for this run (decision 96 condition 2) +commits: the run adds 8 (newest first, at most 200): + ca15d73e9 limits: a daily token quota for the account the stack uses, and bus schema 3h to 3i (row 126, #1620) + 54319f552 sessions: Filbert row 126 r2 review, approve + 4c385db45 sessions: Dewey row 126 round 4 build and review rounds 1-2 + 2124cfa76 queue: row 126 Filbert r1 approve, brief re-pin for 3h to 3i, row 7 week note, round 2 in-review (sage) + e264db51b plans: row 126 brief names the 3h to 3i step and the account guard (#1620) + 1df04f52f sessions: Filbert row 126 r1 review, approve + 9e2b26866 queue: row 167 Filbert approve and done, row 126 round 1 in-review (sage) + 640a1ee97 sessions: Sage row 167 landing and row 126 3i ruling +bus: scripts/bus-service.sh install --copy ca15d73e9fdcdcf66a10f86cdedeb2d6a08f2b00 --copies /home/jwoltje/darkwing-scratch/r1004/plan-ca15d73e9/copies --pm --claude /hand-written/no-claude-pin-read +Console: scripts/webui-service.sh install --copy ca15d73e9fdcdcf66a10f86cdedeb2d6a08f2b00 --copies /home/jwoltje/darkwing-scratch/r1004/plan-ca15d73e9/copies +CLI: scripts/stack-copy.sh wrapper ca15d73e9fdcdcf66a10f86cdedeb2d6a08f2b00 --copies /home/jwoltje/darkwing-scratch/r1004/plan-ca15d73e9/copies --bin /home/jwoltje/darkwing-scratch/r1004/plan-ca15d73e9/bin +# exit 0 diff --git a/agents/sage/work/window-plan/repin-5fa9cc8f2.md b/agents/sage/work/window-plan/repin-5fa9cc8f2.md index 349925fd7..0f2226e58 100644 --- a/agents/sage/work/window-plan/repin-5fa9cc8f2.md +++ b/agents/sage/work/window-plan/repin-5fa9cc8f2.md @@ -84,7 +84,7 @@ takes the `revision` from a read made just before it. | P0 | Mos | `cd $P && grep -E ' (business-check.mjs\|console-check.sh)$' $REPO/agents/sage/work/window-plan/repin-de352dfaf/SCRIPTS.sha256 \| sha256sum -c`: two OK lines. | | P1 | Mos | `node $P/business-check.mjs 8e7ea89a1e86447d26ec335e4b138acfd5130cbc`: LOAD_OK. After W0, the same for NEW: LOAD_OK, `HOLDS chief instance.name yes`, `HOLDS pm instance.name no`. REFUSED stops the window. | | P2 | Sage | `console-check.sh $NEW` against a stub Console of NEW on a scratch port, as in the 8e7ea89a1 window. CONSOLE_PASS before the window goes to Jason. | -| P3 | Darkwing | The scratch `--plan` for 5fa9cc8f2 with blob 4b16e848 (sage-1004), on a scratch business file that already has `"plugins": {"usage-source": ["transcript"]}`. It proves three things: the scratch `--plan` output, that the file loads under 5fa9cc8f2, and that it loads under 8e7ea89a1 as a rollback would load it (mos-0845 D3). Output in `agents/darkwing/work/queue-162/`; W3 cites the file. | +| P3 | Darkwing | The scratch `--plan` for 5fa9cc8f2 with blob 4b16e848 (sage-1004), on a scratch business file that already has `"plugins": {"usage-source": ["transcript"]}`. It proves three things: the scratch `--plan` output, that the file loads under 5fa9cc8f2, and that it loads under 8e7ea89a1 as a rollback would load it (mos-0845 D3). Done 2026-10-19 (sage-1008 reply): `agents/darkwing/work/queue-162/scratch-plan-5fa9cc8f2.txt` (sha256 af67b254…, exit 0), `scratch-load-check.txt` (4f72f5d6…, parts 1 and 2 LOAD_OK under 5fa9cc8f2 and 8e7ea89a1) on `scratch-business-A.json` (d4c109fa…), made from the committed example file (mos-0847). | ## The window, Jason present @@ -94,7 +94,7 @@ takes the `revision` from a read made just before it. | W1 | Jason, then Mos | PM-idle check. Jason: `mosaic agents --business mosaic-stack`; chief not `working`, pm not running. Mos: `mosaic launches list`. Nobody talks to the chief until W6 passes. Record `date -u +%FT%TZ` as the start stamp. Baseline reads, kept for W6: `$C_OLD names --business mosaic-stack --json` and `$C_OLD threads --business mosaic-stack --json` (both `[]` on 10-19), and `mosaic usage --business mosaic-stack --json` saved whole, for its `total` and `byRun` (U1, mos-0846). | | W2 | Jason | Usage source, OLD's setter. `$C_OLD plugins --business mosaic-stack --json`; note `revision`. Write PATCH as `{"revision": , "plugins": {"usage-source": ["transcript"]}}`, then `$C_OLD plugins set --file PATCH --business mosaic-stack`. Read again: `usage-source` is `["transcript"]` and no other kind is set. A refusal ends the window with nothing stopped and nothing to undo. | | W2b | Mos | `node $P/business-check.mjs 8e7ea89a1e86447d26ec335e4b138acfd5130cbc` and the same for NEW, on the patched file. Both LOAD_OK. A REFUSED stops the window; undo W2 as below. | -| W3 | Mos | `scripts/stack-release.sh activate 5fa9cc8f2c66b52408b652b59c3070f7210b44d0 mosaic-stack --plan`. Writes nothing. Its from, to, store schema, target schema, migration and needs lines must match P3's scratch output: from 8e7ea89a1, to 5fa9cc8f2, store schema 3h read from the store the running bus holds, target 3h, no migration step, no `--migrate` need, 78 commits. The bus, Console and CLI lines carry the pointer's flags; beyond those, only copy paths differ. Any other difference stops the window before W5 and goes to Mos. | +| W3 | Mos | `scripts/stack-release.sh activate 5fa9cc8f2c66b52408b652b59c3070f7210b44d0 mosaic-stack --plan`. Writes nothing. Its from, to, store schema, target schema, migration and needs lines must match P3's scratch output: from 8e7ea89a1, to 5fa9cc8f2, store schema 3h read from the store the running bus holds, target 3h, no migration step, no `--migrate` need, 78 commits. The bus, Console and CLI lines carry the pointer's flags; beyond those, only copy paths differ. P3's store line reads `3h (from the pointer; there is no store file)`, because the scratch root has no store; the live line names the held store, and the value 3h must match. Any other difference stops the window before W5 and goes to Mos. | | W4 | Mos | Drop-ins: `systemctl --user show mosaic-bus@mosaic-stack.service -p DropInPaths`. The pm.conf drop-in adds `--pm` only. A drop-in that sets ExecStart or WorkingDirectory makes activate refuse `drop-in-override`; Mos ends the window. | | W5 | Mos, on Mos's go, Jason present | `scripts/stack-release.sh activate 5fa9cc8f2c66b52408b652b59c3070f7210b44d0 mosaic-stack --pm`. No `--migrate`. Exit 0 and a final log line `result` `ok`. Record the activation id. Exit 1 means the gate failed and the run rolled back to OLD; exit 2 means the rollback failed too: see Stop conditions. | | W5b | Jason | Channel, NEW's setter. `$C_NEW plugins --business mosaic-stack --json`; note `revision`. PATCH `{"revision": , "plugins": {"channel": ["cli", "webui"]}}`, then `$C_NEW plugins set --file PATCH --business mosaic-stack`. Read again: `channel` is `["cli", "webui"]` and `usage-source` is still `["transcript"]`. | diff --git a/agents/sage/work/window-plan/repin-ca15d73e9.md b/agents/sage/work/window-plan/repin-ca15d73e9.md index bf82bc684..8f738fec2 100644 --- a/agents/sage/work/window-plan/repin-ca15d73e9.md +++ b/agents/sage/work/window-plan/repin-ca15d73e9.md @@ -51,7 +51,7 @@ after the window, with a `launch.limits.tokens.daily` entry, on Mos's go. | W0 | Mos | `cd $REPO && scripts/stack-copy.sh copy ca15d73e9fdcdcf66a10f86cdedeb2d6a08f2b00`. Note the full id. Then P1 for NEW. | | W1 | Jason, then Mos | PM-idle check as Window A. Record the start stamp. Baseline reads: `$C_OLD names --business mosaic-stack --json`, `$C_OLD threads --business mosaic-stack --json` and `mosaic usage --business mosaic-stack --json` saved whole, for its `total` and `byRun` (U1, mos-0846). Nobody talks to the chief until W6 passes, so no turn writes a usage record (D3). | | W2 | Mos | `scripts/stack-release.sh status mosaic-stack`: pointer on 5fa9cc8f2, schema 3h, last line ok. | -| W3 | Mos | `scripts/stack-release.sh activate ca15d73e9fdcdcf66a10f86cdedeb2d6a08f2b00 mosaic-stack --plan`. It must match P3 on from 5fa9cc8f2, to ca15d73e9, store schema 3h read from the store the running bus holds, target 3i, one migration step 3h to 3i, needs `--migrate`, needs Jason present, 8 commits. Any other difference stops the window before W5. | +| W3 | Mos | `scripts/stack-release.sh activate ca15d73e9fdcdcf66a10f86cdedeb2d6a08f2b00 mosaic-stack --plan`. It must match P3 on from 5fa9cc8f2, to ca15d73e9, store schema 3h read from the store the running bus holds, target 3i, one migration step 3h to 3i, needs `--migrate`, needs Jason present, 8 commits. P3's `--plan` part (`scratch-plan-ca15d73e9.txt`, sha256 eb2f1694…) reads its store schema from the pointer, because that scratch root has no store; the value 3h must match. Any other difference stops the window before W5. | | W4 | Mos | Drop-ins, as Window A. | | W5 | Mos, on Mos's go, Jason present | `scripts/stack-release.sh activate ca15d73e9fdcdcf66a10f86cdedeb2d6a08f2b00 mosaic-stack --pm --migrate`. Exit 0 and a final `result` `ok`. Record the activation id and the backup path and stamp it prints. | | W6 | Mos | The checks below. |