From 91e3696efd7690d184213a7d9edea2352a98d3e8 Mon Sep 17 00:00:00 2001 From: Jason Woltje Date: Wed, 21 Oct 2026 14:43:14 -0500 Subject: [PATCH] gander: publish row 196 rebase gate and migration audit records --- agents/gander/work/queue-196/PROGRESS.md | 6 + .../gander/work/queue-196/r2/run3/driver.diff | 144 + .../work/queue-196/r2/run3/product.diff | 51 + .../r2/run3/progress-before-r3.patch | 9 + .../work/queue-196/r3/gate/base-driver.log | 2 + .../queue-196/r3/gate/base-interpreter.log | 13 + .../work/queue-196/r3/gate/base-release.log | 9 + .../work/queue-196/r3/gate/base-results.json | 21 + agents/gander/work/queue-196/r3/gate/base.mjs | 9 + .../gander/work/queue-196/r3/gate/driver.log | 4 + .../gander/work/queue-196/r3/gate/driver.mjs | 81 + .../work/queue-196/r3/gate/killers/M25.txt | 29 + .../work/queue-196/r3/gate/killers/M28.txt | 45 + .../work/queue-196/r3/gate/killers/M28b.txt | 39 + .../work/queue-196/r3/gate/killers/M29.txt | 37 + .../queue-196/r3/gate/killers/results.json | 117 + .../work/queue-196/r3/gate/sso-driver.log | 2 + .../work/queue-196/r3/gate/sso-green.log | 9 + .../work/queue-196/r3/gate/sso-proof.mjs | 15 + .../gander/work/queue-196/r3/gate/sso-red.log | 38 + .../queue-196/r3/gate/sso-restoration.json | 4 + .../work/queue-196/r3/gate/sso-results.json | 16 + .../gander/work/queue-196/r3/gate/tmpdir.txt | 1 + .../queue-196/r3/gate/withdrawal-sweep.json | 9 + .../work/queue-196/r3/gate/withdrawal.json | 4 + .../work/queue-196/r3/mutated-paths-stat.txt | 0 .../work/queue-196/r3/patch-id-after.txt | 1 + .../work/queue-196/r3/patch-id-before.txt | 1 + agents/gander/work/queue-196/r3/paths.txt | 2 + .../queue-196/r3/product-patch-id-after.txt | 1 + .../queue-196/r3/product-patch-id-before.txt | 1 + .../queue-196/r3/progress-before-r4.patch | 10 + .../gander/work/queue-196/r3/range-diff.txt | 6 + agents/gander/work/queue-196/r4/REBASE.md | 47 + agents/gander/work/queue-196/r4/audit.mjs | 8 + .../work/queue-196/r4/candidate-files.json | 979 +++++ .../gander/work/queue-196/r4/conflicts.diff | 40 + .../gander/work/queue-196/r4/gate/RESULTS.md | 45 + .../work/queue-196/r4/gate/base-driver.log | 2 + .../work/queue-196/r4/gate/base-results.json | 20 + .../work/queue-196/r4/gate/base-tester.log | 22 + .../work/queue-196/r4/gate/base-transport.log | 12 + agents/gander/work/queue-196/r4/gate/base.mjs | 9 + agents/gander/work/queue-196/r4/gate/bus.log | 3751 +++++++++++++++++ .../queue-196/r4/gate/categorized-sweep.json | 136 + .../queue-196/r4/gate/consolidated-kills.json | 398 ++ .../gander/work/queue-196/r4/gate/driver.log | 3 + .../gander/work/queue-196/r4/gate/driver.mjs | 81 + .../work/queue-196/r4/gate/killers/M13.txt | 55 + .../work/queue-196/r4/gate/killers/M17.txt | 67 + .../work/queue-196/r4/gate/killers/M22.txt | 33 + .../queue-196/r4/gate/killers/results.json | 74 + .../work/queue-196/r4/gate/process-sweep.json | 55 + .../work/queue-196/r4/gate/sso-driver.log | 2 + .../work/queue-196/r4/gate/sso-green.log | 9 + .../work/queue-196/r4/gate/sso-proof.mjs | 15 + .../gander/work/queue-196/r4/gate/sso-red.log | 37 + .../queue-196/r4/gate/sso-restoration.json | 4 + .../work/queue-196/r4/gate/sso-results.json | 16 + .../work/queue-196/r4/gate/target-shas.json | 212 + .../work/queue-196/r4/gate/target-shas.mjs | 5 + .../gander/work/queue-196/r4/gate/tmpdir.txt | 1 + .../gander/work/queue-196/r4/gate/webui.log | 1863 ++++++++ .../work/queue-196/r4/gate/whole-driver.log | 5 + .../work/queue-196/r4/gate/whole-plan.json | 612 +++ .../work/queue-196/r4/gate/whole-results.json | 306 ++ .../gander/work/queue-196/r4/gate/whole.mjs | 23 + .../work/queue-196/r4/mutated-paths-stat.txt | 3 + .../work/queue-196/r4/patch-id-after.txt | 1 + .../work/queue-196/r4/patch-id-before.txt | 1 + .../gander/work/queue-196/r4/range-diff.txt | 45 + .../work/queue-196/r4/test-patch-id-after.txt | 1 + .../queue-196/r4/test-patch-id-before.txt | 1 + .../work/queue-196/r4/uniqueness-final.json | 372 ++ .../work/queue-196/r4/whole-test-union.json | 45 + .../work/queue-196/r5/TESTER-PORT-AUDIT.md | 50 + .../queue-196/r5/assertions-unchanged.json | 7 + .../work/queue-196/r5/commit-patch-id.txt | 1 + agents/gander/work/queue-196/r5/commit.diff | 23 + .../work/queue-196/r5/product-shas.json | 2984 +++++++++++++ .../work/queue-196/r5/test-patch-id.txt | 1 + .../queue-196/r5/tester-port-occurrences.json | 232 + 82 files changed, 13450 insertions(+) create mode 100644 agents/gander/work/queue-196/r2/run3/driver.diff create mode 100644 agents/gander/work/queue-196/r2/run3/product.diff create mode 100644 agents/gander/work/queue-196/r2/run3/progress-before-r3.patch create mode 100644 agents/gander/work/queue-196/r3/gate/base-driver.log create mode 100644 agents/gander/work/queue-196/r3/gate/base-interpreter.log create mode 100644 agents/gander/work/queue-196/r3/gate/base-release.log create mode 100644 agents/gander/work/queue-196/r3/gate/base-results.json create mode 100644 agents/gander/work/queue-196/r3/gate/base.mjs create mode 100644 agents/gander/work/queue-196/r3/gate/driver.log create mode 100644 agents/gander/work/queue-196/r3/gate/driver.mjs create mode 100644 agents/gander/work/queue-196/r3/gate/killers/M25.txt create mode 100644 agents/gander/work/queue-196/r3/gate/killers/M28.txt create mode 100644 agents/gander/work/queue-196/r3/gate/killers/M28b.txt create mode 100644 agents/gander/work/queue-196/r3/gate/killers/M29.txt create mode 100644 agents/gander/work/queue-196/r3/gate/killers/results.json create mode 100644 agents/gander/work/queue-196/r3/gate/sso-driver.log create mode 100644 agents/gander/work/queue-196/r3/gate/sso-green.log create mode 100644 agents/gander/work/queue-196/r3/gate/sso-proof.mjs create mode 100644 agents/gander/work/queue-196/r3/gate/sso-red.log create mode 100644 agents/gander/work/queue-196/r3/gate/sso-restoration.json create mode 100644 agents/gander/work/queue-196/r3/gate/sso-results.json create mode 100644 agents/gander/work/queue-196/r3/gate/tmpdir.txt create mode 100644 agents/gander/work/queue-196/r3/gate/withdrawal-sweep.json create mode 100644 agents/gander/work/queue-196/r3/gate/withdrawal.json create mode 100644 agents/gander/work/queue-196/r3/mutated-paths-stat.txt create mode 100644 agents/gander/work/queue-196/r3/patch-id-after.txt create mode 100644 agents/gander/work/queue-196/r3/patch-id-before.txt create mode 100644 agents/gander/work/queue-196/r3/paths.txt create mode 100644 agents/gander/work/queue-196/r3/product-patch-id-after.txt create mode 100644 agents/gander/work/queue-196/r3/product-patch-id-before.txt create mode 100644 agents/gander/work/queue-196/r3/progress-before-r4.patch create mode 100644 agents/gander/work/queue-196/r3/range-diff.txt create mode 100644 agents/gander/work/queue-196/r4/REBASE.md create mode 100644 agents/gander/work/queue-196/r4/audit.mjs create mode 100644 agents/gander/work/queue-196/r4/candidate-files.json create mode 100644 agents/gander/work/queue-196/r4/conflicts.diff create mode 100644 agents/gander/work/queue-196/r4/gate/RESULTS.md create mode 100644 agents/gander/work/queue-196/r4/gate/base-driver.log create mode 100644 agents/gander/work/queue-196/r4/gate/base-results.json create mode 100644 agents/gander/work/queue-196/r4/gate/base-tester.log create mode 100644 agents/gander/work/queue-196/r4/gate/base-transport.log create mode 100644 agents/gander/work/queue-196/r4/gate/base.mjs create mode 100644 agents/gander/work/queue-196/r4/gate/bus.log create mode 100644 agents/gander/work/queue-196/r4/gate/categorized-sweep.json create mode 100644 agents/gander/work/queue-196/r4/gate/consolidated-kills.json create mode 100644 agents/gander/work/queue-196/r4/gate/driver.log create mode 100644 agents/gander/work/queue-196/r4/gate/driver.mjs create mode 100644 agents/gander/work/queue-196/r4/gate/killers/M13.txt create mode 100644 agents/gander/work/queue-196/r4/gate/killers/M17.txt create mode 100644 agents/gander/work/queue-196/r4/gate/killers/M22.txt create mode 100644 agents/gander/work/queue-196/r4/gate/killers/results.json create mode 100644 agents/gander/work/queue-196/r4/gate/process-sweep.json create mode 100644 agents/gander/work/queue-196/r4/gate/sso-driver.log create mode 100644 agents/gander/work/queue-196/r4/gate/sso-green.log create mode 100644 agents/gander/work/queue-196/r4/gate/sso-proof.mjs create mode 100644 agents/gander/work/queue-196/r4/gate/sso-red.log create mode 100644 agents/gander/work/queue-196/r4/gate/sso-restoration.json create mode 100644 agents/gander/work/queue-196/r4/gate/sso-results.json create mode 100644 agents/gander/work/queue-196/r4/gate/target-shas.json create mode 100644 agents/gander/work/queue-196/r4/gate/target-shas.mjs create mode 100644 agents/gander/work/queue-196/r4/gate/tmpdir.txt create mode 100644 agents/gander/work/queue-196/r4/gate/webui.log create mode 100644 agents/gander/work/queue-196/r4/gate/whole-driver.log create mode 100644 agents/gander/work/queue-196/r4/gate/whole-plan.json create mode 100644 agents/gander/work/queue-196/r4/gate/whole-results.json create mode 100644 agents/gander/work/queue-196/r4/gate/whole.mjs create mode 100644 agents/gander/work/queue-196/r4/mutated-paths-stat.txt create mode 100644 agents/gander/work/queue-196/r4/patch-id-after.txt create mode 100644 agents/gander/work/queue-196/r4/patch-id-before.txt create mode 100644 agents/gander/work/queue-196/r4/range-diff.txt create mode 100644 agents/gander/work/queue-196/r4/test-patch-id-after.txt create mode 100644 agents/gander/work/queue-196/r4/test-patch-id-before.txt create mode 100644 agents/gander/work/queue-196/r4/uniqueness-final.json create mode 100644 agents/gander/work/queue-196/r4/whole-test-union.json create mode 100644 agents/gander/work/queue-196/r5/TESTER-PORT-AUDIT.md create mode 100644 agents/gander/work/queue-196/r5/assertions-unchanged.json create mode 100644 agents/gander/work/queue-196/r5/commit-patch-id.txt create mode 100644 agents/gander/work/queue-196/r5/commit.diff create mode 100644 agents/gander/work/queue-196/r5/product-shas.json create mode 100644 agents/gander/work/queue-196/r5/test-patch-id.txt create mode 100644 agents/gander/work/queue-196/r5/tester-port-occurrences.json diff --git a/agents/gander/work/queue-196/PROGRESS.md b/agents/gander/work/queue-196/PROGRESS.md index 792be51f7..07a1d8410 100644 --- a/agents/gander/work/queue-196/PROGRESS.md +++ b/agents/gander/work/queue-196/PROGRESS.md @@ -20,3 +20,9 @@ sage-1464 (2026-10-20T20:40Z): renewed bus/WebUI/CLI and M1-M29 slot is fifth, a sage-2051 / mos-1193 (2026-10-21T18:45Z) explicitly orders committing and fast-forward pushing the current row196 build before its deferred full verification, then rebasing onto a36523713 on new gander/row196-r2. This supersedes the earlier no-product-commit-before-suite gate for this preservation commit only. Full acceptance remains pending. No tests until Sage says clear. Subsequent batch order: M1-M29, bus, WebUI, CLI, every whole scripts/test-*.sh; TMPDIR must be created with mktemp under /mnt/storage/scratch/tmp, never /tmp. Preserve the old branch. Row252 design may proceed while waiting; no row252 code before Webby approves. sage-2058 clear: clean detached 64539c96b worktree, short scratch TMPDIR, busy && before starts, pipefail and tee, mutation restoration hash and Git-status checks. M1-M22 killed; M23 rejected by broad runtime SyntaxError classification despite passing node --check, 3 pass/2 fail in killer. Stopped, restored clean, slot returned gander-0031 18:51:50Z. No suites started. sage-2063 calls stop 1; driver fix separately committed, no rerun before next clear. r2/REBASE.md records all ten conflict resolutions. Row252 design drafted, no code. sage-2065 clear at 18:58:34Z: base killers 14/0, wall seconds interpreter 1.470, socket 1.528, peer 2.092, focused release 7.983. M23-M27 killed, no outer timeout. M28 survived because its generic first replacement now hits upstream sso_for_target, not the intended proof insertion. Stopped before M29 or any suite, restored every file and Git status clean; sweep found 0 leftover node/tee/Python readers. Slot handed back gander-0035 at 19:01:26Z. This is stop 2, awaiting Sage ruling; no mutation fix/rerun. r2/run2/SUMMARY.md and kill-table.json preserve counts and timings. Webby approved row252 design r1; nonblocking N1-N5 recorded in queue-252/BUILD-NOTES.md; code still waits on row196 landing and PRD amendment. +sage-2079 (2026-10-21T19:09:49Z) accepts product test commit 1bb1e8dd6 and driver 42b47f36c. M5 prior kill stands by identical mutated sha; narrowed M25 differs and reruns. Gate and Duckworth merge-scoped candidate is 1bb1e8dd6. Hold until Sage clear after Herb 215: first focused SSO RED/GREEN, then M25/M28/M28b/M29, then whole bus/WebUI/CLI and every whole scripts/test-*.sh. Third stop goes to Mos before another run. No tests started during this hold. +sage-2083: rebased six r2 commits onto origin/refactor 6096b051b on new gander/row196-r3, preserving r2. New pushed tip b1076c8b8, no conflicts. All six range-diff entries are =; aggregate patch-id before/after 81901f8d5fe07e7b941d398f9240e835df29cb64, product-test patch-id 533c50a4efc6e0dc8fa3b6da4b1456029bbda490. Requested diff-stat from 1bb1e8dd6 to r3 on all ten mutated paths is empty. Clean detached gate worktree pinned b1076c8b8, linked dependencies, fresh short scratch TMPDIR in r3/paths.txt. Reported gander-0041. Hold for Sage clear; no tests started. Order remains SSO RED/GREEN, narrowed M25/M28/M28b/M29, whole bus/WebUI/CLI and all scripts/test-*.sh. Third stop goes to Mos. +sage-2096 r4 grant active on f8a59e6aa, TMPDIR r4/gate/tmpdir.txt, clean detached /mnt/storage/scratch/tmp/g196-tree-tn651z. Per-target blob comparison: M13/M22 server and M17 broker changed; other 27 blobs equal r3 (including successful precise M25/M28/M28b/M29). Reported gander-0044. Repeated SSO RED 4.186 s/GREEN 4.328 s, restored clean. Fresh base transport 1.841 s and tester 3.049 s passed; M13/M17/M22 killed, no timeout, restored hash/status clean. Whole gate process session 55377 runs sequentially via r4/gate/whole.mjs; bus 622/0/0 in 36.272 s, WebUI currently active. Next: CLI, eight whole files, ten whole shell suites. No package/shell results carried. On any stop report Sage and Mos before rerun (would be mos-1166 stop 3; sage-2093 withdrawal did not count). Need grant return with totals/times/sweep, then write r4 manifest for Duckworth. Latest sent message gander-0044; next 0045. +sage-2093 withdrew r3 grant due row215 landing e54e05463, not a mos-1166 stop. By inspection its SSO demonstration and four mutants had completed; no suites began, sweep 0. Rebased six commits onto e54 on preserved new r4 f8a59e6aa. Two conflicts: BUILD-LOG append and server imports; retained both histories/LIBRARY_VERBS plus peer helpers. r4/REBASE.md and conflicts.diff record every hunk; eight additional whole test files in whole-test-union.json. No gate until sage-2096 clear. +sage-2096 ended at stop 3: whole bus 622/0/0 in 36.272 s; whole WebUI 303/1/1 in 113.151 s, failure library-cli.test's retired tester-port activation. CLI, eight extra files and shells unrun. SSO RED/GREEN passed and refreshed M13/M17/M22 killed; other 27 target hashes matched r3. Reported Sage gander-0045 and Mos gander-0046. Sweep correction gander-0047/48: broad scope 9 pre-existing harness helpers (all started 18:45), gate leftovers 0; raw and categorized evidence retained, Sage accepted in sage-2111. No fourth run without Mos/Sage grant. +mos-1198 approves fourth run after Gizmoduck 250 r2 with Sage grant, r5 only activation flag change and BUILD note, exact name/assertions retained. New branch r5 a415de022 is one commit on retained r4; wider unpublished draft preserved on gander/row196-r5-draft. All 595 product blobs match r4 by SHA256. r5/TESTER-PORT-AUDIT.md lists scripts and tests, including case2-unit/case1-accept for Sage's chained follow-up. Sent gander-0049/50. No tests since stop3. mos-1199 requires all queue196 records committed/pushed before fourth grant, no product or node_modules changes. Next message gander-0051. diff --git a/agents/gander/work/queue-196/r2/run3/driver.diff b/agents/gander/work/queue-196/r2/run3/driver.diff new file mode 100644 index 000000000..17432ecaa --- /dev/null +++ b/agents/gander/work/queue-196/r2/run3/driver.diff @@ -0,0 +1,144 @@ +diff --git a/agents/gander/work/queue-196/BUILD.md b/agents/gander/work/queue-196/BUILD.md +index ce3dde23e..77454ecbd 100644 +--- a/agents/gander/work/queue-196/BUILD.md ++++ b/agents/gander/work/queue-196/BUILD.md +@@ -104,3 +104,4 @@ changes are planned before the batch. M1-M29 remain prepared and unexecuted. + 2026-10-21 r2 stop 2: base killer invocations 14/0 under 30 seconds each; M23-M27 killed, M28 survived due rebase making its generic mutation target the earlier SSO insertion. No M29 or golden suite run. Every restored hash and Git status clean; leftover process sweep count 0. Slot returned to Sage in gander-0035. Full per-step counts, base/mutant times and kill table in r2/run2/. Awaiting ruling before any fix or rerun; third stop goes to Mos. + + 2026-10-21 sage-2072 product test: added the merge-scoped SSO/socket conversion case without --send, asserting pointer argv order, rendered unit argv order, status agreement and no secret-file reads. Removing socket from sso_for_target is its planned RED case (M28b). Focused RED/GREEN remains pending the busy gate: Herb's suite was active at the preflight, so no test started. Runtime code unchanged. Mos mos-1197 owner-subject ruling recorded in queue-252/BUILD-NOTES.md. ++2026-10-21 sage-2072/2077 driver: unique string-target guard preflights every definition before any tests and before creating scratch state; M28 names without_proof, M28b names kept, M5 names the parse catch, M25 names append flags, M29 uses the unique full line. Static audit accepts all 30 definitions; zero/duplicate targets refuse. Against 64539c96b, M5 old/narrowed bytes match; M25 differs and joins the next batch. No mutation tests ran in this static check. +diff --git a/agents/gander/work/queue-196/mutant-guard.mjs b/agents/gander/work/queue-196/mutant-guard.mjs +new file mode 100644 +index 000000000..9c8b12ddf +--- /dev/null ++++ b/agents/gander/work/queue-196/mutant-guard.mjs +@@ -0,0 +1,16 @@ ++// Synchronous mutation preparation only. No file is written until every replacement is unique. ++export function guardMutation(input, mutate, { auditOnly = false } = {}) { ++ const targets = []; ++ class UniqueText extends String { ++ replace(target, replacement) { return this.applyReplacement('replace', target, replacement); } ++ replaceAll(target, replacement) { return this.applyReplacement('replaceAll', target, replacement); } ++ applyReplacement(method, target, replacement) { ++ if (typeof target !== 'string' || !target) throw Error('mutation target must be a nonempty string'); ++ const source = String(this), count = source.split(target).length - 1; ++ targets.push({ method, target, count }); ++ if (count !== 1 && !auditOnly) throw Error(`mutation target occurs ${count} times, expected exactly once: ${target}`); ++ return new UniqueText(String.prototype[method].call(source, target, replacement)); ++ } ++ } ++ return { text: String(mutate(new UniqueText(input))), targets }; ++} +diff --git a/agents/gander/work/queue-196/mutants.mjs b/agents/gander/work/queue-196/mutants.mjs +index a3342f63d..583fc4101 100644 +--- a/agents/gander/work/queue-196/mutants.mjs ++++ b/agents/gander/work/queue-196/mutants.mjs +@@ -1,3 +1,4 @@ ++import { guardMutation } from './mutant-guard.mjs'; + // Authorized batch only. Mutate isolated scratch copies, never the candidate or installed tree. + import {mkdtempSync,cpSync,readFileSync,writeFileSync,rmSync,symlinkSync,existsSync,mkdirSync} from 'node:fs'; + import {tmpdir} from 'node:os';import {join,resolve} from 'node:path'; +@@ -5,7 +6,6 @@ import {spawnSync,execFileSync} from 'node:child_process';import {createHash} fr + import {fileURLToPath} from 'node:url'; + const root=fileURLToPath(new URL('../../../../',import.meta.url)); + const out=join(root,'agents/gander/work/queue-196/evidence/mutants');mkdirSync(out,{recursive:true}); +-const scratch=mkdtempSync(join(tmpdir(),'g196-mut-')); + const p='packages/bus/src/principal.mjs',h='packages/bus/src/human.mjs',w='packages/webui/src/tester-socket.mjs',s='packages/bus/src/server.mjs',peer='packages/bus/src/peercred.mjs'; + const principal='packages/bus/tests/principal.test.mjs',socket='packages/webui/tests/tester-socket.test.mjs',transport='packages/bus/tests/peer-transport.test.mjs',interpreter='packages/bus/tests/interpreter.test.mjs'; + const release=['--test-name-pattern=row196 explicit socket','packages/cli/tests/stack-release.test.mjs']; +@@ -14,7 +14,7 @@ const specs=[ + ['M2',w,'socket mode widened',socket,t=>t.replace('chmodSync(temporary, 0o600)','chmodSync(temporary, 0o666)')], + ['M3','packages/webui/src/serve.mjs','sign-in accepted on tester',socket,t=>t.replace("if (tester && (Object.hasOwn(req.headers, 'authorization')", "if (false && (Object.hasOwn(req.headers, 'authorization')")], + ['M4',p,'copied PID accepted',principal,t=>t.replace('peer.pid !== proof.pid','false')], +- ['M5',peer,'helper parse error ignored','packages/bus/tests/peercred.test.mjs',t=>t.replace('} catch { finish(true); }','} catch { finish(false, {pid:2,uid:0,gid:0}); }')], ++ ['M5',peer,'helper parse error ignored','packages/bus/tests/peercred.test.mjs',t=>t.replace('finish(false, Object.freeze(p));\n } catch { finish(true); }','finish(false, Object.freeze(p));\n } catch { finish(false, {pid:2,uid:0,gid:0}); }')], + ['M6',p,'foreign uid accepted',principal,t=>t.replace('peer.uid !== process.getuid()','false')], + ['M7',w,'unsafe parent accepted',socket,t=>t.replace('(dir.mode & 0o077)','false')], + ['M8',h,'agent environment walk skipped',principal,t=>t.replace('current.env !== null && MARKERS.some','false && MARKERS.some')], +@@ -34,19 +34,25 @@ const specs=[ + ['M22',s,'cap requests invoke helper',transport,t=>t.replace(' if (kind) {',' if (r.cap) await peers.read(socket);\n if (kind) {')], + ['M23','packages/bus/src/interpreter.mjs','restart retains stale identity',interpreter,t=>t.replace('export function recordInterpreterStart(directory, record) {','export function recordInterpreterStart(directory, record) {\n try { readFileSync(join(directory,"peercred-starts.jsonl")); return; } catch {}')], + ['M24',w,'listener binds final path directly',socket,t=>t.replace("const temporary = join(parent, '.' + randomBytes(4).toString('hex') + '.s');",'const temporary = path;')], +- ['M25','packages/bus/src/interpreter.mjs','FIFO receipt blocks before type refusal',['--test-name-pattern=non-regular startup receipt',interpreter],t=>t.replaceAll(' | constants.O_NONBLOCK','')], ++ ['M25','packages/bus/src/interpreter.mjs','FIFO receipt blocks before type refusal',['--test-name-pattern=non-regular startup receipt',interpreter],t=>t.replace('constants.O_WRONLY | constants.O_APPEND | constants.O_CREAT | constants.O_NOFOLLOW | constants.O_NONBLOCK, 0o600','constants.O_WRONLY | constants.O_APPEND | constants.O_CREAT | constants.O_NOFOLLOW, 0o600')], + ['M26',peer,'missing helper accepted at startup',['--test-name-pattern=missing or non-regular peer helper','packages/bus/tests/peercred.test.mjs'],t=>t.replace('if (!s.isFile() || s.isSymbolicLink()) throw Error();','if (false) throw Error();').replace('catch { throw refused(); }','catch {}')], + ['M27',peer,'shutdown returns before helpers are reaped',['--test-name-pattern=shutdown waits','packages/bus/tests/peercred.test.mjs'],t=>t.replace(" await Promise.all([...children].map(child => new Promise(resolve => {\n child.once('close', resolve);\n child.kill('SIGKILL');\n })));"," for (const child of children) child.kill('SIGKILL');")], +- ['M28','scripts/stack-release.sh','proof pair placed after tester socket flag',release,t=>t.replace('--send | --tester-port | --tester-socket) break','--send | --tester-port) break')], +- ['M29','scripts/stack-release.sh','unsafe tester path reaches service stop',release,t=>t.split('\n').filter(line=>!line.includes('|| check_refuse tester-socket-path')).join('\n')], ++ ['M28','scripts/stack-release.sh','proof pair placed after tester socket flag',release,t=>t.replace('case "${without_proof[i]}" in --send | --tester-port | --tester-socket) break','case "${without_proof[i]}" in --send | --tester-port) break')], ++ ['M28b','scripts/stack-release.sh','SSO placed after tester socket flag',['--test-name-pattern=row196 SSO socket','packages/cli/tests/stack-release.test.mjs'],t=>t.replace('case "${kept[i]}" in --send | --tester-port | --tester-socket) break','case "${kept[i]}" in --send | --tester-port) break')], ++ ['M29','scripts/stack-release.sh','unsafe tester path reaches service stop',release,t=>t.replace(t.split('\n').find(line=>line.includes('|| check_refuse tester-socket-path'))+'\n','')], + ]; + const hash=x=>createHash('sha256').update(x).digest('hex'); + const results=[]; ++for (const [id,file,,,mutate] of specs) { ++ try { guardMutation(readFileSync(join(root,file),'utf8'),mutate); } ++ catch(error) { throw Error(id+': '+error.message); } ++} ++const scratch=mkdtempSync(join(tmpdir(),'g196-mut-')); + try { + for(const name of ['packages','scripts','adapters','roles','contracts','RELEASE','package.json','package-lock.json','.git'])if(existsSync(join(root,name)))cpSync(join(root,name),join(scratch,name),{recursive:true,filter:src=>!src.includes('/node_modules/')&&!src.endsWith('/node_modules')}); + symlinkSync(join(root,'node_modules'),join(scratch,'node_modules')); + for(const [id,file,description,test,mutate] of specs) { +- const at=join(scratch,file),original=readFileSync(at,'utf8'),before=hash(original),changed=mutate(original); ++ const at=join(scratch,file),original=readFileSync(at,'utf8'),before=hash(original),changed=guardMutation(original,mutate).text; + if(changed===original)throw Error(id+' did not change bytes'); + writeFileSync(at,changed); + const syntax=spawnSync(file.endsWith('.sh')?'bash':process.execPath,[file.endsWith('.sh')?'-n':'--check',at],{encoding:'utf8'}); +diff --git a/agents/gander/work/queue-196/r2/driver.mjs b/agents/gander/work/queue-196/r2/driver.mjs +index 508fa4ad3..44b8b1988 100644 +--- a/agents/gander/work/queue-196/r2/driver.mjs ++++ b/agents/gander/work/queue-196/r2/driver.mjs +@@ -1,3 +1,4 @@ ++import { guardMutation } from '../mutant-guard.mjs'; + // Authorized batch only. Mutate isolated scratch copies, never the candidate or installed tree. + import {mkdtempSync,cpSync,readFileSync,writeFileSync,rmSync,symlinkSync,existsSync,mkdirSync} from 'node:fs'; + import {tmpdir} from 'node:os';import {join,resolve} from 'node:path'; +@@ -5,7 +6,6 @@ import {spawnSync,execFileSync} from 'node:child_process';import {createHash} fr + import {fileURLToPath} from 'node:url'; + const root='/mnt/storage/scratch/tmp/g196-tree-tn651z'; + const out='/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-196/r2/mutants';mkdirSync(out,{recursive:true}); +-const scratch=mkdtempSync(join(tmpdir(),'g196-mut-')); + const p='packages/bus/src/principal.mjs',h='packages/bus/src/human.mjs',w='packages/webui/src/tester-socket.mjs',s='packages/bus/src/server.mjs',peer='packages/bus/src/peercred.mjs'; + const principal='packages/bus/tests/principal.test.mjs',socket='packages/webui/tests/tester-socket.test.mjs',transport='packages/bus/tests/peer-transport.test.mjs',interpreter='packages/bus/tests/interpreter.test.mjs'; + const release=['--test-name-pattern=row196 explicit socket','packages/cli/tests/stack-release.test.mjs']; +@@ -14,7 +14,7 @@ const specs=[ + ['M2',w,'socket mode widened',socket,t=>t.replace('chmodSync(temporary, 0o600)','chmodSync(temporary, 0o666)')], + ['M3','packages/webui/src/serve.mjs','sign-in accepted on tester',socket,t=>t.replace("if (tester && (Object.hasOwn(req.headers, 'authorization')", "if (false && (Object.hasOwn(req.headers, 'authorization')")], + ['M4',p,'copied PID accepted',principal,t=>t.replace('peer.pid !== proof.pid','false')], +- ['M5',peer,'helper parse error ignored','packages/bus/tests/peercred.test.mjs',t=>t.replace('} catch { finish(true); }','} catch { finish(false, {pid:2,uid:0,gid:0}); }')], ++ ['M5',peer,'helper parse error ignored','packages/bus/tests/peercred.test.mjs',t=>t.replace('finish(false, Object.freeze(p));\n } catch { finish(true); }','finish(false, Object.freeze(p));\n } catch { finish(false, {pid:2,uid:0,gid:0}); }')], + ['M6',p,'foreign uid accepted',principal,t=>t.replace('peer.uid !== process.getuid()','false')], + ['M7',w,'unsafe parent accepted',socket,t=>t.replace('(dir.mode & 0o077)','false')], + ['M8',h,'agent environment walk skipped',principal,t=>t.replace('current.env !== null && MARKERS.some','false && MARKERS.some')], +@@ -34,20 +34,26 @@ const specs=[ + ['M22',s,'cap requests invoke helper',transport,t=>t.replace(' if (kind) {',' if (r.cap) await peers.read(socket);\n if (kind) {')], + ['M23','packages/bus/src/interpreter.mjs','restart retains stale identity',interpreter,t=>t.replace('export function recordInterpreterStart(directory, record) {','export function recordInterpreterStart(directory, record) {\n try { readFileSync(join(directory,"peercred-starts.jsonl")); return; } catch {}')], + ['M24',w,'listener binds final path directly',socket,t=>t.replace("const temporary = join(parent, '.' + randomBytes(4).toString('hex') + '.s');",'const temporary = path;')], +- ['M25','packages/bus/src/interpreter.mjs','FIFO receipt blocks before type refusal',['--test-name-pattern=non-regular startup receipt',interpreter],t=>t.replaceAll(' | constants.O_NONBLOCK','')], ++ ['M25','packages/bus/src/interpreter.mjs','FIFO receipt blocks before type refusal',['--test-name-pattern=non-regular startup receipt',interpreter],t=>t.replace('constants.O_WRONLY | constants.O_APPEND | constants.O_CREAT | constants.O_NOFOLLOW | constants.O_NONBLOCK, 0o600','constants.O_WRONLY | constants.O_APPEND | constants.O_CREAT | constants.O_NOFOLLOW, 0o600')], + ['M26',peer,'missing helper accepted at startup',['--test-name-pattern=missing or non-regular peer helper','packages/bus/tests/peercred.test.mjs'],t=>t.replace('if (!s.isFile() || s.isSymbolicLink()) throw Error();','if (false) throw Error();').replace('catch { throw refused(); }','catch {}')], + ['M27',peer,'shutdown returns before helpers are reaped',['--test-name-pattern=shutdown waits','packages/bus/tests/peercred.test.mjs'],t=>t.replace(" await Promise.all([...children].map(child => new Promise(resolve => {\n child.once('close', resolve);\n child.kill('SIGKILL');\n })));"," for (const child of children) child.kill('SIGKILL');")], +- ['M28','scripts/stack-release.sh','proof pair placed after tester socket flag',release,t=>t.replace('--send | --tester-port | --tester-socket) break','--send | --tester-port) break')], +- ['M29','scripts/stack-release.sh','unsafe tester path reaches service stop',release,t=>t.split('\n').filter(line=>!line.includes('|| check_refuse tester-socket-path')).join('\n')], ++ ['M28','scripts/stack-release.sh','proof pair placed after tester socket flag',release,t=>t.replace('case "${without_proof[i]}" in --send | --tester-port | --tester-socket) break','case "${without_proof[i]}" in --send | --tester-port) break')], ++ ['M28b','scripts/stack-release.sh','SSO placed after tester socket flag',['--test-name-pattern=row196 SSO socket','packages/cli/tests/stack-release.test.mjs'],t=>t.replace('case "${kept[i]}" in --send | --tester-port | --tester-socket) break','case "${kept[i]}" in --send | --tester-port) break')], ++ ['M29','scripts/stack-release.sh','unsafe tester path reaches service stop',release,t=>t.replace(t.split('\n').find(line=>line.includes('|| check_refuse tester-socket-path'))+'\n','')], + ]; + const hash=x=>createHash('sha256').update(x).digest('hex'); + const results=[]; ++for (const [id,file,,,mutate] of specs) { ++ try { guardMutation(readFileSync(join(root,file),'utf8'),mutate); } ++ catch(error) { throw Error(id+': '+error.message); } ++} ++const scratch=mkdtempSync(join(tmpdir(),'g196-mut-')); + try { + for(const name of ['packages','scripts','adapters','roles','contracts','RELEASE','package.json','package-lock.json','.gitignore'])if(existsSync(join(root,name)))cpSync(join(root,name),join(scratch,name),{recursive:true,filter:src=>!src.includes('/node_modules/')&&!src.endsWith('/node_modules')}); + symlinkSync(join(root,'node_modules'),join(scratch,'node_modules')); + for(const args of [['init','-q'],['add','.'],['-c','user.name=fixture','-c','user.email=fixture@invalid','-c','commit.gpgsign=false','-c','core.hooksPath=/dev/null','commit','-qm','candidate snapshot']])execFileSync('git',args,{cwd:scratch}); + for(const [id,file,description,test,mutate] of specs) { +- const at=join(scratch,file),original=readFileSync(at,'utf8'),before=hash(original),changed=mutate(original); ++ const at=join(scratch,file),original=readFileSync(at,'utf8'),before=hash(original),changed=guardMutation(original,mutate).text; + if(changed===original)throw Error(id+' did not change bytes'); + writeFileSync(at,changed); + const syntax=spawnSync(file.endsWith('.sh')?'bash':process.execPath,[file.endsWith('.sh')?'-n':'--check',at],{encoding:'utf8'}); diff --git a/agents/gander/work/queue-196/r2/run3/product.diff b/agents/gander/work/queue-196/r2/run3/product.diff new file mode 100644 index 000000000..3dd6cfafa --- /dev/null +++ b/agents/gander/work/queue-196/r2/run3/product.diff @@ -0,0 +1,51 @@ +diff --git a/agents/gander/work/queue-196/BUILD.md b/agents/gander/work/queue-196/BUILD.md +index 693840d15..ce3dde23e 100644 +--- a/agents/gander/work/queue-196/BUILD.md ++++ b/agents/gander/work/queue-196/BUILD.md +@@ -102,3 +102,5 @@ changes are planned before the batch. M1-M29 remain prepared and unexecuted. + 2026-10-21 sage-2063: driver uses only node --check for syntax validity; runtime test failures count as kills, and the r2 driver records GNU timeout process-group TERM/KILL exits so blocked descendants cannot survive. No rerun before next clear. + + 2026-10-21 r2 stop 2: base killer invocations 14/0 under 30 seconds each; M23-M27 killed, M28 survived due rebase making its generic mutation target the earlier SSO insertion. No M29 or golden suite run. Every restored hash and Git status clean; leftover process sweep count 0. Slot returned to Sage in gander-0035. Full per-step counts, base/mutant times and kill table in r2/run2/. Awaiting ruling before any fix or rerun; third stop goes to Mos. ++ ++2026-10-21 sage-2072 product test: added the merge-scoped SSO/socket conversion case without --send, asserting pointer argv order, rendered unit argv order, status agreement and no secret-file reads. Removing socket from sso_for_target is its planned RED case (M28b). Focused RED/GREEN remains pending the busy gate: Herb's suite was active at the preflight, so no test started. Runtime code unchanged. Mos mos-1197 owner-subject ruling recorded in queue-252/BUILD-NOTES.md. +diff --git a/agents/gander/work/queue-252/BUILD-NOTES.md b/agents/gander/work/queue-252/BUILD-NOTES.md +index a62689135..0f767505a 100644 +--- a/agents/gander/work/queue-252/BUILD-NOTES.md ++++ b/agents/gander/work/queue-252/BUILD-NOTES.md +@@ -25,3 +25,9 @@ Next review is the manifest. No claim of implementation or live enablement. + - N5: Extend readProcess's explicit environment allowlist for the Console nonce + and subject metadata keys. Test missing/mismatched keys and distinct namespaces; + J5 must reach that check. No token or cookie enters that environment or logs. ++ ++Mos ruling mos-1197, relayed by sage-2072 (2026-10-21T19:04:12Z): on dragon-lin, ++console.sso contains only Jason's sub, so one configured subject is one owner. ++No second subject is added without Jason. Host .54 is covered by #430. There ++is no Jason question now. This supersedes N1's proposed amendment question ++above; N2-N5 remain implementation items for the code round. +diff --git a/packages/cli/tests/stack-release.test.mjs b/packages/cli/tests/stack-release.test.mjs +index 5d114d463..485db7ca0 100644 +--- a/packages/cli/tests/stack-release.test.mjs ++++ b/packages/cli/tests/stack-release.test.mjs +@@ -2300,3 +2300,22 @@ test('row196 explicit socket conversion refuses inherited TCP before stop and ro + r=await run(long,'activate',C1,'acme','--tester-socket'); + assert.equal(r.code,3,r.out+r.err);assert.match(r.err,/tester-socket-path/);assert.deepEqual(startsStops(long,before),[]); + }); ++ ++// Row196 merge guard: without --send, SSO insertion must still precede the socket flag. ++test('row196 SSO socket conversion pins pointer and unit argv order without send',async t=>{ ++ const e=await mk(t);await seedPreview(e,{copy:B});await ssoConfig(e); ++ const file=join(COPIES,C1,'packages/webui/src/cli.mjs'),original=readFileSync(file,'utf8'); ++ chmodSync(file,0o644);writeFileSync(file,original+'\n// MOSAIC_TESTER_SOCKET_V1\n// --tester-socket\n');chmodSync(file,0o444); ++ t.after(()=>{chmodSync(file,0o644);writeFileSync(file,original);chmodSync(file,0o444);}); ++ const module=join(COPIES,C1,'packages/bus/src/interpreter.mjs'); ++ chmodSync(dirname(module),0o755); ++ writeFileSync(module,'export const inspectInterpreter=()=>({path:"/usr/bin/python3",sha256:"fixture"});export const verifyInterpreterReceipt=()=>true;\n');chmodSync(module,0o444);chmodSync(dirname(module),0o555); ++ t.after(()=>{chmodSync(dirname(module),0o755);rmSync(module);chmodSync(dirname(module),0o555);}); ++ const r=await prun(e,'activate',C1,'acme','--sso','--tester-socket');assert.equal(r.code,0,r.out+r.err); ++ const want=['--port',e.port,'--business','acme','--sso','--tester-socket']; ++ assert.deepEqual(pointer(e).console,want); ++ assert.ok(conExec(e).endsWith(` --checkout ${repo} ${want.join(' ')}`),conExec(e)); ++ assert.doesNotMatch(conExec(e),/ --send(?: |$)|--tester-port|--public-host|--proof-header/); ++ const status=await prun(e,'status','acme');assert.equal(status.code,0,status.out+status.err);assert.match(status.out,/unit flags: match the pointer/); ++ await noLeak(e); ++}); diff --git a/agents/gander/work/queue-196/r2/run3/progress-before-r3.patch b/agents/gander/work/queue-196/r2/run3/progress-before-r3.patch new file mode 100644 index 000000000..6cd4923a4 --- /dev/null +++ b/agents/gander/work/queue-196/r2/run3/progress-before-r3.patch @@ -0,0 +1,9 @@ +diff --git a/agents/gander/work/queue-196/PROGRESS.md b/agents/gander/work/queue-196/PROGRESS.md +index 792be51f7..68392995b 100644 +--- a/agents/gander/work/queue-196/PROGRESS.md ++++ b/agents/gander/work/queue-196/PROGRESS.md +@@ -20,3 +20,4 @@ sage-1464 (2026-10-20T20:40Z): renewed bus/WebUI/CLI and M1-M29 slot is fifth, a + sage-2051 / mos-1193 (2026-10-21T18:45Z) explicitly orders committing and fast-forward pushing the current row196 build before its deferred full verification, then rebasing onto a36523713 on new gander/row196-r2. This supersedes the earlier no-product-commit-before-suite gate for this preservation commit only. Full acceptance remains pending. No tests until Sage says clear. Subsequent batch order: M1-M29, bus, WebUI, CLI, every whole scripts/test-*.sh; TMPDIR must be created with mktemp under /mnt/storage/scratch/tmp, never /tmp. Preserve the old branch. Row252 design may proceed while waiting; no row252 code before Webby approves. + sage-2058 clear: clean detached 64539c96b worktree, short scratch TMPDIR, busy && before starts, pipefail and tee, mutation restoration hash and Git-status checks. M1-M22 killed; M23 rejected by broad runtime SyntaxError classification despite passing node --check, 3 pass/2 fail in killer. Stopped, restored clean, slot returned gander-0031 18:51:50Z. No suites started. sage-2063 calls stop 1; driver fix separately committed, no rerun before next clear. r2/REBASE.md records all ten conflict resolutions. Row252 design drafted, no code. + sage-2065 clear at 18:58:34Z: base killers 14/0, wall seconds interpreter 1.470, socket 1.528, peer 2.092, focused release 7.983. M23-M27 killed, no outer timeout. M28 survived because its generic first replacement now hits upstream sso_for_target, not the intended proof insertion. Stopped before M29 or any suite, restored every file and Git status clean; sweep found 0 leftover node/tee/Python readers. Slot handed back gander-0035 at 19:01:26Z. This is stop 2, awaiting Sage ruling; no mutation fix/rerun. r2/run2/SUMMARY.md and kill-table.json preserve counts and timings. Webby approved row252 design r1; nonblocking N1-N5 recorded in queue-252/BUILD-NOTES.md; code still waits on row196 landing and PRD amendment. ++sage-2079 (2026-10-21T19:09:49Z) accepts product test commit 1bb1e8dd6 and driver 42b47f36c. M5 prior kill stands by identical mutated sha; narrowed M25 differs and reruns. Gate and Duckworth merge-scoped candidate is 1bb1e8dd6. Hold until Sage clear after Herb 215: first focused SSO RED/GREEN, then M25/M28/M28b/M29, then whole bus/WebUI/CLI and every whole scripts/test-*.sh. Third stop goes to Mos before another run. No tests started during this hold. diff --git a/agents/gander/work/queue-196/r3/gate/base-driver.log b/agents/gander/work/queue-196/r3/gate/base-driver.log new file mode 100644 index 000000000..8f4b802e5 --- /dev/null +++ b/agents/gander/work/queue-196/r3/gate/base-driver.log @@ -0,0 +1,2 @@ +{"name":"interpreter","args":["packages/bus/tests/interpreter.test.mjs"],"seconds":1.590576636,"status":0,"signal":null} +{"name":"release","args":["--test-name-pattern=row196 explicit socket","packages/cli/tests/stack-release.test.mjs"],"seconds":8.452289073,"status":0,"signal":null} diff --git a/agents/gander/work/queue-196/r3/gate/base-interpreter.log b/agents/gander/work/queue-196/r3/gate/base-interpreter.log new file mode 100644 index 000000000..959f8d30e --- /dev/null +++ b/agents/gander/work/queue-196/r3/gate/base-interpreter.log @@ -0,0 +1,13 @@ +✔ system Python is a resolved root-owned ELF, never a shim or home interpreter (2.150681ms) +✔ real system interpreter is available and safely inspected (21.894937ms) +✔ restart receipt appends actual replacement identity and refuses unsafe files (3.667317ms) +✔ activation gate compares fresh startup receipt to the current interpreter identity (1.389538ms) +✔ non-regular startup receipt refuses promptly without waiting on a FIFO peer (29.362625ms) +ℹ tests 5 +ℹ suites 0 +ℹ pass 5 +ℹ fail 0 +ℹ cancelled 0 +ℹ skipped 0 +ℹ todo 0 +ℹ duration_ms 107.514135 diff --git a/agents/gander/work/queue-196/r3/gate/base-release.log b/agents/gander/work/queue-196/r3/gate/base-release.log new file mode 100644 index 000000000..e11004456 --- /dev/null +++ b/agents/gander/work/queue-196/r3/gate/base-release.log @@ -0,0 +1,9 @@ +✔ row196 explicit socket conversion refuses inherited TCP before stop and rollback disables socket (6189.833666ms) +ℹ tests 1 +ℹ suites 0 +ℹ pass 1 +ℹ fail 0 +ℹ cancelled 0 +ℹ skipped 0 +ℹ todo 0 +ℹ duration_ms 6962.12692 diff --git a/agents/gander/work/queue-196/r3/gate/base-results.json b/agents/gander/work/queue-196/r3/gate/base-results.json new file mode 100644 index 000000000..22e2d0dbb --- /dev/null +++ b/agents/gander/work/queue-196/r3/gate/base-results.json @@ -0,0 +1,21 @@ +[ + { + "name": "interpreter", + "args": [ + "packages/bus/tests/interpreter.test.mjs" + ], + "seconds": 1.590576636, + "status": 0, + "signal": null + }, + { + "name": "release", + "args": [ + "--test-name-pattern=row196 explicit socket", + "packages/cli/tests/stack-release.test.mjs" + ], + "seconds": 8.452289073, + "status": 0, + "signal": null + } +] diff --git a/agents/gander/work/queue-196/r3/gate/base.mjs b/agents/gander/work/queue-196/r3/gate/base.mjs new file mode 100644 index 000000000..79d2b3583 --- /dev/null +++ b/agents/gander/work/queue-196/r3/gate/base.mjs @@ -0,0 +1,9 @@ +import {spawnSync} from 'node:child_process';import {writeFileSync} from 'node:fs';import {performance} from 'node:perf_hooks'; +const root='/mnt/storage/scratch/tmp/g196-tree-tn651z',out=new URL('.',import.meta.url).pathname; +const jobs=[['interpreter',['packages/bus/tests/interpreter.test.mjs']],['release',['--test-name-pattern=row196 explicit socket','packages/cli/tests/stack-release.test.mjs']]]; +const results=[]; +for(const [name,args] of jobs){ + const start=performance.now(),r=spawnSync('bash',['-c','set -o pipefail; python3 "$G196_BUSY" && "$G196_NODE" --test "$@" 2>&1 | tee "$G196_LOG"','--',...args],{cwd:root,env:{...process.env,G196_NODE:process.execPath,G196_LOG:out+'base-'+name+'.log'},encoding:'utf8',maxBuffer:4*1024*1024}); + const seconds=(performance.now()-start)/1000;const result={name,args,seconds,status:r.status,signal:r.signal};results.push(result);writeFileSync(out+'base-results.json',JSON.stringify(results,null,2)+'\n');console.log(JSON.stringify(result)); + if(r.status!==0||seconds>30){process.exitCode=1;break;} +} diff --git a/agents/gander/work/queue-196/r3/gate/driver.log b/agents/gander/work/queue-196/r3/gate/driver.log new file mode 100644 index 000000000..d7841a780 --- /dev/null +++ b/agents/gander/work/queue-196/r3/gate/driver.log @@ -0,0 +1,4 @@ +M25 KILLED base=1.590576636s timeout=false +M28 KILLED base=8.452289073s timeout=false +M28b KILLED base=4.386869599s timeout=false +M29 KILLED base=8.452289073s timeout=false diff --git a/agents/gander/work/queue-196/r3/gate/driver.mjs b/agents/gander/work/queue-196/r3/gate/driver.mjs new file mode 100644 index 000000000..ec0a4d3c6 --- /dev/null +++ b/agents/gander/work/queue-196/r3/gate/driver.mjs @@ -0,0 +1,81 @@ +import { guardMutation } from '../../mutant-guard.mjs'; +// Authorized batch only. Mutate isolated scratch copies, never the candidate or installed tree. +import {mkdtempSync,cpSync,readFileSync,writeFileSync,rmSync,symlinkSync,existsSync,mkdirSync} from 'node:fs'; +import {tmpdir} from 'node:os';import {join,resolve} from 'node:path'; +import {spawnSync,execFileSync} from 'node:child_process';import {createHash} from 'node:crypto'; +import {fileURLToPath} from 'node:url'; +const root='/mnt/storage/scratch/tmp/g196-tree-tn651z'; +const out='/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-196/r3/gate/killers';mkdirSync(out,{recursive:true}); +const p='packages/bus/src/principal.mjs',h='packages/bus/src/human.mjs',w='packages/webui/src/tester-socket.mjs',s='packages/bus/src/server.mjs',peer='packages/bus/src/peercred.mjs'; +const principal='packages/bus/tests/principal.test.mjs',socket='packages/webui/tests/tester-socket.test.mjs',transport='packages/bus/tests/peer-transport.test.mjs',interpreter='packages/bus/tests/interpreter.test.mjs'; +const release=['--test-name-pattern=row196 explicit socket','packages/cli/tests/stack-release.test.mjs']; +const specs=[ + ['M1', 'packages/webui/src/serve.mjs','tester uses TCP',socket, text=>text.replace('if (tester) return bindTesterSocket(server, testerSocket);',"if (tester) return new Promise(r=>server.listen(0,'127.0.0.1',()=>r(server)));" )], + ['M2',w,'socket mode widened',socket,t=>t.replace('chmodSync(temporary, 0o600)','chmodSync(temporary, 0o666)')], + ['M3','packages/webui/src/serve.mjs','sign-in accepted on tester',socket,t=>t.replace("if (tester && (Object.hasOwn(req.headers, 'authorization')", "if (false && (Object.hasOwn(req.headers, 'authorization')")], + ['M4',p,'copied PID accepted',principal,t=>t.replace('peer.pid !== proof.pid','false')], + ['M5',peer,'helper parse error ignored','packages/bus/tests/peercred.test.mjs',t=>t.replace('finish(false, Object.freeze(p));\n } catch { finish(true); }','finish(false, Object.freeze(p));\n } catch { finish(false, {pid:2,uid:0,gid:0}); }')], + ['M6',p,'foreign uid accepted',principal,t=>t.replace('peer.uid !== process.getuid()','false')], + ['M7',w,'unsafe parent accepted',socket,t=>t.replace('(dir.mode & 0o077)','false')], + ['M8',h,'agent environment walk skipped',principal,t=>t.replace('current.env !== null && MARKERS.some','false && MARKERS.some')], + ['M9',h,'leaf identity not reread',principal,t=>t.replace('if (again.startTime !== proof.startTime || again.ppid !== p.ppid)','if (false)')], + ['M10',p,'Console direct-parent check removed',principal,t=>t.replace("if (parent.uid !== peer.uid || parent.argv[1] !== resolve(paths.console) || parent.argv[2] !== 'serve')",'if (false)')], + ['M11',p,'Console basename accepted',principal,t=>t.replace("import { resolve }", "import { resolve, basename }").replace('parent.argv[1] !== resolve(paths.console)','basename(parent.argv[1] ?? "") !== basename(paths.console)')], + ['M12',h,'unknown proof identity accepted',principal,t=>t.replace("Object.keys(proof).some((k) => !['pid', 'startTime', 'nonce', 'business'].includes(k))",'false')], + ['M13',s,'transient cap leaked',transport,t=>t.replace('broker.disconnect(boundCap)','void(boundCap)')], + ['M14',p,'tester walk used for user',principal,t=>t.replace("verifyHuman(checked, { cliPath: paths[kind], launches, readProcess,\n nonceKey: kind === 'user' ? 'MOSAIC_BUS_USER_NONCE' : 'MOSAIC_BUS_CLI_NONCE' })",'verifyTester(checked, {cliPath:paths[kind],launches,readProcess,readNonce:()=>checked.nonce})')], + ['M15','scripts/stack-release.sh','TCP retained during conversion',release,t=>t.replace('RUN_CONSOLE=("${without_tester[@]}" --tester-socket)','RUN_CONSOLE=("${BASE_CONSOLE[@]}" --tester-socket)')], + ['M16','scripts/stack-release.sh','TCP reopened on downgrade',release,t=>t.replace('RUN_CONSOLE=("${without_tester[@]}") DROP_TESTER="--tester-socket','RUN_CONSOLE=("${without_tester[@]}" --tester-port 7333) DROP_TESTER="--tester-socket')], + ['M17','packages/bus/src/broker.mjs','tester switch ignored','packages/bus/tests/tester.test.mjs',t=>t.replace("if (this.#business(record.business).vars?.['bus.tester'] !== true)",'if (false)')], + ['M18',p,'user kind becomes owner',principal,t=>t.replace("return { kind: 'user', business, id: proof.user }","return { kind: 'owner', business, id: proof.user }")], + ['M19','packages/cli/src/tester-http.mjs','selected instance root ignored',socket,t=>t.replace('socketPath: testerSocketPath(dataRoot)','socketPath: testerSocketPath(dataRoot + "/wrong-instance")')], + ['M20',peer,'helper gets another pending socket','packages/bus/tests/peercred.test.mjs',t=>t.replace('export function createPeerReader','function originalPeerReader')+`\nexport function createPeerReader(options){const base=originalPeerReader(options),queue=[];let scheduled=false;return{read(socket){return new Promise((resolve,reject)=>{queue.push({socket,resolve,reject});if(!scheduled){scheduled=true;queueMicrotask(()=>{scheduled=false;const jobs=queue.splice(0);jobs.forEach((job,i)=>base.read(jobs[(i+1)%jobs.length].socket).then(job.resolve,job.reject));});}});},close(){base.close();}};}\n`], + ['M21','packages/bus/src/interpreter.mjs','user-owned interpreter accepted',interpreter,t=>t.replace('s.uid !== 0 || (s.mode & 0o022)','false || (s.mode & 0o022)')], + ['M22',s,'cap requests invoke helper',transport,t=>t.replace(' if (kind) {',' if (r.cap) await peers.read(socket);\n if (kind) {')], + ['M23','packages/bus/src/interpreter.mjs','restart retains stale identity',interpreter,t=>t.replace('export function recordInterpreterStart(directory, record) {','export function recordInterpreterStart(directory, record) {\n try { readFileSync(join(directory,"peercred-starts.jsonl")); return; } catch {}')], + ['M24',w,'listener binds final path directly',socket,t=>t.replace("const temporary = join(parent, '.' + randomBytes(4).toString('hex') + '.s');",'const temporary = path;')], + ['M25','packages/bus/src/interpreter.mjs','FIFO receipt blocks before type refusal',['--test-name-pattern=non-regular startup receipt',interpreter],t=>t.replace('constants.O_WRONLY | constants.O_APPEND | constants.O_CREAT | constants.O_NOFOLLOW | constants.O_NONBLOCK, 0o600','constants.O_WRONLY | constants.O_APPEND | constants.O_CREAT | constants.O_NOFOLLOW, 0o600')], + ['M26',peer,'missing helper accepted at startup',['--test-name-pattern=missing or non-regular peer helper','packages/bus/tests/peercred.test.mjs'],t=>t.replace('if (!s.isFile() || s.isSymbolicLink()) throw Error();','if (false) throw Error();').replace('catch { throw refused(); }','catch {}')], + ['M27',peer,'shutdown returns before helpers are reaped',['--test-name-pattern=shutdown waits','packages/bus/tests/peercred.test.mjs'],t=>t.replace(" await Promise.all([...children].map(child => new Promise(resolve => {\n child.once('close', resolve);\n child.kill('SIGKILL');\n })));"," for (const child of children) child.kill('SIGKILL');")], + ['M28','scripts/stack-release.sh','proof pair placed after tester socket flag',release,t=>t.replace('case "${without_proof[i]}" in --send | --tester-port | --tester-socket) break','case "${without_proof[i]}" in --send | --tester-port) break')], + ['M28b','scripts/stack-release.sh','SSO placed after tester socket flag',['--test-name-pattern=row196 SSO socket','packages/cli/tests/stack-release.test.mjs'],t=>t.replace('case "${kept[i]}" in --send | --tester-port | --tester-socket) break','case "${kept[i]}" in --send | --tester-port) break')], + ['M29','scripts/stack-release.sh','unsafe tester path reaches service stop',release,t=>t.replace(t.split('\n').find(line=>line.includes('|| check_refuse tester-socket-path'))+'\n','')], +]; +const hash=x=>createHash('sha256').update(x).digest('hex'); +const results=[]; +for (const [id,file,,,mutate] of specs) { + try { guardMutation(readFileSync(join(root,file),'utf8'),mutate); } + catch(error) { throw Error(id+': '+error.message); } +} +const scratch=mkdtempSync(join(tmpdir(),'g196-mut-')); +try { + for(const name of ['packages','scripts','adapters','roles','contracts','RELEASE','package.json','package-lock.json','.gitignore'])if(existsSync(join(root,name)))cpSync(join(root,name),join(scratch,name),{recursive:true,filter:src=>!src.includes('/node_modules/')&&!src.endsWith('/node_modules')}); + symlinkSync(join(root,'node_modules'),join(scratch,'node_modules')); + for(const args of [['init','-q'],['add','.'],['-c','user.name=fixture','-c','user.email=fixture@invalid','-c','commit.gpgsign=false','-c','core.hooksPath=/dev/null','commit','-qm','candidate snapshot']])execFileSync('git',args,{cwd:scratch}); + for(const [id,file,description,test,mutate] of specs.filter(row=>['M25','M28','M28b','M29'].includes(row[0]))) { + const bases=JSON.parse(readFileSync(new URL('./base-results.json',import.meta.url),'utf8')); + const green=JSON.parse(readFileSync(new URL('./sso-results.json',import.meta.url),'utf8')).find(x=>x.name==='sso-green'); + const base=id==='M28b'?{...green,args:['--test-name-pattern=row196 SSO socket','packages/cli/tests/stack-release.test.mjs']}:bases.find(b=>b.name===(id==='M25'?'interpreter':'release')); + if(!base||base.status!==0||base.seconds>30)throw Error(id+' missing or slow passing base'); + const at=join(scratch,file),original=readFileSync(at,'utf8'),before=hash(original),changed=guardMutation(original,mutate).text; + if(changed===original)throw Error(id+' did not change bytes'); + writeFileSync(at,changed); + const syntax=spawnSync(file.endsWith('.sh')?'bash':process.execPath,[file.endsWith('.sh')?'-n':'--check',at],{encoding:'utf8'}); + if(syntax.status!==0)throw Error(id+' invalid mutation: '+syntax.stderr); + const args=['--test',...(Array.isArray(test)?test:[test])]; + const started=Date.now(); + const run=spawnSync('timeout',['--signal=TERM','--kill-after=2s','60s','bash','-c','set -o pipefail; python3 "$G196_BUSY" && "$G196_NODE" "$@" 2>&1 | tee "$G196_LOG"','--',...args],{cwd:scratch,env:{...process.env,G196_NODE:process.execPath,G196_LOG:join(out,id+'.txt')},encoding:'utf8',maxBuffer:2*1024*1024}); + const log=(run.stdout??'')+(run.stderr??'');writeFileSync(join(out,id+'.txt'),log); + writeFileSync(at,original);const clean=execFileSync('git',['status','--porcelain'],{cwd:scratch,encoding:'utf8'});if(clean.trim())throw Error(id+' dirty restored tree: '+clean);if(hash(readFileSync(at))!==before)throw Error(id+' restore hash failed'); + const failed=/[ℹ#]\s*(?:fail|tests failed)\s+[1-9]/.test(log) || /✖/.test(log); + // Syntax validity is decided exclusively by the node --check preflight above. + // GNU timeout owns a process group and terminates its shell, tee and test descendants. + const timedOut=run.status===124||run.status===137; + const killed=timedOut||(run.status!==0&&failed); + const result={id,description,test,args,status:run.status,signal:run.signal,killed,timedOut,wallSeconds:(Date.now()-started)/1000,baseWallSeconds:base.seconds,baseArgs:base.args,restoredGitStatus:clean,timeoutSeconds:60,timeoutKillAfterSeconds:2,processGroupTimeout:true,syntaxStatus:syntax.status,restoredSha256:before};results.push(result); + writeFileSync(join(out,'results.json'),JSON.stringify(results,null,2)+'\n'); + console.log(id+' '+(killed?'KILLED':'SURVIVED/INVALID')+' base='+base.seconds+'s timeout='+timedOut); + if(timedOut&&id!=='M25'){process.exitCode=1;console.log('STOP non-FIFO timeout');break;} + if(!killed) {process.exitCode=1;break;} + } +} finally {rmSync(scratch,{recursive:true,force:true});} diff --git a/agents/gander/work/queue-196/r3/gate/killers/M25.txt b/agents/gander/work/queue-196/r3/gate/killers/M25.txt new file mode 100644 index 000000000..5bcec0b45 --- /dev/null +++ b/agents/gander/work/queue-196/r3/gate/killers/M25.txt @@ -0,0 +1,29 @@ +CLEAR (current driver ancestors excluded) +✖ non-regular startup receipt refuses promptly without waiting on a FIFO peer (1008.075918ms) +ℹ tests 1 +ℹ suites 0 +ℹ pass 0 +ℹ fail 1 +ℹ cancelled 0 +ℹ skipped 0 +ℹ todo 0 +ℹ duration_ms 1060.549377 + +✖ failing tests: + +test at packages/bus/tests/interpreter.test.mjs:69:1 +✖ non-regular startup receipt refuses promptly without waiting on a FIFO peer (1008.075918ms) + AssertionError [ERR_ASSERTION]: unsafe FIFO must refuse without blocking startup + + null !== 0 + + at TestContext. (file:///mnt/storage/scratch/tmp/gjDR/g196-mut-lzhidl/packages/bus/tests/interpreter.test.mjs:75:9) + at async Test.run (node:internal/test_runner/test:1409:7) + at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) { + generatedMessage: false, + code: 'ERR_ASSERTION', + actual: null, + expected: 0, + operator: 'strictEqual', + diff: 'simple' + } diff --git a/agents/gander/work/queue-196/r3/gate/killers/M28.txt b/agents/gander/work/queue-196/r3/gate/killers/M28.txt new file mode 100644 index 000000000..782972870 --- /dev/null +++ b/agents/gander/work/queue-196/r3/gate/killers/M28.txt @@ -0,0 +1,45 @@ +CLEAR (current driver ancestors excluded) +✖ row196 explicit socket conversion refuses inherited TCP before stop and rollback disables socket (3863.208125ms) +ℹ tests 1 +ℹ suites 0 +ℹ pass 0 +ℹ fail 1 +ℹ cancelled 0 +ℹ skipped 0 +ℹ todo 0 +ℹ duration_ms 4536.035353 + +✖ failing tests: + +test at packages/cli/tests/stack-release.test.mjs:2277:1 +✖ row196 explicit socket conversion refuses inherited TCP before stop and rollback disables socket (3863.208125ms) + AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal: + + actual - expected + ... Skipped lines + + [ + '--port', + '37885', + '--business', + 'acme', + ... + 'jason', + + '--tester-socket', + '--proof-header', + 'x-console-proof', + '--proof-file', + '/mnt/storage/scratch/tmp/gjDR/sr-6IN6bS/proof.187', + - '--tester-socket' + ] + + at TestContext. (file:///mnt/storage/scratch/tmp/gjDR/g196-mut-lzhidl/packages/cli/tests/stack-release.test.mjs:2291:9) + at process.processTicksAndRejections (node:internal/process/task_queues:104:5) + at async Test.run (node:internal/test_runner/test:1409:7) + at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) { + generatedMessage: true, + code: 'ERR_ASSERTION', + actual: [ '--port', '37885', '--business', 'acme', '--public-host', 'console.example', '--auth-header', 'x-user', '--allow-user', 'jason', '--tester-socket', '--proof-header', 'x-console-proof', '--proof-file', '/mnt/storage/scratch/tmp/gjDR/sr-6IN6bS/proof.187' ], + expected: [ '--port', '37885', '--business', 'acme', '--public-host', 'console.example', '--auth-header', 'x-user', '--allow-user', 'jason', '--proof-header', 'x-console-proof', '--proof-file', '/mnt/storage/scratch/tmp/gjDR/sr-6IN6bS/proof.187', '--tester-socket' ], + operator: 'deepStrictEqual', + diff: 'simple' + } diff --git a/agents/gander/work/queue-196/r3/gate/killers/M28b.txt b/agents/gander/work/queue-196/r3/gate/killers/M28b.txt new file mode 100644 index 000000000..f3da27718 --- /dev/null +++ b/agents/gander/work/queue-196/r3/gate/killers/M28b.txt @@ -0,0 +1,39 @@ +CLEAR (current driver ancestors excluded) +✖ row196 SSO socket conversion pins pointer and unit argv order without send (2182.8487ms) +ℹ tests 1 +ℹ suites 0 +ℹ pass 0 +ℹ fail 1 +ℹ cancelled 0 +ℹ skipped 0 +ℹ todo 0 +ℹ duration_ms 2883.631603 + +✖ failing tests: + +test at packages/cli/tests/stack-release.test.mjs:2305:1 +✖ row196 SSO socket conversion pins pointer and unit argv order without send (2182.8487ms) + AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal: + + actual - expected + + [ + '--port', + '39799', + '--business', + 'acme', + + '--tester-socket', + '--sso', + - '--tester-socket' + ] + + at TestContext. (file:///mnt/storage/scratch/tmp/gjDR/g196-mut-lzhidl/packages/cli/tests/stack-release.test.mjs:2316:9) + at process.processTicksAndRejections (node:internal/process/task_queues:104:5) + at async Test.run (node:internal/test_runner/test:1409:7) + at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) { + generatedMessage: true, + code: 'ERR_ASSERTION', + actual: [ '--port', '39799', '--business', 'acme', '--tester-socket', '--sso' ], + expected: [ '--port', '39799', '--business', 'acme', '--sso', '--tester-socket' ], + operator: 'deepStrictEqual', + diff: 'simple' + } diff --git a/agents/gander/work/queue-196/r3/gate/killers/M29.txt b/agents/gander/work/queue-196/r3/gate/killers/M29.txt new file mode 100644 index 000000000..c7043fab7 --- /dev/null +++ b/agents/gander/work/queue-196/r3/gate/killers/M29.txt @@ -0,0 +1,37 @@ +CLEAR (current driver ancestors excluded) +✖ row196 explicit socket conversion refuses inherited TCP before stop and rollback disables socket (6565.572186ms) +ℹ tests 1 +ℹ suites 0 +ℹ pass 0 +ℹ fail 1 +ℹ cancelled 0 +ℹ skipped 0 +ℹ todo 0 +ℹ duration_ms 6950.421507 + +✖ failing tests: + +test at packages/cli/tests/stack-release.test.mjs:2277:1 +✖ row196 explicit socket conversion refuses inherited TCP before stop and rollback disables socket (6565.572186ms) + AssertionError [ERR_ASSERTION]: stack-release: interpreter: {"path":"/usr/bin/python3","sha256":"fixture"} + stack-release: captured the rollback set: /mnt/storage/scratch/tmp/gjDR/sr-B6ReeQ/data/state/stack-rollback/20261021T192526Z-af666f645a82 + stack-release: stopped both units + stack-release: stopped store schema: 3g + stack-release: backup: /mnt/storage/scratch/tmp/gjDR/sr-B6ReeQ/data/backups/stack/20261021T192526Z-af666f645a82 + stack-release: installed af666f645a823d0eab2ecb7b01a0eefda5e388df + stack-release: gate passed on af666f645a823d0eab2ecb7b01a0eefda5e388df + stack-release: activate ok: af666f645a823d0eab2ecb7b01a0eefda5e388df is live for acme + + + 0 !== 3 + + at TestContext. (file:///mnt/storage/scratch/tmp/gjDR/g196-mut-lzhidl/packages/cli/tests/stack-release.test.mjs:2297:9) + at async Test.run (node:internal/test_runner/test:1409:7) + at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) { + generatedMessage: false, + code: 'ERR_ASSERTION', + actual: 0, + expected: 3, + operator: 'strictEqual', + diff: 'simple' + } diff --git a/agents/gander/work/queue-196/r3/gate/killers/results.json b/agents/gander/work/queue-196/r3/gate/killers/results.json new file mode 100644 index 000000000..1cd53d2a8 --- /dev/null +++ b/agents/gander/work/queue-196/r3/gate/killers/results.json @@ -0,0 +1,117 @@ +[ + { + "id": "M25", + "description": "FIFO receipt blocks before type refusal", + "test": [ + "--test-name-pattern=non-regular startup receipt", + "packages/bus/tests/interpreter.test.mjs" + ], + "args": [ + "--test", + "--test-name-pattern=non-regular startup receipt", + "packages/bus/tests/interpreter.test.mjs" + ], + "status": 1, + "signal": null, + "killed": true, + "timedOut": false, + "wallSeconds": 2.549, + "baseWallSeconds": 1.590576636, + "baseArgs": [ + "packages/bus/tests/interpreter.test.mjs" + ], + "restoredGitStatus": "", + "timeoutSeconds": 60, + "timeoutKillAfterSeconds": 2, + "processGroupTimeout": true, + "syntaxStatus": 0, + "restoredSha256": "d5d98a9133a1b449acc48143fd559d890a470c6ea210b30b9b70e491e6cd855a" + }, + { + "id": "M28", + "description": "proof pair placed after tester socket flag", + "test": [ + "--test-name-pattern=row196 explicit socket", + "packages/cli/tests/stack-release.test.mjs" + ], + "args": [ + "--test", + "--test-name-pattern=row196 explicit socket", + "packages/cli/tests/stack-release.test.mjs" + ], + "status": 1, + "signal": null, + "killed": true, + "timedOut": false, + "wallSeconds": 6.09, + "baseWallSeconds": 8.452289073, + "baseArgs": [ + "--test-name-pattern=row196 explicit socket", + "packages/cli/tests/stack-release.test.mjs" + ], + "restoredGitStatus": "", + "timeoutSeconds": 60, + "timeoutKillAfterSeconds": 2, + "processGroupTimeout": true, + "syntaxStatus": 0, + "restoredSha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2" + }, + { + "id": "M28b", + "description": "SSO placed after tester socket flag", + "test": [ + "--test-name-pattern=row196 SSO socket", + "packages/cli/tests/stack-release.test.mjs" + ], + "args": [ + "--test", + "--test-name-pattern=row196 SSO socket", + "packages/cli/tests/stack-release.test.mjs" + ], + "status": 1, + "signal": null, + "killed": true, + "timedOut": false, + "wallSeconds": 4.308, + "baseWallSeconds": 4.386869599, + "baseArgs": [ + "--test-name-pattern=row196 SSO socket", + "packages/cli/tests/stack-release.test.mjs" + ], + "restoredGitStatus": "", + "timeoutSeconds": 60, + "timeoutKillAfterSeconds": 2, + "processGroupTimeout": true, + "syntaxStatus": 0, + "restoredSha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2" + }, + { + "id": "M29", + "description": "unsafe tester path reaches service stop", + "test": [ + "--test-name-pattern=row196 explicit socket", + "packages/cli/tests/stack-release.test.mjs" + ], + "args": [ + "--test", + "--test-name-pattern=row196 explicit socket", + "packages/cli/tests/stack-release.test.mjs" + ], + "status": 1, + "signal": null, + "killed": true, + "timedOut": false, + "wallSeconds": 8.462, + "baseWallSeconds": 8.452289073, + "baseArgs": [ + "--test-name-pattern=row196 explicit socket", + "packages/cli/tests/stack-release.test.mjs" + ], + "restoredGitStatus": "", + "timeoutSeconds": 60, + "timeoutKillAfterSeconds": 2, + "processGroupTimeout": true, + "syntaxStatus": 0, + "restoredSha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2" + } +] diff --git a/agents/gander/work/queue-196/r3/gate/sso-driver.log b/agents/gander/work/queue-196/r3/gate/sso-driver.log new file mode 100644 index 000000000..5148e492f --- /dev/null +++ b/agents/gander/work/queue-196/r3/gate/sso-driver.log @@ -0,0 +1,2 @@ +{"name":"sso-red","status":1,"signal":null,"seconds":4.244384619,"timedOut":false} +{"name":"sso-green","status":0,"signal":null,"seconds":4.386869599,"timedOut":false} diff --git a/agents/gander/work/queue-196/r3/gate/sso-green.log b/agents/gander/work/queue-196/r3/gate/sso-green.log new file mode 100644 index 000000000..ae1053140 --- /dev/null +++ b/agents/gander/work/queue-196/r3/gate/sso-green.log @@ -0,0 +1,9 @@ +✔ row196 SSO socket conversion pins pointer and unit argv order without send (2286.735799ms) +ℹ tests 1 +ℹ suites 0 +ℹ pass 1 +ℹ fail 0 +ℹ cancelled 0 +ℹ skipped 0 +ℹ todo 0 +ℹ duration_ms 2974.25362 diff --git a/agents/gander/work/queue-196/r3/gate/sso-proof.mjs b/agents/gander/work/queue-196/r3/gate/sso-proof.mjs new file mode 100644 index 000000000..26a3e2aac --- /dev/null +++ b/agents/gander/work/queue-196/r3/gate/sso-proof.mjs @@ -0,0 +1,15 @@ +import {readFileSync,writeFileSync} from 'node:fs';import {spawnSync,execFileSync} from 'node:child_process';import {performance} from 'node:perf_hooks';import {createHash} from 'node:crypto'; +const root='/mnt/storage/scratch/tmp/g196-tree-tn651z',out=new URL('.',import.meta.url).pathname,file=root+'/scripts/stack-release.sh'; +const original=readFileSync(file,'utf8'),needle='case "${kept[i]}" in --send | --tester-port | --tester-socket) break'; +if(original.split(needle).length!==2)throw Error('SSO target not unique'); +const results=[]; +function run(name){const start=performance.now();const r=spawnSync('timeout',['--signal=TERM','--kill-after=2s','60s','bash','-c','set -o pipefail; python3 "$G196_BUSY" && "$G196_NODE" --test --test-name-pattern="row196 SSO socket" packages/cli/tests/stack-release.test.mjs 2>&1 | tee "$G196_LOG"'],{cwd:root,env:{...process.env,G196_NODE:process.execPath,G196_LOG:out+name+'.log'},encoding:'utf8',maxBuffer:4*1024*1024});const log=(r.stdout??'')+(r.stderr??'');const result={name,status:r.status,signal:r.signal,seconds:(performance.now()-start)/1000,timedOut:[124,137].includes(r.status)};results.push(result);writeFileSync(out+'sso-results.json',JSON.stringify(results,null,2)+'\n');console.log(JSON.stringify(result));return {r,log,result};} +try{ + writeFileSync(file,original.replace(needle,'case "${kept[i]}" in --send | --tester-port) break')); + const {r,log}=run('sso-red'); + if(r.status!==1||!log.includes('AssertionError')||!log.includes('--sso')||!log.includes('--tester-socket'))throw Error('unexpected RED result; stop'); +}finally{writeFileSync(file,original);} +const {r,result}=run('sso-green'); +if(r.status!==0||result.seconds>30)throw Error('GREEN failed or over 30 seconds; stop'); +const clean=execFileSync('git',['status','--porcelain','--','.',':!node_modules'],{cwd:root,encoding:'utf8'});if(clean)throw Error('candidate dirty: '+clean); +writeFileSync(out+'sso-restoration.json',JSON.stringify({sha256:createHash('sha256').update(readFileSync(file)).digest('hex'),gitStatus:clean},null,2)+'\n'); diff --git a/agents/gander/work/queue-196/r3/gate/sso-red.log b/agents/gander/work/queue-196/r3/gate/sso-red.log new file mode 100644 index 000000000..2eaea3e54 --- /dev/null +++ b/agents/gander/work/queue-196/r3/gate/sso-red.log @@ -0,0 +1,38 @@ +✖ row196 SSO socket conversion pins pointer and unit argv order without send (2216.853142ms) +ℹ tests 1 +ℹ suites 0 +ℹ pass 0 +ℹ fail 1 +ℹ cancelled 0 +ℹ skipped 0 +ℹ todo 0 +ℹ duration_ms 2829.78359 + +✖ failing tests: + +test at packages/cli/tests/stack-release.test.mjs:2305:1 +✖ row196 SSO socket conversion pins pointer and unit argv order without send (2216.853142ms) + AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal: + + actual - expected + + [ + '--port', + '42359', + '--business', + 'acme', + + '--tester-socket', + '--sso', + - '--tester-socket' + ] + + at TestContext. (file:///mnt/storage/scratch/tmp/g196-tree-tn651z/packages/cli/tests/stack-release.test.mjs:2316:9) + at process.processTicksAndRejections (node:internal/process/task_queues:104:5) + at async Test.run (node:internal/test_runner/test:1409:7) + at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) { + generatedMessage: true, + code: 'ERR_ASSERTION', + actual: [ '--port', '42359', '--business', 'acme', '--tester-socket', '--sso' ], + expected: [ '--port', '42359', '--business', 'acme', '--sso', '--tester-socket' ], + operator: 'deepStrictEqual', + diff: 'simple' + } diff --git a/agents/gander/work/queue-196/r3/gate/sso-restoration.json b/agents/gander/work/queue-196/r3/gate/sso-restoration.json new file mode 100644 index 000000000..ba068c649 --- /dev/null +++ b/agents/gander/work/queue-196/r3/gate/sso-restoration.json @@ -0,0 +1,4 @@ +{ + "sha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2", + "gitStatus": "" +} diff --git a/agents/gander/work/queue-196/r3/gate/sso-results.json b/agents/gander/work/queue-196/r3/gate/sso-results.json new file mode 100644 index 000000000..c2d0111f2 --- /dev/null +++ b/agents/gander/work/queue-196/r3/gate/sso-results.json @@ -0,0 +1,16 @@ +[ + { + "name": "sso-red", + "status": 1, + "signal": null, + "seconds": 4.244384619, + "timedOut": false + }, + { + "name": "sso-green", + "status": 0, + "signal": null, + "seconds": 4.386869599, + "timedOut": false + } +] diff --git a/agents/gander/work/queue-196/r3/gate/tmpdir.txt b/agents/gander/work/queue-196/r3/gate/tmpdir.txt new file mode 100644 index 000000000..23e6bc413 --- /dev/null +++ b/agents/gander/work/queue-196/r3/gate/tmpdir.txt @@ -0,0 +1 @@ +/mnt/storage/scratch/tmp/gjDR diff --git a/agents/gander/work/queue-196/r3/gate/withdrawal-sweep.json b/agents/gander/work/queue-196/r3/gate/withdrawal-sweep.json new file mode 100644 index 000000000..7e867ae11 --- /dev/null +++ b/agents/gander/work/queue-196/r3/gate/withdrawal-sweep.json @@ -0,0 +1,9 @@ +{ + "scope": [ + "/mnt/storage/scratch/tmp/g196-tree-tn651z", + "/mnt/storage/scratch/tmp/gjDR", + "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196" + ], + "leftovers": [], + "count": 0 +} diff --git a/agents/gander/work/queue-196/r3/gate/withdrawal.json b/agents/gander/work/queue-196/r3/gate/withdrawal.json new file mode 100644 index 000000000..913f5e424 --- /dev/null +++ b/agents/gander/work/queue-196/r3/gate/withdrawal.json @@ -0,0 +1,4 @@ +{ + "roots": [], + "terminated": [] +} diff --git a/agents/gander/work/queue-196/r3/mutated-paths-stat.txt b/agents/gander/work/queue-196/r3/mutated-paths-stat.txt new file mode 100644 index 000000000..e69de29bb diff --git a/agents/gander/work/queue-196/r3/patch-id-after.txt b/agents/gander/work/queue-196/r3/patch-id-after.txt new file mode 100644 index 000000000..4cd8983e6 --- /dev/null +++ b/agents/gander/work/queue-196/r3/patch-id-after.txt @@ -0,0 +1 @@ +81901f8d5fe07e7b941d398f9240e835df29cb64 0000000000000000000000000000000000000000 diff --git a/agents/gander/work/queue-196/r3/patch-id-before.txt b/agents/gander/work/queue-196/r3/patch-id-before.txt new file mode 100644 index 000000000..4cd8983e6 --- /dev/null +++ b/agents/gander/work/queue-196/r3/patch-id-before.txt @@ -0,0 +1 @@ +81901f8d5fe07e7b941d398f9240e835df29cb64 0000000000000000000000000000000000000000 diff --git a/agents/gander/work/queue-196/r3/paths.txt b/agents/gander/work/queue-196/r3/paths.txt new file mode 100644 index 000000000..72a4b727b --- /dev/null +++ b/agents/gander/work/queue-196/r3/paths.txt @@ -0,0 +1,2 @@ +/mnt/storage/scratch/tmp/g196-tree-tn651z +/mnt/storage/scratch/tmp/gDLo diff --git a/agents/gander/work/queue-196/r3/product-patch-id-after.txt b/agents/gander/work/queue-196/r3/product-patch-id-after.txt new file mode 100644 index 000000000..8587142d8 --- /dev/null +++ b/agents/gander/work/queue-196/r3/product-patch-id-after.txt @@ -0,0 +1 @@ +533c50a4efc6e0dc8fa3b6da4b1456029bbda490 0000000000000000000000000000000000000000 diff --git a/agents/gander/work/queue-196/r3/product-patch-id-before.txt b/agents/gander/work/queue-196/r3/product-patch-id-before.txt new file mode 100644 index 000000000..8587142d8 --- /dev/null +++ b/agents/gander/work/queue-196/r3/product-patch-id-before.txt @@ -0,0 +1 @@ +533c50a4efc6e0dc8fa3b6da4b1456029bbda490 0000000000000000000000000000000000000000 diff --git a/agents/gander/work/queue-196/r3/progress-before-r4.patch b/agents/gander/work/queue-196/r3/progress-before-r4.patch new file mode 100644 index 000000000..c8148bf4e --- /dev/null +++ b/agents/gander/work/queue-196/r3/progress-before-r4.patch @@ -0,0 +1,10 @@ +diff --git a/agents/gander/work/queue-196/PROGRESS.md b/agents/gander/work/queue-196/PROGRESS.md +index 792be51f7..b2a58b1f5 100644 +--- a/agents/gander/work/queue-196/PROGRESS.md ++++ b/agents/gander/work/queue-196/PROGRESS.md +@@ -20,3 +20,5 @@ sage-1464 (2026-10-20T20:40Z): renewed bus/WebUI/CLI and M1-M29 slot is fifth, a + sage-2051 / mos-1193 (2026-10-21T18:45Z) explicitly orders committing and fast-forward pushing the current row196 build before its deferred full verification, then rebasing onto a36523713 on new gander/row196-r2. This supersedes the earlier no-product-commit-before-suite gate for this preservation commit only. Full acceptance remains pending. No tests until Sage says clear. Subsequent batch order: M1-M29, bus, WebUI, CLI, every whole scripts/test-*.sh; TMPDIR must be created with mktemp under /mnt/storage/scratch/tmp, never /tmp. Preserve the old branch. Row252 design may proceed while waiting; no row252 code before Webby approves. + sage-2058 clear: clean detached 64539c96b worktree, short scratch TMPDIR, busy && before starts, pipefail and tee, mutation restoration hash and Git-status checks. M1-M22 killed; M23 rejected by broad runtime SyntaxError classification despite passing node --check, 3 pass/2 fail in killer. Stopped, restored clean, slot returned gander-0031 18:51:50Z. No suites started. sage-2063 calls stop 1; driver fix separately committed, no rerun before next clear. r2/REBASE.md records all ten conflict resolutions. Row252 design drafted, no code. + sage-2065 clear at 18:58:34Z: base killers 14/0, wall seconds interpreter 1.470, socket 1.528, peer 2.092, focused release 7.983. M23-M27 killed, no outer timeout. M28 survived because its generic first replacement now hits upstream sso_for_target, not the intended proof insertion. Stopped before M29 or any suite, restored every file and Git status clean; sweep found 0 leftover node/tee/Python readers. Slot handed back gander-0035 at 19:01:26Z. This is stop 2, awaiting Sage ruling; no mutation fix/rerun. r2/run2/SUMMARY.md and kill-table.json preserve counts and timings. Webby approved row252 design r1; nonblocking N1-N5 recorded in queue-252/BUILD-NOTES.md; code still waits on row196 landing and PRD amendment. ++sage-2079 (2026-10-21T19:09:49Z) accepts product test commit 1bb1e8dd6 and driver 42b47f36c. M5 prior kill stands by identical mutated sha; narrowed M25 differs and reruns. Gate and Duckworth merge-scoped candidate is 1bb1e8dd6. Hold until Sage clear after Herb 215: first focused SSO RED/GREEN, then M25/M28/M28b/M29, then whole bus/WebUI/CLI and every whole scripts/test-*.sh. Third stop goes to Mos before another run. No tests started during this hold. ++sage-2083: rebased six r2 commits onto origin/refactor 6096b051b on new gander/row196-r3, preserving r2. New pushed tip b1076c8b8, no conflicts. All six range-diff entries are =; aggregate patch-id before/after 81901f8d5fe07e7b941d398f9240e835df29cb64, product-test patch-id 533c50a4efc6e0dc8fa3b6da4b1456029bbda490. Requested diff-stat from 1bb1e8dd6 to r3 on all ten mutated paths is empty. Clean detached gate worktree pinned b1076c8b8, linked dependencies, fresh short scratch TMPDIR in r3/paths.txt. Reported gander-0041. Hold for Sage clear; no tests started. Order remains SSO RED/GREEN, narrowed M25/M28/M28b/M29, whole bus/WebUI/CLI and all scripts/test-*.sh. Third stop goes to Mos. diff --git a/agents/gander/work/queue-196/r3/range-diff.txt b/agents/gander/work/queue-196/r3/range-diff.txt new file mode 100644 index 000000000..c41c65f12 --- /dev/null +++ b/agents/gander/work/queue-196/r3/range-diff.txt @@ -0,0 +1,6 @@ +1: 64539c96b = 1: a95afb43b gander: preserve row 196 human boundary build for rebase +2: d218e14bd = 2: 07251d956 gander: record row 196 rebase gate stop and row 252 design +3: ab1f0e576 = 3: 9d3ba3f59 gander: classify runtime mutation failures and bound process groups +4: ed99ca225 = 4: 0b3cf2742 gander: record r2 stop two timings and approved row 252 notes +5: 1bb1e8dd6 = 5: c7e54236e gander: pin SSO and tester socket release argument order +6: 42b47f36c = 6: b1076c8b8 gander: guard unique mutation targets and separate SSO ordering mutant diff --git a/agents/gander/work/queue-196/r4/REBASE.md b/agents/gander/work/queue-196/r4/REBASE.md new file mode 100644 index 000000000..20540c152 --- /dev/null +++ b/agents/gander/work/queue-196/r4/REBASE.md @@ -0,0 +1,47 @@ +# Row 196 r4 on row 215 + +Sage withdrew grant sage-2092 in sage-2093 as a base change. It is not a +mos-1166 stop. When inspected, the active command had naturally completed +SSO RED/GREEN and M25/M28/M28b/M29; no package or shell suite had started. +The withdrawn grant's sweep found zero leftover node, tee or Python/FIFO readers. +Its exact counts and times remain in r3/gate/. No new test starts without clear. + +Rebased six r3 commits onto e54e05463 on new gander/row196-r4; r3 is preserved. +Candidate f8a59e6aadf779d6c42e28cd693bdee1b441f54a. +Range-diff: first commit differs on merge context/integration; later five equal. +Aggregate stable patch-id changed from 81901f8d5fe07e7b941d398f9240e835df29cb64 + to 22057b82181f42301c8819fbb5d0be134c8c79bc. +SSO test commit stable patch-id remains 533c50a4efc6e0dc8fa3b6da4b1456029bbda490. + +## Every conflicted hunk + +1. BUILD-LOG.md append hunk: retained both row215 build entries, then row196 + append-only entries. No historical entry removed or rewritten. The raw + conflict and resolved context are in conflicts.diff and the candidate. +2. packages/bus/src/server.mjs import hunk: retained row215's LIBRARY_VERBS + alongside HOST_VERBS, HOSTS_VERBS and PROJECT_FILE_VERBS, then retained row196 + inspectInterpreter and createPeerReader imports. Library requests keep their + awaited branch; every proof still passes kernel-peer verification and every + transient cap still uses the idempotent release closure. + +## Automatically merged overlaps inspected + +- runtime.mjs keeps library ensureMirror before socket readiness, library service + callbacks and filtering of library mappings out of code-project root scanning, + alongside row196 interpreter receipt, reader and principal binding. +- server.mjs retains LIBRARY_VERBS in the async request branch and release() on + its finalizer, so one-request Console proofs are neither lost nor leaked. +- webui CLI keeps libraryFile/libraryStatus handlers on both main and tester + handler objects, alongside SSO lifecycle and Unix tester startup. The bus's + library authorization remains authoritative; no tester privilege is added. +- stack-release fixture includes packages/library/src in its copy closure while + retaining row196 optional long-path dataName for refusal tests. +- stack-release test rehearsal closure includes packages/library/src while all + proof/socket and SSO/socket tests are retained. The SSO test patch is unchanged. + +Mutated paths now also contain upstream library changes. Do not claim the r3 +empty-stat proof still holds. mutated-paths-stat.txt records the exact delta. +The next grant must run the requested mutants and whole suites on r4. +whole-test-union.json lists every test file touched by either side and the eight +additional whole files outside bus/WebUI/CLI. Test fixtures are reviewed as +helpers, not invoked as independent tests. Every scripts/test-*.sh remains whole. diff --git a/agents/gander/work/queue-196/r4/audit.mjs b/agents/gander/work/queue-196/r4/audit.mjs new file mode 100644 index 000000000..c4fbb6ff8 --- /dev/null +++ b/agents/gander/work/queue-196/r4/audit.mjs @@ -0,0 +1,8 @@ +import {readFileSync,writeFileSync} from 'node:fs';import vm from 'node:vm';import {join} from 'node:path';import {createHash} from 'node:crypto'; +import {guardMutation} from '../mutant-guard.mjs'; +const root='/mnt/storage/scratch/tmp/g196-tree-tn651z',out=new URL('.',import.meta.url).pathname; +const source=readFileSync('agents/gander/work/queue-196/r2/driver.mjs','utf8'); +const context=vm.createContext({});vm.runInContext(source.slice(source.indexOf("const p='"),source.indexOf('const hash='))+';globalThis.rows=specs;',context); +const rows=[]; +for(const [id,file,,,mutate] of context.rows){const original=readFileSync(join(root,file),'utf8');const result=guardMutation(original,mutate);rows.push({id,file,targets:result.targets,accepted:true});} +writeFileSync(out+'uniqueness-final.json',JSON.stringify(rows,null,2)+'\n');console.log(rows.length+' definitions pass uniqueness guard; no mutation tests run'); diff --git a/agents/gander/work/queue-196/r4/candidate-files.json b/agents/gander/work/queue-196/r4/candidate-files.json new file mode 100644 index 000000000..bb87cc13b --- /dev/null +++ b/agents/gander/work/queue-196/r4/candidate-files.json @@ -0,0 +1,979 @@ +{ + "candidate": "f8a59e6aadf779d6c42e28cd693bdee1b441f54a", + "base": "e54e05463", + "scope": "immutable Git blobs; acceptance still pending", + "files": [ + { + "path": "BUILD-LOG.md", + "kind": "evidence", + "sha256": "d49bc248f696fcf370653a425b55424d8ce7921b05452e1e5c976ad1c6f3f46d", + "baseSha256": "b7c8f906f2db095dfe02d29b4064836af83ae877a87b38c09466b8c9a327e019" + }, + { + "path": "agents/gander/work/queue-196/BUILD.md", + "kind": "evidence", + "sha256": "1c81ce9d3aaf5a12d841b7d60d1d36294862004126b786ab6a369cb59daf3a90", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/DESIGN.md", + "kind": "evidence", + "sha256": "37bb8c99b25febd7dc95b063d76c622e2b6ee0add8e0ecce4543ff81d6259715", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/MANIFEST.md", + "kind": "evidence", + "sha256": "88fc9747b133b4a2aace1015cdc4c6e0e06972955d47a00619613a4f6053f825", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/PLAN.md", + "kind": "evidence", + "sha256": "24cb6a7413bb461b33730367203741beca320101fc5dcd9fc60eca6e195de6b4", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/PRODUCT-FILES.json", + "kind": "evidence", + "sha256": "c9e5ac5ec9e43d57eac429e1fc5857c8451d1d77d4bba408adb492fd10d83ffd", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/PROGRESS.md", + "kind": "evidence", + "sha256": "2cc87c3ef0c8f6e6b6b298e67dc11e6dda8ca2cbbde604ff92c6c43cde7a0ebf", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/channel-proof.txt", + "kind": "evidence", + "sha256": "616d0a90f79ac541f5c95ad0f581580c0c3fd15bd17be38b5dcfc89fdf46293e", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/human.txt", + "kind": "evidence", + "sha256": "a330dbbaed0d5773967b865fd5e83580b913dc01c45de91c1728c7d4e1288b19", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/interpreter-fifo-red.txt", + "kind": "evidence", + "sha256": "05b9dab3e668241e8fbd03b4b2d48354d743afc2508f573ab43152dc4d18a3d8", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/interpreter-gate-red.txt", + "kind": "evidence", + "sha256": "bdfc30704be69b508adc1aa4b709e5f558c6e09a5ae83905847fddb267e5808e", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/interpreter-green.txt", + "kind": "evidence", + "sha256": "1d16dd2903d380ebd19bc33fbd36e52d34ba77b4e142c043a03a45551000fb20", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/interpreter-red.txt", + "kind": "evidence", + "sha256": "4ab32265a026628c19008121f444d07c8b5d150fd71e3e30d5ad33ffb7164e3e", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/node24-peercred.txt", + "kind": "evidence", + "sha256": "cef6d0ebbb0e68de9fdd205e2e82da54b865952d533ee9f1b514b2e2d22d3e06", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/node24-principal.txt", + "kind": "evidence", + "sha256": "5f487126f9240459c7eeb49434d9361f0b47a861adef34faa51c2dbcd13c78a3", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/node24.json", + "kind": "evidence", + "sha256": "756dafce4ac4f7a6ed7eaba8f2156b889dc3c760d2ae691eb1d1b3986ccdb8a6", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/peer-helper-red.txt", + "kind": "evidence", + "sha256": "16be13a0f525f67de28d520021dc2e089be3d7f7358fabc57d3aab88cd619429", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/peer-shutdown-red.txt", + "kind": "evidence", + "sha256": "ea68c9401d14bb0460000b6a8ef09de57ff1482be5e85941392e586ba3ce9464", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/peer-transport-green.txt", + "kind": "evidence", + "sha256": "dd2bdeaa3587d98528d704b22cb610c4cd4f32c950c9ca07d1626371a43c3249", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/peer-transport-red.txt", + "kind": "evidence", + "sha256": "182e9fc16a67d6c683c7231a5f78bccfefb9a0d635e2c2b1b5a61f797509981d", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/peercred-debug.txt", + "kind": "evidence", + "sha256": "d4e1b17e433d5cc78ea15420953b2e3ac485371d9282a3678dc61ce1de7472c3", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/peercred-green.txt", + "kind": "evidence", + "sha256": "12b7772e6d3ba2ba760cebf7290f8dcc03ea48a016b391bb17803cbbbf5a5a55", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/peercred-red.txt", + "kind": "evidence", + "sha256": "912071b254adf39814a2175f4611969ed055daf567969afc8a8011e96a6a6090", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/peercred-resume.txt", + "kind": "evidence", + "sha256": "79a2c8c730aaecf675c5bec517621b710776ce75af5c1122e7509442efe7ff33", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/principal-green.txt", + "kind": "evidence", + "sha256": "7c3c17fa91c070bc76f1bd6dcc27b8efec4489504f01e4a8f7bd99eaf5cb1540", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/principal-red.txt", + "kind": "evidence", + "sha256": "bf1f4c56f7b1c52fd7abb9f29317e3169280310ec3fabcde5c9c11af7b703098", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/process.txt", + "kind": "evidence", + "sha256": "4f9e40ce6745a73d9bdc52466914974d7f2e8c28cbb7612be1b3d5115c1e0cac", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/proof-cli.txt", + "kind": "evidence", + "sha256": "0cb7311871a73f204fbd7ea08d08a5e0758beac62610d4fc2ab39b9f1552ae10", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/proof.txt", + "kind": "evidence", + "sha256": "56050395b89adcd84c1ab53830e3a5132481744c93db633c5e2ae599f465d38f", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/refusal-baseline-comparison.txt", + "kind": "evidence", + "sha256": "e98c74133eaaa54a7a626629e54ce4a2df631bb2f769e6e48e67062e37856f0f", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/release-path-green.txt", + "kind": "evidence", + "sha256": "ed66ec271578e524202f34c7c00ec815a634c711718774fe61d3aaada298e0a5", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/release-path-red.txt", + "kind": "evidence", + "sha256": "cc23a9f1545db47105c7ffd85ca30a52adafb85f5405260de250d81617e7ff07", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/release-proof-order-green.txt", + "kind": "evidence", + "sha256": "dcbd08f4c9610ad0a7ffb40587c46379f2bbf8c0e90b39588f7c6169d95e3922", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/release-proof-order-red.txt", + "kind": "evidence", + "sha256": "c57fa1e0f941c1cc564a100ef54fbfa3b5fb5cf843eb98174cefc9a0e2d4b13b", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/release-socket-green.txt", + "kind": "evidence", + "sha256": "bc31709f84b707405b446517cab34b88b35c9366ca0ee1861e699af7d5268e2b", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/release-socket-red.txt", + "kind": "evidence", + "sha256": "585ecca1cf7c74359422f9ca20ec31973909e1f674e78e342872dc8203001895", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/service-socket-green.txt", + "kind": "evidence", + "sha256": "630435e8c6556086c2040c2473509fed7d923fd158a7129b87a628a2bf22c940", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/service-socket-red.txt", + "kind": "evidence", + "sha256": "bfc08484143e35bf28dc5b318f7b1c1b8e4b210a2faf568dc0a1ddf73dad11f8", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/service.txt", + "kind": "evidence", + "sha256": "1511c627cef7e974f5524af6d00c1b2ebeca957191778c8e34dd9d249ebc9da8", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/stopped-gate-counts.json", + "kind": "evidence", + "sha256": "65399c10c808c9e5a84cc1980d2a29b482f16003a6a6aaedd39738bc9af1d1f4", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/suite-bus-run1.tap", + "kind": "evidence", + "sha256": "0196e6231925db428bfa967fbcc19aacceefcf76f0fbec0cab41b8577b670e7d", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/suite-bus.tap", + "kind": "evidence", + "sha256": "63b3962babee8315ab6fb485b979a236b2473bb9ca1bc2c4f092d3a0a08feae2", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/suite-results-run1.json", + "kind": "evidence", + "sha256": "bf39c89bb4b8e1fdd844d215ca6adaa4886c95fee9692be3b115fbe66f0c6abe", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/suite-results.json", + "kind": "evidence", + "sha256": "4d270eff7002a30f9f2c681dd96b52e745429169b7d02c1e8c34ef3f20b6fac2", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/suite-webui.tap", + "kind": "evidence", + "sha256": "a6541496e8c06b945661a7a95e3ea2b129c773cd3abf14e78e64af5fd61bed26", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/tester-browser-focused.txt", + "kind": "evidence", + "sha256": "b236e29c35c3ecef8e00ce25ecbc84018bc7602b3430e354081d01f9a960ce82", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/tester-cleanup-blocker.txt", + "kind": "evidence", + "sha256": "9c816e2ac45a9dee6dcb970adff945fee68c767d35841eea831d02014c1b94ee", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/tester-cleanup-rename-green.txt", + "kind": "evidence", + "sha256": "8c67b9bd8ce78a5ff51c6311a344f50c1348f7b9c5b5c1d7fd5b4b4f0a1a5627", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/tester-cleanup-rename-red.txt", + "kind": "evidence", + "sha256": "59caa888184a01253f6ccf7cf07c2ed5ca1980d746231b3cf63086f87e633130", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/tester-cli.txt", + "kind": "evidence", + "sha256": "c455da1e3121940ae687a816b549480cd2277df837e122a94243e145a7537a46", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/tester-http.txt", + "kind": "evidence", + "sha256": "90b24f9f9d5c423e8e1ae1df978bc034db6cd047dc5469a66e83577611ded171", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/tester-listener.txt", + "kind": "evidence", + "sha256": "8f82a6b3b5c86ab4f8e3dd3ee7d8f47e1ddf26b42e634a693bf444b3a0bc1281", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/tester-socket-green.txt", + "kind": "evidence", + "sha256": "37cdf422fdf56db4e99932c3af20e4499400e8f764952af610dea1c3702a6bfd", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/tester-socket-red.txt", + "kind": "evidence", + "sha256": "b6458e2d22ddfbe294a2cb8d060da72f944a44cc1044467165f4af2b67274f76", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/tester.txt", + "kind": "evidence", + "sha256": "d6bd874d224b82a6e7b5ba9f5bd844b5a6b835683c86c6bfe82498bfbe34977a", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/transport.txt", + "kind": "evidence", + "sha256": "860fbc3a76dbd053c982ee82e4d00ffdde22ff78127c15c1c881ceccd7739621", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/evidence/webui-bus.txt", + "kind": "evidence", + "sha256": "0eadbc5f23e6516b6c0d0991f2f82d2d35484476573d57f5cf0d13a4701553e3", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/mutant-guard.mjs", + "kind": "evidence", + "sha256": "6be31cbacd0080586d13896ee14591716d2f88254143959120fed259cbe7bfdb", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/mutants.mjs", + "kind": "evidence", + "sha256": "ad5940cd822223698f4187aefd6195b59b3463d9005dc214e8956c5fd23fbfe4", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/REBASE.md", + "kind": "evidence", + "sha256": "c5c2445c291dd0bf958fd1009521ac4bbb78b512d22a27443c9a210c44fbaf6b", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/batch.log", + "kind": "evidence", + "sha256": "0382a38d6f620756fd992aa1d726f64ac2d79a0e94fe33a66833b40afd747f9d", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/busy.py", + "kind": "evidence", + "sha256": "4336592b40bd580b9287114021236f910ef2d7a8de65bfc8476d69293a5620ed", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/driver-fix.diff", + "kind": "evidence", + "sha256": "e3ea8d94f28f3ff83abaf02ae23c794000e96b6f021d39707825ea21c8a0ec0a", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/driver.mjs", + "kind": "evidence", + "sha256": "0f5801728188f341d53bcc81217fa60f219301396634fafd829f4c9652ec4c9a", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/mutants/M1.txt", + "kind": "evidence", + "sha256": "0498cfba5ed4594a0895236f719e2bd2ca12ff19fc3d056ef4de0bd1dba9681f", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/mutants/M10.txt", + "kind": "evidence", + "sha256": "49e4fdf73926b18ded746c02b1ab74e444abe24bf5321c6bb5455ece808d4236", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/mutants/M11.txt", + "kind": "evidence", + "sha256": "7a3d4d79d340f00856d8b6e8c981f2210ac1943f3ff4e5ec200e009586ef01fb", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/mutants/M12.txt", + "kind": "evidence", + "sha256": "f6546565d2c9e4ae61f9fd721869642eeaf1a97efc2366d21ba4875b47eb97b2", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/mutants/M13.txt", + "kind": "evidence", + "sha256": "8ff49c13d3effacba6a6b5a8636681ddfc198c7c4240bbeb24ca8fb58154b5e4", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/mutants/M14.txt", + "kind": "evidence", + "sha256": "2dcd9d882ce88059abcba944418fc919bee529180567c3604903aa58ec9337d0", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/mutants/M15.txt", + "kind": "evidence", + "sha256": "9f83506e5d62f7642d1b3225228f29f250768d4d110d256c343ab6092e78d2ed", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/mutants/M16.txt", + "kind": "evidence", + "sha256": "ad3cb5483aaa580e2bc2fd01dc127953e71eef5b2e1aaf2c432cf3d37f75a0a0", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/mutants/M17.txt", + "kind": "evidence", + "sha256": "faab77634767026906cd5e4d2ac25c976da0b1d46eac39beeb453a65684261d3", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/mutants/M18.txt", + "kind": "evidence", + "sha256": "5c9bf75c80c81fcea5cf9ecb8917fdb9c9c69d8e5b5685abbda141ccc07fa83c", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/mutants/M19.txt", + "kind": "evidence", + "sha256": "b65b302ae364f3c6402759af0fc9998695bb1abda06e1e55d3a3c4e9059e57ae", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/mutants/M2.txt", + "kind": "evidence", + "sha256": "1da13202221bedf81e3326699de3775c79179162c6dcbd23b563d8060d7d9f17", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/mutants/M20.txt", + "kind": "evidence", + "sha256": "13316522038aa980680cdc5c72faf8bd6bfe7e0d0d71d01f54c4ea1a369c99ca", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/mutants/M21.txt", + "kind": "evidence", + "sha256": "6f3e067071768135ddba35a6df8963965b0095b881806703fc8e2567d58917db", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/mutants/M22.txt", + "kind": "evidence", + "sha256": "365d7a41abf839404eccec2615c87775749e748aa11771c6ae8cea5e25ddb065", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/mutants/M23.txt", + "kind": "evidence", + "sha256": "7fd15eaaf6c7a34f13e7648b1b2dd8f56a97beeba7859caf8556fd079d046ce8", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/mutants/M3.txt", + "kind": "evidence", + "sha256": "9d0a74d016117a1de8ecb09c14520ed0e73b5d54c2b4a79299af6b8099019098", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/mutants/M4.txt", + "kind": "evidence", + "sha256": "f2a8d0bb0477df56b573c44362f4c847e15ad0d14ec43cb68b8371a38437a940", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/mutants/M5.txt", + "kind": "evidence", + "sha256": "d60d2d9a759a3558bdd00fce8ed2717f7f42f625598a5be20234c6b0ee42034e", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/mutants/M6.txt", + "kind": "evidence", + "sha256": "4df9bc439feca5397b19ab794607cff57bfe72a8275b30074a05dedc9e23a2f7", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/mutants/M7.txt", + "kind": "evidence", + "sha256": "1b9480dff19d85236598c2c7b83477faf65a0486860da7e8a95990178cca371e", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/mutants/M8.txt", + "kind": "evidence", + "sha256": "bbc62af7595ac83cc5c96f82923eb5c63a8fd51f71c1067d41bad055d7821846", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/mutants/M9.txt", + "kind": "evidence", + "sha256": "57c936cf714b0e918985082bd47119565cdeeaf57ee9ce10a7621652c889ffd7", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/mutants/results.json", + "kind": "evidence", + "sha256": "769f34c681c6de6a12b5e92039c512cc13a93af5ad2bd0ee4363e37f32983096", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/patch-id-after.txt", + "kind": "evidence", + "sha256": "dddd4a83e27def111a5b334cf6d7cf6ffd56cf2e65e11627026d9e64596bc667", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/patch-id-before.txt", + "kind": "evidence", + "sha256": "016f641ab4861889ba23f06b326470fa30e0f311aeb798f19bc6f00acd33b983", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/paths.txt", + "kind": "evidence", + "sha256": "b83b8dfaf435aea743b1ccd3bd95e6b409510d7963456bfecb4fbc448ad674e7", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/range-diff.txt", + "kind": "evidence", + "sha256": "da026ef46fc16c1a40db3a5684ef5300748d78f458ae56f23a9bd3b86cacffd0", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/run2/SUMMARY.md", + "kind": "evidence", + "sha256": "0d8cb0339a746d29fdc1a3d353a96b231d18f729b1ae3c5f3fc4c197850bfd50", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/run2/base-driver.log", + "kind": "evidence", + "sha256": "6066e60f3616daee901e3be46db564972ede565479cb7bf3b7e7d9649e731e19", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/run2/base-interpreter.log", + "kind": "evidence", + "sha256": "dd8d13704ac9c06f05a445c0130d54b36d2bd128ad9d2a71696155c3892a7780", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/run2/base-peercred.log", + "kind": "evidence", + "sha256": "a8a9c5ab5e7de30c6e13c7b3d6a56485c35cd79b05bb3e71566250a321073f59", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/run2/base-release.log", + "kind": "evidence", + "sha256": "2eba721e258d1c04cf6700d4b869e739e9a660d944632b5872916025a73ad387", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/run2/base-results.json", + "kind": "evidence", + "sha256": "5c8fd9519b3ae7c62cb61ad418602ce53310da56a110e5fb8e1d51fcd4492de4", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/run2/base-socket.log", + "kind": "evidence", + "sha256": "53580eb2e8a328880f9621f43f3a6ad90d49dd497ed434c07e2e2f8ab76d5767", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/run2/base.mjs", + "kind": "evidence", + "sha256": "a33b644350cca634e482728c779288dd65100d6ba3de601c17cf423d88a4388b", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/run2/driver.log", + "kind": "evidence", + "sha256": "00328f9d386e5d76d598124e27df19edf81cf71016ff0ef25ce7c07d0881d265", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/run2/driver.mjs", + "kind": "evidence", + "sha256": "2b8914f01b313c4725720a3136859c3fc14070cfce84ea6c43c99d4ca2c62701", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/run2/kill-table.json", + "kind": "evidence", + "sha256": "78b1c9a21a4b55d7563274967e4f0d8016a012c0093994d78b177d5771a740dd", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/run2/killers/M23.txt", + "kind": "evidence", + "sha256": "b43a9e2da2ecbdbcc44efe1dab472b0c76291c38c447e930c714274a67f03c92", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/run2/killers/M24.txt", + "kind": "evidence", + "sha256": "47a1b116c44ccafef6aaa32f2bfcfcb50dff48f9efcdeef07de7c5b646a7be57", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/run2/killers/M25.txt", + "kind": "evidence", + "sha256": "20f2ac0988475e6bf509dfec7b2be5f3a915e830f706b879e9443a23a58f320f", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/run2/killers/M26.txt", + "kind": "evidence", + "sha256": "bbcd65bd1fd66a906d2e06ca629df2f240ec09a739d0cb80807e44c8c61f7e2a", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/run2/killers/M27.txt", + "kind": "evidence", + "sha256": "022a3943afb5a7b4995c1b68f6dfce3c2bec6cc400d2b18413b6ef9abd2e24e5", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/run2/killers/M28.txt", + "kind": "evidence", + "sha256": "fb0c775b247e25df68db63217ee9c608e6b2e53ac0ac27928c19421e0f9070e3", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/run2/killers/results.json", + "kind": "evidence", + "sha256": "27ec554d01e0260c9e21273177b85e926d8b2e183c6960536afbffe7befc015f", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/run2/process-sweep.json", + "kind": "evidence", + "sha256": "ca01381ac96a2dcfdce28a8884065404579ee7efd1593bafcc10457aec938244", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/run3/M25-narrowed.mjs", + "kind": "evidence", + "sha256": "cd20a831fbaecbd1aedcbb634062786099266d0a6196d9b8987706dfd5a6aa1c", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/run3/M25-old.mjs", + "kind": "evidence", + "sha256": "2668be95c72562a76987ed3cdffdc8ee029ac15bd12eb8b23f4a541eb4c53e28", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/run3/M5-narrowed.mjs", + "kind": "evidence", + "sha256": "803bd73ccaf0730a7ab69c70d513257484df788fa96c13c3c4ed87664b67c45a", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/run3/M5-old.mjs", + "kind": "evidence", + "sha256": "803bd73ccaf0730a7ab69c70d513257484df788fa96c13c3c4ed87664b67c45a", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/run3/audit-initial.mjs", + "kind": "evidence", + "sha256": "5e96fc92dbc5d1e27145ae2e7adcd401881541b7cc2e1861fec88167b03a0abe", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/run3/audit.mjs", + "kind": "evidence", + "sha256": "17029af94b3bfabe160642cd0b2ec9f96ed5a3430fe7147c452c7dc4def36577", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/run3/guard-refusals.json", + "kind": "evidence", + "sha256": "deb52f06f65606ef9353be4f6d2afda8ccd1041bad58f5b8fe70acf8efaa64fa", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/run3/narrowing-sha256.json", + "kind": "evidence", + "sha256": "3b8d1331452f13efadb5288fe0e15a92daed051ce2f1eda839c197d07a1fbff5", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/run3/uniqueness-final.json", + "kind": "evidence", + "sha256": "df23925d7a1ec7b37ac8d3480ad17edaac04b4dc1f267f49aef44dae620ea490", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/r2/run3/uniqueness-initial.json", + "kind": "evidence", + "sha256": "210a0dd36d941c3ae1d99ddb0b02ca369b88db1d66802ced26db2b8b5b0f1ea9", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-196/run-gates.mjs", + "kind": "evidence", + "sha256": "bdf78e8a1922efb00e20767658f4c225cbe6492782b35a9112f538eb9ddef731", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-252/BUILD-NOTES.md", + "kind": "row252-approved-doc", + "sha256": "6bad6178386f7191f06d2a85d64cc8642689a8da2d1c0b4fa2e1adf0a01980fe", + "baseSha256": null + }, + { + "path": "agents/gander/work/queue-252/DESIGN.md", + "kind": "row252-approved-doc", + "sha256": "d85bd103bc0a2cc96fe47b9f8a6d4e0e16d90ee398ef8ffaa2fe1c55d926d23f", + "baseSha256": null + }, + { + "path": "docs/TOOLS.md", + "kind": "operator-doc", + "sha256": "4f5e1f7cb21d86cced206e25abac032d75c7e3ba683d6f80f42001d5b4211e05", + "baseSha256": "17528973e2ed9748f5b0a9218feb5b2ae9789c13998e29e448b5775aae3c561d" + }, + { + "path": "packages/bus/README.md", + "kind": "product", + "sha256": "10c996d323ac46d45548f7748d40b246de93f8c5eacae9f951c6eeb5dcc62697", + "baseSha256": "30db0bea82f6f9c2000b68797c461d1fb26726c4f983e6e984b36014c9865d15" + }, + { + "path": "packages/bus/fixtures/peer-client.mjs", + "kind": "test", + "sha256": "60720461a7994011a9a30594715eb2c992be699cd61c656e77cbd609ad05328e", + "baseSha256": null + }, + { + "path": "packages/bus/src/human.mjs", + "kind": "product", + "sha256": "0c6d96abe4607cba0b02b0638a2fc217ff8135bac9a47761a0ef015fbe9d3079", + "baseSha256": "b995fc5cff3af8ade4c990d0e3bebf9d83829e00f034ebc9c3dcfd05f252b573" + }, + { + "path": "packages/bus/src/interpreter.mjs", + "kind": "product", + "sha256": "d5d98a9133a1b449acc48143fd559d890a470c6ea210b30b9b70e491e6cd855a", + "baseSha256": null + }, + { + "path": "packages/bus/src/peercred.mjs", + "kind": "product", + "sha256": "29c88655e8b9aed8db604573c9213fd9f3c40ef35ff04f4eda8fbe8f1b8a32d7", + "baseSha256": null + }, + { + "path": "packages/bus/src/peercred.py", + "kind": "product", + "sha256": "d1536a8f472fa5b3773adb10555529ed049ad63b647c0b44c00ce5f25ce09f85", + "baseSha256": null + }, + { + "path": "packages/bus/src/principal.mjs", + "kind": "product", + "sha256": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd", + "baseSha256": null + }, + { + "path": "packages/bus/src/runtime.mjs", + "kind": "product", + "sha256": "f060bb55bb3abbc9f5d776ce7728a8e49356a6c5307bca8411e6163f0e044e83", + "baseSha256": "c759e665514a5bcad40536bc9f979837187fe6523462b3c0a0687182885c3ac6" + }, + { + "path": "packages/bus/src/server.mjs", + "kind": "product", + "sha256": "7be306c830aa98763b34b329995b40e9df443483fe20fcd69100a3acb6311bd6", + "baseSha256": "207c7a76752c753ef7380f18f9ce1a4f23e8fa35142973b6358aaf0c45f44899" + }, + { + "path": "packages/bus/tests/channel-proof.test.mjs", + "kind": "test", + "sha256": "e99133c3c957a1e856e404343721add2430e4a0d8c75452517aef04942af56ab", + "baseSha256": "98f12f509f0e292fa0b0e3924834f9d0f285c08ea5c4d22057566c49e2bd6c68" + }, + { + "path": "packages/bus/tests/interpreter.test.mjs", + "kind": "test", + "sha256": "d19779b97e80ed3d62f58d0e798df46c23f45fa02b14fb4ac7a2ff4690a734e2", + "baseSha256": null + }, + { + "path": "packages/bus/tests/peer-transport.test.mjs", + "kind": "test", + "sha256": "a39af877a2d9143cc8d0584af0d603ca7ab651db8787e5816579762f17295887", + "baseSha256": null + }, + { + "path": "packages/bus/tests/peercred.test.mjs", + "kind": "test", + "sha256": "2c4c0bed41e546ce94535d8c4547b1cf5552a181183525dd1d52e2af1d64ccb6", + "baseSha256": null + }, + { + "path": "packages/bus/tests/principal.test.mjs", + "kind": "test", + "sha256": "cefbc0688d823c69196d94bb71467884acd639070721286d7e8e4e986c8240c1", + "baseSha256": null + }, + { + "path": "packages/cli/README.md", + "kind": "product", + "sha256": "95c7acdb47f753d1e129adaa90b5937318d8d006ca47be9d92729fdae013776f", + "baseSha256": "66ad221829e3b710106379070e5decd3b6e7bfe352175c02fba1463bd18801e0" + }, + { + "path": "packages/cli/src/tester-http.mjs", + "kind": "product", + "sha256": "4bd7bdf0898844684ebf9444b110d2c5b6fa874b2681183e54f1f62f97823192", + "baseSha256": null + }, + { + "path": "packages/cli/tests/stack-release-fixture.mjs", + "kind": "test", + "sha256": "a7cb20db2941b3b3abb09bcaa55eac92a1d420cf4ec79c6f83e4bb3235e04a2b", + "baseSha256": "86a3c15446d4c119206097c754cd15f5bef7b7e93c9f16e9d8696ec8c475eea9" + }, + { + "path": "packages/cli/tests/stack-release.test.mjs", + "kind": "test", + "sha256": "2a5a896831c1bab2ae239c90651592c95d6d08c151df518a5f6cdae65bded3ef", + "baseSha256": "46cc95a6e75a89b907cdd5e9bd03853e1d1f75f1ced81084d968c5476466822e" + }, + { + "path": "packages/cli/tests/tester-http.test.mjs", + "kind": "test", + "sha256": "fbaa36e64129aee324341364bde831c379c098b97932cceadb7fcaa7909d4b20", + "baseSha256": null + }, + { + "path": "packages/webui/README.md", + "kind": "product", + "sha256": "04b7c1165c4fa73137a72e8373d70fd7d96a5897b5511170e6d41908a7667e96", + "baseSha256": "68e5db18de89d59357171f3393c9803043f00d6388999a1e44a312365fe2fde5" + }, + { + "path": "packages/webui/src/bus.mjs", + "kind": "product", + "sha256": "934ab2f9b6bde72aafe7814758550c283eb25a4f3a23b284021b13718d67178f", + "baseSha256": "76a1b57858c4aa41071746713a196299264851c18322a6f9869d553f0362d421" + }, + { + "path": "packages/webui/src/cli.mjs", + "kind": "product", + "sha256": "2c7f791e53b4bce8dc23aa974a8fe4c5d7b59204331a3d8ac398a31e530517a2", + "baseSha256": "e98fd2fe4e621d5b4fa1ed95c4d4585469e7ab7a11dd379dc541dddb1b1a1f02" + }, + { + "path": "packages/webui/src/serve.mjs", + "kind": "product", + "sha256": "da624f188c69e016ff82e1d1dcae1c579e68a57f0f25d773bb5d8bca56b80ee1", + "baseSha256": "333d474b1c7e753938aedc639c08f9db0e787faf56aa8068d013fd304a0b3b7e" + }, + { + "path": "packages/webui/src/tester-socket.mjs", + "kind": "product", + "sha256": "1c1fe0c795adac97f28502564a75f26d5666d9be5ae51169f7dd5bb7741fad16", + "baseSha256": null + }, + { + "path": "packages/webui/tests/browser.mjs", + "kind": "test", + "sha256": "2f3ea92cbe1ca115301ee1e3b8fc55a206842606237446b700881ee57a1b18cb", + "baseSha256": "1e70a0175f1d660f6b71449a1423ece83fbe8332108960fa9aff6f7a5e48022a" + }, + { + "path": "packages/webui/tests/proof-cli.test.mjs", + "kind": "test", + "sha256": "edef361c4654ec010809c12c87c00197ec6e6b8337863068c4ffa144e291e300", + "baseSha256": "a1aff7eec4e2f90533bacaf14e2fdeaba3a6a8a87aae700ec6d68e3bd536af73" + }, + { + "path": "packages/webui/tests/proof.test.mjs", + "kind": "test", + "sha256": "5f34d699a1bce6f46f286def1a93fdd4d863d06bec6839677fae1041be7153dd", + "baseSha256": "c06a1e673ef6f3df8f0473692c828aeba853369d2b668e821f1d41e6340b6503" + }, + { + "path": "packages/webui/tests/service.test.mjs", + "kind": "test", + "sha256": "6457debc3d233a24643be00e4876e1129db664da2fbf5cc7168f3e371c46f313", + "baseSha256": "845313239547ddbc478090b29f96385f0b8853e5087c572393be328e7075f578" + }, + { + "path": "packages/webui/tests/sso.test.mjs", + "kind": "test", + "sha256": "3c1d2481eff2271c1c83f7ec2e9d616ac22600d032af23afc47f919c58f1b9ba", + "baseSha256": "67f93deb65b14dc213615e5e674fb908a2d13b253c8c0e4b8c0cd5476157a06a" + }, + { + "path": "packages/webui/tests/tester-browser-fixture.mjs", + "kind": "test", + "sha256": "9215ff92df774ba1e83819b87f758b53c8f3d19c2824c916490165914f1cb9e8", + "baseSha256": null + }, + { + "path": "packages/webui/tests/tester-browser.test.mjs", + "kind": "test", + "sha256": "89ffc5cbed1630a523080e8561d3678c1f781fb657199a5cd6cdb8189f082c73", + "baseSha256": "3cc6def0c8cfb6cf7bb91a52df6e57f18071549588b35394e0083f7dc938dacf" + }, + { + "path": "packages/webui/tests/tester-cli.test.mjs", + "kind": "test", + "sha256": "23219434713fbd283a1e5cb1a373ed9d19d0963e171636dbf39bed3d60cd1316", + "baseSha256": "8bf4491f7982399b4162cfbe36d0b68888e99ceb2cbaefefc2361732dd95e0c8" + }, + { + "path": "packages/webui/tests/tester-fixture.mjs", + "kind": "test", + "sha256": "7d4f3a59d21675807b1bfb92d40b7378134df450590bc6d42fa4103ab1343348", + "baseSha256": "2169803c50815d214cab120eaa9d1542aa3b96bfe4738d68307eb0b92c1213f3" + }, + { + "path": "packages/webui/tests/tester-listener.test.mjs", + "kind": "test", + "sha256": "7f0fc2daead11048cb86e0a74b6a223314785b1740a2927461d012b876a69f18", + "baseSha256": "aed4cec37401bc7953b1a872349ed77c70210fcfb75ebf6d4e881a393f92c7e9" + }, + { + "path": "packages/webui/tests/tester-socket.test.mjs", + "kind": "test", + "sha256": "c01a942da1ad66a08a4e7c92d3c7e64f517530acfe5517f1e9895767d5ea3c0b", + "baseSha256": null + }, + { + "path": "scripts/stack-release.sh", + "kind": "product", + "sha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2", + "baseSha256": "1896d6518a502d340dfe30d402102b8c5cd5d8520757387b018b636755eb5d36" + }, + { + "path": "scripts/webui-service.sh", + "kind": "product", + "sha256": "6e7069cca9f7aef84c17f15611f2d7e0d09083a363c23da8dbd14d3ed29f0f40", + "baseSha256": "39f2b8e4384978538337d85d740a3eaf68b28529c0e7cfdaca105b9177ed678a" + } + ] +} diff --git a/agents/gander/work/queue-196/r4/conflicts.diff b/agents/gander/work/queue-196/r4/conflicts.diff new file mode 100644 index 000000000..25776cb8f --- /dev/null +++ b/agents/gander/work/queue-196/r4/conflicts.diff @@ -0,0 +1,40 @@ +diff --cc BUILD-LOG.md +index 36109816c,cda73e0b0..000000000 +--- a/BUILD-LOG.md ++++ b/BUILD-LOG.md +@@@ -5177,5 -5177,13 +5177,18 @@@ Before: managed project/thread verbs ha + 2026-10-21T01:28:05Z | Darkwing | row 232 #1734 installer I1 build, round 1 in review | Before: stack-release.sh managed only user units (systemctl --user), and stack-copy.sh had no bundle copy. After: --units external (adopt, activate, rollback --to, status, confirm, revert, gate --since, AWAITING-UNITS, stale-start, external-pm, --plan --expect-from) and stack-copy check --units external, copy --bundle FILE SHA, wrapper ID --create; user mode byte-identical to the base by test. First build 0af0c73c6 on 00d4cc1f6; rebased onto row 200 (cb5fdb064) as a0ffabc3f on darkwing/row232-r1; --sso refused under external (D9), row 200 config_checks run under external (D10). Gate on Sage's slot (sage-1618): cli 561/0, every scripts/test-*.sh green; 17/17 mutants killed. Results commit 84f1a91e6 (pushed, seat branch only). Manifest 7a3b4ea1 (9 paths), queue revs 2595-2596, request comment 29825, reviewer Filbert. Packet agents/darkwing/work/queue-232/BUILD.md. + 2026-10-21T04:50:44Z | Darkwing | row 233 #1735 installer I3 build, round 1 in review | Before: root had no upgrade driver for root-owned units and no host run sheet; stack-release.sh had no rehearse --backup last and no external plan refusals. After: scripts/stack-upgrade.sh upgrade and rollback (r6 A1-A5, A2f, R1-R4) with 20 tests, docs/guides/host-run-sheet.md, TOOLS.md lines, and on Sage's rulings stack-release.sh --backup last, BACKUP_STORE and the --plan refusals open-activation and migrate-required (3 tests). Base e65a3ab4d (row 232's landing). Gate on Sage's slot (sage-1704) on d99166ade: cli 616/0, every scripts/test-*.sh green, 1201/0 summed by awk; m1-m8 8/8 killed. Correction: the process sweep after the gate found an orphaned sleep 60 from the lock test's flock holder (N1); 08db6ac3f fixes it test only, Sage ruled the gate stands (sage-1707), rerun c0 20/0 and m1 killed with 0 left (sage-1708). Tip 1a1dc80ca (pushed, seat branch only). Manifest 464ce9eb (7 paths), queue revs 2644 and 2647, request comment 29901, reviewer Filbert. Packet agents/darkwing/work/queue-233/BUILD.md. + 2026-10-21T06:37:41Z | Darkwing | row 240 #1746 installer I4 build, round 1 in review | Before: root had no host check for the bwrap AppArmor profile, its pins or a boot unit, and stack-upgrade.sh exited 1 args-failed when the args move after A5 failed, while exit 1 means the old copy runs. After: scripts/case1-hostcheck.sh (seven items, --check, --enforce, --upstream), scripts/case1-pins.sh, mosaic-hostcheck.service and 16 tests; the args move failure exits 5 args-failed, documented in TOOLS.md and run sheet section 6 and tested; run sheet section 3 puts the pinned npm on PATH and names the bin/claude.exe --claude path; sections 8 and 10 have precheck lines. Verification: slot run r1 on 47ec9fe2f failed at the singles (the new N1 test's after hook threw ENOENT after the fixture cleanup removed the root); b45852daa drops the hook; r2 on b45852daa green: singles 16/0 and 21/0, c0 plus M1-M8 8/8 killed, cli 639/0, scripts 585/0. Candidate darkwing/row240-r3 ad1b23ab2 on c771a36f4, manifest 573ece95 (9 paths), revs 2694 and 2695, comment 29943. +++<<<<<<< HEAD + +2026-10-21T09:00Z | Herb | row 215 C2-04 implementation started | Before: business files reject library entries and root consumers assume code projects; the organization writer can change all project mappings. Plan: approved manifest 2522025af on C2-01 a2c72ac95, Filbert reply to herb-0056, scope sage-1848/1852/1860. Focused slot sage-1869 observed expected red mapping and M9 cases, then 14/0 green for new T1/T2 cases, no skips; clear herb-0062 with empty test/fixture process scan. After that clear, T3/T4 tests and host-only mirror/bus implementation continue under sage-1874, unrun while Sage holds the slot. Full singles, suites and implementation review remain pending. No source commit, push or live change. + +2026-10-21T13:29Z | Herb | row 215 C2-04 source verified for candidate review | Before: business code assumed every project had a root and organization writes could replace project mappings. After: library mappings load without agent checkouts or publish grants, project mappings are protected before and after serialization, host-only bare mirrors share a bounded publication lock with sync, and library.file/library.status are human-only async bus reads. Base f8276c5eb preserves all nine landed overlaps. Granted sage-2008 whole singles: 16 files, 451/0, no skips or cancellations, ended 13:27:27.279728Z; all source hashes unchanged, process scan empty, no own-path drift through 8a04f4aa4. Full landing gate and implementation review remain pending; no HTTP, sync writer or live change. +++======= ++ ++ 2026-10-20 19:09:44 UTC | Gander row 196 #1694 design phase | Before: tester TCP reaches every local uid and human proofs do not bind the socket peer. After: design draft at agents/gander/work/queue-196/DESIGN.md inventories listeners, proposes private tester HTTP and SO_PEERCRED binding, aligns the per-request principal contract with Morgana and Gizmoduck, and lists migration, tests, mutants and same-uid limits. Python versus other credential options and Console provenance require Duckworth ruling. Documentation only. No product code, suite, live probe, secret access or deployment. ++ ++ 2026-10-20 19:16:20 UTC | Gander row 196 #1694 design r2 | Before: Duckworth r1 requested concurrent helper-fd evidence (B1) and selected O1 with interpreter, proof-only and image conditions. After: design adds eight concurrent genuine proof processes plus a racing copier, M20 swapped socket and post-helper socket survival, root-owned system ELF pinning and activation evidence, safe gid validation, cap traffic without helpers, and unchanged P19 R2 text. Mos accepted socket-only tester access (mos-1015 via sage-1363); any authenticated browser relay is a separate row. Documentation coverage checks passed. No product code, suites or live action. ++ ++ 2026-10-20 19:21:19 UTC | Gander row 196 #1694 design approval and N5 | Before: Duckworth approved r2 (duckworth-0009, cb6d840df) with a nonblocking interpreter-upgrade note. After: r3 chooses startup safety revalidation, appends actual interpreter identity to bus/peercred-starts.jsonl and retains old activation evidence. Operator re-pin uses the next reviewed copy, respecting already-active refusal. Added task-by-task PLAN.md for inline implementation and independent manifest review. Documentation checks passed. No product code, suites or live action. ++ ++ 2026-10-20 19:34:28 UTC | Gander row 196 build paused at design mismatch | Before: approved design promised Unix tester cleanup only for the owned inode. After: scratch test shows Node/libuv close unlinks a replacement inode before JS close handlers. Evidence agents/gander/work/queue-196/evidence/tester-cleanup-blocker.txt. Sent Sage/Duckworth gander-0016/0017, recommending explicit same-uid residual with private 0700 parent retained. Interpreter, concurrent peer, principal, human, peer-transport, transport, tester and process single files passed. Partial code uncommitted, tester transport not wired. No suites, mutant batches or live actions. ++ ++ 2026-10-21 18:45 UTC | Gander row 196 preservation before rebase | Sage-2051, Mos order mos-1193, explicitly authorizes commit and fast-forward push of the current build before deferred full verification. Product and evidence preserved together; prior focused checks and stopped gates are recorded in the row196 packet, with no claim of full acceptance. Next: rebase onto a36523713 on new gander/row196-r2, report range-diff/patch-id/conflicts, then await Sage's clear for M1-M29 and all requested suites. No live action, force push, branch deletion or tests during hold. +++>>>>>>> a95afb43b (gander: preserve row 196 human boundary build for rebase) +diff --cc packages/bus/src/server.mjs +index 53d38dd85,8a66050b9..000000000 +--- a/packages/bus/src/server.mjs ++++ b/packages/bus/src/server.mjs +@@@ -1,6 -1,8 +1,12 @@@ + import { createServer } from 'node:net'; + import { lstatSync, chmodSync, unlinkSync } from 'node:fs'; +++<<<<<<< HEAD + +import { BusError, TASK_VERBS, WEB_VERBS, HOST_VERBS, HOSTS_VERBS, PROJECT_FILE_VERBS, LIBRARY_VERBS, PROJECT_SAVE_VERB, PROJECT_SAVE_REQUEST_MAX } from './broker.mjs'; +++======= ++ import { BusError, TASK_VERBS, WEB_VERBS, HOST_VERBS, HOSTS_VERBS, PROJECT_FILE_VERBS, PROJECT_SAVE_VERB, PROJECT_SAVE_REQUEST_MAX } from './broker.mjs'; ++ import { inspectInterpreter } from './interpreter.mjs'; ++ import { createPeerReader } from './peercred.mjs'; +++>>>>>>> a95afb43b (gander: preserve row 196 human boundary build for rebase) + const LIMIT = 65536; + // Row 148: a document save may carry up to 1 MiB of text. Only a request that names that verb near + // its start (the proof object comes first) may pass LIMIT; the parsed verb is checked again below. diff --git a/agents/gander/work/queue-196/r4/gate/RESULTS.md b/agents/gander/work/queue-196/r4/gate/RESULTS.md new file mode 100644 index 000000000..bb84178d7 --- /dev/null +++ b/agents/gander/work/queue-196/r4/gate/RESULTS.md @@ -0,0 +1,45 @@ +# Grant sage-2096: r4 stop 3 + +Product f8a59e6aadf779d6c42e28cd693bdee1b441f54a on e54e05463. +No rerun or repair occurred under the stopped grant. Returned to Sage in +gander-0045; escalated to Mos in gander-0046 under mos-1166. + +| Step | Pass | Fail | Skip | Wall seconds | +|---|---:|---:|---:|---:| +| SSO deliberate RED | 0 | 1 expected | 0 | 4.186 | +| SSO restored GREEN | 1 | 0 | 0 | 4.328 | +| Base peer transport | 4 | 0 | 0 | 1.841 | +| Base tester | 14 | 0 | 0 | 3.049 | +| M13 | killed | 0 driver failures | 0 | 1.781 | +| M17 | killed | 0 driver failures | 0 | 2.940 | +| M22 | killed | 0 driver failures | 0 | 1.766 | +| Whole bus, 80 files | 622 | 0 | 0 | 36.272 | +| Whole WebUI, 50 files | 303 | 1 | 1 | 113.151 | +| Whole CLI | unrun | | | | +| Eight additional whole files | unrun | | | | +| Ten whole shell suites | unrun | | | | + +Failure: C2-04 CLI: both listener callback pairs dispatch library verbs with their +own transport, library-cli.test.mjs:10 (assertion :27). Row215's callback fixture +still passed --tester-port, which the row196 Console refuses. The text merge +kept the callbacks but left a semantic transport conflict. The whole-file gate +exposed it. WebUI finished its file set with one failure, then the driver stopped. + +The skip is the existing editor rebuild check: shared esbuild is 0.28.1 while +the editor requires exactly 0.28.2. No dependency install was attempted. +Golden suites observed so far total 925 pass, 1 fail, 1 skip. This is not a green +gate. M1-M29 plus M28b total 30 killed under the accepted per-target hash rule: +27 carried, three refreshed. consolidated-kills.json verifies every restored +source hash against the r4 target SHA; original logs are retained unchanged. + +Sweep correction: the broad scan counted 9 processes under the seat worktree, +all harness/MCP helpers started 18:45:45-18:45:52, before this grant's 19:29:41 +start. Candidate and fresh grant TMPDIR had no leftovers. Gate leftover count +is 0. Raw process-sweep.json and categorized-sweep.json retain both the raw +count and classification. No pre-existing helper was terminated. Sage accepted +that classification in sage-2111. Mos noted it in mos-1198. + +Mos mos-1198 authorizes a fourth run on r5 after Gizmoduck 250 r2, with a new +Sage grant. r5 is one test-only activation change plus BUILD note, preserving +all original assertions. All product source hashes must equal r4 for its bus +and mutant results to stand. No tests after stop 3 until that new grant. diff --git a/agents/gander/work/queue-196/r4/gate/base-driver.log b/agents/gander/work/queue-196/r4/gate/base-driver.log new file mode 100644 index 000000000..2af0da844 --- /dev/null +++ b/agents/gander/work/queue-196/r4/gate/base-driver.log @@ -0,0 +1,2 @@ +{"name":"transport","args":["packages/bus/tests/peer-transport.test.mjs"],"seconds":1.840884985,"status":0,"signal":null} +{"name":"tester","args":["packages/bus/tests/tester.test.mjs"],"seconds":3.049434243,"status":0,"signal":null} diff --git a/agents/gander/work/queue-196/r4/gate/base-results.json b/agents/gander/work/queue-196/r4/gate/base-results.json new file mode 100644 index 000000000..4b54a9962 --- /dev/null +++ b/agents/gander/work/queue-196/r4/gate/base-results.json @@ -0,0 +1,20 @@ +[ + { + "name": "transport", + "args": [ + "packages/bus/tests/peer-transport.test.mjs" + ], + "seconds": 1.840884985, + "status": 0, + "signal": null + }, + { + "name": "tester", + "args": [ + "packages/bus/tests/tester.test.mjs" + ], + "seconds": 3.049434243, + "status": 0, + "signal": null + } +] diff --git a/agents/gander/work/queue-196/r4/gate/base-tester.log b/agents/gander/work/queue-196/r4/gate/base-tester.log new file mode 100644 index 000000000..9cd1d6c38 --- /dev/null +++ b/agents/gander/work/queue-196/r4/gate/base-tester.log @@ -0,0 +1,22 @@ +✔ the tester binds only when the business sets bus.tester to exactly true (65.807956ms) +✔ a business may not name a role tester, so the tester address is never a role (19.109144ms) +✔ every verb outside the tester list refuses tester-refused and is recorded against the tester (43.044457ms) +✔ a tester message is from tester, needs no prefix, and writes no human.input or authority (17.979473ms) +✔ a tester message to a role no run holds refuses tester-target-not-running and stores nothing (12.296363ms) +✔ a tester message is refused while the run is only launched, and routes once it claims (15.27344ms) +✔ a human message to a role no run holds still waits and tells launch.by (12.830639ms) +✔ a role answers a tester only in reply to a tester message, and the answer never reaches the human (22.475399ms) +✔ the tester reads the human views a reader reads (26.771278ms) +✔ tester proof binds its own CLI, start time and nonce, refuses a managed run and allows an agent (1.479618ms) +✔ neither CLI's nonce proves the other: each proof is bound to its own CLI and nonce variable (0.527506ms) +✔ testerNonce reads only the tester's variable and gives null on any read error (0.255977ms) +✔ an envelope carries exactly one of cap, human and tester; no tester authenticator refuses (113.500663ms) +✔ tester-cli.mjs binds through the runtime when the switch is on, and refuses off or under a run marker (988.347719ms) +ℹ tests 14 +ℹ suites 0 +ℹ pass 14 +ℹ fail 0 +ℹ cancelled 0 +ℹ skipped 0 +ℹ todo 0 +ℹ duration_ms 1449.588503 diff --git a/agents/gander/work/queue-196/r4/gate/base-transport.log b/agents/gander/work/queue-196/r4/gate/base-transport.log new file mode 100644 index 000000000..89fe547ed --- /dev/null +++ b/agents/gander/work/queue-196/r4/gate/base-transport.log @@ -0,0 +1,12 @@ +✔ proof receives actual peer, cap traffic never invokes helper and transient cap disconnects (6.717548ms) +✔ proof helper error and disconnect during verification never dispatch or bind (1.430525ms) +✔ Client receives explicit proof refusal codes without dispatch, not outcome-unknown (43.439922ms) +✔ asynchronous proof calls release their transient session on success, failure and timeout (28.922236ms) +ℹ tests 4 +ℹ suites 0 +ℹ pass 4 +ℹ fail 0 +ℹ cancelled 0 +ℹ skipped 0 +ℹ todo 0 +ℹ duration_ms 136.482329 diff --git a/agents/gander/work/queue-196/r4/gate/base.mjs b/agents/gander/work/queue-196/r4/gate/base.mjs new file mode 100644 index 000000000..54d40f341 --- /dev/null +++ b/agents/gander/work/queue-196/r4/gate/base.mjs @@ -0,0 +1,9 @@ +import {spawnSync} from 'node:child_process';import {writeFileSync} from 'node:fs';import {performance} from 'node:perf_hooks'; +const root='/mnt/storage/scratch/tmp/g196-tree-tn651z',out=new URL('.',import.meta.url).pathname; +const jobs=[['transport',['packages/bus/tests/peer-transport.test.mjs']],['tester',['packages/bus/tests/tester.test.mjs']]]; +const results=[]; +for(const [name,args] of jobs){ + const start=performance.now(),r=spawnSync('bash',['-c','set -o pipefail; python3 "$G196_BUSY" && "$G196_NODE" --test "$@" 2>&1 | tee "$G196_LOG"','--',...args],{cwd:root,env:{...process.env,G196_NODE:process.execPath,G196_LOG:out+'base-'+name+'.log'},encoding:'utf8',maxBuffer:4*1024*1024}); + const seconds=(performance.now()-start)/1000;const result={name,args,seconds,status:r.status,signal:r.signal};results.push(result);writeFileSync(out+'base-results.json',JSON.stringify(results,null,2)+'\n');console.log(JSON.stringify(result)); + if(r.status!==0||seconds>30){process.exitCode=1;break;} +} diff --git a/agents/gander/work/queue-196/r4/gate/bus.log b/agents/gander/work/queue-196/r4/gate/bus.log new file mode 100644 index 000000000..c8cf03495 --- /dev/null +++ b/agents/gander/work/queue-196/r4/gate/bus.log @@ -0,0 +1,3751 @@ +CLEAR (current driver ancestors excluded) +TAP version 13 +# Subtest: REQ-LIMIT-4 3h copy migrates to 3i: every row keeps its seq, the sequence carries over, and only the account CHECK changes +ok 1 - REQ-LIMIT-4 3h copy migrates to 3i: every row keeps its seq, the sequence carries over, and only the account CHECK changes + --- + duration_ms: 85.396952 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 a 3h→3i step that fails partway leaves the store at 3h with every row, the sequence and the schema intact +ok 2 - REQ-LIMIT-4 a 3h→3i step that fails partway leaves the store at 3h with every row, the sequence and the schema intact + --- + duration_ms: 99.912663 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 the 3h engine refuses a migrated store, migrating or not, and leaves it as it was +ok 3 - REQ-LIMIT-4 the 3h engine refuses a migrated store, migrating or not, and leaves it as it was + --- + duration_ms: 102.968949 + type: 'test' + ... +# Subtest: agents: a held role with nothing on the bus is idle; a role session gets the claim rows unchanged +ok 4 - agents: a held role with nothing on the bus is idle; a role session gets the claim rows unchanged + --- + duration_ms: 22.535104 + type: 'test' + ... +# Subtest: agents: working counts what the holder received and has not read; routed alone is not working +ok 5 - agents: working counts what the holder received and has not read; routed alone is not working + --- + duration_ms: 22.829425 + type: 'test' + ... +# Subtest: agents: input needed is the role's open decisions routed to the human, gated first, then oldest +ok 6 - agents: input needed is the role's open decisions routed to the human, gated first, then oldest + --- + duration_ms: 35.709348 + type: 'test' + ... +# Subtest: agents: working wins over waiting, and Input needed still shows +ok 7 - agents: working wins over waiting, and Input needed still shows + --- + duration_ms: 17.466831 + type: 'test' + ... +# Subtest: agents: a new holder doesn't inherit what the last one left unread; decisions stay with the role +ok 8 - agents: a new holder doesn't inherit what the last one left unread; decisions stay with the role + --- + duration_ms: 21.047096 + type: 'test' + ... +# Subtest: agents: state reads only its own business, even for a run name both use +ok 9 - agents: state reads only its own business, even for a run name both use + --- + duration_ms: 18.582517 + type: 'test' + ... +# Subtest: agents: a message the holder released unread is stranded; the next holder gets nothing and cannot read it +ok 10 - agents: a message the holder released unread is stranded; the next holder gets nothing and cannot read it + --- + duration_ms: 22.310431 + type: 'test' + ... +# Subtest: agents: a message the holder read is not stranded; one the current holder has not read is not listed +ok 11 - agents: a message the holder read is not stranded; one the current holder has not read is not listed + --- + duration_ms: 19.118517 + type: 'test' + ... +# Subtest: agents: stranded is oldest first and capped at 50 for a role +ok 12 - agents: stranded is oldest first and capped at 50 for a role + --- + duration_ms: 100.795476 + type: 'test' + ... +# Subtest: agents: stranded is per role and per business +ok 13 - agents: stranded is per role and per business + --- + duration_ms: 36.012147 + type: 'test' + ... +# Subtest: agents: a message routed to a held role and not yet received is not stranded +ok 14 - agents: a message routed to a held role and not yet received is not stranded + --- + duration_ms: 13.950292 + type: 'test' + ... +# Subtest: REQ-DEC an approval outlives its run and a broker restart; a new run of the instance consumes it once +ok 15 - REQ-DEC an approval outlives its run and a broker restart; a new run of the instance consumes it once + --- + duration_ms: 29.956352 + type: 'test' + ... +# Subtest: REQ-DEC another instance of the same definition cannot consume an approval, and its refusal consumes nothing +ok 16 - REQ-DEC another instance of the same definition cannot consume an approval, and its refusal consumes nothing + --- + duration_ms: 15.599895 + type: 'test' + ... +# Subtest: REQ-DEC REQ-THREAD-1 a thread approval is consumed only by a run holding the same thread +ok 17 - REQ-DEC REQ-THREAD-1 a thread approval is consumed only by a run holding the same thread + --- + duration_ms: 21.381085 + type: 'test' + ... +# Subtest: REQ-DEC a later run of the same instance supersedes an open decision; another instance cannot +ok 18 - REQ-DEC a later run of the same instance supersedes an open decision; another instance cannot + --- + duration_ms: 25.201006 + type: 'test' + ... +# Subtest: REQ-DEC REQ-THREAD-1 a thread decision is superseded only from the same thread +ok 19 - REQ-DEC REQ-THREAD-1 a thread decision is superseded only from the same thread + --- + duration_ms: 21.390636 + type: 'test' + ... +# Subtest: REQ-DEC REQ-THREAD-1 a thread instance decision raised before row 121 is not consumed or superseded by any thread run +ok 20 - REQ-DEC REQ-THREAD-1 a thread instance decision raised before row 121 is not consumed or superseded by any thread run + --- + duration_ms: 27.756826 + type: 'test' + ... +# Subtest: launch identity is stamped, payload identity is refused and stale holder cannot send +ok 21 - launch identity is stamped, payload identity is refused and stale holder cannot send + --- + duration_ms: 20.929886 + type: 'test' + ... +# Subtest: decision classes route from policy; gated resolution is human-only, choice and target must match +ok 22 - decision classes route from policy; gated resolution is human-only, choice and target must match + --- + duration_ms: 25.748701 + type: 'test' + ... +# Subtest: claim exclusion, holder release, gated revoke and rerouting to a new holder are atomic +ok 23 - claim exclusion, holder release, gated revoke and rerouting to a new holder are atomic + --- + duration_ms: 24.865001 + type: 'test' + ... +# Subtest: launch events require a human CLI capability; generic emit cannot forge authority events +ok 24 - launch events require a human CLI capability; generic emit cannot forge authority events + --- + duration_ms: 15.196521 + type: 'test' + ... +# Subtest: within-role decisions close atomically and invalid options or blocking omissions refuse +ok 25 - within-role decisions close atomically and invalid options or blocking omissions refuse + --- + duration_ms: 14.667648 + type: 'test' + ... +# Subtest: a recommendation that is not exactly one option key refuses invalid-recommendation after the options +ok 26 - a recommendation that is not exactly one option key refuses invalid-recommendation after the options + --- + duration_ms: 21.844768 + type: 'test' + ... +# Subtest: observer capabilities read human inbox but cannot mutate or forge launch identity +ok 27 - observer capabilities read human inbox but cannot mutate or forge launch identity + --- + duration_ms: 15.836141 + type: 'test' + ... +# Subtest: task action subjects and linked decision trail are complete and ordered +ok 28 - task action subjects and linked decision trail are complete and ordered + --- + duration_ms: 25.274356 + type: 'test' + ... +# Subtest: launch binding is durable and reconnecting requires the identical trusted record +ok 29 - launch binding is durable and reconnecting requires the identical trusted record + --- + duration_ms: 12.353345 + type: 'test' + ... +# Subtest: business isolation includes inherited object names and cross-business message references +ok 30 - business isolation includes inherited object names and cross-business message references + --- + duration_ms: 18.215463 + type: 'test' + ... +# Subtest: authority never transfers between action, target, unresolved or replaced role holder; a later run of the instance keeps it +ok 31 - authority never transfers between action, target, unresolved or replaced role holder; a later run of the instance keeps it + --- + duration_ms: 25.043102 + type: 'test' + ... +# Subtest: task projection uses schema current view, skipping earlier and equal-start polls +ok 32 - task projection uses schema current view, skipping earlier and equal-start polls + --- + duration_ms: 12.900473 + type: 'test' + ... +# Subtest: revocation permanently bars the old run from reclaiming first, including after broker restart +ok 33 - revocation permanently bars the old run from reclaiming first, including after broker restart + --- + duration_ms: 19.442891 + type: 'test' + ... +# Subtest: empty message references refuse before storage; refusal-evidence failure stays a typed error +ok 34 - empty message references refuse before storage; refusal-evidence failure stays a typed error + --- + duration_ms: 13.638612 + type: 'test' + ... +# Subtest: both arbiters require human resolution when their cross-role route is themselves +ok 35 - both arbiters require human resolution when their cross-role route is themselves + --- + duration_ms: 23.493487 + type: 'test' + ... +# Subtest: the shipped coder role raises task.reassign as gated to the human; task.scope.change stays cross-role +ok 36 - the shipped coder role raises task.reassign as gated to the human; task.scope.change stays cross-role + --- + duration_ms: 21.942759 + type: 'test' + ... +# Subtest: S1 adapter takes resolved limits and refs, rejects mismatched instance, never mutates input +ok 37 - S1 adapter takes resolved limits and refs, rejects mismatched instance, never mutates input + --- + duration_ms: 1.896374 + type: 'test' + ... +# Subtest: channel conversion preserves the four proof/transport byte baselines and modules cannot import a proof caller +ok 38 - channel conversion preserves the four proof/transport byte baselines and modules cannot import a proof caller + --- + duration_ms: 1.106146 + type: 'test' + ... +# Subtest: channel recovery still requires the same shim path and rejects an absent or forged proof +ok 39 - channel recovery still requires the same shim path and rejects an absent or forged proof + --- + duration_ms: 415.613653 + type: 'test' + ... +# Subtest: REQ-COS-1, REQ-ROLE-2: the chief of staff ends a run with a reason and no decision, and the reason is logged +ok 40 - REQ-COS-1, REQ-ROLE-2: the chief of staff ends a run with a reason and no decision, and the reason is logged + --- + duration_ms: 27.859718 + type: 'test' + ... +# Subtest: REQ-ROLE-2: a role without role.end still needs a resolved decision to revoke +ok 41 - REQ-ROLE-2: a role without role.end still needs a resolved decision to revoke + --- + duration_ms: 25.769128 + type: 'test' + ... +# Subtest: REQ-ROLE-2: storage accepts a revoke with a reason or a decision and aborts one with neither +ok 42 - REQ-ROLE-2: storage accepts a revoke with a reason or a decision and aborts one with neither + --- + duration_ms: 17.413899 + type: 'test' + ... +# Subtest: REQ-ROLE-2: the chief of staff may still cite a decision, and a decision alone is the old path +ok 43 - REQ-ROLE-2: the chief of staff may still cite a decision, and a decision alone is the old path + --- + duration_ms: 17.877899 + type: 'test' + ... +# Subtest: REQ-ROLE-2: a role without role.end still ends a run through a resolved decision, which is recorded and has no reason +ok 44 - REQ-ROLE-2: a role without role.end still ends a run through a resolved decision, which is recorded and has no reason + --- + duration_ms: 21.418749 + type: 'test' + ... +# Subtest: REQ-ROLE-2: a reason is required, bounded, and never sent with a decision +ok 45 - REQ-ROLE-2: a reason is required, bounded, and never sent with a decision + --- + duration_ms: 21.623306 + type: 'test' + ... +# Subtest: REQ-COS-1: the chief of staff cannot end its own run; its end of the assistant stops the assistant's thread run +ok 46 - REQ-COS-1: the chief of staff cannot end its own run; its end of the assistant stops the assistant's thread run + --- + duration_ms: 25.151193 + type: 'test' + ... +# Subtest: REQ-LIMIT-1, REQ-COS-1: organization.set from the chief of staff reaches the shared writer, named as the actor +ok 47 - REQ-LIMIT-1, REQ-COS-1: organization.set from the chief of staff reaches the shared writer, named as the actor + --- + duration_ms: 20.876684 + type: 'test' + ... +# Subtest: REQ-LIMIT-1, REQ-COS-1: a refused organization.set logs action.refused and no action.allowed, like a refused limits.set +ok 48 - REQ-LIMIT-1, REQ-COS-1: a refused organization.set logs action.refused and no action.allowed, like a refused limits.set + --- + duration_ms: 26.004176 + type: 'test' + ... +# Subtest: REQ-LIMIT-1: organization.set is refused for every caller whose role file lacks organization.change +ok 49 - REQ-LIMIT-1: organization.set is refused for every caller whose role file lacks organization.change + --- + duration_ms: 30.529084 + type: 'test' + ... +# Subtest: REQ-LIMIT-1: the chief of staff is logged as allowed, and organization.set takes only the human's keys +ok 50 - REQ-LIMIT-1: the chief of staff is logged as allowed, and organization.set takes only the human's keys + --- + duration_ms: 28.757488 + type: 'test' + ... +# Subtest: REQ-COS-1: organization.revision answers the revision alone to the chief of staff and spends nothing +ok 51 - REQ-COS-1: organization.revision answers the revision alone to the chief of staff and spends nothing + --- + duration_ms: 21.375999 + type: 'test' + ... +# Subtest: REQ-COS-1, REQ-LIMIT-1: organization.revision is refused for every caller whose role file lacks organization.change +ok 52 - REQ-COS-1, REQ-LIMIT-1: organization.revision is refused for every caller whose role file lacks organization.change + --- + duration_ms: 23.322246 + type: 'test' + ... +# Subtest: REQ-ROLE-3, REQ-LIMIT-1: a chief-of-staff change is validated, written and logged like a human's; an invalid one is refused +ok 53 - REQ-ROLE-3, REQ-LIMIT-1: a chief-of-staff change is validated, written and logged like a human's; an invalid one is refused + --- + duration_ms: 87.223075 + type: 'test' + ... +# Subtest: REQ-COS-1: the chief of staff reads the revision, changes the file with it, and reads again after a stale one is refused +ok 54 - REQ-COS-1: the chief of staff reads the revision, changes the file with it, and reads again after a stale one is refused + --- + duration_ms: 82.437044 + type: 'test' + ... +# Subtest: Q169: the chief of staff's change of the assistant is validated, written and logged; a stale or protection-stripping one is refused +ok 55 - Q169: the chief of staff's change of the assistant is validated, written and logged; a stale or protection-stripping one is refused + --- + duration_ms: 82.625566 + type: 'test' + ... +# Subtest: row 65, Q169: the chief's change of the assistant's route runs the routing checks, and a valid one saves as the chief +ok 56 - row 65, Q169: the chief's change of the assistant's route runs the routing checks, and a valid one saves as the chief + --- + duration_ms: 56.162612 + type: 'test' + ... +# Subtest: REQ-ROLE-2, REQ-COS-1: the 3c→3d migration lets the chief of staff end a held role with a reason; neither is still refused +ok 57 - REQ-ROLE-2, REQ-COS-1: the 3c→3d migration lets the chief of staff end a held role with a reason; neither is still refused + --- + duration_ms: 72.722101 + type: 'test' + ... +# Subtest: comment cursors isolate businesses, move only forward and remain append-only +ok 58 - comment cursors isolate businesses, move only forward and remain append-only + --- + duration_ms: 14.822252 + type: 'test' + ... +# Subtest: only trusted sync writes validated cursors; events and cursor share rollback +ok 59 - only trusted sync writes validated cursors; events and cursor share rollback + --- + duration_ms: 10.052534 + type: 'test' + ... +# Subtest: explicit 3b copy migration preserves evidence and opens as 3g; normal startup never migrates +ok 60 - explicit 3b copy migration preserves evidence and opens as 3g; normal startup never migrates + --- + duration_ms: 61.882516 + type: 'test' + ... +# Subtest: migration refuses active writers and drifted legacy schemas, with no partial upgrade +ok 61 - migration refuses active writers and drifted legacy schemas, with no partial upgrade + --- + duration_ms: 88.636311 + type: 'test' + ... +# Subtest: named migration registry chains 3b through 3g to a fixture-only future version in order +ok 62 - named migration registry chains 3b through 3g to a fixture-only future version in order + --- + duration_ms: 69.258825 + type: 'test' + ... +# Subtest: migration refuses mismatched source metadata without changing schema or evidence +ok 63 - migration refuses mismatched source metadata without changing schema or evidence + --- + duration_ms: 42.530401 + type: 'test' + ... +# Subtest: offline command migrates only the supplied fixture root and reports usage errors +ok 64 - offline command migrates only the supplied fixture root and reports usage errors + --- + duration_ms: 145.8308 + type: 'test' + ... +# Subtest: M6: a creative raise refuses decision-not-allowed, cited or not, and no decision row appears; the assistant still raises +ok 65 - M6: a creative raise refuses decision-not-allowed, cited or not, and no decision row appears; the assistant still raises + --- + duration_ms: 27.461568 + type: 'test' + ... +# Subtest: a creative instance sends only to the user and hears only from the user +ok 66 - a creative instance sends only to the user and hears only from the user + --- + duration_ms: 34.003831 + type: 'test' + ... +# Subtest: M10 through the broker: the chief and the tester are refused on bean, the human's limits.set of its models key works +ok 67 - M10 through the broker: the chief and the tester are refused on bean, the human's limits.set of its models key works + --- + duration_ms: 68.464795 + type: 'test' + ... +# Subtest: X4: register adds a store reference to the running bus, and issue then writes the key +ok 68 - X4: register adds a store reference to the running bus, and issue then writes the key + --- + duration_ms: 14.296872 + type: 'test' + ... +# Subtest: X4: register runs the constructor's reference checks +ok 69 - X4: register runs the constructor's reference checks + --- + duration_ms: 0.650651 + type: 'test' + ... +# Subtest: X4: register reads no file, so a key file left at the path stays unused, and a live token refuses +ok 70 - X4: register reads no file, so a key file left at the path stays unused, and a live token refuses + --- + duration_ms: 8.86179 + type: 'test' + ... +# Subtest: X3, X4: unregister drops an entry with no token and refuses one with a live token +ok 71 - X3, X4: unregister drops an entry with no token and refuses one with a live token + --- + duration_ms: 8.622079 + type: 'test' + ... +# Subtest: X5: a claim holds the slot, so a second claim and a host.run refuse host-busy until release +ok 72 - X5: a claim holds the slot, so a second claim and a host.run refuse host-busy until release + --- + duration_ms: 5.567407 + type: 'test' + ... +# Subtest: X5: a claim made while a host.run is in flight refuses host-busy +ok 73 - X5: a claim made while a host.run is in flight refuses host-busy + --- + duration_ms: 5.352708 + type: 'test' + ... +# Subtest: X5: a stale release leaves a later claim in place +ok 74 - X5: a stale release leaves a later claim in place + --- + duration_ms: 0.375925 + type: 'test' + ... +# Subtest: X5: abortClaim aborts a live claim and says pending, and revoke's abort reaches a claim too +ok 75 - X5: abortClaim aborts a live claim and says pending, and revoke's abort reaches a claim too + --- + duration_ms: 5.097701 + type: 'test' + ... +# Subtest: credentials gives human and reader sessions service, account, role, date and state, and nothing else +ok 76 - credentials gives human and reader sessions service, account, role, date and state, and nothing else + --- + duration_ms: 13.970937 + type: 'test' + ... +# Subtest: credentials refuses a role session and any argument +ok 77 - credentials refuses a role session and any argument + --- + duration_ms: 15.139532 + type: 'test' + ... +# Subtest: credentials reads the status on each request, and a broker without one lists none +ok 78 - credentials reads the status on each request, and a broker without one lists none + --- + duration_ms: 16.744488 + type: 'test' + ... +# Subtest: the broker process answers credentials without a token, path or variable in its output, log or store +ok 79 - the broker process answers credentials without a token, path or variable in its output, log or store + --- + duration_ms: 124.632405 + type: 'test' + ... +# Subtest: T1: a store reference with no file yet starts, and the agent is not-issued until issue +ok 80 - T1: a store reference with no file yet starts, and the agent is not-issued until issue + --- + duration_ms: 4.715802 + type: 'test' + ... +# Subtest: T1: a store path the reference does not own, or no store root, refuses the reference +ok 81 - T1: a store path the reference does not own, or no store root, refuses the reference + --- + duration_ms: 0.506331 + type: 'test' + ... +# Subtest: T1: a wrong mode on the store root, a business dir, an agent dir or the file refuses start +ok 82 - T1: a wrong mode on the store root, a business dir, an agent dir or the file refuses start + --- + duration_ms: 2.480557 + type: 'test' + ... +# Subtest: T1: a missing store root refuses start; a missing {file} reference still refuses start +ok 83 - T1: a missing store root refuses start; a missing {file} reference still refuses start + --- + duration_ms: 0.51703 + type: 'test' + ... +# Subtest: T1: a store file that is a directory or a symlink refuses start +ok 84 - T1: a store file that is a directory or a symlink refuses start + --- + duration_ms: 0.734598 + type: 'test' + ... +# Subtest: T2: useFor keys from the session only +ok 85 - T2: useFor keys from the session only + --- + duration_ms: 1.853591 + type: 'test' + ... +# Subtest: T5: issue, rotate, revoke and delete are live with no restart, and revoke holds across one +ok 86 - T5: issue, rotate, revoke and delete are live with no restart, and revoke holds across one + --- + duration_ms: 3.437713 + type: 'test' + ... +# Subtest: T5: a failed commit leaves the token on disk but not in memory, and a bad token or date writes nothing +ok 87 - T5: a failed commit leaves the token on disk but not in memory, and a bad token or date writes nothing + --- + duration_ms: 1.728753 + type: 'test' + ... +# Subtest: T5: revoke drops the token from memory before the unlink, so a failed unlink still leaves it revoked +ok 88 - T5: revoke drops the token from memory before the unlink, so a failed unlink still leaves it revoked + --- + duration_ms: 1.863895 + type: 'test' + ... +# Subtest: T5: revoke of a {file} reference forgets the token and never unlinks the file +ok 89 - T5: revoke of a {file} reference forgets the token and never unlinks the file + --- + duration_ms: 0.601292 + type: 'test' + ... +# Subtest: T5: delete refuses an agent dir holding anything but tokens +ok 90 - T5: delete refuses an agent dir holding anything but tokens + --- + duration_ms: 1.80772 + type: 'test' + ... +# Subtest: D5: every credentials use( call site is on the allowlist +ok 91 - D5: every credentials use( call site is on the allowlist + --- + duration_ms: 14.577451 + type: 'test' + ... +# Subtest: row 199: the lifecycle verbs refuse every session but the human, and the tester revokes only +ok 92 - row 199: the lifecycle verbs refuse every session but the human, and the tester revokes only + --- + duration_ms: 28.431306 + type: 'test' + ... +# Subtest: T5: issue, rotate, revoke and delete are live, rewrite the business file and leave one receipt each, with no value anywhere +ok 93 - T5: issue, rotate, revoke and delete are live, rewrite the business file and leave one receipt each, with no value anywhere + --- + duration_ms: 82.223038 + type: 'test' + ... +# Subtest: only validated broker references load; returned data and exceptions cannot expose a known token +ok 94 - only validated broker references load; returned data and exceptions cannot expose a known token + --- + duration_ms: 2.322385 + type: 'test' + ... +# Subtest: bad file modes, symlinks, repository/data paths, malformed tokens and missing dates refuse +ok 95 - bad file modes, symlinks, repository/data paths, malformed tokens and missing dates refuse + --- + duration_ms: 1.325294 + type: 'test' + ... +# Subtest: expiry refuses use and env references never become client data +ok 96 - expiry refuses use and env references never become client data + --- + duration_ms: 0.446839 + type: 'test' + ... +# Subtest: S1 parsed service refs work, service mismatch refuses, Gitea rotation due is a warning state +ok 97 - S1 parsed service refs work, service mismatch refuses, Gitea rotation due is a warning state + --- + duration_ms: 0.987851 + type: 'test' + ... +# Subtest: opaque tokens shorter than 16 characters refuse before use +ok 98 - opaque tokens shorter than 16 characters refuse before use + --- + duration_ms: 0.231277 + type: 'test' + ... +# Subtest: each C-suite role file carries the same two lists: human, chief-of-staff, pm, cto +ok 99 - each C-suite role file carries the same two lists: human, chief-of-staff, pm, cto + --- + duration_ms: 1.272233 + type: 'test' + ... +# Subtest: chief-executive-officer: messages to and from the user, chief of staff, pm and cto pass +ok 100 - chief-executive-officer: messages to and from the user, chief of staff, pm and cto pass + --- + duration_ms: 40.379738 + type: 'test' + ... +# Subtest: chief-executive-officer: a message to or from the coder, reviewer or assistant is refused and logged, and nothing is stored +ok 101 - chief-executive-officer: a message to or from the coder, reviewer or assistant is refused and logged, and nothing is stored + --- + duration_ms: 33.424814 + type: 'test' + ... +# Subtest: chief-executive-officer: another C-suite role isn't on the lists either +ok 102 - chief-executive-officer: another C-suite role isn't on the lists either + --- + duration_ms: 27.602128 + type: 'test' + ... +# Subtest: chief-financial-officer: messages to and from the user, chief of staff, pm and cto pass +ok 103 - chief-financial-officer: messages to and from the user, chief of staff, pm and cto pass + --- + duration_ms: 31.853844 + type: 'test' + ... +# Subtest: chief-financial-officer: a message to or from the coder, reviewer or assistant is refused and logged, and nothing is stored +ok 104 - chief-financial-officer: a message to or from the coder, reviewer or assistant is refused and logged, and nothing is stored + --- + duration_ms: 32.519863 + type: 'test' + ... +# Subtest: chief-financial-officer: another C-suite role isn't on the lists either +ok 105 - chief-financial-officer: another C-suite role isn't on the lists either + --- + duration_ms: 29.075011 + type: 'test' + ... +# Subtest: chief-information-officer: messages to and from the user, chief of staff, pm and cto pass +ok 106 - chief-information-officer: messages to and from the user, chief of staff, pm and cto pass + --- + duration_ms: 35.570265 + type: 'test' + ... +# Subtest: chief-information-officer: a message to or from the coder, reviewer or assistant is refused and logged, and nothing is stored +ok 107 - chief-information-officer: a message to or from the coder, reviewer or assistant is refused and logged, and nothing is stored + --- + duration_ms: 33.325169 + type: 'test' + ... +# Subtest: chief-information-officer: another C-suite role isn't on the lists either +ok 108 - chief-information-officer: another C-suite role isn't on the lists either + --- + duration_ms: 28.544768 + type: 'test' + ... +# Subtest: chief-information-security-officer: messages to and from the user, chief of staff, pm and cto pass +ok 109 - chief-information-security-officer: messages to and from the user, chief of staff, pm and cto pass + --- + duration_ms: 36.551448 + type: 'test' + ... +# Subtest: chief-information-security-officer: a message to or from the coder, reviewer or assistant is refused and logged, and nothing is stored +ok 110 - chief-information-security-officer: a message to or from the coder, reviewer or assistant is refused and logged, and nothing is stored + --- + duration_ms: 35.455567 + type: 'test' + ... +# Subtest: chief-information-security-officer: another C-suite role isn't on the lists either +ok 111 - chief-information-security-officer: another C-suite role isn't on the lists either + --- + duration_ms: 29.354656 + type: 'test' + ... +# Subtest: chief-marketing-officer: messages to and from the user, chief of staff, pm and cto pass +ok 112 - chief-marketing-officer: messages to and from the user, chief of staff, pm and cto pass + --- + duration_ms: 36.57032 + type: 'test' + ... +# Subtest: chief-marketing-officer: a message to or from the coder, reviewer or assistant is refused and logged, and nothing is stored +ok 113 - chief-marketing-officer: a message to or from the coder, reviewer or assistant is refused and logged, and nothing is stored + --- + duration_ms: 33.558267 + type: 'test' + ... +# Subtest: chief-marketing-officer: another C-suite role isn't on the lists either +ok 114 - chief-marketing-officer: another C-suite role isn't on the lists either + --- + duration_ms: 28.313548 + type: 'test' + ... +# limits: {"event":"limit-reached","business":"demo","check":"daily-quota","export":"mayLaunch","subject":{"instance":"coder","provider":"anthropic","model":"opus","account":"jason-max"},"path":["tokens","daily","jason-max"],"limit":0,"count":0,"unknownTurns":0} +# usage: {"event":"usage-unknown","business":"demo","run":"run1","instance":"coder","turn":"60c24fd2-cfeb-4a4a-a4af-4d60a37f32c3","source":"@none","code":"baseline-unknown"} +# limits: {"event":"limit-reached","business":"demo","check":"daily-quota","export":"mustStop","subject":{"instance":"coder","provider":"anthropic","model":"opus","account":"jason-max"},"path":["tokens","daily","jason-max"],"limit":0,"count":0,"unknownTurns":1} +# usage: {"event":"usage-unknown","business":"demo","run":"run1","instance":"coder","turn":"c35d4232-388a-460b-b775-9dfbfe61cfb0","source":"@none","code":"baseline-unknown"} +# Subtest: REQ-LIMIT-2 runtime: limits counts the daily quota, and mayLaunch refuses only the account at it +ok 115 - REQ-LIMIT-2 runtime: limits counts the daily quota, and mayLaunch refuses only the account at it + --- + duration_ms: 101.792955 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 runtime: a run bound with the account writes it on its usage records and stops at the quota +ok 116 - REQ-LIMIT-4 runtime: a run bound with the account writes it on its usage records and stops at the quota + --- + duration_ms: 48.51821 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 runtime: a run bound without an account records null and the daily quota never stops it +ok 117 - REQ-LIMIT-4 runtime: a run bound without an account records null and the daily quota never stops it + --- + duration_ms: 48.465397 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 bindLaunch keeps the account off session.launched, refuses one that is not an identifier, and takes null as none +ok 118 - REQ-LIMIT-4 bindLaunch keeps the account off session.launched, refuses one that is not an identifier, and takes null as none + --- + duration_ms: 10.171579 + type: 'test' + ... +# Subtest: a human resolve sends the raising role one message from the human, and its request is the answer +ok 119 - a human resolve sends the raising role one message from the human, and its request is the answer + --- + duration_ms: 31.742651 + type: 'test' + ... +# Subtest: a cross-role decision resolved by its arbiter comes from that role and run, with no request +ok 120 - a cross-role decision resolved by its arbiter comes from that role and run, with no request + --- + duration_ms: 19.480551 + type: 'test' + ... +# Subtest: a human withdraw sends one message with the note +ok 121 - a human withdraw sends one message with the note + --- + duration_ms: 19.480916 + type: 'test' + ... +# Subtest: a human seen before the close leaves the request on the close's answer, not the seen +ok 122 - a human seen before the close leaves the request on the close's answer, not the seen + --- + duration_ms: 23.279446 + type: 'test' + ... +# Subtest: the raising run's withdraw, a supersede, a within-role raise and seen send nothing +ok 123 - the raising run's withdraw, a supersede, a within-role raise and seen send nothing + --- + duration_ms: 21.924137 + type: 'test' + ... +# Subtest: refused closes send nothing: invalid-choice, decision-closed, not-resolver +ok 124 - refused closes send nothing: invalid-choice, decision-closed, not-resolver + --- + duration_ms: 23.408461 + type: 'test' + ... +# Subtest: a raising role nobody holds at the close gets the message on the next claim +ok 125 - a raising role nobody holds at the close gets the message on the next claim + --- + duration_ms: 21.334794 + type: 'test' + ... +# Subtest: a human DECISION send keeps its own instruction as the request, not a close's answer +ok 126 - a human DECISION send keeps its own instruction as the request, not a close's answer + --- + duration_ms: 19.139651 + type: 'test' + ... +# Subtest: a cross-role raise whose arbiter the raiser does not hear from is refused and stores nothing +ok 127 - a cross-role raise whose arbiter the raiser does not hear from is refused and stores nothing + --- + duration_ms: 26.771225 + type: 'test' + ... +# Subtest: a gated raise by a role that does not hear from the human is refused and stores nothing +ok 128 - a gated raise by a role that does not hear from the human is refused and stores nothing + --- + duration_ms: 21.913706 + type: 'test' + ... +# Subtest: a route the raiser hears from is allowed, checked from the route to the raiser +ok 129 - a route the raiser hears from is allowed, checked from the route to the raiser + --- + duration_ms: 25.854188 + type: 'test' + ... +# Subtest: a refused supersede withdraws nothing +ok 130 - a refused supersede withdraws nothing + --- + duration_ms: 23.28628 + type: 'test' + ... +# Subtest: the assistant's within-role and gated raises still work +ok 131 - the assistant's within-role and gated raises still work + --- + duration_ms: 24.840002 + type: 'test' + ... +# Subtest: roles lists open decisions routed to a role, and never the human inbox +ok 132 - roles lists open decisions routed to a role, and never the human inbox + --- + duration_ms: 24.537151 + type: 'test' + ... +# Subtest: recent lists closed decisions of every route, newest close first, with how each closed +ok 133 - recent lists closed decisions of every route, newest close first, with how each closed + --- + duration_ms: 23.913182 + type: 'test' + ... +# Subtest: recent gives the closing event as closed when the decision was seen first +ok 134 - recent gives the closing event as closed when the decision was seen first + --- + duration_ms: 24.941354 + type: 'test' + ... +# Subtest: recent stops at RECENT rows +ok 135 - recent stops at RECENT rows + --- + duration_ms: 76.22603 + type: 'test' + ... +# Subtest: every row is what trail already gives the same session for that id +ok 136 - every row is what trail already gives the same session for that id + --- + duration_ms: 34.913114 + type: 'test' + ... +# Subtest: a role session can't list decisions, so it can't read another role's open decisions +ok 137 - a role session can't list decisions, so it can't read another role's open decisions + --- + duration_ms: 32.679041 + type: 'test' + ... +# Subtest: decisions is a read: one business, strict arguments, nothing written +ok 138 - decisions is a read: one business, strict arguments, nothing written + --- + duration_ms: 37.151375 + type: 'test' + ... +# Subtest: endLaunch writes session.ended, releases the run claim and kills its capabilities +ok 139 - endLaunch writes session.ended, releases the run claim and kills its capabilities + --- + duration_ms: 16.91163 + type: 'test' + ... +# Subtest: endLaunch refuses an unknown run, a second end and a rebind of the ended run +ok 140 - endLaunch refuses an unknown run, a second end and a rebind of the ended run + --- + duration_ms: 9.94042 + type: 'test' + ... +# Subtest: a restarted broker refuses to rebind an ended run; a refused rebind leaves the run unbound +ok 141 - a restarted broker refuses to rebind an ended run; a refused rebind leaves the run unbound + --- + duration_ms: 12.143026 + type: 'test' + ... +# Subtest: endLaunch leaves a claim another run took alone +ok 142 - endLaunch leaves a claim another run took alone + --- + duration_ms: 12.507543 + type: 'test' + ... +# Subtest: refuse records action.refused against the caller with the code only +ok 143 - refuse records action.refused against the caller with the code only + --- + duration_ms: 11.911098 + type: 'test' + ... +# Subtest: launches off refuses role.launch with launch-revoked until launches on +ok 144 - launches off refuses role.launch with launch-revoked until launches on + --- + duration_ms: 16.569791 + type: 'test' + ... +# Subtest: broker process: launch ops authorize role.launch, record refusals and end runs +ok 145 - broker process: launch ops authorize role.launch, record refusals and end runs + --- + duration_ms: 129.32708 + type: 'test' + ... +# Subtest: G1, A1: only the chief raises a grant, and a refused raise stores nothing and runs no keyscan +ok 146 - G1, A1: only the chief raises a grant, and a refused raise stores nothing and runs no keyscan + --- + duration_ms: 28.743158 + type: 'test' + ... +# Subtest: G1: grant goes only with credential.mint, row a takes only host-enroll, and E1 refuses each bad field +ok 147 - G1: grant goes only with credential.mint, row a takes only host-enroll, and E1 refuses each bad field + --- + duration_ms: 44.830293 + type: 'test' + ... +# Subtest: G5, A5, A6: the scanned key set must equal the requested set, or host-key-mismatch and nothing stored +ok 148 - G5, A5, A6: the scanned key set must equal the requested set, or host-key-mismatch and nothing stored + --- + duration_ms: 26.545367 + type: 'test' + ... +# Subtest: G4 (host-enroll block, M1): the broker appends the keys, fingerprints and sudo line, and the cap counts the block +ok 149 - G4 (host-enroll block, M1): the broker appends the keys, fingerprints and sudo line, and the cap counts the block + --- + duration_ms: 22.484767 + type: 'test' + ... +# Subtest: G6, X1: the human's cli yes starts enrollment, which writes the record, the key file and the events in order +ok 150 - G6, X1: the human's cli yes starts enrollment, which writes the record, the key file and the events in order + --- + duration_ms: 46.02316 + type: 'test' + ... +# Subtest: A2, A4: a credential.mint without grant, and a no, start nothing +ok 151 - A2, A4: a credential.mint without grant, and a no, start nothing + --- + duration_ms: 231.283855 + type: 'test' + ... +# Subtest: A3, X1: a resolve by the tester or an agent starts nothing +ok 152 - A3, X1: a resolve by the tester or an agent starts nothing + --- + duration_ms: 232.051679 + type: 'test' + ... +# Subtest: G6 (duckworth-0081 B3): a withdraw by the chief or the human, and an arbiter resolve, start nothing +ok 153 - G6 (duckworth-0081 B3): a withdraw by the chief or the human, and an arbiter resolve, start nothing + --- + duration_ms: 226.927154 + type: 'test' + ... +# Subtest: G10 (duckworth-0081 B1): a second start for a spent decision refuses decision-consumed, and an unresolved or agent-resolved one not-authorized +ok 154 - G10 (duckworth-0081 B1): a second start for a spent decision refuses decision-consumed, and an unresolved or agent-resolved one not-authorized + --- + duration_ms: 47.743095 + type: 'test' + ... +# Subtest: A8, S1: two approved enrollments for one host: the second ends host-enrolled and the pin stays +ok 155 - A8, S1: two approved enrollments for one host: the second ends host-enrolled and the pin stays + --- + duration_ms: 67.49345 + type: 'test' + ... +# Subtest: A9: the hosts primary key refuses a second record for (business, host) +ok 156 - A9: the hosts primary key refuses a second record for (business, host) + --- + duration_ms: 27.031738 + type: 'test' + ... +# Subtest: X3: a failure at step 2 deletes the record again and ends grant.failed, with no key file +ok 157 - X3: a failure at step 2 deletes the record again and ends grant.failed, with no key file + --- + duration_ms: 45.268998 + type: 'test' + ... +# Subtest: A10, X3: at start a resolved, unspent enrollment is spent and ends interrupted, and never runs late +ok 158 - A10, X3: at start a resolved, unspent enrollment is spent and ends interrupted, and never runs late + --- + duration_ms: 26.432207 + type: 'test' + ... +# Subtest: X3: at start an enrollment that stopped after its registry step loses its record and key file +ok 159 - X3: at start an enrollment that stopped after its registry step loses its record and key file + --- + duration_ms: 56.19618 + type: 'test' + ... +# Subtest: G24 first sentence, M2, A12: tags are mosaic- and 32 hex, and differ by business, agent and host +ok 160 - G24 first sentence, M2, A12: tags are mosaic- and 32 hex, and differ by business, agent and host + --- + duration_ms: 0.281679 + type: 'test' + ... +# Subtest: E4: hosts.check sets the record ready and records grant.host.checked; a non-zero list leaves it pending +ok 161 - E4: hosts.check sets the record ready and records grant.host.checked; a non-zero list leaves it pending + --- + duration_ms: 46.612263 + type: 'test' + ... +# Subtest: G20 (duckworth-0081 B3): the human's hosts.check marks the host ready, and the reader refuses +ok 162 - G20 (duckworth-0081 B3): the human's hosts.check marks the host ready, and the reader refuses + --- + duration_ms: 42.822083 + type: 'test' + ... +# Subtest: G18 (duckworth-0081 B2), broker half: a check refused host-key-mismatch leaves the host pending-install with no grant.host.checked +ok 163 - G18 (duckworth-0081 B2), broker half: a check refused host-key-mismatch leaves the host pending-install with no grant.host.checked + --- + duration_ms: 42.790339 + type: 'test' + ... +# Subtest: E4: a check whose installer fingerprint differs from the record refuses host-changed +ok 164 - E4: a check whose installer fingerprint differs from the record refuses host-changed + --- + duration_ms: 40.510717 + type: 'test' + ... +# Subtest: E4, G21: hosts.remove is the human's or the tester's, deletes the key and the record, and records grant.host.removed +ok 165 - E4, G21: hosts.remove is the human's or the tester's, deletes the key and the record, and records grant.host.removed + --- + duration_ms: 44.228367 + type: 'test' + ... +# Subtest: G21, F1, F2, M4, A22: hosts.remove refuses host-line-left on a guarded hostLineLeft, and ignores look-alikes +ok 166 - G21, F1, F2, M4, A22: hosts.remove refuses host-line-left on a guarded hostLineLeft, and ignores look-alikes + --- + duration_ms: 44.489137 + type: 'test' + ... +# Subtest: hosts.remove refuses host-in-use while a grant record names the host +ok 167 - hosts.remove refuses host-in-use while a grant record names the host + --- + duration_ms: 41.572606 + type: 'test' + ... +# Subtest: the grant writer refuses a body outside section 7's shape +ok 168 - the grant writer refuses a body outside section 7's shape + --- + duration_ms: 18.054911 + type: 'test' + ... +# Subtest: recordEvent refuses reserved-event for a grant.* action or operation +ok 169 - recordEvent refuses reserved-event for a grant.* action or operation + --- + duration_ms: 16.490208 + type: 'test' + ... +# Subtest: G7: an Approve installs the tagged line, logs in with the new key, and writes the key file, record and grant.applied +ok 170 - G7: an Approve installs the tagged line, logs in with the new key, and writes the key file, record and grant.applied + --- + duration_ms: 667.518142 + type: 'test' + ... +# Subtest: G7: a commands change on a live grant updates the record in one transaction and keeps the key and line +ok 171 - G7: a commands change on a live grant updates the record in one transaction and keeps the key and line + --- + duration_ms: 539.700003 + type: 'test' + ... +# Subtest: G8: a failure at install or verify removes the line and leaves no record, key file or reference +ok 172 - G8: a failure at install or verify removes the line and leaves no record, key file or reference + --- + duration_ms: 1487.048179 + type: 'test' + ... +# Subtest: G8: a failed remove adds hostLineLeft and tells the human to sweep +ok 173 - G8: a failed remove adds hostLineLeft and tells the human to sweep + --- + duration_ms: 624.760574 + type: 'test' + ... +# Subtest: G8: a failure in step 5 before commit unlinks the key file, drops the reference and removes the line +ok 174 - G8: a failure in step 5 before commit unlinks the key file, drops the reference and removes the line + --- + duration_ms: 660.845465 + type: 'test' + ... +# Subtest: G8: a store fault in the commit transaction ends host-failed with no record, key file, reference or line +ok 175 - G8: a store fault in the commit transaction ends host-failed with no record, key file, reference or line + --- + duration_ms: 672.933454 + type: 'test' + ... +# Subtest: G8: a failed step 1 check spends the decision and runs nothing remote +ok 176 - G8: a failed step 1 check spends the decision and runs nothing remote + --- + duration_ms: 85.397991 + type: 'test' + ... +# Subtest: G9: a registry, definition or commands change between raise and Approve ends decision-mismatch before any remote step +ok 177 - G9: a registry, definition or commands change between raise and Approve ends decision-mismatch before any remote step + --- + duration_ms: 520.564535 + type: 'test' + ... +# Subtest: G9: an agent no longer a role or no longer declaring host ends with its code, spent +ok 178 - G9: an agent no longer a role or no longer declaring host ends with its code, spent + --- + duration_ms: 69.01659 + type: 'test' + ... +# Subtest: G10: a second start refuses decision-consumed, and an unresolved or agent-resolved decision not-authorized, writing nothing +ok 179 - G10: a second start refuses decision-consumed, and an unresolved or agent-resolved decision not-authorized, writing nothing + --- + duration_ms: 520.715855 + type: 'test' + ... +# Subtest: G15: no event, message or decision holds the private key +ok 180 - G15: no event, message or decision holds the private key + --- + duration_ms: 505.380305 + type: 'test' + ... +# Subtest: G23: a revoke during install ends grant.failed revoked with no key file, no grant and no line +ok 181 - G23: a revoke during install ends grant.failed revoked with no key file, no grant and no line + --- + duration_ms: 521.010121 + type: 'test' + ... +# Subtest: G23 (row 249): an add that writes after an abort's remove leaves hostLineLeft until the sweep +ok 182 - G23 (row 249): an add that writes after an abort's remove leaves hostLineLeft until the sweep + --- + duration_ms: 888.017172 + type: 'test' + ... +# Subtest: G23 (row 249): an add that writes after a timed-out install's remove leaves hostLineLeft until the sweep +ok 183 - G23 (row 249): an add that writes after a timed-out install's remove leaves hostLineLeft until the sweep + --- + duration_ms: 855.798937 + type: 'test' + ... +# Subtest: G23: a revoke recorded after the raise and before the start ends step 1 revoked, and a held slot ends host-busy +ok 184 - G23: a revoke recorded after the raise and before the start ends step 1 revoked, and a held slot ends host-busy + --- + duration_ms: 509.034214 + type: 'test' + ... +# Subtest: G24: names at 64 characters with . and _ give distinct tags of the fixed length +ok 185 - G24: names at 64 characters with . and _ give distinct tags of the fixed length + --- + duration_ms: 0.332223 + type: 'test' + ... +# Subtest: G11: a restart after install removes the line, then ends interrupted with the tag, holding the slot until then +ok 186 - G11: a restart after install removes the line, then ends interrupted with the tag, holding the slot until then + --- + duration_ms: 213.041795 + type: 'test' + ... +# Subtest: G11: a restart after a new key's commit, with the key file written, ends with no key file, record, reference or line +ok 187 - G11: a restart after a new key's commit, with the key file written, ends with no key file, record, reference or line + --- + duration_ms: 215.986835 + type: 'test' + ... +# Subtest: G11: a restart after a commands change's commit leaves the record as it was and asks nothing of the host +ok 188 - G11: a restart after a commands change's commit leaves the record as it was and asks nothing of the host + --- + duration_ms: 514.067137 + type: 'test' + ... +# Subtest: G11 (B2): a restart before step 1, spent or not yet spent, ends interrupted and nothing runs later +ok 189 - G11 (B2): a restart before step 1, spent or not yet spent, ends interrupted and nothing runs later + --- + duration_ms: 64.612761 + type: 'test' + ... +# Subtest: G11: a remote undo that fails ends interrupted with hostLineLeft and the sweep hint +ok 190 - G11: a remote undo that fails ends interrupted with hostLineLeft and the sweep hint + --- + duration_ms: 269.921468 + type: 'test' + ... +# Subtest: G11: a restart leaves a finished grant alone, and the reconcile adds nothing for it +ok 191 - G11: a restart leaves a finished grant alone, and the reconcile adds nothing for it + --- + duration_ms: 508.335581 + type: 'test' + ... +# Subtest: N1 (G27): the start sweep unlinks host. files with no record in loaded businesses only, and refuses a store dir that is not private +ok 192 - N1 (G27): the start sweep unlinks host. files with no record in loaded businesses only, and refuses a store dir that is not private + --- + duration_ms: 6.910751 + type: 'test' + ... +# Subtest: G12: the human's hosts.revoke deletes the record, the key file, the reference and the line, with a closed marker +ok 193 - G12: the human's hosts.revoke deletes the record, the key file, the reference and the line, with a closed marker + --- + duration_ms: 656.975352 + type: 'test' + ... +# Subtest: G12 (N4): a revoke with no record still removes the computed tag's line, with granted false; bad args refuse +ok 194 - G12 (N4): a revoke with no record still removes the computed tag's line, with granted false; bad args refuse + --- + duration_ms: 209.441325 + type: 'test' + ... +# Subtest: G13: a revoke during install aborts the executor, which ends revoked, and the line goes +ok 195 - G13: a revoke during install aborts the executor, which ends revoked, and the line goes + --- + duration_ms: 555.83447 + type: 'test' + ... +# Subtest: G26: the human, the assistant and the tester revoke; the chief and a pm refuse; sweep is the human's or the tester's +ok 196 - G26: the human, the assistant and the tester revoke; the chief and a pm refuse; sweep is the human's or the tester's + --- + duration_ms: 506.182278 + type: 'test' + ... +# Subtest: G27: a restart after step 1 sweeps the key file and runs step 3 once the bus is up; status shows the revoke until then +ok 197 - G27: a restart after step 1 sweeps the key file and runs step 3 once the bus is up; status shows the revoke until then + --- + duration_ms: 691.146173 + type: 'test' + ... +# Subtest: G27: after step 2 with the host down, the restart closes the marker with hostLineLeft; a marker without a revoke id is not reopened +ok 198 - G27: after step 2 with the host down, the restart closes the marker with hostLineLeft; a marker without a revoke id is not reopened + --- + duration_ms: 943.671781 + type: 'test' + ... +# Subtest: G27: a key file a revoke could not unlink is reported left and goes at the next start +ok 199 - G27: a key file a revoke could not unlink is reported left and goes at the next start + --- + duration_ms: 626.575621 + type: 'test' + ... +# Subtest: G28: a commands change, then a revoke, then a restart leave no record, key, reference or line +ok 200 - G28: a commands change, then a revoke, then a restart leave no record, key, reference or line + --- + duration_ms: 678.402298 + type: 'test' + ... +# Subtest: G24 (B4): hosts.sweep removes only this business's recorded tags no live grant holds, and records what it left +ok 201 - G24 (B4): hosts.sweep removes only this business's recorded tags no live grant holds, and records what it left + --- + duration_ms: 917.364838 + type: 'test' + ... +# Subtest: G12: the local steps finish before the host step, so a host that hangs leaves the agent no access +ok 202 - G12: the local steps finish before the host step, so a host that hangs leaves the agent no access + --- + duration_ms: 676.095497 + type: 'test' + ... +# Subtest: G23 (X5): a revoke right after the spend reaches the executor's claim, so the grant ends revoked +ok 203 - G23 (X5): a revoke right after the spend reaches the executor's claim, so the grant ends revoked + --- + duration_ms: 204.076875 + type: 'test' + ... +# Subtest: G23 (X5): a revoke that lands as verify returns ends revoked with no record, key file or line +ok 204 - G23 (X5): a revoke that lands as verify returns ends revoked with no record, key file or line + --- + duration_ms: 642.067789 + type: 'test' + ... +# Subtest: G13: a revoke whose host remove fails still drops the record and key, and reports the line left for a sweep +ok 205 - G13: a revoke whose host remove fails still drops the record and key, and reports the line left for a sweep + --- + duration_ms: 646.471788 + type: 'test' + ... +# Subtest: G22: enroll, check, grant, host.run, a commands change the next host.run uses, and a revoke that kills a run in flight +ok 206 - G22: enroll, check, grant, host.run, a commands change the next host.run uses, and a revoke that kills a run in flight + --- + duration_ms: 1164.683325 + type: 'test' + ... +# Subtest: mos-1163: a grant whose agent became a creative role after the raise ends host-creative-role at step 1, spent, with nothing remote +ok 207 - mos-1163: a grant whose agent became a creative role after the raise ends host-creative-role at step 1, spent, with nothing remote + --- + duration_ms: 59.21921 + type: 'test' + ... +# Subtest: sage-1908: once the agent of an applied grant is a creative role, host.run refuses host-creative-role, runs nothing remote and keeps the record +ok 208 - sage-1908: once the agent of an applied grant is a creative role, host.run refuses host-creative-role, runs nothing remote and keeps the record + --- + duration_ms: 530.413473 + type: 'test' + ... +# Subtest: G1 (host): only the chief raises a host grant, a grant on any other action refuses, and nothing is stored +ok 209 - G1 (host): only the chief raises a host grant, a grant on any other action refuses, and nothing is stored + --- + duration_ms: 22.891808 + type: 'test' + ... +# Subtest: G1, R4: the grant takes exactly method, agent, host, commands and rotateBy, and an unknown method refuses +ok 210 - G1, R4: the grant takes exactly method, agent, host, commands and rotateBy, and an unknown method refuses + --- + duration_ms: 27.138669 + type: 'test' + ... +# Subtest: G2: an agent whose definition lacks host refuses host-not-declared, and an unknown agent unknown-role +ok 211 - G2: an agent whose definition lacks host refuses host-not-declared, and an unknown agent unknown-role + --- + duration_ms: 19.86742 + type: 'test' + ... +# Subtest: mos-1163: a grant whose agent is a creative role refuses host-creative-role, even when its definition declares host +ok 212 - mos-1163: a grant whose agent is a creative role refuses host-creative-role, even when its definition declares host + --- + duration_ms: 15.004324 + type: 'test' + ... +# Subtest: G3: wildcard, shell, empty and other 210 D6 argv prefixes refuse invalid-request +ok 213 - G3: wildcard, shell, empty and other 210 D6 argv prefixes refuse invalid-request + --- + duration_ms: 33.640538 + type: 'test' + ... +# Subtest: R4 rotateBy (sage-1782): a real calendar day after today UTC, or invalid-request +ok 214 - R4 rotateBy (sage-1782): a real calendar day after today UTC, or invalid-request + --- + duration_ms: 23.680942 + type: 'test' + ... +# Subtest: G19: a grant naming a host that is pending-install refuses host-not-ready, and an unknown host host-unknown +ok 215 - G19: a grant naming a host that is pending-install refuses host-not-ready, and an unknown host host-unknown + --- + duration_ms: 20.52553 + type: 'test' + ... +# Subtest: R4, G5: the raise routes to the human and its event body binds the eight fields with their hashes +ok 216 - R4, G5: the raise routes to the human and its event body binds the eight fields with their hashes + --- + duration_ms: 16.264233 + type: 'test' + ... +# Subtest: G4 (host block): the broker appends the host, each prefix, the rotate date and new key or change +ok 217 - G4 (host block): the broker appends the host, each prefix, the rotate date and new key or change + --- + duration_ms: 29.240239 + type: 'test' + ... +# Subtest: 3i copy migrates to 3j: every row kept, and sqlite_master gains only the two tables, their keys and the guard +ok 218 - 3i copy migrates to 3j: every row kept, and sqlite_master gains only the two tables, their keys and the guard + --- + duration_ms: 64.621387 + type: 'test' + ... +# Subtest: a 3i→3j step that fails partway leaves the store at 3i with every row and the schema intact +ok 219 - a 3i→3j step that fails partway leaves the store at 3i with every row and the schema intact + --- + duration_ms: 73.775967 + type: 'test' + ... +# Subtest: the 3i engine refuses a 3j store, migrating or not, and leaves it at 3j +ok 220 - the 3i engine refuses a 3j store, migrating or not, and leaves it at 3j + --- + duration_ms: 71.78309 + type: 'test' + ... +# Subtest: A22b, sage-1703: a session-written grant.* row from before the step survives it, and the grant readers ignore it +ok 221 - A22b, sage-1703: a session-written grant.* row from before the step survives it, and the grant readers ignore it + --- + duration_ms: 62.733448 + type: 'test' + ... +# Subtest: the guard: a grant.* action or operation on action.allowed needs the (NULL, grant) actor +ok 222 - the guard: a grant.* action or operation on action.allowed needs the (NULL, grant) actor + --- + duration_ms: 12.63685 + type: 'test' + ... +# Subtest: hosts: one record per business and host, a ready host has its installer and check, grants need the host +ok 223 - hosts: one record per business and host, a ready host has its installer and check, grants need the host + --- + duration_ms: 10.312774 + type: 'test' + ... +# Subtest: REQ-WAIT-1: the broker hard waits are exactly the list, and match the business vocabulary +ok 224 - REQ-WAIT-1: the broker hard waits are exactly the list, and match the business vocabulary + --- + duration_ms: 1.080773 + type: 'test' + ... +# Subtest: REQ-WAIT-2: a business granting a hard wait at either class is refused; the actions that left are grantable +ok 225 - REQ-WAIT-2: a business granting a hard wait at either class is refused; the actions that left are grantable + --- + duration_ms: 13.463163 + type: 'test' + ... +# Subtest: REQ-DEC-2: every hard wait goes to the human, cited or not, and the arbiter cannot resolve it +ok 226 - REQ-DEC-2: every hard wait goes to the human, cited or not, and the arbiter cannot resolve it + --- + duration_ms: 391.447797 + type: 'test' + ... +# Subtest: REQ-DEC-2: a gated raise citing the current spec goes to the arbiter for its domain; uncited, to the human +ok 227 - REQ-DEC-2: a gated raise citing the current spec goes to the arbiter for its domain; uncited, to the human + --- + duration_ms: 152.434733 + type: 'test' + ... +# Subtest: REQ-DEC-2: an arbiter-approved cited gated decision authorizes the raiser, and the human cannot resolve it +ok 228 - REQ-DEC-2: an arbiter-approved cited gated decision authorizes the raiser, and the human cannot resolve it + --- + duration_ms: 40.313928 + type: 'test' + ... +# Subtest: REQ-DEC-2: a cited merge raised by merge-gate goes to the technical arbiter; a merge raised without the grant routes by citation +ok 229 - REQ-DEC-2: a cited merge raised by merge-gate goes to the technical arbiter; a merge raised without the grant routes by citation + --- + duration_ms: 58.340396 + type: 'test' + ... +# Subtest: REQ-DEC-2: a stale or unconfirmed citation refuses without a decision; an arbiter raising its own goes to the human +ok 230 - REQ-DEC-2: a stale or unconfirmed citation refuses without a decision; an arbiter raising its own goes to the human + --- + duration_ms: 92.052472 + type: 'test' + ... +# Subtest: Q169: the chief of staff's end of the assistant stops every thread run; its own run and another ender's are refused +ok 231 - Q169: the chief of staff's end of the assistant stops every thread run; its own run and another ender's are refused + --- + duration_ms: 40.128972 + type: 'test' + ... +# Subtest: Q169: a revoke of the assistant the chief of staff raises goes to the human, cited or not, and no arbiter resolves it +ok 232 - Q169: a revoke of the assistant the chief of staff raises goes to the human, cited or not, and no arbiter resolves it + --- + duration_ms: 102.437038 + type: 'test' + ... +# Subtest: Q169: another role's cited revoke of the assistant, resolved by an arbiter, is refused +ok 233 - Q169: another role's cited revoke of the assistant, resolved by an arbiter, is refused + --- + duration_ms: 61.428684 + type: 'test' + ... +# Subtest: Q169: a revoke of the assistant citing a decision the human resolved stops its thread run +ok 234 - Q169: a revoke of the assistant citing a decision the human resolved stops its thread run + --- + duration_ms: 44.388002 + type: 'test' + ... +# Subtest: Q169: a cited revoke of a role not in END_PROTECTED still goes to the arbiter, and executes +ok 235 - Q169: a cited revoke of a role not in END_PROTECTED still goes to the arbiter, and executes + --- + duration_ms: 42.500277 + type: 'test' + ... +# Subtest: Q169: a role granted role.revoke at either class still sends a revoke of the assistant to the human +ok 236 - Q169: a role granted role.revoke at either class still sends a revoke of the assistant to the human + --- + duration_ms: 59.374851 + type: 'test' + ... +# Subtest: the executor tests need sshd, ssh, ssh-agent, ssh-add, ssh-keygen and setpriv: a missing one fails, never skips +ok 237 - the executor tests need sshd, ssh, ssh-agent, ssh-add, ssh-keygen and setpriv: a missing one fails, never skips + --- + duration_ms: 0.810869 + type: 'test' + ... +# Subtest: T3: organization.set, limits.set and instances.set refuse hosts, and the writer never runs +ok 238 - T3: organization.set, limits.set and instances.set refuse hosts, and the writer never runs + --- + duration_ms: 16.744987 + type: 'test' + ... +# Subtest: T4: the value check takes one unencrypted ed25519 key and nothing else +ok 239 - T4: the value check takes one unencrypted ed25519 key and nothing else + --- + duration_ms: 225.729681 + type: 'test' + ... +# Subtest: T5 to T8: registry, grant, argv shape and allowlist refusals +ok 240 - T5 to T8: registry, grant, argv shape and allowlist refusals + --- + duration_ms: 516.899743 + type: 'test' + ... +# Subtest: T9: under 1.7 every call needs a decision bound to its host, argv and stdin, spent once +ok 241 - T9: under 1.7 every call needs a decision bound to its host, argv and stdin, spent once + --- + duration_ms: 299.814907 + type: 'test' + ... +# Subtest: T10, T11: argv reaches sudo unchanged after sudo -n -- +ok 242 - T10, T11: argv reaches sudo unchanged after sudo -n -- + --- + duration_ms: 252.833355 + type: 'test' + ... +# Subtest: T12, T13: exit code passes through, the timeout kills the group, output is capped +ok 243 - T12, T13: exit code passes through, the timeout kills the group, output is capped + --- + duration_ms: 1522.095876 + type: 'test' + ... +# Subtest: T14: a host key not in the registry refuses and nothing runs +ok 244 - T14: a host key not in the registry refuses and nothing runs + --- + duration_ms: 170.335557 + type: 'test' + ... +# Subtest: G18: hosts.check with a wrong pin refuses host-key-mismatch and runs nothing on the host +ok 245 - G18: hosts.check with a wrong pin refuses host-key-mismatch and runs nothing on the host + --- + duration_ms: 304.980097 + type: 'test' + ... +# Subtest: N3: a remote exit 255 that prints the pin refusal text is the command result, and an ssh failure keeps its message +ok 246 - N3: a remote exit 255 that prints the pin refusal text is the command result, and an ssh failure keeps its message + --- + duration_ms: 297.412641 + type: 'test' + ... +# Subtest: T15: ssh reads no config file and no user known_hosts +ok 247 - T15: ssh reads no config file and no user known_hosts + --- + duration_ms: 286.993914 + type: 'test' + ... +# Subtest: T16, T17: key material in output or stdin refuses credential-leak, and no event holds it +ok 248 - T16, T17: key material in output or stdin refuses credential-leak, and no event holds it + --- + duration_ms: 628.795559 + type: 'test' + ... +# Subtest: T18, T19, T20: one call at a time, no key in any argv or env, and nothing left after +ok 249 - T18, T19, T20: one call at a time, no key in any argv or env, and nothing left after + --- + duration_ms: 4644.384186 + type: 'test' + ... +# Subtest: T21: revoke kills the call in flight, and the next call refuses +ok 250 - T21: revoke kills the call in flight, and the next call refuses + --- + duration_ms: 282.103135 + type: 'test' + ... +# Subtest: T22: events carry host, address, user and argv in clear, and sizes and hashes only +ok 251 - T22: events carry host, address, user and argv in clear, and sizes and hashes only + --- + duration_ms: 257.083126 + type: 'test' + ... +# Subtest: T24: no literal gitea and vikunja kind list outside vocabulary.mjs, and the credential use sites are known +ok 252 - T24: no literal gitea and vikunja kind list outside vocabulary.mjs, and the credential use sites are known + --- + duration_ms: 15.758836 + type: 'test' + ... +# Subtest: T25: no role definition lists host.sudo while it is a hard wait +ok 253 - T25: no role definition lists host.sudo while it is a hard wait + --- + duration_ms: 0.547116 + type: 'test' + ... +# Subtest: T27: the bus child dying takes ssh and ssh-agent with it +ok 254 - T27: the bus child dying takes ssh and ssh-agent with it + --- + duration_ms: 322.740313 + type: 'test' + ... +# Subtest: T27: ssh-add -t drops the key from an agent the test keeps alive +ok 255 - T27: ssh-add -t drops the key from an agent the test keeps alive + --- + duration_ms: 2550.499948 + type: 'test' + ... +# Subtest: N2: a hung ssh-add is killed at its limit or on abort, and nothing is left running +ok 256 - N2: a hung ssh-add is killed at its limit or on abort, and nothing is left running + --- + duration_ms: 428.36199 + type: 'test' + ... +# Subtest: T27: the start sweep keeps a live bus dir and kills only a matching live process +ok 257 - T27: the start sweep keeps a live bus dir and kills only a matching live process + --- + duration_ms: 25.575947 + type: 'test' + ... +# Subtest: T27: the bus start sweeps /secrets/run before it listens, and a stray entry stops the start +ok 258 - T27: the bus start sweeps /secrets/run before it listens, and a stray entry stops the start + --- + duration_ms: 53.022875 + type: 'test' + ... +# Subtest: M3: host.run refuses host-not-granted unless the grant record has an approved, spent host grant +ok 259 - M3: host.run refuses host-not-granted unless the grant record has an approved, spent host grant + --- + duration_ms: 126.907861 + type: 'test' + ... +# Subtest: M3: a host_grants record gives Credentials a store reference at start, and a restart reads its key +ok 260 - M3: a host_grants record gives Credentials a store reference at start, and a restart reads its key + --- + duration_ms: 95.921644 + type: 'test' + ... +# Subtest: G16: the writer refuses each user, tag and key the design names, before any key file +ok 261 - G16: the writer refuses each user, tag and key the design names, before any key file + --- + duration_ms: 3928.323911 + type: 'test' + ... +# Subtest: G16: from= comes from the host file, a privileged user skips the group and sudo checks, and the line is exact +ok 262 - G16: from= comes from the host file, a privileged user skips the group and sudo checks, and the line is exact + --- + duration_ms: 1137.0558 + type: 'test' + ... +# Subtest: G16: list shows tagged lines only, and add and remove never touch a line outside the tag pattern +ok 263 - G16: list shows tagged lines only, and add and remove never touch a line outside the tag pattern + --- + duration_ms: 580.888725 + type: 'test' + ... +# Subtest: G25: the writer refuses a symlinked dir or user file, a group-writable dir and an odd tmp, and writes 0644 +ok 264 - G25: the writer refuses a symlinked dir or user file, a group-writable dir and an odd tmp, and writes 0644 + --- + duration_ms: 723.755538 + type: 'test' + ... +# Subtest: G16: mosaic-keys passes the three requests to the writer through sudo and refuses anything else without it +ok 265 - G16: mosaic-keys passes the three requests to the writer through sudo and refuses anything else without it + --- + duration_ms: 62.686303 + type: 'test' + ... +# Subtest: E3: the sudoers line and the sshd drop-in are the design lines and parse +ok 266 - E3: the sudoers line and the sshd drop-in are the design lines and parse + --- + duration_ms: 12.300551 + type: 'test' + ... +# Subtest: human proof binds CLI entry, process start and nonce; agents and incomplete ancestry refuse +ok 267 - human proof binds CLI entry, process start and nonce; agents and incomplete ancestry refuse + --- + duration_ms: 2.076336 + type: 'test' + ... +# Subtest: process reader gets own kernel identity without exposing environment values +ok 268 - process reader gets own kernel identity without exposing environment values + --- + duration_ms: 0.448101 + type: 'test' + ... +# Subtest: EACCES ancestor environments skip only markers; commands and registered launches still refuse +ok 269 - EACCES ancestor environments skip only markers; commands and registered launches still refuse + --- + duration_ms: 0.60447 + type: 'test' + ... +# Subtest: real pid 1 remains inspectable when its environment is protected +ok 270 - real pid 1 remains inspectable when its environment is protected + --- + duration_ms: 0.25262 + type: 'test' + ... +# Subtest: row 165: instances and instances.set refuse every non-human session but the tester, the chief of staff included, and pass the verified actor +ok 271 - row 165: instances and instances.set refuse every non-human session but the tester, the chief of staff included, and pass the verified actor + --- + duration_ms: 31.851344 + type: 'test' + ... +# Subtest: row 165 runtime: an add and a change reach the organization file with the human as actor; each refusal keeps the bytes and logs nothing +ok 272 - row 165 runtime: an add and a change reach the organization file with the human as actor; each refusal keeps the bytes and logs nothing + --- + duration_ms: 116.071119 + type: 'test' + ... +# Subtest: system Python is a resolved root-owned ELF, never a shim or home interpreter +ok 273 - system Python is a resolved root-owned ELF, never a shim or home interpreter + --- + duration_ms: 2.050441 + type: 'test' + ... +# Subtest: real system interpreter is available and safely inspected +ok 274 - real system interpreter is available and safely inspected + --- + duration_ms: 18.316508 + type: 'test' + ... +# Subtest: restart receipt appends actual replacement identity and refuses unsafe files +ok 275 - restart receipt appends actual replacement identity and refuses unsafe files + --- + duration_ms: 2.628619 + type: 'test' + ... +# Subtest: activation gate compares fresh startup receipt to the current interpreter identity +ok 276 - activation gate compares fresh startup receipt to the current interpreter identity + --- + duration_ms: 1.319448 + type: 'test' + ... +# Subtest: non-regular startup receipt refuses promptly without waiting on a FIFO peer +ok 277 - non-regular startup receipt refuses promptly without waiting on a FIFO peer + --- + duration_ms: 37.833072 + type: 'test' + ... +# Subtest: REQ-DEC-2: a merge-gate raise its arbiter resolved lands through the host op: checkLand answers the facts and a ticket, records nothing, and recordLand spends the decision once +ok 278 - REQ-DEC-2: a merge-gate raise its arbiter resolved lands through the host op: checkLand answers the facts and a ticket, records nothing, and recordLand spends the decision once + --- + duration_ms: 33.414947 + type: 'test' + ... +# Subtest: checkLand refuses on the decision and the review +ok 279 - checkLand refuses on the decision and the review + --- + duration_ms: 30.478311 + type: 'test' + ... +# Subtest: REQ-LAND-1: a gated merge decision refuses not-authorized, cited and approved by the arbiter or uncited and approved by the human +ok 280 - REQ-LAND-1: a gated merge decision refuses not-authorized, cited and approved by the arbiter or uncited and approved by the human + --- + duration_ms: 94.814822 + type: 'test' + ... +# Subtest: REQ-LAND-1: a within-role merge grant refuses not-authorized at the land +ok 281 - REQ-LAND-1: a within-role merge grant refuses not-authorized at the land + --- + duration_ms: 20.779072 + type: 'test' + ... +# Subtest: a cross-role merge that routes to the human, because merge-gate is its own arbiter, lands on the human's CLI answer +ok 282 - a cross-role merge that routes to the human, because merge-gate is its own arbiter, lands on the human's CLI answer + --- + duration_ms: 23.605008 + type: 'test' + ... +# Subtest: a merge option with no first line refuses no-subject, as land-work does +ok 283 - a merge option with no first line refuses no-subject, as land-work does + --- + duration_ms: 18.531814 + type: 'test' + ... +# Subtest: checkLand refuses with land-work's codes past the authority check, and a decision raised for refactor never lands +ok 284 - checkLand refuses with land-work's codes past the authority check, and a decision raised for refactor never lands + --- + duration_ms: 50.142215 + type: 'test' + ... +# Subtest: a ticket outlives the run that asked, and recordLand checks the task again +ok 285 - a ticket outlives the run that asked, and recordLand checks the task again + --- + duration_ms: 23.941534 + type: 'test' + ... +# Subtest: two tickets on one decision: the first recordLand lands, the second refuses decision-consumed and records nothing +ok 286 - two tickets on one decision: the first recordLand lands, the second refuses decision-consumed and records nothing + --- + duration_ms: 23.433979 + type: 'test' + ... +# Subtest: landRefused files the code on the task, tells the role only with notify, and ends the ticket +ok 287 - landRefused files the code on the task, tells the role only with notify, and ends the ticket + --- + duration_ms: 25.038543 + type: 'test' + ... +# Subtest: landHeld is true only for an approved, unspent cross-role merge decision this role raised for a task in this thread +ok 288 - landHeld is true only for an approved, unspent cross-role merge decision this role raised for a task in this thread + --- + duration_ms: 25.231834 + type: 'test' + ... +# Subtest: landHolders lists a merge decision exactly while landHeld is true for its non-thread instance, in decision order +ok 289 - landHolders lists a merge decision exactly while landHeld is true for its non-thread instance, in decision order + --- + duration_ms: 34.868605 + type: 'test' + ... +# Subtest: landHolders leaves out a thread instance's decision, even one raised before its role became one +ok 290 - landHolders leaves out a thread instance's decision, even one raised before its role became one + --- + duration_ms: 23.94698 + type: 'test' + ... +# Subtest: landRelease releases the holding run by land-relaunch once it has asked message.receive and nothing delivered to it is unread, and waiting messages go to the next holder +ok 291 - landRelease releases the holding run by land-relaunch once it has asked message.receive and nothing delivered to it is unread, and waiting messages go to the next holder + --- + duration_ms: 33.463265 + type: 'test' + ... +# Subtest: a landing run started after the resolution passes checkLand for its held decision before any message.receive, and lands it +ok 292 - a landing run started after the resolution passes checkLand for its held decision before any message.receive, and lands it + --- + duration_ms: 24.588573 + type: 'test' + ... +# Subtest: the bus process answers landHolders and landRelease from their own lines, not as credentialStatus +ok 293 - the bus process answers landHolders and landRelease from their own lines, not as credentialStatus + --- + duration_ms: 124.874425 + type: 'test' + ... +# Subtest: usage.begin with a decision id needs it held for the run's instance, usage.end needs the begin, and the limit checks see the landing turn +ok 294 - usage.begin with a decision id needs it held for the run's instance, usage.end needs the begin, and the limit checks see the landing turn + --- + duration_ms: 32.986778 + type: 'test' + ... +# Subtest: no run may write the action.allowed for git.merge.protected itself +ok 295 - no run may write the action.allowed for git.merge.protected itself + --- + duration_ms: 14.51787 + type: 'test' + ... +# Subtest: a message to a stopped role sends launch.by one notice, and the result says so +ok 296 - a message to a stopped role sends launch.by one notice, and the result says so + --- + duration_ms: 23.313873 + type: 'test' + ... +# Subtest: a message to a role outside launch.instances says so in its result and in the notice +ok 297 - a message to a role outside launch.instances says so in its result and in the notice + --- + duration_ms: 13.786017 + type: 'test' + ... +# Subtest: a message to a running role sends no notice and its result is unchanged +ok 298 - a message to a running role sends no notice and its result is unchanged + --- + duration_ms: 11.558694 + type: 'test' + ... +# Subtest: a re-route at a claim, a release and claim, and a broker restart send no second notice +ok 299 - a re-route at a claim, a release and claim, and a broker restart send no second notice + --- + duration_ms: 20.052498 + type: 'test' + ... +# Subtest: a run launched but not yet claimed counts as no holder +ok 300 - a run launched but not yet claimed counts as no holder + --- + duration_ms: 14.1932 + type: 'test' + ... +# Subtest: no notice for a message to launch.by, from it, a refused one from a tester, to the human, or in a thread to a thread instance +ok 301 - no notice for a message to launch.by, from it, a refused one from a tester, to the human, or in a thread to a thread instance + --- + duration_ms: 22.72975 + type: 'test' + ... +# Subtest: a business with no launch block tells nobody and says there is no launcher +ok 302 - a business with no launch block tells nobody and says there is no launcher + --- + duration_ms: 9.946214 + type: 'test' + ... +# Subtest: the notice sender stays internal: no role is named _bus and no caller can send as it or to it +ok 303 - the notice sender stays internal: no role is named _bus and no caller can send as it or to it + --- + duration_ms: 28.738381 + type: 'test' + ... +# Subtest: C2-04 M4: both verbs reject every agent before arguments or adapter access +ok 304 - C2-04 M4: both verbs reject every agent before arguments or adapter access + --- + duration_ms: 31.471076 + type: 'test' + ... +# Subtest: C2-04 bus: human reads validate keys and return adapter results without path leakage +ok 305 - C2-04 bus: human reads validate keys and return adapter results without path leakage + --- + duration_ms: 12.839509 + type: 'test' + ... +# Subtest: C2-04 socket: each async library verb resolves its result rather than serializing {} +ok 306 - C2-04 socket: each async library verb resolves its result rather than serializing {} + --- + duration_ms: 79.38433 + type: 'test' + ... +# Subtest: C2-04 runtime: protectedRoots skips library but retains real code-root credential protection +ok 307 - C2-04 runtime: protectedRoots skips library but retains real code-root credential protection + --- + duration_ms: 58.637235 + type: 'test' + ... +# Subtest: C2-04 runtime: unsafe existing mirror refuses boot and never publishes a socket +ok 308 - C2-04 runtime: unsafe existing mirror refuses boot and never publishes a socket + --- + duration_ms: 19.05544 + type: 'test' + ... +# Subtest: C2-04 runtime: real library adapters reach the socket and lock waits leave other bus reads responsive +ok 309 - C2-04 runtime: real library adapters reach the socket and lock waits leave other bus reads responsive + --- + duration_ms: 175.956357 + type: 'test' + ... +# Subtest: REQ-LIMIT-3 limitLeaves finds every limit object and skips the agent numbers +ok 310 - REQ-LIMIT-3 limitLeaves finds every limit object and skips the agent numbers + --- + duration_ms: 1.43137 + type: 'test' + ... +# Subtest: REQ-LIMIT-3 limitLeaves takes token limits at schema depth only, whatever their names +ok 311 - REQ-LIMIT-3 limitLeaves takes token limits at schema depth only, whatever their names + --- + duration_ms: 0.219041 + type: 'test' + ... +# Subtest: REQ-LIMIT-3 with no check switched on a launch is allowed, a turn never stops, and every limit is not enforced +ok 312 - REQ-LIMIT-3 with no check switched on a launch is allowed, a turn never stops, and every limit is not enforced + --- + duration_ms: 13.020337 + type: 'test' + ... +# Subtest: REQ-LIMIT-3 a fixture check that refuses refuses the launch and stops the turn, logged with the limit and the count +ok 313 - REQ-LIMIT-3 a fixture check that refuses refuses the launch and stops the turn, logged with the limit and the count + --- + duration_ms: 12.024224 + type: 'test' + ... +# Subtest: REQ-LIMIT-3 a report that omits a limit shows it not enforced; a counted entry and a reason come through +ok 314 - REQ-LIMIT-3 a report that omits a limit shows it not enforced; a counted entry and a reason come through + --- + duration_ms: 11.57315 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 each check gets the business, a copy of the limits, the subject, the records and the time +ok 315 - REQ-LIMIT-4 each check gets the business, a copy of the limits, the subject, the records and the time + --- + duration_ms: 11.745605 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 fail closed: a throw refuses, stops and fails the report, naming the check and the code +ok 316 - REQ-LIMIT-4 fail closed: a throw refuses, stops and fails the report, naming the check and the code + --- + duration_ms: 10.804525 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 fail closed: a malformed answer, a promise, a rejected promise, a non-boolean or a bad hit is malformed-answer +ok 317 - REQ-LIMIT-4 fail closed: a malformed answer, a promise, a rejected promise, a non-boolean or a bad hit is malformed-answer + --- + duration_ms: 14.067128 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 fail closed: a check switched on but not loaded refuses, stops and fails every limit as not-loaded +ok 318 - REQ-LIMIT-4 fail closed: a check switched on but not loaded refuses, stops and fails every limit as not-loaded + --- + duration_ms: 10.372306 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 state(), never-loaded case: before any load the report shows not enforced, or not-loaded for a switched-on check +ok 319 - REQ-LIMIT-4 state(), never-loaded case: before any load the report shows not enforced, or not-loaded for a switched-on check + --- + duration_ms: 8.844335 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 state(), first-load-refused case: a check refused on its first load is not-loaded in mayLaunch, mustStop and report +ok 320 - REQ-LIMIT-4 state(), first-load-refused case: a check refused on its first load is not-loaded in mayLaunch, mustStop and report + --- + duration_ms: 9.954377 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 fail closed: an unreadable organization file refuses and stops with check null; the report throws +ok 321 - REQ-LIMIT-4 fail closed: an unreadable organization file refuses and stops with check null; the report throws + --- + duration_ms: 8.878941 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 fail closed: unreadable records refuse and stop with check null and fail the report +ok 322 - REQ-LIMIT-4 fail closed: unreadable records refuse and stop with check null and fail the report + --- + duration_ms: 0.458707 + type: 'test' + ... +# Subtest: REQ-LIMIT-3 the shipped token-limit, through the real loader, counts known records only since the limit was set +ok 323 - REQ-LIMIT-3 the shipped token-limit, through the real loader, counts known records only since the limit was set + --- + duration_ms: 13.783319 + type: 'test' + ... +# Subtest: REQ-LIMIT-3 a token limit for a provider named limit is counted and refuses, beside an agent limit of the same name +ok 324 - REQ-LIMIT-3 a token limit for a provider named limit is counted and refuses, beside an agent limit of the same name + --- + duration_ms: 9.302983 + type: 'test' + ... +# Subtest: REQ-LIMIT-3 core reaches limit checks only through the plug-in loader +ok 325 - REQ-LIMIT-3 core reaches limit checks only through the plug-in loader + --- + duration_ms: 0.727098 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 a role run at its limit stops at the end of its turn: RESULT and read land first, the claim is revoked by limit-check +ok 326 - REQ-LIMIT-4 a role run at its limit stops at the end of its turn: RESULT and read land first, the claim is revoked by limit-check + --- + duration_ms: 26.15648 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 the stop also lands on state; a run with no stop ends without a limit +ok 327 - REQ-LIMIT-4 the stop also lands on state; a run with no stop ends without a limit + --- + duration_ms: 26.392186 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 fail closed: a mustStop throw or a malformed answer stops the run, naming the bus and the code +ok 328 - REQ-LIMIT-4 fail closed: a mustStop throw or a malformed answer stops the run, naming the bus and the code + --- + duration_ms: 61.302881 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 a thread run at its limit is released with the reason, and its end record names the limit +ok 329 - REQ-LIMIT-4 a thread run at its limit is released with the reason, and its end record names the limit + --- + duration_ms: 20.193044 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 a broker with no limit checks configured never stops a run +ok 330 - REQ-LIMIT-4 a broker with no limit checks configured never stops a run + --- + duration_ms: 11.477557 + type: 'test' + ... +# limits: {"event":"limit-reached","business":"demo","check":"token-limit","export":"mayLaunch","subject":{"instance":"coder","provider":"zai","model":"glm-5.3-flash","account":null},"path":["tokens","instances","coder"],"limit":0,"count":0,"unknownTurns":0} +# usage: {"event":"usage-unknown","business":"demo","run":"run1","instance":"coder","turn":"69843b8e-b190-485b-b6b4-a1a1328d6203","source":"@none","code":"baseline-unknown"} +# limits: {"event":"limit-reached","business":"demo","check":"token-limit","export":"mustStop","subject":{"instance":"coder","provider":"zai","model":"glm-5.3-flash","account":null},"path":["tokens","instances","coder"],"limit":0,"count":0,"unknownTurns":1} +# usage: {"event":"usage-unknown","business":"demo","run":"run1","instance":"coder","turn":"77325012-1774-4419-ae4f-801dfc44d938","source":"@none","code":"baseline-unknown"} +# Subtest: REQ-LIMIT-3 REQ-LIMIT-4 runtime: limits carries the token count, mayLaunch refuses at the limit, a reset moves since +ok 331 - REQ-LIMIT-3 REQ-LIMIT-4 runtime: limits carries the token count, mayLaunch refuses at the limit, a reset moves since + --- + duration_ms: 114.64101 + type: 'test' + ... +# Subtest: REQ-LIMIT-3 runtime: with no limit check switched on, the limit shows not enforced and every launch is allowed +ok 332 - REQ-LIMIT-3 runtime: with no limit check switched on, the limit shows not enforced and every launch is allowed + --- + duration_ms: 32.681392 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 runtime: the broker asks the shipped token-limit after a turn, and the run at its limit stops on its next receive +ok 333 - REQ-LIMIT-4 runtime: the broker asks the shipped token-limit after a turn, and the run at its limit stops on its next receive + --- + duration_ms: 43.701412 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 runtime: with no usage source a turn is unknown, counts zero and stops nothing under a limit of 1 +ok 334 - REQ-LIMIT-4 runtime: with no usage source a turn is unknown, counts zero and stops nothing under a limit of 1 + --- + duration_ms: 43.226047 + type: 'test' + ... +# Subtest: REQ-LIMIT-3 runtime: switching a limit check on with plugins.set loads it without a launch or a turn +ok 335 - REQ-LIMIT-3 runtime: switching a limit check on with plugins.set loads it without a launch or a turn + --- + duration_ms: 60.15806 + type: 'test' + ... +# Subtest: limits binds actor from human proof and rejects role, reader, a tester set and forged actor +ok 336 - limits binds actor from human proof and rejects role, reader, a tester set and forged actor + --- + duration_ms: 16.468298 + type: 'test' + ... +# Subtest: runtime wires verified human settings to the actual shared file writer and actor receipt +ok 337 - runtime wires verified human settings to the actual shared file writer and actor receipt + --- + duration_ms: 92.437997 + type: 'test' + ... +# Subtest: uncertain organization receipts leave bus startup and reads alone but refuse writes until reconciled +ok 338 - uncertain organization receipts leave bus startup and reads alone but refuse writes until reconciled + --- + duration_ms: 52.487453 + type: 'test' + ... +# Subtest: within-role sends cite an open gated launch decision without spending it or naming it in grants +ok 339 - within-role sends cite an open gated launch decision without spending it or naming it in grants + --- + duration_ms: 23.288856 + type: 'test' + ... +# Subtest: missing and foreign-business citations refuse and roll back message and grant +ok 340 - missing and foreign-business citations refuse and roll back message and grant + --- + duration_ms: 13.831258 + type: 'test' + ... +# Subtest: cross-role sends still need a matching resolved decision and consume it once +ok 341 - cross-role sends still need a matching resolved decision and consume it once + --- + duration_ms: 19.543721 + type: 'test' + ... +# Subtest: messages pages all human messages newest first without writes; read state is history +ok 342 - messages pages all human messages newest first without writes; read state is history + --- + duration_ms: 265.673216 + type: 'test' + ... +# Subtest: messages refuses role callers, invalid paging and cursors outside this human feed +ok 343 - messages refuses role callers, invalid paging and cursors outside this human feed + --- + duration_ms: 22.198723 + type: 'test' + ... +# Subtest: views messages passes only its paging arguments through +ok 344 - views messages passes only its paging arguments through + --- + duration_ms: 0.256229 + type: 'test' + ... +# Subtest: messages isolates businesses even with a valid foreign cursor +ok 345 - messages isolates businesses even with a valid foreign cursor + --- + duration_ms: 14.413297 + type: 'test' + ... +# Subtest: the assistant sends to the user and to the chief of staff only +ok 346 - the assistant sends to the user and to the chief of staff only + --- + duration_ms: 27.76518 + type: 'test' + ... +# Subtest: an assistant send to any other role, or to the tester, is refused and logged +ok 347 - an assistant send to any other role, or to the tester, is refused and logged + --- + duration_ms: 28.951361 + type: 'test' + ... +# Subtest: only the user and the chief of staff may send to the assistant; the tester is refused by default +ok 348 - only the user and the chief of staff may send to the assistant; the tester is refused by default + --- + duration_ms: 29.084178 + type: 'test' + ... +# Subtest: REQ-ASSIST-2 REQ-THREAD-1 thread.send to an instance that does not hear from the user is refused and stores nothing +ok 349 - REQ-ASSIST-2 REQ-THREAD-1 thread.send to an instance that does not hear from the user is refused and stores nothing + --- + duration_ms: 25.884743 + type: 'test' + ... +# Subtest: a sender-side list alone refuses a send to a role that has no list +ok 350 - a sender-side list alone refuses a send to a role that has no list + --- + duration_ms: 26.963285 + type: 'test' + ... +# Subtest: a target-side list alone refuses a send from a role that has no list +ok 351 - a target-side list alone refuses a send from a role that has no list + --- + duration_ms: 27.260738 + type: 'test' + ... +# Subtest: the sender list is checked before the target list +ok 352 - the sender list is checked before the target list + --- + duration_ms: 27.119273 + type: 'test' + ... +# Subtest: roles without the field behave exactly as before +ok 353 - roles without the field behave exactly as before + --- + duration_ms: 38.142465 + type: 'test' + ... +# Subtest: a business with no role definitions at all is unlimited +ok 354 - a business with no role definitions at all is unlimited + --- + duration_ms: 26.937507 + type: 'test' + ... +# Subtest: a malformed messaging field refuses at boot +ok 355 - a malformed messaging field refuses at boot + --- + duration_ms: 9.362374 + type: 'test' + ... +# Subtest: the assistant's review.request to a reviewer is refused and logged, even with an approved decision +ok 356 - the assistant's review.request to a reviewer is refused and logged, even with an approved decision + --- + duration_ms: 25.781236 + type: 'test' + ... +# Subtest: a review.verdict to the assistant from a role outside its receiveFrom is refused and logged +ok 357 - a review.verdict to the assistant from a role outside its receiveFrom is refused and logged + --- + duration_ms: 29.659479 + type: 'test' + ... +# Subtest: review requests and verdicts between roles without the field are unchanged +ok 358 - review requests and verdicts between roles without the field are unchanged + --- + duration_ms: 21.715034 + type: 'test' + ... +# Subtest: 3f copy migrates to 3g preserving every old column/row, with an empty instance_names and null to_name +ok 359 - 3f copy migrates to 3g preserving every old column/row, with an empty instance_names and null to_name + --- + duration_ms: 77.958602 + type: 'test' + ... +# Subtest: REQ-MSG-2: the chief of staff names an instance under its within-role grant, and the write is logged +ok 360 - REQ-MSG-2: the chief of staff names an instance under its within-role grant, and the write is logged + --- + duration_ms: 20.028251 + type: 'test' + ... +# Subtest: REQ-MSG-2: the human names an instance through the CLI +ok 361 - REQ-MSG-2: the human names an instance through the CLI + --- + duration_ms: 17.333321 + type: 'test' + ... +# Subtest: REQ-MSG-2: a role without the grant, or holding it cross-role, is refused not-authorized +ok 362 - REQ-MSG-2: a role without the grant, or holding it cross-role, is refused not-authorized + --- + duration_ms: 16.67135 + type: 'test' + ... +# Subtest: REQ-MSG-2: a name is unique in the business and is never an instance key or a role name +ok 363 - REQ-MSG-2: a name is unique in the business and is never an instance key or a role name + --- + duration_ms: 27.226528 + type: 'test' + ... +# Subtest: REQ-MSG-2: a send by name reaches the instance and records both; a send by instance key is unchanged +ok 364 - REQ-MSG-2: a send by name reaches the instance and records both; a send by instance key is unchanged + --- + duration_ms: 21.853221 + type: 'test' + ... +# Subtest: REQ-MSG-2: an instance key beats a name that equals it, as when a later instance takes the key +ok 365 - REQ-MSG-2: an instance key beats a name that equals it, as when a later instance takes the key + --- + duration_ms: 14.70217 + type: 'test' + ... +# Subtest: REQ-MSG-2: a role name beats a name that equals it, as when a later definition takes the word (sage-0590) +ok 366 - REQ-MSG-2: a role name beats a name that equals it, as when a later definition takes the word (sage-0590) + --- + duration_ms: 15.264262 + type: 'test' + ... +# Subtest: proof receives actual peer, cap traffic never invokes helper and transient cap disconnects +ok 367 - proof receives actual peer, cap traffic never invokes helper and transient cap disconnects + --- + duration_ms: 5.885481 + type: 'test' + ... +# Subtest: proof helper error and disconnect during verification never dispatch or bind +ok 368 - proof helper error and disconnect during verification never dispatch or bind + --- + duration_ms: 1.356988 + type: 'test' + ... +# Subtest: Client receives explicit proof refusal codes without dispatch, not outcome-unknown +ok 369 - Client receives explicit proof refusal codes without dispatch, not outcome-unknown + --- + duration_ms: 37.950298 + type: 'test' + ... +# Subtest: asynchronous proof calls release their transient session on success, failure and timeout +ok 370 - asynchronous proof calls release their transient session on success, failure and timeout + --- + duration_ms: 27.116499 + type: 'test' + ... +# Subtest: T2 eight proof callers and a racing copier bind the exact accepted socket, which survives helper exit +ok 371 - T2 eight proof callers and a racing copier bind the exact accepted socket, which survives helper exit + --- + duration_ms: 236.750708 + type: 'test' + ... +# Subtest: helper output and failures fail closed including unsafe gid +ok 372 - helper output and failures fail closed including unsafe gid + --- + duration_ms: 1.824418 + type: 'test' + ... +# Subtest: helper timeout, capacity and shutdown refuse without leaving children +ok 373 - helper timeout, capacity and shutdown refuse without leaving children + --- + duration_ms: 25.956 + type: 'test' + ... +# Subtest: missing or non-regular peer helper refuses at construction before opening the bus +ok 374 - missing or non-regular peer helper refuses at construction before opening the bus + --- + duration_ms: 0.273359 + type: 'test' + ... +# Subtest: shutdown waits for killed helper close before returning +ok 375 - shutdown waits for killed helper close before returning + --- + duration_ms: 4.663446 + type: 'test' + ... +# Subtest: plugins and plugins.set refuse every non-human session and a forged actor, and pass only the patch with the verified actor +ok 376 - plugins and plugins.set refuse every non-human session and a forged actor, and pass only the patch with the verified actor + --- + duration_ms: 17.234176 + type: 'test' + ... +# Subtest: runtime: the switch changes the organization file, the receipt carries the actor, and a bad shape, an unknown module and a stale revision are refused with nothing written +ok 377 - runtime: the switch changes the organization file, the receipt carries the actor, and a bad shape, an unknown module and a stale revision are refused with nothing written + --- + duration_ms: 90.058283 + type: 'test' + ... +# Subtest: vikunja:19/309 through the broker, a patch switches the kinds it names and keeps the rest; null removes one kind and is trailed +ok 378 - vikunja:19/309 through the broker, a patch switches the kinds it names and keeps the rest; null removes one kind and is trailed + --- + duration_ms: 46.177725 + type: 'test' + ... +# Subtest: principal binds kernel peer PID and uid, maps owner, and never takes identity or role from body +ok 379 - principal binds kernel peer PID and uid, maps owner, and never takes identity or role from body + --- + duration_ms: 1.891459 + type: 'test' + ... +# Subtest: user requires its own nonce and full walk plus immediate same-tree Console parent +ok 380 - user requires its own nonce and full walk plus immediate same-tree Console parent + --- + duration_ms: 0.52738 + type: 'test' + ... +# Subtest: tester deliberately admits agent parents but rejects managed runs and another nonce +ok 381 - tester deliberately admits agent parents but rejects managed runs and another nonce + --- + duration_ms: 0.35567 + type: 'test' + ... +# Subtest: human leaf identity is reread after walking the parents +ok 382 - human leaf identity is reread after walking the parents + --- + duration_ms: 0.185173 + type: 'test' + ... +# Subtest: broker process binds trusted launches, offers reader capabilities, refuses human mutation, closes cleanly +ok 383 - broker process binds trusted launches, offers reader capabilities, refuses human mutation, closes cleanly + --- + duration_ms: 141.500781 + type: 'test' + ... +# Subtest: startup token refusal returns safe code without value or partial listening broker +ok 384 - startup token refusal returns safe code without value or partial listening broker + --- + duration_ms: 86.260144 + type: 'test' + ... +# Subtest: loaded fixture token is absent from socket replies and SQLite, including refusal evidence +ok 385 - loaded fixture token is absent from socket replies and SQLite, including refusal evidence + --- + duration_ms: 116.849634 + type: 'test' + ... +# Subtest: killed broker leaves an explicit stale lock; another process cannot silently reclaim it +ok 386 - killed broker leaves an explicit stale lock; another process cannot silently reclaim it + --- + duration_ms: 188.929349 + type: 'test' + ... +# Subtest: trusted host registers later launches; socket clients never have a registration verb +ok 387 - trusted host registers later launches; socket clients never have a registration verb + --- + duration_ms: 119.451071 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 the broker process answers the launcher's mayLaunch op with the limits' awaited decision +ok 388 - REQ-LIMIT-4 the broker process answers the launcher's mayLaunch op with the limits' awaited decision + --- + duration_ms: 116.851632 + type: 'test' + ... +# Subtest: runtime excludes declared project roots even when host supplies no repoRoots +ok 389 - runtime excludes declared project roots even when host supplies no repoRoots + --- + duration_ms: 88.104019 + type: 'test' + ... +# Subtest: a refused launch binding leaves the broker and existing capabilities alive; bad protocol stops it +ok 390 - a refused launch binding leaves the broker and existing capabilities alive; bad protocol stops it + --- + duration_ms: 115.137057 + type: 'test' + ... +# Subtest: D1: committed write with a failed receipt refuses outcome-unknown without action.allowed +ok 391 - D1: committed write with a failed receipt refuses outcome-unknown without action.allowed + --- + duration_ms: 28.799428 + type: 'test' + ... +# Subtest: D2: spec.read refuses without content if its role is released during the read +ok 392 - D2: spec.read refuses without content if its role is released during the read + --- + duration_ms: 10.994768 + type: 'test' + ... +# Subtest: D3: spec.read secret check refuses flagged content without content +ok 393 - D3: spec.read secret check refuses flagged content without content + --- + duration_ms: 9.6999 + type: 'test' + ... +# Subtest: D3: spec.read secret check refuses flagged subject without content +ok 394 - D3: spec.read secret check refuses flagged subject without content + --- + duration_ms: 9.495748 + type: 'test' + ... +# Subtest: a human lists, opens and saves; the save is one commit by the business human +ok 395 - a human lists, opens and saves; the save is one commit by the business human + --- + duration_ms: 96.124593 + type: 'test' + ... +# Subtest: an agent and a reader refuse every file verb and nothing is written +ok 396 - an agent and a reader refuse every file verb and nothing is written + --- + duration_ms: 36.747904 + type: 'test' + ... +# Subtest: a stale base refuses stale-base and writes nothing +ok 397 - a stale base refuses stale-base and writes nothing + --- + duration_ms: 65.00974 + type: 'test' + ... +# Subtest: paths outside the spec and docs refuse, as do unknown projects, missing files and odd arguments +ok 398 - paths outside the spec and docs refuse, as do unknown projects, missing files and odd arguments + --- + duration_ms: 53.41299 + type: 'test' + ... +# Subtest: without a project adapter the file verbs refuse project-not-configured +ok 399 - without a project adapter the file verbs refuse project-not-configured + --- + duration_ms: 25.396059 + type: 'test' + ... +# Subtest: on the socket a save may carry 1 MiB of text; every other request keeps the 64 KiB limit +ok 400 - on the socket a save may carry 1 MiB of text; every other request keeps the 64 KiB limit + --- + duration_ms: 235.15029 + type: 'test' + ... +# Subtest: a request that names the save verb first and another verb last is refused at 64 KiB +ok 401 - a request that names the save verb first and another verb last is refused at 64 KiB + --- + duration_ms: 56.929224 + type: 'test' + ... +# Subtest: two saves racing for one repository make one commit +ok 402 - two saves racing for one repository make one commit + --- + duration_ms: 144.039832 + type: 'test' + ... +# Subtest: Broker keeps the sandbox client import closure: only the listed imports, no lazy project import +ok 403 - Broker keeps the sandbox client import closure: only the listed imports, no lazy project import + --- + duration_ms: 1.643067 + type: 'test' + ... +# Subtest: without a trusted project adapter all three async paths refuse project-not-configured +ok 404 - without a trusted project adapter all three async paths refuse project-not-configured + --- + duration_ms: 34.130452 + type: 'test' + ... +# Subtest: real startBroker injects the project adapter for socket reads and bound-author record writes +ok 405 - real startBroker injects the project adapter for socket reads and bound-author record writes + --- + duration_ms: 82.893428 + type: 'test' + ... +# Subtest: a raise with no recorded push refuses no-push; a raise binds the latest push and shows it +ok 406 - a raise with no recorded push refuses no-push; a raise binds the latest push and shows it + --- + duration_ms: 22.500699 + type: 'test' + ... +# Subtest: happy path: the fork is the upstream repo under the agent's own user, the destination is host-built +ok 407 - happy path: the fork is the upstream repo under the agent's own user, the destination is host-built + --- + duration_ms: 19.793743 + type: 'test' + ... +# Subtest: a hard wait: no decision refuses, and a decision for another task refuses +ok 408 - a hard wait: no decision refuses, and a decision for another task refuses + --- + duration_ms: 19.087596 + type: 'test' + ... +# Subtest: r4 B4: approve while the latest push is A, push B, publish refuses decision-mismatch +ok 409 - r4 B4: approve while the latest push is A, push B, publish refuses decision-mismatch + --- + duration_ms: 34.892709 + type: 'test' + ... +# Subtest: grant and fork refusals +ok 410 - grant and fork refusals + --- + duration_ms: 33.444496 + type: 'test' + ... +# Subtest: remote-not-fork, compared without case, and remote-host-mismatch, at push +ok 411 - remote-not-fork, compared without case, and remote-host-mismatch, at push + --- + duration_ms: 74.802716 + type: 'test' + ... +# Subtest: two agents granted one project each get their own fork +ok 412 - two agents granted one project each get their own fork + --- + duration_ms: 35.734778 + type: 'test' + ... +# Subtest: the request cannot name the fork, the user or the destination +ok 413 - the request cannot name the fork, the user or the destination + --- + duration_ms: 16.202433 + type: 'test' + ... +# Subtest: one decision, one open publish: a second ticket refuses publish-busy, whatever its branch +ok 414 - one decision, one open publish: a second ticket refuses publish-busy, whatever its branch + --- + duration_ms: 41.264125 + type: 'test' + ... +# Subtest: publishRefused files the code on the task's trail and drops the ticket +ok 415 - publishRefused files the code on the task's trail and drops the ticket + --- + duration_ms: 16.961278 + type: 'test' + ... +# Subtest: git.push.remote is in neither ROUTED list and no shipped role grants it +ok 416 - git.push.remote is in neither ROUTED list and no shipped role grants it + --- + duration_ms: 0.640808 + type: 'test' + ... +# Subtest: runtime: withGitea keys from the open ticket only, and the store root is the organization dir +ok 417 - runtime: withGitea keys from the open ticket only, and the store root is the organization dir + --- + duration_ms: 81.96026 + type: 'test' + ... +# Subtest: the bus process answers the publish ops from their own lines, not launch-op-refused +ok 418 - the bus process answers the publish ops from their own lines, not launch-op-refused + --- + duration_ms: 133.721177 + type: 'test' + ... +# Subtest: a reply is listed for human and reader sessions, and its delivery rows are unchanged +ok 419 - a reply is listed for human and reader sessions, and its delivery rows are unchanged + --- + duration_ms: 32.095154 + type: 'test' + ... +# Subtest: the reply still reaches the human message.receive (mosaic talk) after the Console showed it +ok 420 - the reply still reaches the human message.receive (mosaic talk) after the Console showed it + --- + duration_ms: 17.445623 + type: 'test' + ... +# Subtest: a message with no reply gives an empty list +ok 421 - a message with no reply gives an empty list + --- + duration_ms: 13.335448 + type: 'test' + ... +# Subtest: replies come oldest first and stop at REPLIES +ok 422 - replies come oldest first and stop at REPLIES + --- + duration_ms: 61.953079 + type: 'test' + ... +# Subtest: an id that names no message in the business refuses message-not-found, and the refusal is recorded +ok 423 - an id that names no message in the business refuses message-not-found, and the refusal is recorded + --- + duration_ms: 23.115791 + type: 'test' + ... +# Subtest: strict arguments; a role session gets human-required +ok 424 - strict arguments; a role session gets human-required + --- + duration_ms: 27.189537 + type: 'test' + ... +# Subtest: views passes replies through as one call with the id +ok 425 - views passes replies through as one call with the id + --- + duration_ms: 0.217759 + type: 'test' + ... +# Subtest: requirements returns the committed list to a holding role session, and no one else +ok 426 - requirements returns the committed list to a holding role session, and no one else + --- + duration_ms: 20.017518 + type: 'test' + ... +# Subtest: the PM's prd.approve with no task, when no id fits, reaches the human's Inbox +ok 427 - the PM's prd.approve with no task, when no id fits, reaches the human's Inbox + --- + duration_ms: 11.846902 + type: 'test' + ... +# Subtest: the PM's non-blocking role.revoke with no task reaches the human's Inbox +ok 428 - the PM's non-blocking role.revoke with no task reaches the human's Inbox + --- + duration_ms: 11.958517 + type: 'test' + ... +# Subtest: a push is recorded as the action.allowed for git.push.working on the task, and only the host records one +ok 429 - a push is recorded as the action.allowed for git.push.working on the task, and only the host records one + --- + duration_ms: 25.784458 + type: 'test' + ... +# Subtest: review.request names the latest pushed commit and sends the reviewer a REVIEW-REQUEST +ok 430 - review.request names the latest pushed commit and sends the reviewer a REVIEW-REQUEST + --- + duration_ms: 21.094045 + type: 'test' + ... +# Subtest: review.request says which run holds the reviewer role, or null, and a null request waits for a claim +ok 431 - review.request says which run holds the reviewer role, or null, and a null request waits for a claim + --- + duration_ms: 24.221873 + type: 'test' + ... +# Subtest: review.request refuses a commit that isn't the latest push, a non-reviewer and a role without the action +ok 432 - review.request refuses a commit that isn't the latest push, a non-reviewer and a role without the action + --- + duration_ms: 30.272782 + type: 'test' + ... +# Subtest: reviewFetch answers only the addressed reviewer, for the request it cites +ok 433 - reviewFetch answers only the addressed reviewer, for the request it cites + --- + duration_ms: 17.867517 + type: 'test' + ... +# Subtest: review.verdict answers one request once, to the role that asked +ok 434 - review.verdict answers one request once, to the role that asked + --- + duration_ms: 24.534572 + type: 'test' + ... +# Subtest: task.close on a pushed task needs an approve verdict for the latest push +ok 435 - task.close on a pushed task needs an approve verdict for the latest push + --- + duration_ms: 35.161575 + type: 'test' + ... +# Subtest: a refusal the host decided is filed on the task it names, and only a task ref counts +ok 436 - a refusal the host decided is filed on the task it names, and only a task ref counts + --- + duration_ms: 19.228698 + type: 'test' + ... +# Subtest: row 65: routes and routes.set refuse every non-human session, the chief of staff included, the tester may read and set, and each passes the verified actor +ok 437 - row 65: routes and routes.set refuse every non-human session, the chief of staff included, the tester may read and set, and each passes the verified actor + --- + duration_ms: 29.461137 + type: 'test' + ... +# Subtest: row 65: a new launch binds only on a switched-on harness with a module name, and a run an earlier broker bound binds again after its harness is switched off +ok 438 - row 65: a new launch binds only on a switched-on harness with a module name, and a run an earlier broker bound binds again after its harness is switched off + --- + duration_ms: 19.145557 + type: 'test' + ... +# Subtest: row 65 runtime: harnessLevels answers each module in the tree, and null for a name with no module +ok 439 - row 65 runtime: harnessLevels answers each module in the tree, and null for a name with no module + --- + duration_ms: 31.576772 + type: 'test' + ... +# Subtest: row 65 runtime: routes and routes.set reach the organization file with the human as actor, a new bind reads plugins.harness, and each refusal keeps the bytes and logs nothing +ok 440 - row 65 runtime: routes and routes.set reach the organization file with the human as actor, a new bind reads plugins.harness, and each refusal keeps the bytes and logs nothing + --- + duration_ms: 77.669785 + type: 'test' + ... +# Subtest: v3b prototype refusals, views and append-only mutations +ok 441 - v3b prototype refusals, views and append-only mutations + --- + duration_ms: 78.271956 + type: 'test' + ... +# Subtest: gated approval authorizes once, survives store reopen, and fresh approval works +ok 442 - gated approval authorizes once, survives store reopen, and fresh approval works + --- + duration_ms: 26.361971 + type: 'test' + ... +# Subtest: another run of the same instance consumes an approval once; a failed check leaves it usable +ok 443 - another run of the same instance consumes an approval once; a failed check leaves it usable + --- + duration_ms: 18.912669 + type: 'test' + ... +# Subtest: two scheduled callers have exactly one grant and one consumed refusal +ok 444 - two scheduled callers have exactly one grant and one consumed refusal + --- + duration_ms: 14.835025 + type: 'test' + ... +# Subtest: failed commit rolls consumption back; cross-role consumes and within-role stays reusable +ok 445 - failed commit rolls consumption back; cross-role consumes and within-role stays reusable + --- + duration_ms: 25.530139 + type: 'test' + ... +# Subtest: class drift gated to cross-role refuses before consumption +ok 446 - class drift gated to cross-role refuses before consumption + --- + duration_ms: 16.768656 + type: 'test' + ... +# Subtest: class drift cross-role to gated refuses before consumption +ok 447 - class drift cross-role to gated refuses before consumption + --- + duration_ms: 18.12318 + type: 'test' + ... +# Subtest: class drift gated to within-role refuses before consumption +ok 448 - class drift gated to within-role refuses before consumption + --- + duration_ms: 15.451939 + type: 'test' + ... +# Subtest: class drift cross-role to within-role refuses before consumption +ok 449 - class drift cross-role to within-role refuses before consumption + --- + duration_ms: 16.869648 + type: 'test' + ... +# Subtest: class drift within-role to gated refuses before consumption +ok 450 - class drift within-role to gated refuses before consumption + --- + duration_ms: 14.562719 + type: 'test' + ... +# Subtest: class drift within-role to cross-role refuses before consumption +ok 451 - class drift within-role to cross-role refuses before consumption + --- + duration_ms: 16.6365 + type: 'test' + ... +# Subtest: message.send consumes approval and prevents a later send or authorize +ok 452 - message.send consumes approval and prevents a later send or authorize + --- + duration_ms: 17.864625 + type: 'test' + ... +# Subtest: role.revoke consumes approval and prevents a later revoke or authorize +ok 453 - role.revoke consumes approval and prevents a later revoke or authorize + --- + duration_ms: 19.480679 + type: 'test' + ... +# Subtest: 3e copy migrates through 3f to 3g preserving every old column/row and adding null spec citations +ok 454 - 3e copy migrates through 3f to 3g preserving every old column/row and adding null spec citations + --- + duration_ms: 84.715048 + type: 'test' + ... +# Subtest: a human spec save sends one notice to each pm and cto, naming the commit, and each commit sends its own +ok 455 - a human spec save sends one notice to each pm and cto, naming the commit, and each commit sends its own + --- + duration_ms: 113.111977 + type: 'test' + ... +# Subtest: no notice for a docs save, an agent record commit, a git commit outside the Console, or a refused save +ok 456 - no notice for a docs save, an agent record commit, a git commit outside the Console, or a refused save + --- + duration_ms: 127.865697 + type: 'test' + ... +# Subtest: a notice to a role no run holds waits for a claim, and launches nobody and tells nobody +ok 457 - a notice to a role no run holds waits for a claim, and launches nobody and tells nobody + --- + duration_ms: 61.554519 + type: 'test' + ... +# Subtest: a business without a pm or a cto saves the spec and sends nothing +ok 458 - a business without a pm or a cto saves the spec and sends nothing + --- + duration_ms: 55.664381 + type: 'test' + ... +# Subtest: a notice that cannot be stored answers outcome-unknown, and the commit stands +ok 459 - a notice that cannot be stored answers outcome-unknown, and the commit stands + --- + duration_ms: 63.739453 + type: 'test' + ... +# Subtest: a BLOCK reaches the chief of staff, the chief relays it to the assistant in the user's thread, and the commit stands +ok 460 - a BLOCK reaches the chief of staff, the chief relays it to the assistant in the user's thread, and the commit stands + --- + duration_ms: 70.350382 + type: 'test' + ... +# Subtest: with no thread a BLOCK still reaches the chief of staff, and the relay to the assistant is refused +ok 461 - with no thread a BLOCK still reaches the chief of staff, and the relay to the assistant is refused + --- + duration_ms: 62.80679 + type: 'test' + ... +# Subtest: within the notice's project the relay lands in the user's most recently opened thread +ok 462 - within the notice's project the relay lands in the user's most recently opened thread + --- + duration_ms: 70.790666 + type: 'test' + ... +# Subtest: a more recently opened thread in another project does not take the relay +ok 463 - a more recently opened thread in another project does not take the relay + --- + duration_ms: 66.680575 + type: 'test' + ... +# Subtest: a BLOCK is refused from anyone but a pm or cto, to anyone but the chief of staff, and outside a reply to its own notice +ok 464 - a BLOCK is refused from anyone but a pm or cto, to anyone but the chief of staff, and outside a reply to its own notice + --- + duration_ms: 72.826344 + type: 'test' + ... +# Subtest: a role cannot forge a spec notice: its text opens neither a BLOCK nor the assistant's thread +ok 465 - a role cannot forge a spec notice: its text opens neither a BLOCK nor the assistant's thread + --- + duration_ms: 65.979729 + type: 'test' + ... +# Subtest: the bus receives nothing: a reply to a notice addressed to _bus is refused +ok 466 - the bus receives nothing: a reply to a notice addressed to _bus is refused + --- + duration_ms: 64.222859 + type: 'test' + ... +# Subtest: real socket awaits spec reads, record writes and cited raises; other requests still return normally +ok 467 - real socket awaits spec reads, record writes and cited raises; other requests still return normally + --- + duration_ms: 104.801868 + type: 'test' + ... +# Subtest: real socket preserves asynchronous refusal codes and disconnects its transient proof +ok 468 - real socket preserves asynchronous refusal codes and disconnects its transient proof + --- + duration_ms: 61.763916 + type: 'test' + ... +# Subtest: two real socket writes to one repository yield one commit and one project-busy refusal +ok 469 - two real socket writes to one repository yield one commit and one project-busy refusal + --- + duration_ms: 59.314477 + type: 'test' + ... +# Subtest: client disconnect during await tolerates late reply +ok 470 - client disconnect during await tolerates late reply + --- + duration_ms: 55.150341 + type: 'test' + ... +# Subtest: client disconnect during await tolerates late refusal +ok 471 - client disconnect during await tolerates late refusal + --- + duration_ms: 41.157777 + type: 'test' + ... +# Subtest: N-a: slow admitted record.write returns its committed result after the idle deadline +ok 472 - N-a: slow admitted record.write returns its committed result after the idle deadline + --- + duration_ms: 206.82219 + type: 'test' + ... +# Subtest: current citation is recorded; docs commits do not stale it and a new spec never reopens settlement +ok 473 - current citation is recorded; docs commits do not stale it and a new spec never reopens settlement + --- + duration_ms: 92.620596 + type: 'test' + ... +# Subtest: stale, unconfirmed, missing and partial spec citations refuse without inserting a decision +ok 474 - stale, unconfirmed, missing and partial spec citations refuse without inserting a decision + --- + duration_ms: 92.232166 + type: 'test' + ... +# Subtest: uncited raises retain their synchronous path and spec read is available to any held role in its business +ok 475 - uncited raises retain their synchronous path and spec read is available to any held role in its business + --- + duration_ms: 49.305585 + type: 'test' + ... +# Subtest: record writes bind the session author, require authority and refuse spec and impersonation paths +ok 476 - record writes bind the session author, require authority and refuse spec and impersonation paths + --- + duration_ms: 57.61892 + type: 'test' + ... +# Subtest: REQ-COS-1: the pm asks the chief of staff for roles and counts; the chief receives a STAFF-REQUEST and answers it +ok 477 - REQ-COS-1: the pm asks the chief of staff for roles and counts; the chief receives a STAFF-REQUEST and answers it + --- + duration_ms: 28.543347 + type: 'test' + ... +# Subtest: REQ-COS-1: only the pm can send a staff request; every other session is refused and the chief of staff hears nothing +ok 478 - REQ-COS-1: only the pm can send a staff request; every other session is refused and the chief of staff hears nothing + --- + duration_ms: 25.907295 + type: 'test' + ... +# Subtest: REQ-COS-1: a pm without message.send is refused like any other gated action +ok 479 - REQ-COS-1: a pm without message.send is refused like any other gated action + --- + duration_ms: 13.9556 + type: 'test' + ... +# Subtest: REQ-COS-1: the request goes to the business launcher, and only when that is a chief of staff +ok 480 - REQ-COS-1: the request goes to the business launcher, and only when that is a chief of staff + --- + duration_ms: 33.618735 + type: 'test' + ... +# Subtest: REQ-COS-1: the sender is judged by definition: an instance `lead` of the pm definition can ask, an instance `pm` of the coder definition can't +ok 481 - REQ-COS-1: the sender is judged by definition: an instance `lead` of the pm definition can ask, an instance `pm` of the coder definition can't + --- + duration_ms: 28.721875 + type: 'test' + ... +# Subtest: REQ-COS-1: the launcher is judged by definition: an instance `boss` of the chief-of-staff definition receives, a `chief` of the coder definition gives no-chief-of-staff +ok 482 - REQ-COS-1: the launcher is judged by definition: an instance `boss` of the chief-of-staff definition receives, a `chief` of the coder definition gives no-chief-of-staff + --- + duration_ms: 29.808032 + type: 'test' + ... +# Subtest: REQ-COS-1: a refused staff request leaves no staff.request action.allowed event +ok 483 - REQ-COS-1: a refused staff request leaves no staff.request action.allowed event + --- + duration_ms: 16.867476 + type: 'test' + ... +# Subtest: REQ-ASSIST-2: the role definitions' messaging lists hold for a staff request, sender and recipient +ok 484 - REQ-ASSIST-2: the role definitions' messaging lists hold for a staff request, sender and recipient + --- + duration_ms: 47.914485 + type: 'test' + ... +# Subtest: a staff request names a task, 1 to 10 distinct roles and counts of 1 to 20; nothing else is accepted +ok 485 - a staff request names a task, 1 to 10 distinct roles and counts of 1 to 20; nothing else is accepted + --- + duration_ms: 30.646271 + type: 'test' + ... +# Subtest: REQ-COS-1: a staff request grants nothing: the pm still can't launch and the chief of staff launches as before +ok 486 - REQ-COS-1: a staff request grants nothing: the pm still can't launch and the chief of staff launches as before + --- + duration_ms: 16.154142 + type: 'test' + ... +# Subtest: a business that never switched launches reads allowed with no time and no event +ok 487 - a business that never switched launches reads allowed with no time and no event + --- + duration_ms: 15.436227 + type: 'test' + ... +# Subtest: launches revoked and then restored read allowed, with the restore time and event id +ok 488 - launches revoked and then restored read allowed, with the restore time and event id + --- + duration_ms: 13.788744 + type: 'test' + ... +# Subtest: a task closed on the tracker leaves the open list, and total counts the open ones +ok 489 - a task closed on the tracker leaves the open list, and total counts the open ones + --- + duration_ms: 13.367677 + type: 'test' + ... +# Subtest: a tombstone is not open +ok 490 - a tombstone is not open + --- + duration_ms: 11.208413 + type: 'test' + ... +# Subtest: the open list stops at the cap and says so; total still counts every open task +ok 491 - the open list stops at the cap and says so; total still counts every open task + --- + duration_ms: 14.897263 + type: 'test' + ... +# Subtest: a role and a reader session read state; arguments, and an unbound cap, refuse +ok 492 - a role and a reader session read state; arguments, and an unbound cap, refuse + --- + duration_ms: 12.257612 + type: 'test' + ... +# Subtest: a human session reads the same state, with the same cap +ok 493 - a human session reads the same state, with the same cap + --- + duration_ms: 14.046425 + type: 'test' + ... +# Subtest: reading state writes nothing: every table keeps its row count +ok 494 - reading state writes nothing: every table keeps its row count + --- + duration_ms: 13.143167 + type: 'test' + ... +# Subtest: creates private WAL store and excludes a second writer until explicit close +ok 495 - creates private WAL store and excludes a second writer until explicit close + --- + duration_ms: 10.734334 + type: 'test' + ... +# Subtest: rollback is atomic and schema metadata is checked against trusted DDL, not just itself +ok 496 - rollback is atomic and schema metadata is checked against trusted DDL, not just itself + --- + duration_ms: 11.221425 + type: 'test' + ... +# Subtest: existing empty database and symlink runtime directory refuse, never initialize over damage +ok 497 - existing empty database and symlink runtime directory refuse, never initialize over damage + --- + duration_ms: 11.521222 + type: 'test' + ... +# Subtest: crash during a transaction recovers no partial event after explicit fixture-only lock removal +ok 498 - crash during a transaction recovers no partial event after explicit fixture-only lock removal + --- + duration_ms: 53.066824 + type: 'test' + ... +# Subtest: writer refuses mixed at/read_at forms atomically, even through trusted SQL helpers +ok 499 - writer refuses mixed at/read_at forms atomically, even through trusted SQL helpers + --- + duration_ms: 8.692667 + type: 'test' + ... +# Subtest: async transactions refuse before invoking their function +ok 500 - async transactions refuse before invoking their function + --- + duration_ms: 7.550316 + type: 'test' + ... +# Subtest: usage_records refuses non-canonical timestamps atomically +ok 501 - usage_records refuses non-canonical timestamps atomically + --- + duration_ms: 7.806758 + type: 'test' + ... +# Subtest: the session default fits under the reply cap and pages to the end with next +ok 502 - the session default fits under the reply cap and pages to the end with next + --- + duration_ms: 126.331917 + type: 'test' + ... +# Subtest: the short form: no description, assignees by role, every listed key +ok 503 - the short form: no description, assignees by role, every listed key + --- + duration_ms: 76.980847 + type: 'test' + ... +# Subtest: each filter, alone and together, and total counts every match +ok 504 - each filter, alone and together, and total counts every match + --- + duration_ms: 163.258961 + type: 'test' + ... +# Subtest: task_ref reads one task in full, as the whole board has it +ok 505 - task_ref reads one task in full, as the whole board has it + --- + duration_ms: 97.963393 + type: 'test' + ... +# Subtest: no arguments is the read the Console and mosaic make, unchanged +ok 506 - no arguments is the read the Console and mosaic make, unchanged + --- + duration_ms: 101.140271 + type: 'test' + ... +# Subtest: an unknown argument or a bad value refuses invalid-request +ok 507 - an unknown argument or a bad value refuses invalid-request + --- + duration_ms: 344.348111 + type: 'test' + ... +# Subtest: tasks rows carry priority and requirement for every session that reads tasks +ok 508 - tasks rows carry priority and requirement for every session that reads tasks + --- + duration_ms: 34.463304 + type: 'test' + ... +# Subtest: the read model rebuilds from the ledger: a reopened bus and each trail give the same values +ok 509 - the read model rebuilds from the ledger: a reopened bus and each trail give the same values + --- + duration_ms: 35.658232 + type: 'test' + ... +# Subtest: an empty business and one with snapshots but no task.created read cleanly +ok 510 - an empty business and one with snapshots but no task.created read cleanly + --- + duration_ms: 9.025041 + type: 'test' + ... +# Subtest: recordTask keeps sync reads and a role write apart +ok 511 - recordTask keeps sync reads and a role write apart + --- + duration_ms: 19.082733 + type: 'test' + ... +# Subtest: read_at must be one canonical UTC format, so the projection compares strings safely +ok 512 - read_at must be one canonical UTC format, so the projection compares strings safely + --- + duration_ms: 8.241439 + type: 'test' + ... +# Subtest: a bad entry refuses the whole record +ok 513 - a bad entry refuses the whole record + --- + duration_ms: 8.588007 + type: 'test' + ... +# Subtest: taskView reads the projection for one business +ok 514 - taskView reads the projection for one business + --- + duration_ms: 10.486488 + type: 'test' + ... +# Subtest: requestTask hands only a holder and a task verb to the handler, and records refusals +ok 515 - requestTask hands only a holder and a task verb to the handler, and records refusals + --- + duration_ms: 18.902667 + type: 'test' + ... +# Subtest: the server sends task verbs to the adapter with its own timeout; other verbs stay synchronous +ok 516 - the server sends task verbs to the adapter with its own timeout; other verbs stay synchronous + --- + duration_ms: 294.005256 + type: 'test' + ... +# Subtest: without an adapter the server refuses every task verb +ok 517 - without an adapter the server refuses every task verb + --- + duration_ms: 44.544639 + type: 'test' + ... +# Subtest: the runtime refuses an invalid adapter and closes a valid one +ok 518 - the runtime refuses an invalid adapter and closes a valid one + --- + duration_ms: 50.37548 + type: 'test' + ... +# Subtest: the process loads the S3 adapter from plain-data trackers +ok 519 - the process loads the S3 adapter from plain-data trackers + --- + duration_ms: 220.207194 + type: 'test' + ... +# Subtest: row 177 T1: a tester thread is owned by tester, and neither side reaches or lists the other +ok 520 - row 177 T1: a tester thread is owned by tester, and neither side reaches or lists the other + --- + duration_ms: 23.490161 + type: 'test' + ... +# Subtest: row 177 T2: the tester thread.send is from tester-cli with no human.input; its open is by tester +ok 521 - row 177 T2: the tester thread.send is from tester-cli with no human.input; its open is by tester + --- + duration_ms: 13.688857 + type: 'test' + ... +# Subtest: row 177 T3: the lists read the tester as the human in its own thread, and nowhere else +ok 522 - row 177 T3: the lists read the tester as the human in its own thread, and nowhere else + --- + duration_ms: 11.718957 + type: 'test' + ... +# Subtest: row 177 T3: an assistant that would not hear the human refuses the tester too +ok 523 - row 177 T3: an assistant that would not hear the human refuses the tester too + --- + duration_ms: 11.018562 + type: 'test' + ... +# Subtest: row 177 T4: the tester thread run answers the tester, never the human +ok 524 - row 177 T4: the tester thread run answers the tester, never the human + --- + duration_ms: 22.744764 + type: 'test' + ... +# Subtest: row 177 T5: each stop revokes only its own threads, recorded by its own actor +ok 525 - row 177 T5: each stop revokes only its own threads, recorded by its own actor + --- + duration_ms: 16.317791 + type: 'test' + ... +# Subtest: row 177 T5: the human stop never ends a tester run +ok 526 - row 177 T5: the human stop never ends a tester run + --- + duration_ms: 12.465811 + type: 'test' + ... +# Subtest: row 177 T6: a business whose human is tester refuses invalid-business +ok 527 - row 177 T6: a business whose human is tester refuses invalid-business + --- + duration_ms: 8.20455 + type: 'test' + ... +# Subtest: row 177 T7: the human trail shows a tester thread message as the tester +ok 528 - row 177 T7: the human trail shows a tester thread message as the tester + --- + duration_ms: 17.411796 + type: 'test' + ... +# Subtest: row 177 T8: a tester-thread run never raises a decision to the human; a human-thread run still does +ok 529 - row 177 T8: a tester-thread run never raises a decision to the human; a human-thread run still does + --- + duration_ms: 16.632257 + type: 'test' + ... +# Subtest: row 177 T8: a tester-thread raise routed to the arbiter stays allowed +ok 530 - row 177 T8: a tester-thread raise routed to the arbiter stays allowed + --- + duration_ms: 12.246284 + type: 'test' + ... +# Subtest: row 182 T9: a tester reply into the human's thread refuses thread-not-owned and stores nothing +ok 531 - row 182 T9: a tester reply into the human's thread refuses thread-not-owned and stores nothing + --- + duration_ms: 16.90507 + type: 'test' + ... +# Subtest: row 182 T9: a tester reply into its own thread lands there +ok 532 - row 182 T9: a tester reply into its own thread lands there + --- + duration_ms: 18.051677 + type: 'test' + ... +# Subtest: row 182 T9: the chief's reply up a chain into a tester's thread lands there +ok 533 - row 182 T9: the chief's reply up a chain into a tester's thread lands there + --- + duration_ms: 20.345218 + type: 'test' + ... +# Subtest: row 182 T9: a tester reply to a spec notice refuses thread-not-owned; the chief's relay still lands +ok 534 - row 182 T9: a tester reply to a spec notice refuses thread-not-owned; the chief's relay still lands + --- + duration_ms: 19.072374 + type: 'test' + ... +# Subtest: row 175: TESTER_VERBS and the organization branch tester set are pinned +ok 535 - row 175: TESTER_VERBS and the organization branch tester set are pinned + --- + duration_ms: 1.059403 + type: 'test' + ... +# Subtest: row 175: each of the six reads as the tester deep-equals the human read +ok 536 - row 175: each of the six reads as the tester deep-equals the human read + --- + duration_ms: 61.233084 + type: 'test' + ... +# Subtest: row 175: W1-W3 as the tester land with receipt actor tester; the human still logs the human +ok 537 - row 175: W1-W3 as the tester land with receipt actor tester; the human still logs the human + --- + duration_ms: 67.273002 + type: 'test' + ... +# Subtest: row 175: W2 as the tester refuses credentials, protected definitions, human, tester and bus.tester, and changes nothing +ok 538 - row 175: W2 as the tester refuses credentials, protected definitions, human, tester and bus.tester, and changes nothing + --- + duration_ms: 61.30396 + type: 'test' + ... +# Subtest: row 175: the human-only actions refuse a tester tester-refused, and the file and store stay as they were +ok 539 - row 175: the human-only actions refuse a tester tester-refused, and the file and store stay as they were + --- + duration_ms: 61.690036 + type: 'test' + ... +# Subtest: row 175: W4 as the tester writes by tester and keeps every name check +ok 540 - row 175: W4 as the tester writes by tester and keeps every name check + --- + duration_ms: 15.165792 + type: 'test' + ... +# Subtest: row 175: W6 as the tester records created_by tester; the human records the human +ok 541 - row 175: W6 as the tester records created_by tester; the human records the human + --- + duration_ms: 11.243435 + type: 'test' + ... +# Subtest: row 175: with bus.tester unset or not exactly true no tester binds, so no read or write runs +ok 542 - row 175: with bus.tester unset or not exactly true no tester binds, so no read or write runs + --- + duration_ms: 43.934876 + type: 'test' + ... +# Subtest: the tester binds only when the business sets bus.tester to exactly true +ok 543 - the tester binds only when the business sets bus.tester to exactly true + --- + duration_ms: 71.265853 + type: 'test' + ... +# Subtest: a business may not name a role tester, so the tester address is never a role +ok 544 - a business may not name a role tester, so the tester address is never a role + --- + duration_ms: 19.847218 + type: 'test' + ... +# Subtest: every verb outside the tester list refuses tester-refused and is recorded against the tester +ok 545 - every verb outside the tester list refuses tester-refused and is recorded against the tester + --- + duration_ms: 38.917775 + type: 'test' + ... +# Subtest: a tester message is from tester, needs no prefix, and writes no human.input or authority +ok 546 - a tester message is from tester, needs no prefix, and writes no human.input or authority + --- + duration_ms: 20.179743 + type: 'test' + ... +# Subtest: a tester message to a role no run holds refuses tester-target-not-running and stores nothing +ok 547 - a tester message to a role no run holds refuses tester-target-not-running and stores nothing + --- + duration_ms: 11.273011 + type: 'test' + ... +# Subtest: a tester message is refused while the run is only launched, and routes once it claims +ok 548 - a tester message is refused while the run is only launched, and routes once it claims + --- + duration_ms: 13.543473 + type: 'test' + ... +# Subtest: a human message to a role no run holds still waits and tells launch.by +ok 549 - a human message to a role no run holds still waits and tells launch.by + --- + duration_ms: 11.701931 + type: 'test' + ... +# Subtest: a role answers a tester only in reply to a tester message, and the answer never reaches the human +ok 550 - a role answers a tester only in reply to a tester message, and the answer never reaches the human + --- + duration_ms: 21.913129 + type: 'test' + ... +# Subtest: the tester reads the human views a reader reads +ok 551 - the tester reads the human views a reader reads + --- + duration_ms: 28.911542 + type: 'test' + ... +# Subtest: tester proof binds its own CLI, start time and nonce, refuses a managed run and allows an agent +ok 552 - tester proof binds its own CLI, start time and nonce, refuses a managed run and allows an agent + --- + duration_ms: 1.320494 + type: 'test' + ... +# Subtest: neither CLI's nonce proves the other: each proof is bound to its own CLI and nonce variable +ok 553 - neither CLI's nonce proves the other: each proof is bound to its own CLI and nonce variable + --- + duration_ms: 0.380352 + type: 'test' + ... +# Subtest: testerNonce reads only the tester's variable and gives null on any read error +ok 554 - testerNonce reads only the tester's variable and gives null on any read error + --- + duration_ms: 0.191688 + type: 'test' + ... +# Subtest: an envelope carries exactly one of cap, human and tester; no tester authenticator refuses +ok 555 - an envelope carries exactly one of cap, human and tester; no tester authenticator refuses + --- + duration_ms: 92.963132 + type: 'test' + ... +# Subtest: tester-cli.mjs binds through the runtime when the switch is on, and refuses off or under a run marker +ok 556 - tester-cli.mjs binds through the runtime when the switch is on, and refuses off or under a run marker + --- + duration_ms: 1007.029538 + type: 'test' + ... +# Subtest: REQ-THREAD-1 REQ-ORG-2: the 3d→3e migration adds the thread tables and leaves messages from before threads as written +ok 557 - REQ-THREAD-1 REQ-ORG-2: the 3d→3e migration adds the thread tables and leaves messages from before threads as written + --- + duration_ms: 86.578592 + type: 'test' + ... +# Subtest: REQ-THREAD-1: a 3d bus with a changed schema is refused and keeps its version and tables +ok 558 - REQ-THREAD-1: a 3d bus with a changed schema is refused and keeps its version and tables + --- + duration_ms: 47.132446 + type: 'test' + ... +# Subtest: REQ-THREAD-1: the offline command prints the kept-message counts before the ready line +ok 559 - REQ-THREAD-1: the offline command prints the kept-message counts before the ready line + --- + duration_ms: 100.087099 + type: 'test' + ... +# Subtest: REQ-ROLE-2 REQ-THREAD-1: one holder per thread, through the broker and the trigger +ok 560 - REQ-ROLE-2 REQ-THREAD-1: one holder per thread, through the broker and the trigger + --- + duration_ms: 31.928643 + type: 'test' + ... +# Subtest: REQ-ROLE-2 REQ-THREAD-1: the 3e triggers refuse writes that skip the broker +ok 561 - REQ-ROLE-2 REQ-THREAD-1: the 3e triggers refuse writes that skip the broker + --- + duration_ms: 53.665508 + type: 'test' + ... +# Subtest: REQ-MSG-1: a message to or from the assistant names its thread, or is refused +ok 562 - REQ-MSG-1: a message to or from the assistant names its thread, or is refused + --- + duration_ms: 28.49771 + type: 'test' + ... +# Subtest: REQ-MSG-1: the chief of staff's reply comes back to the thread that sent the work +ok 563 - REQ-MSG-1: the chief of staff's reply comes back to the thread that sent the work + --- + duration_ms: 537.678815 + type: 'test' + ... +# Subtest: REQ-MSG-1: a reply can't carry one thread instance's thread to another thread instance +ok 564 - REQ-MSG-1: a reply can't carry one thread instance's thread to another thread instance + --- + duration_ms: 16.908599 + type: 'test' + ... +# Subtest: REQ-THREAD-1 REQ-USER-2: one thread's messages never reach another thread's holder +ok 565 - REQ-THREAD-1 REQ-USER-2: one thread's messages never reach another thread's holder + --- + duration_ms: 22.708517 + type: 'test' + ... +# Subtest: REQ-LAUNCH-1: a message to a thread with no holder waits, and the next holder gets it +ok 566 - REQ-LAUNCH-1: a message to a thread with no holder waits, and the next holder gets it + --- + duration_ms: 23.71664 + type: 'test' + ... +# Subtest: REQ-THREAD-2 REQ-LAUNCH-1: threadIdle releases only a thread with nothing waiting, and only for its holder +ok 567 - REQ-THREAD-2 REQ-LAUNCH-1: threadIdle releases only a thread with nothing waiting, and only for its holder + --- + duration_ms: 27.183474 + type: 'test' + ... +# Subtest: REQ-THREAD-2 REQ-LAUNCH-1: a message delivered to a run that ended unread doesn't hold up the next holder +ok 568 - REQ-THREAD-2 REQ-LAUNCH-1: a message delivered to a run that ended unread doesn't hold up the next holder + --- + duration_ms: 22.700307 + type: 'test' + ... +# Subtest: REQ-ROLE-2 REQ-THREAD-1 Q169: a role.revoke the human approved ends every thread run of the assistant +ok 569 - REQ-ROLE-2 REQ-THREAD-1 Q169: a role.revoke the human approved ends every thread run of the assistant + --- + duration_ms: 22.006305 + type: 'test' + ... +# Subtest: Q169 REQ-USER-2: assistant.stop ends the human's own assistant thread runs, and only the human's +ok 570 - Q169 REQ-USER-2: assistant.stop ends the human's own assistant thread runs, and only the human's + --- + duration_ms: 31.997154 + type: 'test' + ... +# Subtest: REQ-USER-2: the human verbs refuse another owner's thread +ok 571 - REQ-USER-2: the human verbs refuse another owner's thread + --- + duration_ms: 22.786557 + type: 'test' + ... +# Subtest: REQ-THREAD-1: thread.create refuses when the business has no thread instance or more than one +ok 572 - REQ-THREAD-1: thread.create refuses when the business has no thread instance or more than one + --- + duration_ms: 17.040911 + type: 'test' + ... +# Subtest: REQ-ORG-2: projects and threads are named once, and the repo names a business project +ok 573 - REQ-ORG-2: projects and threads are named once, and the repo names a business project + --- + duration_ms: 21.855158 + type: 'test' + ... +# Subtest: REQ-THREAD-2: thread.messages returns the thread's history in pages and writes nothing +ok 574 - REQ-THREAD-2: thread.messages returns the thread's history in pages and writes nothing + --- + duration_ms: 78.342188 + type: 'test' + ... +# Subtest: project.create refuses a repository name without its matching repo before any write +ok 575 - project.create refuses a repository name without its matching repo before any write + --- + duration_ms: 13.647684 + type: 'test' + ... +# Subtest: project.create keeps unrelated names with and without a repository +ok 576 - project.create keeps unrelated names with and without a repository + --- + duration_ms: 8.867045 + type: 'test' + ... +# Subtest: socket capability stamps launch identity; shared views use wire, no SQL client +ok 577 - socket capability stamps launch identity; shared views use wire, no SQL client + --- + duration_ms: 43.566406 + type: 'test' + ... +# Subtest: two wire claims serialize; a lost reply never automatically retries +ok 578 - two wire claims serialize; a lost reply never automatically retries + --- + duration_ms: 38.514662 + type: 'test' + ... +# Subtest: malformed, oversized and identity-forging envelopes refuse without echoing input +ok 579 - malformed, oversized and identity-forging envelopes refuse without echoing input + --- + duration_ms: 33.328982 + type: 'test' + ... +# Subtest: client preserves UTF-8 when a response divides a multibyte character +ok 580 - client preserves UTF-8 when a response divides a multibyte character + --- + duration_ms: 11.534406 + type: 'test' + ... +# Subtest: committed mutation followed by dropped reply reports unknown and is never retried +ok 581 - committed mutation followed by dropped reply reports unknown and is never retried + --- + duration_ms: 33.072372 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 usage protocol binds run identity, requires a delivered turn and isolates businesses +ok 582 - REQ-LIMIT-4 usage protocol binds run identity, requires a delivered turn and isolates businesses + --- + duration_ms: 22.38226 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 3g copy migrates through 3h and 3i to 3j preserving every old column, row and sequence; new usage table is empty +ok 583 - REQ-LIMIT-4 3g copy migrates through 3h and 3i to 3j preserving every old column, row and sequence; new usage table is empty + --- + duration_ms: 75.327841 + type: 'test' + ... +# Subtest: REQ-PLUG-1 runtime reaches transcript only through loader, over the real bus socket +ok 584 - REQ-PLUG-1 runtime reaches transcript only through loader, over the real bus socket + --- + duration_ms: 61.626995 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 loader source records new turn kinds, excludes history and retries exactly once +ok 585 - REQ-LIMIT-4 loader source records new turn kinds, excludes history and retries exactly once + --- + duration_ms: 15.483338 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 cut: unknown is durable and logged next to every total +ok 586 - REQ-LIMIT-4 cut: unknown is durable and logged next to every total + --- + duration_ms: 11.338814 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 disabled: unknown is durable and logged next to every total +ok 587 - REQ-LIMIT-4 disabled: unknown is durable and logged next to every total + --- + duration_ms: 10.052137 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 missing-begin: unknown is durable and logged next to every total +ok 588 - REQ-LIMIT-4 missing-begin: unknown is durable and logged next to every total + --- + duration_ms: 8.701972 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 no-new-usage: unknown is durable and logged next to every total +ok 589 - REQ-LIMIT-4 no-new-usage: unknown is durable and logged next to every total + --- + duration_ms: 9.540876 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 rewrite: unknown is durable and logged next to every total +ok 590 - REQ-LIMIT-4 rewrite: unknown is durable and logged next to every total + --- + duration_ms: 11.29943 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 unfinished turn remains visibly unknown after accounting restarts +ok 591 - REQ-LIMIT-4 unfinished turn remains visibly unknown after accounting restarts + --- + duration_ms: 7.983423 + type: 'test' + ... +# Subtest: usage records are append-only +ok 592 - usage records are append-only + --- + duration_ms: 8.255393 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 parse failure logs its safe code, never transcript content +ok 593 - REQ-LIMIT-4 parse failure logs its safe code, never transcript content + --- + duration_ms: 9.280447 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 resumed run baselines history and exact totals do not overflow +ok 594 - REQ-LIMIT-4 resumed run baselines history and exact totals do not overflow + --- + duration_ms: 11.125341 + type: 'test' + ... +# Subtest: REQ-PLUG-1 core has no transcript import and disabled sources do not read any transcript +ok 595 - REQ-PLUG-1 core has no transcript import and disabled sources do not read any transcript + --- + duration_ms: 8.410264 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 a resumed thread bills only new assistant messages to its next run +ok 596 - REQ-LIMIT-4 a resumed thread bills only new assistant messages to its next run + --- + duration_ms: 9.230202 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 every enabled source is called; failure is unknown and a partial total stays labelled +ok 597 - REQ-LIMIT-4 every enabled source is called; failure is unknown and a partial total stays labelled + --- + duration_ms: 13.740935 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 a turn whose reported sum exceeds safe precision is unknown, not rounded +ok 598 - REQ-LIMIT-4 a turn whose reported sum exceeds safe precision is unknown, not rounded + --- + duration_ms: 9.933221 + type: 'test' + ... +# Subtest: row 65 a run bound without a transcript directory records no-transcript +ok 599 - row 65 a run bound without a transcript directory records no-transcript + --- + duration_ms: 8.356696 + type: 'test' + ... +# Subtest: web.search: a granted role gets labelled results, and the call is trailed with role, run, verb and query +ok 600 - web.search: a granted role gets labelled results, and the call is trailed with role, run, verb and query + --- + duration_ms: 18.658532 + type: 'test' + ... +# Subtest: web.fetch: a granted role gets the page as labelled text, and the call is trailed with the url +ok 601 - web.fetch: a granted role gets the page as labelled text, and the call is trailed with the url + --- + duration_ms: 17.804532 + type: 'test' + ... +# Subtest: a role without the grant is refused, the refusal is logged with the verb, and nothing is fetched +ok 602 - a role without the grant is refused, the refusal is logged with the verb, and nothing is fetched + --- + duration_ms: 14.277482 + type: 'test' + ... +# Subtest: a broker with no web service refuses a granted role +ok 603 - a broker with no web service refuses a granted role + --- + duration_ms: 9.55346 + type: 'test' + ... +# Subtest: bad requests are refused: unknown verb, extra or missing argument, not a string, a human or reader session +ok 604 - bad requests are refused: unknown verb, extra or missing argument, not a string, a human or reader session + --- + duration_ms: 14.483888 + type: 'test' + ... +# Subtest: a session that is not the role holder is refused +ok 605 - a session that is not the role holder is refused + --- + duration_ms: 8.971267 + type: 'test' + ... +# Subtest: web.mjs's fences hold on the broker side: refusals are normal results with the fixed reason +ok 606 - web.mjs's fences hold on the broker side: refusals are normal results with the fixed reason + --- + duration_ms: 33.012456 + type: 'test' + ... +# Subtest: web.search with no search source configured is a refused result, not an error +ok 607 - web.search with no search source configured is a refused result, not an error + --- + duration_ms: 12.744726 + type: 'test' + ... +# Subtest: a search source that fails with its own refusal, or that throws, is handled +ok 608 - a search source that fails with its own refusal, or that throws, is handled + --- + duration_ms: 16.531062 + type: 'test' + ... +# Subtest: a slow search source ends in a refusal at the deadline +ok 609 - a slow search source ends in a refusal at the deadline + --- + duration_ms: 63.500675 + type: 'test' + ... +# Subtest: a secret in the arguments is refused before anything is trailed or fetched +ok 610 - a secret in the arguments is refused before anything is trailed or fetched + --- + duration_ms: 10.872581 + type: 'test' + ... +# Subtest: over the socket: the server routes web verbs to the service; other roles are refused; no service is web-not-configured +ok 611 - over the socket: the server routes web verbs to the service; other roles are refused; no service is web-not-configured + --- + duration_ms: 65.092683 + type: 'test' + ... +# Subtest: busBusiness: the web grant comes from "web" in the resolved tool limit +ok 612 - busBusiness: the web grant comes from "web" in the resolved tool limit + --- + duration_ms: 0.292755 + type: 'test' + ... +# Subtest: webServices: the business's search-source plug-in and web.searxng var make web.search work; without either it is refused as not configured +ok 613 - webServices: the business's search-source plug-in and web.searxng var make web.search work; without either it is refused as not configured + --- + duration_ms: 34.416373 + type: 'test' + ... +# Subtest: an ungranted call is refused at once: no admission, no wait, nothing touched +ok 614 - an ungranted call is refused at once: no admission, no wait, nothing touched + --- + duration_ms: 12.591122 + type: 'test' + ... +# Subtest: over the socket an ungranted caller is dropped by the server timeout and a granted one gets the longer wait +ok 615 - over the socket an ungranted caller is dropped by the server timeout and a granted one gets the longer wait + --- + duration_ms: 346.999759 + type: 'test' + ... +# Subtest: a search that never answers is aborted at the deadline, the module sees the signal, and the call is trailed as refused (timeout) +ok 616 - a search that never answers is aborted at the deadline, the module sees the signal, and the call is trailed as refused (timeout) + --- + duration_ms: 71.923162 + type: 'test' + ... +# Subtest: a fetch that stalls is cut off at the deadline: the request is destroyed, not left running +ok 617 - a fetch that stalls is cut off at the deadline: the request is destroyed, not left running + --- + duration_ms: 90.595113 + type: 'test' + ... +# Subtest: one query limit: over SEARCH_MAX_QUERY_CHARS or empty is refused with the same reason before any backend, and the tool schema carries the same number +ok 618 - one query limit: over SEARCH_MAX_QUERY_CHARS or empty is refused with the same reason before any backend, and the tool schema carries the same number + --- + duration_ms: 13.74802 + type: 'test' + ... +# Subtest: merge-gate's technical raise is cross-role, goes to the cto, and only merge-gate can use the approval +ok 619 - merge-gate's technical raise is cross-role, goes to the cto, and only merge-gate can use the approval + --- + duration_ms: 33.907271 + type: 'test' + ... +# Subtest: merge-gate has no message.send, and without a domain its raise goes to the delivery arbiter +ok 620 - merge-gate has no message.send, and without a domain its raise goes to the delivery arbiter + --- + duration_ms: 24.034271 + type: 'test' + ... +# Subtest: the cto must be able to message merge-gate, or the technical raise is refused (row 133) +ok 621 - the cto must be able to message merge-gate, or the technical raise is refused (row 133) + --- + duration_ms: 20.011056 + type: 'test' + ... +# Subtest: security-reviewer answers a review with its verdict alone; it holds no message.send +ok 622 - security-reviewer answers a review with its verdict alone; it holds no message.send + --- + duration_ms: 22.215941 + type: 'test' + ... +1..622 +# tests 622 +# suites 0 +# pass 622 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 34558.292243 diff --git a/agents/gander/work/queue-196/r4/gate/categorized-sweep.json b/agents/gander/work/queue-196/r4/gate/categorized-sweep.json new file mode 100644 index 000000000..0467a10ec --- /dev/null +++ b/agents/gander/work/queue-196/r4/gate/categorized-sweep.json @@ -0,0 +1,136 @@ +{ + "grantStart": "2026-10-21T19:29:41Z", + "rawSweepCount": 9, + "preexistingHarnessHelpers": [ + { + "pid": 748279, + "name": "npm exec @playw", + "cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196", + "startedAt": "2026-10-21T18:45:45.352804+00:00", + "predatesGrant": true + }, + { + "pid": 748302, + "name": "node-MainThread", + "cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196", + "startedAt": "2026-10-21T18:45:45.372804+00:00", + "predatesGrant": true + }, + { + "pid": 748306, + "name": "npm exec @model", + "cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196", + "startedAt": "2026-10-21T18:45:45.372804+00:00", + "predatesGrant": true + }, + { + "pid": 748314, + "name": "npm exec chrome", + "cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196", + "startedAt": "2026-10-21T18:45:45.382804+00:00", + "predatesGrant": true + }, + { + "pid": 748494, + "name": "chrome-devtools", + "cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196", + "startedAt": "2026-10-21T18:45:46.342804+00:00", + "predatesGrant": true + }, + { + "pid": 748496, + "name": "node-MainThread", + "cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196", + "startedAt": "2026-10-21T18:45:46.352804+00:00", + "predatesGrant": true + }, + { + "pid": 748506, + "name": "node-MainThread", + "cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196", + "startedAt": "2026-10-21T18:45:46.362804+00:00", + "predatesGrant": true + }, + { + "pid": 748547, + "name": "node-MainThread", + "cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196", + "startedAt": "2026-10-21T18:45:46.722805+00:00", + "predatesGrant": true + }, + { + "pid": 749160, + "name": "codex-code-mode", + "cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196", + "startedAt": "2026-10-21T18:45:52.822804+00:00", + "predatesGrant": true + } + ], + "gateLeftovers": [], + "processes": [ + { + "pid": 748279, + "name": "npm exec @playw", + "cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196", + "startedAt": "2026-10-21T18:45:45.352804+00:00", + "predatesGrant": true + }, + { + "pid": 748302, + "name": "node-MainThread", + "cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196", + "startedAt": "2026-10-21T18:45:45.372804+00:00", + "predatesGrant": true + }, + { + "pid": 748306, + "name": "npm exec @model", + "cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196", + "startedAt": "2026-10-21T18:45:45.372804+00:00", + "predatesGrant": true + }, + { + "pid": 748314, + "name": "npm exec chrome", + "cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196", + "startedAt": "2026-10-21T18:45:45.382804+00:00", + "predatesGrant": true + }, + { + "pid": 748494, + "name": "chrome-devtools", + "cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196", + "startedAt": "2026-10-21T18:45:46.342804+00:00", + "predatesGrant": true + }, + { + "pid": 748496, + "name": "node-MainThread", + "cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196", + "startedAt": "2026-10-21T18:45:46.352804+00:00", + "predatesGrant": true + }, + { + "pid": 748506, + "name": "node-MainThread", + "cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196", + "startedAt": "2026-10-21T18:45:46.362804+00:00", + "predatesGrant": true + }, + { + "pid": 748547, + "name": "node-MainThread", + "cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196", + "startedAt": "2026-10-21T18:45:46.722805+00:00", + "predatesGrant": true + }, + { + "pid": 749160, + "name": "codex-code-mode", + "cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196", + "startedAt": "2026-10-21T18:45:52.822804+00:00", + "predatesGrant": true + } + ], + "gateLeftoverCount": 0 +} diff --git a/agents/gander/work/queue-196/r4/gate/consolidated-kills.json b/agents/gander/work/queue-196/r4/gate/consolidated-kills.json new file mode 100644 index 000000000..102531f81 --- /dev/null +++ b/agents/gander/work/queue-196/r4/gate/consolidated-kills.json @@ -0,0 +1,398 @@ +{ + "rule": "sage-2096 target blob SHA equality; original run records retained", + "count": 30, + "fresh": 3, + "carried": 27, + "rows": [ + { + "id": "M1", + "killed": true, + "evidenceFolder": "r2/mutants", + "targetFile": "packages/webui/src/serve.mjs", + "r3Sha256": "da624f188c69e016ff82e1d1dcae1c579e68a57f0f25d773bb5d8bca56b80ee1", + "r4Sha256": "da624f188c69e016ff82e1d1dcae1c579e68a57f0f25d773bb5d8bca56b80ee1", + "restoredSha256": "da624f188c69e016ff82e1d1dcae1c579e68a57f0f25d773bb5d8bca56b80ee1", + "carried": true, + "timedOut": false, + "wallSeconds": null, + "baseWallSeconds": null + }, + { + "id": "M2", + "killed": true, + "evidenceFolder": "r2/mutants", + "targetFile": "packages/webui/src/tester-socket.mjs", + "r3Sha256": "1c1fe0c795adac97f28502564a75f26d5666d9be5ae51169f7dd5bb7741fad16", + "r4Sha256": "1c1fe0c795adac97f28502564a75f26d5666d9be5ae51169f7dd5bb7741fad16", + "restoredSha256": "1c1fe0c795adac97f28502564a75f26d5666d9be5ae51169f7dd5bb7741fad16", + "carried": true, + "timedOut": false, + "wallSeconds": null, + "baseWallSeconds": null + }, + { + "id": "M3", + "killed": true, + "evidenceFolder": "r2/mutants", + "targetFile": "packages/webui/src/serve.mjs", + "r3Sha256": "da624f188c69e016ff82e1d1dcae1c579e68a57f0f25d773bb5d8bca56b80ee1", + "r4Sha256": "da624f188c69e016ff82e1d1dcae1c579e68a57f0f25d773bb5d8bca56b80ee1", + "restoredSha256": "da624f188c69e016ff82e1d1dcae1c579e68a57f0f25d773bb5d8bca56b80ee1", + "carried": true, + "timedOut": false, + "wallSeconds": null, + "baseWallSeconds": null + }, + { + "id": "M4", + "killed": true, + "evidenceFolder": "r2/mutants", + "targetFile": "packages/bus/src/principal.mjs", + "r3Sha256": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd", + "r4Sha256": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd", + "restoredSha256": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd", + "carried": true, + "timedOut": false, + "wallSeconds": null, + "baseWallSeconds": null + }, + { + "id": "M5", + "killed": true, + "evidenceFolder": "r2/mutants", + "targetFile": "packages/bus/src/peercred.mjs", + "r3Sha256": "29c88655e8b9aed8db604573c9213fd9f3c40ef35ff04f4eda8fbe8f1b8a32d7", + "r4Sha256": "29c88655e8b9aed8db604573c9213fd9f3c40ef35ff04f4eda8fbe8f1b8a32d7", + "restoredSha256": "29c88655e8b9aed8db604573c9213fd9f3c40ef35ff04f4eda8fbe8f1b8a32d7", + "carried": true, + "timedOut": false, + "wallSeconds": null, + "baseWallSeconds": null + }, + { + "id": "M6", + "killed": true, + "evidenceFolder": "r2/mutants", + "targetFile": "packages/bus/src/principal.mjs", + "r3Sha256": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd", + "r4Sha256": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd", + "restoredSha256": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd", + "carried": true, + "timedOut": false, + "wallSeconds": null, + "baseWallSeconds": null + }, + { + "id": "M7", + "killed": true, + "evidenceFolder": "r2/mutants", + "targetFile": "packages/webui/src/tester-socket.mjs", + "r3Sha256": "1c1fe0c795adac97f28502564a75f26d5666d9be5ae51169f7dd5bb7741fad16", + "r4Sha256": "1c1fe0c795adac97f28502564a75f26d5666d9be5ae51169f7dd5bb7741fad16", + "restoredSha256": "1c1fe0c795adac97f28502564a75f26d5666d9be5ae51169f7dd5bb7741fad16", + "carried": true, + "timedOut": false, + "wallSeconds": null, + "baseWallSeconds": null + }, + { + "id": "M8", + "killed": true, + "evidenceFolder": "r2/mutants", + "targetFile": "packages/bus/src/human.mjs", + "r3Sha256": "0c6d96abe4607cba0b02b0638a2fc217ff8135bac9a47761a0ef015fbe9d3079", + "r4Sha256": "0c6d96abe4607cba0b02b0638a2fc217ff8135bac9a47761a0ef015fbe9d3079", + "restoredSha256": "0c6d96abe4607cba0b02b0638a2fc217ff8135bac9a47761a0ef015fbe9d3079", + "carried": true, + "timedOut": false, + "wallSeconds": null, + "baseWallSeconds": null + }, + { + "id": "M9", + "killed": true, + "evidenceFolder": "r2/mutants", + "targetFile": "packages/bus/src/human.mjs", + "r3Sha256": "0c6d96abe4607cba0b02b0638a2fc217ff8135bac9a47761a0ef015fbe9d3079", + "r4Sha256": "0c6d96abe4607cba0b02b0638a2fc217ff8135bac9a47761a0ef015fbe9d3079", + "restoredSha256": "0c6d96abe4607cba0b02b0638a2fc217ff8135bac9a47761a0ef015fbe9d3079", + "carried": true, + "timedOut": false, + "wallSeconds": null, + "baseWallSeconds": null + }, + { + "id": "M10", + "killed": true, + "evidenceFolder": "r2/mutants", + "targetFile": "packages/bus/src/principal.mjs", + "r3Sha256": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd", + "r4Sha256": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd", + "restoredSha256": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd", + "carried": true, + "timedOut": false, + "wallSeconds": null, + "baseWallSeconds": null + }, + { + "id": "M11", + "killed": true, + "evidenceFolder": "r2/mutants", + "targetFile": "packages/bus/src/principal.mjs", + "r3Sha256": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd", + "r4Sha256": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd", + "restoredSha256": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd", + "carried": true, + "timedOut": false, + "wallSeconds": null, + "baseWallSeconds": null + }, + { + "id": "M12", + "killed": true, + "evidenceFolder": "r2/mutants", + "targetFile": "packages/bus/src/human.mjs", + "r3Sha256": "0c6d96abe4607cba0b02b0638a2fc217ff8135bac9a47761a0ef015fbe9d3079", + "r4Sha256": "0c6d96abe4607cba0b02b0638a2fc217ff8135bac9a47761a0ef015fbe9d3079", + "restoredSha256": "0c6d96abe4607cba0b02b0638a2fc217ff8135bac9a47761a0ef015fbe9d3079", + "carried": true, + "timedOut": false, + "wallSeconds": null, + "baseWallSeconds": null + }, + { + "id": "M13", + "killed": true, + "evidenceFolder": "r4/gate/killers", + "targetFile": "packages/bus/src/server.mjs", + "r3Sha256": "830faa9a76150b59189cde395ec8deeb768e4b0d45ed262a57bb6fc6e459abb4", + "r4Sha256": "7be306c830aa98763b34b329995b40e9df443483fe20fcd69100a3acb6311bd6", + "restoredSha256": "7be306c830aa98763b34b329995b40e9df443483fe20fcd69100a3acb6311bd6", + "carried": false, + "timedOut": false, + "wallSeconds": 1.781, + "baseWallSeconds": 1.840884985 + }, + { + "id": "M14", + "killed": true, + "evidenceFolder": "r2/mutants", + "targetFile": "packages/bus/src/principal.mjs", + "r3Sha256": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd", + "r4Sha256": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd", + "restoredSha256": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd", + "carried": true, + "timedOut": false, + "wallSeconds": null, + "baseWallSeconds": null + }, + { + "id": "M15", + "killed": true, + "evidenceFolder": "r2/mutants", + "targetFile": "scripts/stack-release.sh", + "r3Sha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2", + "r4Sha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2", + "restoredSha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2", + "carried": true, + "timedOut": false, + "wallSeconds": null, + "baseWallSeconds": null + }, + { + "id": "M16", + "killed": true, + "evidenceFolder": "r2/mutants", + "targetFile": "scripts/stack-release.sh", + "r3Sha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2", + "r4Sha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2", + "restoredSha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2", + "carried": true, + "timedOut": false, + "wallSeconds": null, + "baseWallSeconds": null + }, + { + "id": "M17", + "killed": true, + "evidenceFolder": "r4/gate/killers", + "targetFile": "packages/bus/src/broker.mjs", + "r3Sha256": "e6f33bac95a40c9d52d67f297eec361cd0f30da5d3c28057468ee5d56c3ae7fc", + "r4Sha256": "762234259d72db87aff510751fe14003099759ae37bc8eaf14f1ea1de61d2005", + "restoredSha256": "762234259d72db87aff510751fe14003099759ae37bc8eaf14f1ea1de61d2005", + "carried": false, + "timedOut": false, + "wallSeconds": 2.94, + "baseWallSeconds": 3.049434243 + }, + { + "id": "M18", + "killed": true, + "evidenceFolder": "r2/mutants", + "targetFile": "packages/bus/src/principal.mjs", + "r3Sha256": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd", + "r4Sha256": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd", + "restoredSha256": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd", + "carried": true, + "timedOut": false, + "wallSeconds": null, + "baseWallSeconds": null + }, + { + "id": "M19", + "killed": true, + "evidenceFolder": "r2/mutants", + "targetFile": "packages/cli/src/tester-http.mjs", + "r3Sha256": "4bd7bdf0898844684ebf9444b110d2c5b6fa874b2681183e54f1f62f97823192", + "r4Sha256": "4bd7bdf0898844684ebf9444b110d2c5b6fa874b2681183e54f1f62f97823192", + "restoredSha256": "4bd7bdf0898844684ebf9444b110d2c5b6fa874b2681183e54f1f62f97823192", + "carried": true, + "timedOut": false, + "wallSeconds": null, + "baseWallSeconds": null + }, + { + "id": "M20", + "killed": true, + "evidenceFolder": "r2/mutants", + "targetFile": "packages/bus/src/peercred.mjs", + "r3Sha256": "29c88655e8b9aed8db604573c9213fd9f3c40ef35ff04f4eda8fbe8f1b8a32d7", + "r4Sha256": "29c88655e8b9aed8db604573c9213fd9f3c40ef35ff04f4eda8fbe8f1b8a32d7", + "restoredSha256": "29c88655e8b9aed8db604573c9213fd9f3c40ef35ff04f4eda8fbe8f1b8a32d7", + "carried": true, + "timedOut": false, + "wallSeconds": null, + "baseWallSeconds": null + }, + { + "id": "M21", + "killed": true, + "evidenceFolder": "r2/mutants", + "targetFile": "packages/bus/src/interpreter.mjs", + "r3Sha256": "d5d98a9133a1b449acc48143fd559d890a470c6ea210b30b9b70e491e6cd855a", + "r4Sha256": "d5d98a9133a1b449acc48143fd559d890a470c6ea210b30b9b70e491e6cd855a", + "restoredSha256": "d5d98a9133a1b449acc48143fd559d890a470c6ea210b30b9b70e491e6cd855a", + "carried": true, + "timedOut": false, + "wallSeconds": null, + "baseWallSeconds": null + }, + { + "id": "M22", + "killed": true, + "evidenceFolder": "r4/gate/killers", + "targetFile": "packages/bus/src/server.mjs", + "r3Sha256": "830faa9a76150b59189cde395ec8deeb768e4b0d45ed262a57bb6fc6e459abb4", + "r4Sha256": "7be306c830aa98763b34b329995b40e9df443483fe20fcd69100a3acb6311bd6", + "restoredSha256": "7be306c830aa98763b34b329995b40e9df443483fe20fcd69100a3acb6311bd6", + "carried": false, + "timedOut": false, + "wallSeconds": 1.766, + "baseWallSeconds": 1.840884985 + }, + { + "id": "M23", + "killed": true, + "evidenceFolder": "r2/run2/killers", + "targetFile": "packages/bus/src/interpreter.mjs", + "r3Sha256": "d5d98a9133a1b449acc48143fd559d890a470c6ea210b30b9b70e491e6cd855a", + "r4Sha256": "d5d98a9133a1b449acc48143fd559d890a470c6ea210b30b9b70e491e6cd855a", + "restoredSha256": "d5d98a9133a1b449acc48143fd559d890a470c6ea210b30b9b70e491e6cd855a", + "carried": true, + "timedOut": false, + "wallSeconds": 2.736, + "baseWallSeconds": 1.4702031439999999 + }, + { + "id": "M24", + "killed": true, + "evidenceFolder": "r2/run2/killers", + "targetFile": "packages/webui/src/tester-socket.mjs", + "r3Sha256": "1c1fe0c795adac97f28502564a75f26d5666d9be5ae51169f7dd5bb7741fad16", + "r4Sha256": "1c1fe0c795adac97f28502564a75f26d5666d9be5ae51169f7dd5bb7741fad16", + "restoredSha256": "1c1fe0c795adac97f28502564a75f26d5666d9be5ae51169f7dd5bb7741fad16", + "carried": true, + "timedOut": false, + "wallSeconds": 1.647, + "baseWallSeconds": 1.52819561 + }, + { + "id": "M25", + "killed": true, + "evidenceFolder": "r3/gate/killers", + "targetFile": "packages/bus/src/interpreter.mjs", + "r3Sha256": "d5d98a9133a1b449acc48143fd559d890a470c6ea210b30b9b70e491e6cd855a", + "r4Sha256": "d5d98a9133a1b449acc48143fd559d890a470c6ea210b30b9b70e491e6cd855a", + "restoredSha256": "d5d98a9133a1b449acc48143fd559d890a470c6ea210b30b9b70e491e6cd855a", + "carried": true, + "timedOut": false, + "wallSeconds": 2.549, + "baseWallSeconds": 1.590576636 + }, + { + "id": "M26", + "killed": true, + "evidenceFolder": "r2/run2/killers", + "targetFile": "packages/bus/src/peercred.mjs", + "r3Sha256": "29c88655e8b9aed8db604573c9213fd9f3c40ef35ff04f4eda8fbe8f1b8a32d7", + "r4Sha256": "29c88655e8b9aed8db604573c9213fd9f3c40ef35ff04f4eda8fbe8f1b8a32d7", + "restoredSha256": "29c88655e8b9aed8db604573c9213fd9f3c40ef35ff04f4eda8fbe8f1b8a32d7", + "carried": true, + "timedOut": false, + "wallSeconds": 1.95, + "baseWallSeconds": 2.0922415990000003 + }, + { + "id": "M27", + "killed": true, + "evidenceFolder": "r2/run2/killers", + "targetFile": "packages/bus/src/peercred.mjs", + "r3Sha256": "29c88655e8b9aed8db604573c9213fd9f3c40ef35ff04f4eda8fbe8f1b8a32d7", + "r4Sha256": "29c88655e8b9aed8db604573c9213fd9f3c40ef35ff04f4eda8fbe8f1b8a32d7", + "restoredSha256": "29c88655e8b9aed8db604573c9213fd9f3c40ef35ff04f4eda8fbe8f1b8a32d7", + "carried": true, + "timedOut": false, + "wallSeconds": 1.572, + "baseWallSeconds": 2.0922415990000003 + }, + { + "id": "M28", + "killed": true, + "evidenceFolder": "r3/gate/killers", + "targetFile": "scripts/stack-release.sh", + "r3Sha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2", + "r4Sha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2", + "restoredSha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2", + "carried": true, + "timedOut": false, + "wallSeconds": 6.09, + "baseWallSeconds": 8.452289073 + }, + { + "id": "M28b", + "killed": true, + "evidenceFolder": "r3/gate/killers", + "targetFile": "scripts/stack-release.sh", + "r3Sha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2", + "r4Sha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2", + "restoredSha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2", + "carried": true, + "timedOut": false, + "wallSeconds": 4.308, + "baseWallSeconds": 4.386869599 + }, + { + "id": "M29", + "killed": true, + "evidenceFolder": "r3/gate/killers", + "targetFile": "scripts/stack-release.sh", + "r3Sha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2", + "r4Sha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2", + "restoredSha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2", + "carried": true, + "timedOut": false, + "wallSeconds": 8.462, + "baseWallSeconds": 8.452289073 + } + ] +} diff --git a/agents/gander/work/queue-196/r4/gate/driver.log b/agents/gander/work/queue-196/r4/gate/driver.log new file mode 100644 index 000000000..eaf076bc1 --- /dev/null +++ b/agents/gander/work/queue-196/r4/gate/driver.log @@ -0,0 +1,3 @@ +M13 KILLED base=1.840884985s timeout=false +M17 KILLED base=3.049434243s timeout=false +M22 KILLED base=1.840884985s timeout=false diff --git a/agents/gander/work/queue-196/r4/gate/driver.mjs b/agents/gander/work/queue-196/r4/gate/driver.mjs new file mode 100644 index 000000000..829dbe86c --- /dev/null +++ b/agents/gander/work/queue-196/r4/gate/driver.mjs @@ -0,0 +1,81 @@ +import { guardMutation } from '../../mutant-guard.mjs'; +// Authorized batch only. Mutate isolated scratch copies, never the candidate or installed tree. +import {mkdtempSync,cpSync,readFileSync,writeFileSync,rmSync,symlinkSync,existsSync,mkdirSync} from 'node:fs'; +import {tmpdir} from 'node:os';import {join,resolve} from 'node:path'; +import {spawnSync,execFileSync} from 'node:child_process';import {createHash} from 'node:crypto'; +import {fileURLToPath} from 'node:url'; +const root='/mnt/storage/scratch/tmp/g196-tree-tn651z'; +const out='/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-196/r4/gate/killers';mkdirSync(out,{recursive:true}); +const p='packages/bus/src/principal.mjs',h='packages/bus/src/human.mjs',w='packages/webui/src/tester-socket.mjs',s='packages/bus/src/server.mjs',peer='packages/bus/src/peercred.mjs'; +const principal='packages/bus/tests/principal.test.mjs',socket='packages/webui/tests/tester-socket.test.mjs',transport='packages/bus/tests/peer-transport.test.mjs',interpreter='packages/bus/tests/interpreter.test.mjs'; +const release=['--test-name-pattern=row196 explicit socket','packages/cli/tests/stack-release.test.mjs']; +const specs=[ + ['M1', 'packages/webui/src/serve.mjs','tester uses TCP',socket, text=>text.replace('if (tester) return bindTesterSocket(server, testerSocket);',"if (tester) return new Promise(r=>server.listen(0,'127.0.0.1',()=>r(server)));" )], + ['M2',w,'socket mode widened',socket,t=>t.replace('chmodSync(temporary, 0o600)','chmodSync(temporary, 0o666)')], + ['M3','packages/webui/src/serve.mjs','sign-in accepted on tester',socket,t=>t.replace("if (tester && (Object.hasOwn(req.headers, 'authorization')", "if (false && (Object.hasOwn(req.headers, 'authorization')")], + ['M4',p,'copied PID accepted',principal,t=>t.replace('peer.pid !== proof.pid','false')], + ['M5',peer,'helper parse error ignored','packages/bus/tests/peercred.test.mjs',t=>t.replace('finish(false, Object.freeze(p));\n } catch { finish(true); }','finish(false, Object.freeze(p));\n } catch { finish(false, {pid:2,uid:0,gid:0}); }')], + ['M6',p,'foreign uid accepted',principal,t=>t.replace('peer.uid !== process.getuid()','false')], + ['M7',w,'unsafe parent accepted',socket,t=>t.replace('(dir.mode & 0o077)','false')], + ['M8',h,'agent environment walk skipped',principal,t=>t.replace('current.env !== null && MARKERS.some','false && MARKERS.some')], + ['M9',h,'leaf identity not reread',principal,t=>t.replace('if (again.startTime !== proof.startTime || again.ppid !== p.ppid)','if (false)')], + ['M10',p,'Console direct-parent check removed',principal,t=>t.replace("if (parent.uid !== peer.uid || parent.argv[1] !== resolve(paths.console) || parent.argv[2] !== 'serve')",'if (false)')], + ['M11',p,'Console basename accepted',principal,t=>t.replace("import { resolve }", "import { resolve, basename }").replace('parent.argv[1] !== resolve(paths.console)','basename(parent.argv[1] ?? "") !== basename(paths.console)')], + ['M12',h,'unknown proof identity accepted',principal,t=>t.replace("Object.keys(proof).some((k) => !['pid', 'startTime', 'nonce', 'business'].includes(k))",'false')], + ['M13',s,'transient cap leaked',transport,t=>t.replace('broker.disconnect(boundCap)','void(boundCap)')], + ['M14',p,'tester walk used for user',principal,t=>t.replace("verifyHuman(checked, { cliPath: paths[kind], launches, readProcess,\n nonceKey: kind === 'user' ? 'MOSAIC_BUS_USER_NONCE' : 'MOSAIC_BUS_CLI_NONCE' })",'verifyTester(checked, {cliPath:paths[kind],launches,readProcess,readNonce:()=>checked.nonce})')], + ['M15','scripts/stack-release.sh','TCP retained during conversion',release,t=>t.replace('RUN_CONSOLE=("${without_tester[@]}" --tester-socket)','RUN_CONSOLE=("${BASE_CONSOLE[@]}" --tester-socket)')], + ['M16','scripts/stack-release.sh','TCP reopened on downgrade',release,t=>t.replace('RUN_CONSOLE=("${without_tester[@]}") DROP_TESTER="--tester-socket','RUN_CONSOLE=("${without_tester[@]}" --tester-port 7333) DROP_TESTER="--tester-socket')], + ['M17','packages/bus/src/broker.mjs','tester switch ignored','packages/bus/tests/tester.test.mjs',t=>t.replace("if (this.#business(record.business).vars?.['bus.tester'] !== true)",'if (false)')], + ['M18',p,'user kind becomes owner',principal,t=>t.replace("return { kind: 'user', business, id: proof.user }","return { kind: 'owner', business, id: proof.user }")], + ['M19','packages/cli/src/tester-http.mjs','selected instance root ignored',socket,t=>t.replace('socketPath: testerSocketPath(dataRoot)','socketPath: testerSocketPath(dataRoot + "/wrong-instance")')], + ['M20',peer,'helper gets another pending socket','packages/bus/tests/peercred.test.mjs',t=>t.replace('export function createPeerReader','function originalPeerReader')+`\nexport function createPeerReader(options){const base=originalPeerReader(options),queue=[];let scheduled=false;return{read(socket){return new Promise((resolve,reject)=>{queue.push({socket,resolve,reject});if(!scheduled){scheduled=true;queueMicrotask(()=>{scheduled=false;const jobs=queue.splice(0);jobs.forEach((job,i)=>base.read(jobs[(i+1)%jobs.length].socket).then(job.resolve,job.reject));});}});},close(){base.close();}};}\n`], + ['M21','packages/bus/src/interpreter.mjs','user-owned interpreter accepted',interpreter,t=>t.replace('s.uid !== 0 || (s.mode & 0o022)','false || (s.mode & 0o022)')], + ['M22',s,'cap requests invoke helper',transport,t=>t.replace(' if (kind) {',' if (r.cap) await peers.read(socket);\n if (kind) {')], + ['M23','packages/bus/src/interpreter.mjs','restart retains stale identity',interpreter,t=>t.replace('export function recordInterpreterStart(directory, record) {','export function recordInterpreterStart(directory, record) {\n try { readFileSync(join(directory,"peercred-starts.jsonl")); return; } catch {}')], + ['M24',w,'listener binds final path directly',socket,t=>t.replace("const temporary = join(parent, '.' + randomBytes(4).toString('hex') + '.s');",'const temporary = path;')], + ['M25','packages/bus/src/interpreter.mjs','FIFO receipt blocks before type refusal',['--test-name-pattern=non-regular startup receipt',interpreter],t=>t.replace('constants.O_WRONLY | constants.O_APPEND | constants.O_CREAT | constants.O_NOFOLLOW | constants.O_NONBLOCK, 0o600','constants.O_WRONLY | constants.O_APPEND | constants.O_CREAT | constants.O_NOFOLLOW, 0o600')], + ['M26',peer,'missing helper accepted at startup',['--test-name-pattern=missing or non-regular peer helper','packages/bus/tests/peercred.test.mjs'],t=>t.replace('if (!s.isFile() || s.isSymbolicLink()) throw Error();','if (false) throw Error();').replace('catch { throw refused(); }','catch {}')], + ['M27',peer,'shutdown returns before helpers are reaped',['--test-name-pattern=shutdown waits','packages/bus/tests/peercred.test.mjs'],t=>t.replace(" await Promise.all([...children].map(child => new Promise(resolve => {\n child.once('close', resolve);\n child.kill('SIGKILL');\n })));"," for (const child of children) child.kill('SIGKILL');")], + ['M28','scripts/stack-release.sh','proof pair placed after tester socket flag',release,t=>t.replace('case "${without_proof[i]}" in --send | --tester-port | --tester-socket) break','case "${without_proof[i]}" in --send | --tester-port) break')], + ['M28b','scripts/stack-release.sh','SSO placed after tester socket flag',['--test-name-pattern=row196 SSO socket','packages/cli/tests/stack-release.test.mjs'],t=>t.replace('case "${kept[i]}" in --send | --tester-port | --tester-socket) break','case "${kept[i]}" in --send | --tester-port) break')], + ['M29','scripts/stack-release.sh','unsafe tester path reaches service stop',release,t=>t.replace(t.split('\n').find(line=>line.includes('|| check_refuse tester-socket-path'))+'\n','')], +]; +const hash=x=>createHash('sha256').update(x).digest('hex'); +const results=[]; +for (const [id,file,,,mutate] of specs) { + try { guardMutation(readFileSync(join(root,file),'utf8'),mutate); } + catch(error) { throw Error(id+': '+error.message); } +} +const scratch=mkdtempSync(join(tmpdir(),'g196-mut-')); +try { + for(const name of ['packages','scripts','adapters','roles','contracts','RELEASE','package.json','package-lock.json','.gitignore'])if(existsSync(join(root,name)))cpSync(join(root,name),join(scratch,name),{recursive:true,filter:src=>!src.includes('/node_modules/')&&!src.endsWith('/node_modules')}); + symlinkSync(join(root,'node_modules'),join(scratch,'node_modules')); + for(const args of [['init','-q'],['add','.'],['-c','user.name=fixture','-c','user.email=fixture@invalid','-c','commit.gpgsign=false','-c','core.hooksPath=/dev/null','commit','-qm','candidate snapshot']])execFileSync('git',args,{cwd:scratch}); + for(const [id,file,description,test,mutate] of specs.filter(row=>['M13','M17','M22'].includes(row[0]))) { + const bases=JSON.parse(readFileSync(new URL('./base-results.json',import.meta.url),'utf8')); + const killerFile=Array.isArray(test)?test.at(-1):test; + const base=bases.find(b=>b.args.at(-1)===killerFile); + if(!base||base.status!==0||base.seconds>30)throw Error(id+' missing or slow passing base'); + const at=join(scratch,file),original=readFileSync(at,'utf8'),before=hash(original),changed=guardMutation(original,mutate).text; + if(changed===original)throw Error(id+' did not change bytes'); + writeFileSync(at,changed); + const syntax=spawnSync(file.endsWith('.sh')?'bash':process.execPath,[file.endsWith('.sh')?'-n':'--check',at],{encoding:'utf8'}); + if(syntax.status!==0)throw Error(id+' invalid mutation: '+syntax.stderr); + const args=['--test',...(Array.isArray(test)?test:[test])]; + const started=Date.now(); + const run=spawnSync('timeout',['--signal=TERM','--kill-after=2s','60s','bash','-c','set -o pipefail; python3 "$G196_BUSY" && "$G196_NODE" "$@" 2>&1 | tee "$G196_LOG"','--',...args],{cwd:scratch,env:{...process.env,G196_NODE:process.execPath,G196_LOG:join(out,id+'.txt')},encoding:'utf8',maxBuffer:2*1024*1024}); + const log=(run.stdout??'')+(run.stderr??'');writeFileSync(join(out,id+'.txt'),log); + writeFileSync(at,original);const clean=execFileSync('git',['status','--porcelain'],{cwd:scratch,encoding:'utf8'});if(clean.trim())throw Error(id+' dirty restored tree: '+clean);if(hash(readFileSync(at))!==before)throw Error(id+' restore hash failed'); + const failed=/[ℹ#]\s*(?:fail|tests failed)\s+[1-9]/.test(log) || /✖/.test(log); + // Syntax validity is decided exclusively by the node --check preflight above. + // GNU timeout owns a process group and terminates its shell, tee and test descendants. + const timedOut=run.status===124||run.status===137; + const killed=timedOut||(run.status!==0&&failed); + const result={id,description,test,args,status:run.status,signal:run.signal,killed,timedOut,wallSeconds:(Date.now()-started)/1000,baseWallSeconds:base.seconds,baseArgs:base.args,restoredGitStatus:clean,timeoutSeconds:60,timeoutKillAfterSeconds:2,processGroupTimeout:true,syntaxStatus:syntax.status,restoredSha256:before};results.push(result); + writeFileSync(join(out,'results.json'),JSON.stringify(results,null,2)+'\n'); + console.log(id+' '+(killed?'KILLED':'SURVIVED/INVALID')+' base='+base.seconds+'s timeout='+timedOut); + if(timedOut){process.exitCode=1;console.log('STOP non-FIFO timeout');break;} + if(!killed) {process.exitCode=1;break;} + } +} finally {rmSync(scratch,{recursive:true,force:true});} diff --git a/agents/gander/work/queue-196/r4/gate/killers/M13.txt b/agents/gander/work/queue-196/r4/gate/killers/M13.txt new file mode 100644 index 000000000..ab4582fc4 --- /dev/null +++ b/agents/gander/work/queue-196/r4/gate/killers/M13.txt @@ -0,0 +1,55 @@ +CLEAR (current driver ancestors excluded) +✖ proof receives actual peer, cap traffic never invokes helper and transient cap disconnects (9.757279ms) +✔ proof helper error and disconnect during verification never dispatch or bind (2.152394ms) +✔ Client receives explicit proof refusal codes without dispatch, not outcome-unknown (42.155022ms) +✖ asynchronous proof calls release their transient session on success, failure and timeout (2.42083ms) +ℹ tests 4 +ℹ suites 0 +ℹ pass 2 +ℹ fail 2 +ℹ cancelled 0 +ℹ skipped 0 +ℹ todo 0 +ℹ duration_ms 118.061986 + +✖ failing tests: + +test at packages/bus/tests/peer-transport.test.mjs:11:1 +✖ proof receives actual peer, cap traffic never invokes helper and transient cap disconnects (9.757279ms) + AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value: + + assert.ok(disconnected.includes('transient')) + + at TestContext. (file:///mnt/storage/scratch/tmp/gHx4/g196-mut-8ogds2/packages/bus/tests/peer-transport.test.mjs:18:52) + at process.processTicksAndRejections (node:internal/process/task_queues:104:5) + at async Test.run (node:internal/test_runner/test:1409:7) + at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) { + generatedMessage: true, + code: 'ERR_ASSERTION', + actual: false, + expected: true, + operator: '==', + diff: 'simple' + } + +test at packages/bus/tests/peer-transport.test.mjs:46:1 +✖ asynchronous proof calls release their transient session on success, failure and timeout (2.42083ms) + AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal: + + actual - expected + + + [] + - [ + - 'success' + - ] + + at TestContext. (file:///mnt/storage/scratch/tmp/gHx4/g196-mut-8ogds2/packages/bus/tests/peer-transport.test.mjs:56:11) + at process.processTicksAndRejections (node:internal/process/task_queues:104:5) + at async Test.run (node:internal/test_runner/test:1409:7) + at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) { + generatedMessage: true, + code: 'ERR_ASSERTION', + actual: [], + expected: [ 'success' ], + operator: 'deepStrictEqual', + diff: 'simple' + } diff --git a/agents/gander/work/queue-196/r4/gate/killers/M17.txt b/agents/gander/work/queue-196/r4/gate/killers/M17.txt new file mode 100644 index 000000000..46c908ee7 --- /dev/null +++ b/agents/gander/work/queue-196/r4/gate/killers/M17.txt @@ -0,0 +1,67 @@ +CLEAR (current driver ancestors excluded) +✖ the tester binds only when the business sets bus.tester to exactly true (15.529676ms) +✔ a business may not name a role tester, so the tester address is never a role (17.048772ms) +✔ every verb outside the tester list refuses tester-refused and is recorded against the tester (35.981662ms) +✔ a tester message is from tester, needs no prefix, and writes no human.input or authority (15.121114ms) +✔ a tester message to a role no run holds refuses tester-target-not-running and stores nothing (9.568351ms) +✔ a tester message is refused while the run is only launched, and routes once it claims (12.81092ms) +✔ a human message to a role no run holds still waits and tells launch.by (10.797551ms) +✔ a role answers a tester only in reply to a tester message, and the answer never reaches the human (20.81123ms) +✔ the tester reads the human views a reader reads (23.440112ms) +✔ tester proof binds its own CLI, start time and nonce, refuses a managed run and allows an agent (1.235067ms) +✔ neither CLI's nonce proves the other: each proof is bound to its own CLI and nonce variable (0.35141ms) +✔ testerNonce reads only the tester's variable and gives null on any read error (0.185262ms) +✔ an envelope carries exactly one of cap, human and tester; no tester authenticator refuses (89.955842ms) +✖ tester-cli.mjs binds through the runtime when the switch is on, and refuses off or under a run marker (996.323635ms) +ℹ tests 14 +ℹ suites 0 +ℹ pass 12 +ℹ fail 2 +ℹ cancelled 0 +ℹ skipped 0 +ℹ todo 0 +ℹ duration_ms 1342.918342 + +✖ failing tests: + +test at packages/bus/tests/tester.test.mjs:44:1 +✖ the tester binds only when the business sets bus.tester to exactly true (15.529676ms) + AssertionError [ERR_ASSERTION]: Missing expected exception: null + at TestContext. (file:///mnt/storage/scratch/tmp/gHx4/g196-mut-8ogds2/packages/bus/tests/tester.test.mjs:47:12) + at Test.runInAsyncScope (node:async_hooks:226:14) + at Test.run (node:internal/test_runner/test:1402:25) + at Test.start (node:internal/test_runner/test:1262:17) + at startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) { + generatedMessage: false, + code: 'ERR_ASSERTION', + actual: undefined, + expected: { code: 'tester-off' }, + operator: 'throws', + diff: 'simple' + } + +test at packages/bus/tests/tester.test.mjs:427:1 +✖ tester-cli.mjs binds through the runtime when the switch is on, and refuses off or under a run marker (996.323635ms) + AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal: + + actual - expected + + { + + err: '', + + out: '[]', + + status: 0 + - err: 'tester-off', + - out: '', + - status: 2 + } + + at TestContext. (file:///mnt/storage/scratch/tmp/gHx4/g196-mut-8ogds2/packages/bus/tests/tester.test.mjs:448:10) + at process.processTicksAndRejections (node:internal/process/task_queues:104:5) + at async Test.run (node:internal/test_runner/test:1409:7) + at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) { + generatedMessage: true, + code: 'ERR_ASSERTION', + actual: { status: 0, out: '[]', err: '' }, + expected: { status: 2, out: '', err: 'tester-off' }, + operator: 'deepStrictEqual', + diff: 'simple' + } diff --git a/agents/gander/work/queue-196/r4/gate/killers/M22.txt b/agents/gander/work/queue-196/r4/gate/killers/M22.txt new file mode 100644 index 000000000..fe932de08 --- /dev/null +++ b/agents/gander/work/queue-196/r4/gate/killers/M22.txt @@ -0,0 +1,33 @@ +CLEAR (current driver ancestors excluded) +✖ proof receives actual peer, cap traffic never invokes helper and transient cap disconnects (7.094815ms) +✔ proof helper error and disconnect during verification never dispatch or bind (1.83943ms) +✔ Client receives explicit proof refusal codes without dispatch, not outcome-unknown (42.771345ms) +✔ asynchronous proof calls release their transient session on success, failure and timeout (28.445739ms) +ℹ tests 4 +ℹ suites 0 +ℹ pass 3 +ℹ fail 1 +ℹ cancelled 0 +ℹ skipped 0 +ℹ todo 0 +ℹ duration_ms 138.603552 + +✖ failing tests: + +test at packages/bus/tests/peer-transport.test.mjs:11:1 +✖ proof receives actual peer, cap traffic never invokes helper and transient cap disconnects (7.094815ms) + AssertionError [ERR_ASSERTION]: Expected values to be strictly equal: + + 2 !== 1 + + at TestContext. (file:///mnt/storage/scratch/tmp/gHx4/g196-mut-8ogds2/packages/bus/tests/peer-transport.test.mjs:20:9) + at process.processTicksAndRejections (node:internal/process/task_queues:104:5) + at async Test.run (node:internal/test_runner/test:1409:7) + at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) { + generatedMessage: true, + code: 'ERR_ASSERTION', + actual: 2, + expected: 1, + operator: 'strictEqual', + diff: 'simple' + } diff --git a/agents/gander/work/queue-196/r4/gate/killers/results.json b/agents/gander/work/queue-196/r4/gate/killers/results.json new file mode 100644 index 000000000..bc722f55f --- /dev/null +++ b/agents/gander/work/queue-196/r4/gate/killers/results.json @@ -0,0 +1,74 @@ +[ + { + "id": "M13", + "description": "transient cap leaked", + "test": "packages/bus/tests/peer-transport.test.mjs", + "args": [ + "--test", + "packages/bus/tests/peer-transport.test.mjs" + ], + "status": 1, + "signal": null, + "killed": true, + "timedOut": false, + "wallSeconds": 1.781, + "baseWallSeconds": 1.840884985, + "baseArgs": [ + "packages/bus/tests/peer-transport.test.mjs" + ], + "restoredGitStatus": "", + "timeoutSeconds": 60, + "timeoutKillAfterSeconds": 2, + "processGroupTimeout": true, + "syntaxStatus": 0, + "restoredSha256": "7be306c830aa98763b34b329995b40e9df443483fe20fcd69100a3acb6311bd6" + }, + { + "id": "M17", + "description": "tester switch ignored", + "test": "packages/bus/tests/tester.test.mjs", + "args": [ + "--test", + "packages/bus/tests/tester.test.mjs" + ], + "status": 1, + "signal": null, + "killed": true, + "timedOut": false, + "wallSeconds": 2.94, + "baseWallSeconds": 3.049434243, + "baseArgs": [ + "packages/bus/tests/tester.test.mjs" + ], + "restoredGitStatus": "", + "timeoutSeconds": 60, + "timeoutKillAfterSeconds": 2, + "processGroupTimeout": true, + "syntaxStatus": 0, + "restoredSha256": "762234259d72db87aff510751fe14003099759ae37bc8eaf14f1ea1de61d2005" + }, + { + "id": "M22", + "description": "cap requests invoke helper", + "test": "packages/bus/tests/peer-transport.test.mjs", + "args": [ + "--test", + "packages/bus/tests/peer-transport.test.mjs" + ], + "status": 1, + "signal": null, + "killed": true, + "timedOut": false, + "wallSeconds": 1.766, + "baseWallSeconds": 1.840884985, + "baseArgs": [ + "packages/bus/tests/peer-transport.test.mjs" + ], + "restoredGitStatus": "", + "timeoutSeconds": 60, + "timeoutKillAfterSeconds": 2, + "processGroupTimeout": true, + "syntaxStatus": 0, + "restoredSha256": "7be306c830aa98763b34b329995b40e9df443483fe20fcd69100a3acb6311bd6" + } +] diff --git a/agents/gander/work/queue-196/r4/gate/process-sweep.json b/agents/gander/work/queue-196/r4/gate/process-sweep.json new file mode 100644 index 000000000..13ede80fb --- /dev/null +++ b/agents/gander/work/queue-196/r4/gate/process-sweep.json @@ -0,0 +1,55 @@ +{ + "scope": [ + "/mnt/storage/scratch/tmp/g196-tree-tn651z", + "/mnt/storage/scratch/tmp/gHx4", + "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196" + ], + "leftovers": [ + { + "pid": 748279, + "name": "npm exec @playw", + "cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196" + }, + { + "pid": 748302, + "name": "node-MainThread", + "cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196" + }, + { + "pid": 748306, + "name": "npm exec @model", + "cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196" + }, + { + "pid": 748314, + "name": "npm exec chrome", + "cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196" + }, + { + "pid": 748494, + "name": "chrome-devtools", + "cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196" + }, + { + "pid": 748496, + "name": "node-MainThread", + "cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196" + }, + { + "pid": 748506, + "name": "node-MainThread", + "cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196" + }, + { + "pid": 748547, + "name": "node-MainThread", + "cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196" + }, + { + "pid": 749160, + "name": "codex-code-mode", + "cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196" + } + ], + "count": 9 +} diff --git a/agents/gander/work/queue-196/r4/gate/sso-driver.log b/agents/gander/work/queue-196/r4/gate/sso-driver.log new file mode 100644 index 000000000..3a3d45b75 --- /dev/null +++ b/agents/gander/work/queue-196/r4/gate/sso-driver.log @@ -0,0 +1,2 @@ +{"name":"sso-red","status":1,"signal":null,"seconds":4.186297276,"timedOut":false} +{"name":"sso-green","status":0,"signal":null,"seconds":4.327955846,"timedOut":false} diff --git a/agents/gander/work/queue-196/r4/gate/sso-green.log b/agents/gander/work/queue-196/r4/gate/sso-green.log new file mode 100644 index 000000000..0ebc85e36 --- /dev/null +++ b/agents/gander/work/queue-196/r4/gate/sso-green.log @@ -0,0 +1,9 @@ +✔ row196 SSO socket conversion pins pointer and unit argv order without send (2284.385768ms) +ℹ tests 1 +ℹ suites 0 +ℹ pass 1 +ℹ fail 0 +ℹ cancelled 0 +ℹ skipped 0 +ℹ todo 0 +ℹ duration_ms 2988.023223 diff --git a/agents/gander/work/queue-196/r4/gate/sso-proof.mjs b/agents/gander/work/queue-196/r4/gate/sso-proof.mjs new file mode 100644 index 000000000..26a3e2aac --- /dev/null +++ b/agents/gander/work/queue-196/r4/gate/sso-proof.mjs @@ -0,0 +1,15 @@ +import {readFileSync,writeFileSync} from 'node:fs';import {spawnSync,execFileSync} from 'node:child_process';import {performance} from 'node:perf_hooks';import {createHash} from 'node:crypto'; +const root='/mnt/storage/scratch/tmp/g196-tree-tn651z',out=new URL('.',import.meta.url).pathname,file=root+'/scripts/stack-release.sh'; +const original=readFileSync(file,'utf8'),needle='case "${kept[i]}" in --send | --tester-port | --tester-socket) break'; +if(original.split(needle).length!==2)throw Error('SSO target not unique'); +const results=[]; +function run(name){const start=performance.now();const r=spawnSync('timeout',['--signal=TERM','--kill-after=2s','60s','bash','-c','set -o pipefail; python3 "$G196_BUSY" && "$G196_NODE" --test --test-name-pattern="row196 SSO socket" packages/cli/tests/stack-release.test.mjs 2>&1 | tee "$G196_LOG"'],{cwd:root,env:{...process.env,G196_NODE:process.execPath,G196_LOG:out+name+'.log'},encoding:'utf8',maxBuffer:4*1024*1024});const log=(r.stdout??'')+(r.stderr??'');const result={name,status:r.status,signal:r.signal,seconds:(performance.now()-start)/1000,timedOut:[124,137].includes(r.status)};results.push(result);writeFileSync(out+'sso-results.json',JSON.stringify(results,null,2)+'\n');console.log(JSON.stringify(result));return {r,log,result};} +try{ + writeFileSync(file,original.replace(needle,'case "${kept[i]}" in --send | --tester-port) break')); + const {r,log}=run('sso-red'); + if(r.status!==1||!log.includes('AssertionError')||!log.includes('--sso')||!log.includes('--tester-socket'))throw Error('unexpected RED result; stop'); +}finally{writeFileSync(file,original);} +const {r,result}=run('sso-green'); +if(r.status!==0||result.seconds>30)throw Error('GREEN failed or over 30 seconds; stop'); +const clean=execFileSync('git',['status','--porcelain','--','.',':!node_modules'],{cwd:root,encoding:'utf8'});if(clean)throw Error('candidate dirty: '+clean); +writeFileSync(out+'sso-restoration.json',JSON.stringify({sha256:createHash('sha256').update(readFileSync(file)).digest('hex'),gitStatus:clean},null,2)+'\n'); diff --git a/agents/gander/work/queue-196/r4/gate/sso-red.log b/agents/gander/work/queue-196/r4/gate/sso-red.log new file mode 100644 index 000000000..b29a159f7 --- /dev/null +++ b/agents/gander/work/queue-196/r4/gate/sso-red.log @@ -0,0 +1,37 @@ +✖ row196 SSO socket conversion pins pointer and unit argv order without send (2065.614409ms) +ℹ tests 1 +ℹ suites 0 +ℹ pass 0 +ℹ fail 1 +ℹ cancelled 0 +ℹ skipped 0 +ℹ todo 0 +ℹ duration_ms 2822.203375 + +✖ failing tests: + +test at packages/cli/tests/stack-release.test.mjs:2305:1 +✖ row196 SSO socket conversion pins pointer and unit argv order without send (2065.614409ms) + AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal: + + actual - expected + + [ + '--port', + '41171', + '--business', + 'acme', + + '--tester-socket', + '--sso', + - '--tester-socket' + ] + + at TestContext. (file:///mnt/storage/scratch/tmp/g196-tree-tn651z/packages/cli/tests/stack-release.test.mjs:2316:9) + at async Test.run (node:internal/test_runner/test:1409:7) + at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) { + generatedMessage: true, + code: 'ERR_ASSERTION', + actual: [ '--port', '41171', '--business', 'acme', '--tester-socket', '--sso' ], + expected: [ '--port', '41171', '--business', 'acme', '--sso', '--tester-socket' ], + operator: 'deepStrictEqual', + diff: 'simple' + } diff --git a/agents/gander/work/queue-196/r4/gate/sso-restoration.json b/agents/gander/work/queue-196/r4/gate/sso-restoration.json new file mode 100644 index 000000000..ba068c649 --- /dev/null +++ b/agents/gander/work/queue-196/r4/gate/sso-restoration.json @@ -0,0 +1,4 @@ +{ + "sha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2", + "gitStatus": "" +} diff --git a/agents/gander/work/queue-196/r4/gate/sso-results.json b/agents/gander/work/queue-196/r4/gate/sso-results.json new file mode 100644 index 000000000..9a51e82d8 --- /dev/null +++ b/agents/gander/work/queue-196/r4/gate/sso-results.json @@ -0,0 +1,16 @@ +[ + { + "name": "sso-red", + "status": 1, + "signal": null, + "seconds": 4.186297276, + "timedOut": false + }, + { + "name": "sso-green", + "status": 0, + "signal": null, + "seconds": 4.327955846, + "timedOut": false + } +] diff --git a/agents/gander/work/queue-196/r4/gate/target-shas.json b/agents/gander/work/queue-196/r4/gate/target-shas.json new file mode 100644 index 000000000..1533795a2 --- /dev/null +++ b/agents/gander/work/queue-196/r4/gate/target-shas.json @@ -0,0 +1,212 @@ +[ + { + "id": "M1", + "file": "packages/webui/src/serve.mjs", + "r3": "da624f188c69e016ff82e1d1dcae1c579e68a57f0f25d773bb5d8bca56b80ee1", + "r4": "da624f188c69e016ff82e1d1dcae1c579e68a57f0f25d773bb5d8bca56b80ee1", + "changed": false + }, + { + "id": "M2", + "file": "packages/webui/src/tester-socket.mjs", + "r3": "1c1fe0c795adac97f28502564a75f26d5666d9be5ae51169f7dd5bb7741fad16", + "r4": "1c1fe0c795adac97f28502564a75f26d5666d9be5ae51169f7dd5bb7741fad16", + "changed": false + }, + { + "id": "M3", + "file": "packages/webui/src/serve.mjs", + "r3": "da624f188c69e016ff82e1d1dcae1c579e68a57f0f25d773bb5d8bca56b80ee1", + "r4": "da624f188c69e016ff82e1d1dcae1c579e68a57f0f25d773bb5d8bca56b80ee1", + "changed": false + }, + { + "id": "M4", + "file": "packages/bus/src/principal.mjs", + "r3": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd", + "r4": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd", + "changed": false + }, + { + "id": "M5", + "file": "packages/bus/src/peercred.mjs", + "r3": "29c88655e8b9aed8db604573c9213fd9f3c40ef35ff04f4eda8fbe8f1b8a32d7", + "r4": "29c88655e8b9aed8db604573c9213fd9f3c40ef35ff04f4eda8fbe8f1b8a32d7", + "changed": false + }, + { + "id": "M6", + "file": "packages/bus/src/principal.mjs", + "r3": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd", + "r4": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd", + "changed": false + }, + { + "id": "M7", + "file": "packages/webui/src/tester-socket.mjs", + "r3": "1c1fe0c795adac97f28502564a75f26d5666d9be5ae51169f7dd5bb7741fad16", + "r4": "1c1fe0c795adac97f28502564a75f26d5666d9be5ae51169f7dd5bb7741fad16", + "changed": false + }, + { + "id": "M8", + "file": "packages/bus/src/human.mjs", + "r3": "0c6d96abe4607cba0b02b0638a2fc217ff8135bac9a47761a0ef015fbe9d3079", + "r4": "0c6d96abe4607cba0b02b0638a2fc217ff8135bac9a47761a0ef015fbe9d3079", + "changed": false + }, + { + "id": "M9", + "file": "packages/bus/src/human.mjs", + "r3": "0c6d96abe4607cba0b02b0638a2fc217ff8135bac9a47761a0ef015fbe9d3079", + "r4": "0c6d96abe4607cba0b02b0638a2fc217ff8135bac9a47761a0ef015fbe9d3079", + "changed": false + }, + { + "id": "M10", + "file": "packages/bus/src/principal.mjs", + "r3": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd", + "r4": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd", + "changed": false + }, + { + "id": "M11", + "file": "packages/bus/src/principal.mjs", + "r3": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd", + "r4": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd", + "changed": false + }, + { + "id": "M12", + "file": "packages/bus/src/human.mjs", + "r3": "0c6d96abe4607cba0b02b0638a2fc217ff8135bac9a47761a0ef015fbe9d3079", + "r4": "0c6d96abe4607cba0b02b0638a2fc217ff8135bac9a47761a0ef015fbe9d3079", + "changed": false + }, + { + "id": "M13", + "file": "packages/bus/src/server.mjs", + "r3": "830faa9a76150b59189cde395ec8deeb768e4b0d45ed262a57bb6fc6e459abb4", + "r4": "7be306c830aa98763b34b329995b40e9df443483fe20fcd69100a3acb6311bd6", + "changed": true + }, + { + "id": "M14", + "file": "packages/bus/src/principal.mjs", + "r3": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd", + "r4": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd", + "changed": false + }, + { + "id": "M15", + "file": "scripts/stack-release.sh", + "r3": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2", + "r4": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2", + "changed": false + }, + { + "id": "M16", + "file": "scripts/stack-release.sh", + "r3": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2", + "r4": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2", + "changed": false + }, + { + "id": "M17", + "file": "packages/bus/src/broker.mjs", + "r3": "e6f33bac95a40c9d52d67f297eec361cd0f30da5d3c28057468ee5d56c3ae7fc", + "r4": "762234259d72db87aff510751fe14003099759ae37bc8eaf14f1ea1de61d2005", + "changed": true + }, + { + "id": "M18", + "file": "packages/bus/src/principal.mjs", + "r3": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd", + "r4": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd", + "changed": false + }, + { + "id": "M19", + "file": "packages/cli/src/tester-http.mjs", + "r3": "4bd7bdf0898844684ebf9444b110d2c5b6fa874b2681183e54f1f62f97823192", + "r4": "4bd7bdf0898844684ebf9444b110d2c5b6fa874b2681183e54f1f62f97823192", + "changed": false + }, + { + "id": "M20", + "file": "packages/bus/src/peercred.mjs", + "r3": "29c88655e8b9aed8db604573c9213fd9f3c40ef35ff04f4eda8fbe8f1b8a32d7", + "r4": "29c88655e8b9aed8db604573c9213fd9f3c40ef35ff04f4eda8fbe8f1b8a32d7", + "changed": false + }, + { + "id": "M21", + "file": "packages/bus/src/interpreter.mjs", + "r3": "d5d98a9133a1b449acc48143fd559d890a470c6ea210b30b9b70e491e6cd855a", + "r4": "d5d98a9133a1b449acc48143fd559d890a470c6ea210b30b9b70e491e6cd855a", + "changed": false + }, + { + "id": "M22", + "file": "packages/bus/src/server.mjs", + "r3": "830faa9a76150b59189cde395ec8deeb768e4b0d45ed262a57bb6fc6e459abb4", + "r4": "7be306c830aa98763b34b329995b40e9df443483fe20fcd69100a3acb6311bd6", + "changed": true + }, + { + "id": "M23", + "file": "packages/bus/src/interpreter.mjs", + "r3": "d5d98a9133a1b449acc48143fd559d890a470c6ea210b30b9b70e491e6cd855a", + "r4": "d5d98a9133a1b449acc48143fd559d890a470c6ea210b30b9b70e491e6cd855a", + "changed": false + }, + { + "id": "M24", + "file": "packages/webui/src/tester-socket.mjs", + "r3": "1c1fe0c795adac97f28502564a75f26d5666d9be5ae51169f7dd5bb7741fad16", + "r4": "1c1fe0c795adac97f28502564a75f26d5666d9be5ae51169f7dd5bb7741fad16", + "changed": false + }, + { + "id": "M25", + "file": "packages/bus/src/interpreter.mjs", + "r3": "d5d98a9133a1b449acc48143fd559d890a470c6ea210b30b9b70e491e6cd855a", + "r4": "d5d98a9133a1b449acc48143fd559d890a470c6ea210b30b9b70e491e6cd855a", + "changed": false + }, + { + "id": "M26", + "file": "packages/bus/src/peercred.mjs", + "r3": "29c88655e8b9aed8db604573c9213fd9f3c40ef35ff04f4eda8fbe8f1b8a32d7", + "r4": "29c88655e8b9aed8db604573c9213fd9f3c40ef35ff04f4eda8fbe8f1b8a32d7", + "changed": false + }, + { + "id": "M27", + "file": "packages/bus/src/peercred.mjs", + "r3": "29c88655e8b9aed8db604573c9213fd9f3c40ef35ff04f4eda8fbe8f1b8a32d7", + "r4": "29c88655e8b9aed8db604573c9213fd9f3c40ef35ff04f4eda8fbe8f1b8a32d7", + "changed": false + }, + { + "id": "M28", + "file": "scripts/stack-release.sh", + "r3": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2", + "r4": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2", + "changed": false + }, + { + "id": "M28b", + "file": "scripts/stack-release.sh", + "r3": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2", + "r4": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2", + "changed": false + }, + { + "id": "M29", + "file": "scripts/stack-release.sh", + "r3": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2", + "r4": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2", + "changed": false + } +] diff --git a/agents/gander/work/queue-196/r4/gate/target-shas.mjs b/agents/gander/work/queue-196/r4/gate/target-shas.mjs new file mode 100644 index 000000000..24c142835 --- /dev/null +++ b/agents/gander/work/queue-196/r4/gate/target-shas.mjs @@ -0,0 +1,5 @@ +import {readFileSync,writeFileSync} from 'node:fs';import {execFileSync} from 'node:child_process';import vm from 'node:vm';import {createHash} from 'node:crypto'; +const source=readFileSync('agents/gander/work/queue-196/r2/driver.mjs','utf8'),context=vm.createContext({});vm.runInContext(source.slice(source.indexOf("const p='"),source.indexOf('const hash='))+';globalThis.rows=specs;',context); +const sha=x=>createHash('sha256').update(x).digest('hex'); +const rows=context.rows.map(([id,file])=>{const r3=sha(execFileSync('git',['show','b1076c8b8:'+file])),r4=sha(execFileSync('git',['show','f8a59e6aa:'+file]));return{id,file,r3,r4,changed:r3!==r4};}); +writeFileSync('agents/gander/work/queue-196/r4/gate/target-shas.json',JSON.stringify(rows,null,2)+'\n');console.log(JSON.stringify({changed:rows.filter(r=>r.changed),unchanged:rows.filter(r=>!r.changed).map(r=>r.id)},null,2)); diff --git a/agents/gander/work/queue-196/r4/gate/tmpdir.txt b/agents/gander/work/queue-196/r4/gate/tmpdir.txt new file mode 100644 index 000000000..bbeb4267a --- /dev/null +++ b/agents/gander/work/queue-196/r4/gate/tmpdir.txt @@ -0,0 +1 @@ +/mnt/storage/scratch/tmp/gHx4 diff --git a/agents/gander/work/queue-196/r4/gate/webui.log b/agents/gander/work/queue-196/r4/gate/webui.log new file mode 100644 index 000000000..e5ae004b8 --- /dev/null +++ b/agents/gander/work/queue-196/r4/gate/webui.log @@ -0,0 +1,1863 @@ +CLEAR (current driver ancestors excluded) +TAP version 13 +# Subtest: Q169 the signed-in human names a seat and stops the assistant, one bus call each, logged with the user +ok 1 - Q169 the signed-in human names a seat and stops the assistant, one bus call each, logged with the user + --- + duration_ms: 17.978309 + type: 'test' + ... +# Subtest: Q169 the name and stop routes need send on, the public name, the user, the exact Origin and same-origin Fetch Metadata +ok 2 - Q169 the name and stop routes need send on, the public name, the user, the exact Origin and same-origin Fetch Metadata + --- + duration_ms: 9.456783 + type: 'test' + ... +# Subtest: Q169 the name and stop routes take JSON within 4 KiB and only their own keys, all text +ok 3 - Q169 the name and stop routes take JSON within 4 KiB and only their own keys, all text + --- + duration_ms: 5.61875 + type: 'test' + ... +# Subtest: Row 167 a null body on the name and stop routes is 400 invalid-request with no write, and the next request is answered +ok 4 - Row 167 a null body on the name and stop routes is 400 invalid-request with no write, and the next request is answered + --- + duration_ms: 2.473439 + type: 'test' + ... +# Subtest: Q169 a bus refusal says nothing changed; a lost or odd answer says the change may have been made +ok 5 - Q169 a bus refusal says nothing changed; a lost or odd answer says the change may have been made + --- + duration_ms: 5.737334 + type: 'test' + ... +# Subtest: Q169 the names read is a bus read like the others +ok 6 - Q169 the names read is a bus read like the others + --- + duration_ms: 1.254301 + type: 'test' + ... +# Subtest: the Board: held roles with no machine sessions, a claim with no address, the toggle kept across a reload, and Message addressed to the role +ok 7 - the Board: held roles with no machine sessions, a claim with no address, the toggle kept across a reload, and Message addressed to the role + --- + duration_ms: 3348.623052 + type: 'test' + ... +# Subtest: a Seen click while a Board read is in flight waits for that read, then posts +ok 8 - a Seen click while a Board read is in flight waits for that read, then posts + --- + duration_ms: 1261.22901 + type: 'test' + ... +# Subtest: a redirect answer on a Board read, a bus read, a conversation read, a board POST, a module read and a send signs the page out: one line, nothing stale, no further reads +ok 9 - a redirect answer on a Board read, a bus read, a conversation read, a board POST, a module read and a send signs the page out: one line, nothing stale, no further reads + --- + duration_ms: 5072.744998 + type: 'test' + ... +# Subtest: browser edge states: loading, empty, malformed, stale, hostile/long values, in-flight reply and appearance fallback +ok 10 - browser edge states: loading, empty, malformed, stale, hostile/long values, in-flight reply and appearance fallback + --- + duration_ms: 1494.909212 + type: 'test' + ... +# Rendered contrast: {"failures":[],"count":330,"lowest":4.504658476260286} +# Subtest: served Console browser: real board fixtures, keyboard, drafts, receipts, themes, 320px and failures +ok 11 - served Console browser: real board fixtures, keyboard, drafts, receipts, themes, 320px and failures + --- + duration_ms: 1355.057037 + type: 'test' + ... +# Subtest: the README says a refused field table names the file or the key at fault, never a path +ok 12 - the README says a refused field table names the file or the key at fault, never a path + --- + duration_ms: 1.01869 + type: 'test' + ... +# Subtest: S5 pages in a browser: real broker rows, inert text, Copy, routes, failures, layout and no writes +ok 13 - S5 pages in a browser: real broker rows, inert text, Copy, routes, failures, layout and no writes + --- + duration_ms: 3071.980246 + type: 'test' + ... +# Subtest: bus routes serve the four reads from the reader view, unescaped JSON for the page to escape +ok 14 - bus routes serve the four reads from the reader view, unescaped JSON for the page to escape + --- + duration_ms: 73.265726 + type: 'test' + ... +# Subtest: decisions route serves the roles and recent lists from the reader view +ok 15 - decisions route serves the roles and recent lists from the reader view + --- + duration_ms: 29.014637 + type: 'test' + ... +# Subtest: credentials route serves the broker credential status from the reader view +ok 16 - credentials route serves the broker credential status from the reader view + --- + duration_ms: 9.933275 + type: 'test' + ... +# Subtest: replies route serves the replies to one message from the reader view +ok 17 - replies route serves the replies to one message from the reader view + --- + duration_ms: 29.61178 + type: 'test' + ... +# Subtest: bus routes are GET-only, have no write verb, and keep the same-origin checks +ok 18 - bus routes are GET-only, have no write verb, and keep the same-origin checks + --- + duration_ms: 48.513626 + type: 'test' + ... +# Subtest: bus refusals map to statuses and never carry a path or a stack +ok 19 - bus refusals map to statuses and never carry a path or a stack + --- + duration_ms: 26.823265 + type: 'test' + ... +# Subtest: humanCall speaks the human transport protocol without blocking the server +ok 20 - humanCall speaks the human transport protocol without blocking the server + --- + duration_ms: 1656.849024 + type: 'test' + ... +# Subtest: busReader takes --business, else the live bus host, else refuses +ok 21 - busReader takes --business, else the live bus host, else refuses + --- + duration_ms: 154.934663 + type: 'test' + ... +# Subtest: humanCall kills a transport that runs past its timeout +ok 22 - humanCall kills a transport that runs past its timeout + --- + duration_ms: 528.52093 + type: 'test' + ... +# Subtest: serve refuses a --business value that is not a business id +ok 23 - serve refuses a --business value that is not a business id + --- + duration_ms: 248.866474 + type: 'test' + ... +# Subtest: WebUI channel off returns 503 and named recovery for every chat route without a chat operation +ok 24 - WebUI channel off returns 503 and named recovery for every chat route without a chat operation + --- + duration_ms: 29.451551 + type: 'test' + ... +# Subtest: WebUI only selection keeps web chat enabled while retaining the old read envelope +ok 25 - WebUI only selection keeps web chat enabled while retaining the old read envelope + --- + duration_ms: 2.425778 + type: 'test' + ... +# Subtest: WebUI channel-disabled recovery text is fixed and never echoes transport text +ok 26 - WebUI channel-disabled recovery text is fixed and never echoes transport text + --- + duration_ms: 1.293564 + type: 'test' + ... +# Subtest: chat browser: list/create named projects and threads, hostile labels inert and no implicit writes +ok 27 - chat browser: list/create named projects and threads, hostile labels inert and no implicit writes + --- + duration_ms: 679.465301 + type: 'test' + ... +# Subtest: chat browser: thread drafts, receipts and cursor history stay isolated; refresh never writes +ok 28 - chat browser: thread drafts, receipts and cursor history stay isolated; refresh never writes + --- + duration_ms: 677.630706 + type: 'test' + ... +# Subtest: chat browser: uncertain writes retain draft, ownership refusal clears it, read-only cannot send +ok 29 - chat browser: uncertain writes retain draft, ownership refusal clears it, read-only cannot send + --- + duration_ms: 778.833802 + type: 'test' + ... +# Subtest: chat browser: a late read from A cannot paint B; sign-out clears private state and stops reads +ok 30 - chat browser: a late read from A cannot paint B; sign-out clears private state and stops reads + --- + duration_ms: 964.457872 + type: 'test' + ... +# Subtest: chat browser: page forward and deduplicate replies; pending and byte-limit submissions do not duplicate +ok 31 - chat browser: page forward and deduplicate replies; pending and byte-limit submissions do not duplicate + --- + duration_ms: 599.335846 + type: 'test' + ... +# Subtest: chat browser: scrolled history stays put, New messages and an own send return to the tail +ok 32 - chat browser: scrolled history stays put, New messages and an own send return to the tail + --- + duration_ms: 721.660743 + type: 'test' + ... +# Subtest: chat browser: automatic polling follows a reply without a POST or a lost draft +ok 33 - chat browser: automatic polling follows a reply without a POST or a lost draft + --- + duration_ms: 10778.521579 + type: 'test' + ... +# Subtest: chat browser: display stays bounded while every forward page remains reachable +ok 34 - chat browser: display stays bounded while every forward page remains reachable + --- + duration_ms: 591.501424 + type: 'test' + ... +# Subtest: chat browser: a confirmed visible message replaces its pending receipt; malformed receipts stay unknown +ok 35 - chat browser: a confirmed visible message replaces its pending receipt; malformed receipts stay unknown + --- + duration_ms: 722.357815 + type: 'test' + ... +# Subtest: chat browser: a refusal elsewhere forgets private chat drafts +ok 36 - chat browser: a refusal elsewhere forgets private chat drafts + --- + duration_ms: 743.741638 + type: 'test' + ... +# Subtest: chat browser: a late project creation receipt cannot navigate away from another thread +ok 37 - chat browser: a late project creation receipt cannot navigate away from another thread + --- + duration_ms: 782.950115 + type: 'test' + ... +# Subtest: chat reads map only fixed verbs, strict forward paging and pure GET +ok 38 - chat reads map only fixed verbs, strict forward paging and pure GET + --- + duration_ms: 29.368329 + type: 'test' + ... +# Subtest: chat refuses malformed and repeated query/id values before transport +ok 39 - chat refuses malformed and repeated query/id values before transport + --- + duration_ms: 6.845363 + type: 'test' + ... +# Subtest: chat project.create: one verified write, fixed identity/class and private log +ok 40 - chat project.create: one verified write, fixed identity/class and private log + --- + duration_ms: 3.248865 + type: 'test' + ... +# Subtest: chat project.create: each existing Console write fence makes zero bus calls +ok 41 - chat project.create: each existing Console write fence makes zero bus calls + --- + duration_ms: 10.770009 + type: 'test' + ... +# Subtest: chat project.create: refusal or lost/malformed receipt never retries or invents success +ok 42 - chat project.create: refusal or lost/malformed receipt never retries or invents success + --- + duration_ms: 4.858521 + type: 'test' + ... +# Subtest: chat thread.create: one verified write, fixed identity/class and private log +ok 43 - chat thread.create: one verified write, fixed identity/class and private log + --- + duration_ms: 1.491124 + type: 'test' + ... +# Subtest: chat thread.create: each existing Console write fence makes zero bus calls +ok 44 - chat thread.create: each existing Console write fence makes zero bus calls + --- + duration_ms: 7.311318 + type: 'test' + ... +# Subtest: chat thread.create: refusal or lost/malformed receipt never retries or invents success +ok 45 - chat thread.create: refusal or lost/malformed receipt never retries or invents success + --- + duration_ms: 4.823706 + type: 'test' + ... +# Subtest: chat thread.send: one verified write, fixed identity/class and private log +ok 46 - chat thread.send: one verified write, fixed identity/class and private log + --- + duration_ms: 1.348593 + type: 'test' + ... +# Subtest: chat thread.send: each existing Console write fence makes zero bus calls +ok 47 - chat thread.send: each existing Console write fence makes zero bus calls + --- + duration_ms: 6.150837 + type: 'test' + ... +# Subtest: chat thread.send: refusal or lost/malformed receipt never retries or invents success +ok 48 - chat thread.send: refusal or lost/malformed receipt never retries or invents success + --- + duration_ms: 3.62013 + type: 'test' + ... +# Subtest: chat thread.open: one verified write, fixed identity/class and private log +ok 49 - chat thread.open: one verified write, fixed identity/class and private log + --- + duration_ms: 1.257795 + type: 'test' + ... +# Subtest: chat thread.open: each existing Console write fence makes zero bus calls +ok 50 - chat thread.open: each existing Console write fence makes zero bus calls + --- + duration_ms: 5.843322 + type: 'test' + ... +# Subtest: chat thread.open: refusal or lost/malformed receipt never retries or invents success +ok 51 - chat thread.open: refusal or lost/malformed receipt never retries or invents success + --- + duration_ms: 4.693351 + type: 'test' + ... +# Subtest: chat createThread receipt requires an instance even when its id is valid +ok 52 - chat createThread receipt requires an instance even when its id is valid + --- + duration_ms: 2.296938 + type: 'test' + ... +# Subtest: chat write receipts expose only the fields belonging to their operation +ok 53 - chat write receipts expose only the fields belonging to their operation + --- + duration_ms: 3.919029 + type: 'test' + ... +# Subtest: chat validates names, body, project and strict empty open payload +ok 54 - chat validates names, body, project and strict empty open payload + --- + duration_ms: 4.370027 + type: 'test' + ... +# Subtest: chat read failures redact ownership and refuse invalid transport arrays +ok 55 - chat read failures redact ownership and refuse invalid transport arrays + --- + duration_ms: 4.996399 + type: 'test' + ... +# Subtest: REQ-USER-2 real broker: owned catalog, create/name/filter, isolated history and 403/404 without mutations +ok 56 - REQ-USER-2 real broker: owned catalog, create/name/filter, isolated history and 403/404 without mutations + --- + duration_ms: 77.976494 + type: 'test' + ... +# Subtest: chat repeats every POST boundary even when called behind an admitted request +ok 57 - chat repeats every POST boundary even when called behind an admitted request + --- + duration_ms: 0.95251 + type: 'test' + ... +# Subtest: configured Console process injects chat through its existing human transport +ok 58 - configured Console process injects chat through its existing human transport + --- + duration_ms: 132.994704 + type: 'test' + ... +# Subtest: chat assets, GET purity, method and unknown-route refusals are explicit +ok 59 - chat assets, GET purity, method and unknown-route refusals are explicit + --- + duration_ms: 12.681837 + type: 'test' + ... +# Subtest: the chat seam names the transport it is given: the human one and the tester one both pass, anything else is a TypeError +ok 60 - the chat seam names the transport it is given: the human one and the tester one both pass, anything else is a TypeError + --- + duration_ms: 0.521595 + type: 'test' + ... +# Subtest: conversation view: full history, collapsed tools, hidden thinking, inert hostile content, malformed and reconcile markers +ok 61 - conversation view: full history, collapsed tools, hidden thinking, inert hostile content, malformed and reconcile markers + --- + duration_ms: 1177.123291 + type: 'test' + ... +# Subtest: conversation view: a fork keeps the open branch, says so, and opens the new one on request +ok 62 - conversation view: a fork keeps the open branch, says so, and opens the new one on request + --- + duration_ms: 1498.548815 + type: 'test' + ... +# Subtest: conversation view: a newer session with no readable history keeps the marker +ok 63 - conversation view: a newer session with no readable history keeps the marker + --- + duration_ms: 1067.300106 + type: 'test' + ... +# Subtest: conversation view: seats without history say so and offer no reply +ok 64 - conversation view: seats without history say so and offer no reply + --- + duration_ms: 865.672955 + type: 'test' + ... +# Subtest: Discord row through real board/WebUI: independent brake/liveness, no Reply, literal content +ok 65 - Discord row through real board/WebUI: independent brake/liveness, no Reply, literal content + --- + duration_ms: 756.365864 + type: 'test' + ... +# Subtest: the editor: the list, hostile markdown that runs nothing, the draft, and each save receipt +ok 66 - the editor: the list, hostile markdown that runs nothing, the draft, and each save receipt + --- + duration_ms: 1596.274731 + type: 'test' + ... +# Subtest: the Console's CSP stands and the editor runs under it; hostile markdown on the load path runs and loads nothing +ok 67 - the Console's CSP stands and the editor runs under it; hostile markdown on the load path runs and loads nothing + --- + duration_ms: 808.550205 + type: 'test' + ... +# Subtest: hostile content pasted into the editor runs and loads nothing, and a bad link target is refused in the link bar +ok 68 - hostile content pasted into the editor runs and loads nothing, and a bad link target is refused in the link bar + --- + duration_ms: 728.616744 + type: 'test' + ... +# Subtest: a pasted image span is kept only for a target the link gate accepts, and a save writes only those +ok 69 - a pasted image span is kept only for a target the link gate accepts, and a save writes only those + --- + duration_ms: 518.174522 + type: 'test' + ... +# Subtest: a switch of view reads nothing; a reload, and a trip away and back, each read the file exactly once +ok 70 - a switch of view reads nothing; a reload, and a trip away and back, each read the file exactly once + --- + duration_ms: 2498.952746 + type: 'test' + ... +# Subtest: an edit rewrites only the block touched; a save sends the rest byte for byte; the Source view carries the draft +ok 71 - an edit rewrites only the block touched; a save sends the rest byte for byte; the Source view carries the draft + --- + duration_ms: 964.035726 + type: 'test' + ... +# Subtest: a file the editor cannot write back byte for byte opens as Source, says so, cannot save, and the Visual button works once it can +ok 72 - a file the editor cannot write back byte for byte opens as Source, says so, cannot save, and the Visual button works once it can + --- + duration_ms: 1952.901271 + type: 'test' + ... +# Subtest: a link title pasted with line breaks in it is written on one line, so no HTML block comes of it +ok 73 - a link title pasted with line breaks in it is written on one line, so no HTML block comes of it + --- + duration_ms: 679.489654 + type: 'test' + ... +# Subtest: an image alt pasted with line breaks in it is written on one line, so no HTML block comes of it +ok 74 - an image alt pasted with line breaks in it is written on one line, so no HTML block comes of it + --- + duration_ms: 683.521049 + type: 'test' + ... +# Subtest: an image title pasted with line breaks in it is written on one line, so no HTML block comes of it +ok 75 - an image title pasted with line breaks in it is written on one line, so no HTML block comes of it + --- + duration_ms: 678.346211 + type: 'test' + ... +# Subtest: a code block info string pasted with line breaks in it is written on one line, so no HTML block comes of it +ok 76 - a code block info string pasted with line breaks in it is written on one line, so no HTML block comes of it + --- + duration_ms: 657.706945 + type: 'test' + ... +# Subtest: a link title holding a quote after a backslash then a tag is written with the backslash escaped, so the title stays closed +ok 77 - a link title holding a quote after a backslash then a tag is written with the backslash escaped, so the title stays closed + --- + duration_ms: 765.488716 + type: 'test' + ... +# Subtest: an image title holding a quote after a backslash then a tag is written with the backslash escaped, so the title stays closed +ok 78 - an image title holding a quote after a backslash then a tag is written with the backslash escaped, so the title stays closed + --- + duration_ms: 774.664771 + type: 'test' + ... +# Subtest: a link title holding a trailing backslash is written with the backslash escaped, so the title stays closed +ok 79 - a link title holding a trailing backslash is written with the backslash escaped, so the title stays closed + --- + duration_ms: 622.537696 + type: 'test' + ... +# Subtest: an image title holding a trailing backslash is written with the backslash escaped, so the title stays closed +ok 80 - an image title holding a trailing backslash is written with the backslash escaped, so the title stays closed + --- + duration_ms: 714.826054 + type: 'test' + ... +# Subtest: a code block info string with a backtick, pasted, is dropped on Save, so the fence stays closed +ok 81 - a code block info string with a backtick, pasted, is dropped on Save, so the fence stays closed + --- + duration_ms: 761.635764 + type: 'test' + ... +# Subtest: a code block info string with a backtick, as a tilde fence can have, is kept as source, not rewritten without it +ok 82 - a code block info string with a backtick, as a tilde fence can have, is kept as source, not rewritten without it + --- + duration_ms: 591.680878 + type: 'test' + ... +# Subtest: the imported source is the tagged upstream source plus the recorded local changes, and nothing else +ok 83 - the imported source is the tagged upstream source plus the recorded local changes, and nothing else + --- + duration_ms: 18.084718 + type: 'test' + ... +# Subtest: every package names its origin and license, and NOTICE lists each +ok 84 - every package names its origin and license, and NOTICE lists each + --- + duration_ms: 0.676082 + type: 'test' + ... +# Subtest: the build reads only imported source and the editor's own files; the bundle is the recorded build +ok 85 - the build reads only imported source and the editor's own files; the bundle is the recorded build + --- + duration_ms: 7.275053 + type: 'test' + ... +# Subtest: MOSAIC_REQUIRE_EDITOR_BUILD: a missing or wrong esbuild skips without it and fails with it; a wrong binary always fails +ok 86 - MOSAIC_REQUIRE_EDITOR_BUILD: a missing or wrong esbuild skips without it and fails with it; a wrong binary always fails + --- + duration_ms: 4.869018 + type: 'test' + ... +# Subtest: the toolchain check, run as a program, exits non-zero without esbuild when the build is required +ok 87 - the toolchain check, run as a program, exits non-zero without esbuild when the build is required + --- + duration_ms: 144.831101 + type: 'test' + ... +# Subtest: rebuilding from the source gives the same bytes (needs the pinned esbuild; MOSAIC_REQUIRE_EDITOR_BUILD=1 makes its absence a failure) +ok 88 - rebuilding from the source gives the same bytes (needs the pinned esbuild; MOSAIC_REQUIRE_EDITOR_BUILD=1 makes its absence a failure) # SKIP esbuild 0.28.1 is installed at /mnt/storage/src/mosaic-stack/node_modules/esbuild; the editor rebuild needs exactly 0.28.2 (npm ci --ignore-scripts in packages/webui) (set MOSAIC_REQUIRE_EDITOR_BUILD=1 to fail instead of skip) + --- + duration_ms: 1.360573 + type: 'test' + ... +# Subtest: the editor routes serve the built files with their types and no cache +ok 89 - the editor routes serve the built files with their types and no cache + --- + duration_ms: 42.842337 + type: 'test' + ... +# Subtest: open and save with no edit writes the same bytes: the goals review and a doc with every element +ok 90 - open and save with no edit writes the same bytes: the goals review and a doc with every element + --- + duration_ms: 21.513442 + type: 'test' + ... +# Subtest: open and save with no edit writes the same bytes: every repository doc under docs/ and spec/ +ok 91 - open and save with no edit writes the same bytes: every repository doc under docs/ and spec/ + --- + duration_ms: 2049.642125 + type: 'test' + ... +# Subtest: the editor source builds markup only with DOM calls, and the bundle has no eval +ok 92 - the editor source builds markup only with DOM calls, and the bundle has no eval + --- + duration_ms: 2.515087 + type: 'test' + ... +# Subtest: the link gate and the image rule are the preview's +ok 93 - the link gate and the image rule are the preview's + --- + duration_ms: 0.714805 + type: 'test' + ... +# Subtest: return flow through the conversation view: send, tool call, delayed result, peer message, exact long answers, relaunch +ok 94 - return flow through the conversation view: send, tool call, delayed result, peer message, exact long answers, relaunch + --- + duration_ms: 51960.411838 + type: 'test' + ... +# Subtest: row 165 Settings: role instances read, add with a restart named, change without one, a refusal keeps the draft +ok 95 - row 165 Settings: role instances read, add with a restart named, change without one, a refusal keeps the draft + --- + duration_ms: 996.810215 + type: 'test' + ... +# Subtest: row 165 Console: the signed-in human adds an instance through a real broker; validate exits 0 and the log names the human +ok 96 - row 165 Console: the signed-in human adds an instance through a real broker; validate exits 0 and the log names the human + --- + duration_ms: 173.797293 + type: 'test' + ... +# Subtest: row 165 Console: the instance write needs send on, the public name, the user, the exact Origin and same-origin Fetch Metadata +ok 97 - row 165 Console: the instance write needs send on, the public name, the user, the exact Origin and same-origin Fetch Metadata + --- + duration_ms: 6.063707 + type: 'test' + ... +# Subtest: row 165 Console: the instance write takes JSON within 16 KiB and only its own keys; holder, credentials and an actor are refused +ok 98 - row 165 Console: the instance write takes JSON within 16 KiB and only its own keys; holder, credentials and an actor are refused + --- + duration_ms: 7.443427 + type: 'test' + ... +# Subtest: row 165 Console: a bus refusal says nothing changed; a lost or odd answer says the change may have been made +ok 99 - row 165 Console: a bus refusal says nothing changed; a lost or odd answer says the change may have been made + --- + duration_ms: 9.238996 + type: 'test' + ... +# Subtest: row 165 Console: the instances read takes no arguments, needs a bus and refuses an answer without a revision +ok 100 - row 165 Console: the instances read takes no arguments, needs a bus and refuses an answer without a revision + --- + duration_ms: 4.245608 + type: 'test' + ... +# Subtest: C2-04 CLI: both listener callback pairs dispatch library verbs with their own transport +not ok 101 - C2-04 CLI: both listener callback pairs dispatch library verbs with their own transport + --- + duration_ms: 99.229628 + type: 'test' + location: '/mnt/storage/scratch/tmp/g196-tree-tn651z/packages/webui/tests/library-cli.test.mjs:10:1' + failureType: 'testCodeFailure' + error: |- + refused: --tester-port retired; activate explicitly with --tester-socket + + + 2 !== 0 + + code: 'ERR_ASSERTION' + name: 'AssertionError' + expected: 0 + actual: 2 + operator: 'strictEqual' + stack: |- + TestContext. (file:///mnt/storage/scratch/tmp/g196-tree-tn651z/packages/webui/tests/library-cli.test.mjs:27:10) + Test.runInAsyncScope (node:async_hooks:226:14) + Test.run (node:internal/test_runner/test:1402:25) + Test.start (node:internal/test_runner/test:1262:17) + startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) + ... +# Subtest: REQ-LIMIT-3 REQ-LIMIT-4 Settings shows token limits counted, not enforced and check failed; Reset posts one path; a save keeps the token limits +ok 102 - REQ-LIMIT-3 REQ-LIMIT-4 Settings shows token limits counted, not enforced and check failed; Reset posts one path; a save keeps the token limits + --- + duration_ms: 969.648952 + type: 'test' + ... +# Subtest: Row 167 with an assistant draft open, a token limit reset gives the assistant submit its revision +ok 103 - Row 167 with an assistant draft open, a token limit reset gives the assistant submit its revision + --- + duration_ms: 614.148961 + type: 'test' + ... +# Subtest: REQ-LIMIT-3 limits read returns only the token rows; no query or write is accepted +ok 104 - REQ-LIMIT-3 limits read returns only the token rows; no query or write is accepted + --- + duration_ms: 25.111497 + type: 'test' + ... +# Subtest: REQ-LIMIT-3 a limits answer without a token list is refused, not shown as no limits +ok 105 - REQ-LIMIT-3 a limits answer without a token list is refused, not shown as no limits + --- + duration_ms: 7.57038 + type: 'test' + ... +# 2026-10-21T19:33:44.728Z settings user="jason" changed +# Subtest: REQ-LIMIT-3 a Settings reset reaches the human write with its paths; a reset alone is enough +ok 106 - REQ-LIMIT-3 a Settings reset reaches the human write with its paths; a reset alone is enough + --- + duration_ms: 5.226546 + type: 'test' + ... +# Subtest: REQ-LIMIT-3 the Console reader asks the bus limits verb with no arguments +ok 107 - REQ-LIMIT-3 the Console reader asks the bus limits verb with no arguments + --- + duration_ms: 0.22617 + type: 'test' + ... +# Subtest: the preview source names none of the four string-to-markup sinks +ok 108 - the preview source names none of the four string-to-markup sinks + --- + duration_ms: 0.834359 + type: 'test' + ... +# Subtest: headings, paragraphs, emphasis and inline code render +ok 109 - headings, paragraphs, emphasis and inline code render + --- + duration_ms: 1.128829 + type: 'test' + ... +# Subtest: lists, block quotes and code blocks render +ok 110 - lists, block quotes and code blocks render + --- + duration_ms: 0.401738 + type: 'test' + ... +# Subtest: a link is made for http, https and relative targets, with rel and the target shown +ok 111 - a link is made for http, https and relative targets, with rel and the target shown + --- + duration_ms: 0.890551 + type: 'test' + ... +# Subtest: a link with any other scheme, or an evasion of the scheme, stays source text +ok 112 - a link with any other scheme, or an evasion of the scheme, stays source text + --- + duration_ms: 0.700784 + type: 'test' + ... +# Subtest: an image shows alt text and URL, is never an img element and never loads +ok 113 - an image shows alt text and URL, is never an img element and never loads + --- + duration_ms: 0.134777 + type: 'test' + ... +# Subtest: raw HTML, entities and unsupported blocks show as source text, never as elements +ok 114 - raw HTML, entities and unsupported blocks show as source text, never as elements + --- + duration_ms: 0.273264 + type: 'test' + ... +# Subtest: markup inside code and inside link text stays text +ok 115 - markup inside code and inside link text stays text + --- + duration_ms: 0.140176 + type: 'test' + ... +# Subtest: hostile and pathological input stays within its look-ahead budget and under the nesting cap +ok 116 - hostile and pathological input stays within its look-ahead budget and under the nesting cap + --- + duration_ms: 28.98639 + type: 'test' + ... +# Subtest: trailing blanks and closing hashes are cut by a walk from the end, not a regex that retries inside a blank run +ok 117 - trailing blanks and closing hashes are cut by a walk from the end, not a regex that retries inside a blank run + --- + duration_ms: 25.163506 + type: 'test' + ... +# Subtest: a link opener with no closer searches at most SPAN characters ahead +ok 118 - a link opener with no closer searches at most SPAN characters ahead + --- + duration_ms: 150.968639 + type: 'test' + ... +# Subtest: the look-ahead work of one render is a fixed multiple of the text, whatever the opener +ok 119 - the look-ahead work of one render is a fixed multiple of the text, whatever the opener + --- + duration_ms: 691.517529 + type: 'test' + ... +# Subtest: past the budget an opener is source text, through the path all other text takes +ok 120 - past the budget an opener is source text, through the path all other text takes + --- + duration_ms: 13.957902 + type: 'test' + ... +# Subtest: a normal 200 KiB document renders exactly as it did without a budget, and spends little of it +ok 121 - a normal 200 KiB document renders exactly as it did without a budget, and spends little of it + --- + duration_ms: 19.059474 + type: 'test' + ... +# Subtest: a line separator inside a heading, a list item or a fence line does not end the marker line +ok 122 - a line separator inside a heading, a list item or a fence line does not end the marker line + --- + duration_ms: 0.462945 + type: 'test' + ... +# Subtest: a thematic-break line is a paragraph, every other marker line opens a list +ok 123 - a thematic-break line is a paragraph, every other marker line opens a list + --- + duration_ms: 0.363546 + type: 'test' + ... +# Subtest: every short line over space, tab, - * _ and a letter is a break exactly when the old regex said so +ok 124 - every short line over space, tab, - * _ and a letter is a break exactly when the old regex said so + --- + duration_ms: 36.820429 + type: 'test' + ... +# Subtest: one line of marks does not throw, at 4 MiB, whatever the mark or the spacing +ok 125 - one line of marks does not throw, at 4 MiB, whatever the mark or the spacing + --- + duration_ms: 5613.536349 + type: 'test' + ... +# Subtest: CRLF and tabs are read like LF and spaces; empty input renders nothing +ok 126 - CRLF and tabs are read like LF and spaces; empty input renders nothing + --- + duration_ms: 0.141202 + type: 'test' + ... +# Subtest: messages HTTP read pages and preserves metadata; bad arguments refuse before a read; other reads unchanged +ok 127 - messages HTTP read pages and preserves metadata; bad arguments refuse before a read; other reads unchanged + --- + duration_ms: 73.304246 + type: 'test' + ... +# Subtest: Console Messages lists late unsolicited messages on polling with sender class time read state and trail; nav count includes beyond the page; reads never deliver +ok 128 - Console Messages lists late unsolicited messages on polling with sender class time read state and trail; nav count includes beyond the page; reads never deliver + --- + duration_ms: 794.576288 + type: 'test' + ... +# Subtest: Messages nav count polls on Tasks and Board and clears on a Board refusal; messages 403 refuses local pages +ok 129 - Messages nav count polls on Tasks and Board and clears on a Board refusal; messages 403 refuses local pages + --- + duration_ms: 1653.427047 + type: 'test' + ... +# Subtest: copy writes the Console paths at the full id, read-only, and leaves an existing copy alone +ok 130 - copy writes the Console paths at the full id, read-only, and leaves an existing copy alone + --- + duration_ms: 922.352818 + type: 'test' + ... +# Subtest: copy refuses a commit off refactor, an unknown one, a worktree and a bad copies directory +ok 131 - copy refuses a commit off refactor, an unknown one, a worktree and a bad copies directory + --- + duration_ms: 1227.609225 + type: 'test' + ... +# Subtest: copy writes nothing when an archived path is missing at the commit +ok 132 - copy writes nothing when an archived path is missing at the commit + --- + duration_ms: 363.505855 + type: 'test' + ... +# Subtest: a copy that loses the rename race leaves no read-only temp directory behind +ok 133 - a copy that loses the rename race leaves no read-only temp directory behind + --- + duration_ms: 504.892033 + type: 'test' + ... +# Subtest: a copy whose rename fails with no target refuses, writes no copy and leaves no temp directory +ok 134 - a copy whose rename fails with no target refuses, writes no copy and leaves no temp directory + --- + duration_ms: 478.234144 + type: 'test' + ... +# Subtest: a copy that meets a target holding files says exists: and moves nothing into it +ok 135 - a copy that meets a target holding files says exists: and moves nothing into it + --- + duration_ms: 498.523467 + type: 'test' + ... +# Subtest: a copy that meets an empty target directory replaces it by rename, not by moving into it +ok 136 - a copy that meets an empty target directory replaces it by rename, not by moving into it + --- + duration_ms: 475.69857 + type: 'test' + ... +# Subtest: serve runs from a copy: /healthz 200, the config check, roles and RELEASE from the copy, the queue from --checkout +ok 137 - serve runs from a copy: /healthz 200, the config check, roles and RELEASE from the copy, the queue from --checkout + --- + duration_ms: 800.728179 + type: 'test' + ... +# Subtest: serve refuses a --checkout that is not an absolute directory path +ok 138 - serve refuses a --checkout that is not an absolute directory path + --- + duration_ms: 255.04218 + type: 'test' + ... +# Subtest: consoleReads runs the queue read under queueRoot and reads RELEASE under root +ok 139 - consoleReads runs the queue read under queueRoot and reads RELEASE under root + --- + duration_ms: 49.697595 + type: 'test' + ... +# Subtest: preview options are all three or none, and each is checked +ok 140 - preview options are all three or none, and each is checked + --- + duration_ms: 7.450303 + type: 'test' + ... +# Subtest: the CLI refuses a partial or invalid preview flag set at start +ok 141 - the CLI refuses a partial or invalid preview flag set at start + --- + duration_ms: 571.465576 + type: 'test' + ... +# Subtest: the CLI with all three flags serves the preview mode +ok 142 - the CLI with all three flags serves the preview mode + --- + duration_ms: 120.371809 + type: 'test' + ... +# Subtest: a request for the public name needs the header equal to the user id, else 401 and nothing read +ok 143 - a request for the public name needs the header equal to the user id, else 401 and nothing read + --- + duration_ms: 15.443975 + type: 'test' + ... +# Subtest: the header name matches without regard to case, and the value compare is exact +ok 144 - the header name matches without regard to case, and the value compare is exact + --- + duration_ms: 3.820361 + type: 'test' + ... +# Subtest: the public name with the header reads the bus views, and the Host and Origin are checked first +ok 145 - the public name with the header reads the bus views, and the Host and Origin are checked first + --- + duration_ms: 23.297492 + type: 'test' + ... +# Subtest: in preview mode every write answers 403 read-only, from the public name and loopback, and reaches nothing +ok 146 - in preview mode every write answers 403 read-only, from the public name and loopback, and reaches nothing + --- + duration_ms: 8.746892 + type: 'test' + ... +# Subtest: loopback requests are unchanged in preview mode, and the bus views work with the board down +ok 147 - loopback requests are unchanged in preview mode, and the bus views work with the board down + --- + duration_ms: 4.674914 + type: 'test' + ... +# Subtest: a proxy that rewrites Host to the loopback port gets 403 on its first request, whatever the user +ok 148 - a proxy that rewrites Host to the loopback port gets 403 on its first request, whatever the user + --- + duration_ms: 13.054899 + type: 'test' + ... +# Subtest: a repeated Host is 400 before any other check, in preview mode and without it +ok 149 - a repeated Host is 400 before any other check, in preview mode and without it + --- + duration_ms: 6.652942 + type: 'test' + ... +# Subtest: without the preview flags the public name is refused and writes still reach the board +ok 150 - without the preview flags the public name is refused and writes still reach the board + --- + duration_ms: 5.263772 + type: 'test' + ... +# Subtest: a signed-in same-origin save reaches exactly one human operation and returns the new commit +ok 151 - a signed-in same-origin save reaches exactly one human operation and returns the new commit + --- + duration_ms: 19.096747 + type: 'test' + ... +# Subtest: a save needs send, the named Host, the user, the exact Origin and same-origin Fetch Metadata +ok 152 - a save needs send, the named Host, the user, the exact Origin and same-origin Fetch Metadata + --- + duration_ms: 7.487733 + type: 'test' + ... +# Subtest: a save validates JSON, strict keys, text values and the 1 MiB body before the bus is asked +ok 153 - a save validates JSON, strict keys, text values and the 1 MiB body before the bus is asked + --- + duration_ms: 15.174033 + type: 'test' + ... +# Subtest: a body that is JSON but not an object is refused 400, not thrown on +ok 154 - a body that is JSON but not an object is refused 400, not thrown on + --- + duration_ms: 3.455815 + type: 'test' + ... +# Subtest: the 1 MiB limit is this route only; Settings and messages keep 16 KiB +ok 155 - the 1 MiB limit is this route only; Settings and messages keep 16 KiB + --- + duration_ms: 3.966742 + type: 'test' + ... +# Subtest: a bus refusal is reported as not saved with its own status; stale-base tells the user to reload +ok 156 - a bus refusal is reported as not saved with its own status; stale-base tells the user to reload + --- + duration_ms: 5.176457 + type: 'test' + ... +# Subtest: a save whose answer is lost or unusable is reported unknown and is never retried +ok 157 - a save whose answer is lost or unusable is reported unknown and is never retried + --- + duration_ms: 2.947087 + type: 'test' + ... +# Subtest: the file list and one file read take strict queries and arrive in the expected shape +ok 158 - the file list and one file read take strict queries and arrive in the expected shape + --- + duration_ms: 4.332852 + type: 'test' + ... +# Subtest: reads work without --send; an unusable bus answer is a bad response, a refusal keeps its status +ok 159 - reads work without --send; an unusable bus answer is a bad response, a refusal keeps its status + --- + duration_ms: 2.973498 + type: 'test' + ... +# Subtest: /api/config says edit only where a save can pass +ok 160 - /api/config says edit only where a save can pass + --- + duration_ms: 1.774181 + type: 'test' + ... +# Subtest: a repository-name project refusal is an HTTP conflict +ok 161 - a repository-name project refusal is an HTTP conflict + --- + duration_ms: 0.625137 + type: 'test' + ... +# Subtest: proof startup refuses partial flags non-preview and invalid fixture file metadata or bytes +ok 162 - proof startup refuses partial flags non-preview and invalid fixture file metadata or bytes + --- + duration_ms: 1040.193522 + type: 'test' + ... +# Subtest: serve argv carries only fixture proof path and header; startup explicitly reports proof on or off +ok 163 - serve argv carries only fixture proof path and header; startup explicitly reports proof on or off + --- + duration_ms: 239.56697 + type: 'test' + ... +# Subtest: CLI applies proof on the main listener and rejects that header on its tester listener +ok 164 - CLI applies proof on the main listener and rejects that header on its tester listener + --- + duration_ms: 218.048912 + type: 'test' + ... +# Subtest: proxy proof admits named reads and sends, reads its fixture once, and never exposes the value +ok 165 - proxy proof admits named reads and sends, reads its fixture once, and never exposes the value + --- + duration_ms: 27.00376 + type: 'test' + ... +# Subtest: proxy proof refuses missing wrong short or repeated proof before auth and before any read +ok 166 - proxy proof refuses missing wrong short or repeated proof before auth and before any read + --- + duration_ms: 8.194572 + type: 'test' + ... +# Subtest: proxy proof header is refused on other Hosts and on the tester listener +ok 167 - proxy proof header is refused on other Hosts and on the tester listener + --- + duration_ms: 3.792847 + type: 'test' + ... +# Subtest: proof options reject unsafe or colliding header names without disclosing file contents +ok 168 - proof options reject unsafe or colliding header names without disclosing file contents + --- + duration_ms: 0.600626 + type: 'test' + ... +# Subtest: redactor: config, dataRoot, any absolute path, Discord ids and the JSON parser quote +ok 169 - redactor: config, dataRoot, any absolute path, Discord ids and the JSON parser quote + --- + duration_ms: 1.126456 + type: 'test' + ... +# Subtest: credential state from the date alone, as the bus states it +ok 170 - credential state from the date alone, as the bus states it + --- + duration_ms: 0.132401 + type: 'test' + ... +# Subtest: queue: rows, one row, ids and methods, notes; no path or id from a row +ok 171 - queue: rows, one row, ids and methods, notes; no path or id from a row + --- + duration_ms: 315.406937 + type: 'test' + ... +# Subtest: queue: a refused read fails closed with the store's text, redacted +ok 172 - queue: a refused read fails closed with the store's text, redacted + --- + duration_ms: 159.383878 + type: 'test' + ... +# Subtest: queue: a store that fails to load, or a child that dies, gives a fixed message with no path or stack +ok 173 - queue: a store that fails to load, or a child that dies, gives a fixed message with no path or stack + --- + duration_ms: 689.537764 + type: 'test' + ... +# Subtest: business: names, vars on the allowlist, authority, credential metadata only +ok 174 - business: names, vars on the allowlist, authority, credential metadata only + --- + duration_ms: 9.480976 + type: 'test' + ... +# Subtest: business: missing or invalid file refuses with the module's text, redacted +ok 175 - business: missing or invalid file refuses with the module's text, redacted + --- + duration_ms: 6.065588 + type: 'test' + ... +# Subtest: business without --business: the live bus host, else no-bus-host; no system config: not-configured +ok 176 - business without --business: the live bus host, else no-bus-host; no system config: not-configured + --- + duration_ms: 6.011898 + type: 'test' + ... +# Subtest: settings: release, board, loopback address, notifier binding name only +ok 177 - settings: release, board, loopback address, notifier binding name only + --- + duration_ms: 98.155957 + type: 'test' + ... +# Subtest: task fields: the committed table with no reads configured, GET only; a bad table refuses with no path +ok 178 - task fields: the committed table with no reads configured, GET only; a bad table refuses with no path + --- + duration_ms: 15.966156 + type: 'test' + ... +# Subtest: bus-status: a refused boot shows reason, file and last good load; a live host or an ok boot clears it +ok 179 - bus-status: a refused boot shows reason, file and last good load; a live host or an ok boot clears it + --- + duration_ms: 6.219648 + type: 'test' + ... +# Subtest: both presentations replace old activity with relaunch notice, label retained history, then resume after new activity +ok 180 - both presentations replace old activity with relaunch notice, label retained history, then resume after new activity + --- + duration_ms: 652.498758 + type: 'test' + ... +# Subtest: reported return flow and relative Age: reply sent from the inspector, then the new answer appears there without manual refresh +ok 181 - reported return flow and relative Age: reply sent from the inspector, then the new answer appears there without manual refresh + --- + duration_ms: 20616.521016 + type: 'test' + ... +# Subtest: row 65 Settings: the routing table lists every instance, saves a harness, model, thinking and fallback to the file, and keeps the draft on each refusal +ok 182 - row 65 Settings: the routing table lists every instance, saves a harness, model, thinking and fallback to the file, and keeps the draft on each refusal + --- + duration_ms: 1107.686901 + type: 'test' + ... +# Subtest: row 65 Console: the signed-in human saves a route through a real broker; each refusal says nothing changed and leaves the file and the log +ok 183 - row 65 Console: the signed-in human saves a route through a real broker; each refusal says nothing changed and leaves the file and the log + --- + duration_ms: 83.397857 + type: 'test' + ... +# Subtest: row 65 Console: the routes write needs send on, a writer, the public name, the user, the exact Origin and same-origin Fetch Metadata +ok 184 - row 65 Console: the routes write needs send on, a writer, the public name, the user, the exact Origin and same-origin Fetch Metadata + --- + duration_ms: 6.085262 + type: 'test' + ... +# Subtest: row 65 Console: the routes write takes JSON within 16 KiB with a revision and routes only; an actor is refused and routes are never logged +ok 185 - row 65 Console: the routes write takes JSON within 16 KiB with a revision and routes only; an actor is refused and routes are never logged + --- + duration_ms: 6.443848 + type: 'test' + ... +# Subtest: row 65 Console: a bus refusal maps to its status and says nothing changed; a lost or odd answer says the change may have been made +ok 186 - row 65 Console: a bus refusal maps to its status and says nothing changed; a lost or odd answer says the change may have been made + --- + duration_ms: 17.362045 + type: 'test' + ... +# Subtest: row 65 Console: the routes read takes no arguments, needs a bus and refuses an odd answer +ok 187 - row 65 Console: the routes read takes no arguments, needs a bus and refuses an odd answer + --- + duration_ms: 6.868628 + type: 'test' + ... +# Subtest: the send box: held roles, the draft and caret across a refresh, each receipt, one POST per Send, and the trail link; the board Reply on a 4xx and a 5xx +ok 188 - the send box: held roles, the draft and caret across a refresh, each receipt, one POST per Send, and the trail link; the board Reply on a 4xx and a 5xx + --- + duration_ms: 2181.917619 + type: 'test' + ... +# Subtest: a sent receipt lists its replies as the page refreshes, oldest first and capped, and marks none delivered or read +ok 189 - a sent receipt lists its replies as the page refreshes, oldest first and capped, and marks none delivered or read + --- + duration_ms: 10993.640464 + type: 'test' + ... +# Subtest: startServer takes send only as a function and only with the preview mode +ok 190 - startServer takes send only as a function and only with the preview mode + --- + duration_ms: 5.212893 + type: 'test' + ... +# Subtest: the CLI refuses --send without the preview flags, and without a configured bus +ok 191 - the CLI refuses --send without the preview flags, and without a configured bus + --- + duration_ms: 370.752811 + type: 'test' + ... +# Subtest: the CLI with --send and a configured bus sends through the human transport and logs one line +ok 192 - the CLI with --send and a configured bus sends through the human transport and logs one line + --- + duration_ms: 125.43898 + type: 'test' + ... +# Subtest: without --send the route is read-only like every other write, and config says no send +ok 193 - without --send the route is read-only like every other write, and config says no send + --- + duration_ms: 6.89213 + type: 'test' + ... +# Subtest: with --send every other write is still 403 read-only, and nothing reaches the board or bus +ok 194 - with --send every other write is still 403 read-only, and nothing reaches the board or bus + --- + duration_ms: 5.119853 + type: 'test' + ... +# Subtest: config says send only on the public name with --send on +ok 195 - config says send only on the public name with --send on + --- + duration_ms: 1.608884 + type: 'test' + ... +# Subtest: a send without the signed-in user is 401 and is neither sent nor logged, loopback included +ok 196 - a send without the signed-in user is 401 and is neither sent nor logged, loopback included + --- + duration_ms: 3.116716 + type: 'test' + ... +# Subtest: each request check refuses before anything is sent, and logs the refusal without the body +ok 197 - each request check refuses before anything is sent, and logs the refusal without the body + --- + duration_ms: 10.202814 + type: 'test' + ... +# Subtest: a send passes exactly to, body and in_reply_to, answers the id, and logs it +ok 198 - a send passes exactly to, body and in_reply_to, answers the id, and logs it + --- + duration_ms: 6.119238 + type: 'test' + ... +# Subtest: a crafted role name cannot forge a log line +ok 199 - a crafted role name cannot forge a log line + --- + duration_ms: 1.780343 + type: 'test' + ... +# Subtest: a bus refusal is not sent, with its status; an outcome the bus could not confirm is unknown and never retried +ok 200 - a bus refusal is not sent, with its status; an outcome the bus could not confirm is unknown and never retried + --- + duration_ms: 5.643641 + type: 'test' + ... +# Subtest: through the human transport the request is exactly the business, message.send and the keys +ok 201 - through the human transport the request is exactly the business, message.send and the keys + --- + duration_ms: 73.239993 + type: 'test' + ... +# Subtest: against a real broker: the message is written once as a human send, and its refusals map +ok 202 - against a real broker: the message is written once as a human send, and its refusals map + --- + duration_ms: 31.335043 + type: 'test' + ... +# Subtest: loopback host and board origin fail closed +ok 203 - loopback host and board origin fail closed + --- + duration_ms: 5.477502 + type: 'test' + ... +# Subtest: real board fixture passes through WebUI; assets and isolated seen/reply work +ok 204 - real board fixture passes through WebUI; assets and isolated seen/reply work + --- + duration_ms: 67.321576 + type: 'test' + ... +# Subtest: proxy preserves exact request bytes, status and receipt, rejects forms and malformed JSON, never follows redirect +ok 205 - proxy preserves exact request bytes, status and receipt, rejects forms and malformed JSON, never follows redirect + --- + duration_ms: 39.701293 + type: 'test' + ... +# Subtest: unreachable board reports URL; CLI rejects unsupported options +ok 206 - unreachable board reports URL; CLI rejects unsupported options + --- + duration_ms: 364.833714 + type: 'test' + ... +# Subtest: tester service render carries the tester port alongside existing flags +ok 207 - tester service render carries the tester port alongside existing flags + --- + duration_ms: 95.973744 + type: 'test' + ... +# Subtest: tester service refuses forwarded 7332 even with another main port +ok 208 - tester service refuses forwarded 7332 even with another main port + --- + duration_ms: 55.992621 + type: 'test' + ... +# Subtest: tester service invalid ports refuse render and install with exit 4 and leave the unit alone +ok 209 - tester service invalid ports refuse render and install with exit 4 and leave the unit alone + --- + duration_ms: 689.516287 + type: 'test' + ... +# Subtest: tester service counts the digits as written before it strips leading zeros +ok 210 - tester service counts the digits as written before it strips leading zeros + --- + duration_ms: 57.987365 + type: 'test' + ... +# Subtest: tester service install and status show the tester port without changing send reporting +ok 211 - tester service install and status show the tester port without changing send reporting + --- + duration_ms: 315.645379 + type: 'test' + ... +# Subtest: render prints the unit without the preview flags +ok 212 - render prints the unit without the preview flags + --- + duration_ms: 30.641664 + type: 'test' + ... +# Subtest: render carries every serve flag, the preview set included +ok 213 - render carries every serve flag, the preview set included + --- + duration_ms: 30.912695 + type: 'test' + ... +# Subtest: a partial preview set is refused +ok 214 - a partial preview set is refused + --- + duration_ms: 87.45359 + type: 'test' + ... +# Subtest: a value the unit cannot carry is refused, for every flag +ok 215 - a value the unit cannot carry is refused, for every flag + --- + duration_ms: 1574.769638 + type: 'test' + ... +# Subtest: the rendered unit names none of the human proof agent markers and sets no agent variable +ok 216 - the rendered unit names none of the human proof agent markers and sets no agent variable + --- + duration_ms: 90.062295 + type: 'test' + ... +# Subtest: install into --dir with --no-reload writes the file whole, then reports unchanged +ok 217 - install into --dir with --no-reload writes the file whole, then reports unchanged + --- + duration_ms: 169.296797 + type: 'test' + ... +# Subtest: install without --no-reload runs daemon-reload and nothing that starts the unit +ok 218 - install without --no-reload runs daemon-reload and nothing that starts the unit + --- + duration_ms: 46.29752 + type: 'test' + ... +# Subtest: uninstall refuses while the unit is running, with or without --no-reload, and removes it once it is not +ok 219 - uninstall refuses while the unit is running, with or without --no-reload, and removes it once it is not + --- + duration_ms: 428.811414 + type: 'test' + ... +# Subtest: status prints the unit state and GET /healthz on the installed port +ok 220 - status prints the unit state and GET /healthz on the installed port + --- + duration_ms: 251.432955 + type: 'test' + ... +# Subtest: usage: an unknown verb or flag, and start or enable, exit 4 +ok 221 - usage: an unknown verb or flag, and start or enable, exit 4 + --- + duration_ms: 556.032123 + type: 'test' + ... +# Subtest: without --send, render is the template with its placeholders filled, byte for byte +ok 222 - without --send, render is the template with its placeholders filled, byte for byte + --- + duration_ms: 144.450472 + type: 'test' + ... +# Subtest: render --send with the preview set ends ExecStart with --send and changes nothing else +ok 223 - render --send with the preview set ends ExecStart with --send and changes nothing else + --- + duration_ms: 236.574895 + type: 'test' + ... +# Subtest: --send without the whole preview set is refused and writes nothing +ok 224 - --send without the whole preview set is refused and writes nothing + --- + duration_ms: 608.632634 + type: 'test' + ... +# Subtest: install --send into --dir with --no-reload writes the sending unit, and status says whether it sends +ok 225 - install --send into --dir with --no-reload writes the sending unit, and status says whether it sends + --- + duration_ms: 391.864657 + type: 'test' + ... +# Subtest: uninstall and status take no --send +ok 226 - uninstall and status take no --send + --- + duration_ms: 129.114828 + type: 'test' + ... +# Subtest: install refuses while the unit is running, in any state but inactive or failed, and changes nothing +ok 227 - install refuses while the unit is running, in any state but inactive or failed, and changes nothing + --- + duration_ms: 544.679749 + type: 'test' + ... +# Subtest: when the state read fails, install and uninstall refuse with one line and change nothing +ok 228 - when the state read fails, install and uninstall refuse with one line and change nothing + --- + duration_ms: 181.654077 + type: 'test' + ... +# Subtest: install needs --copy naming a copy that exists, and refuses outside the canonical checkout without --allow-worktree +ok 229 - install needs --copy naming a copy that exists, and refuses outside the canonical checkout without --allow-worktree + --- + duration_ms: 275.513649 + type: 'test' + ... +# Subtest: install refuses unless the bus unit runs from the same copy, naming both paths, and changes nothing +ok 230 - install refuses unless the bus unit runs from the same copy, naming both paths, and changes nothing + --- + duration_ms: 662.302279 + type: 'test' + ... +# Subtest: render --copy runs the copy and reads the queue in the checkout; without --copy the unit is unchanged +ok 231 - render --copy runs the copy and reads the queue in the checkout; without --copy the unit is unchanged + --- + duration_ms: 95.81778 + type: 'test' + ... +# Subtest: the uid header takes only an Authentik uid; the username header still takes a username +ok 232 - the uid header takes only an Authentik uid; the username header still takes a username + --- + duration_ms: 1711.190508 + type: 'test' + ... +# Subtest: a preview value cannot start with - or . +ok 233 - a preview value cannot start with - or . + --- + duration_ms: 226.155983 + type: 'test' + ... +# Subtest: status names the copy and whether refactor has moved past it, and says when the unit runs from no copy +ok 234 - status names the copy and whether refactor has moved past it, and says when the unit runs from no copy + --- + duration_ms: 531.275184 + type: 'test' + ... +# Subtest: proxy proof render carries both flags but never opens the fixture file +ok 235 - proxy proof render carries both flags but never opens the fixture file + --- + duration_ms: 36.293729 + type: 'test' + ... +# Subtest: proxy proof render refuses incomplete non-preview missing unsafe-mode and repo/copy paths +ok 236 - proxy proof render refuses incomplete non-preview missing unsafe-mode and repo/copy paths + --- + duration_ms: 431.153276 + type: 'test' + ... +# Subtest: proxy proof status retains send and tester reporting with both proof flags +ok 237 - proxy proof status retains send and tester reporting with both proof flags + --- + duration_ms: 133.956291 + type: 'test' + ... +# Subtest: row196 socket flag renders only for supporting targets and refuses mixed transports +ok 238 - row196 socket flag renders only for supporting targets and refuses mixed transports + --- + duration_ms: 120.837849 + type: 'test' + ... +# Subtest: Settings form shows every scope and held role; gated save, exact payload, retained draft and no automatic retry +ok 239 - Settings form shows every scope and held role; gated save, exact payload, retained draft and no automatic retry + --- + duration_ms: 1078.445822 + type: 'test' + ... +# Subtest: Q169 Assistant section: gated, changed fields only, name and stop posts, retained draft and no automatic retry +ok 240 - Q169 Assistant section: gated, changed fields only, name and stop posts, retained draft and no automatic retry + --- + duration_ms: 1081.080712 + type: 'test' + ... +# Subtest: Row 167 a refused names read gives the refused usage page; another names failure keeps the Assistant section +ok 241 - Row 167 a refused names read gives the refused usage page; another names failure keeps the Assistant section + --- + duration_ms: 754.702992 + type: 'test' + ... +# Subtest: Row 167 with a limits draft open, an assistant save gives the limits submit its revision and the typed limit stays +ok 242 - Row 167 with a limits draft open, an assistant save gives the limits submit its revision and the typed limit stays + --- + duration_ms: 597.717386 + type: 'test' + ... +# Subtest: Row 167 with an assistant draft open, a launch save gives the assistant submit its revision, and reload reads the current one +ok 243 - Row 167 with an assistant draft open, a launch save gives the assistant submit its revision, and reload reads the current one + --- + duration_ms: 649.688596 + type: 'test' + ... +# 2026-10-21T19:34:44.094Z settings user="jason" changed +# Subtest: REQ-WEB-1 signed-in same-origin Settings write reaches exactly one human operation +ok 244 - REQ-WEB-1 signed-in same-origin Settings write reaches exactly one human operation + --- + duration_ms: 19.053114 + type: 'test' + ... +# Subtest: REQ-WEB-1 Settings writes require enabled send, named Host, identity, exact Origin and same-origin Fetch Metadata +ok 245 - REQ-WEB-1 Settings writes require enabled send, named Host, identity, exact Origin and same-origin Fetch Metadata + --- + duration_ms: 7.671965 + type: 'test' + ... +# Subtest: REQ-WEB-1 Settings validates JSON, size, revision and strict writable keys before broker call +ok 246 - REQ-WEB-1 Settings validates JSON, size, revision and strict writable keys before broker call + --- + duration_ms: 4.937045 + type: 'test' + ... +# Subtest: Q169 a Console change of the assistant reaches the human operation unchanged, and the log names the signed-in user +ok 247 - Q169 a Console change of the assistant reaches the human operation unchanged, and the log names the signed-in user + --- + duration_ms: 2.907953 + type: 'test' + ... +# Subtest: tokens.css and icons.svg are byte copies of docs/design +ok 248 - tokens.css and icons.svg are byte copies of docs/design + --- + duration_ms: 5.789988 + type: 'test' + ... +# Subtest: JetBrains Mono files match the digests in their sources file, with the OFL text +ok 249 - JetBrains Mono files match the digests in their sources file, with the OFL text + --- + duration_ms: 1.470926 + type: 'test' + ... +# Subtest: shipped strings are unchanged, and the web keeps its write boundary +ok 250 - shipped strings are unchanged, and the web keeps its write boundary + --- + duration_ms: 2.685124 + type: 'test' + ... +# Subtest: shell in a browser: System default, seeded states, 400px, focus and the Ctrl+K palette +ok 251 - shell in a browser: System default, seeded states, 400px, focus and the Ctrl+K palette + --- + duration_ms: 5539.409348 + type: 'test' + ... +# Subtest: five states on Board, Inbox, Tasks, Agents and Trail +ok 252 - five states on Board, Inbox, Tasks, Agents and Trail + --- + duration_ms: 2480.916644 + type: 'test' + ... +# Subtest: a 401 sign-in required on each fetch path signs the page out with a sign-in link and stops the refresh; another 401 stays an error +ok 253 - a 401 sign-in required on each fetch path signs the page out with a sign-in link and stops the refresh; another 401 stays an error + --- + duration_ms: 5638.001099 + type: 'test' + ... +# Subtest: the Sign out form shows only when /api/config says sso, and posts to /auth/logout +ok 254 - the Sign out form shows only when /api/config says sso, and posts to /auth/logout + --- + duration_ms: 1048.096495 + type: 'test' + ... +# Subtest: positive: an RS256 provider signs in and sends one message, and the session reads +ok 255 - positive: an RS256 provider signs in and sends one message, and the session reads + --- + duration_ms: 159.981503 + type: 'test' + ... +# Subtest: positive: an ES256 provider signs in and sends +ok 256 - positive: an ES256 provider signs in and sends + --- + duration_ms: 21.926275 + type: 'test' + ... +# Subtest: positive: two providers each sign in their own subjects, and one provider's subject is unknown to the other +ok 257 - positive: two providers each sign in their own subjects, and one provider's subject is unknown to the other + --- + duration_ms: 55.117221 + type: 'test' + ... +# Subtest: 1: a forged x-authentik header without a cookie is 401 on the API and a sign-in redirect on a page +ok 258 - 1: a forged x-authentik header without a cookie is 401 on the API and a sign-in redirect on a page + --- + duration_ms: 36.350005 + type: 'test' + ... +# Subtest: 2: an HS256 ID token keyed with the client secret and a real RSA kid is refused +ok 259 - 2: an HS256 ID token keyed with the client secret and a real RSA kid is refused + --- + duration_ms: 47.528358 + type: 'test' + ... +# Subtest: 3: a wrong aud, and an aud list holding another client with no azp, are refused +ok 260 - 3: a wrong aud, and an aud list holding another client with no azp, are refused + --- + duration_ms: 58.369942 + type: 'test' + ... +# Subtest: 4: a token that expired 10 minutes ago is refused +ok 261 - 4: a token that expired 10 minutes ago is refused + --- + duration_ms: 63.769952 + type: 'test' + ... +# Subtest: 5: another issuer, and the issuer without its trailing slash, are refused +ok 262 - 5: another issuer, and the issuer without its trailing slash, are refused + --- + duration_ms: 89.518021 + type: 'test' + ... +# Subtest: 6: a nonce mismatch and a missing nonce are refused +ok 263 - 6: a nonce mismatch and a missing nonce are refused + --- + duration_ms: 46.827452 + type: 'test' + ... +# Subtest: 7: state mismatch, no login cookie, a replay, an expired record and two login cookies are refused +ok 264 - 7: state mismatch, no login cookie, a replay, an expired record and two login cookies are refused + --- + duration_ms: 63.549198 + type: 'test' + ... +# Subtest: 8: the token request carries the PKCE verifier, and the OP refuses a wrong one +ok 265 - 8: the token request carries the PKCE verifier, and the OP refuses a wrong one + --- + duration_ms: 61.939306 + type: 'test' + ... +# Subtest: 9: alg none, a changed payload under a real kid, and an unknown kid even after the refetch are refused +ok 266 - 9: alg none, a changed payload under a real kid, and an unknown kid even after the refetch are refused + --- + duration_ms: 130.712134 + type: 'test' + ... +# Subtest: 10: a valid token for a subject not configured is 403 with one subject-unknown line +ok 267 - 10: a valid token for a subject not configured is 403 with one subject-unknown line + --- + duration_ms: 72.230396 + type: 'test' + ... +# Subtest: 11: start refusals: HS or none algs, reserved names, HS-only discovery, an empty JWKS, no S256, an issuer mismatch, a short RSA key +ok 268 - 11: start refusals: HS or none algs, reserved names, HS-only discovery, an empty JWKS, no S256, an issuer mismatch, a short RSA key + --- + duration_ms: 280.964941 + type: 'test' + ... +# Subtest: 11: slot files: a symlink, mode 0644, mode 0640 and a file under the repository are refused, and no message holds the value +ok 269 - 11: slot files: a symlink, mode 0644, mode 0640 and a file under the repository are refused, and no message holds the value + --- + duration_ms: 2.030029 + type: 'test' + ... +# Subtest: 11: the CLI refuses --sso with the old flags and without console.sso, and starts with a good one +ok 270 - 11: the CLI refuses --sso with the old flags and without console.sso, and starts with a good one + --- + duration_ms: 1047.20313 + type: 'test' + ... +# Subtest: 12: under --sso the tester listener refuses each kind of sign-in, has no /auth, and startServer refuses tester with sso +ok 271 - 12: under --sso the tester listener refuses each kind of sign-in, has no /auth, and startServer refuses tester with sso + --- + duration_ms: 52.128679 + type: 'test' + ... +# Subtest: 13: idle and absolute expiry, logout then reuse, a cross-origin logout, and background reads that don't keep a session +ok 272 - 13: idle and absolute expiry, logout then reuse, a cross-origin logout, and background reads that don't keep a session + --- + duration_ms: 56.862098 + type: 'test' + ... +# Subtest: 13: the CSP lets the Sign out form reach the provider's end-session origin, and only under --sso +ok 273 - 13: the CSP lets the Sign out form reach the provider's end-session origin, and only under --sso + --- + duration_ms: 30.421976 + type: 'test' + ... +# Subtest: 14: open redirects land on /, and a path on the Console lands there +ok 274 - 14: open redirects land on /, and a path on the Console lands there + --- + duration_ms: 154.353818 + type: 'test' + ... +# Subtest: 15: a callback for A carrying B's code and iss, and a provider= query, is refused +ok 275 - 15: a callback for A carrying B's code and iss, and a provider= query, is refused + --- + duration_ms: 116.098354 + type: 'test' + ... +# Subtest: 16: a provider with RS256 and ES256 takes either, and refuses PS256 with a usable PS256 key in the JWKS +ok 276 - 16: a provider with RS256 and ES256 takes either, and refuses PS256 with a usable PS256 key in the JWKS + --- + duration_ms: 78.753256 + type: 'test' + ... +# Subtest: 17: 33 started logins leave 32 records, and the first one's callback finds none +ok 277 - 17: 33 started logins leave 32 records, and the first one's callback finds none + --- + duration_ms: 58.352422 + type: 'test' + ... +# Subtest: 18: after a key rotation a sign-in works through one refetch, and the removed kid is refused +ok 278 - 18: after a key rotation a sign-in works through one refetch, and the removed kid is refused + --- + duration_ms: 66.170535 + type: 'test' + ... +# Subtest: 20 and 21: the store holds no raw session id, and the cookie strings are exact +ok 279 - 20 and 21: the store holds no raw session id, and the cookie strings are exact + --- + duration_ms: 24.056618 + type: 'test' + ... +# Subtest: 22: a loopback Host is 403 on a page, a read and a write; /healthz on loopback is 200; a redirect_uri never comes from the Host +ok 280 - 22: a loopback Host is 403 on a page, a read and a write; /healthz on loopback is 200; a redirect_uri never comes from the Host + --- + duration_ms: 48.027439 + type: 'test' + ... +# Subtest: 23: a provider down at start leaves the Console up and 503, and the retry makes sign-in work +ok 281 - 23: a provider down at start leaves the Console up and 503, and the retry makes sign-in work + --- + duration_ms: 173.381556 + type: 'test' + ... +# Subtest: 19: no captured log line holds a token, code, state, nonce, verifier, client secret or session id +ok 282 - 19: no captured log line holds a token, code, state, nonce, verifier, client secret or session id + --- + duration_ms: 3.404825 + type: 'test' + ... +# Subtest: tester Console banner exposes only instance route and name editors and saves a route as tester +ok 283 - tester Console banner exposes only instance route and name editors and saves a route as tester + --- + duration_ms: 773.058045 + type: 'test' + ... +# Subtest: row 177: the tester Console chat composer is enabled and a send shows in its own thread +ok 284 - row 177: the tester Console chat composer is enabled and a send shows in its own thread + --- + duration_ms: 647.871309 + type: 'test' + ... +# Subtest: tester-port validates range tunnel main port and requires configured bus before listening +ok 285 - tester-port validates range tunnel main port and requires configured bus before listening + --- + duration_ms: 798.886504 + type: 'test' + ... +# Subtest: CLI tester listener binds a private Unix socket and spawns TESTER_CLI for every Console bus read +ok 286 - CLI tester listener binds a private Unix socket and spawns TESTER_CLI for every Console bus read + --- + duration_ms: 2689.994032 + type: 'test' + ... +# Subtest: main listener refuses x-mosaic-tester before any board or bus read for every Host +ok 287 - main listener refuses x-mosaic-tester before any board or bus read for every Host + --- + duration_ms: 18.0998 + type: 'test' + ... +# Subtest: tester listener rejects preview binding and requires its fixed logical Host and no proxy auth header +ok 288 - tester listener rejects preview binding and requires its fixed logical Host and no proxy auth header + --- + duration_ms: 89.82798 + type: 'test' + ... +# Subtest: tester listener writes only instances routes and names with tester receipts and actor +ok 289 - tester listener writes only instances routes and names with tester receipts and actor + --- + duration_ms: 112.374503 + type: 'test' + ... +# Subtest: tester listener refuses every human-only write with no bus call +ok 290 - tester listener refuses every human-only write with no bus call + --- + duration_ms: 79.191757 + type: 'test' + ... +# Subtest: tester-off and tester-required reads return HTTP 403 +ok 291 - tester-off and tester-required reads return HTTP 403 + --- + duration_ms: 77.938484 + type: 'test' + ... +# Subtest: tester credentials routes and committed project reads keep secrets and paths bounded +ok 292 - tester credentials routes and committed project reads keep secrets and paths bounded + --- + duration_ms: 150.623442 + type: 'test' + ... +# Subtest: row 177 W1: the tester chat makes, sends to, opens and reads its own thread as tester +ok 293 - row 177 W1: the tester chat makes, sends to, opens and reads its own thread as tester + --- + duration_ms: 24.250765 + type: 'test' + ... +# Subtest: row 177 W2: tester chat writes refuse a missing or foreign Origin, cross-site, text/plain and the proxy header with no bus call +ok 294 - row 177 W2: tester chat writes refuse a missing or foreign Origin, cross-site, text/plain and the proxy header with no bus call + --- + duration_ms: 10.190878 + type: 'test' + ... +# Subtest: row 177 W3: the human thread through the tester chat is thread-not-owned, and bus.tester off answers tester-off +ok 295 - row 177 W3: the human thread through the tester chat is thread-not-owned, and bus.tester off answers tester-off + --- + duration_ms: 24.295924 + type: 'test' + ... +# Subtest: row 177 W4: the main listener refuses x-mosaic-tester on chat reads and writes before the chat +ok 296 - row 177 W4: the main listener refuses x-mosaic-tester on chat reads and writes before the chat + --- + duration_ms: 2.283639 + type: 'test' + ... +# Subtest: private tester HTTP serves on 0600 socket in 0700 parent and fixed origin +ok 297 - private tester HTTP serves on 0600 socket in 0700 parent and fixed origin + --- + duration_ms: 53.503262 + type: 'test' + ... +# Subtest: private tester refuses symlink, unsafe parent and long path without repairs +ok 298 - private tester refuses symlink, unsafe parent and long path without repairs + --- + duration_ms: 0.77366 + type: 'test' + ... +# Subtest: tester cleanup must leave a replacement inode untouched +ok 299 - tester cleanup must leave a replacement inode untouched + --- + duration_ms: 1.409826 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 Settings shows all token kinds and unknown turns beside every total, as a read-only separate section +ok 300 - REQ-LIMIT-4 Settings shows all token kinds and unknown turns beside every total, as a read-only separate section + --- + duration_ms: 626.862323 + type: 'test' + ... +# Subtest: REQ-WEB-1 usage read keeps unknown counts and each token kind; no query or write is accepted +ok 301 - REQ-WEB-1 usage read keeps unknown counts and each token kind; no query or write is accepted + --- + duration_ms: 28.701067 + type: 'test' + ... +# Subtest: REQ-WEB-1 malformed usage is refused instead of shown as zero +ok 302 - REQ-WEB-1 malformed usage is refused instead of shown as zero + --- + duration_ms: 5.995283 + type: 'test' + ... +# Subtest: Queue, Business and Settings in their five states, with no move button +ok 303 - Queue, Business and Settings in their five states, with no move button + --- + duration_ms: 3139.510939 + type: 'test' + ... +# Subtest: seeded secrets, Discord ids and paths reach no response and no page; business refusals in the module's words +ok 304 - seeded secrets, Discord ids and paths reach no response and no page; business refusals in the module's words + --- + duration_ms: 1053.79825 + type: 'test' + ... +# Subtest: the server log names no config path when the system config refuses +ok 305 - the server log names no config path when the system config refuses + --- + duration_ms: 313.584319 + type: 'test' + ... +1..305 +# tests 305 +# suites 0 +# pass 303 +# fail 1 +# cancelled 0 +# skipped 1 +# todo 0 +# duration_ms 111479.126888 diff --git a/agents/gander/work/queue-196/r4/gate/whole-driver.log b/agents/gander/work/queue-196/r4/gate/whole-driver.log new file mode 100644 index 000000000..921f2c054 --- /dev/null +++ b/agents/gander/work/queue-196/r4/gate/whole-driver.log @@ -0,0 +1,5 @@ +START bus 80 whole file(s) +END bus {"code":0,"signal":null,"pass":622,"fail":0,"skip":0,"wallSeconds":36.272237477999994,"stopped":false} +START webui 50 whole file(s) +END webui {"code":1,"signal":null,"pass":303,"fail":1,"skip":1,"wallSeconds":113.151197196,"stopped":false} +STOP webui diff --git a/agents/gander/work/queue-196/r4/gate/whole-plan.json b/agents/gander/work/queue-196/r4/gate/whole-plan.json new file mode 100644 index 000000000..8ea2e44a2 --- /dev/null +++ b/agents/gander/work/queue-196/r4/gate/whole-plan.json @@ -0,0 +1,612 @@ +[ + { + "name": "bus", + "command": "/usr/bin/node", + "args": [ + "--test", + "--test-reporter=tap", + "--test-concurrency=2", + "packages/bus/tests/account-migration.test.mjs", + "packages/bus/tests/agents.test.mjs", + "packages/bus/tests/approval-binding.test.mjs", + "packages/bus/tests/broker.test.mjs", + "packages/bus/tests/business.test.mjs", + "packages/bus/tests/channel-proof.test.mjs", + "packages/bus/tests/chief-of-staff.test.mjs", + "packages/bus/tests/comment-cursors.test.mjs", + "packages/bus/tests/comment-migration.test.mjs", + "packages/bus/tests/creative.test.mjs", + "packages/bus/tests/credential-claim.test.mjs", + "packages/bus/tests/credential-status.test.mjs", + "packages/bus/tests/credential-store.test.mjs", + "packages/bus/tests/credential-verbs.test.mjs", + "packages/bus/tests/credentials.test.mjs", + "packages/bus/tests/csuite-messaging.test.mjs", + "packages/bus/tests/daily-quota-runtime.test.mjs", + "packages/bus/tests/decision-close.test.mjs", + "packages/bus/tests/decision-route.test.mjs", + "packages/bus/tests/decisions.test.mjs", + "packages/bus/tests/end-launch.test.mjs", + "packages/bus/tests/grant-enroll.test.mjs", + "packages/bus/tests/grant-executor.test.mjs", + "packages/bus/tests/grant-host.test.mjs", + "packages/bus/tests/grant-migration.test.mjs", + "packages/bus/tests/hard-waits.test.mjs", + "packages/bus/tests/host-run.test.mjs", + "packages/bus/tests/host-tools.test.mjs", + "packages/bus/tests/human.test.mjs", + "packages/bus/tests/instances-verb.test.mjs", + "packages/bus/tests/interpreter.test.mjs", + "packages/bus/tests/land.test.mjs", + "packages/bus/tests/launch-notice.test.mjs", + "packages/bus/tests/library.test.mjs", + "packages/bus/tests/limit-checks.test.mjs", + "packages/bus/tests/limit-stop.test.mjs", + "packages/bus/tests/limits-runtime.test.mjs", + "packages/bus/tests/limits.test.mjs", + "packages/bus/tests/message-citation.test.mjs", + "packages/bus/tests/messages.test.mjs", + "packages/bus/tests/messaging.test.mjs", + "packages/bus/tests/name-migration.test.mjs", + "packages/bus/tests/names.test.mjs", + "packages/bus/tests/peer-transport.test.mjs", + "packages/bus/tests/peercred.test.mjs", + "packages/bus/tests/plugins-verb.test.mjs", + "packages/bus/tests/principal.test.mjs", + "packages/bus/tests/process.test.mjs", + "packages/bus/tests/project-await.test.mjs", + "packages/bus/tests/project-files.test.mjs", + "packages/bus/tests/project-runtime.test.mjs", + "packages/bus/tests/publish.test.mjs", + "packages/bus/tests/replies.test.mjs", + "packages/bus/tests/requirements.test.mjs", + "packages/bus/tests/review.test.mjs", + "packages/bus/tests/routes-verb.test.mjs", + "packages/bus/tests/schema.test.mjs", + "packages/bus/tests/single-use.test.mjs", + "packages/bus/tests/spec-migration.test.mjs", + "packages/bus/tests/spec-review.test.mjs", + "packages/bus/tests/spec-socket.test.mjs", + "packages/bus/tests/spec.test.mjs", + "packages/bus/tests/staff-request.test.mjs", + "packages/bus/tests/state.test.mjs", + "packages/bus/tests/store.test.mjs", + "packages/bus/tests/task-page.test.mjs", + "packages/bus/tests/task-read.test.mjs", + "packages/bus/tests/tasks.test.mjs", + "packages/bus/tests/tester-threads.test.mjs", + "packages/bus/tests/tester-writes.test.mjs", + "packages/bus/tests/tester.test.mjs", + "packages/bus/tests/thread-migration.test.mjs", + "packages/bus/tests/threads.test.mjs", + "packages/bus/tests/transport.test.mjs", + "packages/bus/tests/usage-broker.test.mjs", + "packages/bus/tests/usage-migration.test.mjs", + "packages/bus/tests/usage-runtime.test.mjs", + "packages/bus/tests/usage.test.mjs", + "packages/bus/tests/web.test.mjs", + "packages/bus/tests/workflow-roles.test.mjs" + ], + "kind": "node", + "wholeFiles": [ + "packages/bus/tests/account-migration.test.mjs", + "packages/bus/tests/agents.test.mjs", + "packages/bus/tests/approval-binding.test.mjs", + "packages/bus/tests/broker.test.mjs", + "packages/bus/tests/business.test.mjs", + "packages/bus/tests/channel-proof.test.mjs", + "packages/bus/tests/chief-of-staff.test.mjs", + "packages/bus/tests/comment-cursors.test.mjs", + "packages/bus/tests/comment-migration.test.mjs", + "packages/bus/tests/creative.test.mjs", + "packages/bus/tests/credential-claim.test.mjs", + "packages/bus/tests/credential-status.test.mjs", + "packages/bus/tests/credential-store.test.mjs", + "packages/bus/tests/credential-verbs.test.mjs", + "packages/bus/tests/credentials.test.mjs", + "packages/bus/tests/csuite-messaging.test.mjs", + "packages/bus/tests/daily-quota-runtime.test.mjs", + "packages/bus/tests/decision-close.test.mjs", + "packages/bus/tests/decision-route.test.mjs", + "packages/bus/tests/decisions.test.mjs", + "packages/bus/tests/end-launch.test.mjs", + "packages/bus/tests/grant-enroll.test.mjs", + "packages/bus/tests/grant-executor.test.mjs", + "packages/bus/tests/grant-host.test.mjs", + "packages/bus/tests/grant-migration.test.mjs", + "packages/bus/tests/hard-waits.test.mjs", + "packages/bus/tests/host-run.test.mjs", + "packages/bus/tests/host-tools.test.mjs", + "packages/bus/tests/human.test.mjs", + "packages/bus/tests/instances-verb.test.mjs", + "packages/bus/tests/interpreter.test.mjs", + "packages/bus/tests/land.test.mjs", + "packages/bus/tests/launch-notice.test.mjs", + "packages/bus/tests/library.test.mjs", + "packages/bus/tests/limit-checks.test.mjs", + "packages/bus/tests/limit-stop.test.mjs", + "packages/bus/tests/limits-runtime.test.mjs", + "packages/bus/tests/limits.test.mjs", + "packages/bus/tests/message-citation.test.mjs", + "packages/bus/tests/messages.test.mjs", + "packages/bus/tests/messaging.test.mjs", + "packages/bus/tests/name-migration.test.mjs", + "packages/bus/tests/names.test.mjs", + "packages/bus/tests/peer-transport.test.mjs", + "packages/bus/tests/peercred.test.mjs", + "packages/bus/tests/plugins-verb.test.mjs", + "packages/bus/tests/principal.test.mjs", + "packages/bus/tests/process.test.mjs", + "packages/bus/tests/project-await.test.mjs", + "packages/bus/tests/project-files.test.mjs", + "packages/bus/tests/project-runtime.test.mjs", + "packages/bus/tests/publish.test.mjs", + "packages/bus/tests/replies.test.mjs", + "packages/bus/tests/requirements.test.mjs", + "packages/bus/tests/review.test.mjs", + "packages/bus/tests/routes-verb.test.mjs", + "packages/bus/tests/schema.test.mjs", + "packages/bus/tests/single-use.test.mjs", + "packages/bus/tests/spec-migration.test.mjs", + "packages/bus/tests/spec-review.test.mjs", + "packages/bus/tests/spec-socket.test.mjs", + "packages/bus/tests/spec.test.mjs", + "packages/bus/tests/staff-request.test.mjs", + "packages/bus/tests/state.test.mjs", + "packages/bus/tests/store.test.mjs", + "packages/bus/tests/task-page.test.mjs", + "packages/bus/tests/task-read.test.mjs", + "packages/bus/tests/tasks.test.mjs", + "packages/bus/tests/tester-threads.test.mjs", + "packages/bus/tests/tester-writes.test.mjs", + "packages/bus/tests/tester.test.mjs", + "packages/bus/tests/thread-migration.test.mjs", + "packages/bus/tests/threads.test.mjs", + "packages/bus/tests/transport.test.mjs", + "packages/bus/tests/usage-broker.test.mjs", + "packages/bus/tests/usage-migration.test.mjs", + "packages/bus/tests/usage-runtime.test.mjs", + "packages/bus/tests/usage.test.mjs", + "packages/bus/tests/web.test.mjs", + "packages/bus/tests/workflow-roles.test.mjs" + ] + }, + { + "name": "webui", + "command": "/usr/bin/node", + "args": [ + "--test", + "--test-reporter=tap", + "--test-concurrency=2", + "packages/webui/tests/assistant.test.mjs", + "packages/webui/tests/board-held.test.mjs", + "packages/webui/tests/browser-edge.test.mjs", + "packages/webui/tests/browser.test.mjs", + "packages/webui/tests/bus-browser.test.mjs", + "packages/webui/tests/bus.test.mjs", + "packages/webui/tests/channel-chat.test.mjs", + "packages/webui/tests/chat-browser.test.mjs", + "packages/webui/tests/chat.test.mjs", + "packages/webui/tests/conversation.test.mjs", + "packages/webui/tests/discord.test.mjs", + "packages/webui/tests/docs-browser.test.mjs", + "packages/webui/tests/editor-browser.test.mjs", + "packages/webui/tests/editor-provenance.test.mjs", + "packages/webui/tests/editor.test.mjs", + "packages/webui/tests/history-return-flow.test.mjs", + "packages/webui/tests/instances-browser.test.mjs", + "packages/webui/tests/instances.test.mjs", + "packages/webui/tests/library-cli.test.mjs", + "packages/webui/tests/limits-browser.test.mjs", + "packages/webui/tests/limits-route.test.mjs", + "packages/webui/tests/markdown-preview.test.mjs", + "packages/webui/tests/messages.test.mjs", + "packages/webui/tests/pinned-copy.test.mjs", + "packages/webui/tests/preview.test.mjs", + "packages/webui/tests/project-file.test.mjs", + "packages/webui/tests/project-name-repo.test.mjs", + "packages/webui/tests/proof-cli.test.mjs", + "packages/webui/tests/proof.test.mjs", + "packages/webui/tests/reads.test.mjs", + "packages/webui/tests/relaunch.test.mjs", + "packages/webui/tests/return-flow.test.mjs", + "packages/webui/tests/routes-browser.test.mjs", + "packages/webui/tests/routes.test.mjs", + "packages/webui/tests/send-browser.test.mjs", + "packages/webui/tests/send.test.mjs", + "packages/webui/tests/serve.test.mjs", + "packages/webui/tests/service.test.mjs", + "packages/webui/tests/settings-form.test.mjs", + "packages/webui/tests/settings-write.test.mjs", + "packages/webui/tests/shell.test.mjs", + "packages/webui/tests/sso-browser.test.mjs", + "packages/webui/tests/sso.test.mjs", + "packages/webui/tests/tester-browser.test.mjs", + "packages/webui/tests/tester-cli.test.mjs", + "packages/webui/tests/tester-listener.test.mjs", + "packages/webui/tests/tester-socket.test.mjs", + "packages/webui/tests/usage-browser.test.mjs", + "packages/webui/tests/usage.test.mjs", + "packages/webui/tests/views.test.mjs" + ], + "kind": "node", + "wholeFiles": [ + "packages/webui/tests/assistant.test.mjs", + "packages/webui/tests/board-held.test.mjs", + "packages/webui/tests/browser-edge.test.mjs", + "packages/webui/tests/browser.test.mjs", + "packages/webui/tests/bus-browser.test.mjs", + "packages/webui/tests/bus.test.mjs", + "packages/webui/tests/channel-chat.test.mjs", + "packages/webui/tests/chat-browser.test.mjs", + "packages/webui/tests/chat.test.mjs", + "packages/webui/tests/conversation.test.mjs", + "packages/webui/tests/discord.test.mjs", + "packages/webui/tests/docs-browser.test.mjs", + "packages/webui/tests/editor-browser.test.mjs", + "packages/webui/tests/editor-provenance.test.mjs", + "packages/webui/tests/editor.test.mjs", + "packages/webui/tests/history-return-flow.test.mjs", + "packages/webui/tests/instances-browser.test.mjs", + "packages/webui/tests/instances.test.mjs", + "packages/webui/tests/library-cli.test.mjs", + "packages/webui/tests/limits-browser.test.mjs", + "packages/webui/tests/limits-route.test.mjs", + "packages/webui/tests/markdown-preview.test.mjs", + "packages/webui/tests/messages.test.mjs", + "packages/webui/tests/pinned-copy.test.mjs", + "packages/webui/tests/preview.test.mjs", + "packages/webui/tests/project-file.test.mjs", + "packages/webui/tests/project-name-repo.test.mjs", + "packages/webui/tests/proof-cli.test.mjs", + "packages/webui/tests/proof.test.mjs", + "packages/webui/tests/reads.test.mjs", + "packages/webui/tests/relaunch.test.mjs", + "packages/webui/tests/return-flow.test.mjs", + "packages/webui/tests/routes-browser.test.mjs", + "packages/webui/tests/routes.test.mjs", + "packages/webui/tests/send-browser.test.mjs", + "packages/webui/tests/send.test.mjs", + "packages/webui/tests/serve.test.mjs", + "packages/webui/tests/service.test.mjs", + "packages/webui/tests/settings-form.test.mjs", + "packages/webui/tests/settings-write.test.mjs", + "packages/webui/tests/shell.test.mjs", + "packages/webui/tests/sso-browser.test.mjs", + "packages/webui/tests/sso.test.mjs", + "packages/webui/tests/tester-browser.test.mjs", + "packages/webui/tests/tester-cli.test.mjs", + "packages/webui/tests/tester-listener.test.mjs", + "packages/webui/tests/tester-socket.test.mjs", + "packages/webui/tests/usage-browser.test.mjs", + "packages/webui/tests/usage.test.mjs", + "packages/webui/tests/views.test.mjs" + ] + }, + { + "name": "cli", + "command": "/usr/bin/node", + "args": [ + "--test", + "--test-reporter=tap", + "--test-concurrency=2", + "packages/cli/tests/app.test.mjs", + "packages/cli/tests/boot-status.test.mjs", + "packages/cli/tests/case1-accept.test.mjs", + "packages/cli/tests/case1-hostcheck.test.mjs", + "packages/cli/tests/case2-persona-import.test.mjs", + "packages/cli/tests/case2-unit.test.mjs", + "packages/cli/tests/channel-cli.test.mjs", + "packages/cli/tests/channel-recovery.test.mjs", + "packages/cli/tests/cli.test.mjs", + "packages/cli/tests/config.test.mjs", + "packages/cli/tests/credentials.test.mjs", + "packages/cli/tests/follow.test.mjs", + "packages/cli/tests/format.test.mjs", + "packages/cli/tests/gate-lane-fixtures.test.mjs", + "packages/cli/tests/gate-lane-image.test.mjs", + "packages/cli/tests/gate-lane-state.test.mjs", + "packages/cli/tests/gate-lane.test.mjs", + "packages/cli/tests/git-socket.test.mjs", + "packages/cli/tests/host.test.mjs", + "packages/cli/tests/hosts.test.mjs", + "packages/cli/tests/instances.test.mjs", + "packages/cli/tests/launch-account.test.mjs", + "packages/cli/tests/launch-limit-checks.test.mjs", + "packages/cli/tests/launch-limits.test.mjs", + "packages/cli/tests/launch-routes.test.mjs", + "packages/cli/tests/launcher.test.mjs", + "packages/cli/tests/limits-tokens.test.mjs", + "packages/cli/tests/limits.test.mjs", + "packages/cli/tests/mark-read.test.mjs", + "packages/cli/tests/names.test.mjs", + "packages/cli/tests/notifier.test.mjs", + "packages/cli/tests/other-tree.test.mjs", + "packages/cli/tests/project-name-repo.test.mjs", + "packages/cli/tests/project.test.mjs", + "packages/cli/tests/publish-socket.test.mjs", + "packages/cli/tests/stack-copy.test.mjs", + "packages/cli/tests/stack-instances.test.mjs", + "packages/cli/tests/stack-release-external.test.mjs", + "packages/cli/tests/stack-release.test.mjs", + "packages/cli/tests/stack-upgrade.test.mjs", + "packages/cli/tests/tester-http.test.mjs", + "packages/cli/tests/tester-reads.test.mjs", + "packages/cli/tests/tester-threads.test.mjs", + "packages/cli/tests/tester.test.mjs", + "packages/cli/tests/thread-cli.test.mjs", + "packages/cli/tests/thread-launch.test.mjs", + "packages/cli/tests/trackers-boot.test.mjs", + "packages/cli/tests/transport.test.mjs", + "packages/cli/tests/usage.test.mjs", + "packages/cli/tests/verbs.test.mjs" + ], + "kind": "node", + "wholeFiles": [ + "packages/cli/tests/app.test.mjs", + "packages/cli/tests/boot-status.test.mjs", + "packages/cli/tests/case1-accept.test.mjs", + "packages/cli/tests/case1-hostcheck.test.mjs", + "packages/cli/tests/case2-persona-import.test.mjs", + "packages/cli/tests/case2-unit.test.mjs", + "packages/cli/tests/channel-cli.test.mjs", + "packages/cli/tests/channel-recovery.test.mjs", + "packages/cli/tests/cli.test.mjs", + "packages/cli/tests/config.test.mjs", + "packages/cli/tests/credentials.test.mjs", + "packages/cli/tests/follow.test.mjs", + "packages/cli/tests/format.test.mjs", + "packages/cli/tests/gate-lane-fixtures.test.mjs", + "packages/cli/tests/gate-lane-image.test.mjs", + "packages/cli/tests/gate-lane-state.test.mjs", + "packages/cli/tests/gate-lane.test.mjs", + "packages/cli/tests/git-socket.test.mjs", + "packages/cli/tests/host.test.mjs", + "packages/cli/tests/hosts.test.mjs", + "packages/cli/tests/instances.test.mjs", + "packages/cli/tests/launch-account.test.mjs", + "packages/cli/tests/launch-limit-checks.test.mjs", + "packages/cli/tests/launch-limits.test.mjs", + "packages/cli/tests/launch-routes.test.mjs", + "packages/cli/tests/launcher.test.mjs", + "packages/cli/tests/limits-tokens.test.mjs", + "packages/cli/tests/limits.test.mjs", + "packages/cli/tests/mark-read.test.mjs", + "packages/cli/tests/names.test.mjs", + "packages/cli/tests/notifier.test.mjs", + "packages/cli/tests/other-tree.test.mjs", + "packages/cli/tests/project-name-repo.test.mjs", + "packages/cli/tests/project.test.mjs", + "packages/cli/tests/publish-socket.test.mjs", + "packages/cli/tests/stack-copy.test.mjs", + "packages/cli/tests/stack-instances.test.mjs", + "packages/cli/tests/stack-release-external.test.mjs", + "packages/cli/tests/stack-release.test.mjs", + "packages/cli/tests/stack-upgrade.test.mjs", + "packages/cli/tests/tester-http.test.mjs", + "packages/cli/tests/tester-reads.test.mjs", + "packages/cli/tests/tester-threads.test.mjs", + "packages/cli/tests/tester.test.mjs", + "packages/cli/tests/thread-cli.test.mjs", + "packages/cli/tests/thread-launch.test.mjs", + "packages/cli/tests/trackers-boot.test.mjs", + "packages/cli/tests/transport.test.mjs", + "packages/cli/tests/usage.test.mjs", + "packages/cli/tests/verbs.test.mjs" + ] + }, + { + "name": "packages_business_tests_business.test.mjs", + "command": "/usr/bin/node", + "args": [ + "--test", + "--test-reporter=tap", + "packages/business/tests/business.test.mjs" + ], + "kind": "node", + "wholeFiles": [ + "packages/business/tests/business.test.mjs" + ] + }, + { + "name": "packages_business_tests_cli.test.mjs", + "command": "/usr/bin/node", + "args": [ + "--test", + "--test-reporter=tap", + "packages/business/tests/cli.test.mjs" + ], + "kind": "node", + "wholeFiles": [ + "packages/business/tests/cli.test.mjs" + ] + }, + { + "name": "packages_business_tests_instance-settings.test.mjs", + "command": "/usr/bin/node", + "args": [ + "--test", + "--test-reporter=tap", + "packages/business/tests/instance-settings.test.mjs" + ], + "kind": "node", + "wholeFiles": [ + "packages/business/tests/instance-settings.test.mjs" + ] + }, + { + "name": "packages_business_tests_library-projects-protected.test.mjs", + "command": "/usr/bin/node", + "args": [ + "--test", + "--test-reporter=tap", + "packages/business/tests/library-projects-protected.test.mjs" + ], + "kind": "node", + "wholeFiles": [ + "packages/business/tests/library-projects-protected.test.mjs" + ] + }, + { + "name": "packages_business_tests_resolve.test.mjs", + "command": "/usr/bin/node", + "args": [ + "--test", + "--test-reporter=tap", + "packages/business/tests/resolve.test.mjs" + ], + "kind": "node", + "wholeFiles": [ + "packages/business/tests/resolve.test.mjs" + ] + }, + { + "name": "packages_library_tests_mirror.test.mjs", + "command": "/usr/bin/node", + "args": [ + "--test", + "--test-reporter=tap", + "packages/library/tests/mirror.test.mjs" + ], + "kind": "node", + "wholeFiles": [ + "packages/library/tests/mirror.test.mjs" + ] + }, + { + "name": "packages_project_tests_project.test.mjs", + "command": "/usr/bin/node", + "args": [ + "--test", + "--test-reporter=tap", + "packages/project/tests/project.test.mjs" + ], + "kind": "node", + "wholeFiles": [ + "packages/project/tests/project.test.mjs" + ] + }, + { + "name": "packages_seat_tests_checkout.test.mjs", + "command": "/usr/bin/node", + "args": [ + "--test", + "--test-reporter=tap", + "packages/seat/tests/checkout.test.mjs" + ], + "kind": "node", + "wholeFiles": [ + "packages/seat/tests/checkout.test.mjs" + ] + }, + { + "name": "test-auth.sh", + "command": "bash", + "args": [ + "scripts/test-auth.sh" + ], + "kind": "shell", + "wholeFiles": [ + "scripts/test-auth.sh" + ] + }, + { + "name": "test-conductor.sh", + "command": "bash", + "args": [ + "scripts/test-conductor.sh" + ], + "kind": "shell", + "wholeFiles": [ + "scripts/test-conductor.sh" + ] + }, + { + "name": "test-config.sh", + "command": "bash", + "args": [ + "scripts/test-config.sh" + ], + "kind": "shell", + "wholeFiles": [ + "scripts/test-config.sh" + ] + }, + { + "name": "test-discord.sh", + "command": "bash", + "args": [ + "scripts/test-discord.sh" + ], + "kind": "shell", + "wholeFiles": [ + "scripts/test-discord.sh" + ] + }, + { + "name": "test-extension-package.sh", + "command": "bash", + "args": [ + "scripts/test-extension-package.sh" + ], + "kind": "shell", + "wholeFiles": [ + "scripts/test-extension-package.sh" + ] + }, + { + "name": "test-foundation.sh", + "command": "bash", + "args": [ + "scripts/test-foundation.sh" + ], + "kind": "shell", + "wholeFiles": [ + "scripts/test-foundation.sh" + ] + }, + { + "name": "test-land-work.sh", + "command": "bash", + "args": [ + "scripts/test-land-work.sh" + ], + "kind": "shell", + "wholeFiles": [ + "scripts/test-land-work.sh" + ] + }, + { + "name": "test-queue.sh", + "command": "bash", + "args": [ + "scripts/test-queue.sh" + ], + "kind": "shell", + "wholeFiles": [ + "scripts/test-queue.sh" + ] + }, + { + "name": "test-release.sh", + "command": "bash", + "args": [ + "scripts/test-release.sh" + ], + "kind": "shell", + "wholeFiles": [ + "scripts/test-release.sh" + ] + }, + { + "name": "test-task.sh", + "command": "bash", + "args": [ + "scripts/test-task.sh" + ], + "kind": "shell", + "wholeFiles": [ + "scripts/test-task.sh" + ] + } +] diff --git a/agents/gander/work/queue-196/r4/gate/whole-results.json b/agents/gander/work/queue-196/r4/gate/whole-results.json new file mode 100644 index 000000000..f12e587b8 --- /dev/null +++ b/agents/gander/work/queue-196/r4/gate/whole-results.json @@ -0,0 +1,306 @@ +[ + { + "name": "bus", + "command": "/usr/bin/node", + "args": [ + "--test", + "--test-reporter=tap", + "--test-concurrency=2", + "packages/bus/tests/account-migration.test.mjs", + "packages/bus/tests/agents.test.mjs", + "packages/bus/tests/approval-binding.test.mjs", + "packages/bus/tests/broker.test.mjs", + "packages/bus/tests/business.test.mjs", + "packages/bus/tests/channel-proof.test.mjs", + "packages/bus/tests/chief-of-staff.test.mjs", + "packages/bus/tests/comment-cursors.test.mjs", + "packages/bus/tests/comment-migration.test.mjs", + "packages/bus/tests/creative.test.mjs", + "packages/bus/tests/credential-claim.test.mjs", + "packages/bus/tests/credential-status.test.mjs", + "packages/bus/tests/credential-store.test.mjs", + "packages/bus/tests/credential-verbs.test.mjs", + "packages/bus/tests/credentials.test.mjs", + "packages/bus/tests/csuite-messaging.test.mjs", + "packages/bus/tests/daily-quota-runtime.test.mjs", + "packages/bus/tests/decision-close.test.mjs", + "packages/bus/tests/decision-route.test.mjs", + "packages/bus/tests/decisions.test.mjs", + "packages/bus/tests/end-launch.test.mjs", + "packages/bus/tests/grant-enroll.test.mjs", + "packages/bus/tests/grant-executor.test.mjs", + "packages/bus/tests/grant-host.test.mjs", + "packages/bus/tests/grant-migration.test.mjs", + "packages/bus/tests/hard-waits.test.mjs", + "packages/bus/tests/host-run.test.mjs", + "packages/bus/tests/host-tools.test.mjs", + "packages/bus/tests/human.test.mjs", + "packages/bus/tests/instances-verb.test.mjs", + "packages/bus/tests/interpreter.test.mjs", + "packages/bus/tests/land.test.mjs", + "packages/bus/tests/launch-notice.test.mjs", + "packages/bus/tests/library.test.mjs", + "packages/bus/tests/limit-checks.test.mjs", + "packages/bus/tests/limit-stop.test.mjs", + "packages/bus/tests/limits-runtime.test.mjs", + "packages/bus/tests/limits.test.mjs", + "packages/bus/tests/message-citation.test.mjs", + "packages/bus/tests/messages.test.mjs", + "packages/bus/tests/messaging.test.mjs", + "packages/bus/tests/name-migration.test.mjs", + "packages/bus/tests/names.test.mjs", + "packages/bus/tests/peer-transport.test.mjs", + "packages/bus/tests/peercred.test.mjs", + "packages/bus/tests/plugins-verb.test.mjs", + "packages/bus/tests/principal.test.mjs", + "packages/bus/tests/process.test.mjs", + "packages/bus/tests/project-await.test.mjs", + "packages/bus/tests/project-files.test.mjs", + "packages/bus/tests/project-runtime.test.mjs", + "packages/bus/tests/publish.test.mjs", + "packages/bus/tests/replies.test.mjs", + "packages/bus/tests/requirements.test.mjs", + "packages/bus/tests/review.test.mjs", + "packages/bus/tests/routes-verb.test.mjs", + "packages/bus/tests/schema.test.mjs", + "packages/bus/tests/single-use.test.mjs", + "packages/bus/tests/spec-migration.test.mjs", + "packages/bus/tests/spec-review.test.mjs", + "packages/bus/tests/spec-socket.test.mjs", + "packages/bus/tests/spec.test.mjs", + "packages/bus/tests/staff-request.test.mjs", + "packages/bus/tests/state.test.mjs", + "packages/bus/tests/store.test.mjs", + "packages/bus/tests/task-page.test.mjs", + "packages/bus/tests/task-read.test.mjs", + "packages/bus/tests/tasks.test.mjs", + "packages/bus/tests/tester-threads.test.mjs", + "packages/bus/tests/tester-writes.test.mjs", + "packages/bus/tests/tester.test.mjs", + "packages/bus/tests/thread-migration.test.mjs", + "packages/bus/tests/threads.test.mjs", + "packages/bus/tests/transport.test.mjs", + "packages/bus/tests/usage-broker.test.mjs", + "packages/bus/tests/usage-migration.test.mjs", + "packages/bus/tests/usage-runtime.test.mjs", + "packages/bus/tests/usage.test.mjs", + "packages/bus/tests/web.test.mjs", + "packages/bus/tests/workflow-roles.test.mjs" + ], + "kind": "node", + "wholeFiles": [ + "packages/bus/tests/account-migration.test.mjs", + "packages/bus/tests/agents.test.mjs", + "packages/bus/tests/approval-binding.test.mjs", + "packages/bus/tests/broker.test.mjs", + "packages/bus/tests/business.test.mjs", + "packages/bus/tests/channel-proof.test.mjs", + "packages/bus/tests/chief-of-staff.test.mjs", + "packages/bus/tests/comment-cursors.test.mjs", + "packages/bus/tests/comment-migration.test.mjs", + "packages/bus/tests/creative.test.mjs", + "packages/bus/tests/credential-claim.test.mjs", + "packages/bus/tests/credential-status.test.mjs", + "packages/bus/tests/credential-store.test.mjs", + "packages/bus/tests/credential-verbs.test.mjs", + "packages/bus/tests/credentials.test.mjs", + "packages/bus/tests/csuite-messaging.test.mjs", + "packages/bus/tests/daily-quota-runtime.test.mjs", + "packages/bus/tests/decision-close.test.mjs", + "packages/bus/tests/decision-route.test.mjs", + "packages/bus/tests/decisions.test.mjs", + "packages/bus/tests/end-launch.test.mjs", + "packages/bus/tests/grant-enroll.test.mjs", + "packages/bus/tests/grant-executor.test.mjs", + "packages/bus/tests/grant-host.test.mjs", + "packages/bus/tests/grant-migration.test.mjs", + "packages/bus/tests/hard-waits.test.mjs", + "packages/bus/tests/host-run.test.mjs", + "packages/bus/tests/host-tools.test.mjs", + "packages/bus/tests/human.test.mjs", + "packages/bus/tests/instances-verb.test.mjs", + "packages/bus/tests/interpreter.test.mjs", + "packages/bus/tests/land.test.mjs", + "packages/bus/tests/launch-notice.test.mjs", + "packages/bus/tests/library.test.mjs", + "packages/bus/tests/limit-checks.test.mjs", + "packages/bus/tests/limit-stop.test.mjs", + "packages/bus/tests/limits-runtime.test.mjs", + "packages/bus/tests/limits.test.mjs", + "packages/bus/tests/message-citation.test.mjs", + "packages/bus/tests/messages.test.mjs", + "packages/bus/tests/messaging.test.mjs", + "packages/bus/tests/name-migration.test.mjs", + "packages/bus/tests/names.test.mjs", + "packages/bus/tests/peer-transport.test.mjs", + "packages/bus/tests/peercred.test.mjs", + "packages/bus/tests/plugins-verb.test.mjs", + "packages/bus/tests/principal.test.mjs", + "packages/bus/tests/process.test.mjs", + "packages/bus/tests/project-await.test.mjs", + "packages/bus/tests/project-files.test.mjs", + "packages/bus/tests/project-runtime.test.mjs", + "packages/bus/tests/publish.test.mjs", + "packages/bus/tests/replies.test.mjs", + "packages/bus/tests/requirements.test.mjs", + "packages/bus/tests/review.test.mjs", + "packages/bus/tests/routes-verb.test.mjs", + "packages/bus/tests/schema.test.mjs", + "packages/bus/tests/single-use.test.mjs", + "packages/bus/tests/spec-migration.test.mjs", + "packages/bus/tests/spec-review.test.mjs", + "packages/bus/tests/spec-socket.test.mjs", + "packages/bus/tests/spec.test.mjs", + "packages/bus/tests/staff-request.test.mjs", + "packages/bus/tests/state.test.mjs", + "packages/bus/tests/store.test.mjs", + "packages/bus/tests/task-page.test.mjs", + "packages/bus/tests/task-read.test.mjs", + "packages/bus/tests/tasks.test.mjs", + "packages/bus/tests/tester-threads.test.mjs", + "packages/bus/tests/tester-writes.test.mjs", + "packages/bus/tests/tester.test.mjs", + "packages/bus/tests/thread-migration.test.mjs", + "packages/bus/tests/threads.test.mjs", + "packages/bus/tests/transport.test.mjs", + "packages/bus/tests/usage-broker.test.mjs", + "packages/bus/tests/usage-migration.test.mjs", + "packages/bus/tests/usage-runtime.test.mjs", + "packages/bus/tests/usage.test.mjs", + "packages/bus/tests/web.test.mjs", + "packages/bus/tests/workflow-roles.test.mjs" + ], + "log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-196/r4/gate/bus.log", + "code": 0, + "signal": null, + "wallSeconds": 36.272237477999994, + "pass": 622, + "fail": 0, + "skip": 0, + "observedFailures": 0, + "stopped": false, + "complete": true + }, + { + "name": "webui", + "command": "/usr/bin/node", + "args": [ + "--test", + "--test-reporter=tap", + "--test-concurrency=2", + "packages/webui/tests/assistant.test.mjs", + "packages/webui/tests/board-held.test.mjs", + "packages/webui/tests/browser-edge.test.mjs", + "packages/webui/tests/browser.test.mjs", + "packages/webui/tests/bus-browser.test.mjs", + "packages/webui/tests/bus.test.mjs", + "packages/webui/tests/channel-chat.test.mjs", + "packages/webui/tests/chat-browser.test.mjs", + "packages/webui/tests/chat.test.mjs", + "packages/webui/tests/conversation.test.mjs", + "packages/webui/tests/discord.test.mjs", + "packages/webui/tests/docs-browser.test.mjs", + "packages/webui/tests/editor-browser.test.mjs", + "packages/webui/tests/editor-provenance.test.mjs", + "packages/webui/tests/editor.test.mjs", + "packages/webui/tests/history-return-flow.test.mjs", + "packages/webui/tests/instances-browser.test.mjs", + "packages/webui/tests/instances.test.mjs", + "packages/webui/tests/library-cli.test.mjs", + "packages/webui/tests/limits-browser.test.mjs", + "packages/webui/tests/limits-route.test.mjs", + "packages/webui/tests/markdown-preview.test.mjs", + "packages/webui/tests/messages.test.mjs", + "packages/webui/tests/pinned-copy.test.mjs", + "packages/webui/tests/preview.test.mjs", + "packages/webui/tests/project-file.test.mjs", + "packages/webui/tests/project-name-repo.test.mjs", + "packages/webui/tests/proof-cli.test.mjs", + "packages/webui/tests/proof.test.mjs", + "packages/webui/tests/reads.test.mjs", + "packages/webui/tests/relaunch.test.mjs", + "packages/webui/tests/return-flow.test.mjs", + "packages/webui/tests/routes-browser.test.mjs", + "packages/webui/tests/routes.test.mjs", + "packages/webui/tests/send-browser.test.mjs", + "packages/webui/tests/send.test.mjs", + "packages/webui/tests/serve.test.mjs", + "packages/webui/tests/service.test.mjs", + "packages/webui/tests/settings-form.test.mjs", + "packages/webui/tests/settings-write.test.mjs", + "packages/webui/tests/shell.test.mjs", + "packages/webui/tests/sso-browser.test.mjs", + "packages/webui/tests/sso.test.mjs", + "packages/webui/tests/tester-browser.test.mjs", + "packages/webui/tests/tester-cli.test.mjs", + "packages/webui/tests/tester-listener.test.mjs", + "packages/webui/tests/tester-socket.test.mjs", + "packages/webui/tests/usage-browser.test.mjs", + "packages/webui/tests/usage.test.mjs", + "packages/webui/tests/views.test.mjs" + ], + "kind": "node", + "wholeFiles": [ + "packages/webui/tests/assistant.test.mjs", + "packages/webui/tests/board-held.test.mjs", + "packages/webui/tests/browser-edge.test.mjs", + "packages/webui/tests/browser.test.mjs", + "packages/webui/tests/bus-browser.test.mjs", + "packages/webui/tests/bus.test.mjs", + "packages/webui/tests/channel-chat.test.mjs", + "packages/webui/tests/chat-browser.test.mjs", + "packages/webui/tests/chat.test.mjs", + "packages/webui/tests/conversation.test.mjs", + "packages/webui/tests/discord.test.mjs", + "packages/webui/tests/docs-browser.test.mjs", + "packages/webui/tests/editor-browser.test.mjs", + "packages/webui/tests/editor-provenance.test.mjs", + "packages/webui/tests/editor.test.mjs", + "packages/webui/tests/history-return-flow.test.mjs", + "packages/webui/tests/instances-browser.test.mjs", + "packages/webui/tests/instances.test.mjs", + "packages/webui/tests/library-cli.test.mjs", + "packages/webui/tests/limits-browser.test.mjs", + "packages/webui/tests/limits-route.test.mjs", + "packages/webui/tests/markdown-preview.test.mjs", + "packages/webui/tests/messages.test.mjs", + "packages/webui/tests/pinned-copy.test.mjs", + "packages/webui/tests/preview.test.mjs", + "packages/webui/tests/project-file.test.mjs", + "packages/webui/tests/project-name-repo.test.mjs", + "packages/webui/tests/proof-cli.test.mjs", + "packages/webui/tests/proof.test.mjs", + "packages/webui/tests/reads.test.mjs", + "packages/webui/tests/relaunch.test.mjs", + "packages/webui/tests/return-flow.test.mjs", + "packages/webui/tests/routes-browser.test.mjs", + "packages/webui/tests/routes.test.mjs", + "packages/webui/tests/send-browser.test.mjs", + "packages/webui/tests/send.test.mjs", + "packages/webui/tests/serve.test.mjs", + "packages/webui/tests/service.test.mjs", + "packages/webui/tests/settings-form.test.mjs", + "packages/webui/tests/settings-write.test.mjs", + "packages/webui/tests/shell.test.mjs", + "packages/webui/tests/sso-browser.test.mjs", + "packages/webui/tests/sso.test.mjs", + "packages/webui/tests/tester-browser.test.mjs", + "packages/webui/tests/tester-cli.test.mjs", + "packages/webui/tests/tester-listener.test.mjs", + "packages/webui/tests/tester-socket.test.mjs", + "packages/webui/tests/usage-browser.test.mjs", + "packages/webui/tests/usage.test.mjs", + "packages/webui/tests/views.test.mjs" + ], + "log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-196/r4/gate/webui.log", + "code": 1, + "signal": null, + "wallSeconds": 113.151197196, + "pass": 303, + "fail": 1, + "skip": 1, + "observedFailures": 1, + "stopped": false, + "complete": true + } +] diff --git a/agents/gander/work/queue-196/r4/gate/whole.mjs b/agents/gander/work/queue-196/r4/gate/whole.mjs new file mode 100644 index 000000000..bccc72902 --- /dev/null +++ b/agents/gander/work/queue-196/r4/gate/whole.mjs @@ -0,0 +1,23 @@ +import {spawn} from 'node:child_process';import {readFileSync,writeFileSync,readdirSync} from 'node:fs';import {join} from 'node:path';import {performance} from 'node:perf_hooks'; +const root='/mnt/storage/scratch/tmp/g196-tree-tn651z',out=new URL('.',import.meta.url).pathname; +const jobs=[]; +for(const pkg of ['bus','webui','cli']){const files=readdirSync(join(root,'packages',pkg,'tests')).filter(n=>n.endsWith('.test.mjs')).sort().map(n=>`packages/${pkg}/tests/${n}`);jobs.push({name:pkg,command:process.execPath,args:['--test','--test-reporter=tap','--test-concurrency=2',...files],kind:'node',wholeFiles:files});} +const extras=JSON.parse(readFileSync(new URL('../whole-test-union.json',import.meta.url),'utf8')).extraOutsideWholePackageSuites; +for(const file of extras)jobs.push({name:file.replaceAll('/','_'),command:process.execPath,args:['--test','--test-reporter=tap',file],kind:'node',wholeFiles:[file]}); +for(const file of readdirSync(join(root,'scripts')).filter(n=>/^test-.*\.sh$/.test(n)).sort())jobs.push({name:file,command:'bash',args:['scripts/'+file],kind:'shell',wholeFiles:['scripts/'+file]}); +writeFileSync(out+'whole-plan.json',JSON.stringify(jobs,null,2)+'\n'); +const results=[]; +for(const job of jobs){ + const log=out+job.name+'.log',start=performance.now();let text='',buffer='',failures=0,stopped=false; + console.log('START '+job.name+' '+job.wholeFiles.length+' whole file(s)'); + const child=spawn('bash',['-c','set -o pipefail; { python3 "$G196_BUSY" && "$@"; } 2>&1 | tee "$G196_LOG"','--',job.command,...job.args],{cwd:root,env:{...process.env,G196_LOG:log},stdio:['ignore','pipe','pipe'],detached:true}); + const consume=data=>{const part=String(data);text+=part;buffer+=part;const lines=buffer.split('\n');buffer=lines.pop();for(const raw of lines){const line=raw.replace(/\x1b\[[0-9;]*m/g,'');if(/^\s*not ok \d/.test(line)||/^FAIL(?:\s|:)/.test(line)){failures++;if(failures>=2&&!stopped){stopped=true;process.kill(-child.pid,'SIGTERM');}}}}; + child.stdout.on('data',consume);child.stderr.on('data',consume); + const status=await new Promise(resolve=>child.on('close',(code,signal)=>resolve({code,signal}))); + const summary=key=>{const matches=[...text.matchAll(new RegExp('^# '+key+' (\\d+)','gm'))];return matches.length?Number(matches.at(-1)[1]):null;}; + const shell=[...text.matchAll(/(\d+) passed,\s*(\d+) failed/g)].at(-1); + const result={...job,log,...status,wallSeconds:(performance.now()-start)/1000,pass:job.kind==='node'?summary('pass'):shell?Number(shell[1]):null,fail:job.kind==='node'?summary('fail'):shell?Number(shell[2]):null,skip:job.kind==='node'?summary('skipped'):0,observedFailures:failures,stopped,complete:!stopped}; + results.push(result);writeFileSync(out+'whole-results.json',JSON.stringify(results,null,2)+'\n'); + console.log('END '+job.name+' '+JSON.stringify({code:status.code,signal:status.signal,pass:result.pass,fail:result.fail,skip:result.skip,wallSeconds:result.wallSeconds,stopped})); + if(status.code!==0||failures||result.pass===null){process.exitCode=1;console.log('STOP '+job.name);break;} +} diff --git a/agents/gander/work/queue-196/r4/mutated-paths-stat.txt b/agents/gander/work/queue-196/r4/mutated-paths-stat.txt new file mode 100644 index 000000000..a3d7f7f41 --- /dev/null +++ b/agents/gander/work/queue-196/r4/mutated-paths-stat.txt @@ -0,0 +1,3 @@ + packages/bus/src/broker.mjs | 27 ++++++++++++++++++++++++++- + packages/bus/src/server.mjs | 4 ++-- + 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/agents/gander/work/queue-196/r4/patch-id-after.txt b/agents/gander/work/queue-196/r4/patch-id-after.txt new file mode 100644 index 000000000..7a126adb9 --- /dev/null +++ b/agents/gander/work/queue-196/r4/patch-id-after.txt @@ -0,0 +1 @@ +22057b82181f42301c8819fbb5d0be134c8c79bc 0000000000000000000000000000000000000000 diff --git a/agents/gander/work/queue-196/r4/patch-id-before.txt b/agents/gander/work/queue-196/r4/patch-id-before.txt new file mode 100644 index 000000000..4cd8983e6 --- /dev/null +++ b/agents/gander/work/queue-196/r4/patch-id-before.txt @@ -0,0 +1 @@ +81901f8d5fe07e7b941d398f9240e835df29cb64 0000000000000000000000000000000000000000 diff --git a/agents/gander/work/queue-196/r4/range-diff.txt b/agents/gander/work/queue-196/r4/range-diff.txt new file mode 100644 index 000000000..35441ebe0 --- /dev/null +++ b/agents/gander/work/queue-196/r4/range-diff.txt @@ -0,0 +1,45 @@ +1: a95afb43b ! 1: 19073a8e0 gander: preserve row 196 human boundary build for rebase + @@ Commit message + + ## BUILD-LOG.md ## + @@ BUILD-LOG.md: Before: managed project/thread verbs had no Console conversation area. After: fi + - 2026-10-21T01:28:05Z | Darkwing | row 232 #1734 installer I1 build, round 1 in review | Before: stack-release.sh managed only user units (systemctl --user), and stack-copy.sh had no bundle copy. After: --units external (adopt, activate, rollback --to, status, confirm, revert, gate --since, AWAITING-UNITS, stale-start, external-pm, --plan --expect-from) and stack-copy check --units external, copy --bundle FILE SHA, wrapper ID --create; user mode byte-identical to the base by test. First build 0af0c73c6 on 00d4cc1f6; rebased onto row 200 (cb5fdb064) as a0ffabc3f on darkwing/row232-r1; --sso refused under external (D9), row 200 config_checks run under external (D10). Gate on Sage's slot (sage-1618): cli 561/0, every scripts/test-*.sh green; 17/17 mutants killed. Results commit 84f1a91e6 (pushed, seat branch only). Manifest 7a3b4ea1 (9 paths), queue revs 2595-2596, request comment 29825, reviewer Filbert. Packet agents/darkwing/work/queue-232/BUILD.md. + - 2026-10-21T04:50:44Z | Darkwing | row 233 #1735 installer I3 build, round 1 in review | Before: root had no upgrade driver for root-owned units and no host run sheet; stack-release.sh had no rehearse --backup last and no external plan refusals. After: scripts/stack-upgrade.sh upgrade and rollback (r6 A1-A5, A2f, R1-R4) with 20 tests, docs/guides/host-run-sheet.md, TOOLS.md lines, and on Sage's rulings stack-release.sh --backup last, BACKUP_STORE and the --plan refusals open-activation and migrate-required (3 tests). Base e65a3ab4d (row 232's landing). Gate on Sage's slot (sage-1704) on d99166ade: cli 616/0, every scripts/test-*.sh green, 1201/0 summed by awk; m1-m8 8/8 killed. Correction: the process sweep after the gate found an orphaned sleep 60 from the lock test's flock holder (N1); 08db6ac3f fixes it test only, Sage ruled the gate stands (sage-1707), rerun c0 20/0 and m1 killed with 0 left (sage-1708). Tip 1a1dc80ca (pushed, seat branch only). Manifest 464ce9eb (7 paths), queue revs 2644 and 2647, request comment 29901, reviewer Filbert. Packet agents/darkwing/work/queue-233/BUILD.md. + 2026-10-21T06:37:41Z | Darkwing | row 240 #1746 installer I4 build, round 1 in review | Before: root had no host check for the bwrap AppArmor profile, its pins or a boot unit, and stack-upgrade.sh exited 1 args-failed when the args move after A5 failed, while exit 1 means the old copy runs. After: scripts/case1-hostcheck.sh (seven items, --check, --enforce, --upstream), scripts/case1-pins.sh, mosaic-hostcheck.service and 16 tests; the args move failure exits 5 args-failed, documented in TOOLS.md and run sheet section 6 and tested; run sheet section 3 puts the pinned npm on PATH and names the bin/claude.exe --claude path; sections 8 and 10 have precheck lines. Verification: slot run r1 on 47ec9fe2f failed at the singles (the new N1 test's after hook threw ENOENT after the fixture cleanup removed the root); b45852daa drops the hook; r2 on b45852daa green: singles 16/0 and 21/0, c0 plus M1-M8 8/8 killed, cli 639/0, scripts 585/0. Candidate darkwing/row240-r3 ad1b23ab2 on c771a36f4, manifest 573ece95 (9 paths), revs 2694 and 2695, comment 29943. + + 2026-10-21T09:00Z | Herb | row 215 C2-04 implementation started | Before: business files reject library entries and root consumers assume code projects; the organization writer can change all project mappings. Plan: approved manifest 2522025af on C2-01 a2c72ac95, Filbert reply to herb-0056, scope sage-1848/1852/1860. Focused slot sage-1869 observed expected red mapping and M9 cases, then 14/0 green for new T1/T2 cases, no skips; clear herb-0062 with empty test/fixture process scan. After that clear, T3/T4 tests and host-only mirror/bus implementation continue under sage-1874, unrun while Sage holds the slot. Full singles, suites and implementation review remain pending. No source commit, push or live change. + + 2026-10-21T13:29Z | Herb | row 215 C2-04 source verified for candidate review | Before: business code assumed every project had a root and organization writes could replace project mappings. After: library mappings load without agent checkouts or publish grants, project mappings are protected before and after serialization, host-only bare mirrors share a bounded publication lock with sync, and library.file/library.status are human-only async bus reads. Base f8276c5eb preserves all nine landed overlaps. Granted sage-2008 whole singles: 16 files, 451/0, no skips or cancellations, ended 13:27:27.279728Z; all source hashes unchanged, process scan empty, no own-path drift through 8a04f4aa4. Full landing gate and implementation review remain pending; no HTTP, sync writer or live change. + + + +2026-10-20 19:09:44 UTC | Gander row 196 #1694 design phase | Before: tester TCP reaches every local uid and human proofs do not bind the socket peer. After: design draft at agents/gander/work/queue-196/DESIGN.md inventories listeners, proposes private tester HTTP and SO_PEERCRED binding, aligns the per-request principal contract with Morgana and Gizmoduck, and lists migration, tests, mutants and same-uid limits. Python versus other credential options and Console provenance require Duckworth ruling. Documentation only. No product code, suite, live probe, secret access or deployment. + + + @@ packages/bus/src/server.mjs + @@ + import { createServer } from 'node:net'; + import { lstatSync, chmodSync, unlinkSync } from 'node:fs'; + - import { BusError, TASK_VERBS, WEB_VERBS, HOST_VERBS, HOSTS_VERBS, PROJECT_FILE_VERBS, PROJECT_SAVE_VERB, PROJECT_SAVE_REQUEST_MAX } from './broker.mjs'; + + import { BusError, TASK_VERBS, WEB_VERBS, HOST_VERBS, HOSTS_VERBS, PROJECT_FILE_VERBS, LIBRARY_VERBS, PROJECT_SAVE_VERB, PROJECT_SAVE_REQUEST_MAX } from './broker.mjs'; + +import { inspectInterpreter } from './interpreter.mjs'; + +import { createPeerReader } from './peercred.mjs'; + const LIMIT = 65536; + @@ packages/webui/src/cli.mjs: try { + } + const reads = consoleReads({ root: REPO, queueRoot: options.checkout ?? REPO, system, configDir: configDir(), rolesDir: rolesDir(), business: options.business ?? null }); + @@ packages/webui/src/cli.mjs: try { + - server = await startServer({ board: options.board, port: options.port, bus, reads, preview: options.preview, sso, proof, send, settingsWrite, projectFiles, projectFile, projectSave, chat, nameWrite, assistantStop, instancesWrite, routesWrite }); + + server = await startServer({ board: options.board, port: options.port, bus, reads, preview: options.preview, sso, proof, send, settingsWrite, projectFiles, projectFile, libraryFile, libraryStatus, projectSave, chat, nameWrite, assistantStop, instancesWrite, routesWrite }); + } catch (err) { sso?.close(); throw err; } + let testerServer = null; + - if (testerPort !== null) { + @@ packages/webui/src/cli.mjs: try { + + testerServer = await startTesterSocket({ dataRoot: system.dataRoot, board: options.board, + tester: true, testerNoSignIn: ssoOn, testerProofHeader: proof?.header ?? null, testerAuthHeader: options.preview?.header ?? null, bus: testerBus, reads, + projectFiles: args => call('project.files', args), projectFile: args => call('project.file', args), + - instancesWrite: args => call('instances.set', args), routesWrite: args => call('routes.set', args), nameWrite: args => call('name.set', args), + + libraryFile: args => call('library.file', args), libraryStatus: args => call('library.status', args), + @@ packages/webui/src/cli.mjs: try { + const health = sso?.health() ?? {}; + const ssoLines = sso ? `\nSign-in: ${sso.publicOrigin}/ (--sso), ${send ? 'reads and human writes (--send)' : 'read-only'}` + sso.summary().map(p => `\nSign-in provider: ${p.id} issuer ${p.issuer} subjects ${p.subjects} (${health[p.id]})`).join('') : ''; +2: 07251d956 = 2: 6c6efc125 gander: record row 196 rebase gate stop and row 252 design +3: 9d3ba3f59 = 3: 4519a14b2 gander: classify runtime mutation failures and bound process groups +4: 0b3cf2742 = 4: 0ca104acc gander: record r2 stop two timings and approved row 252 notes +5: c7e54236e = 5: 84aea3063 gander: pin SSO and tester socket release argument order +6: b1076c8b8 = 6: f8a59e6aa gander: guard unique mutation targets and separate SSO ordering mutant diff --git a/agents/gander/work/queue-196/r4/test-patch-id-after.txt b/agents/gander/work/queue-196/r4/test-patch-id-after.txt new file mode 100644 index 000000000..8587142d8 --- /dev/null +++ b/agents/gander/work/queue-196/r4/test-patch-id-after.txt @@ -0,0 +1 @@ +533c50a4efc6e0dc8fa3b6da4b1456029bbda490 0000000000000000000000000000000000000000 diff --git a/agents/gander/work/queue-196/r4/test-patch-id-before.txt b/agents/gander/work/queue-196/r4/test-patch-id-before.txt new file mode 100644 index 000000000..8587142d8 --- /dev/null +++ b/agents/gander/work/queue-196/r4/test-patch-id-before.txt @@ -0,0 +1 @@ +533c50a4efc6e0dc8fa3b6da4b1456029bbda490 0000000000000000000000000000000000000000 diff --git a/agents/gander/work/queue-196/r4/uniqueness-final.json b/agents/gander/work/queue-196/r4/uniqueness-final.json new file mode 100644 index 000000000..dce764008 --- /dev/null +++ b/agents/gander/work/queue-196/r4/uniqueness-final.json @@ -0,0 +1,372 @@ +[ + { + "id": "M1", + "file": "packages/webui/src/serve.mjs", + "targets": [ + { + "method": "replace", + "target": "if (tester) return bindTesterSocket(server, testerSocket);", + "count": 1 + } + ], + "accepted": true + }, + { + "id": "M2", + "file": "packages/webui/src/tester-socket.mjs", + "targets": [ + { + "method": "replace", + "target": "chmodSync(temporary, 0o600)", + "count": 1 + } + ], + "accepted": true + }, + { + "id": "M3", + "file": "packages/webui/src/serve.mjs", + "targets": [ + { + "method": "replace", + "target": "if (tester && (Object.hasOwn(req.headers, 'authorization')", + "count": 1 + } + ], + "accepted": true + }, + { + "id": "M4", + "file": "packages/bus/src/principal.mjs", + "targets": [ + { + "method": "replace", + "target": "peer.pid !== proof.pid", + "count": 1 + } + ], + "accepted": true + }, + { + "id": "M5", + "file": "packages/bus/src/peercred.mjs", + "targets": [ + { + "method": "replace", + "target": "finish(false, Object.freeze(p));\n } catch { finish(true); }", + "count": 1 + } + ], + "accepted": true + }, + { + "id": "M6", + "file": "packages/bus/src/principal.mjs", + "targets": [ + { + "method": "replace", + "target": "peer.uid !== process.getuid()", + "count": 1 + } + ], + "accepted": true + }, + { + "id": "M7", + "file": "packages/webui/src/tester-socket.mjs", + "targets": [ + { + "method": "replace", + "target": "(dir.mode & 0o077)", + "count": 1 + } + ], + "accepted": true + }, + { + "id": "M8", + "file": "packages/bus/src/human.mjs", + "targets": [ + { + "method": "replace", + "target": "current.env !== null && MARKERS.some", + "count": 1 + } + ], + "accepted": true + }, + { + "id": "M9", + "file": "packages/bus/src/human.mjs", + "targets": [ + { + "method": "replace", + "target": "if (again.startTime !== proof.startTime || again.ppid !== p.ppid)", + "count": 1 + } + ], + "accepted": true + }, + { + "id": "M10", + "file": "packages/bus/src/principal.mjs", + "targets": [ + { + "method": "replace", + "target": "if (parent.uid !== peer.uid || parent.argv[1] !== resolve(paths.console) || parent.argv[2] !== 'serve')", + "count": 1 + } + ], + "accepted": true + }, + { + "id": "M11", + "file": "packages/bus/src/principal.mjs", + "targets": [ + { + "method": "replace", + "target": "import { resolve }", + "count": 1 + }, + { + "method": "replace", + "target": "parent.argv[1] !== resolve(paths.console)", + "count": 1 + } + ], + "accepted": true + }, + { + "id": "M12", + "file": "packages/bus/src/human.mjs", + "targets": [ + { + "method": "replace", + "target": "Object.keys(proof).some((k) => !['pid', 'startTime', 'nonce', 'business'].includes(k))", + "count": 1 + } + ], + "accepted": true + }, + { + "id": "M13", + "file": "packages/bus/src/server.mjs", + "targets": [ + { + "method": "replace", + "target": "broker.disconnect(boundCap)", + "count": 1 + } + ], + "accepted": true + }, + { + "id": "M14", + "file": "packages/bus/src/principal.mjs", + "targets": [ + { + "method": "replace", + "target": "verifyHuman(checked, { cliPath: paths[kind], launches, readProcess,\n nonceKey: kind === 'user' ? 'MOSAIC_BUS_USER_NONCE' : 'MOSAIC_BUS_CLI_NONCE' })", + "count": 1 + } + ], + "accepted": true + }, + { + "id": "M15", + "file": "scripts/stack-release.sh", + "targets": [ + { + "method": "replace", + "target": "RUN_CONSOLE=(\"${without_tester[@]}\" --tester-socket)", + "count": 1 + } + ], + "accepted": true + }, + { + "id": "M16", + "file": "scripts/stack-release.sh", + "targets": [ + { + "method": "replace", + "target": "RUN_CONSOLE=(\"${without_tester[@]}\") DROP_TESTER=\"--tester-socket", + "count": 1 + } + ], + "accepted": true + }, + { + "id": "M17", + "file": "packages/bus/src/broker.mjs", + "targets": [ + { + "method": "replace", + "target": "if (this.#business(record.business).vars?.['bus.tester'] !== true)", + "count": 1 + } + ], + "accepted": true + }, + { + "id": "M18", + "file": "packages/bus/src/principal.mjs", + "targets": [ + { + "method": "replace", + "target": "return { kind: 'user', business, id: proof.user }", + "count": 1 + } + ], + "accepted": true + }, + { + "id": "M19", + "file": "packages/cli/src/tester-http.mjs", + "targets": [ + { + "method": "replace", + "target": "socketPath: testerSocketPath(dataRoot)", + "count": 1 + } + ], + "accepted": true + }, + { + "id": "M20", + "file": "packages/bus/src/peercred.mjs", + "targets": [ + { + "method": "replace", + "target": "export function createPeerReader", + "count": 1 + } + ], + "accepted": true + }, + { + "id": "M21", + "file": "packages/bus/src/interpreter.mjs", + "targets": [ + { + "method": "replace", + "target": "s.uid !== 0 || (s.mode & 0o022)", + "count": 1 + } + ], + "accepted": true + }, + { + "id": "M22", + "file": "packages/bus/src/server.mjs", + "targets": [ + { + "method": "replace", + "target": " if (kind) {", + "count": 1 + } + ], + "accepted": true + }, + { + "id": "M23", + "file": "packages/bus/src/interpreter.mjs", + "targets": [ + { + "method": "replace", + "target": "export function recordInterpreterStart(directory, record) {", + "count": 1 + } + ], + "accepted": true + }, + { + "id": "M24", + "file": "packages/webui/src/tester-socket.mjs", + "targets": [ + { + "method": "replace", + "target": "const temporary = join(parent, '.' + randomBytes(4).toString('hex') + '.s');", + "count": 1 + } + ], + "accepted": true + }, + { + "id": "M25", + "file": "packages/bus/src/interpreter.mjs", + "targets": [ + { + "method": "replace", + "target": "constants.O_WRONLY | constants.O_APPEND | constants.O_CREAT | constants.O_NOFOLLOW | constants.O_NONBLOCK, 0o600", + "count": 1 + } + ], + "accepted": true + }, + { + "id": "M26", + "file": "packages/bus/src/peercred.mjs", + "targets": [ + { + "method": "replace", + "target": "if (!s.isFile() || s.isSymbolicLink()) throw Error();", + "count": 1 + }, + { + "method": "replace", + "target": "catch { throw refused(); }", + "count": 1 + } + ], + "accepted": true + }, + { + "id": "M27", + "file": "packages/bus/src/peercred.mjs", + "targets": [ + { + "method": "replace", + "target": " await Promise.all([...children].map(child => new Promise(resolve => {\n child.once('close', resolve);\n child.kill('SIGKILL');\n })));", + "count": 1 + } + ], + "accepted": true + }, + { + "id": "M28", + "file": "scripts/stack-release.sh", + "targets": [ + { + "method": "replace", + "target": "case \"${without_proof[i]}\" in --send | --tester-port | --tester-socket) break", + "count": 1 + } + ], + "accepted": true + }, + { + "id": "M28b", + "file": "scripts/stack-release.sh", + "targets": [ + { + "method": "replace", + "target": "case \"${kept[i]}\" in --send | --tester-port | --tester-socket) break", + "count": 1 + } + ], + "accepted": true + }, + { + "id": "M29", + "file": "scripts/stack-release.sh", + "targets": [ + { + "method": "replace", + "target": " node -e 'const fs=require(\"fs\"),p=require(\"path\"),root=process.argv[1],parent=p.join(root,\"console\");if(!p.isAbsolute(root)||Buffer.byteLength(p.join(parent,\"tester.sock\"))>107)process.exit(1);try{const s=fs.lstatSync(parent);if(!s.isDirectory()||s.isSymbolicLink()||s.uid!==process.getuid()||(s.mode&0o077))process.exit(1);}catch(e){if(e.code!==\"ENOENT\")process.exit(1);}' -- \"$DATA\" || check_refuse tester-socket-path \"private tester path is too long or its parent is unsafe\"\n", + "count": 1 + } + ], + "accepted": true + } +] diff --git a/agents/gander/work/queue-196/r4/whole-test-union.json b/agents/gander/work/queue-196/r4/whole-test-union.json new file mode 100644 index 000000000..9c588c34b --- /dev/null +++ b/agents/gander/work/queue-196/r4/whole-test-union.json @@ -0,0 +1,45 @@ +{ + "rule": "whole files touched by either side", + "row196": [ + "packages/bus/tests/channel-proof.test.mjs", + "packages/bus/tests/interpreter.test.mjs", + "packages/bus/tests/peer-transport.test.mjs", + "packages/bus/tests/peercred.test.mjs", + "packages/bus/tests/principal.test.mjs", + "packages/cli/tests/stack-release.test.mjs", + "packages/cli/tests/tester-http.test.mjs", + "packages/webui/tests/proof-cli.test.mjs", + "packages/webui/tests/proof.test.mjs", + "packages/webui/tests/service.test.mjs", + "packages/webui/tests/sso.test.mjs", + "packages/webui/tests/tester-browser.test.mjs", + "packages/webui/tests/tester-cli.test.mjs", + "packages/webui/tests/tester-listener.test.mjs", + "packages/webui/tests/tester-socket.test.mjs" + ], + "row215": [ + "packages/bus/tests/library.test.mjs", + "packages/business/tests/business.test.mjs", + "packages/business/tests/cli.test.mjs", + "packages/business/tests/instance-settings.test.mjs", + "packages/business/tests/library-projects-protected.test.mjs", + "packages/business/tests/resolve.test.mjs", + "packages/cli/tests/launcher.test.mjs", + "packages/cli/tests/stack-release.test.mjs", + "packages/cli/tests/trackers-boot.test.mjs", + "packages/library/tests/mirror.test.mjs", + "packages/project/tests/project.test.mjs", + "packages/seat/tests/checkout.test.mjs", + "packages/webui/tests/library-cli.test.mjs" + ], + "extraOutsideWholePackageSuites": [ + "packages/business/tests/business.test.mjs", + "packages/business/tests/cli.test.mjs", + "packages/business/tests/instance-settings.test.mjs", + "packages/business/tests/library-projects-protected.test.mjs", + "packages/business/tests/resolve.test.mjs", + "packages/library/tests/mirror.test.mjs", + "packages/project/tests/project.test.mjs", + "packages/seat/tests/checkout.test.mjs" + ] +} diff --git a/agents/gander/work/queue-196/r5/TESTER-PORT-AUDIT.md b/agents/gander/work/queue-196/r5/TESTER-PORT-AUDIT.md new file mode 100644 index 000000000..86589317c --- /dev/null +++ b/agents/gander/work/queue-196/r5/TESTER-PORT-AUDIT.md @@ -0,0 +1,50 @@ +# r5 static tester-port caller audit + +Candidate a415de022, parent r4 f8a59e6aa. No tests were run for this audit. +Source scope: current scripts/ and packages/, including tests, test helpers and +unit generators. Archived v1 and historical agents/ receipts are not installed +callers. README descriptions and a retired-flag refusal are listed separately. +Search: rg -l -- '--tester-port' scripts packages. Each returned source was read +at its call, render, parser or assertion; finding the text alone is not a launch. + +## Scripts and generated units + +| File | How the flag reaches or relates to serve | Disposition | +|---|---|---| +| scripts/case2-unit.sh | Parses the factory tester-port at 163/193, builds FLAGS at 196, validates it, and renders/checks `cli.mjs serve $FLAGS` at 356. | Real remaining producer. Out of r5 under mos-1198. Follow-up chained after 196 must migrate the installer and its factory fixtures before using it to enable the new tester. | +| scripts/case1-accept.sh | Reads the post-`--` serve argv from the saved installer args at 65 and requires numeric tester-port at 88. | Remaining acceptance consumer coupled to the old unit/args contract. Out of r5 under mos-1198; include with case2-unit in that follow-up. It must accept/check the new socket form before that window. | +| scripts/webui-service.sh | serve_flags emits a legacy tester-port pair into ExecStart. | Deliberate old-copy support. Install/render with an explicit new target refuses the retired port; --tester-socket support is checked. Default render is text only. Legacy tests do not start the current Console on TCP. | +| scripts/stack-release.sh | Builds RUN_CONSOLE with a tester-port only for a legacy target, then hands it to webui-service. | Deliberate migration/rollback compatibility. A marked new target requires explicit socket conversion for inherited TCP; unsupported socket rollback disables tester instead of reopening TCP. Failed activation recovery may restore the old saved security state, as documented. | +| scripts/instance.sh | Scans existing ExecStart tokens for tester-port to detect port ownership. | Parser only, not a producer or launch. Keeping it recognizes legacy units during migration and prevents port collisions. | + +## Every test file containing tester-port on r5 + +| Test file | Actual behavior and why retained | +|---|---| +| packages/webui/tests/tester-cli.test.mjs | The only remaining direct call to the real current `CLI serve` with tester-port. Every such call deliberately asserts exit 2 and a retired-flag message. Successful startup cases use tester-socket. Whole file passed on r4. | +| packages/webui/tests/service.test.mjs | Calls the service renderer/installer in fake-copy roots. Generated ExecStart lines may carry legacy tester-port; no current Console is launched by these assertions. Exercises legacy propagation, argument refusal and status. Whole file passed on r4. | +| packages/cli/tests/stack-release.test.mjs | Activates fixture copies whose stand-in cli source explicitly advertises the legacy flag; fake systemctl never executes a real tester listener. Also tests explicit socket conversion and unsupported rollback. Keep to protect old-copy migration semantics. | +| packages/cli/tests/stack-release-external.test.mjs | Passes tester-port to stack-release under external mode and expects usage refusal. Does not call serve or install that flag. Keep the negative external-authority case. | +| packages/cli/tests/case2-unit.test.mjs | Renders/checks scratch factory units with tester-port and tests profile/port refusals. Uses fake node/systemctl/copies, not the current Console. Correct for the existing installer contract; not proof that those units can start r5. The chained installer follow-up must migrate these fixtures with case2-unit.sh. | +| packages/cli/tests/case1-accept.test.mjs | Supplies legacy post-`--` serve args to the scratch acceptance harness, with fake systemctl/curl/ss/sudo/stat, and checks missing tester-port refusal. No actual current serve startup. Coupled to case1-accept.sh's old acceptance contract; migrate it in the same follow-up. | +| packages/cli/tests/case1-hostcheck.test.mjs | Writes textual scratch ExecStart examples containing tester-port for static host checks, including a missing-main-port refusal. Does not execute them. Keep as a legacy-unit/host-check fixture; it grants no claim about private tester startup. | + +Related helper packages/cli/tests/stack-release-fixture.mjs generates old-copy +cli source comments advertising tester-port and supplies the fake service +processes. It is deliberately legacy and consumed by the release tests, not +an independent current Console launch. No test-*.sh contains tester-port. + +## Non-callers and the repaired semantic conflict + +packages/webui/src/cli.mjs contains only the retired-flag refusal, not a tester-port +producer. packages/webui/README.md describes retirement/legacy conversion; it +passes no argv. library-cli.test.mjs no longer contains tester-port: r5 changes +only its activation flag to tester-socket. Its configured dataRoot is under its +own tmp(t) root, and startTesterSocket derives console/tester.sock there. Its +existing loader still intercepts startServer and captures both callback pairs; +no real listener is opened in this callback wiring test. The test name and all +assertions remain byte-identical to e54e05463. + +This list is input for Sage's follow-up row chained after 196. r5 intentionally +changes no product file. It does not claim the two root installer/acceptance +scripts have already migrated to the new transport. diff --git a/agents/gander/work/queue-196/r5/assertions-unchanged.json b/agents/gander/work/queue-196/r5/assertions-unchanged.json new file mode 100644 index 000000000..c9ecf47de --- /dev/null +++ b/agents/gander/work/queue-196/r5/assertions-unchanged.json @@ -0,0 +1,7 @@ +{ + "base": "e54e05463", + "onlyDifference": "'--tester-port', '7444' -> '--tester-socket'", + "entireRemainderByteIdentical": true, + "baseSha256": "1983912b76f01f8e6d0c564e3bbcd763c0b2c44044988b192ef827446f98556c", + "r5Sha256": "f505b5fc635aa699556c237a92401b495943e45e25ebfadab945d64477e3e86e" +} diff --git a/agents/gander/work/queue-196/r5/commit-patch-id.txt b/agents/gander/work/queue-196/r5/commit-patch-id.txt new file mode 100644 index 000000000..4f15bff65 --- /dev/null +++ b/agents/gander/work/queue-196/r5/commit-patch-id.txt @@ -0,0 +1 @@ +41e3237501720175a38b58d5564776f4aba54cb2 0000000000000000000000000000000000000000 diff --git a/agents/gander/work/queue-196/r5/commit.diff b/agents/gander/work/queue-196/r5/commit.diff new file mode 100644 index 000000000..bbd2c5fcc --- /dev/null +++ b/agents/gander/work/queue-196/r5/commit.diff @@ -0,0 +1,23 @@ +diff --git a/agents/gander/work/queue-196/BUILD.md b/agents/gander/work/queue-196/BUILD.md +index 77454ecbd..3111f38e7 100644 +--- a/agents/gander/work/queue-196/BUILD.md ++++ b/agents/gander/work/queue-196/BUILD.md +@@ -105,3 +105,5 @@ changes are planned before the batch. M1-M29 remain prepared and unexecuted. + + 2026-10-21 sage-2072 product test: added the merge-scoped SSO/socket conversion case without --send, asserting pointer argv order, rendered unit argv order, status agreement and no secret-file reads. Removing socket from sso_for_target is its planned RED case (M28b). Focused RED/GREEN remains pending the busy gate: Herb's suite was active at the preflight, so no test started. Runtime code unchanged. Mos mos-1197 owner-subject ruling recorded in queue-252/BUILD-NOTES.md. + 2026-10-21 sage-2072/2077 driver: unique string-target guard preflights every definition before any tests and before creating scratch state; M28 names without_proof, M28b names kept, M5 names the parse catch, M25 names append flags, M29 uses the unique full line. Static audit accepts all 30 definitions; zero/duplicate targets refuse. Against 64539c96b, M5 old/narrowed bytes match; M25 differs and joins the next batch. No mutation tests ran in this static check. ++ ++2026-10-21 mos-1198 r5: row 215 landed ahead of row 196; its library CLI fixture retained --tester-port, a semantic conflict despite the callback code merging. The sole test change switches activation to --tester-socket. The test name and every original assertion remain byte-identical; the existing startServer hook still captures both listener callback pairs. No product file changed. No test run before Sage's fourth-run grant; Duckworth reviews this hunk. +diff --git a/packages/webui/tests/library-cli.test.mjs b/packages/webui/tests/library-cli.test.mjs +index a308e4c0d..b9a0fc129 100644 +--- a/packages/webui/tests/library-cli.test.mjs ++++ b/packages/webui/tests/library-cli.test.mjs +@@ -22,7 +22,7 @@ test('C2-04 CLI: both listener callback pairs dispatch library verbs with their + return next(url,context); + }});`); + const result = spawnSync(process.execPath, [new URL('../src/cli.mjs', import.meta.url).pathname, +- 'serve', '--business', 'acme', '--port', '0', '--tester-port', '7444'], ++ 'serve', '--business', 'acme', '--port', '0', '--tester-socket'], + { env: { ...f.env, NODE_OPTIONS: `--import=${hook}` }, encoding: 'utf8', timeout: 10000 }); + assert.equal(result.status, 0, result.stdout + result.stderr); + const calls = readFileSync(log, 'utf8').trim().split('\n').filter(Boolean).map(JSON.parse); diff --git a/agents/gander/work/queue-196/r5/product-shas.json b/agents/gander/work/queue-196/r5/product-shas.json new file mode 100644 index 000000000..7553be0ec --- /dev/null +++ b/agents/gander/work/queue-196/r5/product-shas.json @@ -0,0 +1,2984 @@ +{ + "r4": "f8a59e6aa", + "r5": "a415de022", + "scope": "scripts, packages excluding tests/fixtures, adapters, roles, contracts, RELEASE and package manifests", + "count": 595, + "changed": [], + "files": [ + { + "path": "RELEASE", + "r4Sha256": "c4eb0d3a8ba06097c784ee6e9acf3bb24b4d01e93d7c5a596ace87b23ea30150", + "r5Sha256": "c4eb0d3a8ba06097c784ee6e9acf3bb24b4d01e93d7c5a596ace87b23ea30150" + }, + { + "path": "adapters/README.md", + "r4Sha256": "17aafd55d05df95f633dbc6d7d990dcf870c0bfe9a66f06a337462cc06f7226a", + "r5Sha256": "17aafd55d05df95f633dbc6d7d990dcf870c0bfe9a66f06a337462cc06f7226a" + }, + { + "path": "adapters/claude/adapter.sh", + "r4Sha256": "37cc5d74636465c592c9eb8f3d9b66c2632299be922444737b32d3d3be43c239", + "r5Sha256": "37cc5d74636465c592c9eb8f3d9b66c2632299be922444737b32d3d3be43c239" + }, + { + "path": "adapters/mock/adapter.sh", + "r4Sha256": "f31e40e801a22285d0d7b2952cf5579be968d3b4e0acceefd399fbb0e149a036", + "r5Sha256": "f31e40e801a22285d0d7b2952cf5579be968d3b4e0acceefd399fbb0e149a036" + }, + { + "path": "adapters/pi/adapter.sh", + "r4Sha256": "1e0487ab682ff97e974a9fed4765994f70ee362058bd0aa6aee32c2a7891e0d2", + "r5Sha256": "1e0487ab682ff97e974a9fed4765994f70ee362058bd0aa6aee32c2a7891e0d2" + }, + { + "path": "contracts/CONSTITUTION.md", + "r4Sha256": "ca48e94ab814149f7a40f44bb8fce14f29215722f7a09d991186b3780fb2032b", + "r5Sha256": "ca48e94ab814149f7a40f44bb8fce14f29215722f7a09d991186b3780fb2032b" + }, + { + "path": "contracts/SOUL.md", + "r4Sha256": "2bdb3abb4cd6c13e2f1ddcd55b07f19ef69d3528738922c7473d16fc74072a7f", + "r5Sha256": "2bdb3abb4cd6c13e2f1ddcd55b07f19ef69d3528738922c7473d16fc74072a7f" + }, + { + "path": "contracts/STANDARDS.md", + "r4Sha256": "9e383354be38d0ea011b1145b6b3a4f35bfae6ebd856dc7921b8bae2959382e0", + "r5Sha256": "9e383354be38d0ea011b1145b6b3a4f35bfae6ebd856dc7921b8bae2959382e0" + }, + { + "path": "package-lock.json", + "r4Sha256": "84e80f3bdcad8bd433951b503ad087705ee74341b374901b1eb8b3cbd6c04333", + "r5Sha256": "84e80f3bdcad8bd433951b503ad087705ee74341b374901b1eb8b3cbd6c04333" + }, + { + "path": "package.json", + "r4Sha256": "3baab27d3fe178da625a3bf48c87790d7fa7006098dd568131d5ee9944ac11cb", + "r5Sha256": "3baab27d3fe178da625a3bf48c87790d7fa7006098dd568131d5ee9944ac11cb" + }, + { + "path": "packages/bus/README.md", + "r4Sha256": "10c996d323ac46d45548f7748d40b246de93f8c5eacae9f951c6eeb5dcc62697", + "r5Sha256": "10c996d323ac46d45548f7748d40b246de93f8c5eacae9f951c6eeb5dcc62697" + }, + { + "path": "packages/bus/package.json", + "r4Sha256": "4f8057266af34f6c70ade88fc9bde45e2aff5a58ab3ee3b8a568a532385fc1cf", + "r5Sha256": "4f8057266af34f6c70ade88fc9bde45e2aff5a58ab3ee3b8a568a532385fc1cf" + }, + { + "path": "packages/bus/schema.sql", + "r4Sha256": "0a7b633ce7eec9d0bb37c3255f4244d97bd0c8eac38db91a11b4ef6cc982ec8c", + "r5Sha256": "0a7b633ce7eec9d0bb37c3255f4244d97bd0c8eac38db91a11b4ef6cc982ec8c" + }, + { + "path": "packages/bus/src/broker.mjs", + "r4Sha256": "762234259d72db87aff510751fe14003099759ae37bc8eaf14f1ea1de61d2005", + "r5Sha256": "762234259d72db87aff510751fe14003099759ae37bc8eaf14f1ea1de61d2005" + }, + { + "path": "packages/bus/src/business.mjs", + "r4Sha256": "ff927da3cf22fbacc9ace77b2e8b803bffc2953fb58cf7ab4e5f6f6493732996", + "r5Sha256": "ff927da3cf22fbacc9ace77b2e8b803bffc2953fb58cf7ab4e5f6f6493732996" + }, + { + "path": "packages/bus/src/client.mjs", + "r4Sha256": "d40ddc2907f0d6e12e9556798591bcd7565d677177cb4d1a0d1a1da3e1e180ea", + "r5Sha256": "d40ddc2907f0d6e12e9556798591bcd7565d677177cb4d1a0d1a1da3e1e180ea" + }, + { + "path": "packages/bus/src/credential-verbs.mjs", + "r4Sha256": "86b4321dd436b97e389101873197dbab95b3d2202e5ef7da712c4978f4f9159f", + "r5Sha256": "86b4321dd436b97e389101873197dbab95b3d2202e5ef7da712c4978f4f9159f" + }, + { + "path": "packages/bus/src/credentials.mjs", + "r4Sha256": "96ea067029c305c3b59669e653cde6b037fdf5bb85e5edaf5e8339177c344eef", + "r5Sha256": "96ea067029c305c3b59669e653cde6b037fdf5bb85e5edaf5e8339177c344eef" + }, + { + "path": "packages/bus/src/host-grant.mjs", + "r4Sha256": "48337cdbc41d503f17962d3e3ad014183b1286165f97da6fd88b4faa50be3949", + "r5Sha256": "48337cdbc41d503f17962d3e3ad014183b1286165f97da6fd88b4faa50be3949" + }, + { + "path": "packages/bus/src/host-run.mjs", + "r4Sha256": "324c05b16253e0fcfc1a0299d1d8ab45850ea723fad1f67bcc07fc031f50d593", + "r5Sha256": "324c05b16253e0fcfc1a0299d1d8ab45850ea723fad1f67bcc07fc031f50d593" + }, + { + "path": "packages/bus/src/human-cli.mjs", + "r4Sha256": "269c3a66008c0d57a54b14b73cf988d5f61f5e815455486296716e98ce5e8073", + "r5Sha256": "269c3a66008c0d57a54b14b73cf988d5f61f5e815455486296716e98ce5e8073" + }, + { + "path": "packages/bus/src/human.mjs", + "r4Sha256": "0c6d96abe4607cba0b02b0638a2fc217ff8135bac9a47761a0ef015fbe9d3079", + "r5Sha256": "0c6d96abe4607cba0b02b0638a2fc217ff8135bac9a47761a0ef015fbe9d3079" + }, + { + "path": "packages/bus/src/index.mjs", + "r4Sha256": "72b53e03e3290be3d065c5e72a929cf9f8c1eabed259c19faefe3085e91f5d3e", + "r5Sha256": "72b53e03e3290be3d065c5e72a929cf9f8c1eabed259c19faefe3085e91f5d3e" + }, + { + "path": "packages/bus/src/interpreter.mjs", + "r4Sha256": "d5d98a9133a1b449acc48143fd559d890a470c6ea210b30b9b70e491e6cd855a", + "r5Sha256": "d5d98a9133a1b449acc48143fd559d890a470c6ea210b30b9b70e491e6cd855a" + }, + { + "path": "packages/bus/src/landing.mjs", + "r4Sha256": "9919febc7679168e0a72c0ef51983120283e595fea290a5e8e948409bf5c911b", + "r5Sha256": "9919febc7679168e0a72c0ef51983120283e595fea290a5e8e948409bf5c911b" + }, + { + "path": "packages/bus/src/limits.mjs", + "r4Sha256": "086e8a31da9c09baaac9050b6f2f38a250a2a5f4643662309c97aaa1a88d393d", + "r5Sha256": "086e8a31da9c09baaac9050b6f2f38a250a2a5f4643662309c97aaa1a88d393d" + }, + { + "path": "packages/bus/src/migrate-schema.mjs", + "r4Sha256": "f48b1adeb0ea1bf1b1f290e5bb39dedf115c4b41b6da9c777f7ce749253da6a2", + "r5Sha256": "f48b1adeb0ea1bf1b1f290e5bb39dedf115c4b41b6da9c777f7ce749253da6a2" + }, + { + "path": "packages/bus/src/migrations/3b-3c.sql", + "r4Sha256": "b753f630301bf125e9e286b4156d0736930dd8fb9cd8eb2ebf316688f9191a07", + "r5Sha256": "b753f630301bf125e9e286b4156d0736930dd8fb9cd8eb2ebf316688f9191a07" + }, + { + "path": "packages/bus/src/migrations/3b.sql", + "r4Sha256": "179ffe356d4ff19a49b5ebad39b6c6bfd7771deb8e1b7c55b5e746f039d69e65", + "r5Sha256": "179ffe356d4ff19a49b5ebad39b6c6bfd7771deb8e1b7c55b5e746f039d69e65" + }, + { + "path": "packages/bus/src/migrations/3c-3d.sql", + "r4Sha256": "0423832d05aa68f9191d7362827bd19310001165b895fb2de40b962fe68f9d56", + "r5Sha256": "0423832d05aa68f9191d7362827bd19310001165b895fb2de40b962fe68f9d56" + }, + { + "path": "packages/bus/src/migrations/3d-3e.sql", + "r4Sha256": "d9aacc974d5047790e65c30a90068259bb9396dc92d4904eae3b9c5dbbb2f077", + "r5Sha256": "d9aacc974d5047790e65c30a90068259bb9396dc92d4904eae3b9c5dbbb2f077" + }, + { + "path": "packages/bus/src/migrations/3e-3f.sql", + "r4Sha256": "bf0b72c606b1a56a1610f09619b0c1118f1f300c636824ea13fd51a4ca6ac4b3", + "r5Sha256": "bf0b72c606b1a56a1610f09619b0c1118f1f300c636824ea13fd51a4ca6ac4b3" + }, + { + "path": "packages/bus/src/migrations/3f-3g.sql", + "r4Sha256": "82f54b264919e34282bc214e34e9849f701cd3723b9b2f0a0d107c16f939dc05", + "r5Sha256": "82f54b264919e34282bc214e34e9849f701cd3723b9b2f0a0d107c16f939dc05" + }, + { + "path": "packages/bus/src/migrations/3g-3h.sql", + "r4Sha256": "76168e4f9f6b427286ddb8402fd833acadb01d6325a85f60e9ccf8d42fe2d1d0", + "r5Sha256": "76168e4f9f6b427286ddb8402fd833acadb01d6325a85f60e9ccf8d42fe2d1d0" + }, + { + "path": "packages/bus/src/migrations/3h-3i.sql", + "r4Sha256": "e058e6cea8da7b6e649f3e03f2b81dc5444ee940a64274d0e367124c93545035", + "r5Sha256": "e058e6cea8da7b6e649f3e03f2b81dc5444ee940a64274d0e367124c93545035" + }, + { + "path": "packages/bus/src/migrations/3i-3j.sql", + "r4Sha256": "5ad122ca950e43e066f3d9ed215e73353e6b26de6687b961a8818d69c9465031", + "r5Sha256": "5ad122ca950e43e066f3d9ed215e73353e6b26de6687b961a8818d69c9465031" + }, + { + "path": "packages/bus/src/peercred.mjs", + "r4Sha256": "29c88655e8b9aed8db604573c9213fd9f3c40ef35ff04f4eda8fbe8f1b8a32d7", + "r5Sha256": "29c88655e8b9aed8db604573c9213fd9f3c40ef35ff04f4eda8fbe8f1b8a32d7" + }, + { + "path": "packages/bus/src/peercred.py", + "r4Sha256": "d1536a8f472fa5b3773adb10555529ed049ad63b647c0b44c00ce5f25ce09f85", + "r5Sha256": "d1536a8f472fa5b3773adb10555529ed049ad63b647c0b44c00ce5f25ce09f85" + }, + { + "path": "packages/bus/src/principal.mjs", + "r4Sha256": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd", + "r5Sha256": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd" + }, + { + "path": "packages/bus/src/process.mjs", + "r4Sha256": "59933ad484c8da6def3468d6475bb15721423aba05bbe5bfc75c43cd3145a5fa", + "r5Sha256": "59933ad484c8da6def3468d6475bb15721423aba05bbe5bfc75c43cd3145a5fa" + }, + { + "path": "packages/bus/src/runtime.mjs", + "r4Sha256": "f060bb55bb3abbc9f5d776ce7728a8e49356a6c5307bca8411e6163f0e044e83", + "r5Sha256": "f060bb55bb3abbc9f5d776ce7728a8e49356a6c5307bca8411e6163f0e044e83" + }, + { + "path": "packages/bus/src/server.mjs", + "r4Sha256": "7be306c830aa98763b34b329995b40e9df443483fe20fcd69100a3acb6311bd6", + "r5Sha256": "7be306c830aa98763b34b329995b40e9df443483fe20fcd69100a3acb6311bd6" + }, + { + "path": "packages/bus/src/store.mjs", + "r4Sha256": "c5dd7296111ee954c7d91102dc2f32297123cbc4ced7e95b101449b0945c2b82", + "r5Sha256": "c5dd7296111ee954c7d91102dc2f32297123cbc4ced7e95b101449b0945c2b82" + }, + { + "path": "packages/bus/src/tester-cli.mjs", + "r4Sha256": "c04c434ec76252fbc93fb047e7a0c996225590e805f2c82a8d521c161cc9b80b", + "r5Sha256": "c04c434ec76252fbc93fb047e7a0c996225590e805f2c82a8d521c161cc9b80b" + }, + { + "path": "packages/bus/src/tester.mjs", + "r4Sha256": "5e9e08ca8069e1de35232f26d48a77792388128dda659893909f2d34b5af2346", + "r5Sha256": "5e9e08ca8069e1de35232f26d48a77792388128dda659893909f2d34b5af2346" + }, + { + "path": "packages/bus/src/usage.mjs", + "r4Sha256": "0accd20566096e06ee2f354cfee70da6e86b2f4091076eda6847253cdb9e036b", + "r5Sha256": "0accd20566096e06ee2f354cfee70da6e86b2f4091076eda6847253cdb9e036b" + }, + { + "path": "packages/bus/src/views.mjs", + "r4Sha256": "1f31aefa71984fba90c5390df5cc595d929681965f57485ad4972143d5c4b15f", + "r5Sha256": "1f31aefa71984fba90c5390df5cc595d929681965f57485ad4972143d5c4b15f" + }, + { + "path": "packages/bus/src/web.mjs", + "r4Sha256": "f0249c38372dc9922cd616ed2b851573653e733fd2a9035c349e52c2ed6f89bc", + "r5Sha256": "f0249c38372dc9922cd616ed2b851573653e733fd2a9035c349e52c2ed6f89bc" + }, + { + "path": "packages/business/README.md", + "r4Sha256": "0ed40b518682273cb26731eed782996a91086f3805b6bb33767f3840a271881d", + "r5Sha256": "0ed40b518682273cb26731eed782996a91086f3805b6bb33767f3840a271881d" + }, + { + "path": "packages/business/examples/mosaic-stack.example.json", + "r4Sha256": "211ce2b570f4e3034a8de6fc567b4cf7f866e612c26a3dceb327117c85785f1a", + "r5Sha256": "211ce2b570f4e3034a8de6fc567b4cf7f866e612c26a3dceb327117c85785f1a" + }, + { + "path": "packages/business/package.json", + "r4Sha256": "0e15a5be600573ff7fa0b41c425ee6e57dad788be3d42991185c3a84d6090fe9", + "r5Sha256": "0e15a5be600573ff7fa0b41c425ee6e57dad788be3d42991185c3a84d6090fe9" + }, + { + "path": "packages/business/src/access.mjs", + "r4Sha256": "0c1d9a126ee9e3cd21f946350387bbcd123c95a74ba22a6e230a7a4740b9b2ae", + "r5Sha256": "0c1d9a126ee9e3cd21f946350387bbcd123c95a74ba22a6e230a7a4740b9b2ae" + }, + { + "path": "packages/business/src/business.mjs", + "r4Sha256": "5fd3fee664d3e70153d988b4c1a42406f888a31b3927fa52375e66619d8cec59", + "r5Sha256": "5fd3fee664d3e70153d988b4c1a42406f888a31b3927fa52375e66619d8cec59" + }, + { + "path": "packages/business/src/cli.mjs", + "r4Sha256": "31cfe9090900169416e1207dc6db865b046439273917e9de442add4159c89eb3", + "r5Sha256": "31cfe9090900169416e1207dc6db865b046439273917e9de442add4159c89eb3" + }, + { + "path": "packages/business/src/credentials.mjs", + "r4Sha256": "e72f0898b5f373c5a76d4c41fbe504904f55e18b183768260a6423510625683e", + "r5Sha256": "e72f0898b5f373c5a76d4c41fbe504904f55e18b183768260a6423510625683e" + }, + { + "path": "packages/business/src/errors.mjs", + "r4Sha256": "cd4eb5960c17ce32f26d1a49196866ce04efc42c1d90b18b046af5fda8b9ff0a", + "r5Sha256": "cd4eb5960c17ce32f26d1a49196866ce04efc42c1d90b18b046af5fda8b9ff0a" + }, + { + "path": "packages/business/src/hosts.mjs", + "r4Sha256": "e08b11b70b54f13e3b18996dd903f841e04fd6c64791e96063df8b164c663882", + "r5Sha256": "e08b11b70b54f13e3b18996dd903f841e04fd6c64791e96063df8b164c663882" + }, + { + "path": "packages/business/src/index.mjs", + "r4Sha256": "7ee59b6e792fb47048fd06d227b65467ef71dabfcbdabdc0527b780656323d20", + "r5Sha256": "7ee59b6e792fb47048fd06d227b65467ef71dabfcbdabdc0527b780656323d20" + }, + { + "path": "packages/business/src/instance-settings.mjs", + "r4Sha256": "3873411688d927336a909d0299acddeba92a653102c660d276471f5a0f6eebd3", + "r5Sha256": "3873411688d927336a909d0299acddeba92a653102c660d276471f5a0f6eebd3" + }, + { + "path": "packages/business/src/launch-settings.mjs", + "r4Sha256": "3e957579bcfdf5f88e60f7235b7ead4fb27cb455e34b7588f4e22b8ab5542bec", + "r5Sha256": "3e957579bcfdf5f88e60f7235b7ead4fb27cb455e34b7588f4e22b8ab5542bec" + }, + { + "path": "packages/business/src/launch.mjs", + "r4Sha256": "96ddd1e6fae701cab7b5548eae5d7c71e7e442d41e2ad6cbba92037d821b14af", + "r5Sha256": "96ddd1e6fae701cab7b5548eae5d7c71e7e442d41e2ad6cbba92037d821b14af" + }, + { + "path": "packages/business/src/migrate-launch.mjs", + "r4Sha256": "44fa089c9024934a2f9fb5ef99552eb18d616842210cbc0fc860ea32ce0b1524", + "r5Sha256": "44fa089c9024934a2f9fb5ef99552eb18d616842210cbc0fc860ea32ce0b1524" + }, + { + "path": "packages/business/src/organization.mjs", + "r4Sha256": "eaa650499d2d078552a2c0e5b13a6126e0aca02f73160032a7325b3f5aa90964", + "r5Sha256": "eaa650499d2d078552a2c0e5b13a6126e0aca02f73160032a7325b3f5aa90964" + }, + { + "path": "packages/business/src/plugin-settings.mjs", + "r4Sha256": "5b142a72d6a62e68f9032fe5ebc6aa8d4321898e88e3e7c545efe97432b5dcb2", + "r5Sha256": "5b142a72d6a62e68f9032fe5ebc6aa8d4321898e88e3e7c545efe97432b5dcb2" + }, + { + "path": "packages/business/src/project.mjs", + "r4Sha256": "9472996134c520c31971e66006d1c1683709f6df4f76fe3445bdc97a18637eff", + "r5Sha256": "9472996134c520c31971e66006d1c1683709f6df4f76fe3445bdc97a18637eff" + }, + { + "path": "packages/business/src/resolve.mjs", + "r4Sha256": "712183465fee099606223d84423afc54e3386a0c8e468c68d5ac39c1e676d109", + "r5Sha256": "712183465fee099606223d84423afc54e3386a0c8e468c68d5ac39c1e676d109" + }, + { + "path": "packages/business/src/role.mjs", + "r4Sha256": "6b84018c202ff08e59b4e946556703d199fe75ef97e9e6ac4a390c89705ac796", + "r5Sha256": "6b84018c202ff08e59b4e946556703d199fe75ef97e9e6ac4a390c89705ac796" + }, + { + "path": "packages/business/src/util.mjs", + "r4Sha256": "e1f0e70a4bbba8ae2ad6185ab61770b15acda403e90fc708e13027a1e9ec663c", + "r5Sha256": "e1f0e70a4bbba8ae2ad6185ab61770b15acda403e90fc708e13027a1e9ec663c" + }, + { + "path": "packages/business/src/vars.mjs", + "r4Sha256": "f6b15ee8dad2d985c0ae66b1f106ca46cb56ec86ac8cd5dec8a05c887596a421", + "r5Sha256": "f6b15ee8dad2d985c0ae66b1f106ca46cb56ec86ac8cd5dec8a05c887596a421" + }, + { + "path": "packages/business/src/vocabulary.mjs", + "r4Sha256": "814ba93ca7403ad77ea2e7fb7bc21c2b40846bf8a3c2eae53b32446278af061c", + "r5Sha256": "814ba93ca7403ad77ea2e7fb7bc21c2b40846bf8a3c2eae53b32446278af061c" + }, + { + "path": "packages/cli/README.md", + "r4Sha256": "95c7acdb47f753d1e129adaa90b5937318d8d006ca47be9d92729fdae013776f", + "r5Sha256": "95c7acdb47f753d1e129adaa90b5937318d8d006ca47be9d92729fdae013776f" + }, + { + "path": "packages/cli/package.json", + "r4Sha256": "6c9c952d8637206697bc3273f2ee247185cad624b3db84fe4d2ead0b5c1013b3", + "r5Sha256": "6c9c952d8637206697bc3273f2ee247185cad624b3db84fe4d2ead0b5c1013b3" + }, + { + "path": "packages/cli/src/app.mjs", + "r4Sha256": "15a8ee212fc37cea28e389f60ddb8916f9e1509cdcfb2e522acfe548702a16dc", + "r5Sha256": "15a8ee212fc37cea28e389f60ddb8916f9e1509cdcfb2e522acfe548702a16dc" + }, + { + "path": "packages/cli/src/boot-status.mjs", + "r4Sha256": "147a17bbdcbc34efe20a88a4cabe796c101cb63dce621d28103f4de29def4cc2", + "r5Sha256": "147a17bbdcbc34efe20a88a4cabe796c101cb63dce621d28103f4de29def4cc2" + }, + { + "path": "packages/cli/src/cli.mjs", + "r4Sha256": "42cf532bc62c6f393557e53bee375b175b5dd15f5dfb1e29912aeb757d25dae9", + "r5Sha256": "42cf532bc62c6f393557e53bee375b175b5dd15f5dfb1e29912aeb757d25dae9" + }, + { + "path": "packages/cli/src/config.mjs", + "r4Sha256": "ab7b9f452123b6f7e98f4f59cbb3cc4483fd296e4af5522412410ee53d1b20e0", + "r5Sha256": "ab7b9f452123b6f7e98f4f59cbb3cc4483fd296e4af5522412410ee53d1b20e0" + }, + { + "path": "packages/cli/src/credentials.mjs", + "r4Sha256": "19755f7bb002d8455990c5dc7c458e64aeb95252ec7231a2ed2fd9c638fcb511", + "r5Sha256": "19755f7bb002d8455990c5dc7c458e64aeb95252ec7231a2ed2fd9c638fcb511" + }, + { + "path": "packages/cli/src/errors.mjs", + "r4Sha256": "c7bdd98a3ddeeb9bc4415d907b92555d723c566eba314075d91486da9b5e85dc", + "r5Sha256": "c7bdd98a3ddeeb9bc4415d907b92555d723c566eba314075d91486da9b5e85dc" + }, + { + "path": "packages/cli/src/format.mjs", + "r4Sha256": "c2f6852226c7071dec132d422773d76bdfc356450f582ac28cb7a5077860b4c0", + "r5Sha256": "c2f6852226c7071dec132d422773d76bdfc356450f582ac28cb7a5077860b4c0" + }, + { + "path": "packages/cli/src/git-socket.mjs", + "r4Sha256": "b834adc3a5a299d496751fa7b07f8d52602d2113ddf1f3d1b833a0b4c65860bf", + "r5Sha256": "b834adc3a5a299d496751fa7b07f8d52602d2113ddf1f3d1b833a0b4c65860bf" + }, + { + "path": "packages/cli/src/host.mjs", + "r4Sha256": "a0936aee783ff47dd58fc907fefd86f63e571809a3ce5b0d6d931f71e756b15e", + "r5Sha256": "a0936aee783ff47dd58fc907fefd86f63e571809a3ce5b0d6d931f71e756b15e" + }, + { + "path": "packages/cli/src/hosts.mjs", + "r4Sha256": "60419503898f5e7f3046df5e749098728fbdfea76eb5c53b5dc9b909329abe2e", + "r5Sha256": "60419503898f5e7f3046df5e749098728fbdfea76eb5c53b5dc9b909329abe2e" + }, + { + "path": "packages/cli/src/index.mjs", + "r4Sha256": "3f16f73365b60a992056580da96cd503fba71461e681540020a6da696512c8c1", + "r5Sha256": "3f16f73365b60a992056580da96cd503fba71461e681540020a6da696512c8c1" + }, + { + "path": "packages/cli/src/instances.mjs", + "r4Sha256": "a11479ac4b4be897d03ff669928e8de01ade11e0010fa672e5d23ee22cb9d453", + "r5Sha256": "a11479ac4b4be897d03ff669928e8de01ade11e0010fa672e5d23ee22cb9d453" + }, + { + "path": "packages/cli/src/launcher.mjs", + "r4Sha256": "d8a870d8eb8254adfd576688696705359fefbf517b40e5d7482500bf27941022", + "r5Sha256": "d8a870d8eb8254adfd576688696705359fefbf517b40e5d7482500bf27941022" + }, + { + "path": "packages/cli/src/limits.mjs", + "r4Sha256": "b36a5792a4e53c72352fb8ecf4ddb760bd22a6cd2035db8d5ab762337bf118ae", + "r5Sha256": "b36a5792a4e53c72352fb8ecf4ddb760bd22a6cd2035db8d5ab762337bf118ae" + }, + { + "path": "packages/cli/src/notifier-process.mjs", + "r4Sha256": "8bad08ae3addd8a71711ad47880093f8759d707a8224eadcf6395bd03de7b689", + "r5Sha256": "8bad08ae3addd8a71711ad47880093f8759d707a8224eadcf6395bd03de7b689" + }, + { + "path": "packages/cli/src/notifier.mjs", + "r4Sha256": "cb27929bd2d17704ff7db42a0b001d97cb626ec79fa833add4bdaff2e304a4c3", + "r5Sha256": "cb27929bd2d17704ff7db42a0b001d97cb626ec79fa833add4bdaff2e304a4c3" + }, + { + "path": "packages/cli/src/plugins.mjs", + "r4Sha256": "f8d9fc24ccd71494fb2914914949cb08948ae93fb3180b9531eb807c921a6f53", + "r5Sha256": "f8d9fc24ccd71494fb2914914949cb08948ae93fb3180b9531eb807c921a6f53" + }, + { + "path": "packages/cli/src/project.mjs", + "r4Sha256": "6cfe7fd5086ddb59c5666060c6f8044c2852e0f3d5755b1fa206f7521173f300", + "r5Sha256": "6cfe7fd5086ddb59c5666060c6f8044c2852e0f3d5755b1fa206f7521173f300" + }, + { + "path": "packages/cli/src/screens.mjs", + "r4Sha256": "9d03335628ae62e85c5fbc08c2e739ed0bd43b10d486faf397129a56a1b343e0", + "r5Sha256": "9d03335628ae62e85c5fbc08c2e739ed0bd43b10d486faf397129a56a1b343e0" + }, + { + "path": "packages/cli/src/tester-http.mjs", + "r4Sha256": "4bd7bdf0898844684ebf9444b110d2c5b6fa874b2681183e54f1f62f97823192", + "r5Sha256": "4bd7bdf0898844684ebf9444b110d2c5b6fa874b2681183e54f1f62f97823192" + }, + { + "path": "packages/cli/src/thread.mjs", + "r4Sha256": "afac0cb73e6e27450a19a38828e13eb212dba8307d7b4721a3cebbae0a10dd79", + "r5Sha256": "afac0cb73e6e27450a19a38828e13eb212dba8307d7b4721a3cebbae0a10dd79" + }, + { + "path": "packages/cli/src/transport.mjs", + "r4Sha256": "5129c44b4d9f642e825344df65c9bfb4bac4fc8d6b25343b42d39853dbd40774", + "r5Sha256": "5129c44b4d9f642e825344df65c9bfb4bac4fc8d6b25343b42d39853dbd40774" + }, + { + "path": "packages/cli/src/usage.mjs", + "r4Sha256": "f9e0c69849633ae36a7a6aa22729a690dc40292178ac3db43accbb131fd7b4ca", + "r5Sha256": "f9e0c69849633ae36a7a6aa22729a690dc40292178ac3db43accbb131fd7b4ca" + }, + { + "path": "packages/cli/systemd/mosaic-bus.service.in", + "r4Sha256": "154b734995b1f0013b1756dabe812b7035d0b6529481390b565aa7c465eddb46", + "r5Sha256": "154b734995b1f0013b1756dabe812b7035d0b6529481390b565aa7c465eddb46" + }, + { + "path": "packages/cli/systemd/mosaic-hostcheck.service", + "r4Sha256": "88087485a8da793e2050bc6b0eba1e1fe5e847b6300310642e0d587d48ba91a1", + "r5Sha256": "88087485a8da793e2050bc6b0eba1e1fe5e847b6300310642e0d587d48ba91a1" + }, + { + "path": "packages/control-board/README.md", + "r4Sha256": "9c47817868b7e14d7f1ccd28ed2e28a1944db6fe9de2ef81e08d97f2f2433206", + "r5Sha256": "9c47817868b7e14d7f1ccd28ed2e28a1944db6fe9de2ef81e08d97f2f2433206" + }, + { + "path": "packages/control-board/package.json", + "r4Sha256": "1e1aef2c74434e388d61b03407cd323336d20b7ef2106893d16a39638ee12a64", + "r5Sha256": "1e1aef2c74434e388d61b03407cd323336d20b7ef2106893d16a39638ee12a64" + }, + { + "path": "packages/control-board/src/cli.mjs", + "r4Sha256": "50e953e98920e258892dacd38bad8655a8e98825cb8dab176cb40b3492a19132", + "r5Sha256": "50e953e98920e258892dacd38bad8655a8e98825cb8dab176cb40b3492a19132" + }, + { + "path": "packages/control-board/src/discord.mjs", + "r4Sha256": "8966f1f98ea81b4525345fc4889db5e0e5263ca41b5132ac8dd9bd99a2c88522", + "r5Sha256": "8966f1f98ea81b4525345fc4889db5e0e5263ca41b5132ac8dd9bd99a2c88522" + }, + { + "path": "packages/control-board/src/page.html", + "r4Sha256": "200ec313b183249e122b359305cecc7980fb806d7c8c00f7c6f3b55a07ff660d", + "r5Sha256": "200ec313b183249e122b359305cecc7980fb806d7c8c00f7c6f3b55a07ff660d" + }, + { + "path": "packages/control-board/src/scan.mjs", + "r4Sha256": "6d74b131af360268be748a1f8f7f2b3f5a9180365e7279426640883fc295a676", + "r5Sha256": "6d74b131af360268be748a1f8f7f2b3f5a9180365e7279426640883fc295a676" + }, + { + "path": "packages/control-board/src/serve.mjs", + "r4Sha256": "d62720dcf1bd43ce9412356a04b5248a85aec59dd78194887e3c38010c0aa2f3", + "r5Sha256": "d62720dcf1bd43ce9412356a04b5248a85aec59dd78194887e3c38010c0aa2f3" + }, + { + "path": "packages/conversation/README.md", + "r4Sha256": "35dff8a20c6f8afd1aa03fb237354bf6a4c34a796a11b9025acb20041c437d36", + "r5Sha256": "35dff8a20c6f8afd1aa03fb237354bf6a4c34a796a11b9025acb20041c437d36" + }, + { + "path": "packages/conversation/package.json", + "r4Sha256": "2ed3790eb877414b8e985ca16031d8963adfb5c9555d415efb76288b76a5e1a6", + "r5Sha256": "2ed3790eb877414b8e985ca16031d8963adfb5c9555d415efb76288b76a5e1a6" + }, + { + "path": "packages/conversation/src/claim.mjs", + "r4Sha256": "6c3e112e13e69f5a9cfd6b217d3f9ba439000c8f353e556207b2e5063bcdee91", + "r5Sha256": "6c3e112e13e69f5a9cfd6b217d3f9ba439000c8f353e556207b2e5063bcdee91" + }, + { + "path": "packages/conversation/src/client.mjs", + "r4Sha256": "a45beb82438bb42d97d1e322010e175e785767664e548b90c4125e98b7660003", + "r5Sha256": "a45beb82438bb42d97d1e322010e175e785767664e548b90c4125e98b7660003" + }, + { + "path": "packages/conversation/src/cohort.mjs", + "r4Sha256": "4db71af0774022332808afc39ce37248305bf45e3a14811921fc589083a19289", + "r5Sha256": "4db71af0774022332808afc39ce37248305bf45e3a14811921fc589083a19289" + }, + { + "path": "packages/conversation/src/controller.mjs", + "r4Sha256": "42a85b2ba2fc8f7137652df35ac61c8fc77bccd7697c8190129ffa8ba025d9fd", + "r5Sha256": "42a85b2ba2fc8f7137652df35ac61c8fc77bccd7697c8190129ffa8ba025d9fd" + }, + { + "path": "packages/conversation/src/engine.mjs", + "r4Sha256": "a833f130f0086e0942de2f46d3d4acfeebf898659f0d7e5d6f375a2780ac5e70", + "r5Sha256": "a833f130f0086e0942de2f46d3d4acfeebf898659f0d7e5d6f375a2780ac5e70" + }, + { + "path": "packages/conversation/src/events.mjs", + "r4Sha256": "2fe414b4d2382e0ebfaa63e63dbd17ff4bb6ffc6bd7c5d0bbcc806797d6b7129", + "r5Sha256": "2fe414b4d2382e0ebfaa63e63dbd17ff4bb6ffc6bd7c5d0bbcc806797d6b7129" + }, + { + "path": "packages/conversation/src/framing.mjs", + "r4Sha256": "eaf0772b60bb17fbf9548267c9cfeb0104f92f5cbafdfcb60c1633883eec6432", + "r5Sha256": "eaf0772b60bb17fbf9548267c9cfeb0104f92f5cbafdfcb60c1633883eec6432" + }, + { + "path": "packages/conversation/src/guard.mjs", + "r4Sha256": "36e9e87aa91820decb09936b980fc1acbb89ce58cd8c4de2361b18f14fb5a7bb", + "r5Sha256": "36e9e87aa91820decb09936b980fc1acbb89ce58cd8c4de2361b18f14fb5a7bb" + }, + { + "path": "packages/conversation/src/parts.mjs", + "r4Sha256": "da336ed2a2a149ff56ac12af2440a8353d4573c33e9069381be60f1a0ca70151", + "r5Sha256": "da336ed2a2a149ff56ac12af2440a8353d4573c33e9069381be60f1a0ca70151" + }, + { + "path": "packages/conversation/src/pi-pin.mjs", + "r4Sha256": "a06468434e7bf3a3dfc3c5ea05b8c21a1510f8fa0c8eaa6e9908b970fa98367e", + "r5Sha256": "a06468434e7bf3a3dfc3c5ea05b8c21a1510f8fa0c8eaa6e9908b970fa98367e" + }, + { + "path": "packages/conversation/src/pi.mjs", + "r4Sha256": "20e781240846298fa65f9a8226b5e1ee1e81338b81229334666d845c17c99ac1", + "r5Sha256": "20e781240846298fa65f9a8226b5e1ee1e81338b81229334666d845c17c99ac1" + }, + { + "path": "packages/conversation/src/reader.mjs", + "r4Sha256": "72c3255bca7a894f6484b3224aabf054d40a0db78cbe46a6c492ed385333b8ad", + "r5Sha256": "72c3255bca7a894f6484b3224aabf054d40a0db78cbe46a6c492ed385333b8ad" + }, + { + "path": "packages/conversation/src/records.mjs", + "r4Sha256": "96f7b64c2e2c3493e270224542818fd14f042e3cf0ac14788b3f881010bc25b1", + "r5Sha256": "96f7b64c2e2c3493e270224542818fd14f042e3cf0ac14788b3f881010bc25b1" + }, + { + "path": "packages/conversation/src/safe-fs.mjs", + "r4Sha256": "62b0f7e9f798f584fcc0e4ead0522e44fd113bd0803f2bad92ffa480cadb7527", + "r5Sha256": "62b0f7e9f798f584fcc0e4ead0522e44fd113bd0803f2bad92ffa480cadb7527" + }, + { + "path": "packages/conversation/src/shim.mjs", + "r4Sha256": "b62421aec1f67ae293d2b5c2e7abda14ea945fb4e4a3abf0d1afeb9b61216eed", + "r5Sha256": "b62421aec1f67ae293d2b5c2e7abda14ea945fb4e4a3abf0d1afeb9b61216eed" + }, + { + "path": "packages/conversation/src/terminal.mjs", + "r4Sha256": "c24d28a073659640b8b027eb12ad150ba895c3001091b892ecef2ec1da40d5cd", + "r5Sha256": "c24d28a073659640b8b027eb12ad150ba895c3001091b892ecef2ec1da40d5cd" + }, + { + "path": "packages/conversation/src/text-policy.mjs", + "r4Sha256": "071e14db0bc6933a438d0fbf5a2f0f1a9daefbef913908fc1cd5e1171cc9177a", + "r5Sha256": "071e14db0bc6933a438d0fbf5a2f0f1a9daefbef913908fc1cd5e1171cc9177a" + }, + { + "path": "packages/conversation/src/transcript.mjs", + "r4Sha256": "f834ee740e7149e7d2ed976112d0719ce0660270e3b61cf93e1774d112c992a2", + "r5Sha256": "f834ee740e7149e7d2ed976112d0719ce0660270e3b61cf93e1774d112c992a2" + }, + { + "path": "packages/conversation/src/turns.mjs", + "r4Sha256": "e778f2836f7062a414d7542954b54b83e1d39459529d6b03f5306eb4091793f0", + "r5Sha256": "e778f2836f7062a414d7542954b54b83e1d39459529d6b03f5306eb4091793f0" + }, + { + "path": "packages/discord/README.md", + "r4Sha256": "54ae9a4651fdc29b7aed5742e7a206dee733fd23785d39a70240522bdd597fa0", + "r5Sha256": "54ae9a4651fdc29b7aed5742e7a206dee733fd23785d39a70240522bdd597fa0" + }, + { + "path": "packages/discord/bin/git-credential.mjs", + "r4Sha256": "bdbfc8073d2073dd2ca4cb1460e3c376f087fff387d053d883932e5a67f85948", + "r5Sha256": "bdbfc8073d2073dd2ca4cb1460e3c376f087fff387d053d883932e5a67f85948" + }, + { + "path": "packages/discord/extension/tools.mjs", + "r4Sha256": "8908b4c250de160998c0e3ececd181fd296d00da83f6581b4bfdcb489a73b084", + "r5Sha256": "8908b4c250de160998c0e3ececd181fd296d00da83f6581b4bfdcb489a73b084" + }, + { + "path": "packages/discord/package.json", + "r4Sha256": "a52c6bfc9bd26a3b021d3a96bddb0f5c45845d752ca4579ef04ef60667f110f3", + "r5Sha256": "a52c6bfc9bd26a3b021d3a96bddb0f5c45845d752ca4579ef04ef60667f110f3" + }, + { + "path": "packages/discord/src/approvals.mjs", + "r4Sha256": "3b01d776af1a6eb11a030eccecc6d24303e8604b768e7de7d696c5979eae4468", + "r5Sha256": "3b01d776af1a6eb11a030eccecc6d24303e8604b768e7de7d696c5979eae4468" + }, + { + "path": "packages/discord/src/authorize.mjs", + "r4Sha256": "ccd28ba645c14ef635ec48e5f2a20e2ae3e4da826b034c51be9dc367436f37a4", + "r5Sha256": "ccd28ba645c14ef635ec48e5f2a20e2ae3e4da826b034c51be9dc367436f37a4" + }, + { + "path": "packages/discord/src/binding.mjs", + "r4Sha256": "5ab69c4111dd9589a197172ffe6968bf414f41c552b7910e5478a27c446cfaec", + "r5Sha256": "5ab69c4111dd9589a197172ffe6968bf414f41c552b7910e5478a27c446cfaec" + }, + { + "path": "packages/discord/src/cli.mjs", + "r4Sha256": "8f18ee5bb7e0c2a049670caf20438cc35c44bcd5333943e9084f0abb6c9e2234", + "r5Sha256": "8f18ee5bb7e0c2a049670caf20438cc35c44bcd5333943e9084f0abb6c9e2234" + }, + { + "path": "packages/discord/src/connector.mjs", + "r4Sha256": "63dea7251c617ee060afa21970c6faf4093a31337d5be2e9ac905681905c501d", + "r5Sha256": "63dea7251c617ee060afa21970c6faf4093a31337d5be2e9ac905681905c501d" + }, + { + "path": "packages/discord/src/context.mjs", + "r4Sha256": "e1cb3064c89dba4912b2bec1f63cc42d0c58aa50002b932efd7fc044329503d4", + "r5Sha256": "e1cb3064c89dba4912b2bec1f63cc42d0c58aa50002b932efd7fc044329503d4" + }, + { + "path": "packages/discord/src/engine-pi.mjs", + "r4Sha256": "77077b7fbd5a933ffd352094eb073227c299ba47b7aea52d4e60fdc55cc7101e", + "r5Sha256": "77077b7fbd5a933ffd352094eb073227c299ba47b7aea52d4e60fdc55cc7101e" + }, + { + "path": "packages/discord/src/errors.mjs", + "r4Sha256": "917b0e6c4f100e93f056b925e38d97eacdd8b2596e39fbd3f88c0b62b973d8ed", + "r5Sha256": "917b0e6c4f100e93f056b925e38d97eacdd8b2596e39fbd3f88c0b62b973d8ed" + }, + { + "path": "packages/discord/src/gateway.mjs", + "r4Sha256": "2d7f7fcbe62aac7b724a66714cd24d5634bd63f7660ef5979b8d4fccb0689b08", + "r5Sha256": "2d7f7fcbe62aac7b724a66714cd24d5634bd63f7660ef5979b8d4fccb0689b08" + }, + { + "path": "packages/discord/src/git.mjs", + "r4Sha256": "c28e04a0055997ea0b34bea1ad2912adb248d5fd43713df1e6f5a661d87949b7", + "r5Sha256": "c28e04a0055997ea0b34bea1ad2912adb248d5fd43713df1e6f5a661d87949b7" + }, + { + "path": "packages/discord/src/journal.mjs", + "r4Sha256": "db33880f88dc2c7708015efecd0c6db604bc40387ea0dd6259d91f621a5b022c", + "r5Sha256": "db33880f88dc2c7708015efecd0c6db604bc40387ea0dd6259d91f621a5b022c" + }, + { + "path": "packages/discord/src/notify.mjs", + "r4Sha256": "aa7c1e328d6664b53e4d9cb5a1ab83c8ff71cc31deb9d3ce91a7dc6715c887aa", + "r5Sha256": "aa7c1e328d6664b53e4d9cb5a1ab83c8ff71cc31deb9d3ce91a7dc6715c887aa" + }, + { + "path": "packages/discord/src/rest.mjs", + "r4Sha256": "0b0b8f4dc25b8fbd4d948c962453c63084b0797b0ec5f0420e3f4f174837ccd5", + "r5Sha256": "0b0b8f4dc25b8fbd4d948c962453c63084b0797b0ec5f0420e3f4f174837ccd5" + }, + { + "path": "packages/discord/src/setspark.mjs", + "r4Sha256": "ba09d286e707860afa53300f8802ac8e6193ab2d2e7abe9d2b07cbdef3822387", + "r5Sha256": "ba09d286e707860afa53300f8802ac8e6193ab2d2e7abe9d2b07cbdef3822387" + }, + { + "path": "packages/discord/src/tools.mjs", + "r4Sha256": "975503616245bb6051f06ecbf47436ce7d030f21af23042df7f3341062df967f", + "r5Sha256": "975503616245bb6051f06ecbf47436ce7d030f21af23042df7f3341062df967f" + }, + { + "path": "packages/discord/src/web.mjs", + "r4Sha256": "e5a7b64720872b12b34223549537ace05ebf0ca8a29b2f844d2b7c5cc9ea41f7", + "r5Sha256": "e5a7b64720872b12b34223549537ace05ebf0ca8a29b2f844d2b7c5cc9ea41f7" + }, + { + "path": "packages/discord/systemd/mosaic-discord@.service.in", + "r4Sha256": "46a6dbe29011b17e53f5b2f9dbb76b49ceeeb86d8c9317d6e6a28be83324a6b6", + "r5Sha256": "46a6dbe29011b17e53f5b2f9dbb76b49ceeeb86d8c9317d6e6a28be83324a6b6" + }, + { + "path": "packages/harness/README.md", + "r4Sha256": "b027dc74583217b4151173ecbabfcfbfc7b108ac6b7a8e93dd21a2834051714f", + "r5Sha256": "b027dc74583217b4151173ecbabfcfbfc7b108ac6b7a8e93dd21a2834051714f" + }, + { + "path": "packages/harness/package.json", + "r4Sha256": "34ef8212e27f052223443c66830839517f7a54ecb6ef7d85795b3e89c65b4d4c", + "r5Sha256": "34ef8212e27f052223443c66830839517f7a54ecb6ef7d85795b3e89c65b4d4c" + }, + { + "path": "packages/harness/src/bundle.mjs", + "r4Sha256": "5a80ed0dd964ae2ee43bf978e66b03d42905ecb231171ed42666b13aff408de9", + "r5Sha256": "5a80ed0dd964ae2ee43bf978e66b03d42905ecb231171ed42666b13aff408de9" + }, + { + "path": "packages/harness/src/claude-gate.mjs", + "r4Sha256": "32b5090760c95eea0e1232ff36ec13a1d9b58335b2eade621196dec1ebdbe784", + "r5Sha256": "32b5090760c95eea0e1232ff36ec13a1d9b58335b2eade621196dec1ebdbe784" + }, + { + "path": "packages/harness/src/gate.mjs", + "r4Sha256": "a74ef2db4093c0c797ba9e7e28e4e4df0ceac9040385f00e60a273f39af9610b", + "r5Sha256": "a74ef2db4093c0c797ba9e7e28e4e4df0ceac9040385f00e60a273f39af9610b" + }, + { + "path": "packages/harness/src/git-tools.mjs", + "r4Sha256": "58ee910f904a976ee76a4086432fd477b7f70fdf1793fe893b8bb7beb96d7bc6", + "r5Sha256": "58ee910f904a976ee76a4086432fd477b7f70fdf1793fe893b8bb7beb96d7bc6" + }, + { + "path": "packages/harness/src/mcp-server.mjs", + "r4Sha256": "ce0107c3b21e07925b6543b6b925da8b8768823448d4fcf30b620883cfd2d39e", + "r5Sha256": "ce0107c3b21e07925b6543b6b925da8b8768823448d4fcf30b620883cfd2d39e" + }, + { + "path": "packages/harness/src/pi-extension.mjs", + "r4Sha256": "fcba4b8dfd9dde947a79f88376d880f383e2a04ee3c0a9ba2fa5af641fe61b35", + "r5Sha256": "fcba4b8dfd9dde947a79f88376d880f383e2a04ee3c0a9ba2fa5af641fe61b35" + }, + { + "path": "packages/harness/src/runner.mjs", + "r4Sha256": "bfb2156c609eeaf87c9e209c562576a5ef47535eaeee61d841bb0bd75a76a69d", + "r5Sha256": "bfb2156c609eeaf87c9e209c562576a5ef47535eaeee61d841bb0bd75a76a69d" + }, + { + "path": "packages/harness/src/tools.mjs", + "r4Sha256": "22f9e3c1dce25e5eb6713306ccdf22dc77a4ccf0c99e9186f2e16602f58aeb49", + "r5Sha256": "22f9e3c1dce25e5eb6713306ccdf22dc77a4ccf0c99e9186f2e16602f58aeb49" + }, + { + "path": "packages/ledger/README.md", + "r4Sha256": "d518fc2073eba1bca4cb52b525d24b9fe9c84fc731729beb0710de2322dbb5ef", + "r5Sha256": "d518fc2073eba1bca4cb52b525d24b9fe9c84fc731729beb0710de2322dbb5ef" + }, + { + "path": "packages/ledger/src/cli.mjs", + "r4Sha256": "9b9c5546922b23ba9843f7f54fddd555a5192811deb0c58b11a00ad7fc13172e", + "r5Sha256": "9b9c5546922b23ba9843f7f54fddd555a5192811deb0c58b11a00ad7fc13172e" + }, + { + "path": "packages/ledger/src/ledger.mjs", + "r4Sha256": "778f12500b774820305b960694f7151e384841d1f30457e83e1cd8720ccfd35a", + "r5Sha256": "778f12500b774820305b960694f7151e384841d1f30457e83e1cd8720ccfd35a" + }, + { + "path": "packages/ledger/src/queue-checks.mjs", + "r4Sha256": "80dbed1bdbcddd3cb8a61d19e615ce14d5f8b2b05ffd78f5b2e51a8f4d9d9ce9", + "r5Sha256": "80dbed1bdbcddd3cb8a61d19e615ce14d5f8b2b05ffd78f5b2e51a8f4d9d9ce9" + }, + { + "path": "packages/ledger/src/t3.mjs", + "r4Sha256": "3ba19cb784e37893b6e15d78bdb27d30f1591fcd14535e1397b5b341431b43ec", + "r5Sha256": "3ba19cb784e37893b6e15d78bdb27d30f1591fcd14535e1397b5b341431b43ec" + }, + { + "path": "packages/library/README.md", + "r4Sha256": "80a7244dc922aac047a9930b3d11d4fe6f18de43c5cba63607d6a6f37a8c3881", + "r5Sha256": "80a7244dc922aac047a9930b3d11d4fe6f18de43c5cba63607d6a6f37a8c3881" + }, + { + "path": "packages/library/package.json", + "r4Sha256": "f6208a6b9e233baca38dd0ed9fd435cf2c7a3e34160c2c07cea1fea66893513b", + "r5Sha256": "f6208a6b9e233baca38dd0ed9fd435cf2c7a3e34160c2c07cea1fea66893513b" + }, + { + "path": "packages/library/src/index.mjs", + "r4Sha256": "ecda99dea46390b81fffa6f414d56a13737233e01d883b82cd186e0e21b6c4d1", + "r5Sha256": "ecda99dea46390b81fffa6f414d56a13737233e01d883b82cd186e0e21b6c4d1" + }, + { + "path": "packages/library/src/links.mjs", + "r4Sha256": "def32a176cb70c86248e45908edde22f9c4c5f88575a4af0a396a05f617358bc", + "r5Sha256": "def32a176cb70c86248e45908edde22f9c4c5f88575a4af0a396a05f617358bc" + }, + { + "path": "packages/library/src/mapping.mjs", + "r4Sha256": "08cd2cd37dbcae2f5a1ebc1d25bce44862a59159c486c361467feccec134d917", + "r5Sha256": "08cd2cd37dbcae2f5a1ebc1d25bce44862a59159c486c361467feccec134d917" + }, + { + "path": "packages/library/src/mirror.mjs", + "r4Sha256": "75ce08fba0956c846f2ca9ab1b565974657925f94ac952c720e7308783946480", + "r5Sha256": "75ce08fba0956c846f2ca9ab1b565974657925f94ac952c720e7308783946480" + }, + { + "path": "packages/library/src/problems.mjs", + "r4Sha256": "0c8764b03dae0150c56af74bcb113cf583dcbe1fa0c6f7386ef2d48d59a6bd31", + "r5Sha256": "0c8764b03dae0150c56af74bcb113cf583dcbe1fa0c6f7386ef2d48d59a6bd31" + }, + { + "path": "packages/library/src/reader.mjs", + "r4Sha256": "ea126533afb7e74b71419eb943febb6b242eb96fc6917d9df1019db3e7e6ce8d", + "r5Sha256": "ea126533afb7e74b71419eb943febb6b242eb96fc6917d9df1019db3e7e6ce8d" + }, + { + "path": "packages/library/src/render.mjs", + "r4Sha256": "94dcdda7619bb1c335cf85bd9e94e9eca69f1c7478a19b04c9421053c940392a", + "r5Sha256": "94dcdda7619bb1c335cf85bd9e94e9eca69f1c7478a19b04c9421053c940392a" + }, + { + "path": "packages/library/src/scope.mjs", + "r4Sha256": "ab9694cfd3500224be819f20e1d2e027c05d978d291dd6df9e148042f3b6ca42", + "r5Sha256": "ab9694cfd3500224be819f20e1d2e027c05d978d291dd6df9e148042f3b6ca42" + }, + { + "path": "packages/library/src/survey.mjs", + "r4Sha256": "9f71611c7535b55ab22e7b65191976293fee0b51791dbbd20269e7383f2c5a4b", + "r5Sha256": "9f71611c7535b55ab22e7b65191976293fee0b51791dbbd20269e7383f2c5a4b" + }, + { + "path": "packages/mosaic/README.md", + "r4Sha256": "bfaa5eed44c9eba9c195c38008db785d9c78e58f7544be7e46fd32155708f256", + "r5Sha256": "bfaa5eed44c9eba9c195c38008db785d9c78e58f7544be7e46fd32155708f256" + }, + { + "path": "packages/mosaic/package.json", + "r4Sha256": "12838980706273f2a3daf84a1a78d55e06018c1f78587cc9db4527a8aa8b074f", + "r5Sha256": "12838980706273f2a3daf84a1a78d55e06018c1f78587cc9db4527a8aa8b074f" + }, + { + "path": "packages/mosaic/src/cli/main.mjs", + "r4Sha256": "dd07bea32281e66d0f7d8485595eb403305fac1ca5943daa67a73bc0666caecc", + "r5Sha256": "dd07bea32281e66d0f7d8485595eb403305fac1ca5943daa67a73bc0666caecc" + }, + { + "path": "packages/mosaic/src/execution.mjs", + "r4Sha256": "ed9920d465f74387566443544131226050dec8f13efefaad2d48157c8808f162", + "r5Sha256": "ed9920d465f74387566443544131226050dec8f13efefaad2d48157c8808f162" + }, + { + "path": "packages/mosaic/src/fixture-store.mjs", + "r4Sha256": "fa5c5fe977916418e7d2c4f6ceeedb6f3bcb6ae854f680bec07f7930b937b1f4", + "r5Sha256": "fa5c5fe977916418e7d2c4f6ceeedb6f3bcb6ae854f680bec07f7930b937b1f4" + }, + { + "path": "packages/mosaic/src/index.mjs", + "r4Sha256": "ac64c9c32ba928cc557107a47e127350efd724a7d8cdf1f399630964fe621879", + "r5Sha256": "ac64c9c32ba928cc557107a47e127350efd724a7d8cdf1f399630964fe621879" + }, + { + "path": "packages/mosaic/src/materialize-fixture.mjs", + "r4Sha256": "7a3e66fc20e3e51d838c66e2cb0f3c2b73047ffabccb93532bd325a8a65e68c2", + "r5Sha256": "7a3e66fc20e3e51d838c66e2cb0f3c2b73047ffabccb93532bd325a8a65e68c2" + }, + { + "path": "packages/mosaic/src/records.mjs", + "r4Sha256": "e4d2e55e077f38c5523d0211e6ec90e301804d8f6896674de2bbeaf0b049be58", + "r5Sha256": "e4d2e55e077f38c5523d0211e6ec90e301804d8f6896674de2bbeaf0b049be58" + }, + { + "path": "packages/mosaic/src/refresh-fixture.mjs", + "r4Sha256": "28f87b70d0d42d4f4f25a7d72f138e87dcfcd79d542b43da7fb208444f4deeb7", + "r5Sha256": "28f87b70d0d42d4f4f25a7d72f138e87dcfcd79d542b43da7fb208444f4deeb7" + }, + { + "path": "packages/mosaic/src/registry.mjs", + "r4Sha256": "d33985227f536117bcfad1d7f5ecd777adf02c073c8a9bff634c4b32f2b85e48", + "r5Sha256": "d33985227f536117bcfad1d7f5ecd777adf02c073c8a9bff634c4b32f2b85e48" + }, + { + "path": "packages/plugins/README.md", + "r4Sha256": "7e0bea27d4360a39874fa64b3506a85f83888613a285ec0b087d74bf22b76421", + "r5Sha256": "7e0bea27d4360a39874fa64b3506a85f83888613a285ec0b087d74bf22b76421" + }, + { + "path": "packages/plugins/channel/cli/index.mjs", + "r4Sha256": "991597af202199aa83d6f3f82983610d7bd415eec49efb1e0a4645b4edaf7da2", + "r5Sha256": "991597af202199aa83d6f3f82983610d7bd415eec49efb1e0a4645b4edaf7da2" + }, + { + "path": "packages/plugins/channel/webui/index.mjs", + "r4Sha256": "35dbba5419c36cf1e69c9edd04bb319243aaa8045d8e2b4b091d275fcdf58f1d", + "r5Sha256": "35dbba5419c36cf1e69c9edd04bb319243aaa8045d8e2b4b091d275fcdf58f1d" + }, + { + "path": "packages/plugins/harness/claude-code/index.mjs", + "r4Sha256": "04c24058f37260c9192d5036c8cf28b50faba8e3e3bf57f198d233485d0d57e6", + "r5Sha256": "04c24058f37260c9192d5036c8cf28b50faba8e3e3bf57f198d233485d0d57e6" + }, + { + "path": "packages/plugins/harness/pi/index.mjs", + "r4Sha256": "2c1252e8e8db3ba4551bf1e34156ddf4e933cc664fc157105bef9a2705d6ce3b", + "r5Sha256": "2c1252e8e8db3ba4551bf1e34156ddf4e933cc664fc157105bef9a2705d6ce3b" + }, + { + "path": "packages/plugins/limit-check/daily-quota/README.md", + "r4Sha256": "b4f6bc55ad6d18bc0832fa320fce20be8c989fba123aa344a124e0057df44944", + "r5Sha256": "b4f6bc55ad6d18bc0832fa320fce20be8c989fba123aa344a124e0057df44944" + }, + { + "path": "packages/plugins/limit-check/daily-quota/index.mjs", + "r4Sha256": "ca49e035a6bb018fc6815d99f0a000b1a537eed9c98203dcc42bc69e56deaad2", + "r5Sha256": "ca49e035a6bb018fc6815d99f0a000b1a537eed9c98203dcc42bc69e56deaad2" + }, + { + "path": "packages/plugins/limit-check/token-limit/README.md", + "r4Sha256": "def48c3865bad92efa4bed5cc608c1b86053b9115719b8c51301e3638a8d3847", + "r5Sha256": "def48c3865bad92efa4bed5cc608c1b86053b9115719b8c51301e3638a8d3847" + }, + { + "path": "packages/plugins/limit-check/token-limit/index.mjs", + "r4Sha256": "d97470e6c1231756612d73b76b019ecfda90dc791e4b99a4263dac976c113fcd", + "r5Sha256": "d97470e6c1231756612d73b76b019ecfda90dc791e4b99a4263dac976c113fcd" + }, + { + "path": "packages/plugins/package.json", + "r4Sha256": "90a9ac59a9ea2287e9a3d4b2f4286d025e727f2a6ce149464f8d0420fd9a8ef1", + "r5Sha256": "90a9ac59a9ea2287e9a3d4b2f4286d025e727f2a6ce149464f8d0420fd9a8ef1" + }, + { + "path": "packages/plugins/search-source/harness-builtin/index.mjs", + "r4Sha256": "8be381a7e5dc7dd5ad18e89bb17f17d4b7074bbac490331fc61c65ac2b824057", + "r5Sha256": "8be381a7e5dc7dd5ad18e89bb17f17d4b7074bbac490331fc61c65ac2b824057" + }, + { + "path": "packages/plugins/search-source/searxng-bundled/index.mjs", + "r4Sha256": "92618d0cd2f1b79c7d0230ec0ecd80ff628744524847d6b5f33ddbae9d7a3a09", + "r5Sha256": "92618d0cd2f1b79c7d0230ec0ecd80ff628744524847d6b5f33ddbae9d7a3a09" + }, + { + "path": "packages/plugins/search-source/searxng-url/index.mjs", + "r4Sha256": "fe4603b69596c3758ef8d7f794e403273e24e0fb950a92f15f8e651e193955ec", + "r5Sha256": "fe4603b69596c3758ef8d7f794e403273e24e0fb950a92f15f8e651e193955ec" + }, + { + "path": "packages/plugins/src/channel.mjs", + "r4Sha256": "5fcecf8336ee247e8ac2f626b21e4c79b1edc49082eadfd536cd23016c6bb756", + "r5Sha256": "5fcecf8336ee247e8ac2f626b21e4c79b1edc49082eadfd536cd23016c6bb756" + }, + { + "path": "packages/plugins/src/kinds.mjs", + "r4Sha256": "215bfcb058660239fc298b1e5459d5d44943543c2499af16f9726fd8cf9492da", + "r5Sha256": "215bfcb058660239fc298b1e5459d5d44943543c2499af16f9726fd8cf9492da" + }, + { + "path": "packages/plugins/src/loader.mjs", + "r4Sha256": "2e99f9222424cf9503253701568f0bb5ef579a22930f9f224e5b63ad6b4f745f", + "r5Sha256": "2e99f9222424cf9503253701568f0bb5ef579a22930f9f224e5b63ad6b4f745f" + }, + { + "path": "packages/plugins/usage-source/transcript/README.md", + "r4Sha256": "81b8ae3ce623d707c1ca3524fc58a8446643774db7337e10b453b2e6aca162b7", + "r5Sha256": "81b8ae3ce623d707c1ca3524fc58a8446643774db7337e10b453b2e6aca162b7" + }, + { + "path": "packages/plugins/usage-source/transcript/index.mjs", + "r4Sha256": "d09ae19db3eb69477783163559bd6a8e5b59a6f5af0eafd62d0e2e3bd325065e", + "r5Sha256": "d09ae19db3eb69477783163559bd6a8e5b59a6f5af0eafd62d0e2e3bd325065e" + }, + { + "path": "packages/project/README.md", + "r4Sha256": "0e4d1c15680f9045b07ec0c001d8ff8e6ac35fae9f68dc0f9d147e15977923d7", + "r5Sha256": "0e4d1c15680f9045b07ec0c001d8ff8e6ac35fae9f68dc0f9d147e15977923d7" + }, + { + "path": "packages/project/package.json", + "r4Sha256": "13664e88d0f233bcf18f05e75946e70a1f2a7ba8d099248b73936230cefadd8d", + "r5Sha256": "13664e88d0f233bcf18f05e75946e70a1f2a7ba8d099248b73936230cefadd8d" + }, + { + "path": "packages/project/schemas/decision.schema.json", + "r4Sha256": "925bb03ac99e5845e4bfa20b4561a331f034f88e187db82213df6602a7ceee4b", + "r5Sha256": "925bb03ac99e5845e4bfa20b4561a331f034f88e187db82213df6602a7ceee4b" + }, + { + "path": "packages/project/schemas/project.schema.json", + "r4Sha256": "f069c012e9660d5d0491a21f98e936b725f6818e1c3136dfec61b3c800bd58de", + "r5Sha256": "f069c012e9660d5d0491a21f98e936b725f6818e1c3136dfec61b3c800bd58de" + }, + { + "path": "packages/project/schemas/requirement.schema.json", + "r4Sha256": "79a1e7b567af7162bb88ca69861075fc579a858e8aec4e49824ccdc370b690c3", + "r5Sha256": "79a1e7b567af7162bb88ca69861075fc579a858e8aec4e49824ccdc370b690c3" + }, + { + "path": "packages/project/src/git.mjs", + "r4Sha256": "d0041915939a1e72285295bead3137911f24a2ebacb794de9382dda47293584e", + "r5Sha256": "d0041915939a1e72285295bead3137911f24a2ebacb794de9382dda47293584e" + }, + { + "path": "packages/project/src/index.mjs", + "r4Sha256": "3ab38cc40ce9ed1a714a59a1f2c336c3792a59431a6a9cc655ba6a2f47513899", + "r5Sha256": "3ab38cc40ce9ed1a714a59a1f2c336c3792a59431a6a9cc655ba6a2f47513899" + }, + { + "path": "packages/project/src/paths.mjs", + "r4Sha256": "bd9debcf3f9bb92560e74f220a0b108dfe24154bc6d1fb03c5ec414356d451f9", + "r5Sha256": "bd9debcf3f9bb92560e74f220a0b108dfe24154bc6d1fb03c5ec414356d451f9" + }, + { + "path": "packages/project/src/read.mjs", + "r4Sha256": "42113cd20eb8f04dd252f9963a6f1a84806af9cae7beb6808c4d584a2548220c", + "r5Sha256": "42113cd20eb8f04dd252f9963a6f1a84806af9cae7beb6808c4d584a2548220c" + }, + { + "path": "packages/project/src/validate.mjs", + "r4Sha256": "e49ab5e825f0706da2f3c8dfcf33c1331a38d77ca2d35b03359ee68ea74652c5", + "r5Sha256": "e49ab5e825f0706da2f3c8dfcf33c1331a38d77ca2d35b03359ee68ea74652c5" + }, + { + "path": "packages/project/templates/decision.json", + "r4Sha256": "0b1985a131474a041ea96652a5035224144a51fb50f3d2406013f37596fa98fb", + "r5Sha256": "0b1985a131474a041ea96652a5035224144a51fb50f3d2406013f37596fa98fb" + }, + { + "path": "packages/project/templates/document.md", + "r4Sha256": "5052534a4b89510d84a9b8815f933bd1c4a8912a91508b6dfe1764dac8c4f14a", + "r5Sha256": "5052534a4b89510d84a9b8815f933bd1c4a8912a91508b6dfe1764dac8c4f14a" + }, + { + "path": "packages/project/templates/north-star.md", + "r4Sha256": "24b7e3224dba45753e2d6139fcf05d2ed8c29d999752b02a637cfb8489fd9e0a", + "r5Sha256": "24b7e3224dba45753e2d6139fcf05d2ed8c29d999752b02a637cfb8489fd9e0a" + }, + { + "path": "packages/project/templates/project.json", + "r4Sha256": "14d780b49cbda0c306ca38c1523ccd69d6bf40c73ab744c829e085ef610cd084", + "r5Sha256": "14d780b49cbda0c306ca38c1523ccd69d6bf40c73ab744c829e085ef610cd084" + }, + { + "path": "packages/project/templates/requirement.json", + "r4Sha256": "682343c67c81ca244b07bf39723c328f80706ba4d957aa45601b2a64ceeeb215", + "r5Sha256": "682343c67c81ca244b07bf39723c328f80706ba4d957aa45601b2a64ceeeb215" + }, + { + "path": "packages/queue/README.md", + "r4Sha256": "ae2db64a7af1d6acbe5574cc36944cf504a485aad7dc1982fad5dfad4c700e5e", + "r5Sha256": "ae2db64a7af1d6acbe5574cc36944cf504a485aad7dc1982fad5dfad4c700e5e" + }, + { + "path": "packages/queue/package.json", + "r4Sha256": "5d4b4c7a4624ef267d76d4c032dbcddf3a3d7e7b73a5cfed06953307992bbde7", + "r5Sha256": "5d4b4c7a4624ef267d76d4c032dbcddf3a3d7e7b73a5cfed06953307992bbde7" + }, + { + "path": "packages/queue/src/cli.mjs", + "r4Sha256": "08b7ff4059726b4182d4931c3f177a79a9a19e5f43ccc62a68c23eb6c1568543", + "r5Sha256": "08b7ff4059726b4182d4931c3f177a79a9a19e5f43ccc62a68c23eb6c1568543" + }, + { + "path": "packages/queue/src/errors.mjs", + "r4Sha256": "7a851814dfff6f392de814fc31f8dc8cbe9c79cd40ef71313dca1939115ee879", + "r5Sha256": "7a851814dfff6f392de814fc31f8dc8cbe9c79cd40ef71313dca1939115ee879" + }, + { + "path": "packages/queue/src/io.mjs", + "r4Sha256": "962d0e6548121933030980b937f55ca5913ee3859ff2b8888095bd273dbf561e", + "r5Sha256": "962d0e6548121933030980b937f55ca5913ee3859ff2b8888095bd273dbf561e" + }, + { + "path": "packages/queue/src/lock.mjs", + "r4Sha256": "05682738482a56001bac168168a6aeb7e624f8ed1661a6c6592274f13da38c89", + "r5Sha256": "05682738482a56001bac168168a6aeb7e624f8ed1661a6c6592274f13da38c89" + }, + { + "path": "packages/queue/src/queue.mjs", + "r4Sha256": "36b94e43e7b358328d52dcf9f6911761b4b1c608a9f73f51f675fe6a94b54664", + "r5Sha256": "36b94e43e7b358328d52dcf9f6911761b4b1c608a9f73f51f675fe6a94b54664" + }, + { + "path": "packages/queue/src/review.mjs", + "r4Sha256": "8dc65a1f5a034e3ff4579b3f741ab2a99920dcec85c6059c9c84d958aa6f1b26", + "r5Sha256": "8dc65a1f5a034e3ff4579b3f741ab2a99920dcec85c6059c9c84d958aa6f1b26" + }, + { + "path": "packages/queue/src/store.mjs", + "r4Sha256": "04eab46749f935e7c3cf395fbe540a805a5639b562b10cd664df8cf4bf35c1fa", + "r5Sha256": "04eab46749f935e7c3cf395fbe540a805a5639b562b10cd664df8cf4bf35c1fa" + }, + { + "path": "packages/runs/README.md", + "r4Sha256": "144d93f54de8a15c9609b7c1e097593f8127c7ad930a732533a9bb0dd32a2ebf", + "r5Sha256": "144d93f54de8a15c9609b7c1e097593f8127c7ad930a732533a9bb0dd32a2ebf" + }, + { + "path": "packages/runs/package.json", + "r4Sha256": "146b236a37bf665979e28f1794c4c4437b6e85feb43b892e8d9d697506fc453f", + "r5Sha256": "146b236a37bf665979e28f1794c4c4437b6e85feb43b892e8d9d697506fc453f" + }, + { + "path": "packages/runs/src/errors.mjs", + "r4Sha256": "f686212fa10e8541a1d8055fe30d65558a516245276aa53ecefd97bd7ca0a20c", + "r5Sha256": "f686212fa10e8541a1d8055fe30d65558a516245276aa53ecefd97bd7ca0a20c" + }, + { + "path": "packages/runs/src/index.mjs", + "r4Sha256": "eb7063a8ee0417699b45f4bfec69c3ffcde8b3b276956ca4fea266ec0abd6b23", + "r5Sha256": "eb7063a8ee0417699b45f4bfec69c3ffcde8b3b276956ca4fea266ec0abd6b23" + }, + { + "path": "packages/runs/src/paths.mjs", + "r4Sha256": "3f9d025f0615a08edd440bb2aa6cea48f21cafa1f680332fffca3c7ee586cc65", + "r5Sha256": "3f9d025f0615a08edd440bb2aa6cea48f21cafa1f680332fffca3c7ee586cc65" + }, + { + "path": "packages/runs/src/runs.mjs", + "r4Sha256": "ba64e50c3a63e693fc313278ff6cf440234649a6719dd9229bce20272a518ec1", + "r5Sha256": "ba64e50c3a63e693fc313278ff6cf440234649a6719dd9229bce20272a518ec1" + }, + { + "path": "packages/runs/src/state.mjs", + "r4Sha256": "ae546df81c6da7ef51680e23a12c01f08c5a6dc1b68cdf26c8d4210772149940", + "r5Sha256": "ae546df81c6da7ef51680e23a12c01f08c5a6dc1b68cdf26c8d4210772149940" + }, + { + "path": "packages/seat/README.md", + "r4Sha256": "a862bbf8ace77b7fd143addb8c29bd89e08e1d22e2a24af6c54ca66dea186aa0", + "r5Sha256": "a862bbf8ace77b7fd143addb8c29bd89e08e1d22e2a24af6c54ca66dea186aa0" + }, + { + "path": "packages/seat/package.json", + "r4Sha256": "26ee149f870ff56ad6d1c3d7c3b4b2301879c59f02d5840078c07e7964cc2175", + "r5Sha256": "26ee149f870ff56ad6d1c3d7c3b4b2301879c59f02d5840078c07e7964cc2175" + }, + { + "path": "packages/seat/src/checkout.mjs", + "r4Sha256": "859201bd192522e51c33b86ef45f73487b27cdfc48ea7e4e09870e26d056048a", + "r5Sha256": "859201bd192522e51c33b86ef45f73487b27cdfc48ea7e4e09870e26d056048a" + }, + { + "path": "packages/seat/src/cli.mjs", + "r4Sha256": "a2880bd7b66cd9d6fc3588cc739eadc5db7fe806f81da86e0ac09bbff15a3099", + "r5Sha256": "a2880bd7b66cd9d6fc3588cc739eadc5db7fe806f81da86e0ac09bbff15a3099" + }, + { + "path": "packages/seat/src/landing.mjs", + "r4Sha256": "a3a5f3e58b92b8bf57d4bd7e9246f7ce10492e308ddfd254c5e059197c2d9c14", + "r5Sha256": "a3a5f3e58b92b8bf57d4bd7e9246f7ce10492e308ddfd254c5e059197c2d9c14" + }, + { + "path": "packages/seat/src/proc.mjs", + "r4Sha256": "382cbf7e0ff336911e288ce858bdbfbec693bc2b69879720d1f0b4c7d8455198", + "r5Sha256": "382cbf7e0ff336911e288ce858bdbfbec693bc2b69879720d1f0b4c7d8455198" + }, + { + "path": "packages/seat/src/sandbox.mjs", + "r4Sha256": "8c1b67d791540c2bdca36c0f8048b00835b4333d9440f70a87ed71beb0d28299", + "r5Sha256": "8c1b67d791540c2bdca36c0f8048b00835b4333d9440f70a87ed71beb0d28299" + }, + { + "path": "packages/seat/src/seat.mjs", + "r4Sha256": "eec970961a667c9e614d1474d33c31a019b2cf1b0bf931a51458d874bca13a15", + "r5Sha256": "eec970961a667c9e614d1474d33c31a019b2cf1b0bf931a51458d874bca13a15" + }, + { + "path": "packages/seat/src/session.mjs", + "r4Sha256": "40822543fea18e54ff67108b5c8bb2209966180b8829b813b893d1f00ff0a35c", + "r5Sha256": "40822543fea18e54ff67108b5c8bb2209966180b8829b813b893d1f00ff0a35c" + }, + { + "path": "packages/seat/src/working.mjs", + "r4Sha256": "a7aff1cf19d4c775632d17ec64b34f2e510e04a9da9778921a874b81a445d03c", + "r5Sha256": "a7aff1cf19d4c775632d17ec64b34f2e510e04a9da9778921a874b81a445d03c" + }, + { + "path": "packages/tasks/README.md", + "r4Sha256": "7f16447f47bc10874df1b400dd85416ba9115b984222436666880f806610ea0e", + "r5Sha256": "7f16447f47bc10874df1b400dd85416ba9115b984222436666880f806610ea0e" + }, + { + "path": "packages/tasks/deploy/vikunja/README.md", + "r4Sha256": "aa79e805d782fe8a566c4160f0757efcf6edd3c0d7a7145a4764ab5911725856", + "r5Sha256": "aa79e805d782fe8a566c4160f0757efcf6edd3c0d7a7145a4764ab5911725856" + }, + { + "path": "packages/tasks/deploy/vikunja/compose.yaml", + "r4Sha256": "9f31242e34de26f28677d6b6496923d6d4ee4077cfeb31a86cd2185e67a575b3", + "r5Sha256": "9f31242e34de26f28677d6b6496923d6d4ee4077cfeb31a86cd2185e67a575b3" + }, + { + "path": "packages/tasks/fields.json", + "r4Sha256": "2018701876f26c0566307335eae992efb3551b75af200b7c249b615757bf311a", + "r5Sha256": "2018701876f26c0566307335eae992efb3551b75af200b7c249b615757bf311a" + }, + { + "path": "packages/tasks/live/README.md", + "r4Sha256": "aad24a5db15943eba6c0bf5fd93add3f4f7b265ff5868c46e405e976bc26ce22", + "r5Sha256": "aad24a5db15943eba6c0bf5fd93add3f4f7b265ff5868c46e405e976bc26ce22" + }, + { + "path": "packages/tasks/live/run.mjs", + "r4Sha256": "3feefaa95a6864b2fda00cd2ca235e03989b3be0af1d3415f5f597c83d2a632f", + "r5Sha256": "3feefaa95a6864b2fda00cd2ca235e03989b3be0af1d3415f5f597c83d2a632f" + }, + { + "path": "packages/tasks/package.json", + "r4Sha256": "269161444d253da7886d83f7b2f7bd79792b6c6b798c6e72f05f69bb99ad5295", + "r5Sha256": "269161444d253da7886d83f7b2f7bd79792b6c6b798c6e72f05f69bb99ad5295" + }, + { + "path": "packages/tasks/requirements.json", + "r4Sha256": "6e72dd59445f3e282029b220979aa417d348187511070a76c2bd82a312886a69", + "r5Sha256": "6e72dd59445f3e282029b220979aa417d348187511070a76c2bd82a312886a69" + }, + { + "path": "packages/tasks/src/adapter.mjs", + "r4Sha256": "165e5d6b8dcaf42595e305982b3b20a67b26af84b688a84eb360ff0cb8f12dc7", + "r5Sha256": "165e5d6b8dcaf42595e305982b3b20a67b26af84b688a84eb360ff0cb8f12dc7" + }, + { + "path": "packages/tasks/src/digest.mjs", + "r4Sha256": "b5580224e931198c7024326135db5bd4f660dfa42834f19e4cd3c08550845bc9", + "r5Sha256": "b5580224e931198c7024326135db5bd4f660dfa42834f19e4cd3c08550845bc9" + }, + { + "path": "packages/tasks/src/fake.mjs", + "r4Sha256": "feb4a6f8927471ce445082d5a28e0e29377b000aabec97ea14378dafe88ec065", + "r5Sha256": "feb4a6f8927471ce445082d5a28e0e29377b000aabec97ea14378dafe88ec065" + }, + { + "path": "packages/tasks/src/fields.mjs", + "r4Sha256": "c9a883e9a1649277edce97adca40bca2874df7b5312c70e4ac6f6d4a1c860841", + "r5Sha256": "c9a883e9a1649277edce97adca40bca2874df7b5312c70e4ac6f6d4a1c860841" + }, + { + "path": "packages/tasks/src/index.mjs", + "r4Sha256": "f41a647f9c5bb65e11128c05554f65d20939f73adb8e75838c37431891fc9c99", + "r5Sha256": "f41a647f9c5bb65e11128c05554f65d20939f73adb8e75838c37431891fc9c99" + }, + { + "path": "packages/tasks/src/requirements.mjs", + "r4Sha256": "38e7b85650247759f06c09fce205b2970b8368bc81491f51dc6b3c90ba2a846d", + "r5Sha256": "38e7b85650247759f06c09fce205b2970b8368bc81491f51dc6b3c90ba2a846d" + }, + { + "path": "packages/tasks/src/startup.mjs", + "r4Sha256": "c538cb5ac1c9bc96c50b8d6ca01136361369ec463606684a21d81e3b5c2e46a5", + "r5Sha256": "c538cb5ac1c9bc96c50b8d6ca01136361369ec463606684a21d81e3b5c2e46a5" + }, + { + "path": "packages/tasks/src/sync.mjs", + "r4Sha256": "39887268258c3b651246b3596a866005fc193cd8ee5f151a02492967069f2d06", + "r5Sha256": "39887268258c3b651246b3596a866005fc193cd8ee5f151a02492967069f2d06" + }, + { + "path": "packages/tasks/src/verbs.mjs", + "r4Sha256": "1c10dfcd37b0435e199aed2535b71909728ef358dc145ca9eec4f5beb37bfb87", + "r5Sha256": "1c10dfcd37b0435e199aed2535b71909728ef358dc145ca9eec4f5beb37bfb87" + }, + { + "path": "packages/tasks/src/vikunja.mjs", + "r4Sha256": "47fce7d5180a0a9a7d6c763f92016c0d10e2c012920d995803a9a713487b121d", + "r5Sha256": "47fce7d5180a0a9a7d6c763f92016c0d10e2c012920d995803a9a713487b121d" + }, + { + "path": "packages/webui/README.md", + "r4Sha256": "04b7c1165c4fa73137a72e8373d70fd7d96a5897b5511170e6d41908a7667e96", + "r5Sha256": "04b7c1165c4fa73137a72e8373d70fd7d96a5897b5511170e6d41908a7667e96" + }, + { + "path": "packages/webui/editor/BUILD.json", + "r4Sha256": "c60f2e353172bb0e3aa1cfe7be081f49898602af8ca0294fef2dabb8112b942f", + "r5Sha256": "c60f2e353172bb0e3aa1cfe7be081f49898602af8ca0294fef2dabb8112b942f" + }, + { + "path": "packages/webui/editor/build.mjs", + "r4Sha256": "fe046f0f935c528c9f0a65d589c4401a43ac49ddfa6cf6543814c280d5b619bd", + "r5Sha256": "fe046f0f935c528c9f0a65d589c4401a43ac49ddfa6cf6543814c280d5b619bd" + }, + { + "path": "packages/webui/editor/editor.css", + "r4Sha256": "3a4931e7fa7d74633a1cbcce31cb202beea40bbcb95ba8dd28a26313bd3d7e24", + "r5Sha256": "3a4931e7fa7d74633a1cbcce31cb202beea40bbcb95ba8dd28a26313bd3d7e24" + }, + { + "path": "packages/webui/editor/entry.mjs", + "r4Sha256": "f780c327fab8cde6ef922669959ac2802691cd405d3c0911faf97d7fbe2e7d56", + "r5Sha256": "f780c327fab8cde6ef922669959ac2802691cd405d3c0911faf97d7fbe2e7d56" + }, + { + "path": "packages/webui/editor/model.mjs", + "r4Sha256": "8596c60ac4b5a8885e02853ef378743eb0bc4c9bbb00ce8a72016e4453b32a79", + "r5Sha256": "8596c60ac4b5a8885e02853ef378743eb0bc4c9bbb00ce8a72016e4453b32a79" + }, + { + "path": "packages/webui/editor/toolchain.mjs", + "r4Sha256": "efc5dd177e1890f5d76c2cf631a9a720c45398a501c52e0d178e5882da77c3c9", + "r5Sha256": "efc5dd177e1890f5d76c2cf631a9a720c45398a501c52e0d178e5882da77c3c9" + }, + { + "path": "packages/webui/editor/view.mjs", + "r4Sha256": "737a37696aee31d46a9091119fce294ec7562ff50a54585ec381e1d217132829", + "r5Sha256": "737a37696aee31d46a9091119fce294ec7562ff50a54585ec381e1d217132829" + }, + { + "path": "packages/webui/package-lock.json", + "r4Sha256": "eb60a4945282a5eae49a03a27cc4a1eb67954e73d57b8ef945073ed5c184f63f", + "r5Sha256": "eb60a4945282a5eae49a03a27cc4a1eb67954e73d57b8ef945073ed5c184f63f" + }, + { + "path": "packages/webui/package.json", + "r4Sha256": "0bb346f598380c2bcdb39db92a006959442d3ce5dc645503ef76405aae53311c", + "r5Sha256": "0bb346f598380c2bcdb39db92a006959442d3ce5dc645503ef76405aae53311c" + }, + { + "path": "packages/webui/src/bus.mjs", + "r4Sha256": "934ab2f9b6bde72aafe7814758550c283eb25a4f3a23b284021b13718d67178f", + "r5Sha256": "934ab2f9b6bde72aafe7814758550c283eb25a4f3a23b284021b13718d67178f" + }, + { + "path": "packages/webui/src/chat-http.mjs", + "r4Sha256": "f7b6b68906f13a644854b8083287dfa2936e8defc6207d05739e89763cc91440", + "r5Sha256": "f7b6b68906f13a644854b8083287dfa2936e8defc6207d05739e89763cc91440" + }, + { + "path": "packages/webui/src/chat.mjs", + "r4Sha256": "1fbd0edbf32c50f3898114289d69910bfd908693488f26c108a9bb0097a1e489", + "r5Sha256": "1fbd0edbf32c50f3898114289d69910bfd908693488f26c108a9bb0097a1e489" + }, + { + "path": "packages/webui/src/cli.mjs", + "r4Sha256": "2c7f791e53b4bce8dc23aa974a8fe4c5d7b59204331a3d8ac398a31e530517a2", + "r5Sha256": "2c7f791e53b4bce8dc23aa974a8fe4c5d7b59204331a3d8ac398a31e530517a2" + }, + { + "path": "packages/webui/src/public/app.js", + "r4Sha256": "41ee8798c34ee491b80ae1b42c3e96cd5d12fb1603b1ab88ac2dd10b5fb27964", + "r5Sha256": "41ee8798c34ee491b80ae1b42c3e96cd5d12fb1603b1ab88ac2dd10b5fb27964" + }, + { + "path": "packages/webui/src/public/assets/fonts/jetbrains-mono-400.woff2", + "r4Sha256": "a9cb1cd82332b23a47e3a1239d25d13c86d16c4220695e34b243effa999f45f2", + "r5Sha256": "a9cb1cd82332b23a47e3a1239d25d13c86d16c4220695e34b243effa999f45f2" + }, + { + "path": "packages/webui/src/public/assets/fonts/jetbrains-mono-500.woff2", + "r4Sha256": "086c48dfbea9ddaff1320f7e09399b8e2924e88ce67453721255db3bdbb5a353", + "r5Sha256": "086c48dfbea9ddaff1320f7e09399b8e2924e88ce67453721255db3bdbb5a353" + }, + { + "path": "packages/webui/src/public/assets/fonts/jetbrains-mono-700.woff2", + "r4Sha256": "c503cc5ec5f8b2c7666b7ecda1adf44bd45f2e6579b2eba0fc292150416588a2", + "r5Sha256": "c503cc5ec5f8b2c7666b7ecda1adf44bd45f2e6579b2eba0fc292150416588a2" + }, + { + "path": "packages/webui/src/public/assets/fonts/jetbrains-mono-OFL.txt", + "r4Sha256": "30f0c136e3c88e422d0791acd97238870f9054a9729bc34cf2ff0d4ed8cac4ad", + "r5Sha256": "30f0c136e3c88e422d0791acd97238870f9054a9729bc34cf2ff0d4ed8cac4ad" + }, + { + "path": "packages/webui/src/public/assets/fonts/jetbrains-mono-sources.txt", + "r4Sha256": "f6f89aaaa6a02e9a16020de26fb6a664f1da152e0b0413248da2d9f6b68395cc", + "r5Sha256": "f6f89aaaa6a02e9a16020de26fb6a664f1da152e0b0413248da2d9f6b68395cc" + }, + { + "path": "packages/webui/src/public/assets/fonts/manrope-400.woff2", + "r4Sha256": "a30ddcd349703aff7464c34bef3fffdff405ee50c113440d7c8693c02d210972", + "r5Sha256": "a30ddcd349703aff7464c34bef3fffdff405ee50c113440d7c8693c02d210972" + }, + { + "path": "packages/webui/src/public/assets/fonts/manrope-500.woff2", + "r4Sha256": "a30ddcd349703aff7464c34bef3fffdff405ee50c113440d7c8693c02d210972", + "r5Sha256": "a30ddcd349703aff7464c34bef3fffdff405ee50c113440d7c8693c02d210972" + }, + { + "path": "packages/webui/src/public/assets/fonts/manrope-600.woff2", + "r4Sha256": "a30ddcd349703aff7464c34bef3fffdff405ee50c113440d7c8693c02d210972", + "r5Sha256": "a30ddcd349703aff7464c34bef3fffdff405ee50c113440d7c8693c02d210972" + }, + { + "path": "packages/webui/src/public/assets/fonts/manrope-700.woff2", + "r4Sha256": "a30ddcd349703aff7464c34bef3fffdff405ee50c113440d7c8693c02d210972", + "r5Sha256": "a30ddcd349703aff7464c34bef3fffdff405ee50c113440d7c8693c02d210972" + }, + { + "path": "packages/webui/src/public/assets/fonts/manrope-OFL.txt", + "r4Sha256": "e01b637272e0cbdfb240184dd98ea5cc671556d9894dae2668d92ab2c906787c", + "r5Sha256": "e01b637272e0cbdfb240184dd98ea5cc671556d9894dae2668d92ab2c906787c" + }, + { + "path": "packages/webui/src/public/assets/fonts/manrope-sources.txt", + "r4Sha256": "0d9aaaaa963b675d94d8fbee0cf47a8ecf03ea412f8b14aba96416375e5a2bb5", + "r5Sha256": "0d9aaaaa963b675d94d8fbee0cf47a8ecf03ea412f8b14aba96416375e5a2bb5" + }, + { + "path": "packages/webui/src/public/brand.js", + "r4Sha256": "d568df6dca14ae336db3b627639c8181c088649a21ffe992f9bfacc20b5b6238", + "r5Sha256": "d568df6dca14ae336db3b627639c8181c088649a21ffe992f9bfacc20b5b6238" + }, + { + "path": "packages/webui/src/public/bus.css", + "r4Sha256": "35051430c0f5f175922519d6ce962d1e0273905782b6faa86ac11012d7bab25d", + "r5Sha256": "35051430c0f5f175922519d6ce962d1e0273905782b6faa86ac11012d7bab25d" + }, + { + "path": "packages/webui/src/public/bus.js", + "r4Sha256": "e6c8f838eb7cdc2ae556c04451ca4c8f2d433117a17f285a144cfc7dff03e2a4", + "r5Sha256": "e6c8f838eb7cdc2ae556c04451ca4c8f2d433117a17f285a144cfc7dff03e2a4" + }, + { + "path": "packages/webui/src/public/chat.css", + "r4Sha256": "2c4ca027492a833cca73917ffbccc0ed96c47deb946175ca35d7969bf62da1bd", + "r5Sha256": "2c4ca027492a833cca73917ffbccc0ed96c47deb946175ca35d7969bf62da1bd" + }, + { + "path": "packages/webui/src/public/chat.js", + "r4Sha256": "49c4179c3d4cf456cfff919af4f27430237f7a423a099c1788c4dc71b2773a32", + "r5Sha256": "49c4179c3d4cf456cfff919af4f27430237f7a423a099c1788c4dc71b2773a32" + }, + { + "path": "packages/webui/src/public/console.css", + "r4Sha256": "1ce47447339a274dd51c0168838a5e58e0addaf2200e04625bc1da5bc9279097", + "r5Sha256": "1ce47447339a274dd51c0168838a5e58e0addaf2200e04625bc1da5bc9279097" + }, + { + "path": "packages/webui/src/public/editor.css", + "r4Sha256": "8654ac57d1e7a561110138ecd7f701c34a074017ff8c4cd2768d8083908ee61f", + "r5Sha256": "8654ac57d1e7a561110138ecd7f701c34a074017ff8c4cd2768d8083908ee61f" + }, + { + "path": "packages/webui/src/public/editor.js", + "r4Sha256": "9c881b13740fae2408717ad75fa1d85bfcfe3fa8b3af0f1b3f2e706c90e80fee", + "r5Sha256": "9c881b13740fae2408717ad75fa1d85bfcfe3fa8b3af0f1b3f2e706c90e80fee" + }, + { + "path": "packages/webui/src/public/icons.svg", + "r4Sha256": "01b456c1ca685e69e2974d66a615b7b8736abbd51aef7a3f014bca3783710430", + "r5Sha256": "01b456c1ca685e69e2974d66a615b7b8736abbd51aef7a3f014bca3783710430" + }, + { + "path": "packages/webui/src/public/index.html", + "r4Sha256": "f276fa440ec938638cb3e0f1b812fafa929460a6b96f1dab4cf1076a7c0c18ea", + "r5Sha256": "f276fa440ec938638cb3e0f1b812fafa929460a6b96f1dab4cf1076a7c0c18ea" + }, + { + "path": "packages/webui/src/public/live.css", + "r4Sha256": "8747b83d16d93d880cf1502267aefc3e48f02e7b5b364177c6fb492320f63024", + "r5Sha256": "8747b83d16d93d880cf1502267aefc3e48f02e7b5b364177c6fb492320f63024" + }, + { + "path": "packages/webui/src/public/markdown-preview.js", + "r4Sha256": "1f8ecebc9c3ddac5efac72aa414cf115851134bae22fd1941dfc965ea6f41bb6", + "r5Sha256": "1f8ecebc9c3ddac5efac72aa414cf115851134bae22fd1941dfc965ea6f41bb6" + }, + { + "path": "packages/webui/src/public/shared/app.css", + "r4Sha256": "dbffe11bbdd4226ffabb2a8bee534258a23e766259489edb4eaf929e5c1b899a", + "r5Sha256": "dbffe11bbdd4226ffabb2a8bee534258a23e766259489edb4eaf929e5c1b899a" + }, + { + "path": "packages/webui/src/public/shell.css", + "r4Sha256": "d7b4d0ca32f07a63265d89131847cbb72c7e532101e693b31b0f38839b22f7e6", + "r5Sha256": "d7b4d0ca32f07a63265d89131847cbb72c7e532101e693b31b0f38839b22f7e6" + }, + { + "path": "packages/webui/src/public/tokens.css", + "r4Sha256": "4fdb72ec24c7245584c89280415e10113dba1c4cb03d98f5570ac745ba2e95cb", + "r5Sha256": "4fdb72ec24c7245584c89280415e10113dba1c4cb03d98f5570ac745ba2e95cb" + }, + { + "path": "packages/webui/src/queue-read.mjs", + "r4Sha256": "4f65ab7f6a446b0ffd3c666b1ac1a726fbd5de0814a43b19f566a844e40163b0", + "r5Sha256": "4f65ab7f6a446b0ffd3c666b1ac1a726fbd5de0814a43b19f566a844e40163b0" + }, + { + "path": "packages/webui/src/reads.mjs", + "r4Sha256": "bb560aec2f71bc9b65ebeb11aba874ac42731d0768142e02efe1ba7b7e0d5f85", + "r5Sha256": "bb560aec2f71bc9b65ebeb11aba874ac42731d0768142e02efe1ba7b7e0d5f85" + }, + { + "path": "packages/webui/src/serve.mjs", + "r4Sha256": "da624f188c69e016ff82e1d1dcae1c579e68a57f0f25d773bb5d8bca56b80ee1", + "r5Sha256": "da624f188c69e016ff82e1d1dcae1c579e68a57f0f25d773bb5d8bca56b80ee1" + }, + { + "path": "packages/webui/src/sso-config.mjs", + "r4Sha256": "37b01ab0479d5f2a7ab9aac790931c6d88c790465392d9c0b65a105513f3e36b", + "r5Sha256": "37b01ab0479d5f2a7ab9aac790931c6d88c790465392d9c0b65a105513f3e36b" + }, + { + "path": "packages/webui/src/sso.mjs", + "r4Sha256": "b624f044d361c648cefa161abe5f2b96e0cd8a83bc7816c9d501a2cd840988ca", + "r5Sha256": "b624f044d361c648cefa161abe5f2b96e0cd8a83bc7816c9d501a2cd840988ca" + }, + { + "path": "packages/webui/src/tester-socket.mjs", + "r4Sha256": "1c1fe0c795adac97f28502564a75f26d5666d9be5ae51169f7dd5bb7741fad16", + "r5Sha256": "1c1fe0c795adac97f28502564a75f26d5666d9be5ae51169f7dd5bb7741fad16" + }, + { + "path": "packages/webui/systemd/mosaic-webui.service.in", + "r4Sha256": "5cf2dcc590c3acb374b33685e794fc5b92bea77b9a048083aa14749cff2c3d1b", + "r5Sha256": "5cf2dcc590c3acb374b33685e794fc5b92bea77b9a048083aa14749cff2c3d1b" + }, + { + "path": "packages/webui/third_party/editor/NOTICE", + "r4Sha256": "2f687a0fd1ea83ce3935b8a06db2aa8a21cb33feb95c22a7b12f8d38e504d6a7", + "r5Sha256": "2f687a0fd1ea83ce3935b8a06db2aa8a21cb33feb95c22a7b12f8d38e504d6a7" + }, + { + "path": "packages/webui/third_party/editor/PROVENANCE.json", + "r4Sha256": "d0e600f0d649b3cb303172608f5daee72d60214bdbcb9d6a2c9dd8afbf578c5d", + "r5Sha256": "d0e600f0d649b3cb303172608f5daee72d60214bdbcb9d6a2c9dd8afbf578c5d" + }, + { + "path": "packages/webui/third_party/editor/entities/LICENSE", + "r4Sha256": "cb992345949ccd6e8394b2cd6c465f7b897c864f845937dbf64e8997f389e164", + "r5Sha256": "cb992345949ccd6e8394b2cd6c465f7b897c864f845937dbf64e8997f389e164" + }, + { + "path": "packages/webui/third_party/editor/entities/package.json", + "r4Sha256": "c92f657f679669a91bc32cd98f0b4812b3f4a9c6f3b3af3022a70cb25b7efc7c", + "r5Sha256": "c92f657f679669a91bc32cd98f0b4812b3f4a9c6f3b3af3022a70cb25b7efc7c" + }, + { + "path": "packages/webui/third_party/editor/entities/src/decode.ts", + "r4Sha256": "38a42d441b67aa4f6397a2edbc57a2845110f2f64c18c56c931f1ac55179be94", + "r5Sha256": "38a42d441b67aa4f6397a2edbc57a2845110f2f64c18c56c931f1ac55179be94" + }, + { + "path": "packages/webui/third_party/editor/entities/src/decode_codepoint.ts", + "r4Sha256": "7467c31bd84fed848ee0b1b7b4ec100ffe387fb2802ef0fa66307744a45f331c", + "r5Sha256": "7467c31bd84fed848ee0b1b7b4ec100ffe387fb2802ef0fa66307744a45f331c" + }, + { + "path": "packages/webui/third_party/editor/entities/src/encode.ts", + "r4Sha256": "e40bad527b5c9a1d5b9e0e7d0b8643328cb4d9e1b2d79777a367b81bcec3e09b", + "r5Sha256": "e40bad527b5c9a1d5b9e0e7d0b8643328cb4d9e1b2d79777a367b81bcec3e09b" + }, + { + "path": "packages/webui/third_party/editor/entities/src/escape.ts", + "r4Sha256": "c062e448b06654fa3c99a04e89bc53bc4463bf5e5cf65ac711f372a77e22639f", + "r5Sha256": "c062e448b06654fa3c99a04e89bc53bc4463bf5e5cf65ac711f372a77e22639f" + }, + { + "path": "packages/webui/third_party/editor/entities/src/generated/decode-data-html.ts", + "r4Sha256": "99bd4f1a69db8431bf58444e6c38a8b60f2a1820e1ce5781c851c1914a8822c4", + "r5Sha256": "99bd4f1a69db8431bf58444e6c38a8b60f2a1820e1ce5781c851c1914a8822c4" + }, + { + "path": "packages/webui/third_party/editor/entities/src/generated/decode-data-xml.ts", + "r4Sha256": "701497193dd355232513b7e4a7c6fea4d856eb33d5116c61cda4d59028d4790b", + "r5Sha256": "701497193dd355232513b7e4a7c6fea4d856eb33d5116c61cda4d59028d4790b" + }, + { + "path": "packages/webui/third_party/editor/entities/src/generated/encode-html.ts", + "r4Sha256": "409c7a156de66f45037fa684afaa6147f98d8860274ef0218f02a16c993cb103", + "r5Sha256": "409c7a156de66f45037fa684afaa6147f98d8860274ef0218f02a16c993cb103" + }, + { + "path": "packages/webui/third_party/editor/entities/src/index.ts", + "r4Sha256": "6487bfc6a09ad4211e1264ccd7d21fbce19bfcfd06eba8b83cb80537f0109687", + "r5Sha256": "6487bfc6a09ad4211e1264ccd7d21fbce19bfcfd06eba8b83cb80537f0109687" + }, + { + "path": "packages/webui/third_party/editor/linkify-it/LICENSE", + "r4Sha256": "95e3f7f0e81e9b4940cdfaa1956aaff5e4dfd2fb1565041e7c78eb9a606f23e3", + "r5Sha256": "95e3f7f0e81e9b4940cdfaa1956aaff5e4dfd2fb1565041e7c78eb9a606f23e3" + }, + { + "path": "packages/webui/third_party/editor/linkify-it/index.mjs", + "r4Sha256": "b7cdca31306ba9d92b963134333e9ec71df74bd9d8a2c649e0e2f6c7468d92b1", + "r5Sha256": "b7cdca31306ba9d92b963134333e9ec71df74bd9d8a2c649e0e2f6c7468d92b1" + }, + { + "path": "packages/webui/third_party/editor/linkify-it/lib/re.mjs", + "r4Sha256": "ce32a3968ede95c9fe29fe505fec5c19ab0bb7f8eb5d7666ab3180910adc9cf8", + "r5Sha256": "ce32a3968ede95c9fe29fe505fec5c19ab0bb7f8eb5d7666ab3180910adc9cf8" + }, + { + "path": "packages/webui/third_party/editor/linkify-it/package.json", + "r4Sha256": "492ffef383ead25ddc4a7615129c3c41eafe1a0a10172680a93fbb5039c84204", + "r5Sha256": "492ffef383ead25ddc4a7615129c3c41eafe1a0a10172680a93fbb5039c84204" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/LICENSE", + "r4Sha256": "792c48c5a849a15fdf9e37e8bcf9e6d1dd13b32b46c642a748a0a46a9919d473", + "r5Sha256": "792c48c5a849a15fdf9e37e8bcf9e6d1dd13b32b46c642a748a0a46a9919d473" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/index.mjs", + "r4Sha256": "a112fad9f779e8e4d58a76586ec54b5b9fe134d92a670a96749bcb676be2c62b", + "r5Sha256": "a112fad9f779e8e4d58a76586ec54b5b9fe134d92a670a96749bcb676be2c62b" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/common/html_blocks.mjs", + "r4Sha256": "5bbdf4ab71bd31461b29d47da1077c600ba941c3e53d74f8d50ce31ac45546a5", + "r5Sha256": "5bbdf4ab71bd31461b29d47da1077c600ba941c3e53d74f8d50ce31ac45546a5" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/common/html_re.mjs", + "r4Sha256": "82021df92c9f3f856cd1bb59454c2033c50a0617a748acc150bbdacb8101abcc", + "r5Sha256": "82021df92c9f3f856cd1bb59454c2033c50a0617a748acc150bbdacb8101abcc" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/common/utils.mjs", + "r4Sha256": "952160caa972e1d2e291dc284d8531f835b9eb7628c1e806c9cf95351c55afbe", + "r5Sha256": "952160caa972e1d2e291dc284d8531f835b9eb7628c1e806c9cf95351c55afbe" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/helpers/index.mjs", + "r4Sha256": "c5a73b8f46eaa0f027f06a309a362f885ec4467c99a581d798cbb6a3bac14965", + "r5Sha256": "c5a73b8f46eaa0f027f06a309a362f885ec4467c99a581d798cbb6a3bac14965" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/helpers/parse_link_destination.mjs", + "r4Sha256": "0426a1489ec76c3e10c8b36bf5a286e97cca90a800e4e24a98b314835b790c1c", + "r5Sha256": "0426a1489ec76c3e10c8b36bf5a286e97cca90a800e4e24a98b314835b790c1c" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/helpers/parse_link_label.mjs", + "r4Sha256": "70129adaa86dfd0f99e05971c51f865a3956775c045ccdc2ec8f2f2e0c0893aa", + "r5Sha256": "70129adaa86dfd0f99e05971c51f865a3956775c045ccdc2ec8f2f2e0c0893aa" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/helpers/parse_link_title.mjs", + "r4Sha256": "c10fc0bd89f11eb982a865dcf525cf6f3bec328958bb4de752e3993b44eb9c7c", + "r5Sha256": "c10fc0bd89f11eb982a865dcf525cf6f3bec328958bb4de752e3993b44eb9c7c" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/index.mjs", + "r4Sha256": "840746264c1655558e80752c663d745e4336e806978f74d4c678c5e21bab5158", + "r5Sha256": "840746264c1655558e80752c663d745e4336e806978f74d4c678c5e21bab5158" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/parser_block.mjs", + "r4Sha256": "ba9fe86713007b6c04e4381fc15500936ce3852eeaefe819350fa1a42eb10bd4", + "r5Sha256": "ba9fe86713007b6c04e4381fc15500936ce3852eeaefe819350fa1a42eb10bd4" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/parser_core.mjs", + "r4Sha256": "d6789a1f7ef8ad05a64114b873ca18b4b5c8245fee02d2d7559a20bba93858ec", + "r5Sha256": "d6789a1f7ef8ad05a64114b873ca18b4b5c8245fee02d2d7559a20bba93858ec" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/parser_inline.mjs", + "r4Sha256": "67ed63ad6efecc6f03bf1dc40f01a0abec7c0e675053b7503847bd4b287f72e4", + "r5Sha256": "67ed63ad6efecc6f03bf1dc40f01a0abec7c0e675053b7503847bd4b287f72e4" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/presets/commonmark.mjs", + "r4Sha256": "0287ae7e457b4a18f049aa81a7ca39bbc543eb2e9b95718476a8fb16dc299eee", + "r5Sha256": "0287ae7e457b4a18f049aa81a7ca39bbc543eb2e9b95718476a8fb16dc299eee" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/presets/default.mjs", + "r4Sha256": "f8b577995fcde6bd0fcb96524eb32a872d9e82874921956fda81477913a94cc9", + "r5Sha256": "f8b577995fcde6bd0fcb96524eb32a872d9e82874921956fda81477913a94cc9" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/presets/zero.mjs", + "r4Sha256": "d88083cd3b6a87566b63950c99a810fa3228345a41cb1fe441f2d8139bb9e60f", + "r5Sha256": "d88083cd3b6a87566b63950c99a810fa3228345a41cb1fe441f2d8139bb9e60f" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/renderer.mjs", + "r4Sha256": "47750faf7a1f9dab8d3e984ee4c6a799c195130ff141c9cb1a98e13d7bf70cc2", + "r5Sha256": "47750faf7a1f9dab8d3e984ee4c6a799c195130ff141c9cb1a98e13d7bf70cc2" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/ruler.mjs", + "r4Sha256": "86b94f2a50df56a51ef6ee8bdfb23a6733e83a1efa2f58b3b166aebae84a7ce2", + "r5Sha256": "86b94f2a50df56a51ef6ee8bdfb23a6733e83a1efa2f58b3b166aebae84a7ce2" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_block/blockquote.mjs", + "r4Sha256": "d88eaf1c88489376a825e9de09031d17b6cf442ae5f420acce3619df94f5c899", + "r5Sha256": "d88eaf1c88489376a825e9de09031d17b6cf442ae5f420acce3619df94f5c899" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_block/code.mjs", + "r4Sha256": "5b5aad3b00bf175f55849ae44974944fc26a45d416440f3710d11c6213f49968", + "r5Sha256": "5b5aad3b00bf175f55849ae44974944fc26a45d416440f3710d11c6213f49968" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_block/fence.mjs", + "r4Sha256": "4434e2f70150df1490bd11eeea8bd20fe763f029c22fc21305b6376f068cfd21", + "r5Sha256": "4434e2f70150df1490bd11eeea8bd20fe763f029c22fc21305b6376f068cfd21" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_block/heading.mjs", + "r4Sha256": "75e812fc9938775e55d7c4e840a856e557ef0f4a2ab27aec535d25c78c6e8d7c", + "r5Sha256": "75e812fc9938775e55d7c4e840a856e557ef0f4a2ab27aec535d25c78c6e8d7c" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_block/hr.mjs", + "r4Sha256": "2d786cf899247071a305d4fefcb3d41de707e31982997ebf134672497f20edc9", + "r5Sha256": "2d786cf899247071a305d4fefcb3d41de707e31982997ebf134672497f20edc9" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_block/html_block.mjs", + "r4Sha256": "d8e20eca3742fb8e5d3eae238de1afa962104d772df6dbccad604325940ca86b", + "r5Sha256": "d8e20eca3742fb8e5d3eae238de1afa962104d772df6dbccad604325940ca86b" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_block/lheading.mjs", + "r4Sha256": "ae83782c9a5bbcb69f3127a4541c1e27e6a46be86d4955bf840c5cd1a289a482", + "r5Sha256": "ae83782c9a5bbcb69f3127a4541c1e27e6a46be86d4955bf840c5cd1a289a482" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_block/list.mjs", + "r4Sha256": "1f569f81b61a73094ea7c70a30b2d6d3577de26de2d55d5f8b9146027f2f8a5f", + "r5Sha256": "1f569f81b61a73094ea7c70a30b2d6d3577de26de2d55d5f8b9146027f2f8a5f" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_block/paragraph.mjs", + "r4Sha256": "be9534ba8fa1312ae6ab6e6ecd6e96173a5a3dd35e924b7751782675bb15dc9a", + "r5Sha256": "be9534ba8fa1312ae6ab6e6ecd6e96173a5a3dd35e924b7751782675bb15dc9a" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_block/reference.mjs", + "r4Sha256": "8884a101e95de67d72b1fd3dfe3341bf52876132398d72a528481f662e0eecb6", + "r5Sha256": "8884a101e95de67d72b1fd3dfe3341bf52876132398d72a528481f662e0eecb6" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_block/state_block.mjs", + "r4Sha256": "3f26d52f4fa67c5fa5f85346acf18f4139419b5dc8496056dd6050bd3a266860", + "r5Sha256": "3f26d52f4fa67c5fa5f85346acf18f4139419b5dc8496056dd6050bd3a266860" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_block/table.mjs", + "r4Sha256": "454553ff462fc68e353dad0f7b04ba1da46ee18acf88047dde8faf1873d64bca", + "r5Sha256": "454553ff462fc68e353dad0f7b04ba1da46ee18acf88047dde8faf1873d64bca" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_core/block.mjs", + "r4Sha256": "52ef23be5d9248275a5c0ff8b43602540bd3ed8a69bc63fbdc262b09c5de69b5", + "r5Sha256": "52ef23be5d9248275a5c0ff8b43602540bd3ed8a69bc63fbdc262b09c5de69b5" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_core/inline.mjs", + "r4Sha256": "0da70e72022dda01deaf6630a772a9c4798b6b6dc1d37144520b872d302b12a3", + "r5Sha256": "0da70e72022dda01deaf6630a772a9c4798b6b6dc1d37144520b872d302b12a3" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_core/linkify.mjs", + "r4Sha256": "e68ac3597363b13a7451e65d9a7943ce99f4b57e9509eb62eebb1a3162423499", + "r5Sha256": "e68ac3597363b13a7451e65d9a7943ce99f4b57e9509eb62eebb1a3162423499" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_core/normalize.mjs", + "r4Sha256": "7f7fab952ebe0a0c16016835e1af0bf682af6e2eb5a28454eb350c28332cfa93", + "r5Sha256": "7f7fab952ebe0a0c16016835e1af0bf682af6e2eb5a28454eb350c28332cfa93" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_core/replacements.mjs", + "r4Sha256": "9b3211580c89951bad60aa4550f76ebf2d2b81cc4523849ed34e6b85ed25ba3a", + "r5Sha256": "9b3211580c89951bad60aa4550f76ebf2d2b81cc4523849ed34e6b85ed25ba3a" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_core/smartquotes.mjs", + "r4Sha256": "2d92309d2a0517b7ac74ba6780333996ff3bf0763e28464916f04befdddb4dee", + "r5Sha256": "2d92309d2a0517b7ac74ba6780333996ff3bf0763e28464916f04befdddb4dee" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_core/state_core.mjs", + "r4Sha256": "eb68c945733124231b5dc98d480854393b99fc069fd95703f4c36d310572e4f0", + "r5Sha256": "eb68c945733124231b5dc98d480854393b99fc069fd95703f4c36d310572e4f0" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_core/text_join.mjs", + "r4Sha256": "d61f0f19e2e49b565564a1537c46828c18da453516226d1637816021d4d68fce", + "r5Sha256": "d61f0f19e2e49b565564a1537c46828c18da453516226d1637816021d4d68fce" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_inline/autolink.mjs", + "r4Sha256": "78599ff3df236375e29dc63f04ad93ae1bb4744d7c47021b93104462cbfc61c5", + "r5Sha256": "78599ff3df236375e29dc63f04ad93ae1bb4744d7c47021b93104462cbfc61c5" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_inline/backticks.mjs", + "r4Sha256": "8baed32815f895f72b0a01255c3180ba2e72fcffb51fbea7677ccf128dafbc40", + "r5Sha256": "8baed32815f895f72b0a01255c3180ba2e72fcffb51fbea7677ccf128dafbc40" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_inline/balance_pairs.mjs", + "r4Sha256": "06769d0aa4e5af875e504dea82db9bc726b463911e7b1c17f732098be95ad403", + "r5Sha256": "06769d0aa4e5af875e504dea82db9bc726b463911e7b1c17f732098be95ad403" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_inline/emphasis.mjs", + "r4Sha256": "23e1dbd2fdb408e257f2bbccccae1b1ee8a068db1c43a38b4edd9db76c2f40a1", + "r5Sha256": "23e1dbd2fdb408e257f2bbccccae1b1ee8a068db1c43a38b4edd9db76c2f40a1" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_inline/entity.mjs", + "r4Sha256": "37c2420b56e055ff150c13485a2322914974b0364a8d3823c3ef81318196c101", + "r5Sha256": "37c2420b56e055ff150c13485a2322914974b0364a8d3823c3ef81318196c101" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_inline/escape.mjs", + "r4Sha256": "f498e10cc6318f2a2856e51217e6c0f0a837b18dd920162d2cd6e49789b15adf", + "r5Sha256": "f498e10cc6318f2a2856e51217e6c0f0a837b18dd920162d2cd6e49789b15adf" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_inline/fragments_join.mjs", + "r4Sha256": "143e477737ce7565af95a6c5dbb854667a07d45e7f3e1b849fb68ba39937014c", + "r5Sha256": "143e477737ce7565af95a6c5dbb854667a07d45e7f3e1b849fb68ba39937014c" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_inline/html_inline.mjs", + "r4Sha256": "f7bee2bd14c158e0178ef409ea84a5d330672094265fbd112673d23a75ff1924", + "r5Sha256": "f7bee2bd14c158e0178ef409ea84a5d330672094265fbd112673d23a75ff1924" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_inline/image.mjs", + "r4Sha256": "67e1ad7ba6ce1a2ee0dfaee83653fec3f3e602f8d8841c4b8426c770b03870b4", + "r5Sha256": "67e1ad7ba6ce1a2ee0dfaee83653fec3f3e602f8d8841c4b8426c770b03870b4" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_inline/link.mjs", + "r4Sha256": "a805f4cc75ad14b8b7838d408b703a9e26401badfd00a39a80a21e10a3af5cd0", + "r5Sha256": "a805f4cc75ad14b8b7838d408b703a9e26401badfd00a39a80a21e10a3af5cd0" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_inline/linkify.mjs", + "r4Sha256": "3a55e9a5fa81bd7b924d4f7469452a7fa6ba999f5204ff076a64f5dc8477348e", + "r5Sha256": "3a55e9a5fa81bd7b924d4f7469452a7fa6ba999f5204ff076a64f5dc8477348e" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_inline/newline.mjs", + "r4Sha256": "4c51181f46d59ce1d40dfdec014d1eb69937de850eacfdd4fcb759f9f141e990", + "r5Sha256": "4c51181f46d59ce1d40dfdec014d1eb69937de850eacfdd4fcb759f9f141e990" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_inline/state_inline.mjs", + "r4Sha256": "f4b30bd182fea54a661528d6a031c2cdcb06c688a00fb5598c39cf8ae9554372", + "r5Sha256": "f4b30bd182fea54a661528d6a031c2cdcb06c688a00fb5598c39cf8ae9554372" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_inline/strikethrough.mjs", + "r4Sha256": "cf130f8d2405731b5a2ed687ad7b4571baf9dbc3f98a472629c6553c1c6cb089", + "r5Sha256": "cf130f8d2405731b5a2ed687ad7b4571baf9dbc3f98a472629c6553c1c6cb089" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/rules_inline/text.mjs", + "r4Sha256": "63aca7fc12c4e44bbe8edb6b8cf38c8bf01e3aa1ef5dd0feef82aae930b1d0e8", + "r5Sha256": "63aca7fc12c4e44bbe8edb6b8cf38c8bf01e3aa1ef5dd0feef82aae930b1d0e8" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/lib/token.mjs", + "r4Sha256": "c6ebce7f456a6fef97e3cf2cd411418a80eb15ef469d7a7ea12405191cd5705f", + "r5Sha256": "c6ebce7f456a6fef97e3cf2cd411418a80eb15ef469d7a7ea12405191cd5705f" + }, + { + "path": "packages/webui/third_party/editor/markdown-it/package.json", + "r4Sha256": "4e47c64787bcfe32c7a8bebc922e03cc5d007f389fc0f8c61199ab76bf7287e5", + "r5Sha256": "4e47c64787bcfe32c7a8bebc922e03cc5d007f389fc0f8c61199ab76bf7287e5" + }, + { + "path": "packages/webui/third_party/editor/mdurl/LICENSE", + "r4Sha256": "6b6a356c4337e2446841f30f3cdf7e7023af8c5260b5e347c0f987b9f6aa2644", + "r5Sha256": "6b6a356c4337e2446841f30f3cdf7e7023af8c5260b5e347c0f987b9f6aa2644" + }, + { + "path": "packages/webui/third_party/editor/mdurl/index.mjs", + "r4Sha256": "8ea430f1f8a107f529e2dac519d2f18e71ec9befe6f23f78bf6510cf86d3f9a0", + "r5Sha256": "8ea430f1f8a107f529e2dac519d2f18e71ec9befe6f23f78bf6510cf86d3f9a0" + }, + { + "path": "packages/webui/third_party/editor/mdurl/lib/decode.mjs", + "r4Sha256": "d91544cfb42b9639073f5fa0f576bf72ef6697e848005357c433cad036c2ef20", + "r5Sha256": "d91544cfb42b9639073f5fa0f576bf72ef6697e848005357c433cad036c2ef20" + }, + { + "path": "packages/webui/third_party/editor/mdurl/lib/encode.mjs", + "r4Sha256": "0ae621933b548f880404841b251b0f4fc2c8446ded699e6812def217250ac15d", + "r5Sha256": "0ae621933b548f880404841b251b0f4fc2c8446ded699e6812def217250ac15d" + }, + { + "path": "packages/webui/third_party/editor/mdurl/lib/format.mjs", + "r4Sha256": "2410ec324b913a42c572e01ae49436e5fa4e2e5fbea15c08c92a6dea8bc5887d", + "r5Sha256": "2410ec324b913a42c572e01ae49436e5fa4e2e5fbea15c08c92a6dea8bc5887d" + }, + { + "path": "packages/webui/third_party/editor/mdurl/lib/parse.mjs", + "r4Sha256": "2a417b42e9ea8ee94fc77c596a34eb206d6c69823484e89d80bf1e7583d8f91d", + "r5Sha256": "2a417b42e9ea8ee94fc77c596a34eb206d6c69823484e89d80bf1e7583d8f91d" + }, + { + "path": "packages/webui/third_party/editor/mdurl/package.json", + "r4Sha256": "807e00f99605ba97f4953f8ceb6a65db877d23a9f5496ae367eb953c0e4e627d", + "r5Sha256": "807e00f99605ba97f4953f8ceb6a65db877d23a9f5496ae367eb953c0e4e627d" + }, + { + "path": "packages/webui/third_party/editor/orderedmap/LICENSE", + "r4Sha256": "869c30f368eb08735e779027b9f4bc9fea2f39624351856aebe42741f0bc0884", + "r5Sha256": "869c30f368eb08735e779027b9f4bc9fea2f39624351856aebe42741f0bc0884" + }, + { + "path": "packages/webui/third_party/editor/orderedmap/index.js", + "r4Sha256": "eb0160f63616895337d3b99b8e445d07327ef283f6b525dbcdce7f11efc7a641", + "r5Sha256": "eb0160f63616895337d3b99b8e445d07327ef283f6b525dbcdce7f11efc7a641" + }, + { + "path": "packages/webui/third_party/editor/orderedmap/package.json", + "r4Sha256": "282ea598284094608736ed5a75f4e0b48da53b851b62bba22362feac507d5c6c", + "r5Sha256": "282ea598284094608736ed5a75f4e0b48da53b851b62bba22362feac507d5c6c" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-commands/LICENSE", + "r4Sha256": "ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8", + "r5Sha256": "ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-commands/package.json", + "r4Sha256": "4cef535a05c932ce887caa9fd6a6af08c1b4eb0ec0b30f7f7d81cb7ef3d32e79", + "r5Sha256": "4cef535a05c932ce887caa9fd6a6af08c1b4eb0ec0b30f7f7d81cb7ef3d32e79" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-commands/src/commands.ts", + "r4Sha256": "41ea89670248c1b68a7120c1304d1491b37e7ed7c02ee36002fed08f3a411dfc", + "r5Sha256": "41ea89670248c1b68a7120c1304d1491b37e7ed7c02ee36002fed08f3a411dfc" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-history/LICENSE", + "r4Sha256": "ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8", + "r5Sha256": "ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-history/package.json", + "r4Sha256": "e6119f791faa9f4b162b7fe5fd6a5a5a42ffbd7070a682db922787e4cbd6df22", + "r5Sha256": "e6119f791faa9f4b162b7fe5fd6a5a5a42ffbd7070a682db922787e4cbd6df22" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-history/src/history.ts", + "r4Sha256": "146298d448b0290b6e978ff579a9e159414789d6d37ee9e2bfe7c41e1d45f50c", + "r5Sha256": "146298d448b0290b6e978ff579a9e159414789d6d37ee9e2bfe7c41e1d45f50c" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-inputrules/LICENSE", + "r4Sha256": "ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8", + "r5Sha256": "ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-inputrules/package.json", + "r4Sha256": "d6609dcfd99fe0dbcf0dcb9121693337b2ded4b4d20ee5255b797277ca59f8c9", + "r5Sha256": "d6609dcfd99fe0dbcf0dcb9121693337b2ded4b4d20ee5255b797277ca59f8c9" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-inputrules/src/index.ts", + "r4Sha256": "fcf2d6220de0ad68e71a28591d1aafdb776707a551e0e30de5f1b1a772eabbe9", + "r5Sha256": "fcf2d6220de0ad68e71a28591d1aafdb776707a551e0e30de5f1b1a772eabbe9" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-inputrules/src/inputrules.ts", + "r4Sha256": "3a551544aa4c81843d0120936f1bee96fa553b1d90ed2ac429688024bf1a21d2", + "r5Sha256": "3a551544aa4c81843d0120936f1bee96fa553b1d90ed2ac429688024bf1a21d2" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-inputrules/src/rulebuilders.ts", + "r4Sha256": "17eab940d68292553eda7fb3ec665f2fb5c1e2c18402115e8bc9931aa97b1bed", + "r5Sha256": "17eab940d68292553eda7fb3ec665f2fb5c1e2c18402115e8bc9931aa97b1bed" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-inputrules/src/rules.ts", + "r4Sha256": "444a4f1ea383a140708f2a22730568fed590ae4a749581dc2a20937471bb75dd", + "r5Sha256": "444a4f1ea383a140708f2a22730568fed590ae4a749581dc2a20937471bb75dd" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-keymap/LICENSE", + "r4Sha256": "ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8", + "r5Sha256": "ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-keymap/package.json", + "r4Sha256": "15652f722a20aa5a7db8a8ae5a1326e56435f6651c67cf8a594c2c826eada761", + "r5Sha256": "15652f722a20aa5a7db8a8ae5a1326e56435f6651c67cf8a594c2c826eada761" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-keymap/src/keymap.ts", + "r4Sha256": "9d27d674fd56226ce0deb5ba367873872375296d6088783191c039206ea92b60", + "r5Sha256": "9d27d674fd56226ce0deb5ba367873872375296d6088783191c039206ea92b60" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-markdown/LICENSE", + "r4Sha256": "ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8", + "r5Sha256": "ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-markdown/package.json", + "r4Sha256": "f0cbcc04e45defa3e2533ce02e39f06212814b9c17cdccf4e98fd1142e1be494", + "r5Sha256": "f0cbcc04e45defa3e2533ce02e39f06212814b9c17cdccf4e98fd1142e1be494" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-markdown/src/from_markdown.ts", + "r4Sha256": "8f021766089ae38beb47892a8526eb78453cbfc48ee5537ea15bef230cd8283d", + "r5Sha256": "8f021766089ae38beb47892a8526eb78453cbfc48ee5537ea15bef230cd8283d" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-markdown/src/index.ts", + "r4Sha256": "f0dcc085537da271aa3bc4969576bbd5f03d9982f35807386fdf9b12af7d0aa5", + "r5Sha256": "f0dcc085537da271aa3bc4969576bbd5f03d9982f35807386fdf9b12af7d0aa5" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-markdown/src/schema.ts", + "r4Sha256": "f2559c4d6b14e3a322078f0fdf653f3c8a98ccbd28ec5c9c19eff7be63a6eece", + "r5Sha256": "f2559c4d6b14e3a322078f0fdf653f3c8a98ccbd28ec5c9c19eff7be63a6eece" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-markdown/src/to_markdown.ts", + "r4Sha256": "fa394f5f51ae8834c78cff106faa9892a0f12a2c265a4bde095861f2a7d207eb", + "r5Sha256": "fa394f5f51ae8834c78cff106faa9892a0f12a2c265a4bde095861f2a7d207eb" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-model/LICENSE", + "r4Sha256": "ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8", + "r5Sha256": "ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-model/package.json", + "r4Sha256": "b9357f3e9f19800fa43e91e70cf62e63e7f181c1acd607c7cf2aac8de212877e", + "r5Sha256": "b9357f3e9f19800fa43e91e70cf62e63e7f181c1acd607c7cf2aac8de212877e" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-model/src/comparedeep.ts", + "r4Sha256": "2ea58a7903bd66ce21a7d313f1af3f0674f240e7a207622d6fc1d64b16a7e174", + "r5Sha256": "2ea58a7903bd66ce21a7d313f1af3f0674f240e7a207622d6fc1d64b16a7e174" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-model/src/content.ts", + "r4Sha256": "a07fd75d13dd2765526589fd31fdd0307037e6e27dfece91301ca371d3b5fe0c", + "r5Sha256": "a07fd75d13dd2765526589fd31fdd0307037e6e27dfece91301ca371d3b5fe0c" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-model/src/diff.ts", + "r4Sha256": "d1f2c1bc168e0fb891a519ab0daa7e136bd43b7f8a25d50d1cdbed45fe3d6cd5", + "r5Sha256": "d1f2c1bc168e0fb891a519ab0daa7e136bd43b7f8a25d50d1cdbed45fe3d6cd5" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-model/src/fragment.ts", + "r4Sha256": "bb9d6b507b084093de4efbe3066dd47b14afe32a41e4390af4aacbe8d98058af", + "r5Sha256": "bb9d6b507b084093de4efbe3066dd47b14afe32a41e4390af4aacbe8d98058af" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-model/src/from_dom.ts", + "r4Sha256": "b4f5e77c9dd4f430002b83fae8e1d114d9653e16ef4b28fba5ea01eb52980abb", + "r5Sha256": "b4f5e77c9dd4f430002b83fae8e1d114d9653e16ef4b28fba5ea01eb52980abb" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-model/src/index.ts", + "r4Sha256": "d6bd6dfd331f27a8b7ca6554ed4833c4983a6cb1cd6332d1c576c0529df386ea", + "r5Sha256": "d6bd6dfd331f27a8b7ca6554ed4833c4983a6cb1cd6332d1c576c0529df386ea" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-model/src/mark.ts", + "r4Sha256": "7ba7a7ba2f1861ae15cd894afa80e5211b59e2117bf4568af0b5cc9cd8e18057", + "r5Sha256": "7ba7a7ba2f1861ae15cd894afa80e5211b59e2117bf4568af0b5cc9cd8e18057" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-model/src/node.ts", + "r4Sha256": "39defcbeff65f8de187e61d956a1b5b1080962eda32bb875ac1d1e025c31f0d2", + "r5Sha256": "39defcbeff65f8de187e61d956a1b5b1080962eda32bb875ac1d1e025c31f0d2" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-model/src/replace.ts", + "r4Sha256": "4f2fbf315fba1e70b7802f7c7f5e3478848c5f57f025c2b2169b680153f18b2c", + "r5Sha256": "4f2fbf315fba1e70b7802f7c7f5e3478848c5f57f025c2b2169b680153f18b2c" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-model/src/resolvedpos.ts", + "r4Sha256": "dcef2f457569f8c9daf9c33012470a3446d7b42b1c7aecc9b79d025679fcf596", + "r5Sha256": "dcef2f457569f8c9daf9c33012470a3446d7b42b1c7aecc9b79d025679fcf596" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-model/src/schema.ts", + "r4Sha256": "ca0b19ac52487b2d8e75a3ee8321e02ecc5b24397218ca9606bd7b6648c22f7a", + "r5Sha256": "ca0b19ac52487b2d8e75a3ee8321e02ecc5b24397218ca9606bd7b6648c22f7a" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-model/src/to_dom.ts", + "r4Sha256": "b7b3ee52fd9218c3fcaf45a873aa769a3ec28e539715ec1162a545fbd4c8981f", + "r5Sha256": "b7b3ee52fd9218c3fcaf45a873aa769a3ec28e539715ec1162a545fbd4c8981f" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-schema-list/LICENSE", + "r4Sha256": "ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8", + "r5Sha256": "ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-schema-list/package.json", + "r4Sha256": "98d90d8f6748a87c4948f518b14a453f00e9f4e1dd507744786a3e0614953964", + "r5Sha256": "98d90d8f6748a87c4948f518b14a453f00e9f4e1dd507744786a3e0614953964" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-schema-list/src/schema-list.ts", + "r4Sha256": "fc816321f12d8b9ebbaecfaacd9c48807e3ef0af4f95cc536e30b8cd5df44d54", + "r5Sha256": "fc816321f12d8b9ebbaecfaacd9c48807e3ef0af4f95cc536e30b8cd5df44d54" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-state/LICENSE", + "r4Sha256": "ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8", + "r5Sha256": "ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-state/package.json", + "r4Sha256": "b40080e3d2ebfaab5a6ee44b3b2cb20761d79cbe514411df8641a8434d2b65ef", + "r5Sha256": "b40080e3d2ebfaab5a6ee44b3b2cb20761d79cbe514411df8641a8434d2b65ef" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-state/src/index.ts", + "r4Sha256": "eb9e85c66caac02f0140ca3686efd10cd117d64eda4d9054bc8c3e4622055d6a", + "r5Sha256": "eb9e85c66caac02f0140ca3686efd10cd117d64eda4d9054bc8c3e4622055d6a" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-state/src/plugin.ts", + "r4Sha256": "a0bac3d5db226ed673774b0b6b58d43e36d13f34b9ecee874d081dc3145e2202", + "r5Sha256": "a0bac3d5db226ed673774b0b6b58d43e36d13f34b9ecee874d081dc3145e2202" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-state/src/selection.ts", + "r4Sha256": "cea98fb72c5ced3604556909df9acddf924b3e62f80cab4bdbe430a78afc529a", + "r5Sha256": "cea98fb72c5ced3604556909df9acddf924b3e62f80cab4bdbe430a78afc529a" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-state/src/state.ts", + "r4Sha256": "081d675bbeaa6598c17f45be84a84011c5e083b66f9c6282be0304a5f38f7f44", + "r5Sha256": "081d675bbeaa6598c17f45be84a84011c5e083b66f9c6282be0304a5f38f7f44" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-state/src/transaction.ts", + "r4Sha256": "fbab5b3d17fc510152167b387e15dcf360c086ed78dcb2751cecae7938d01a83", + "r5Sha256": "fbab5b3d17fc510152167b387e15dcf360c086ed78dcb2751cecae7938d01a83" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-transform/LICENSE", + "r4Sha256": "ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8", + "r5Sha256": "ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-transform/package.json", + "r4Sha256": "2e7118bcda51981c6a6703a6acb43d50aad87cb43fee2a35a9b0f0538ed50bcb", + "r5Sha256": "2e7118bcda51981c6a6703a6acb43d50aad87cb43fee2a35a9b0f0538ed50bcb" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-transform/src/attr_step.ts", + "r4Sha256": "02a7084a3a5cf784504f3e954c248e655ffa16c41bbbb40f35c1139333833f6d", + "r5Sha256": "02a7084a3a5cf784504f3e954c248e655ffa16c41bbbb40f35c1139333833f6d" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-transform/src/index.ts", + "r4Sha256": "340e51489f5ea1e160dc80c9fe0bad0933d276abf33964a05060005c1f314bed", + "r5Sha256": "340e51489f5ea1e160dc80c9fe0bad0933d276abf33964a05060005c1f314bed" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-transform/src/map.ts", + "r4Sha256": "ddb1fc54b8e49581b6f1f71b84689ccad8b2cb10c44ecc9c01d9b32045624e78", + "r5Sha256": "ddb1fc54b8e49581b6f1f71b84689ccad8b2cb10c44ecc9c01d9b32045624e78" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-transform/src/mark.ts", + "r4Sha256": "f16e4d61bbd8ea94646c16b7b3a781f73a29308a32ac4d9cacc7974c2db5a0cb", + "r5Sha256": "f16e4d61bbd8ea94646c16b7b3a781f73a29308a32ac4d9cacc7974c2db5a0cb" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-transform/src/mark_step.ts", + "r4Sha256": "0beed9199e494bd664e685e05f18a94fd7299f72181702fd9aa5804a6a371ee4", + "r5Sha256": "0beed9199e494bd664e685e05f18a94fd7299f72181702fd9aa5804a6a371ee4" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-transform/src/replace.ts", + "r4Sha256": "07110ea74d962e5be381628bacb5e340124c77004d08c343a1c500ba1436bfe1", + "r5Sha256": "07110ea74d962e5be381628bacb5e340124c77004d08c343a1c500ba1436bfe1" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-transform/src/replace_step.ts", + "r4Sha256": "478a68a658aa697ad75be626eaf99616d09e082ed04fb6fb3dd3cb0e76dc28a9", + "r5Sha256": "478a68a658aa697ad75be626eaf99616d09e082ed04fb6fb3dd3cb0e76dc28a9" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-transform/src/step.ts", + "r4Sha256": "1080eb080282f47c9ac6edf91b1ea788069a2644da4d7257b139ca610ab9e1ac", + "r5Sha256": "1080eb080282f47c9ac6edf91b1ea788069a2644da4d7257b139ca610ab9e1ac" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-transform/src/structure.ts", + "r4Sha256": "0fbbe54771f17d3c309b19846d3bf4ce160642eb7ec43c8bc6edef55a87beae3", + "r5Sha256": "0fbbe54771f17d3c309b19846d3bf4ce160642eb7ec43c8bc6edef55a87beae3" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-transform/src/transform.ts", + "r4Sha256": "ce12d2c55f42342f077a1b08a5ccca1c2847433bacdf2548e00c7e53704342f3", + "r5Sha256": "ce12d2c55f42342f077a1b08a5ccca1c2847433bacdf2548e00c7e53704342f3" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-view/LICENSE", + "r4Sha256": "ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8", + "r5Sha256": "ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-view/package.json", + "r4Sha256": "79841007db65e2d7abf34585ae8accff299081c2f2731b81c138afef050dd29a", + "r5Sha256": "79841007db65e2d7abf34585ae8accff299081c2f2731b81c138afef050dd29a" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-view/src/browser.ts", + "r4Sha256": "753c05e4ed16081e169e57fee6febaddafb7de6edd568fb93b2690c3fd63b3af", + "r5Sha256": "753c05e4ed16081e169e57fee6febaddafb7de6edd568fb93b2690c3fd63b3af" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-view/src/capturekeys.ts", + "r4Sha256": "e08d4a3bb328babc0681a3c20bd151b1fb2225d6201949ef4605b933ffe04705", + "r5Sha256": "e08d4a3bb328babc0681a3c20bd151b1fb2225d6201949ef4605b933ffe04705" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-view/src/clipboard.ts", + "r4Sha256": "4401b14080289627189743717edfb4131b42087c4d705faab90e0c7bee7b82d9", + "r5Sha256": "4401b14080289627189743717edfb4131b42087c4d705faab90e0c7bee7b82d9" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-view/src/decoration.ts", + "r4Sha256": "a18ba09db59bd096ffe84b73554542f93f3c4aa5b92322de38a7ed78da493e3a", + "r5Sha256": "a18ba09db59bd096ffe84b73554542f93f3c4aa5b92322de38a7ed78da493e3a" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-view/src/dom.ts", + "r4Sha256": "045cb9f2ee04030a9488b1c8de850a1dbb35e28050a73b92842f3503d37ec6af", + "r5Sha256": "045cb9f2ee04030a9488b1c8de850a1dbb35e28050a73b92842f3503d37ec6af" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-view/src/domchange.ts", + "r4Sha256": "6ff0d1123fce86c9d8ebf1370dc3c6ce143bce30427680556b1b07df76c2a08a", + "r5Sha256": "6ff0d1123fce86c9d8ebf1370dc3c6ce143bce30427680556b1b07df76c2a08a" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-view/src/domcoords.ts", + "r4Sha256": "d7848f023b7b301267fbc2f73fce36f89ae3a6704f5ca428675ad36f56edb418", + "r5Sha256": "d7848f023b7b301267fbc2f73fce36f89ae3a6704f5ca428675ad36f56edb418" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-view/src/domobserver.ts", + "r4Sha256": "ce088c9e363f5f1834a7ed9d32e0b19721651ff04398bafc5db6fd86a7ad60cb", + "r5Sha256": "ce088c9e363f5f1834a7ed9d32e0b19721651ff04398bafc5db6fd86a7ad60cb" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-view/src/index.ts", + "r4Sha256": "14a8ed0e44a7fc73a6886e1dc6ab7c70311f4590b9501578a2fac4e7e37e8200", + "r5Sha256": "14a8ed0e44a7fc73a6886e1dc6ab7c70311f4590b9501578a2fac4e7e37e8200" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-view/src/input.ts", + "r4Sha256": "58b78c5da37cb9cc255e494c72566c1013eae4972a4b093cca866a6b7de255e4", + "r5Sha256": "58b78c5da37cb9cc255e494c72566c1013eae4972a4b093cca866a6b7de255e4" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-view/src/selection.ts", + "r4Sha256": "6a305d8080a038b0fdb0d7e02b54f802179a9dac47ab3c5386077b5f09d78437", + "r5Sha256": "6a305d8080a038b0fdb0d7e02b54f802179a9dac47ab3c5386077b5f09d78437" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-view/src/viewdesc.ts", + "r4Sha256": "3291f9a85c2cd8efcb1f031eed62cfa5a103d760b3a924bcf8d2ee148b8a121f", + "r5Sha256": "3291f9a85c2cd8efcb1f031eed62cfa5a103d760b3a924bcf8d2ee148b8a121f" + }, + { + "path": "packages/webui/third_party/editor/prosemirror-view/style/prosemirror.css", + "r4Sha256": "1234171efd99cd16d1a6754c0f6586d0d8b69573432aff2e671cb6a26c9eaa57", + "r5Sha256": "1234171efd99cd16d1a6754c0f6586d0d8b69573432aff2e671cb6a26c9eaa57" + }, + { + "path": "packages/webui/third_party/editor/punycode.js/LICENSE-MIT.txt", + "r4Sha256": "483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a", + "r5Sha256": "483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a" + }, + { + "path": "packages/webui/third_party/editor/punycode.js/package.json", + "r4Sha256": "e025033bd11110af671fb8eb62f0db8895073ccdca70b596aa94a27eb5bf9acb", + "r5Sha256": "e025033bd11110af671fb8eb62f0db8895073ccdca70b596aa94a27eb5bf9acb" + }, + { + "path": "packages/webui/third_party/editor/punycode.js/punycode.js", + "r4Sha256": "6052a80eac47e46bd4de17ae0095e0192c336d3d7c387d292ad2176ebfc53d04", + "r5Sha256": "6052a80eac47e46bd4de17ae0095e0192c336d3d7c387d292ad2176ebfc53d04" + }, + { + "path": "packages/webui/third_party/editor/rope-sequence/LICENSE", + "r4Sha256": "530424aebdd0e73f53238d1f89df250057bc8d8ce090cf5954197fadce5bf226", + "r5Sha256": "530424aebdd0e73f53238d1f89df250057bc8d8ce090cf5954197fadce5bf226" + }, + { + "path": "packages/webui/third_party/editor/rope-sequence/index.js", + "r4Sha256": "efb85fca2ecef4b1dfd63103cfb8c755ff209ffe6e72ae0928e833c3ac666624", + "r5Sha256": "efb85fca2ecef4b1dfd63103cfb8c755ff209ffe6e72ae0928e833c3ac666624" + }, + { + "path": "packages/webui/third_party/editor/rope-sequence/package.json", + "r4Sha256": "0e378a9dcc447c04e712238d60a1f2ffb878bfc161cbb95ef0a3c34d2a541548", + "r5Sha256": "0e378a9dcc447c04e712238d60a1f2ffb878bfc161cbb95ef0a3c34d2a541548" + }, + { + "path": "packages/webui/third_party/editor/uc.micro/LICENSE.txt", + "r4Sha256": "483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a", + "r5Sha256": "483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a" + }, + { + "path": "packages/webui/third_party/editor/uc.micro/categories/Cc/regex.mjs", + "r4Sha256": "d73b91600fd887bccf8f3a7ccb8a98d497222b2923064ca135cd3d86eecba9b8", + "r5Sha256": "d73b91600fd887bccf8f3a7ccb8a98d497222b2923064ca135cd3d86eecba9b8" + }, + { + "path": "packages/webui/third_party/editor/uc.micro/categories/Cf/regex.mjs", + "r4Sha256": "0ba760155f77b39359cf0ab088589444a68987facd696ae8fe7fc8b7ced5c5c5", + "r5Sha256": "0ba760155f77b39359cf0ab088589444a68987facd696ae8fe7fc8b7ced5c5c5" + }, + { + "path": "packages/webui/third_party/editor/uc.micro/categories/P/regex.mjs", + "r4Sha256": "378c0a61fee0d8c911d0c6bff819a601571a95ac4296ac5068c56ea76291697f", + "r5Sha256": "378c0a61fee0d8c911d0c6bff819a601571a95ac4296ac5068c56ea76291697f" + }, + { + "path": "packages/webui/third_party/editor/uc.micro/categories/S/regex.mjs", + "r4Sha256": "53579876c2563673dbd3f14ad7ccbb0e232aa25f9398679f5d792b75fcbfa40e", + "r5Sha256": "53579876c2563673dbd3f14ad7ccbb0e232aa25f9398679f5d792b75fcbfa40e" + }, + { + "path": "packages/webui/third_party/editor/uc.micro/categories/Z/regex.mjs", + "r4Sha256": "32c50e92e9f4bab827145c99299616178f65192aedda27d0b9bf938a34c48325", + "r5Sha256": "32c50e92e9f4bab827145c99299616178f65192aedda27d0b9bf938a34c48325" + }, + { + "path": "packages/webui/third_party/editor/uc.micro/index.mjs", + "r4Sha256": "4c6142bf1f94e06fc9942639b651b22e7982a8ccc1427f694ffc6fdf49ef5087", + "r5Sha256": "4c6142bf1f94e06fc9942639b651b22e7982a8ccc1427f694ffc6fdf49ef5087" + }, + { + "path": "packages/webui/third_party/editor/uc.micro/package.json", + "r4Sha256": "8b60af5ea73b0bac4d26111a3f5b00844657b998f9a3fd473710d9e33d274250", + "r5Sha256": "8b60af5ea73b0bac4d26111a3f5b00844657b998f9a3fd473710d9e33d274250" + }, + { + "path": "packages/webui/third_party/editor/uc.micro/properties/Any/regex.mjs", + "r4Sha256": "41d50d9f5babe77f07305aec91f0e4bf29fd95980feb2a6592a3bbd077b313bc", + "r5Sha256": "41d50d9f5babe77f07305aec91f0e4bf29fd95980feb2a6592a3bbd077b313bc" + }, + { + "path": "packages/webui/third_party/editor/w3c-keyname/LICENSE", + "r4Sha256": "869c30f368eb08735e779027b9f4bc9fea2f39624351856aebe42741f0bc0884", + "r5Sha256": "869c30f368eb08735e779027b9f4bc9fea2f39624351856aebe42741f0bc0884" + }, + { + "path": "packages/webui/third_party/editor/w3c-keyname/index.js", + "r4Sha256": "b649dec4f01c7c5eb05be4641b5b698c6938231ee50b38e17a2f0f822ca3df2e", + "r5Sha256": "b649dec4f01c7c5eb05be4641b5b698c6938231ee50b38e17a2f0f822ca3df2e" + }, + { + "path": "packages/webui/third_party/editor/w3c-keyname/package.json", + "r4Sha256": "0396c646f74d52c1b0851074ecdb5cabf540af595ceb5e5a5136df2bf3c2f83b", + "r5Sha256": "0396c646f74d52c1b0851074ecdb5cabf540af595ceb5e5a5136df2bf3c2f83b" + }, + { + "path": "roles/assistant.json", + "r4Sha256": "5f63ff52aaccf06a0f2415ffdd9d1903c202679cf953bef5266a6841b5e39ab7", + "r5Sha256": "5f63ff52aaccf06a0f2415ffdd9d1903c202679cf953bef5266a6841b5e39ab7" + }, + { + "path": "roles/assistant.md", + "r4Sha256": "7d2d50a1278c62daa4f6c4a5ac7809817409f2f1d0d75787802300739d3fba15", + "r5Sha256": "7d2d50a1278c62daa4f6c4a5ac7809817409f2f1d0d75787802300739d3fba15" + }, + { + "path": "roles/chief-executive-officer.json", + "r4Sha256": "314074c8081953923f962f2df045d4c14629010ea99d1f23449ed45294b46bcc", + "r5Sha256": "314074c8081953923f962f2df045d4c14629010ea99d1f23449ed45294b46bcc" + }, + { + "path": "roles/chief-executive-officer.md", + "r4Sha256": "a6bc3aad543cfb3a03f93efda60859221c56f78d0f1094da33afd458399b4ffa", + "r5Sha256": "a6bc3aad543cfb3a03f93efda60859221c56f78d0f1094da33afd458399b4ffa" + }, + { + "path": "roles/chief-financial-officer.json", + "r4Sha256": "539d531a0f5744aebb933ca685b52022554e3e93ae54cc8b67e4de0eb27d3460", + "r5Sha256": "539d531a0f5744aebb933ca685b52022554e3e93ae54cc8b67e4de0eb27d3460" + }, + { + "path": "roles/chief-financial-officer.md", + "r4Sha256": "09347759baf8fdbf0a8105106e8d27b500f3d0b76dcaa91dc2cdc20b3b000b00", + "r5Sha256": "09347759baf8fdbf0a8105106e8d27b500f3d0b76dcaa91dc2cdc20b3b000b00" + }, + { + "path": "roles/chief-information-officer.json", + "r4Sha256": "8ee8e7213d4c073e2d9ba7732fd84b3b3130d9bbb930d07595b7f692bb9fc5dc", + "r5Sha256": "8ee8e7213d4c073e2d9ba7732fd84b3b3130d9bbb930d07595b7f692bb9fc5dc" + }, + { + "path": "roles/chief-information-officer.md", + "r4Sha256": "0a7041dd3ae5f05ba6f37baa2aeeca35a430ed3e387a3e2407daae2c431efda2", + "r5Sha256": "0a7041dd3ae5f05ba6f37baa2aeeca35a430ed3e387a3e2407daae2c431efda2" + }, + { + "path": "roles/chief-information-security-officer.json", + "r4Sha256": "a550428603979f4342e57ad9ccddd4d2e44a5203a64f19027ce09a24f1dbfc0e", + "r5Sha256": "a550428603979f4342e57ad9ccddd4d2e44a5203a64f19027ce09a24f1dbfc0e" + }, + { + "path": "roles/chief-information-security-officer.md", + "r4Sha256": "1da83baca46abb75c6b2e74df7a3fb9424e1556ce37ff5f8c7802e85100d6b16", + "r5Sha256": "1da83baca46abb75c6b2e74df7a3fb9424e1556ce37ff5f8c7802e85100d6b16" + }, + { + "path": "roles/chief-marketing-officer.json", + "r4Sha256": "3cdd799159d3e676529efee01f467a4ed7d67920253cddba2e098566368a1e36", + "r5Sha256": "3cdd799159d3e676529efee01f467a4ed7d67920253cddba2e098566368a1e36" + }, + { + "path": "roles/chief-marketing-officer.md", + "r4Sha256": "4d414c02485b6a83f9d8fc2498a53d275019fd45e9ad948fdf61777a3a983bfa", + "r5Sha256": "4d414c02485b6a83f9d8fc2498a53d275019fd45e9ad948fdf61777a3a983bfa" + }, + { + "path": "roles/chief-of-staff.json", + "r4Sha256": "d227fb5f0a2d241a0091b57f6f396379d7be5a8329e89532e654c90a8f3acd53", + "r5Sha256": "d227fb5f0a2d241a0091b57f6f396379d7be5a8329e89532e654c90a8f3acd53" + }, + { + "path": "roles/chief-of-staff.md", + "r4Sha256": "e222a5fc3c117f62dbc854ef7397f7b5589e6f5d52e45398db0deeb43c53a9d5", + "r5Sha256": "e222a5fc3c117f62dbc854ef7397f7b5589e6f5d52e45398db0deeb43c53a9d5" + }, + { + "path": "roles/coder.json", + "r4Sha256": "13713c4e64ade3b1b1eedabed75f5f76fe65e73f6df336b771d1e34881d111f3", + "r5Sha256": "13713c4e64ade3b1b1eedabed75f5f76fe65e73f6df336b771d1e34881d111f3" + }, + { + "path": "roles/coder.md", + "r4Sha256": "d29d469aaae2a97705dd0d5b057b6eef20c5f22d37791aaee9d886c8bb46700f", + "r5Sha256": "d29d469aaae2a97705dd0d5b057b6eef20c5f22d37791aaee9d886c8bb46700f" + }, + { + "path": "roles/companion.json", + "r4Sha256": "9425a319ec8966712fc38027bc62f7fbf52a216e30b9520cbd877386990c92d6", + "r5Sha256": "9425a319ec8966712fc38027bc62f7fbf52a216e30b9520cbd877386990c92d6" + }, + { + "path": "roles/companion.md", + "r4Sha256": "2533b3ec4dfa78cd81b254c167865b984a6edf6b00454911363012ab5ac1e4c1", + "r5Sha256": "2533b3ec4dfa78cd81b254c167865b984a6edf6b00454911363012ab5ac1e4c1" + }, + { + "path": "roles/conductor-policy.json", + "r4Sha256": "42e751413a649e03c5e1eb87acdf59e0a0fcd54f519bca297463f88ee07e3043", + "r5Sha256": "42e751413a649e03c5e1eb87acdf59e0a0fcd54f519bca297463f88ee07e3043" + }, + { + "path": "roles/continuity.json", + "r4Sha256": "cb2512590330efe4514c88eb31d09e3e3b159943803e462a224b77010c249de7", + "r5Sha256": "cb2512590330efe4514c88eb31d09e3e3b159943803e462a224b77010c249de7" + }, + { + "path": "roles/continuity.md", + "r4Sha256": "193c82fa803a85ee4c4b2f946ce2d69e94a192c00c5093d4db91cc274a5d11ed", + "r5Sha256": "193c82fa803a85ee4c4b2f946ce2d69e94a192c00c5093d4db91cc274a5d11ed" + }, + { + "path": "roles/cto.json", + "r4Sha256": "60b6482a29a578234b4e5bf0d4c9a123bd3a65a65dc6e488f474546cf4456bb2", + "r5Sha256": "60b6482a29a578234b4e5bf0d4c9a123bd3a65a65dc6e488f474546cf4456bb2" + }, + { + "path": "roles/cto.md", + "r4Sha256": "b5603cbdfc1a79d4b986c97aa2a94e2c57164f9abfd5117b348086025dd50993", + "r5Sha256": "b5603cbdfc1a79d4b986c97aa2a94e2c57164f9abfd5117b348086025dd50993" + }, + { + "path": "roles/fact-checker.json", + "r4Sha256": "7a59218d903b26174c51f0118a347b0b14e187e2d0c229ca43c98dad357f3435", + "r5Sha256": "7a59218d903b26174c51f0118a347b0b14e187e2d0c229ca43c98dad357f3435" + }, + { + "path": "roles/fact-checker.md", + "r4Sha256": "8895fbe1d7961bbb98b272cd888250d6ef44f74986948032719b44dc3dc56579", + "r5Sha256": "8895fbe1d7961bbb98b272cd888250d6ef44f74986948032719b44dc3dc56579" + }, + { + "path": "roles/ideas.json", + "r4Sha256": "3a932eefe3af967d046d5e241d59f5b2700bd5ad4ef236d6a937011500200b5f", + "r5Sha256": "3a932eefe3af967d046d5e241d59f5b2700bd5ad4ef236d6a937011500200b5f" + }, + { + "path": "roles/ideas.md", + "r4Sha256": "8ce05e198cefb29f2aea53a25a2cd6599782b34c7a0815a2b6d26272c0fdae50", + "r5Sha256": "8ce05e198cefb29f2aea53a25a2cd6599782b34c7a0815a2b6d26272c0fdae50" + }, + { + "path": "roles/merge-gate.json", + "r4Sha256": "14dbbbaa98670ebab8612555e3f813793ff12caf6a3aaef3883c2007ebc9bfe8", + "r5Sha256": "14dbbbaa98670ebab8612555e3f813793ff12caf6a3aaef3883c2007ebc9bfe8" + }, + { + "path": "roles/merge-gate.md", + "r4Sha256": "b8bbccbf7e10e090f3514664384cba44c86fbb514c79d182d31a209045fdcc1d", + "r5Sha256": "b8bbccbf7e10e090f3514664384cba44c86fbb514c79d182d31a209045fdcc1d" + }, + { + "path": "roles/pm.json", + "r4Sha256": "1af1cb70512163eb5c39ae942496a4cc309b0b1d47b9cb48253ac788862f0e9f", + "r5Sha256": "1af1cb70512163eb5c39ae942496a4cc309b0b1d47b9cb48253ac788862f0e9f" + }, + { + "path": "roles/pm.md", + "r4Sha256": "d1016f8c34ee04601ab751c7514a20dfbeec0359d46dba8f94c44538dcc16133", + "r5Sha256": "d1016f8c34ee04601ab751c7514a20dfbeec0359d46dba8f94c44538dcc16133" + }, + { + "path": "roles/proofreader.json", + "r4Sha256": "cb117d44e48f288048a4e697ee237b445b8fcea21bb95f9723e91b17ab542a3f", + "r5Sha256": "cb117d44e48f288048a4e697ee237b445b8fcea21bb95f9723e91b17ab542a3f" + }, + { + "path": "roles/proofreader.md", + "r4Sha256": "a2214ab481ef27d24c20da9e5e7bbc86c6ea769cacc8a163330813e75a20ec15", + "r5Sha256": "a2214ab481ef27d24c20da9e5e7bbc86c6ea769cacc8a163330813e75a20ec15" + }, + { + "path": "roles/research.json", + "r4Sha256": "95f5fc2bd2a0593177c21ca1898317c671ad04334e5c561c29917fe2ceae2c51", + "r5Sha256": "95f5fc2bd2a0593177c21ca1898317c671ad04334e5c561c29917fe2ceae2c51" + }, + { + "path": "roles/research.md", + "r4Sha256": "7a602b0efe44669028e52fc6aca83f00bd3dd32a105d0729538f2ed357f6ecd3", + "r5Sha256": "7a602b0efe44669028e52fc6aca83f00bd3dd32a105d0729538f2ed357f6ecd3" + }, + { + "path": "roles/researcher.json", + "r4Sha256": "3b5f0c39b72eb1ef1d546899ea5b02da6ce0c22a5d30d67058530b1bdc67964f", + "r5Sha256": "3b5f0c39b72eb1ef1d546899ea5b02da6ce0c22a5d30d67058530b1bdc67964f" + }, + { + "path": "roles/reviewer.json", + "r4Sha256": "4d2b2ab1208aced3a82d7de1ace879574fae2930ac1bc684f76e1d16e58cec8f", + "r5Sha256": "4d2b2ab1208aced3a82d7de1ace879574fae2930ac1bc684f76e1d16e58cec8f" + }, + { + "path": "roles/reviewer.md", + "r4Sha256": "f7418c27a5b84f258041b87e87ccf9f441fcb9c638a322e50aafcfdb0ce7f364", + "r5Sha256": "f7418c27a5b84f258041b87e87ccf9f441fcb9c638a322e50aafcfdb0ce7f364" + }, + { + "path": "roles/security-reviewer.json", + "r4Sha256": "d84bd99dda657fc44b6272cc35a89c490315117c7102d8936042ac1cf58978cb", + "r5Sha256": "d84bd99dda657fc44b6272cc35a89c490315117c7102d8936042ac1cf58978cb" + }, + { + "path": "roles/security-reviewer.md", + "r4Sha256": "eb5ad42d4fcd98a2c89afb8b2286edc5eb666f993e21fbbda838e5c472f34dd8", + "r5Sha256": "eb5ad42d4fcd98a2c89afb8b2286edc5eb666f993e21fbbda838e5c472f34dd8" + }, + { + "path": "scripts/agent-host-dev.sh", + "r4Sha256": "482ad6167fc96bf86928e0b467b3e173b174508fd913e297a8164d73f334d031", + "r5Sha256": "482ad6167fc96bf86928e0b467b3e173b174508fd913e297a8164d73f334d031" + }, + { + "path": "scripts/agent.sh", + "r4Sha256": "ddfb43d2599a722452376eee52cbc66da250722f0de55be1570eb55c4d920145", + "r5Sha256": "ddfb43d2599a722452376eee52cbc66da250722f0de55be1570eb55c4d920145" + }, + { + "path": "scripts/auth.sh", + "r4Sha256": "fe5d3e89272d3b04db687eabed30a95dde480a2f7bc784cd27e43fa9321f15a6", + "r5Sha256": "fe5d3e89272d3b04db687eabed30a95dde480a2f7bc784cd27e43fa9321f15a6" + }, + { + "path": "scripts/bootstrap.sh", + "r4Sha256": "2c02aa2eade4dd507603036014e0fa9b64c16c0cdbebdf012041f76d3685aa69", + "r5Sha256": "2c02aa2eade4dd507603036014e0fa9b64c16c0cdbebdf012041f76d3685aa69" + }, + { + "path": "scripts/build.sh", + "r4Sha256": "9390869c629a0f631608dbd089512b789c29e855ab0d2d46b7cecfafae7a21d4", + "r5Sha256": "9390869c629a0f631608dbd089512b789c29e855ab0d2d46b7cecfafae7a21d4" + }, + { + "path": "scripts/bus-service.sh", + "r4Sha256": "181611d6c0cc167f4514ca6218360fe97651f793442f38ee88d24902cf352313", + "r5Sha256": "181611d6c0cc167f4514ca6218360fe97651f793442f38ee88d24902cf352313" + }, + { + "path": "scripts/case1-accept.sh", + "r4Sha256": "875bb5b77d7726f0e0318224d61b3416ab7a180712f46da168a059e1a28789b2", + "r5Sha256": "875bb5b77d7726f0e0318224d61b3416ab7a180712f46da168a059e1a28789b2" + }, + { + "path": "scripts/case1-hostcheck.sh", + "r4Sha256": "af6ccd134dc92320238a48022ea2160026a89a4325002ce861a6cac80388494a", + "r5Sha256": "af6ccd134dc92320238a48022ea2160026a89a4325002ce861a6cac80388494a" + }, + { + "path": "scripts/case1-pins.sh", + "r4Sha256": "21c35a4a1ecd325d8102e8c0cefb7a5bc87ebf7056167bb3cdc125897f71c23f", + "r5Sha256": "21c35a4a1ecd325d8102e8c0cefb7a5bc87ebf7056167bb3cdc125897f71c23f" + }, + { + "path": "scripts/case2-persona-import.mjs", + "r4Sha256": "7031d2c0dc9bd22bc748b364a35b461fc01cb98b795032a2e0ec436f3188d4e4", + "r5Sha256": "7031d2c0dc9bd22bc748b364a35b461fc01cb98b795032a2e0ec436f3188d4e4" + }, + { + "path": "scripts/case2-precheck.sh", + "r4Sha256": "83e3dc96a34763be7f4681e4ad71e12f4bb91a3ddfd84e644a9da9ea2b1d0f31", + "r5Sha256": "83e3dc96a34763be7f4681e4ad71e12f4bb91a3ddfd84e644a9da9ea2b1d0f31" + }, + { + "path": "scripts/case2-unit.sh", + "r4Sha256": "c56fe5493482f288901ae6bbb37bc04521dea34d62aea24d0306288b74982dd5", + "r5Sha256": "c56fe5493482f288901ae6bbb37bc04521dea34d62aea24d0306288b74982dd5" + }, + { + "path": "scripts/common.sh", + "r4Sha256": "40213f2c3329ad6985d9915c507f96bada97db720454d603505dc57f2b9d4136", + "r5Sha256": "40213f2c3329ad6985d9915c507f96bada97db720454d603505dc57f2b9d4136" + }, + { + "path": "scripts/conductor-apply.sh", + "r4Sha256": "7f5d41c96b4607703dd0dcae9591e165cde2e2208ce544ad787df367ccd28a12", + "r5Sha256": "7f5d41c96b4607703dd0dcae9591e165cde2e2208ce544ad787df367ccd28a12" + }, + { + "path": "scripts/discord-service.sh", + "r4Sha256": "237fc2f95066e8d14e91fed311309d06fd2e551b480bafa162d200d53a9b814f", + "r5Sha256": "237fc2f95066e8d14e91fed311309d06fd2e551b480bafa162d200d53a9b814f" + }, + { + "path": "scripts/discord.sh", + "r4Sha256": "f6281ddc5e1bfd495bb353a72a6718efeb02750ae153949c0296ff6709501092", + "r5Sha256": "f6281ddc5e1bfd495bb353a72a6718efeb02750ae153949c0296ff6709501092" + }, + { + "path": "scripts/foundation-inspect.mjs", + "r4Sha256": "dad369490ca8396d3b4a7bd4a1b7fa87b677a2b8cf991bf61672d446e5aa3c93", + "r5Sha256": "dad369490ca8396d3b4a7bd4a1b7fa87b677a2b8cf991bf61672d446e5aa3c93" + }, + { + "path": "scripts/foundation/canonical.mjs", + "r4Sha256": "a7760882c4c49992b9d702eb125a3e8f63048be543516b0eba61231018b90172", + "r5Sha256": "a7760882c4c49992b9d702eb125a3e8f63048be543516b0eba61231018b90172" + }, + { + "path": "scripts/foundation/canonical.test.mjs", + "r4Sha256": "f504321983b2c41eff5af7e6dc27e40e360e0aae299d0a9abc369c743f5384f7", + "r5Sha256": "f504321983b2c41eff5af7e6dc27e40e360e0aae299d0a9abc369c743f5384f7" + }, + { + "path": "scripts/foundation/cli.test.mjs", + "r4Sha256": "566abb49770b5d23ea74da663a0c64e37b078d1a793acd313e56e8612fbf05c8", + "r5Sha256": "566abb49770b5d23ea74da663a0c64e37b078d1a793acd313e56e8612fbf05c8" + }, + { + "path": "scripts/foundation/fixtures.test.mjs", + "r4Sha256": "94e7508717efcafd11585a288a5d791e1e48a993794e2d470c6097f904befdb3", + "r5Sha256": "94e7508717efcafd11585a288a5d791e1e48a993794e2d470c6097f904befdb3" + }, + { + "path": "scripts/foundation/resolve.mjs", + "r4Sha256": "c4951014828080caf9a5038845104afdac02465af10e94a2fddd3558b29621a3", + "r5Sha256": "c4951014828080caf9a5038845104afdac02465af10e94a2fddd3558b29621a3" + }, + { + "path": "scripts/foundation/resolve.test.mjs", + "r4Sha256": "dca397f268cfd39feffae3839f57afc61fe74ca324645dd1d916219f38d4b15b", + "r5Sha256": "dca397f268cfd39feffae3839f57afc61fe74ca324645dd1d916219f38d4b15b" + }, + { + "path": "scripts/foundation/strict-json.mjs", + "r4Sha256": "7c31fe6be8cd29ee07662a21bb2e490a2ec799e263dec981ee257fcf7e6f6ebf", + "r5Sha256": "7c31fe6be8cd29ee07662a21bb2e490a2ec799e263dec981ee257fcf7e6f6ebf" + }, + { + "path": "scripts/foundation/strict-json.test.mjs", + "r4Sha256": "b40488edfc4eba6962e8c0949ddf1f92fdc15d630b7e9bdff72ac6d06bdb092e", + "r5Sha256": "b40488edfc4eba6962e8c0949ddf1f92fdc15d630b7e9bdff72ac6d06bdb092e" + }, + { + "path": "scripts/foundation/validate-record.mjs", + "r4Sha256": "dcff28b53501b68fe7368adcbf02db0526ab4273d1c1c42e47df9a78a0bd9b4b", + "r5Sha256": "dcff28b53501b68fe7368adcbf02db0526ab4273d1c1c42e47df9a78a0bd9b4b" + }, + { + "path": "scripts/foundation/verify-schema.py", + "r4Sha256": "e5fce462abd0e8c5be4e4543fd31146a35aba41a653d2aa105c28ca5a20deb67", + "r5Sha256": "e5fce462abd0e8c5be4e4543fd31146a35aba41a653d2aa105c28ca5a20deb67" + }, + { + "path": "scripts/git-credential-mosaic.mjs", + "r4Sha256": "aa7fc27957c22ced56e4fc2b311f10155a1f7797d7253900832159fe8d8f7dc8", + "r5Sha256": "aa7fc27957c22ced56e4fc2b311f10155a1f7797d7253900832159fe8d8f7dc8" + }, + { + "path": "scripts/git-hooks/pre-commit", + "r4Sha256": "3cbd40575dc728dc5407c5029f4f5fff747ce93a5508807233f4362ad37d7f9c", + "r5Sha256": "3cbd40575dc728dc5407c5029f4f5fff747ce93a5508807233f4362ad37d7f9c" + }, + { + "path": "scripts/gitea-api.sh", + "r4Sha256": "2e555b369ac5016fe80658568e6ff3f455d63a5a2743d2da05d189987cd5a42d", + "r5Sha256": "2e555b369ac5016fe80658568e6ff3f455d63a5a2743d2da05d189987cd5a42d" + }, + { + "path": "scripts/goal-dev.sh", + "r4Sha256": "a8a41274c06ab6fe38c42d1e96db115b8d65b03a87ed1796c4d37288258a1d12", + "r5Sha256": "a8a41274c06ab6fe38c42d1e96db115b8d65b03a87ed1796c4d37288258a1d12" + }, + { + "path": "scripts/hello.sh", + "r4Sha256": "b3e4bff1d46b9dd07799bfd8c32397e0648e715f47fbb3c315357758aab46323", + "r5Sha256": "b3e4bff1d46b9dd07799bfd8c32397e0648e715f47fbb3c315357758aab46323" + }, + { + "path": "scripts/instance.sh", + "r4Sha256": "34157cbd845a3cd01766e7ef3bedf673d926b86ce6600e90c28b3953162d0e4d", + "r5Sha256": "34157cbd845a3cd01766e7ef3bedf673d926b86ce6600e90c28b3953162d0e4d" + }, + { + "path": "scripts/land-work.sh", + "r4Sha256": "91ef00876a0a3719452ae464a6b2f7c69a8aa65af8fb93515308a0cb85161772", + "r5Sha256": "91ef00876a0a3719452ae464a6b2f7c69a8aa65af8fb93515308a0cb85161772" + }, + { + "path": "scripts/land-work/fixture.mjs", + "r4Sha256": "cf5082cdcb835759e03211072affbf621c19c3845e35a1a73332932581f77c6b", + "r5Sha256": "cf5082cdcb835759e03211072affbf621c19c3845e35a1a73332932581f77c6b" + }, + { + "path": "scripts/land-work/read.mjs", + "r4Sha256": "5dfcc779614378fc504191aac48dab0bc5bec608f097d799c013236e79a43379", + "r5Sha256": "5dfcc779614378fc504191aac48dab0bc5bec608f097d799c013236e79a43379" + }, + { + "path": "scripts/mosaic", + "r4Sha256": "8efc1b9f8fc35cf486d98601b1e6d20a8a70ded5098c112e7697c3cd274b8df0", + "r5Sha256": "8efc1b9f8fc35cf486d98601b1e6d20a8a70ded5098c112e7697c3cd274b8df0" + }, + { + "path": "scripts/mosaic-config.mjs", + "r4Sha256": "4f5cb5b6d2d3635f292587e2f7caf0665d21363ce9664429b3726f8ff7b192a3", + "r5Sha256": "4f5cb5b6d2d3635f292587e2f7caf0665d21363ce9664429b3726f8ff7b192a3" + }, + { + "path": "scripts/mosaic-task.mjs", + "r4Sha256": "f94c22e020e8f4d573665fe3e91d84948ebe437e0b93dc31278c3fcfdaa9686b", + "r5Sha256": "f94c22e020e8f4d573665fe3e91d84948ebe437e0b93dc31278c3fcfdaa9686b" + }, + { + "path": "scripts/onboard.sh", + "r4Sha256": "3e72d7a36edb833f945f05fda136c2a09b22c5d1e9c9c6ee8fb8b1db1dd7d8f5", + "r5Sha256": "3e72d7a36edb833f945f05fda136c2a09b22c5d1e9c9c6ee8fb8b1db1dd7d8f5" + }, + { + "path": "scripts/prepare-concept-tests.mjs", + "r4Sha256": "1d91b60cd71405034918e978f7379bcbc7f39c06515947c14f4fa7cb9dee2a6e", + "r5Sha256": "1d91b60cd71405034918e978f7379bcbc7f39c06515947c14f4fa7cb9dee2a6e" + }, + { + "path": "scripts/queue-commit.sh", + "r4Sha256": "71be356ead122036a8add2d049411b6911946c8944250cdb1a0ee11f4e10800b", + "r5Sha256": "71be356ead122036a8add2d049411b6911946c8944250cdb1a0ee11f4e10800b" + }, + { + "path": "scripts/release.sh", + "r4Sha256": "01629570e07dd77de812a53413a2c0b5f56f0c0f8f914a80292ba1e13c05d85e", + "r5Sha256": "01629570e07dd77de812a53413a2c0b5f56f0c0f8f914a80292ba1e13c05d85e" + }, + { + "path": "scripts/reset.sh", + "r4Sha256": "957ef76f949c2eb2e472182261bf2d1619e0cde44c506ab2bbb5c25dc063864d", + "r5Sha256": "957ef76f949c2eb2e472182261bf2d1619e0cde44c506ab2bbb5c25dc063864d" + }, + { + "path": "scripts/run-task.sh", + "r4Sha256": "5739bd55c6f5b561267a35f8c67b5b29fa6156258fdea9d3bb156b3ab696262b", + "r5Sha256": "5739bd55c6f5b561267a35f8c67b5b29fa6156258fdea9d3bb156b3ab696262b" + }, + { + "path": "scripts/skill.sh", + "r4Sha256": "5e728381eb878f4ba3ece3a808abcef965cd56556fdd559e3c1460fcce4ee7dd", + "r5Sha256": "5e728381eb878f4ba3ece3a808abcef965cd56556fdd559e3c1460fcce4ee7dd" + }, + { + "path": "scripts/stack-copy.sh", + "r4Sha256": "a422e9c8a690f5c1d8f2d7887d9d0cbb77bc8511ec6587d96d15641004f7def1", + "r5Sha256": "a422e9c8a690f5c1d8f2d7887d9d0cbb77bc8511ec6587d96d15641004f7def1" + }, + { + "path": "scripts/stack-release.sh", + "r4Sha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2", + "r5Sha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2" + }, + { + "path": "scripts/stack-upgrade.sh", + "r4Sha256": "bce12e386f6d919e52b03dcd0ebb15b9f16c30a414dcd2caafc28a95791f82cb", + "r5Sha256": "bce12e386f6d919e52b03dcd0ebb15b9f16c30a414dcd2caafc28a95791f82cb" + }, + { + "path": "scripts/sync-dev-extensions.sh", + "r4Sha256": "eee8c0a9c5708cbc9d0922ea733f09b34d50da8816f95a43e5afe3e3dfc24dbb", + "r5Sha256": "eee8c0a9c5708cbc9d0922ea733f09b34d50da8816f95a43e5afe3e3dfc24dbb" + }, + { + "path": "scripts/test-auth.sh", + "r4Sha256": "dd4720cb0cbecd2fc523a318f2222d21d257c8c5889996a3d69e522ee971a707", + "r5Sha256": "dd4720cb0cbecd2fc523a318f2222d21d257c8c5889996a3d69e522ee971a707" + }, + { + "path": "scripts/test-conductor.sh", + "r4Sha256": "da84150467494a4c979759f400854411bd93a7efce981139757bf526d688a23b", + "r5Sha256": "da84150467494a4c979759f400854411bd93a7efce981139757bf526d688a23b" + }, + { + "path": "scripts/test-config.sh", + "r4Sha256": "3301c1fabf616bb961d62f6decd0a46dadb0f399b8ba7f3c2ca60023d2b24c78", + "r5Sha256": "3301c1fabf616bb961d62f6decd0a46dadb0f399b8ba7f3c2ca60023d2b24c78" + }, + { + "path": "scripts/test-darkwing-launch.mjs", + "r4Sha256": "59bd35966f6b6063e69a0e94598cdc328babb6f30e21283c58cf6c85821c1fe1", + "r5Sha256": "59bd35966f6b6063e69a0e94598cdc328babb6f30e21283c58cf6c85821c1fe1" + }, + { + "path": "scripts/test-discord.sh", + "r4Sha256": "a5dcf783c51a5d5d184a357f91ebf9fa1c4e054f0cb84a3d1d7668f6156e025e", + "r5Sha256": "a5dcf783c51a5d5d184a357f91ebf9fa1c4e054f0cb84a3d1d7668f6156e025e" + }, + { + "path": "scripts/test-extension-package.sh", + "r4Sha256": "5d7b687f16fd1a9414b229501177d530ba3af4eadd3cac319b33f38fdba9bf99", + "r5Sha256": "5d7b687f16fd1a9414b229501177d530ba3af4eadd3cac319b33f38fdba9bf99" + }, + { + "path": "scripts/test-fleet-goal-native.py", + "r4Sha256": "367a07f4cfdc6fec2c81e3ca9cd1a061dff22d02d6efca0e3b7749dba23d7c0d", + "r5Sha256": "367a07f4cfdc6fec2c81e3ca9cd1a061dff22d02d6efca0e3b7749dba23d7c0d" + }, + { + "path": "scripts/test-fleet-goal-ownership.py", + "r4Sha256": "7c255a5234d221395af9e0183a9a53ea13afc8cf9a403a74c5a8c26060ab10cc", + "r5Sha256": "7c255a5234d221395af9e0183a9a53ea13afc8cf9a403a74c5a8c26060ab10cc" + }, + { + "path": "scripts/test-foundation.sh", + "r4Sha256": "2e11038e7f784ec4f539eb768f63bab0fab9c9940334388a1fe2d47ab9e2b008", + "r5Sha256": "2e11038e7f784ec4f539eb768f63bab0fab9c9940334388a1fe2d47ab9e2b008" + }, + { + "path": "scripts/test-goal-discovery.mjs", + "r4Sha256": "990b370549363c0a6b4abb332ef9993ac7f7f11d1339079a80571a1abe4ca250", + "r5Sha256": "990b370549363c0a6b4abb332ef9993ac7f7f11d1339079a80571a1abe4ca250" + }, + { + "path": "scripts/test-goal-native.py", + "r4Sha256": "1292a1850b73a7cc3dfaca2ca57711ac5a5bb4cc457163462d5ffd3fd9843fa9", + "r5Sha256": "1292a1850b73a7cc3dfaca2ca57711ac5a5bb4cc457163462d5ffd3fd9843fa9" + }, + { + "path": "scripts/test-land-work.sh", + "r4Sha256": "c9d1d5c9b006d5c12e5f796a9828361059f8e0410846fc55c070c0148b15cef4", + "r5Sha256": "c9d1d5c9b006d5c12e5f796a9828361059f8e0410846fc55c070c0148b15cef4" + }, + { + "path": "scripts/test-queue.sh", + "r4Sha256": "c270f181d1fa8b6d42ff4131c339beba786a8fd620bb66f8afdcec05e8b10868", + "r5Sha256": "c270f181d1fa8b6d42ff4131c339beba786a8fd620bb66f8afdcec05e8b10868" + }, + { + "path": "scripts/test-release.sh", + "r4Sha256": "cd9376a39a5cebb656231a3c3e1a93a4117208facad595427ec63328ec494134", + "r5Sha256": "cd9376a39a5cebb656231a3c3e1a93a4117208facad595427ec63328ec494134" + }, + { + "path": "scripts/test-rocko-launch.mjs", + "r4Sha256": "f07dfa80e68bbb247e82fefd805f26a798bd9a9b404ef40d533643c71f59ed19", + "r5Sha256": "f07dfa80e68bbb247e82fefd805f26a798bd9a9b404ef40d533643c71f59ed19" + }, + { + "path": "scripts/test-task.sh", + "r4Sha256": "8b08f75f1350ca14fe4e3879c3f7df4043b1d1dcf6a0a1a9f403193ee0f94125", + "r5Sha256": "8b08f75f1350ca14fe4e3879c3f7df4043b1d1dcf6a0a1a9f403193ee0f94125" + }, + { + "path": "scripts/testing/README.md", + "r4Sha256": "845db994e648f29f10efb5e6a4ddcf4be4e28798fc27f1eddf9d150f0e8b5319", + "r5Sha256": "845db994e648f29f10efb5e6a4ddcf4be4e28798fc27f1eddf9d150f0e8b5319" + }, + { + "path": "scripts/testing/gate-lane.mjs", + "r4Sha256": "3529f32909e839c1a19b8aeec76ab73bfa3ff6d93a47d75f582992cf8c085156", + "r5Sha256": "3529f32909e839c1a19b8aeec76ab73bfa3ff6d93a47d75f582992cf8c085156" + }, + { + "path": "scripts/testing/gate-lane.sh", + "r4Sha256": "41804d964c55dd07b6224855aae9dc44037f4e80c515c10f98fe04d6d3fa0084", + "r5Sha256": "41804d964c55dd07b6224855aae9dc44037f4e80c515c10f98fe04d6d3fa0084" + }, + { + "path": "scripts/testing/lane-docker.mjs", + "r4Sha256": "ab51b2ab431b44a3182f231ca05741cdb9aea4d64fe953d3f8d9536cc8da06f9", + "r5Sha256": "ab51b2ab431b44a3182f231ca05741cdb9aea4d64fe953d3f8d9536cc8da06f9" + }, + { + "path": "scripts/testing/lane-evidence.mjs", + "r4Sha256": "51d4dcff4ab01730b923e0a59c218f9a3d33e6ba729be1def03703bc457fb37e", + "r5Sha256": "51d4dcff4ab01730b923e0a59c218f9a3d33e6ba729be1def03703bc457fb37e" + }, + { + "path": "scripts/testing/lane-fixtures.mjs", + "r4Sha256": "8634070d68bca694c8a58911eda9576991ed0eca1eb055a2c1bbf10261305939", + "r5Sha256": "8634070d68bca694c8a58911eda9576991ed0eca1eb055a2c1bbf10261305939" + }, + { + "path": "scripts/testing/lane-image.mjs", + "r4Sha256": "2259045913b4e3042b7afd3ff6a0fb9c2cc9b4cf359f943e4dce9b8658b91982", + "r5Sha256": "2259045913b4e3042b7afd3ff6a0fb9c2cc9b4cf359f943e4dce9b8658b91982" + }, + { + "path": "scripts/testing/lane-state.mjs", + "r4Sha256": "c37b3d5ec3025948dd8150d18d4ccc4eeb3539739ca37e4d86edede5bcafd1a8", + "r5Sha256": "c37b3d5ec3025948dd8150d18d4ccc4eeb3539739ca37e4d86edede5bcafd1a8" + }, + { + "path": "scripts/unify-fleet-goal.py", + "r4Sha256": "2ad661e79cb5175734d0046cae42bec7a843df4eaf8874ae7e604736ff2c3f35", + "r5Sha256": "2ad661e79cb5175734d0046cae42bec7a843df4eaf8874ae7e604736ff2c3f35" + }, + { + "path": "scripts/verify.sh", + "r4Sha256": "35a8dcffc71a034a68a5e56f0cd3ff77e3cefeaea5458c88ac0cfef77d76c678", + "r5Sha256": "35a8dcffc71a034a68a5e56f0cd3ff77e3cefeaea5458c88ac0cfef77d76c678" + }, + { + "path": "scripts/webui-service.sh", + "r4Sha256": "6e7069cca9f7aef84c17f15611f2d7e0d09083a363c23da8dbd14d3ed29f0f40", + "r5Sha256": "6e7069cca9f7aef84c17f15611f2d7e0d09083a363c23da8dbd14d3ed29f0f40" + } + ] +} diff --git a/agents/gander/work/queue-196/r5/test-patch-id.txt b/agents/gander/work/queue-196/r5/test-patch-id.txt new file mode 100644 index 000000000..579ecaf38 --- /dev/null +++ b/agents/gander/work/queue-196/r5/test-patch-id.txt @@ -0,0 +1 @@ +118b993f0dff2e91b9a1335082cbf05b6dedf22a 0000000000000000000000000000000000000000 diff --git a/agents/gander/work/queue-196/r5/tester-port-occurrences.json b/agents/gander/work/queue-196/r5/tester-port-occurrences.json new file mode 100644 index 000000000..c4f6b818c --- /dev/null +++ b/agents/gander/work/queue-196/r5/tester-port-occurrences.json @@ -0,0 +1,232 @@ +[ + { + "path": "packages/cli/tests/case1-accept.test.mjs", + "kind": "test; see TESTER-PORT-AUDIT.md for direct/fixture/refusal classification", + "lines": [ + 28, + 477 + ] + }, + { + "path": "packages/cli/tests/case1-hostcheck.test.mjs", + "kind": "test; see TESTER-PORT-AUDIT.md for direct/fixture/refusal classification", + "lines": [ + 68, + 215 + ] + }, + { + "path": "packages/cli/tests/case2-unit.test.mjs", + "kind": "test; see TESTER-PORT-AUDIT.md for direct/fixture/refusal classification", + "lines": [ + 80, + 328, + 364, + 365, + 378, + 380 + ] + }, + { + "path": "packages/cli/tests/stack-release-external.test.mjs", + "kind": "test; see TESTER-PORT-AUDIT.md for direct/fixture/refusal classification", + "lines": [ + 75 + ] + }, + { + "path": "packages/cli/tests/stack-release-fixture.mjs", + "kind": "legacy test helper", + "lines": [ + 306 + ] + }, + { + "path": "packages/cli/tests/stack-release.test.mjs", + "kind": "test; see TESTER-PORT-AUDIT.md for direct/fixture/refusal classification", + "lines": [ + 681, + 687, + 688, + 690, + 692, + 693, + 694, + 697, + 702, + 705, + 708, + 709, + 714, + 718, + 724, + 731, + 732, + 736, + 738, + 740, + 741, + 746, + 749, + 821, + 827, + 830, + 839, + 843, + 846, + 848, + 850, + 1056, + 1057, + 1058, + 1129, + 1132, + 1135, + 1137, + 1138, + 1141, + 1162, + 1351, + 1352, + 1367, + 1468, + 1480, + 1481, + 1483, + 1486, + 1563, + 1564, + 1584, + 1594, + 1682, + 1810, + 2197, + 2201, + 2216, + 2279, + 2289, + 2291, + 2318 + ] + }, + { + "path": "packages/webui/README.md", + "kind": "documentation, not a caller", + "lines": [ + 128, + 130, + 144, + 176, + 1001 + ] + }, + { + "path": "packages/webui/src/cli.mjs", + "kind": "retired flag refusal, not a caller", + "lines": [ + 30 + ] + }, + { + "path": "packages/webui/tests/service.test.mjs", + "kind": "test; see TESTER-PORT-AUDIT.md for direct/fixture/refusal classification", + "lines": [ + 125, + 127, + 129, + 136, + 150, + 151, + 152, + 153, + 154, + 164, + 172, + 175, + 176, + 178, + 186, + 188, + 189, + 199, + 799, + 813 + ] + }, + { + "path": "packages/webui/tests/tester-cli.test.mjs", + "kind": "test; see TESTER-PORT-AUDIT.md for direct/fixture/refusal classification", + "lines": [ + 25 + ] + }, + { + "path": "scripts/case1-accept.sh", + "kind": "script producer or acceptance consumer; see audit", + "lines": [ + 65, + 88 + ] + }, + { + "path": "scripts/case2-unit.sh", + "kind": "script producer or acceptance consumer; see audit", + "lines": [ + 25, + 163, + 193, + 194, + 204 + ] + }, + { + "path": "scripts/instance.sh", + "kind": "existing unit parser, not a caller", + "lines": [ + 114, + 132 + ] + }, + { + "path": "scripts/stack-release.sh", + "kind": "script producer or acceptance consumer; see audit", + "lines": [ + 47, + 63, + 126, + 797, + 800, + 814, + 830, + 832, + 833, + 837, + 878, + 885, + 893, + 897, + 903, + 919, + 1076, + 1134, + 1142, + 2106 + ] + }, + { + "path": "scripts/webui-service.sh", + "kind": "script producer or acceptance consumer; see audit", + "lines": [ + 43, + 74, + 96, + 97, + 137, + 182, + 266, + 462, + 467, + 471 + ] + } +]