Compare commits
71
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a5370b198e | ||
|
|
c2338ed588 | ||
|
|
18334d713b | ||
|
|
963303403e | ||
|
|
72db194a43 | ||
|
|
5d7801dc19 | ||
|
|
af988f6526 | ||
|
|
5999872f5a | ||
|
|
b0690ae8c0 | ||
|
|
18eca02ae9 | ||
|
|
a7aa4a4dab | ||
|
|
fda535d97d | ||
|
|
337ccee2dc | ||
|
|
d06ada4b8b | ||
|
|
105d26f1d9 | ||
|
|
efd43df9d3 | ||
|
|
f3030813ed | ||
|
|
918bbddfb0 | ||
|
|
17d1123ea1 | ||
|
|
a5e7785476 | ||
|
|
727cc0aa0c | ||
|
|
7d0eb8d8d6 | ||
|
|
0cada1be13 | ||
|
|
ad6a8d99ea | ||
|
|
d55944edb1 | ||
|
|
1f3d0350f3 | ||
|
|
c57a9425e9 | ||
|
|
edf06ca884 | ||
|
|
6ece68c975 | ||
|
|
dc68d4f4ce | ||
|
|
6a0fa43837 | ||
|
|
0c32e67f29 | ||
|
|
076eda6a57 | ||
|
|
63f3a69313 | ||
|
|
9c85f27fa5 | ||
|
|
e7038a4407 | ||
|
|
239033309c | ||
|
|
54bdac257e | ||
|
|
752cc87ac1 | ||
|
|
25874bc86c | ||
|
|
4c6190645d | ||
|
|
d0a6a87cda | ||
|
|
29f7287942 | ||
|
|
2c244de380 | ||
|
|
a44c1f884e | ||
|
|
5481478786 | ||
|
|
c2eac13ea5 | ||
|
|
dab9f6cd4d | ||
|
|
b3ca50c950 | ||
|
|
a1b72432cd | ||
|
|
bc4e94166d | ||
|
|
35f32b0326 | ||
|
|
fca8c68ccc | ||
|
|
4f7bb95b33 | ||
|
|
d91b580c3b | ||
|
|
98235fdb32 | ||
|
|
b19ffa04f8 | ||
|
|
e0c6142f3a | ||
|
|
42ba0f5bc0 | ||
|
|
68c08b4e76 | ||
|
|
76f84465fd | ||
|
|
1bd214e382 | ||
|
|
56c1845505 | ||
|
|
72a3125a6e | ||
|
|
6a5e125113 | ||
|
|
529e121379 | ||
|
|
9042754c47 | ||
|
|
c98cd41d8d | ||
|
|
94d9e90a6a | ||
|
|
b617b80f68 | ||
|
|
93200bb446 |
No files matched your search
@@ -5475,3 +5475,66 @@ remain; no live state, schema or bus policy change.
|
||||
2026-10-24 | Goldie | Row265 / #1770 first slot STOP (sage-3932) | New parser14/14, rooms18/18 green; serialized bus stops at old project-runtime.test.mjs:14 import-closure pin, partial619 ok/1 not ok. New pure address.mjs import is absent from expected imports. Static trace also needs address.mjs in seat RUNNER_FILES. No old-test/product correction, no mutant/restored run, no green commit/push; old-pin and out-of-owned-files mount change sent to Sage for ruling. Audit prose missed the direct source pin despite raw grep hit; correction recorded in BUILD.md.
|
||||
|
||||
2026-10-24 | Goldie | Row265 / #1770 verified (mos-1567, sage-3942) | Approved correction adds solely address import pin + Row265 comment to project-runtime.test and one pure-source RUNNER_FILES mount; new block checks parser has no imports. Serialized fresh-short-TMP timeout-k10: unchanged sandbox10/10, parser15/15, rooms18/18, full bus957/957, twelve named refusal mutants killed (each Node1, driver0), restored parser15/15 + rooms18/18. All positives zero fail/skip/cancel; every mutation restored full broker SHA71b32ee4. Old first-red evidence retained, no other old-test change. Slot returned goldie-0034; Boyd packet explicitly includes mount-list review, candidate push next.
|
||||
2026-10-24T07:18:53Z | Sage | Row 327 (#1825, Bradford, Poe and Dewey) LANDED 68c08b4e7. Before: refactor at 94d9e90a6; the push guard was a scratch script with no reviewed-binary check. After: scripts/push-check.sh and scripts/test-push-check.sh on refactor, 3 commits cherry-picked onto 6a5e12511 with blobs equal to the round 3 tip d858c9f8b, plus doc commits 76f84465f and 68c08b4e7. Binaries are found by numstat or a NUL in the first 8000 committed bytes, regardless of attributes; each needs its sha256 and path in an approved latest-round candidate; an unconfirmed queue tail exits 2. Reviews: Poe c31525 rev 3882, Dewey c31526 rev 3883. Gate: 1st run 06:57Z RED, not the candidate: canonical node_modules was empty from 05:45:15Z (sage-4023). Rerun with its own root npm ci GREEN 07:15:49Z: 17 package suites 0 failures (cli 986, plugins 119, webui 418), 11 scripts exit 0, push-check 6 mutants KILLED; skips are the queue canonical-root check and the row 244 live provider cases. The landed push-check.sh passed its own push (NO_BINARY, NO_ATTRIBUTION, PUSH_READY). mos-1575: gates install their own node_modules; canonical restored with npm ci (128 packages).
|
||||
|
||||
## 2026-10-23 — Lena, row 296 / #1802 FED R7 start
|
||||
|
||||
Before: R4 and R6 landed in base 45dca69f6; no scratch two-instance acceptance script.
|
||||
Plan: preserve Quackerjack handoff c6ab9bdc9, add isolated script/CLI test harness with real
|
||||
Console proof in transient user services, map assertions and two mutants for Filbert.
|
||||
Untested: all Node/tests and shared gate wait for Sage CLEAR; no production or live state changes.
|
||||
|
||||
## 2026-10-24 — Lena, row 296 / #1802 scoped acceptance verified
|
||||
|
||||
After: lena/row296-r2 rebased onto e0c6142f3 with both append logs preserved and row source
|
||||
unchanged. Own root/webui npm ci (128/2 packages), canonical dependencies untouched. Sage-4035
|
||||
slot: plain acceptance 1/1, killed-driver cleanup expected exit1 with cleanup verified, M1/M2
|
||||
both killed by named assertions with product hashes restored, whole new file intentionally
|
||||
skips outside its script. No unexpected first-run red, no old test change, no full/shared gate
|
||||
claim. Receipts and limitations in agents/lena/work/queue-296/BUILD.md and run-r2/.
|
||||
2026-10-23 | Beakley (88b97f65) | Row 217 #1718 takeover, before implementation | Clean base 45dca69f6 on beakley/row217. Recovering Launchpad handoff for citation guard, live settings, page store and runner retry. Acceptance is C2-06/design 5.2 plus sage-3595/3599/3602. Tracking agents/beakley/work/queue-217/BUILD.md; no product changes or Node/tests; Sage CLEAR required.
|
||||
|
||||
2026-10-23 | Beakley (88b97f65) | Row 217 #1718 untested draft checkpoint | Continued Launchpad e25ef0373; added runner retry/text/note implementation, pure protocol constants and sage-3640 approved single read-only mount, CLI documentation and new acceptance test files. Static checks caught missing projects compatibility, async request mutation and Git pathspec matching; bounded fixes and regression tests authored. git diff --check clean. No Node/test/mutant executed; Sage holds CLEAR. 283/216/285 dependency checks and all acceptance execution remain open. Packet agents/beakley/work/queue-217/MANIFEST.md.
|
||||
|
||||
2026-10-23 | Beakley (88b97f65) | Row 217 early-look follow-up, Untested | Webby 0939c0682 E1 adds ordinary mallory human-swap test; E2 adds stored trailer-derived agent/file event evidence; E6 creative-sender matrix and E7 runtime readRaw tests authored. Sage-3668/3670 accepts direct writer substitution because setter keys exclude replyLimits (organization.set exists, correcting review premise), and requires distinct availability refusal for E4. Real held-lock/socket and runner-reason regressions plus M5 authored before that production fix; expected RED awaits Sage CLEAR. No Node/tests/mutants, no old-test edits, no green claim.
|
||||
|
||||
2026-10-24 | Beakley (88b97f65) | Row 217 round 2, sage-4037 | Rebased published dde5b8496 onto e0c6142f3 on new beakley/row217-r2; both append-log histories retained. Conflicts preserve landed grant dispatch, revocation hook and lookup exports. Added E4 citation-unavailable product path and real supporting-scope/index comparison tests after row283 8d2856ee3. Untested: no Node/npm/tests/mutants/build; ready for Sage CLEAR after Lena296. Full range-diff and honest discarded local rebase correction in agents/beakley/work/queue-217/BUILD.md.
|
||||
|
||||
2026-10-24T10:21Z | Beakley (88b97f65) | Row 217 round2 slot verified, sage-4042/4043 | Source 2d274a5b6: touched57/57, whole library142/142 business270/270 bus974/974 cli988/988 harness172/172 seat218/218, all zero fail/skip/cancel. M1-M5 killed, controls/restored controls green, product hashes restored after each; E4 RED stand-in observed. Only first-red was new runtime fixture invalid-authority, corrected and retained in receipts; no old test failed/edited. Local root/webui npm ci, short TMPDIR, timeout-k10; no canonical npm/rm or module link. Full evidence agents/beakley/work/queue-217/run-r2; Sage owns scripts landing gate and formal review.
|
||||
2026-10-24T11:15:29Z | Sage | Rows 296 (#1802, Lena, Filbert) and 217 (#1718, Beakley, Webby) LANDED d0a6a87cd. Before: refactor at e0c6142f3 (local 98235fdb3). After: 296's 5 commits (range-diff 5 =, blobs equal b43156fd9 on 28 paths) and 217's 9 commits (5 = and 4 !, the ! are BUILD-LOG/SESSIONS append conflicts kept both sides; blobs equal 96659ccf4 on 79 paths) on 98235fdb3, with doc commits b19ffa04f and 98235fdb3. Reviews: Filbert c31547 rev 3896, Webby c31549 rev 3901. Gate: 1st run 10:57:16Z RED on one rule only, the gate's "cli skipped 0": 296's FED R7 test skips in the cli suite by design and runs only through scripts/test-federation-acceptance.sh, which passed 1/1 in the same run. Mos ruled that a RED gate doesn't land (mos-1583). The gate now allows a cli skip only from an explicit list (test file, test name, runner script) whose runner ran in the same gate with rc 0, at least 1 pass, 0 skipped and the named test passed; any unlisted skip stays RED; checked against a wrong-file and a runner-skip control, both RED. Rerun GREEN 11:14:53Z with its own npm ci: 17 package suites 0 failures (cli 989/988 pass, the allowed FED R7 skip; plugins 119; webui 418), every scripts/test-*.sh rc 0, federation-acceptance cleanup line present; skips otherwise are the queue canonical-root check and the row 244 live provider cases. push-check SECRETS_CLEAN, NO_ATTRIBUTION, PUSH_READY. #1802 closed c31557, #1718 closed c31559, Vikunja 533 comment 1054 (design task, left open for Q29). Row 286's approved manifest shares broker.mjs, runtime.mjs and library/src/index.mjs with 217, so 286 needs a rebase round before its gate. Brief template gains the skip-list rule.
|
||||
2026-10-24T10:02Z | Magica | Row 285 / #1790 r3 before/after (sage-4039, mos-1542) | Before: assigned magica/row285-r3 at b19ffa04f, Scrooge r2 untested at 53db6b7ca. After: seven commits cherry-picked through 644bcaa16; five named overlaps auto-merge preserving newer base changes. Range-diff six '=', one context-only '!'; six patch IDs identical, fixture patch ID differs with upstream import context, exact test added/removed-line comparison identical for all changed tests. business.mjs equals base; Scrooge BUILD equals r2. CREATIVE_KINDS absent in packages/roles/scripts; no 64-hex changed-path pin; 291 conservative reader candidates recorded. No npm or tests before Sage CLEAR; N1 remains follow-up. Own-branch evidence push next, not accepted/green or landed.
|
||||
|
||||
2026-10-24T09:58:36Z | Magica | Row 285 timestamp correction | The preceding Magica entry marked 10:02Z used an incorrect timestamp; replay/evidence commit 87b7547f8 occurred before the measured 09:58:22Z push start. Technical evidence is unchanged.
|
||||
|
||||
2026-10-24T10:32:02Z | Magica | Row285 / #1790 gate STOP (sage-4048) | Before: pushed66a800e15, no tests. After: own root/webui npm ci, short scratch TMPDIR, whole files serial timeout-k10; bus958/958 green (108 files), business partial80pass/4fail, first red old row323 case1-business-file tests57/86/95/105 because committed Case1 chief lacks required gitea ref. No more tests/mutants or source edits. Static diagnosis also finds old empty-credential assertions81/112/114, requiring a specific owner ruling. Sage notified magica-0002. No in-review move or green claim.
|
||||
|
||||
2026-10-24T10:42:28Z | Magica | Row285 / #1790 Amendment1 before/after | Before: unconditional chief gitea broke row323. After: chief-only library conditional plus named required-reference refusal, checkCredentialMap unchanged; new three-case test file; own helper/resolve fixture hunks restored to base, own chief/business/identity hunks reconciled under sage-4060. Case1 doc/test byte-identical. M10 planned against new no-library positive and old Case1 doc test. No tests run under held slot; not green/accepted. Residual base library fixture references need authority alignment before re-CLEAR.
|
||||
|
||||
2026-10-24T10:59:43Z | Magica | Row285 / #1790 B1 before/after | Before: Amendment1 candidatebabae6adc with missing refs in base library/creative fixtures. After: 26 data-only credential insertions across13 direct-reader files; original callback lines preserved, one expressly allowed credentials?.vikunja setup guard. Every other byte reconstructs prior candidate exactly; no base assertion edits. Base and candidate put role set is pm,cto,coder,reviewer; chief lacks vikunja. Literal e0c6142f3 word diffs and known preexisting r2 hunks recorded. No tests, green claim or queue move; next whole gate +M10 waits for Sage CLEAR.
|
||||
|
||||
2026-10-24T11:24:17Z | Magica | Row285 / #1790 r4 before/after | Before: r3 eee8ad776 on b19ffa04f, gate unverified after amendments. After: new r4 from landed296+217 base d0a6a87cd, twelve commits replayed; only append logs conflicted, complete base prefixes preserved. Product/test patch lines identical across assigned bases; tests byte-equal r3; replyLimits and broker citation work retained. Regenerated range-diff and e0c6142f3 base word/line diffs. No npm/tests or queue moves; own-branch push explicitly authorized by sage-4078.
|
||||
|
||||
2026-10-24T12:09:17Z | Magica | Row285 / #1790 r4 C1 diagnostic result | Before: valid landed-base candidate0f6cdc861; first old citation-runtime red. After: mos-1584/sage-4086 full unchanged collection, six suites2950 tests2937pass/12fail/1skip/0cancel; WebUI418 and plugins119 green, all12 script suites exit0, dedicated federation1/1. CLI release300s runner cap interrupted; retained and resolved via unchanged1800s retry224/224 in599.6s. Failures: citation-runtime1, instance-settings2, lifecycle-settings1, launcher1, harnesscreative7. Static root causes/fix classes and r3 parity in agents/magica/work/queue-285/BUILD.md. No source/test edits or fix round/mutants; no final manifest or in-review; owner ruling required.
|
||||
|
||||
2026-10-24T13:02:03Z | Magica | Row285 / #1790 r4 VERIFIED | Before: C1 collection12 failures. After: approved three data corrections, actual-bound-ref guard, duplicate-before-eligibility hire, data-derived creative equal-service retention/listing with validator first; no old assertion edits. Own fresh128/2 installs, editor-required shortTMP serialized final gate: bus975/975 business282/282 cli988pass/1expectedskip webui418/418 harness172/172 plugins119/119, all12 scripts exit0.13 mutations14 independent checks killed; each SHA256/Git blob restored; restored controls136/136. Case1 doc/test/helper base-identical; N1 deferred. Own r4 candidate for Poe/Webby review, no landing/live action.
|
||||
|
||||
2026-10-24T13:33:42Z | Sage | Row 285 (#1790, C2-08b, Magica on Codex, Poe and Webby) LANDED 1f3d0350f. Before: refactor at 25874bc86. After: r4 candidate 2e4503dc7's 14 commits cherry-picked onto 25874bc86. The one conflict (9f7adb03e, BUILD-LOG.md and SESSIONS.md) is append-only and kept both sides, with 0 lines removed against either parent. Apart from the logs, the tree equals the candidate except on the 7 paths 25874bc86 and 4c6190645 had changed. Reviews: Poe first review c31568 rev 3919, Webby landing review c31569 rev 3920, both static. Sage posted both because neither seat has a token. Gate GREEN 13:28:46Z with its own root and webui npm ci (mos-1575): 17 package suites, 4236 tests, 0 fail, 1 skip, which is the allowed FED R7 entry whose runner passed 1/1 (mos-1583). All 12 scripts/test-*.sh rc 0. The other skips are the queue canonical-root check and the row 244 live provider cases. Brief gate: no CREATIVE_KINDS in packages, roles or scripts; no test or script pins the old or new sha256 or blob of a changed role file (positive control found chief-of-staff.json readers); role JSONs match mos-1309 item 5 design 4, with gitea scopes added (read for the chief, read:user and write:repository for the creative roles). Before the push, the in-review overlap sweep found only row 286 (broker.mjs), which rebases as r5. push-check FF_OK, NO_BINARY, SECRETS_CLEAN, NO_ATTRIBUTION. #1790 closed with c31580, Vikunja 546 c1056 (already done). Queue note rev 3921, done rev 3922. Correction to my own rulings: sage-2921 (285's #giteaRole refuses the chief) and sage-2947 (286's T7/T9 mint the chief's grant through the real raise, no SQL staging) conflict now that 285 has landed (rockerduck-0008). sage-4100 keeps the refusal and has T7/T9 seed a read-only chief grant as labeled fixture data, with an assertion that the real path refuses and with revoke and fire still on the real verbs. The tradeoff is that the chief mint goes untested until C2-21 (row 287), whose brief now replaces the seeds. Dewey confirms in 286's round-2 delta. Brief template gains the mos-1584 businessDoc library chief-ref line. The C2-02 brief gains webby-0282 N1 (tool names match the creative contracts). Follow-up webby-0282 N3: business.mjs uses the literal "chief-of-staff" instead of STAFF_TO. The live stack is not re-pinned.
|
||||
- 2026-10-24 (rockerduck, row 286 / #1791, r3 before gate): transplanted Ludwig 45dca69f6..573fa0be0 onto b19ffa04f, preserved newer exports in sole index.mjs conflict; plain-text range-diff, patch IDs and reader/pin drift inventory in agents/rockerduck/work/queue-286/BUILD.md. UNTESTED by sage-4040: no setup or tests until CLEAR.
|
||||
|
||||
- 2026-10-24 (rockerduck, row 286 / #1791, r3 after sage-4054 CLEAR): own-worktree installs; library 140/140 and bus 963/963; M1 forced-refspec and M2 missing-inode-compare killed at semantic assertions, restored before final suites; all gate-output fixture searches zero. Four first-run reds only in new credential test; setup corrections and intermediate findings recorded in agents/rockerduck/work/queue-286/BUILD.md. No old test edited during gate; shell/CLI suites remain Sage landing gate.
|
||||
|
||||
- 2026-10-24 (rockerduck, row286 / #1791, r4 before gate, sage-4079): all 15 r3 commits transplanted to d0a6a87cd on new rockerduck/row286-r4. Three product overlaps auto-merged with row217 preserved; two append-log conflicts retain both histories. Range-diff and adjacent hunk evidence in agents/rockerduck/work/queue-286/BUILD.md. UNTESTED r4: Git-only until own-branch push, library/bus rerun waits for CLEAR after row285.
|
||||
|
||||
- 2026-10-24 (rockerduck, row286 / #1791, r5 before gate, sage-4097/4100): transplanted r4 onto 1f3d0350f; kept row285 library.write routing and chief write-grant refusal plus both append-log histories. Chief fixture refs added; T7/T9 mint setup now pins real refusal then seeds read-only fixture as explicitly ruled, keeping real revoke/fire assertions. Scratch role declaration mutation removed; range-diff/drift evidence recorded. No r5 tests yet; CLEAR starts after own-branch push.
|
||||
|
||||
- 2026-10-24 (rockerduck, row286 / #1791 r5 gate, sage-4097/4100): own-worktree installs; touched credential6/6 and sync24/24; whole library151/151 and bus981/981, zero fail/skip/cancel. P1 forced refspec, P2 missing inode compare and B285-M1 chief write-grant guard each killed on ERR_ASSERTION with green before/after controls and exact restoration hashes. All gate-output fixture searches zero. No normal red; source unchanged after pre-gate push045eec61a. Plain text evidence in agents/rockerduck/work/queue-286/BUILD.md and gate-r5; round2 candidate push follows.
|
||||
|
||||
- 2026-10-24 (rockerduck, row286 / #1791 r6, sage-4112 / #1825): corrected only two fixture constants to unique19-character values after the landing secrets check refused r5. No waiver/guard/assertion/product change. Added-package-lines secrets grep empty; touched6/6+24/24, library151/151, bus981/981 on fresh shortTMP timeout-k10; both exact new values absent from all four outputs. Mutants not rerun as directed. Plain evidence in agents/rockerduck/work/queue-286/BUILD.md and gate-r6; new manifest/push and round3 follow.
|
||||
|
||||
2026-10-24T14:37:02Z | Sage | Row 286 (#1791, C2-03b, Rockerduck on Codex, Boyd and Dewey) LANDED 5d7801dc1. Before: refactor at d55944edb. After: r6 candidate 75f6d56b1's 19 commits cherry-picked onto d55944edb. The one conflict (64f1ff950, BUILD-LOG.md and SESSIONS.md) is append-only and kept both sides, with 0 lines removed against either parent. Apart from the logs, the tree equals the candidate except on the 6 paths of my doc commit d55944edb. Reviews: round 2 (r5 ec8cb10c0) Boyd c31584 rev 3928, Dewey c31585 rev 3929; round 3 (r6) Boyd c31587 rev 3942, Dewey c31588 rev 3943. Sage posted the requests (c31583, c31586) because Rockerduck has no token. Gate GREEN on r5's tree e9c73ab96 at 14:14:11Z, then the push stopped at push-check STOP secrets. The guard came in today with #1825. Two added fixture constants (SLOT_TOKEN in library-credential.test.mjs, SEAT_TOKEN in sync.test.mjs) were 31 characters and matched its token-assignment pattern. sage-4112: no waiver (mos-1570) and no guard edit; r6 shortened only those two values to 19 characters, with reviewers confirming the delta. Gate GREEN again on 5d7801dc1 at 14:36:42Z with its own npm ci: 17 package suites, 4251 tests, 0 fail, 1 skip, which is the allowed FED R7 entry whose runner passed 1/1. All 12 scripts/test-*.sh rc 0. Neither old nor new fixture values appear in any of the 29 run outputs. Mutants: Rockerduck killed P1, P2 and B285-M1 (gitea-grant X-G1). For Dewey's N1 I also ran B285-M1 against library-credential.test.mjs; T7 and T9 failed (4/6) and passed after the restore. sage-4100 (chief grant seeded as fixture until C2-21) is recorded in the 285 entry. Overlap sweep found no in-review row on the 9 code paths. push-check FF_OK, NO_BINARY, SECRETS_CLEAN, NO_ATTRIBUTION. #1791 closed with c31591. No P19 task names row 286, so there is no Vikunja task to close. Brief template gains a sage-4112 line: test credentials stay under 24 characters. The live stack is not re-pinned.
|
||||
|
||||
- 2026-10-24 — steelbeak — #1792 / row 287 C2-21 before: library grants still fork; creative and chief grants refuse. Recovered Megavolt's binding design on 18334d713 and documented current-code delta in agents/steelbeak/work/queue-287/BUILD.md. No tests or implementation yet; Sage holds test clearance, scope delta reported in steelbeak-0001.
|
||||
|
||||
- 2026-10-24 — steelbeak — #1792 / row 287 C2-21 after: library grants use admin collaborator PUT, creative write/chief read levels, definition scopes, exact publish-wide reach and kind/level binding; business fence and chief install identity/publish updated; T7/T9 seeds replaced by real minting. Scratch Gitea F-A/F-B pass, F-C owner control negative recorded, F-D normal/force control positive. Verified bus 998, business 283, CLI 989 plus dedicated FED 1 (one expected CLI skip), Docker 2, install 27, all 12 shell gates, M1-M11 killed and restored; token audit hits0 and owned-process/container cleanup clean. Test fixture corrections approved under mos-1590/sage-4139; non-executable land-work launcher rc126 resolved by sage-4141 bash invocation. Evidence and manifest at agents/steelbeak/work/queue-287/; handing off to Boyd, then Dewey, with no live change or landing.
|
||||
|
||||
- 2026-10-24 — steelbeak — #1792 / row 287 first-review correction, boyd-0034: frozen candidate c2338ed58 approved, no blocking code findings. Product/test diff-check is clean; the full committed diff has trailing whitespace in preserved raw RED/mutant logs, correcting the earlier unqualified claim. Added verified old-test numstats in BUILD.md as a separate doc-only follow-up under lead137. Queue round1 opened at rev3963; automatic request failed at rev3964 for missing Steelbeak credential, reported to Sage without workaround. No product edits, tests or slot use.
|
||||
@@ -6,3 +6,6 @@ No launcher in this directory. The seat runs as a T3 thread (thread 88b97f65) an
|
||||
credentials of its own; it pushes only its own `beakley/*` branches through the repository credential helper (mos-0981),
|
||||
never `refactor`, `main` or another seat's branch. Claude seats orchestrate and review (Q245). Registered by Sage on
|
||||
2026-10-23 so the queue can name the seat as row owner (store.mjs isSeatDir).
|
||||
|
||||
Reports go to Sage's T3 thread (1ef1e4f8-3ead-4208-beca-38f9f1add079) and the next seat's, per the brief's Handoffs.
|
||||
Mos's thread gets a copy only when Mos has a step (mos-1579, 2026-10-24).
|
||||
@@ -0,0 +1,314 @@
|
||||
# Row 217 — C2-06 citation guard, page store and runner retry
|
||||
|
||||
Owner: Beakley (88b97f65-97db-4f05-8c6e-081f92bc3501), assigned by Mos Q245.
|
||||
Issue: #1718. Reviewer: Webby. Current branch: `beakley/row217-r2` (original `beakley/row217` preserved).
|
||||
Brief: `docs/plans/2026-10-20_case2-rows.md`, C2-06.
|
||||
Status: six whole suites green and M1–M5 killed under sage-4042/4043; ready for formal review. Landing scripts and integration remain Sage's.
|
||||
|
||||
## Plan and boundaries
|
||||
|
||||
Continue Launchpad's implementation from its handed-off ref. Complete the guard,
|
||||
live reply limits and M11 writer fence, broker page store and check evidence,
|
||||
CLI setter and runner retry/note behavior against the brief and design 5.2.
|
||||
Supply acceptance tests and mutants, then request Sage's test slot and Webby's
|
||||
review. Sage owns queue movement, gate and landing. Push only `beakley/*`, add
|
||||
commits without amend/force or attribution lines. No credential reads.
|
||||
|
||||
## Standing rulings received from Sage (sage-3610)
|
||||
|
||||
- sage-3595: stub supporting scope until row 283 lands, then rebase onto it and
|
||||
add real-fixture tests. Landing follows 283. `runtime.mjs` wiring approved.
|
||||
- Check evidence belongs in an `action.allowed` event in the same transaction
|
||||
as message insertion; no new event kind. Read the library at the cited commit.
|
||||
- In library businesses only, JSON over 32,768 characters gets the
|
||||
`request-too-large` retry. `role.claim` adds `library` only for a library business.
|
||||
- Store `check.citations` entries with `scope`, `agent`, and `file` (the file's
|
||||
last commit at the cited commit). On `thread.messages`, add `last` at the served
|
||||
tip, one git call per distinct path per read. Scope/agent are broker evidence.
|
||||
- sage-3599: optional `BusError.reason`, guard refusals only, capped at 300
|
||||
characters. Add bus server/client to manifest. Reasonless envelopes stay
|
||||
byte-identical.
|
||||
- `render.mjs` obsolete notice hits belong to row 225.
|
||||
- Node and tests require Sage CLEAR (sage-3610 supersedes the initial permission
|
||||
for targeted new tests). Full suites, webui builds and gate require shared slot.
|
||||
- Existing test edits require Mos GO through Sage; list every file and numstat
|
||||
below before seeking that approval.
|
||||
|
||||
## Recovery and coordination
|
||||
|
||||
Initial base `45dca69f6`, clean. `scripts/mosaic queue next beakley` refused:
|
||||
linked worktrees cannot run the queue. Reported to Sage/Mos in beakley-0001;
|
||||
Sage will change ownership at a queue gap. No queue files changed.
|
||||
Read AGENTS.md, agents/README.md, C2-06 brief, design 5.2 and the row 225 BUILD
|
||||
contract. Requested Launchpad handoff in beakley-0002. Its header timestamp was
|
||||
mistakenly typed ahead of the actual clock; sequence key identifies the message.
|
||||
|
||||
## Existing test changes
|
||||
|
||||
None yet. No tests or Node commands run.
|
||||
|
||||
|
||||
## Handoff adopted and independent work (2026-10-23)
|
||||
|
||||
Fast-forwarded `beakley/row217` to Launchpad `e25ef0373` on `45dca69f6`.
|
||||
The full original handoff/rulings remain at
|
||||
`agents/launchpad/work/queue-217/BUILD.md`. No handoff code was rebuilt from scratch.
|
||||
|
||||
Implemented the runner path: role.claim library switch; exact fixed texts; note
|
||||
inside JSON text with citations retained and no JSON clip; fixed texts defer
|
||||
notes; one same-session retry for guard codes and both existing size caps;
|
||||
retry fallback chosen from the second refusal; separate usage turn id for retry.
|
||||
Outside library businesses the existing send path remains intact.
|
||||
|
||||
Added the CLI README usage paragraph. New acceptance tests cover library parsing,
|
||||
real Git reachability/quotes/scope/origin, settings fallback, M11 direct writer
|
||||
and serialization, CLI dispatch, broker insert/check atomicity, live settings,
|
||||
page bounds/lifecycle, socket reasons, per-path last reads, request snapshots,
|
||||
and runner RESULT/typed send_message, fixed texts, long JSON and unslop behavior.
|
||||
These are authored evidence only: none has executed.
|
||||
|
||||
Static defects corrected locally: a missing projects object now means no library;
|
||||
the guard sends its captured request arguments after the asynchronous check;
|
||||
origin/last Git logs use literal pathspecs; a web quote can match any retained
|
||||
fetch of the cited URL. Each has new-file regression coverage.
|
||||
|
||||
## Scope additions and cross-row contract
|
||||
|
||||
- `packages/library/src/reply-protocol.mjs`: shared GUARD_CODES/FIXED_TEXTS,
|
||||
import-free, so runner imports do not reach host Git modules. guard.mjs
|
||||
reexports them to preserve Launchpad's API. Fethry confirmed no renderer import
|
||||
is needed when the renderer simply displays fixed texts as ordinary text.
|
||||
- `packages/seat/src/sandbox.mjs`: one RUNNER_FILES entry for that pure file,
|
||||
approved by sage-3640. No other mount change. The existing sandbox.test.mjs
|
||||
import-closure test must pass unchanged; seat joins the gate list.
|
||||
- Runtime hunks remain exactly Launchpad's import and library guard/limits/last
|
||||
adapters, plus library.limits.set dispatch. Drift checks wait on 216 and 285.
|
||||
- Status contract confirmed with Fethry (beakley-0004, fethry-0009): nested
|
||||
`replyLimits: {requireCitation, citationsPerReply, fallback: [keys],
|
||||
problem: "reply-limits-unreadable" | null}`. Check entries remain ordered
|
||||
`scope/agent/file`, plus `last` on reads; no changed boolean.
|
||||
|
||||
## Verification and remaining acceptance
|
||||
|
||||
- Static `git diff --check`: clean so far. No Node, suite, test or mutant run.
|
||||
- Existing test file edits: none (numstat 0/0 for every pre-existing test).
|
||||
All new test files are listed in manifest.r1.sha256; no Mos approval requested.
|
||||
- `mutants.py` is authored for isolated HEAD archives with green controls:
|
||||
M1 remove both writer fences; M2 compare incoming human; M3 split evidence
|
||||
from insert; M4 drop client reason. Not executed.
|
||||
- Still required: Sage CLEAR for targeted runs; fix first-run failures; supporting
|
||||
scope acceptance against row 283; 216 index/readLibrary fixture comparison;
|
||||
285/runtime drift check; full library/business/bus/cli/harness/seat suites and
|
||||
every scripts/test-*.sh on Sage's gate; mutant execution; Webby approval.
|
||||
- Before in-review, perform brief's obsolete-code/key search and report outside
|
||||
ownership hits to Sage. render.mjs/render.test.mjs hits belong to 225.
|
||||
- No queue changes, protected branch pushes, gate claims or acceptance claims.
|
||||
|
||||
Static obsolete-code/key search completed: only packages/library/src/render.mjs:6 and packages/library/tests/render.test.mjs:58 match no-cited-answer; both belong to row 225 per standing ruling. No owned-path hit. Repeat before in-review after dependency changes.
|
||||
|
||||
|
||||
## Webby early look 0939c0682 / webby-0249 and sage-3668/3670
|
||||
|
||||
This remains an untested draft. The follow-up adds tests only; production E4
|
||||
changes wait for the held-lock regression's first RED under Sage CLEAR.
|
||||
|
||||
- E1: added an ordinary actor `mallory` that sets both `human` to itself and
|
||||
`replyLimits`. The existing role/tester actors did not distinguish M2 because
|
||||
the actor-shape exclusions rejected them independently of the human comparison.
|
||||
M2 is still unrun; no kill claimed.
|
||||
- E2: added a real bus event assertion for `agent: "acme/scribe"` from a file's
|
||||
Mosaic-Agent trailer. The cited tip includes a later unrelated commit, so the
|
||||
event must store the file commit rather than the library tip. thread.messages
|
||||
must show `last === file` for that unchanged path. Supporting scope still waits
|
||||
for row 283's real fixture, as ruled.
|
||||
- E3: sage-3668 accepts direct writer.write tests under chief and tester actors
|
||||
as substitutes for the brief's setter cases (brief lines 483-491 at base
|
||||
45dca69f6). Correction to the early-look premise: organization.set DOES exist,
|
||||
broker.mjs:4701/4709, but ORGANIZATION_KEYS excludes replyLimits; instances.set
|
||||
also cannot carry it. Direct writes exercise the shared M11 boundary those
|
||||
setters cannot reach with that input. Sage confirmed the accurate reason in
|
||||
sage-3670; the unrelated actor case remains required.
|
||||
- E4: traced readSyncState -> withLibraryLock -> library-sync-busy after five
|
||||
seconds -> servedMirror catch-all -> null served -> misleading citation-invalid.
|
||||
New real-flock/socket test first proves the cite valid, holds the lock, asserts
|
||||
the exact citation-unavailable reason the agent receives, verifies no insert,
|
||||
and checks fixed fallback delivery and recovery after unlock. Additional tests
|
||||
distinguish malformed sync state from absent/new mirrors, and assert that the
|
||||
actual runner retry request contains that reason. These tests are expected RED
|
||||
until the fix. Planned production change: only an absent mirror or legitimate
|
||||
empty state yields null; other failures become GuardError citation-unavailable;
|
||||
bodies without path cites do not require the mirror lock. Add the code to
|
||||
GUARD_CODES so the runner sends the agent that reason on its one retry. Per
|
||||
sage-3670, existing four fallback bodies can remain only if that delivery is
|
||||
verified. M5 restores catch-all behavior; authored, not run.
|
||||
- E5: first-library-project selection is a Launchpad handoff implementation
|
||||
choice, not a validated rule that a business can only have one library.
|
||||
Cites into another library remain a limitation. No mapping/schema rule added.
|
||||
- E6: the broker's full guard table now runs as both coder and research.
|
||||
- E7: new citation-runtime.test.mjs starts the real runtime, reads limits from
|
||||
the real organization file, then changes, corrupts and removes that fixture
|
||||
file and checks library.status without replacing the library adapter.
|
||||
|
||||
No Node, tests or mutants ran. No test that predated row 217 changed.
|
||||
|
||||
|
||||
## Webby follow-up 192049c98 / webby-0258
|
||||
|
||||
E1, E2, E6 and E7 closed statically; no executed acceptance claimed. E3 correction and E5 limitation accepted. E4 tests accepted statically; real RED then production fix/green remain on hold for Sage CLEAR, with supporting scope waiting on 283. F1: citation-helpers status now uses its mutable served value, matching guard/last after setServed instead of reporting the original fixture commit. Test-only fixture correction, unrun. manifest.r3.sha256 records the updated helper; no production or old-test changes.
|
||||
|
||||
|
||||
## Round 2 / sage-4037 — 2026-10-24, Untested
|
||||
|
||||
New branch `beakley/row217-r2` from published `dde5b8496`, rebased exactly onto
|
||||
`origin/refactor` at `e0c6142f3` (109 upstream commits since `45dca69f6`). The
|
||||
published original branch is unchanged; no amend or force-push. The replayed
|
||||
four commits are b9ef816ff, 7400509ba, a447880cb, 2655ec010. Full range-diff:
|
||||
`rebase-r2.range-diff.txt`. Last commit is `=`, the first three are `!` from
|
||||
conflict context/indentation and append-log placement described below.
|
||||
|
||||
Conflict resolutions:
|
||||
- broker.mjs: retained landed grants.scope/grants.scope.set dispatch and added
|
||||
library.limits.set to the organization verb dispatch; neither path removed.
|
||||
- runtime.mjs: retained grants.scope.set and added library.limits.set alongside
|
||||
it; retained query/sync wiring and all new base lifecycle behavior.
|
||||
- organization.mjs: retained row 239's beforeWrite/revoked wrapper, placing both
|
||||
M11 fences before validations/revocation as on the old candidate. A refused
|
||||
reply-limit write cannot invoke beforeWrite.
|
||||
- library/index.mjs: retained C2-05a buildIndex/query exports and added the guard
|
||||
and reply-limits exports.
|
||||
- BUILD-LOG.md and docs/SESSIONS.md: retained upstream appends followed by all
|
||||
Beakley appends. Static byte-prefix checks prove the entire e0c6142f3 log
|
||||
histories survive; all original Beakley entries also survive.
|
||||
- business.mjs, cli README and sandbox.mjs auto-merged. Static diff against the
|
||||
target confirms only this row's TOP_KEYS addition, README paragraph and one
|
||||
import-free protocol mount; landed supporting scope and room-address mount
|
||||
remain intact. runtime diff contains only the approved import, injected
|
||||
guard/limits/last adapters and setter dispatch, now beside grants.scope.set.
|
||||
|
||||
Correction recorded honestly: the first unpublished rebase attempt used an
|
||||
unbounded marker regex that removed code after a conflict. The diff stat caught
|
||||
it immediately; aborted the rebase and repeated with bounded markers. No result
|
||||
from that discarded attempt was pushed. The successful first replay matches the
|
||||
original 589 insertions/20 deletions; no broad deletions remain.
|
||||
|
||||
Implemented E4 under sage-4037's explicit direction to make the product fix
|
||||
while keeping all tests unrun. This supersedes the earlier planned RED-first
|
||||
execution order; no RED or green has been observed. The existing regression
|
||||
cases predate the fix. GUARD_CODES now includes citation-unavailable. Only a
|
||||
mirror confirmed absent by lstat, or readSyncState's legitimate empty state,
|
||||
yields no served commit. Other read/lock/metadata errors give the fixed safe
|
||||
reason: "The library is busy or unavailable. Retry the answer when the library
|
||||
is available." The runner receives it through BusError.reason and includes it
|
||||
in its one retry request. The existing four fallback bodies remain. Plain,
|
||||
web-only and fixed replies require no mirror read, so a busy mirror cannot
|
||||
block the runner's fixed fallback. M5's real production anchor now exists.
|
||||
|
||||
Supporting scope after row 283 (`8d2856ee3`): added two broker tests using real
|
||||
mapping/reader classification, not a scope stub. A path in both supporting and
|
||||
playground refuses as canon; an agent-committed supporting path stores
|
||||
scope=supporting, agent=acme/scribe and its file commit in message.checked.
|
||||
|
||||
C2-05a comparison: index-build.mjs builds its file map directly from readLibrary
|
||||
files; indexFor calls that same reader at the requested commit. Added a real
|
||||
fixture test comparing the index set, readLibrary set and libraryReader.lines
|
||||
admission, including supporting, unmapped Markdown and .canvas. This comparison
|
||||
is authored and statically traced, not executed; numerical results wait on CLEAR.
|
||||
|
||||
Current packet: manifest.r4.sha256, relative to e0c6142f3. No test file already
|
||||
present at that base was edited. No Node, npm, tests, mutants or webui build run.
|
||||
Ready for CLEAR after Lena's row 296. On CLEAR, install with npm ci
|
||||
--ignore-scripts --no-audit --no-fund in THIS worktree root and packages/webui;
|
||||
never link to canonical node_modules or run npm/rm in the canonical checkout.
|
||||
Use short mktemp TMPDIR and timeout -k 10. Any old-test red goes to Sage before
|
||||
an edit. Full green gate, mutants and Webby verdict remain outstanding.
|
||||
|
||||
Range-diff receipt rendering trims trailing whitespace on diff separator lines; no substantive range-diff content changed. This removes whitespace warnings caused by embedding raw diff output in a tracked text file.
|
||||
|
||||
Final base-to-candidate whitespace check found a trailing blank line inherited from Launchpad in limits.mjs; removed it without behavior changes. manifest.r5.sha256 supersedes r4 for the exact candidate file hashes.
|
||||
|
||||
|
||||
## CLEAR sage-4042/4043 — execution started 2026-10-24
|
||||
|
||||
Queue beakley-217-start initially refused Lena's review-outcome lock twice;
|
||||
same-op retry succeeded at rev3894 (briefed→in-progress). No queue bypass.
|
||||
Short TMPDIR /mnt/storage/scratch/tmp/tNoueZ. Worktree-local npm ci at root
|
||||
(128 packages) and packages/webui (2) completed; neither path was a symlink.
|
||||
No npm/rm command ran in canonical. All test commands use timeout -k 10.
|
||||
|
||||
E4 current file: 3 pass/0 fail/0 skip. M5 isolated pre-fix stand-in: 1 pass,
|
||||
2 expected assertion failures (citation-invalid instead of citation-unavailable),
|
||||
exit1. Restored product bytes and checkout product hashes, then E4 restored
|
||||
control 3/3. Receipts under run-r2/m5-red. M1 six-space anchors both match
|
||||
exactly once on the eight-space lines.
|
||||
|
||||
Touched test files first run: 56 pass/1 fail, zero skip/cancel. The sole first-red
|
||||
was NEW citation-runtime.test.mjs invalid-authority at Broker.checkBusiness:
|
||||
validator output has unresolved roles and is not the host's broker projection.
|
||||
Adjusted that new fixture only, following limits-runtime.test.mjs: minimal
|
||||
empty-authority coder, validated real project mappings, real organization adapter
|
||||
and systemFor(root). Single rerun 1/1, then all touched files 57/57. No base test
|
||||
failure or edit. First log retained as run-r2/touched-first.log and reported to
|
||||
Sage in beakley-0014. No production change was required.
|
||||
|
||||
The isolated mutant driver now wraps each node run in timeout -k 10, refuses a
|
||||
symlinked root node_modules, restores mutated files in finally, verifies original
|
||||
checkout product hashes after every mutant and reruns the restored control.
|
||||
Optional name filters allow the E4 M5 RED before the full mutant pass. No
|
||||
canonical dependency link is used; isolated copies link only this worktree's
|
||||
own dependency install.
|
||||
|
||||
|
||||
## Final slot results / 2026-10-24 10:21Z
|
||||
|
||||
All requested runs completed serially under sage-4042/4043 on source revision
|
||||
`2d274a5b6`. Final receipt commits change only tracking and logs, not packages.
|
||||
|
||||
| Whole suite | Pass | Fail / skip / cancel |
|
||||
| --- | ---: | --- |
|
||||
| library | 142 | 0 / 0 / 0 |
|
||||
| business | 270 | 0 / 0 / 0 |
|
||||
| bus | 974 | 0 / 0 / 0 |
|
||||
| cli | 988 | 0 / 0 / 0 |
|
||||
| harness | 172 | 0 / 0 / 0 |
|
||||
| seat | 218 | 0 / 0 / 0 |
|
||||
|
||||
Total 2,764 whole-suite tests. Touched files rerun 57/57. The unchanged
|
||||
RUNNER_FILES import-closure test passed in seat (seat-suite.log:153). The only
|
||||
first-run failure was the NEW runtime fixture already recorded above; no old
|
||||
test failed and no test present at e0c6142f3 was edited.
|
||||
|
||||
M1–M5 all killed by the intended assertion, each with Node exit1, a green
|
||||
control and green restored control. Driver exit0. M1 catches missing writer
|
||||
refusals; M2 is killed by mallory's human swap; M3 detects one message left
|
||||
behind after evidence failure; M4 detects the missing reason; M5 detects
|
||||
citation-invalid in place of citation-unavailable on contention and bad state.
|
||||
Every mutation was in a disposable HEAD archive. Each changed file was restored,
|
||||
checkout product hashes checked after every mutant, and the restored control
|
||||
rerun. All five final restored.sha256 certificates match current product files.
|
||||
M5 also ran separately before the whole suites as the authorized pre-fix RED
|
||||
stand-in; its held-lock and malformed-state assertions failed, then restored
|
||||
E4 passed 3/3. Full raw controls/negatives/restores are retained.
|
||||
|
||||
Receipts: run-r2/summary.json and summary.txt; *-suite.log; touched-first.log,
|
||||
touched-rerun.log; availability-green.log; runtime-fixture-retry.log; npm-root.log
|
||||
and npm-webui.log; m1-anchors.txt; m5-red/ and mutants/. All are text, no binary
|
||||
artifact added. All Node/mutant/npm runs used the short TMPDIR and timeout -k 10.
|
||||
Both node_modules trees are local npm ci installs. No canonical npm/rm or
|
||||
canonical dependency link. No further runtime/source changes after the tests.
|
||||
|
||||
Acceptance formerly waiting on dependencies is executed: real row283 supporting
|
||||
canon refusal and supporting/agent event pass; the C2-05a readLibrary/index set
|
||||
comparison passes; runtime readRaw live/corrupt/missing-file test passes; runner
|
||||
retry request carries the E4 availability reason. The repeat obsolete-name
|
||||
search finds only render.mjs:6 and render.test.mjs:58, owned by row225; no owned
|
||||
hit. First-library selection remains the accepted E5 limitation. Webby-0274 N1
|
||||
is a nonblocking wording limitation: configuration faults share the safe
|
||||
busy-or-unavailable retry text. No policy/schema restriction was invented.
|
||||
|
||||
Current complete changed-file manifest over e0c6142f3..candidate is
|
||||
candidate-manifest.sha256, excluding itself to avoid a circular hash. It includes
|
||||
source, tests, records and evidence. Earlier numbered manifests are historical.
|
||||
Formal Webby verdict and all scripts/test-*.sh at landing remain Sage's steps;
|
||||
this is verified for review, not an integration/deployment claim.
|
||||
|
||||
Exact negative-test logs retain Node's whitespace-only diagnostic lines. Whole diff --check reports those 12 blank-line padding warnings in run-r2 logs; source/docs diff --check excluding captured run-r2 evidence is clean. No source whitespace problem or test failure is hidden by that exclusion.
|
||||
@@ -0,0 +1,61 @@
|
||||
# Row 217 round 2 — verified for review
|
||||
|
||||
Issue #1718, C2-06. Base e0c6142f3; branch beakley/row217-r2. Continued
|
||||
Launchpad e25ef0373 through the preserved original dde5b8496 branch. Range-diff,
|
||||
conflict resolutions and acceptance receipts are in BUILD.md. Tested source
|
||||
revision: 2d274a5b6; the final commits add records/evidence only.
|
||||
|
||||
The broker checks agent-to-human citations before insertion, stores trusted
|
||||
scope/agent/file evidence atomically with the message, and supplies per-path last
|
||||
on thread reads. It keeps session-local fetched pages and reads reply settings
|
||||
live through the M11 human-only writer. The runner preserves cited JSON, defers
|
||||
notes on fixed replies, and retries once with the refusal code and safe reason.
|
||||
E4 adds citation-unavailable for mirror/state/lock faults; uncited/web-only/fixed
|
||||
bodies do not need the mirror lock. Supporting scope uses landed row283 code.
|
||||
|
||||
## Product and test scope
|
||||
|
||||
The package paths listed in candidate-manifest.sha256 are exactly this row's
|
||||
base-to-candidate changes. Fourteen product paths cover library guard/limits/
|
||||
protocol/exports; business validation/writer; bus broker/runtime/server/client;
|
||||
CLI command/README; runner; and the single approved pure-protocol sandbox mount.
|
||||
Nine test/helper/fixture paths are additions. No existing test is modified.
|
||||
The mounted protocol stays import-free. Runtime retains the landed grant/query/
|
||||
sync behavior; the writer retains beforeWrite/revoked handling and fences before
|
||||
revocation. No SQL schema, event kind, role authority or credential change.
|
||||
|
||||
## Executed evidence
|
||||
|
||||
| Whole suite | Pass | Fail / skip / cancel |
|
||||
| --- | ---: | --- |
|
||||
| library | 142 | 0 / 0 / 0 |
|
||||
| business | 270 | 0 / 0 / 0 |
|
||||
| bus | 974 | 0 / 0 / 0 |
|
||||
| cli | 988 | 0 / 0 / 0 |
|
||||
| harness | 172 | 0 / 0 / 0 |
|
||||
| seat | 218 | 0 / 0 / 0 |
|
||||
|
||||
Touched files 57/57; total whole suites 2,764. First run was 56/57 due solely
|
||||
to a new runtime fixture missing the broker's resolved authority shape. Only
|
||||
that new fixture changed; single and full touched reruns passed. No old test
|
||||
failed. First-red evidence remains in run-r2/touched-first.log.
|
||||
|
||||
M1–M5 killed: missing M11 fences, incoming-human trust, split check transaction,
|
||||
dropped client reason, and hidden library availability. Every negative run has
|
||||
green control/restored runs and matching restored product certificates. M5 is
|
||||
also the authorized E4 pre-fix RED stand-in. Supporting canon refusal, stored
|
||||
supporting/agent evidence, the C2-05a index comparison, runtime raw settings and
|
||||
agent-visible E4 retry reason all pass. The unchanged sandbox closure test passes.
|
||||
|
||||
Commands ran serially under Sage CLEAR with short TMPDIR and timeout -k 10.
|
||||
Root/webui dependencies came from local npm ci, never canonical links. Full logs,
|
||||
summary.json and mutant certificates are in run-r2/. The complete changed-file
|
||||
manifest candidate-manifest.sha256 covers e0c6142f3..candidate, excluding itself;
|
||||
its SHA256 is supplied with the pushed tip. Historical manifests stay untouched.
|
||||
|
||||
## Remaining boundaries
|
||||
|
||||
Sage runs every scripts/test-*.sh at landing and posts the formal Webby review
|
||||
request. No merge/deployment performed. First-library selection remains the
|
||||
accepted limitation; configuration faults share the safe unavailable reason
|
||||
(Webby N1, nonblocking). Obsolete-name search hits only row225's render files.
|
||||
@@ -0,0 +1,80 @@
|
||||
74398edcedf16a3d856ab9e7ea900eb61a4df7f726f04b74b2ff123e7536e9c1 BUILD-LOG.md
|
||||
87880c30c2be0180e6eec4dbe203f86e93ae2b1b4be44031b6a4903c6245a0ec agents/beakley/work/queue-217/BUILD.md
|
||||
e7ecf624ccb2b918efb08001ae9da36380fe918f8c27db704860809b6792e6f2 agents/beakley/work/queue-217/MANIFEST.md
|
||||
f4a042b5d6d393d2be62b107d7157ae51dd8fbf36f4360f5cd8cf07c03c74251 agents/beakley/work/queue-217/manifest.r1.sha256
|
||||
53f051a4e416a34181ad9bcc7687f0d686274542b06d9758e2db7eb81e848811 agents/beakley/work/queue-217/manifest.r2.sha256
|
||||
f96fccc566d01d70db32188574d0b5331ef3c90bce66558449a51b3f21da1b29 agents/beakley/work/queue-217/manifest.r3.sha256
|
||||
faf8ec3e0ab458fe95120345ec93e077b0dcad9458c0f2683a20effb6ce3ed93 agents/beakley/work/queue-217/manifest.r4.sha256
|
||||
a58f0e273b60508b95c833cbace26799d7aa935117fd1f9a27812fba65b93d54 agents/beakley/work/queue-217/manifest.r5.sha256
|
||||
120b15db5eb75897095fe3d0759553e482365d58061d763beba7754a6e0d0734 agents/beakley/work/queue-217/manifest.r6.sha256
|
||||
04a9d0585b5ae4818d87d67ac27f838355f1a6f586625a16cf01d91d7bb6d4a0 agents/beakley/work/queue-217/mutants.py
|
||||
4a5f7b3373fd3ff46e2d6a5f7ee7106ad76a71c9034ca5a44b9e7340f0cc4cff agents/beakley/work/queue-217/rebase-r2.range-diff.txt
|
||||
630070b0d682120ba64b382ab3b47b3fa3e8f0bcfc695ca09432d01d705fbcb3 agents/beakley/work/queue-217/run-r2/README.md
|
||||
c4245272d5fc89c5fd3a9ea979e7d65727ea76e24364190af57556c59ad2fe34 agents/beakley/work/queue-217/run-r2/availability-green.log
|
||||
700fff38b0a99ffdb44863f13015673cb459e5e645c5df46580eafbc407c95c8 agents/beakley/work/queue-217/run-r2/bus-suite.log
|
||||
ef216d0af325c2b6647eb8405e5de70ebb5a0e7a28bb3d8fe3abc6a289a8d3d2 agents/beakley/work/queue-217/run-r2/business-suite.log
|
||||
af173117f83359ebba62c5c00eadc749bb179551a8e290bcf55bbe39b1e7272c agents/beakley/work/queue-217/run-r2/cli-suite.log
|
||||
a615f69ba60859e9d7817f3353b0d7c71e6c12eecc3ecf0f630d473be21e5fef agents/beakley/work/queue-217/run-r2/harness-suite.log
|
||||
acaa08001101fd69a12cae377984e0d469c2cedc2affb5ccf9af426a72549dcc agents/beakley/work/queue-217/run-r2/library-suite.log
|
||||
5414ce5b94e7ac7918ed64f62e5fd2b921d49c7e93cf73042b9187d014069934 agents/beakley/work/queue-217/run-r2/m1-anchors.txt
|
||||
7d7138b25568adb98932bbe180a337fe6798c3eddcd7134ce7278c24fea48818 agents/beakley/work/queue-217/run-r2/m5-driver.log
|
||||
de7dd716d3981fd9fa1d114882e60f9a83736cdb8f8e2096c3913c9f8620238a agents/beakley/work/queue-217/run-r2/m5-red/M5-hide-library-unavailable-control.log
|
||||
6b98d3943d04d99f3ef212f11901d2257422410c477abec27ed3100a0d20dad9 agents/beakley/work/queue-217/run-r2/m5-red/M5-hide-library-unavailable-restored-green.log
|
||||
a58f0e273b60508b95c833cbace26799d7aa935117fd1f9a27812fba65b93d54 agents/beakley/work/queue-217/run-r2/m5-red/M5-hide-library-unavailable-restored.sha256
|
||||
d852a464fd624ce12d8d6bdc9800402639bb500a6d40c628cb836ca1bcf1e326 agents/beakley/work/queue-217/run-r2/m5-red/M5-hide-library-unavailable.log
|
||||
7d7138b25568adb98932bbe180a337fe6798c3eddcd7134ce7278c24fea48818 agents/beakley/work/queue-217/run-r2/m5-red/summary.txt
|
||||
1c405f1f15d2ce2db37b5809cdf5eaff68f18c99c5621e1c43262a289c5e35c4 agents/beakley/work/queue-217/run-r2/mutants-driver.log
|
||||
c96487e87c1ae9e34a7222b04701c5efcce25fe201f03a0213b989f7cde2c376 agents/beakley/work/queue-217/run-r2/mutants/M1-writer-fence-control.log
|
||||
8b294ecc057ad64ace7f520a1785b54df7df5a9eddf962813c3e5f8fa723ffd4 agents/beakley/work/queue-217/run-r2/mutants/M1-writer-fence-restored-green.log
|
||||
120b15db5eb75897095fe3d0759553e482365d58061d763beba7754a6e0d0734 agents/beakley/work/queue-217/run-r2/mutants/M1-writer-fence-restored.sha256
|
||||
be749486956e85a71f08107139613e09b62c53b58e8cc10e0fbe807e95d079a6 agents/beakley/work/queue-217/run-r2/mutants/M1-writer-fence.log
|
||||
525da1cc780dfea1a66f95739d444516bd16271c7ec539d615012ec9c8e7c139 agents/beakley/work/queue-217/run-r2/mutants/M2-incoming-human-control.log
|
||||
3546705980bb4a73295f16e42ab55f38c6adca9a5c53252264ae4ef66c595dfc agents/beakley/work/queue-217/run-r2/mutants/M2-incoming-human-restored-green.log
|
||||
120b15db5eb75897095fe3d0759553e482365d58061d763beba7754a6e0d0734 agents/beakley/work/queue-217/run-r2/mutants/M2-incoming-human-restored.sha256
|
||||
77352c22c459c516ff47ff1caa42fe9763fe201a04079646b0ccc0da6a145804 agents/beakley/work/queue-217/run-r2/mutants/M2-incoming-human.log
|
||||
58de145ec0384de4f560b28dcfa76e98c384be5c771d6561fb1054f07ea8166b agents/beakley/work/queue-217/run-r2/mutants/M3-split-check-transaction-control.log
|
||||
6a4cd0ef36b0d2318ef71c941ce300d215b6d2f87d0b4328c461ba53d812434c agents/beakley/work/queue-217/run-r2/mutants/M3-split-check-transaction-restored-green.log
|
||||
120b15db5eb75897095fe3d0759553e482365d58061d763beba7754a6e0d0734 agents/beakley/work/queue-217/run-r2/mutants/M3-split-check-transaction-restored.sha256
|
||||
2deb72f2d442f413fd06e205093f6fa3f955ec6ef707b7ca65b86be8c8883f9b agents/beakley/work/queue-217/run-r2/mutants/M3-split-check-transaction.log
|
||||
31cac91f43c8b7ebe0431f27a038b0fcd554a12b232592747f3972213cfa192b agents/beakley/work/queue-217/run-r2/mutants/M4-drop-client-reason-control.log
|
||||
e06c1da8dcd9e7eb013a4597b14369e296e21b812476bd6d88c7a7aa040d4065 agents/beakley/work/queue-217/run-r2/mutants/M4-drop-client-reason-restored-green.log
|
||||
120b15db5eb75897095fe3d0759553e482365d58061d763beba7754a6e0d0734 agents/beakley/work/queue-217/run-r2/mutants/M4-drop-client-reason-restored.sha256
|
||||
66d8f72df3bc0428624dab437cb04923ecab42055d29c6ffde43af98d47f32ae agents/beakley/work/queue-217/run-r2/mutants/M4-drop-client-reason.log
|
||||
3f74fbd3b4297868b9bb637a7924739363470964873a4bd3dc2f5daf2d0e9c8a agents/beakley/work/queue-217/run-r2/mutants/M5-hide-library-unavailable-control.log
|
||||
96d95a45d5326e614328531a7dadebce5d3ce70e40ec23dd49a66c1a676b45be agents/beakley/work/queue-217/run-r2/mutants/M5-hide-library-unavailable-restored-green.log
|
||||
120b15db5eb75897095fe3d0759553e482365d58061d763beba7754a6e0d0734 agents/beakley/work/queue-217/run-r2/mutants/M5-hide-library-unavailable-restored.sha256
|
||||
fa57189e9de99c4a76be27da3b857c07fc76706f7d0ee7409ba4efd43c3642b7 agents/beakley/work/queue-217/run-r2/mutants/M5-hide-library-unavailable.log
|
||||
1c405f1f15d2ce2db37b5809cdf5eaff68f18c99c5621e1c43262a289c5e35c4 agents/beakley/work/queue-217/run-r2/mutants/summary.txt
|
||||
862418d3d4124871ca5fcaf35e16c318a04e2888da83836751ddfea110efeb06 agents/beakley/work/queue-217/run-r2/npm-root.log
|
||||
38b75d8bddacf8d227883a29dd8a10f87a7f02d8a95f3f8809cb966fc9c8cf7a agents/beakley/work/queue-217/run-r2/npm-webui.log
|
||||
7f29b5a328fd6be61ebc4110a048305b50856810ab97a7798cd427924d74e8c9 agents/beakley/work/queue-217/run-r2/runtime-fixture-retry.log
|
||||
3bd51fe222a61412e8285eb522a2f7b5c1b0b035f7dca0e9ff66190bd53e6706 agents/beakley/work/queue-217/run-r2/seat-suite.log
|
||||
8b98c6ba76de46ddd858b4b95bae7bce2d1bf969edb85901ad8819e1280869a1 agents/beakley/work/queue-217/run-r2/summary.json
|
||||
e374cb7ab28a46dd560b267b0fe6691b11c0c2fabd00087c4e49a02ab1bf8086 agents/beakley/work/queue-217/run-r2/summary.txt
|
||||
ad2022c7ccdfa151e029eed92cd309369a97f197d9304775f6d2be3dc5f11080 agents/beakley/work/queue-217/run-r2/touched-first.log
|
||||
e1fe5ebae1a36f196470848bf27b99c21d316c9236a1d1328d7bcaca0ee4d3e9 agents/beakley/work/queue-217/run-r2/touched-rerun.log
|
||||
0c1b1f079b4b993e8d1aeb730d743e28696413eae8be6dd79731d749d1d45d0b agents/launchpad/work/queue-217/BUILD.md
|
||||
76b0a5785f134c09cda677e8f5fb3e7454b39883c4a6f55360d9d277476fcd2c docs/SESSIONS.md
|
||||
eeca81ab965f9e94f930ee5f51d16f019af6368bc6c3994895e204f7a54ec8d2 packages/bus/src/broker.mjs
|
||||
ad3c686a089f67f3c89610937c6fc9b32367cea5d9735125d89bef042082d4e8 packages/bus/src/client.mjs
|
||||
36b05dd3119e5929211aa1cc5d45c5043f5a1c34567ddc7cac8f002835d44abe packages/bus/src/runtime.mjs
|
||||
66b26d131a19f4f411686427274936850c1ff0aed11e9b281ae4aadcf4b289fc packages/bus/src/server.mjs
|
||||
cdd0304ec25ef1ad3e31c52502fa46f2c80bd77c8d3c2e13f8ed4b5328f342c9 packages/bus/tests/citation-availability.test.mjs
|
||||
2e05074cd9d15d810103658af3858161cee2af78b0a2e1ba910222fab3e84401 packages/bus/tests/citation-guard.test.mjs
|
||||
2c7a2102e2e0244876e41b664f4f706baefe3375100b956655551db1230f5da3 packages/bus/tests/citation-helpers.mjs
|
||||
9768b6dc5ae078c5cc4f76473097287b74c5bc5853d39e1f57f153e646f861af packages/bus/tests/citation-runtime.test.mjs
|
||||
abaeac64f2c3bf8ba83c9a4488edd9105c4707a6564560c5333d5421445653af packages/business/src/business.mjs
|
||||
3a6044de5d1ca2cc35c5285b460c3e402b4274837e5d88b97f489797f6004903 packages/business/src/organization.mjs
|
||||
4d2eb11beaa80175e524af1b95c81e7164990fba1d3e1754f5ba06eee390a14f packages/business/tests/reply-limits.test.mjs
|
||||
a2bb98734bcc2556f8b2168f0faf8a89f7064c3f0aa49feb7d1975d596192f09 packages/cli/README.md
|
||||
2f291a71f490f2741edada7a3e3788500f8976a08eb8ab1411f6c5982f778260 packages/cli/src/limits.mjs
|
||||
f38af2d46d5f5f6388f599912507b94b87a0bf9dcc2104bb2187c38ee35118d5 packages/cli/tests/reply-limits.test.mjs
|
||||
6ad72b4245e0a66e32725941900c1ece64c2e5de2fb73d65c8e042b4f3a691a6 packages/harness/src/runner.mjs
|
||||
a5ef1b65230239a7baf6d0e8f2b8a51c0516348c7c4339a55b3f0a1a6ff531ba packages/harness/tests/citation-runner.test.mjs
|
||||
330bc71bf6c7e64d3ddb70440903d2d9acf7878d44a49d7e30c2352ee4c807ec packages/harness/tests/fixtures/citation-adapter.mjs
|
||||
f710d9600a17f6e2989a289cfe84e58f161d86c7306605946ce05fa71b364eb2 packages/library/src/guard.mjs
|
||||
c0d630798914e300e461c247340533328e97119e54909c6a9406340e61fed8b7 packages/library/src/index.mjs
|
||||
98ef45ed61144aaea44d8aea1ac43082b6d340297e46846d01772da38728e530 packages/library/src/limits.mjs
|
||||
7b46f47b5e9d6b554b5d39bce2cd95c4610f5f35b8ab8fdc5a2864b3214be809 packages/library/src/reply-protocol.mjs
|
||||
406146ebbce3710f308243b684a1c17e7626c1b65a4468489364317e31537a48 packages/library/tests/guard.test.mjs
|
||||
39c8e6c8250a13fa43015fb2c407195e30ee642f729a9f6a644c38b4ea758a72 packages/seat/src/sandbox.mjs
|
||||
@@ -0,0 +1,21 @@
|
||||
68c05644d29188b897e2d4695d8e7025e143d424d69a91bc07bc950f589d34bf packages/bus/src/broker.mjs
|
||||
ad3c686a089f67f3c89610937c6fc9b32367cea5d9735125d89bef042082d4e8 packages/bus/src/client.mjs
|
||||
49e01e5e73cc3e830ad48a1b6b13fe4d06a38950f17847dc049b75209d6d3f0a packages/bus/src/runtime.mjs
|
||||
66b26d131a19f4f411686427274936850c1ff0aed11e9b281ae4aadcf4b289fc packages/bus/src/server.mjs
|
||||
29114051a9bc5271e48978a9552d64b51b0ac4810f94a1f98940bf617b148df8 packages/bus/tests/citation-guard.test.mjs
|
||||
dc2d5836f10f591fc174aaf9587a3bff793b24ac29efe9ab68c6a9243d1d1c2c packages/bus/tests/citation-helpers.mjs
|
||||
825da818ba3cf45a4837f0f15a9c2cdba55a3d0bbb4479d55236f35799427c6f packages/business/src/business.mjs
|
||||
dbd79a4dfc926620d034b540f98f39336d81e4c79f214424c3cf19250c1d1f8d packages/business/src/organization.mjs
|
||||
bec04a894bc2af000548283ed7719e4de1c6d56688f42238a113390e9b2d3fbe packages/business/tests/reply-limits.test.mjs
|
||||
1f1bea250f694a2aae9b9dc856b3c3424ceca153ccf826c99ccb98e6ea9cd394 packages/cli/README.md
|
||||
2f291a71f490f2741edada7a3e3788500f8976a08eb8ab1411f6c5982f778260 packages/cli/src/limits.mjs
|
||||
f38af2d46d5f5f6388f599912507b94b87a0bf9dcc2104bb2187c38ee35118d5 packages/cli/tests/reply-limits.test.mjs
|
||||
6ad72b4245e0a66e32725941900c1ece64c2e5de2fb73d65c8e042b4f3a691a6 packages/harness/src/runner.mjs
|
||||
ec7ef0cbf493217eb9229895cae2fe7ef603f41913840e59a73220df387c81ca packages/harness/tests/citation-runner.test.mjs
|
||||
330bc71bf6c7e64d3ddb70440903d2d9acf7878d44a49d7e30c2352ee4c807ec packages/harness/tests/fixtures/citation-adapter.mjs
|
||||
0365114cf5773cbaa9fba196fbd1e773b2ec5ad2300c40231c357ca58884b9e3 packages/library/src/guard.mjs
|
||||
aaa8f7ba60a729a88a6ef57b3d5ff5a69bcf0e17b60e7db51a8dc5a697627b6c packages/library/src/index.mjs
|
||||
3e04fa25a64334d33ffbec704205b32cd01992f2d341e908f933a345199beee0 packages/library/src/limits.mjs
|
||||
c9e682eff87e822647921288d7fce0ebdc7b09f0a6dfdd6528f10249ae26e81b packages/library/src/reply-protocol.mjs
|
||||
dd056409712113eb9c1b70e29b21022f5b30df6ffbfb2658e293edd6ec7195c7 packages/library/tests/guard.test.mjs
|
||||
2f3ec99129d16394d4458e252b9cba4e38ff66cd9393e3889f8afc3140e15a8e packages/seat/src/sandbox.mjs
|
||||
@@ -0,0 +1,23 @@
|
||||
68c05644d29188b897e2d4695d8e7025e143d424d69a91bc07bc950f589d34bf packages/bus/src/broker.mjs
|
||||
ad3c686a089f67f3c89610937c6fc9b32367cea5d9735125d89bef042082d4e8 packages/bus/src/client.mjs
|
||||
49e01e5e73cc3e830ad48a1b6b13fe4d06a38950f17847dc049b75209d6d3f0a packages/bus/src/runtime.mjs
|
||||
66b26d131a19f4f411686427274936850c1ff0aed11e9b281ae4aadcf4b289fc packages/bus/src/server.mjs
|
||||
cdd0304ec25ef1ad3e31c52502fa46f2c80bd77c8d3c2e13f8ed4b5328f342c9 packages/bus/tests/citation-availability.test.mjs
|
||||
8dc344b8a905c58d544b031ca84adb7eb869d9de88eb8e6b0fc1d9190702a38a packages/bus/tests/citation-guard.test.mjs
|
||||
62d8a55945d4b700e22c8c49b6420a5e25719d266901a2ad20c72514735e65e9 packages/bus/tests/citation-helpers.mjs
|
||||
168dcac99d9bfdfdf5ff0eaa2c0fff91595b351b4d0092dc299532c9c32869f0 packages/bus/tests/citation-runtime.test.mjs
|
||||
825da818ba3cf45a4837f0f15a9c2cdba55a3d0bbb4479d55236f35799427c6f packages/business/src/business.mjs
|
||||
dbd79a4dfc926620d034b540f98f39336d81e4c79f214424c3cf19250c1d1f8d packages/business/src/organization.mjs
|
||||
4d2eb11beaa80175e524af1b95c81e7164990fba1d3e1754f5ba06eee390a14f packages/business/tests/reply-limits.test.mjs
|
||||
1f1bea250f694a2aae9b9dc856b3c3424ceca153ccf826c99ccb98e6ea9cd394 packages/cli/README.md
|
||||
2f291a71f490f2741edada7a3e3788500f8976a08eb8ab1411f6c5982f778260 packages/cli/src/limits.mjs
|
||||
f38af2d46d5f5f6388f599912507b94b87a0bf9dcc2104bb2187c38ee35118d5 packages/cli/tests/reply-limits.test.mjs
|
||||
6ad72b4245e0a66e32725941900c1ece64c2e5de2fb73d65c8e042b4f3a691a6 packages/harness/src/runner.mjs
|
||||
a5ef1b65230239a7baf6d0e8f2b8a51c0516348c7c4339a55b3f0a1a6ff531ba packages/harness/tests/citation-runner.test.mjs
|
||||
330bc71bf6c7e64d3ddb70440903d2d9acf7878d44a49d7e30c2352ee4c807ec packages/harness/tests/fixtures/citation-adapter.mjs
|
||||
0365114cf5773cbaa9fba196fbd1e773b2ec5ad2300c40231c357ca58884b9e3 packages/library/src/guard.mjs
|
||||
aaa8f7ba60a729a88a6ef57b3d5ff5a69bcf0e17b60e7db51a8dc5a697627b6c packages/library/src/index.mjs
|
||||
3e04fa25a64334d33ffbec704205b32cd01992f2d341e908f933a345199beee0 packages/library/src/limits.mjs
|
||||
c9e682eff87e822647921288d7fce0ebdc7b09f0a6dfdd6528f10249ae26e81b packages/library/src/reply-protocol.mjs
|
||||
dd056409712113eb9c1b70e29b21022f5b30df6ffbfb2658e293edd6ec7195c7 packages/library/tests/guard.test.mjs
|
||||
2f3ec99129d16394d4458e252b9cba4e38ff66cd9393e3889f8afc3140e15a8e packages/seat/src/sandbox.mjs
|
||||
@@ -0,0 +1,23 @@
|
||||
68c05644d29188b897e2d4695d8e7025e143d424d69a91bc07bc950f589d34bf packages/bus/src/broker.mjs
|
||||
ad3c686a089f67f3c89610937c6fc9b32367cea5d9735125d89bef042082d4e8 packages/bus/src/client.mjs
|
||||
49e01e5e73cc3e830ad48a1b6b13fe4d06a38950f17847dc049b75209d6d3f0a packages/bus/src/runtime.mjs
|
||||
66b26d131a19f4f411686427274936850c1ff0aed11e9b281ae4aadcf4b289fc packages/bus/src/server.mjs
|
||||
cdd0304ec25ef1ad3e31c52502fa46f2c80bd77c8d3c2e13f8ed4b5328f342c9 packages/bus/tests/citation-availability.test.mjs
|
||||
8dc344b8a905c58d544b031ca84adb7eb869d9de88eb8e6b0fc1d9190702a38a packages/bus/tests/citation-guard.test.mjs
|
||||
8a2d4b636f8d4f926c484254c33ecf7b7e4722acef3250d2730593984d5ac06b packages/bus/tests/citation-helpers.mjs
|
||||
168dcac99d9bfdfdf5ff0eaa2c0fff91595b351b4d0092dc299532c9c32869f0 packages/bus/tests/citation-runtime.test.mjs
|
||||
825da818ba3cf45a4837f0f15a9c2cdba55a3d0bbb4479d55236f35799427c6f packages/business/src/business.mjs
|
||||
dbd79a4dfc926620d034b540f98f39336d81e4c79f214424c3cf19250c1d1f8d packages/business/src/organization.mjs
|
||||
4d2eb11beaa80175e524af1b95c81e7164990fba1d3e1754f5ba06eee390a14f packages/business/tests/reply-limits.test.mjs
|
||||
1f1bea250f694a2aae9b9dc856b3c3424ceca153ccf826c99ccb98e6ea9cd394 packages/cli/README.md
|
||||
2f291a71f490f2741edada7a3e3788500f8976a08eb8ab1411f6c5982f778260 packages/cli/src/limits.mjs
|
||||
f38af2d46d5f5f6388f599912507b94b87a0bf9dcc2104bb2187c38ee35118d5 packages/cli/tests/reply-limits.test.mjs
|
||||
6ad72b4245e0a66e32725941900c1ece64c2e5de2fb73d65c8e042b4f3a691a6 packages/harness/src/runner.mjs
|
||||
a5ef1b65230239a7baf6d0e8f2b8a51c0516348c7c4339a55b3f0a1a6ff531ba packages/harness/tests/citation-runner.test.mjs
|
||||
330bc71bf6c7e64d3ddb70440903d2d9acf7878d44a49d7e30c2352ee4c807ec packages/harness/tests/fixtures/citation-adapter.mjs
|
||||
0365114cf5773cbaa9fba196fbd1e773b2ec5ad2300c40231c357ca58884b9e3 packages/library/src/guard.mjs
|
||||
aaa8f7ba60a729a88a6ef57b3d5ff5a69bcf0e17b60e7db51a8dc5a697627b6c packages/library/src/index.mjs
|
||||
3e04fa25a64334d33ffbec704205b32cd01992f2d341e908f933a345199beee0 packages/library/src/limits.mjs
|
||||
c9e682eff87e822647921288d7fce0ebdc7b09f0a6dfdd6528f10249ae26e81b packages/library/src/reply-protocol.mjs
|
||||
dd056409712113eb9c1b70e29b21022f5b30df6ffbfb2658e293edd6ec7195c7 packages/library/tests/guard.test.mjs
|
||||
2f3ec99129d16394d4458e252b9cba4e38ff66cd9393e3889f8afc3140e15a8e packages/seat/src/sandbox.mjs
|
||||
@@ -0,0 +1,23 @@
|
||||
eeca81ab965f9e94f930ee5f51d16f019af6368bc6c3994895e204f7a54ec8d2 packages/bus/src/broker.mjs
|
||||
ad3c686a089f67f3c89610937c6fc9b32367cea5d9735125d89bef042082d4e8 packages/bus/src/client.mjs
|
||||
36b05dd3119e5929211aa1cc5d45c5043f5a1c34567ddc7cac8f002835d44abe packages/bus/src/runtime.mjs
|
||||
66b26d131a19f4f411686427274936850c1ff0aed11e9b281ae4aadcf4b289fc packages/bus/src/server.mjs
|
||||
cdd0304ec25ef1ad3e31c52502fa46f2c80bd77c8d3c2e13f8ed4b5328f342c9 packages/bus/tests/citation-availability.test.mjs
|
||||
2e05074cd9d15d810103658af3858161cee2af78b0a2e1ba910222fab3e84401 packages/bus/tests/citation-guard.test.mjs
|
||||
2c7a2102e2e0244876e41b664f4f706baefe3375100b956655551db1230f5da3 packages/bus/tests/citation-helpers.mjs
|
||||
168dcac99d9bfdfdf5ff0eaa2c0fff91595b351b4d0092dc299532c9c32869f0 packages/bus/tests/citation-runtime.test.mjs
|
||||
abaeac64f2c3bf8ba83c9a4488edd9105c4707a6564560c5333d5421445653af packages/business/src/business.mjs
|
||||
3a6044de5d1ca2cc35c5285b460c3e402b4274837e5d88b97f489797f6004903 packages/business/src/organization.mjs
|
||||
4d2eb11beaa80175e524af1b95c81e7164990fba1d3e1754f5ba06eee390a14f packages/business/tests/reply-limits.test.mjs
|
||||
a2bb98734bcc2556f8b2168f0faf8a89f7064c3f0aa49feb7d1975d596192f09 packages/cli/README.md
|
||||
2f291a71f490f2741edada7a3e3788500f8976a08eb8ab1411f6c5982f778260 packages/cli/src/limits.mjs
|
||||
f38af2d46d5f5f6388f599912507b94b87a0bf9dcc2104bb2187c38ee35118d5 packages/cli/tests/reply-limits.test.mjs
|
||||
6ad72b4245e0a66e32725941900c1ece64c2e5de2fb73d65c8e042b4f3a691a6 packages/harness/src/runner.mjs
|
||||
a5ef1b65230239a7baf6d0e8f2b8a51c0516348c7c4339a55b3f0a1a6ff531ba packages/harness/tests/citation-runner.test.mjs
|
||||
330bc71bf6c7e64d3ddb70440903d2d9acf7878d44a49d7e30c2352ee4c807ec packages/harness/tests/fixtures/citation-adapter.mjs
|
||||
f710d9600a17f6e2989a289cfe84e58f161d86c7306605946ce05fa71b364eb2 packages/library/src/guard.mjs
|
||||
c0d630798914e300e461c247340533328e97119e54909c6a9406340e61fed8b7 packages/library/src/index.mjs
|
||||
3e04fa25a64334d33ffbec704205b32cd01992f2d341e908f933a345199beee0 packages/library/src/limits.mjs
|
||||
7b46f47b5e9d6b554b5d39bce2cd95c4610f5f35b8ab8fdc5a2864b3214be809 packages/library/src/reply-protocol.mjs
|
||||
406146ebbce3710f308243b684a1c17e7626c1b65a4468489364317e31537a48 packages/library/tests/guard.test.mjs
|
||||
39c8e6c8250a13fa43015fb2c407195e30ee642f729a9f6a644c38b4ea758a72 packages/seat/src/sandbox.mjs
|
||||
@@ -0,0 +1,23 @@
|
||||
eeca81ab965f9e94f930ee5f51d16f019af6368bc6c3994895e204f7a54ec8d2 packages/bus/src/broker.mjs
|
||||
ad3c686a089f67f3c89610937c6fc9b32367cea5d9735125d89bef042082d4e8 packages/bus/src/client.mjs
|
||||
36b05dd3119e5929211aa1cc5d45c5043f5a1c34567ddc7cac8f002835d44abe packages/bus/src/runtime.mjs
|
||||
66b26d131a19f4f411686427274936850c1ff0aed11e9b281ae4aadcf4b289fc packages/bus/src/server.mjs
|
||||
cdd0304ec25ef1ad3e31c52502fa46f2c80bd77c8d3c2e13f8ed4b5328f342c9 packages/bus/tests/citation-availability.test.mjs
|
||||
2e05074cd9d15d810103658af3858161cee2af78b0a2e1ba910222fab3e84401 packages/bus/tests/citation-guard.test.mjs
|
||||
2c7a2102e2e0244876e41b664f4f706baefe3375100b956655551db1230f5da3 packages/bus/tests/citation-helpers.mjs
|
||||
168dcac99d9bfdfdf5ff0eaa2c0fff91595b351b4d0092dc299532c9c32869f0 packages/bus/tests/citation-runtime.test.mjs
|
||||
abaeac64f2c3bf8ba83c9a4488edd9105c4707a6564560c5333d5421445653af packages/business/src/business.mjs
|
||||
3a6044de5d1ca2cc35c5285b460c3e402b4274837e5d88b97f489797f6004903 packages/business/src/organization.mjs
|
||||
4d2eb11beaa80175e524af1b95c81e7164990fba1d3e1754f5ba06eee390a14f packages/business/tests/reply-limits.test.mjs
|
||||
a2bb98734bcc2556f8b2168f0faf8a89f7064c3f0aa49feb7d1975d596192f09 packages/cli/README.md
|
||||
2f291a71f490f2741edada7a3e3788500f8976a08eb8ab1411f6c5982f778260 packages/cli/src/limits.mjs
|
||||
f38af2d46d5f5f6388f599912507b94b87a0bf9dcc2104bb2187c38ee35118d5 packages/cli/tests/reply-limits.test.mjs
|
||||
6ad72b4245e0a66e32725941900c1ece64c2e5de2fb73d65c8e042b4f3a691a6 packages/harness/src/runner.mjs
|
||||
a5ef1b65230239a7baf6d0e8f2b8a51c0516348c7c4339a55b3f0a1a6ff531ba packages/harness/tests/citation-runner.test.mjs
|
||||
330bc71bf6c7e64d3ddb70440903d2d9acf7878d44a49d7e30c2352ee4c807ec packages/harness/tests/fixtures/citation-adapter.mjs
|
||||
f710d9600a17f6e2989a289cfe84e58f161d86c7306605946ce05fa71b364eb2 packages/library/src/guard.mjs
|
||||
c0d630798914e300e461c247340533328e97119e54909c6a9406340e61fed8b7 packages/library/src/index.mjs
|
||||
98ef45ed61144aaea44d8aea1ac43082b6d340297e46846d01772da38728e530 packages/library/src/limits.mjs
|
||||
7b46f47b5e9d6b554b5d39bce2cd95c4610f5f35b8ab8fdc5a2864b3214be809 packages/library/src/reply-protocol.mjs
|
||||
406146ebbce3710f308243b684a1c17e7626c1b65a4468489364317e31537a48 packages/library/tests/guard.test.mjs
|
||||
39c8e6c8250a13fa43015fb2c407195e30ee642f729a9f6a644c38b4ea758a72 packages/seat/src/sandbox.mjs
|
||||
@@ -0,0 +1,23 @@
|
||||
eeca81ab965f9e94f930ee5f51d16f019af6368bc6c3994895e204f7a54ec8d2 packages/bus/src/broker.mjs
|
||||
ad3c686a089f67f3c89610937c6fc9b32367cea5d9735125d89bef042082d4e8 packages/bus/src/client.mjs
|
||||
36b05dd3119e5929211aa1cc5d45c5043f5a1c34567ddc7cac8f002835d44abe packages/bus/src/runtime.mjs
|
||||
66b26d131a19f4f411686427274936850c1ff0aed11e9b281ae4aadcf4b289fc packages/bus/src/server.mjs
|
||||
cdd0304ec25ef1ad3e31c52502fa46f2c80bd77c8d3c2e13f8ed4b5328f342c9 packages/bus/tests/citation-availability.test.mjs
|
||||
2e05074cd9d15d810103658af3858161cee2af78b0a2e1ba910222fab3e84401 packages/bus/tests/citation-guard.test.mjs
|
||||
2c7a2102e2e0244876e41b664f4f706baefe3375100b956655551db1230f5da3 packages/bus/tests/citation-helpers.mjs
|
||||
9768b6dc5ae078c5cc4f76473097287b74c5bc5853d39e1f57f153e646f861af packages/bus/tests/citation-runtime.test.mjs
|
||||
abaeac64f2c3bf8ba83c9a4488edd9105c4707a6564560c5333d5421445653af packages/business/src/business.mjs
|
||||
3a6044de5d1ca2cc35c5285b460c3e402b4274837e5d88b97f489797f6004903 packages/business/src/organization.mjs
|
||||
4d2eb11beaa80175e524af1b95c81e7164990fba1d3e1754f5ba06eee390a14f packages/business/tests/reply-limits.test.mjs
|
||||
a2bb98734bcc2556f8b2168f0faf8a89f7064c3f0aa49feb7d1975d596192f09 packages/cli/README.md
|
||||
2f291a71f490f2741edada7a3e3788500f8976a08eb8ab1411f6c5982f778260 packages/cli/src/limits.mjs
|
||||
f38af2d46d5f5f6388f599912507b94b87a0bf9dcc2104bb2187c38ee35118d5 packages/cli/tests/reply-limits.test.mjs
|
||||
6ad72b4245e0a66e32725941900c1ece64c2e5de2fb73d65c8e042b4f3a691a6 packages/harness/src/runner.mjs
|
||||
a5ef1b65230239a7baf6d0e8f2b8a51c0516348c7c4339a55b3f0a1a6ff531ba packages/harness/tests/citation-runner.test.mjs
|
||||
330bc71bf6c7e64d3ddb70440903d2d9acf7878d44a49d7e30c2352ee4c807ec packages/harness/tests/fixtures/citation-adapter.mjs
|
||||
f710d9600a17f6e2989a289cfe84e58f161d86c7306605946ce05fa71b364eb2 packages/library/src/guard.mjs
|
||||
c0d630798914e300e461c247340533328e97119e54909c6a9406340e61fed8b7 packages/library/src/index.mjs
|
||||
98ef45ed61144aaea44d8aea1ac43082b6d340297e46846d01772da38728e530 packages/library/src/limits.mjs
|
||||
7b46f47b5e9d6b554b5d39bce2cd95c4610f5f35b8ab8fdc5a2864b3214be809 packages/library/src/reply-protocol.mjs
|
||||
406146ebbce3710f308243b684a1c17e7626c1b65a4468489364317e31537a48 packages/library/tests/guard.test.mjs
|
||||
39c8e6c8250a13fa43015fb2c407195e30ee642f729a9f6a644c38b4ea758a72 packages/seat/src/sandbox.mjs
|
||||
@@ -0,0 +1,90 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Run only on Sage CLEAR. Mutate isolated HEAD archives; never edit the checkout.
|
||||
|
||||
A green control run is required before each negative result counts as a kill.
|
||||
Usage: python3 agents/beakley/work/queue-217/mutants.py OUTPUT_DIRECTORY
|
||||
"""
|
||||
from pathlib import Path
|
||||
import io
|
||||
import hashlib
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
import tarfile
|
||||
import tempfile
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[4]
|
||||
OUT = Path(sys.argv[1]).resolve()
|
||||
OUT.mkdir(parents=True, exist_ok=True)
|
||||
WRITER = "packages/business/src/organization.mjs"
|
||||
BROKER = "packages/bus/src/broker.mjs"
|
||||
CLIENT = "packages/bus/src/client.mjs"
|
||||
ATOMIC = "if (check) this.#event(s, 'action.allowed', { action: 'message.checked', message: mid, check }, mid, checkEventId(mid));"
|
||||
REENTER = "return this.#reenter(cap, s, { verb: 'message.send', args }, check);"
|
||||
SPLIT = """const result = this.#reenter(cap, s, { verb: 'message.send', args }, check);
|
||||
if (check) this.#store.transaction(() => this.#event(s, 'action.allowed', { action: 'message.checked', message: result.id, check }, result.id, checkEventId(result.id)));
|
||||
return result;"""
|
||||
MUTANTS = [
|
||||
("M1-writer-fence", [(WRITER, " replyLimitsFence(old, document, actor);", ""),
|
||||
(WRITER, " replyLimitsFence(old, written, actor);", "")],
|
||||
["packages/business/tests/reply-limits.test.mjs"]),
|
||||
("M2-incoming-human", [(WRITER, "actor === old.human", "actor === document.human")],
|
||||
["packages/business/tests/reply-limits.test.mjs"]),
|
||||
("M3-split-check-transaction", [(BROKER, ATOMIC, ""), (BROKER, REENTER, SPLIT)],
|
||||
["packages/bus/tests/citation-guard.test.mjs"]),
|
||||
("M5-hide-library-unavailable", [("packages/library/src/guard.mjs",
|
||||
"refuse('citation-unavailable', 'The library is busy or unavailable. Retry the answer when the library is available.');",
|
||||
"served = null;")], ["packages/bus/tests/citation-availability.test.mjs"]),
|
||||
("M4-drop-client-reason", [(CLIENT, "new BusError(r.error, typeof r.reason === 'string' ? r.reason.slice(0, 300) : undefined)", "new BusError(r.error)")],
|
||||
["packages/bus/tests/citation-guard.test.mjs"]),
|
||||
]
|
||||
|
||||
archive = subprocess.check_output(["git", "archive", "HEAD", "packages", "roles", "scripts", "tools", "docs", "package.json", "RELEASE"], cwd=ROOT)
|
||||
summary = []
|
||||
selected = set(sys.argv[2:])
|
||||
product_files = [line.split(' ', 1)[1] for line in (ROOT / 'agents/beakley/work/queue-217/manifest.r5.sha256').read_text().splitlines()]
|
||||
def hashes(base, files):
|
||||
return {file: hashlib.sha256((base / file).read_bytes()).hexdigest() for file in files}
|
||||
original_products = hashes(ROOT, product_files)
|
||||
for name, changes, tests in MUTANTS:
|
||||
if selected and name not in selected:
|
||||
continue
|
||||
with tempfile.TemporaryDirectory(prefix="row217-mutant-") as directory:
|
||||
work = Path(directory)
|
||||
with tarfile.open(fileobj=io.BytesIO(archive)) as source:
|
||||
source.extractall(work, filter="data")
|
||||
modules = ROOT / "node_modules"
|
||||
if modules.is_symlink():
|
||||
raise SystemExit('root node_modules must be a local install, never a canonical link')
|
||||
if modules.exists():
|
||||
os.symlink(modules.resolve(), work / "node_modules", target_is_directory=True)
|
||||
cmd = ["timeout", "-k", "10", "120", "node", "--test", *tests]
|
||||
with (OUT / f"{name}-control.log").open("w") as log:
|
||||
control = subprocess.run(cmd, cwd=work, stdout=log, stderr=subprocess.STDOUT, timeout=120)
|
||||
if control.returncode:
|
||||
raise SystemExit(f"{name}: control RED, no mutant result claimed")
|
||||
originals = {file: (work / file).read_bytes() for file, _, _ in changes}
|
||||
try:
|
||||
for file, before, after in changes:
|
||||
path = work / file
|
||||
text = path.read_text()
|
||||
if text.count(before) != 1:
|
||||
raise SystemExit(f"{name}: expected exactly one mutation anchor in {file}")
|
||||
path.write_text(text.replace(before, after))
|
||||
with (OUT / f"{name}.log").open("w") as log:
|
||||
mutant = subprocess.run(cmd, cwd=work, stdout=log, stderr=subprocess.STDOUT, timeout=140)
|
||||
if mutant.returncode != 1:
|
||||
raise SystemExit(f"{name}: expected assertion failure exit 1, got {mutant.returncode}")
|
||||
finally:
|
||||
for file, content in originals.items():
|
||||
(work / file).write_bytes(content)
|
||||
assert all((work / file).read_bytes() == content for file, content in originals.items())
|
||||
assert hashes(ROOT, product_files) == original_products, 'checkout product hashes changed'
|
||||
(OUT / f"{name}-restored.sha256").write_text(''.join(f'{digest} {file}\n' for file, digest in sorted(original_products.items())))
|
||||
with (OUT / f"{name}-restored-green.log").open("w") as log:
|
||||
restored = subprocess.run(cmd, cwd=work, stdout=log, stderr=subprocess.STDOUT, timeout=140)
|
||||
if restored.returncode:
|
||||
raise SystemExit(f"{name}: restored control RED")
|
||||
summary.append(f"{name}: killed (control green, mutant exit {mutant.returncode}, hashes restored, restored green)")
|
||||
(OUT / "summary.txt").write_text("\n".join(summary) + "\n")
|
||||
print(summary[-1], flush=True)
|
||||
@@ -0,0 +1,112 @@
|
||||
1: e25ef0373 ! 1: b9ef816ff launchpad: row 217 C2-06 work in progress, UNTESTED, handed to Beakley (mos-1500)
|
||||
@@ packages/bus/src/broker.mjs: export class Broker {
|
||||
if (CREDENTIAL_VERBS.includes(request.verb)) return this.#requestCredential(s, request.verb, structuredClone(args));
|
||||
if (request.verb === 'instance.hire' || request.verb === 'instance.fire')
|
||||
return this.#chiefLifecycle(s, request.verb, structuredClone(args));
|
||||
+ if (request.verb === 'grants.scope' || request.verb === 'grants.scope.set')
|
||||
+ return this.#grantScopeVerb(s, request.verb, structuredClone(args));
|
||||
- if (["limits", "limits.set", "organization.set", "organization.revision", "plugins", "plugins.set", "instances", "instances.set", "routes", "routes.set", "veto.set"].includes(request.verb)) {
|
||||
+ if (["limits", "limits.set", "organization.set", "organization.revision", "plugins", "plugins.set", "instances", "instances.set", "routes", "routes.set", "veto.set", "library.limits.set"].includes(request.verb)) {
|
||||
// Row 123 (#1617, REQ-COS-1, REQ-LIMIT-1): organization.set is limits.set for a role whose
|
||||
@@ packages/bus/src/runtime.mjs: export async function startBroker({
|
||||
project: {
|
||||
readSpec: context => projectModule.readSpec({ ...context, dataRoot }),
|
||||
@@ packages/bus/src/runtime.mjs: export async function startBroker({
|
||||
- else if(verb==='plugins.set')result=plugins.set(id,args,actor);
|
||||
- // Row 194 (#1692, V6): the human's keep and noHire lists, through the instance writer.
|
||||
else if(verb==='veto.set')result=instances.veto(id,args,actor);
|
||||
+ // Row 298: the human's grant scope, through the instance writer.
|
||||
+ else if(verb==='grants.scope.set')result=instances.grantScope(id,args,actor);
|
||||
+ // C2-06 M11: the human's replyLimits, through the organization writer's fence.
|
||||
+ else if(verb==='library.limits.set')result=setReplyLimits(organizationWriter({dir:organization.dir,rolesDir:organization.rolesDir}),id,args,actor);
|
||||
// Row 194 (D2.1, D2.2): the chief's hire and fire, with the reason in the change context.
|
||||
@@ packages/business/src/organization.mjs: export function organizationWriter({ dir
|
||||
const parent = join(dir, "businesses");
|
||||
directory(evidence);
|
||||
@@ packages/business/src/organization.mjs: export function organizationWriter({ dir, rolesDir, barrier = () => {} }) {
|
||||
- // mapping, including library playgrounds and hybrid universes.
|
||||
- if (canonicalJson(document?.projects) !== canonicalJson(old.projects))
|
||||
- fail('organization-projects-protected');
|
||||
-+ replyLimitsFence(old, document, actor);
|
||||
- validateBusinessDocument(document, file, { rolesDir });
|
||||
- const bytes = JSON.stringify(document, null, 2) + "\n";
|
||||
- // Check and log exactly what lands on disk, for every setter: a value JSON
|
||||
+ // mapping, including library playgrounds and hybrid universes.
|
||||
+ if (canonicalJson(document?.projects) !== canonicalJson(old.projects))
|
||||
+ fail('organization-projects-protected');
|
||||
++ replyLimitsFence(old, document, actor);
|
||||
+ validateBusinessDocument(document, file, { rolesDir });
|
||||
+ const bytes = JSON.stringify(document, null, 2) + "\n";
|
||||
+ // Check and log exactly what lands on disk, for every setter: a value JSON
|
||||
@@ packages/business/src/organization.mjs: export function organizationWriter({ dir, rolesDir, barrier = () => {} }) {
|
||||
- const written = JSON.parse(bytes);
|
||||
- if (canonicalJson(written.projects) !== canonicalJson(old.projects))
|
||||
- fail('organization-projects-protected');
|
||||
-+ replyLimitsFence(old, written, actor);
|
||||
- validateBusinessDocument(written, file, { rolesDir });
|
||||
- const after = sha256(bytes);
|
||||
- const transaction = randomUUID();
|
||||
+ const written = JSON.parse(bytes);
|
||||
+ if (canonicalJson(written.projects) !== canonicalJson(old.projects))
|
||||
+ fail('organization-projects-protected');
|
||||
++ replyLimitsFence(old, written, actor);
|
||||
+ validateBusinessDocument(written, file, { rolesDir });
|
||||
+ if (beforeWrite) {
|
||||
+ beforeWrite();
|
||||
@@ packages/business/src/organization.mjs: export function organizationWriter({ dir, rolesDir, barrier = () => {} }) {
|
||||
});
|
||||
}
|
||||
@@ packages/library/src/guard.mjs (new)
|
||||
+}
|
||||
|
||||
## packages/library/src/index.mjs ##
|
||||
-@@ packages/library/src/index.mjs: export { renderItems, KINDS, NOTICES, UNREADABLE } from './render.mjs';
|
||||
- export { survey, formatSurvey, surveyMain } from './survey.mjs';
|
||||
- export { SYNC_STATE_FILE, mirrorPath, ensureMirror, withLibraryLock, servedCommit, readSyncState, libraryStatus, readLibraryFile } from './mirror.mjs';
|
||||
+@@ packages/library/src/index.mjs: export { SYNC_STATE_FILE, mirrorPath, ensureMirror, withLibraryLock, servedCommi
|
||||
export { syncCommand, sync, ASKPASS, SLOT, SYNC_INTERVAL_MS } from './sync.mjs';
|
||||
+ export { buildIndex, indexFor, clearIndexCache, indexCacheSize } from './index-build.mjs';
|
||||
+ export { sees, find, get, search, manuscript, universeInfo, QUERY_REPLY_CAP, LOOKUP_LIMIT, MANUSCRIPT_LINES } from './query.mjs';
|
||||
+export { REPLY_LIMITS, resolveReplyLimits, checkReplyLimits } from './limits.mjs';
|
||||
+export { GUARD_CODES, FIXED_TEXTS, WEB_CITE_DEFINITIONS, REASON_MAX, GuardError, parseReply, checkReply, libraryReader, guardReply, lastCommits } from './guard.mjs';
|
||||
|
||||
2: c25f5b8da ! 2: 7400509ba row 217: citation runner retry and acceptance draft (Untested)
|
||||
@@ Commit message
|
||||
row 217: citation runner retry and acceptance draft (Untested)
|
||||
|
||||
## BUILD-LOG.md ##
|
||||
-@@ BUILD-LOG.md: Row 299 (573, #1806, Gander, Filbert): before, the P10 band test timed a fault r
|
||||
- 2026-10-23T17:29:46Z | Gyro Vikunja571 sage-3542 Connections amendment | Branch gyro/editor-connections-design cut exactly from landed PRD1.17 30e6bb680; read REQ-LIB-5 in that PRD. Replaced stale J-b waits in parent and W4. Proposed W8 owns current authorized Markdown/DOCX links/backlinks list, labels, versioned refresh, leakage refusals and fixture tests. Build order under mos-1470/comment961 is W7 closed routing candidate, W8 landing, then W7 human first-real-import opening. No REQ-LIB-8 condition or acceptance change. Q234/mos-1363/S0 M1-M14 and post-10-27/MVP priority fixed. Static diff, twelve brief sections and append-only checks pass. No repo Node, tests, build, browser, queue mutation or live action. Fenton reviews after authorized docs branch push; Sage lands on approval.
|
||||
+@@ BUILD-LOG.md: remain; no live state, schema or bus policy change.
|
||||
|
||||
- 2026-10-23T17:32:37Z | Gyro sage-3544 fenton-0016 N1/N2 delta | Before: W7 Gate/final real-conversion list omit the W8 build-order cross-reference and W8 human-view filtering cites agent settings. After: both locations explicitly put W8 landing before human opening as mos-1470 build order, not acceptance; comment/tracked-deletion links are not current story links and never appear in the human Connections view regardless of agent settings. New commit atop approved 5af060fb5, no amend. Static diff and append-only checks pass. Docs only, no repo Node/tests/live action. Fenton checks only this delta.
|
||||
-+
|
||||
+ 2026-10-24 | Goldie | Row265 / #1770 verified (mos-1567, sage-3942) | Approved correction adds solely address import pin + Row265 comment to project-runtime.test and one pure-source RUNNER_FILES mount; new block checks parser has no imports. Serialized fresh-short-TMP timeout-k10: unchanged sandbox10/10, parser15/15, rooms18/18, full bus957/957, twelve named refusal mutants killed (each Node1, driver0), restored parser15/15 + rooms18/18. All positives zero fail/skip/cancel; every mutation restored full broker SHA71b32ee4. Old first-red evidence retained, no other old-test change. Slot returned goldie-0034; Boyd packet explicitly includes mount-list review, candidate push next.
|
||||
+ 2026-10-24T07:18:53Z | Sage | Row 327 (#1825, Bradford, Poe and Dewey) LANDED 68c08b4e7. Before: refactor at 94d9e90a6; the push guard was a scratch script with no reviewed-binary check. After: scripts/push-check.sh and scripts/test-push-check.sh on refactor, 3 commits cherry-picked onto 6a5e12511 with blobs equal to the round 3 tip d858c9f8b, plus doc commits 76f84465f and 68c08b4e7. Binaries are found by numstat or a NUL in the first 8000 committed bytes, regardless of attributes; each needs its sha256 and path in an approved latest-round candidate; an unconfirmed queue tail exits 2. Reviews: Poe c31525 rev 3882, Dewey c31526 rev 3883. Gate: 1st run 06:57Z RED, not the candidate: canonical node_modules was empty from 05:45:15Z (sage-4023). Rerun with its own root npm ci GREEN 07:15:49Z: 17 package suites 0 failures (cli 986, plugins 119, webui 418), 11 scripts exit 0, push-check 6 mutants KILLED; skips are the queue canonical-root check and the row 244 live provider cases. The landed push-check.sh passed its own push (NO_BINARY, NO_ATTRIBUTION, PUSH_READY). mos-1575: gates install their own node_modules; canonical restored with npm ci (128 packages).
|
||||
+2026-10-23 | Beakley (88b97f65) | Row 217 #1718 takeover, before implementation | Clean base 45dca69f6 on beakley/row217. Recovering Launchpad handoff for citation guard, live settings, page store and runner retry. Acceptance is C2-06/design 5.2 plus sage-3595/3599/3602. Tracking agents/beakley/work/queue-217/BUILD.md; no product changes or Node/tests; Sage CLEAR required.
|
||||
+
|
||||
+2026-10-23 | Beakley (88b97f65) | Row 217 #1718 untested draft checkpoint | Continued Launchpad e25ef0373; added runner retry/text/note implementation, pure protocol constants and sage-3640 approved single read-only mount, CLI documentation and new acceptance test files. Static checks caught missing projects compatibility, async request mutation and Git pathspec matching; bounded fixes and regression tests authored. git diff --check clean. No Node/test/mutant executed; Sage holds CLEAR. 283/216/285 dependency checks and all acceptance execution remain open. Packet agents/beakley/work/queue-217/MANIFEST.md.
|
||||
@@ agents/beakley/work/queue-217/mutants.py (new)
|
||||
|
||||
## docs/SESSIONS.md ##
|
||||
@@ docs/SESSIONS.md: are never rewritten or removed; corrections are new entries.
|
||||
- 2026-10-23T17:48:43Z | Scrooge (629b6cd3) | Row 252 Console inbox Approve and Deny (#1753) | Rebased onto 306 landing as 580037105 (range-diff all =), slot run bus 907/0 webui 410/0 cli 943/0, in-review revs 3608/3609, Webby r1 APPROVE, J1-J19 specs to Sage; Sage landed 45ea3fa0d (done rev 3616). Part 1 mutant results were never in BUILD.md; they went to Sage by T3 (scrooge-0252-mutant-specs).
|
||||
- 2026-10-23 | Sage (1ef1e4f8) | Rows 308 and 252 landings, 571 Connections design amendment, Vikunja 597 | 308 (PRD 1.17, #1815) landed 30e6bb680 and 252 (#1753) landed 45ea3fa0d (replay of 580037105 onto 30e6bb680, range-diff all =), each after a full gate on the landed tree (252 also J1-J19, J11c and J18 equivalent); Gyro's 571 amendment (Fenton APPROVE) landed e8bb13df8; Vikunja 570, 435 and 597 done, canonical webui esbuild 0.28.2; queue revs 3589-3616 committed 59f013247
|
||||
- 2026-10-23 | Sage (1ef1e4f8) | Vikunja 571 W build rows; rows 13, 42, 257 and 289 check | Filed the design's ten W rows as queue rows 309-318 (revs 3617-3626, owners set to unassigned 3627-3636, queue commit 293b42fee pushed); Vikunja 571 done (comment 994). Row 13's candidate fd72d2689 is on refactor, gate is Monday's row 7 ledger run; 42 paused under mos-1184; 257 post-v1; 289 waits on 214 and 288. Slot released 17:56Z.
|
||||
+ 2026-10-24T04:27Z | Goldie (a13dd6d5-5e73-4b7d-8318-02abeff24940) | Row265 / #1770 C2-09b rooms | Goldie owns build, Boyd reviews under sage-3915. New goldie/row265 worktree at ec86f2c84, claim rev3814; room verbs/parser/new tests prepared, no old tests changed. Sage-3932 slot: new parser14/14 and rooms18/18 passed; whole bus in progress before refusal mutants, stop rule active.
|
||||
+ 2026-10-24T04:35Z | Goldie (a13dd6d5-5e73-4b7d-8318-02abeff24940) | Row265 / #1770 verified | First slot stopped at project-runtime import pin. mos-1567 narrowly authorizes pin and pure-source mount correction. sage-3942 rerun: sandbox10/10, parser15/15, rooms18/18, bus957/957, twelve refusal mutants killed/restored SHA71b32ee4, parser15/15 + rooms18/18 again. Slot returned goldie-0034; no further test runs. Boyd reviews RUNNER_FILES alongside rooms; own-branch push/claimant in-review next.
|
||||
+ 2026-10-24T07:18:53Z | Sage (1ef1e4f8) | Row 327 / #1825 push guard landed (mos-1572 option A, mos-1575) | Gate went red 06:57Z on an empty canonical node_modules (Glomgold's webui npm ci through a link to canonical, glomgold-0011); rerun with its own npm ci GREEN 07:15:49Z on 1bd214e38; pushed 68c08b4e7 07:18:03Z; #1825 closed c31530; canonical restored (128 packages); brief template rule 4db23a51f | landed
|
||||
+
|
||||
+2026-10-23 | Beakley (88b97f65, Codex gpt-6.1-sol) | Row 217 #1718 takeover under Q245 | Registered beakley/row217; read brief/design and standing Sage rulings; awaiting Launchpad ref before implementation. Queue next refused linked worktree; reported to Sage. Untested, no Node/test run pending CLEAR.
|
||||
|
||||
3: b6c3129d2 ! 3: a447880cb row 217: early-review coverage and availability RED cases (Untested)
|
||||
@@ Commit message
|
||||
row 217: early-review coverage and availability RED cases (Untested)
|
||||
|
||||
## BUILD-LOG.md ##
|
||||
-@@ BUILD-LOG.md: Row 299 (573, #1806, Gander, Filbert): before, the P10 band test timed a fault r
|
||||
+@@ BUILD-LOG.md: remain; no live state, schema or bus policy change.
|
||||
2026-10-23 | Beakley (88b97f65) | Row 217 #1718 takeover, before implementation | Clean base 45dca69f6 on beakley/row217. Recovering Launchpad handoff for citation guard, live settings, page store and runner retry. Acceptance is C2-06/design 5.2 plus sage-3595/3599/3602. Tracking agents/beakley/work/queue-217/BUILD.md; no product changes or Node/tests; Sage CLEAR required.
|
||||
|
||||
2026-10-23 | Beakley (88b97f65) | Row 217 #1718 untested draft checkpoint | Continued Launchpad e25ef0373; added runner retry/text/note implementation, pure protocol constants and sage-3640 approved single read-only mount, CLI documentation and new acceptance test files. Static checks caught missing projects compatibility, async request mutation and Git pathspec matching; bounded fixes and regression tests authored. git diff --check clean. No Node/test/mutant executed; Sage holds CLEAR. 283/216/285 dependency checks and all acceptance execution remain open. Packet agents/beakley/work/queue-217/MANIFEST.md.
|
||||
4: dde5b8496 = 4: 2655ec010 row 217: keep fixture status on its current served tip (Untested)
|
||||
@@ -0,0 +1,30 @@
|
||||
# Row217 round2 test receipts
|
||||
|
||||
Sage CLEAR sage-4042/4043, 2026-10-24. Source revision 2d274a5b6. All runs
|
||||
serialized; source files stayed unchanged through the whole-suite and mutant pass.
|
||||
Commands used TMPDIR=/mnt/storage/scratch/tmp/tNoueZ and timeout -k 10.
|
||||
|
||||
- npm ci --ignore-scripts --no-audit --no-fund at the worktree root (300s bound),
|
||||
then packages/webui (300s). Actual directories, no canonical links.
|
||||
- node --test packages/bus/tests/citation-availability.test.mjs (180s).
|
||||
- python3 agents/beakley/work/queue-217/mutants.py <m5-red> M5-hide-library-unavailable
|
||||
(420s). Green control, the authorized pre-fix RED stand-in, restore+green.
|
||||
- node --test --test-concurrency=1 with the seven new test files (900s):
|
||||
library/guard, business/reply-limits, cli/reply-limits, bus/citation-availability,
|
||||
bus/citation-guard, bus/citation-runtime and harness/citation-runner. Whole files.
|
||||
- First attempt 56/57: new runtime fixture invalid-authority. Only that fixture
|
||||
was corrected to the established broker projection. runtime-fixture-retry.log
|
||||
is its 1/1 rerun (180s); touched-rerun.log is the whole-file 57/57 rerun.
|
||||
- npm test in packages/library, then business (900s each), bus and cli (1200s
|
||||
each), harness and seat (900s each). Never overlapped package runs.
|
||||
- python3 agents/beakley/work/queue-217/mutants.py <mutants> (900s).
|
||||
The driver wraps each Node run in timeout -k 10 120. Each negative exits1,
|
||||
is preceded by a green control, restores its product bytes/hashes and then
|
||||
reruns the restored control green. No checkout product file is mutated.
|
||||
|
||||
summary.json holds complete counts; summary.txt is the short version. M1 anchors
|
||||
are recorded in m1-anchors.txt. The five *-restored.sha256 files match current
|
||||
product files. Full outputs are retained, including the first new-test failure.
|
||||
Negative logs intentionally keep Node's whitespace-only diagnostic padding;
|
||||
standard git diff --check flags that padding, not source code. No binary logs.
|
||||
No old test failed or was edited. Sage runs scripts/test-*.sh at landing.
|
||||
@@ -0,0 +1,11 @@
|
||||
✔ C2-06 held library lock gives the agent citation-unavailable and its retry reason (5142.976705ms)
|
||||
✔ C2-06 malformed sync state is availability failure, never a fabricated invalid cite (33.874404ms)
|
||||
✔ C2-06 no mirror or freshly initialized empty mirror still means no served citation (33.746516ms)
|
||||
ℹ tests 3
|
||||
ℹ suites 0
|
||||
ℹ pass 3
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 5307.376982
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,280 @@
|
||||
npm notice run @mosaic/[email protected] test
|
||||
npm notice run node --test tests/
|
||||
✔ a grant's level is collaborator or viewer (2.351697ms)
|
||||
✔ any other level refuses with the key path named (1.505284ms)
|
||||
✔ covers tells a viewer grant from a collaborator grant (0.605812ms)
|
||||
✔ covers refuses a call with no level, so a viewer grant can't slip past a collaborator check (0.247487ms)
|
||||
✔ a viewer grant still needs its business, project, instance and expiry to cover (0.247397ms)
|
||||
✔ a valid document passes and comes back frozen (4.146183ms)
|
||||
✔ checkAccess does not freeze or alias the caller's document (0.552481ms)
|
||||
✔ LEVELS is the single allowed level set, collaborator and viewer (row 193a) (0.259109ms)
|
||||
✔ accessFilePath is access.json in the config directory (0.495701ms)
|
||||
✔ top level: object, unknown keys, accessVersion, revision, arrays (2.131141ms)
|
||||
✔ users: unknown keys and the id rule (0.609866ms)
|
||||
✔ users: human, tester and any business's human are refused (0.455944ms)
|
||||
✔ users: home is a given peer or local (0.372673ms)
|
||||
✔ users: subjects, provider, sub, uniqueness and owner subjects (2.126611ms)
|
||||
✔ grants: unknown keys, id, user and business (0.897075ms)
|
||||
✔ grants: projects is ["*"] or distinct lowercase UUIDs (1.199677ms)
|
||||
✔ grants: instances is ["*"] or distinct declared instances of that business (0.889396ms)
|
||||
✔ grants: any level other than collaborator or viewer refuses, naming grants[i].level (1.13158ms)
|
||||
✔ grants: expires is optional ISO time, and a past expiry is not refused (0.979808ms)
|
||||
✔ the context is required and checked (1.713394ms)
|
||||
✔ loadAccess reads a valid file and checks it (0.755936ms)
|
||||
✔ loadAccess refuses a missing file, a symlink and a directory with exit 4 (0.519376ms)
|
||||
✔ loadAccess refuses another owner and group or other write (0.581157ms)
|
||||
✔ loadAccess refuses bad JSON and a bad document with exit 2 (1.841309ms)
|
||||
✔ covers: * and listed ids match (0.340508ms)
|
||||
✔ covers: an unlisted project, instance or business doesn't match (0.20254ms)
|
||||
✔ covers: an expired grant doesn't match, at and after the instant (0.698261ms)
|
||||
✔ covers: level is the least level asked for (row 193a) (0.213107ms)
|
||||
✔ covers: a missing or unknown level throws (row 193a, N1) (0.385188ms)
|
||||
✔ covers: a grant with an unknown level covers nothing (row 193a) (0.191435ms)
|
||||
✔ covers: now must be a valid Date (0.21008ms)
|
||||
✔ today's files load unchanged: identity, publish and remote are optional (11.61814ms)
|
||||
✔ a granted agent loads with its identity, grant and the project's upstream (4.906248ms)
|
||||
✔ N10: publish needs identity and a gitea definition, and the error names the grant (9.522958ms)
|
||||
✔ publish names declared projects that have a remote, each once (7.911234ms)
|
||||
✔ identity fields are checked (14.073433ms)
|
||||
✔ D9c: the upstream must be its own normalized form, exactly /OWNER/REPO (29.451403ms)
|
||||
✔ D9c: one .git is stripped, and the fork is built from the stripped name (1.733511ms)
|
||||
✔ D9c: gitea.url names the instance only (10.698646ms)
|
||||
✔ the upstream's host and port must be the agent's Gitea's (4.064711ms)
|
||||
✔ remote-not-fork: an upstream the agent's own user owns, compared without case (10.115713ms)
|
||||
✔ store references: own path only (design D1, D3a) (0.50611ms)
|
||||
✔ the role file loads and resolves through loadBusiness (18.165733ms)
|
||||
✔ the shipped file is exactly the approved list (1.392044ms)
|
||||
✔ the assistant's authority is message.send and record.write within role (4.312182ms)
|
||||
✔ the assistant talks to the user and the chief of staff only, and no other shipped role is limited (0.978023ms)
|
||||
✔ a business grant through limits does not widen the role (6.715605ms)
|
||||
✔ a launch block whose by is the assistant is refused (3.553443ms)
|
||||
✔ the instance takes no credential references and no tracker (9.975785ms)
|
||||
✔ an arbiter whose role definition declares messaging lists is refused, for each kind (8.992963ms)
|
||||
✔ an arbiter without messaging lists is accepted beside the limited assistant (3.104416ms)
|
||||
✔ the contract passes work to the chief of staff and directs no one (0.788753ms)
|
||||
✔ REQ-HARN-2: the assistant, companion and research hold the web grant, and no other role file does (1.683056ms)
|
||||
✔ C2-04: library mappings load without roots, remain frozen, and retain mapping refusals (31.538067ms)
|
||||
✔ C2-04: an otherwise valid publish grant cannot name a library repo (4.356759ms)
|
||||
✔ config directory and file path follow MOSAIC_CONFIG (0.467526ms)
|
||||
✔ the fixture business validates and comes back frozen (4.106001ms)
|
||||
✔ two instances may share a definition (2.097865ms)
|
||||
✔ top-level refusals (6.537312ms)
|
||||
✔ arbiters and projects (24.968268ms)
|
||||
✔ role instances (9.057417ms)
|
||||
✔ Vikunja bots (29.820456ms)
|
||||
✔ a role without Vikunja takes no tracker block (9.629575ms)
|
||||
✔ credential references match the definition's services (11.680645ms)
|
||||
✔ launch (31.945766ms)
|
||||
✔ REQ-THREAD-2 REQ-LAUNCH-1 launch.threadIdleSeconds: absent is the default, a positive integer is used, anything else refuses (34.141496ms)
|
||||
✔ loadBusiness: file checks (12.995702ms)
|
||||
✔ loadBusiness: not a regular file (111.510997ms)
|
||||
✔ loading writes nothing (1.787307ms)
|
||||
✔ names that are Object.prototype properties don't count as declared (5.786433ms)
|
||||
✔ the shipped example refuses as written and validates once filled in (2.551686ms)
|
||||
✔ persona vars: agent layer, creative definition only, both or neither (26.121282ms)
|
||||
✔ row 194 keep, noHire and retired validate, and a file without them loads as before (4.607715ms)
|
||||
✔ row 194 each bad keep, noHire or retired entry refuses (19.966409ms)
|
||||
✔ row 323: committed Case 1 document loads unchanged through the business loader (10.685638ms)
|
||||
✔ row 323: real business validate accepts the Case 1 fixture without tracker credentials (226.106251ms)
|
||||
✔ row 323: real factory install accepts the document's scratch input and writes it unchanged (294.937207ms)
|
||||
✔ row 323: the Case 1 business boots without a tracker or @sync credential (60.850375ms)
|
||||
✔ row 323: factory install refuses bus.tester false before writing (39.485453ms)
|
||||
✔ row 323: literal library key refuses through final business validation (176.986326ms)
|
||||
✔ row 323: a library project refuses through the factory profile plan (36.685902ms)
|
||||
✔ row 325: the Case 1 project's sole key matches the repository project id (7.063988ms)
|
||||
✔ row 325: real business validate reports the copied repository project valid (203.591785ms)
|
||||
✔ row 325: the old mosaic-stack project key refuses against those same project bytes (227.47487ms)
|
||||
✔ the role file loads and resolves through loadBusiness (22.21166ms)
|
||||
✔ the shipped file is exactly the approved list (0.355811ms)
|
||||
✔ the resolved record matches the approved list, so a widened file fails (4.433743ms)
|
||||
✔ the chief of staff holds role.launch, message.send, role.end, organization.change, record.write, instance.name, role.hire and role.fire; every other action is gated (6.025087ms)
|
||||
✔ the pm does not hold role.launch (7.814194ms)
|
||||
✔ a business grant of a gated action through limits does not widen the role (5.309288ms)
|
||||
✔ a limit that drops role.launch leaves the chief of staff with no launch block (5.488981ms)
|
||||
✔ a launch block whose by is the pm instance is refused (4.031539ms)
|
||||
✔ the contract names no duty to talk to the human and the pm contract no launch (1.077581ms)
|
||||
✔ the instance takes no credential references and no tracker (7.111256ms)
|
||||
✔ C2-04: business validate and resolve skip a library before code projects and credential checks (581.819531ms)
|
||||
✔ usage errors exit 4 (330.347677ms)
|
||||
✔ validate: a good business exits 0 and prints instance digests (80.712835ms)
|
||||
✔ validate: project files (358.68705ms)
|
||||
✔ validate: missing files and a broken system config (272.747082ms)
|
||||
✔ validate: credential reference problems exit 2 and name each one (75.47514ms)
|
||||
✔ validate: a not-issued store agent dated today passes, and an issued one with a past expiry fails (152.378642ms)
|
||||
✔ validate: a token file inside the repository is refused (76.459487ms)
|
||||
✔ validate: role definitions come from MOSAIC_ROLES_DIR (210.323656ms)
|
||||
✔ resolve: prints one instance's record (260.543734ms)
|
||||
✔ resolve: refusals (375.881441ms)
|
||||
✔ parse: exactly one of file or env, plus the service's date (3.551882ms)
|
||||
✔ check: a good file has no problems (1.2198ms)
|
||||
✔ check never opens the file: a write-only token passes (0.477268ms)
|
||||
✔ check: file problems (1.60977ms)
|
||||
✔ check: token files can't live in the repository or dataRoot, even through a linked directory (1.508979ms)
|
||||
✔ check: dates and environment references (0.686041ms)
|
||||
✔ each definition loads, with a contract file, and is exactly the approved list (4.83466ms)
|
||||
✔ an organization file that declares them passes, and each resolves to least privilege (10.307081ms)
|
||||
✔ the chief of staff launches each one; no other role does (11.082937ms)
|
||||
✔ a C-suite role can't be made the launcher: launch.by must hold role.launch (5.052598ms)
|
||||
✔ limits can narrow a C-suite role but never widen it (4.524289ms)
|
||||
✔ any unknown key, tool, action or version in a role file is refused (4.904699ms)
|
||||
✔ row 298: checkGrantScope takes the D2 shape and refuses anything else (2.752624ms)
|
||||
✔ row 298: a missing scope is empty and a bad one falls back to empty, which covers nothing (0.482721ms)
|
||||
✔ row 298: a Gitea grant is in scope only when its agent and every project are listed (0.341447ms)
|
||||
✔ row 298 (sage-3594 Q2): host commands match whole argv tokens, and enrollment is never in scope (0.467524ms)
|
||||
✔ row 298: a bad grantScope in the file still loads, and the read shows the fallback (18.355754ms)
|
||||
✔ row 298: the writer checks the scope, logs the change and removes the key for {} (142.313501ms)
|
||||
✔ row 298 (sage-3594 Q1): the general writers can't write grantScope (25.353249ms)
|
||||
✔ REQ-WAIT-1: GATED_ONLY is exactly the hard waits; the new actions are in the vocabulary (1.86466ms)
|
||||
✔ REQ-ROLE-2: END_PROTECTED includes the assistant's thread definition (0.234237ms)
|
||||
✔ REQ-COS-3: role.hire and role.fire are routed, not hard waits (0.300439ms)
|
||||
✔ REQ-WAIT-3: every action is routed or a hard wait, never both, and the routed list names only actions (0.967731ms)
|
||||
✔ REQ-WAIT-3: instance.name is routed under REQ-MSG-2 (1.5), not a hard wait (row 141, sage-0589) (1.313696ms)
|
||||
✔ REQ-WAIT-2: a role listing a hard wait at either class is refused; the actions that left can be granted (5.343386ms)
|
||||
✔ S1: the business file refuses hosts at the top level and in a role, and host.<id> references (56.500208ms)
|
||||
✔ T1: address, user and host key checks, which the enrollment raise uses (11.374442ms)
|
||||
✔ T26: no wildcard and no shell, runner or interpreter as a prefix (2.722004ms)
|
||||
✔ D6: argv shape and the literal prefix match (0.922698ms)
|
||||
✔ C2-04: instance settings skip a library while checking a later code project (98.596648ms)
|
||||
✔ row 165 read lists each instance and the definitions add accepts (16.615936ms)
|
||||
✔ row 165 add: two instances join, validate exits 0, the log names the human, and the writer asks for no restart (row 194, D3) (308.207149ms)
|
||||
✔ row 165 change: definition, vars and launch membership log before and after; none asks for a restart, the bus reloads (row 194, D3) (180.35178ms)
|
||||
✔ row 165 refuses each validation failure and leaves the file's bytes alone (44.040709ms)
|
||||
✔ T19 add of a credentialed definition writes store references dated today, names its bot, and validate exits 0 (101.60641ms)
|
||||
✔ T19 add of a definition that declares host writes references for its token services only (12.273146ms)
|
||||
✔ row 165 refuses a definition change to or from one that declares credentials (6.011439ms)
|
||||
✔ row 165 a vars or launch change on an instance with its binding succeeds and keeps the binding (87.081633ms)
|
||||
✔ row 165 refuses an END_PROTECTED definition and every change to a protected instance (9.425714ms)
|
||||
✔ row 165 refuses while a project file doesn't resolve, as validate would (21.508015ms)
|
||||
✔ row 165 refuses a stale revision and leaves the file's bytes alone (13.794117ms)
|
||||
✔ row 65 an instance write refuses harness-off, thinking-unsupported, an unknown model and a partial fallback (38.79158ms)
|
||||
✔ row 213 a creative instance is the human's: add, vars and definition changes, persona digest only (105.47603ms)
|
||||
✔ row 256 T1-T3, T5 the human deletes a creative instance, no other actor does, and the assistant stays (106.119319ms)
|
||||
✔ row 256 T4 the human's delete of the only listed instance, a creative one, is the last-listed refusal (3.635722ms)
|
||||
✔ REQ-LIMIT-1 schema: every scope unset or zero, adjustable above four, bad values and unknown models refuse (27.767213ms)
|
||||
✔ REQ-LIMIT-1 counts each exact scope at/over limit, unlimited and old tuple after model reassignment (1.218782ms)
|
||||
✔ REQ-ROLE-3 writer: atomic validated revision, immutable previous bytes and authenticated actor/old/new receipt (65.935591ms)
|
||||
✔ REQ-ROLE-3 writer: pre-rename fault leaves old file, post-rename recovery records commit, conflicting recovery refuses (42.79247ms)
|
||||
✔ REQ-LIMIT-1 / decision145 migration prints only, preserves values, rejects ambiguity, and is idempotent (20.740471ms)
|
||||
✔ REQ-LIMIT-1 shared settings validates the complete proposed selection and logs exact actor (73.013224ms)
|
||||
✔ REQ-LIMIT-1 provider is table data: another provider routes separately and aliases share exact counts (5.530215ms)
|
||||
✔ REQ-ROLE-3 refuses live writer locks, symlink targets and uncertain recovery without changing bytes (31.489428ms)
|
||||
✔ Q169 assistants: vars and definition change and log the actor; tracker null leaves no tracker (74.510885ms)
|
||||
✔ Q169 assistants: refuses other instances, other definitions, holder and credentials, empty entries, a tracker the definition has no credential for and a stale revision (46.648048ms)
|
||||
✔ Q169 assistants: a definition with a vikunja credential takes a tracker change and refuses its removal or a used bot (28.59175ms)
|
||||
✔ row 65 routes lists every instance with harness, model, thinking and fallback, the switched-on harnesses, the model keys and each harness's levels (4.496203ms)
|
||||
✔ row 65 setRoutes saves a harness, model, thinking and whole fallback, reads each back from the file, logs the actor, and a null fallback clears all three (28.880486ms)
|
||||
✔ row 65 setRoutes refuses a partial fallback, a switched-off harness, a level the harness doesn't apply, an unloaded module, an unknown model or instance, a malformed route, no change and a stale revision, with the file unchanged (33.617502ms)
|
||||
✔ row 65 a file with harness vars and no plugins.harness loads and its views read; a model change still saves, and a route change refuses harness-off (15.471063ms)
|
||||
✔ B7 kept instance: the models keys it names and the instances key are the human's (32.512862ms)
|
||||
✔ B7 kept instance: its route is the human's (13.733689ms)
|
||||
✔ M10 creative instance: models keys it names, the instances key and its route are the human's (41.972839ms)
|
||||
✔ C2-04 M9: changed playground and hybrid entries leave business and changes.jsonl byte-identical (75.744651ms)
|
||||
✔ C2-04 M9: code projects, additions, deletions and array changes are protected too (73.935851ms)
|
||||
✔ C2-04 M9: canonical key order is allowed and a non-project setter still records its change (53.997154ms)
|
||||
✔ C2-04 M9: a serialization hook cannot change projects after the canonical comparison (29.857522ms)
|
||||
✔ M7/M8: library seats come from library businesses, creative seats from their creative definitions (20.881147ms)
|
||||
✔ M8: a business with no library project puts no seat in either set (19.190367ms)
|
||||
✔ M7/M8: a business file that is not valid JSON throws; no empty set (7.135915ms)
|
||||
✔ M7/M8: an absent businesses directory gives empty sets (1.688414ms)
|
||||
✔ M7/M8: a businesses path that is not a directory throws; no empty set (4.583153ms)
|
||||
✔ M7/M8: a businesses symlink to a missing target throws; no empty set (2.208552ms)
|
||||
✔ M7/M8: a config directory under a regular file throws (lstat fails with ENOTDIR); no empty set (0.601986ms)
|
||||
✔ M7/M8: a business file that can't be read throws; no empty set (12.318486ms)
|
||||
✔ T6 delete refuses in the design's order and leaves the file's bytes alone (104.896221ms)
|
||||
✔ T6 delete refuses the last listed instance (7.490182ms)
|
||||
✔ T6 a clean delete removes the entry and its own references, adds retired, and the name can't come back (213.690055ms)
|
||||
✔ T7 veto: keep, unkeep, nohire and hire each write once, a repeat is no change, and the log names the human (171.894178ms)
|
||||
✔ T7 veto refuses an unknown or END_PROTECTED keep, a bad request, a stale revision and a business without launch (26.238526ms)
|
||||
✔ D2.2 hire adds and lists a new instance, logs the chief's context, and sets only model and limits (92.062371ms)
|
||||
✔ D2.2 hire refuses noHire, a kept name and a listed name, and re-lists a fired one only as it was (29.586421ms)
|
||||
✔ D2.2 fire delists and keeps the entry, a repeat is done with no write, and each refusal holds (88.451593ms)
|
||||
✔ row 256 checkDelete passes the human's creative delete and refuses another actor's; fire still refuses (5.294872ms)
|
||||
✔ row 239 T1 a fire on a revision that goes stale before the writer's lock refuses there and revokes nothing (5.756058ms)
|
||||
✔ row 239 T2 a write after the revoke refused before publication carries revoked, and the file keeps the edit (7.753057ms)
|
||||
✔ row 239 T3 any error after the revoke carries revoked, for a fire and a delete; a revoke that throws carries nothing (32.403692ms)
|
||||
✔ Q247: omitting tracker loads as null and preserves independent role bots (10.793015ms)
|
||||
✔ Q247: real business validate passes without a sync credential reference or file (168.186763ms)
|
||||
✔ Q247: present tracker retains its values and validation without mutating the input (9.372029ms)
|
||||
✔ Q247: present null, undefined and malformed trackers still refuse (18.314895ms)
|
||||
✔ Q247: absent business tracker does not waive a role's Vikunja bot requirement (2.859494ms)
|
||||
✔ REQ-PLUG-1 schema: plugins is optional, names known kinds and checked module names (40.546579ms)
|
||||
✔ REQ-PLUG-1 REQ-ROLE-3 the setter writes plugins through the organization writer and logs old and new names (92.751615ms)
|
||||
✔ vikunja:19/309 a patch changes only the kinds it names; null removes one kind, explicitly and in the trail (100.494327ms)
|
||||
✔ vikunja:19/309 an unknown kind (set or removed), a bad module, an empty patch and null on the wrong shape are refused, nothing written (9.927988ms)
|
||||
✔ REQ-PLUG-1 REQ-ROLE-3 the writer checks the bytes it writes: a Date in plugins is refused there too (19.985103ms)
|
||||
✔ REQ-PLUG-1 REQ-ROLE-3 a refused setter write throws a code, changes nothing and logs nothing (4.143331ms)
|
||||
✔ vikunja:19/305 with an exists check, the setter refuses a module no tree file answers to, before anything is written (18.273494ms)
|
||||
✔ optional project repo is preserved and must be a normalized absolute path (32.895793ms)
|
||||
✔ loaded business project repo cannot be nested in any declared code checkout (6.807091ms)
|
||||
✔ path and load (3.706713ms)
|
||||
✔ refusals (1.897981ms)
|
||||
✔ record.write is within-role for the eleven approved v2 agents, never gated-only (3.85853ms)
|
||||
✔ C2-06 M11 human replacement works; omitted settings return to defaults (98.331729ms)
|
||||
✔ C2-06 M11 agents and tester cannot change settings, including by changing human (55.766765ms)
|
||||
✔ C2-06 M11 serialization cannot replace settings after the first fence (17.47904ms)
|
||||
✔ C2-06 M11 an unrelated actor cannot appoint itself human and change reply limits (16.039248ms)
|
||||
✔ C2-06 invalid setter values preserve the business and changes.jsonl (17.259974ms)
|
||||
✔ C2-06 validator accepts hand-edited settings; raw reader fails closed on invalid files (19.048524ms)
|
||||
✔ C2-04: a library first in projects does not hide a later project layer (21.880181ms)
|
||||
✔ systemVars flattens the validated config (1.820728ms)
|
||||
✔ precedence: system, business, project, project role, agent (10.989776ms)
|
||||
✔ limits narrow the definition and never widen it (8.400306ms)
|
||||
✔ role.launch stays within-role only for the instance the launch block names (18.468852ms)
|
||||
✔ limits.authority without role.launch leaves the launcher with no launch block (13.185333ms)
|
||||
✔ limits.authority narrows cross-role actions too (2.699689ms)
|
||||
✔ classify (6.249491ms)
|
||||
✔ the record carries what the broker and launcher need (4.7922ms)
|
||||
✔ digest: key order doesn't matter, any value change does (12.395981ms)
|
||||
✔ refusals (3.790542ms)
|
||||
✔ the four shipped version 2 roles load (5.229965ms)
|
||||
✔ shipped role scopes match addendum B section 2 and the SR runbook (2.178782ms)
|
||||
✔ shipped authority follows the note's table (13.291498ms)
|
||||
✔ every role file in roles/ loads through the validator, and a v2 contract exists (2.100731ms)
|
||||
✔ version 1 files keep loading with no authority (1.521097ms)
|
||||
✔ the conductor policy isn't a role (0.302424ms)
|
||||
✔ a missing role file is exit 4, a symbolic link too (0.564721ms)
|
||||
✔ version 2 refusals (3.788273ms)
|
||||
✔ authority: closed vocabulary, no gated-only action, no overlap (3.881951ms)
|
||||
✔ messaging: optional, role definitions and human, never the tester (1.949889ms)
|
||||
✔ row 64 skills: optional, distinct skill directory names, none on version 1 (2.255987ms)
|
||||
✔ credentials: Gitea scopes (1.343013ms)
|
||||
✔ credentials: Vikunja scopes are a group-to-verbs map from the grantable list (1.709889ms)
|
||||
✔ credentials: services (0.759517ms)
|
||||
✔ contract: a non-empty regular Markdown file beside the role file (0.838905ms)
|
||||
✔ the six creative roles load: read tools, message.send only, messaging with the human only (0.693212ms)
|
||||
✔ M1: a creative role file wider than read and answer is refused (1.897832ms)
|
||||
✔ hireable: HIRE_ALLOWED is exactly the six plain work actions, and every one is routed (0.173708ms)
|
||||
✔ hireable: a list naming a definition that holds any refused action refuses at load, one case per action (18.133668ms)
|
||||
✔ hireable: a mixed definition refuses, a clean list loads, and the named file's own hireable isn't read (1.146869ms)
|
||||
✔ hireable: a missing, version 1, duplicate or badly named entry refuses, and the key is optional (3.734122ms)
|
||||
✔ the pm and the cto check a saved spec against settled decisions and work in flight, and answer with a BLOCK or an accept (11.616694ms)
|
||||
✔ the chief of staff relays a BLOCK or an accept to the assistant as a reply to the message that carried it (1.277302ms)
|
||||
✔ the assistant summarizes a spec review in its own words and doesn't repeat the chief of staff's text (0.70976ms)
|
||||
✔ REQ-LIMIT-3 schema: each subject kind, limit 0 and no ceiling are accepted; bad limits, times, keys and undeclared instances refuse (49.216064ms)
|
||||
✔ REQ-LIMIT-3 the writer stamps since: a new limit gets now, a changed one keeps its time, a different time is refused (85.0223ms)
|
||||
✔ REQ-LIMIT-3 only tokens.* at schema depth holds token limits: agent limits named `limit` save as sent, and a token limit named `limit` is stamped and reset (67.775561ms)
|
||||
✔ REQ-LIMIT-3 a reset moves since to now, is logged with its actor, and refuses a path that is not a limit (34.296428ms)
|
||||
✔ REQ-LIMIT-2 schema: launch.account names a credential set; a daily quota needs a reset and an IANA zone and names the account (33.871693ms)
|
||||
✔ REQ-LIMIT-2 the writer stamps a daily quota's since, keeps its reset and zone, and a reset moves since (33.845575ms)
|
||||
✔ every key names known layers and a merge rule (1.726458ms)
|
||||
✔ unknown keys and wrong layers refuse (1.084085ms)
|
||||
✔ types (3.275461ms)
|
||||
✔ merge: defaults, then the most specific layer wins (0.419589ms)
|
||||
✔ merge: limits only narrow, and provenance lists each source (0.757115ms)
|
||||
✔ merge doesn't change its inputs (0.206627ms)
|
||||
✔ web.searxng takes https anywhere and http on loopback, so Jason's 127.0.0.1:8888 passes (0.262745ms)
|
||||
✔ both definitions load, with a contract file, and are exactly the approved lists (5.013658ms)
|
||||
✔ security-reviewer has no write or shell tool and classifies only the verdict as its own (9.066819ms)
|
||||
✔ merge-gate's only grant is git.merge.protected cross-role, and it has no write tool (3.470869ms)
|
||||
✔ neither role can be an arbiter: its messaging lists refuse the business file (row 133) (8.498658ms)
|
||||
✔ every role contract carries the proactive line in its Authority section (1.099286ms)
|
||||
✔ pm and chief-of-staff say where a raise goes under REQ-DEC-2 (0.851681ms)
|
||||
✔ the merge landing takes two runs: merge-gate, cto and chief-of-staff each say their part (0.660442ms)
|
||||
ℹ tests 270
|
||||
ℹ suites 0
|
||||
ℹ pass 270
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 2873.146579
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,182 @@
|
||||
npm notice run test
|
||||
npm notice run node --test tests/*.test.mjs
|
||||
✔ sessionModel: the route is the instance's own vars, and a missing one refuses no-route by name (37.340888ms)
|
||||
✔ a pi bundle: prompt, policy, tools and manifest, 0600 in a 0700 directory (10.573131ms)
|
||||
✔ a chief-of-staff bundle lists launch among the bus tools and the manifest's typed tools (4.412373ms)
|
||||
✔ a chief-of-staff bundle lists end_run, change_organization and set_name as typed and nothing untyped, for either harness (8.193363ms)
|
||||
✔ the stop line names end_run for a role.end holder, and every other role keeps today's text (13.648406ms)
|
||||
✔ a claude-code bundle adds the wrapped gate hook and the MCP config (7.875641ms)
|
||||
✔ the prompt's built-in tools line is the harness's own names, as the manifest lists them (22.548582ms)
|
||||
✔ the prompt names the project clones in the workspace, and none when there are none (13.290253ms)
|
||||
✔ the prompt explains the review loop to a role with push_working, and reviews to one with fetch_review (15.420914ms)
|
||||
✔ the prompt explains landing to a role with land_work, and to no other (9.918107ms)
|
||||
✔ the prompt tells the pm to ask the chief of staff for sessions, and no other role (18.356673ms)
|
||||
✔ a bundle is written once: an existing file refuses (3.135889ms)
|
||||
✔ a path with a single quote can't go into the hook command (3.86973ms)
|
||||
✔ web grant on pi: the bundle has web_search and web_fetch, and no built-in web tool (4.927453ms)
|
||||
✔ no web grant on pi: no web tool in the bundle, and the gate blocks a web call (4.535472ms)
|
||||
✔ web grant on claude-code: the bundle has web_search and web_fetch, and no built-in web tool (4.409455ms)
|
||||
✔ no web grant on claude-code: no web tool in the bundle, and the gate blocks a web call (7.034483ms)
|
||||
✔ a granted session's gate lets the typed web tools through and still blocks the built-ins (6.471178ms)
|
||||
✔ search-source searxng-url: a granted role gets the typed broker tools and no harness web tool; an ungranted role gets nothing (12.185523ms)
|
||||
✔ search-source searxng-bundled: a granted role gets the typed broker tools and no harness web tool; an ungranted role gets nothing (11.958441ms)
|
||||
✔ search-source harness-builtin: claude-code gets WebSearch and WebFetch and no typed web tool, only when granted (12.933659ms)
|
||||
✔ search-source harness-builtin is refused for a granted pi role, which has no built-in web tool (4.064682ms)
|
||||
✔ C2-06 RESULT reply-invalid retries once, delivers only the valid answer and names reason (351.396996ms)
|
||||
✔ C2-06 RESULT citation-missing retries once, delivers only the valid answer and names reason (256.673143ms)
|
||||
✔ C2-06 RESULT citations-over-limit retries once, delivers only the valid answer and names reason (222.852677ms)
|
||||
✔ C2-06 RESULT citation-invalid retries once, delivers only the valid answer and names reason (261.389143ms)
|
||||
✔ C2-06 RESULT playground-cited-as-canon retries once, delivers only the valid answer and names reason (268.849657ms)
|
||||
✔ C2-06 RESULT citation-cross-universe retries once, delivers only the valid answer and names reason (231.674929ms)
|
||||
✔ C2-06 RESULT citation-unfetched retries once, delivers only the valid answer and names reason (216.064282ms)
|
||||
✔ C2-06 RESULT two guard refusals use the citation fixed text and exactly one retry (188.874138ms)
|
||||
✔ C2-06 RESULT JSON 34000 characters retries with a shorter valid answer (236.68605ms)
|
||||
✔ C2-06 RESULT JSON 70000 characters retries with a shorter valid answer (234.722358ms)
|
||||
✔ C2-06 RESULT two oversized JSON bodies use the length fixed text with citations required (193.029509ms)
|
||||
✔ C2-06 multibyte plain bodies also receive the one request-size retry (223.988818ms)
|
||||
✔ C2-06 two multibyte plain bodies use the length fallback (205.649902ms)
|
||||
✔ C2-06 RESULT a length refusal then citation refusal shares one retry and citation fallback (206.128944ms)
|
||||
✔ C2-06 fixed empty/failed replies defer unslop note until the next cited reply (295.722008ms)
|
||||
✔ C2-06 cited JSON above the old 32000 clip retains its citations and text (189.724785ms)
|
||||
✔ C2-06 a flagged cited answer keeps the note inside text and citations whole (192.59344ms)
|
||||
✔ C2-06 send_message typed tool runs every guard code before the valid RESULT (262.703841ms)
|
||||
✔ C2-06 outside library the old failed text, clip and unslop behavior hold (208.584382ms)
|
||||
✔ C2-06 outside library a refused send keeps the existing no-retry behavior (159.048751ms)
|
||||
✔ C2-06 the retry turn delivers citation-unavailable reason to the agent (190.203749ms)
|
||||
✔ allow exits 0, a deny exits 2 with the reason on stderr (211.158287ms)
|
||||
✔ a missing or wrong policy, or a bad event, exits 2 (113.877105ms)
|
||||
✔ the bundle's wrapped command: a missing gate or node still blocks (1104.288151ms)
|
||||
✔ claude: typed tools through MCP, the hook blocks, builtins outside --tools don't exist (1070.940549ms)
|
||||
✔ claude: the hook alone blocks a path outside the workspace (568.174554ms)
|
||||
✔ claude: a second turn resumes the first turn's session (940.097062ms)
|
||||
✔ claude adapter: --restricted is always passed (6.108878ms)
|
||||
✔ claude adapter: MOSAIC_CLAUDE_BIN wins over PATH and must be an absolute executable (19.555633ms)
|
||||
✔ claude adapter: a directory pin exits 2 before it runs; a pin with a space runs (6.450898ms)
|
||||
✔ claude: CLAUDE.md files and auto-memory don't reach the model; without --restricted they do (912.426727ms)
|
||||
✔ claude: a missing hook or MCP file refuses before claude starts (8.255308ms)
|
||||
✔ claude: row 66 a reply with a tell gets the correction notice on the next turn, a clean reply gets none, and the counts read after (1813.719749ms)
|
||||
✔ claude: row 66 a broken lists.json gives no clean verdict, the operator is told once, and the session still answers (861.243377ms)
|
||||
✔ M2: the gate refuses write, edit and bash to every creative role on pi and claude-code (58.57362ms)
|
||||
✔ M6: no creative session gets raise_decision; the assistant and the chief of staff keep it (27.01682ms)
|
||||
✔ web: research and companion get the broker's typed web tools, and a harness-builtin source refuses web-source-not-allowed (34.87358ms)
|
||||
✔ persona: the block sits between the contract and ## This session, fenced, with the name and digest (10.05189ms)
|
||||
✔ persona: each unsafe or unpinned file refuses before the bundle directory is made (30.976676ms)
|
||||
✔ adapters pass the prompt file's absolute path; the persona and the prompt text never sit in argv (48.053085ms)
|
||||
✔ the pi adapter refuses a missing, unreadable or directory prompt file before pi starts (13.20329ms)
|
||||
✔ pi: policy tools and typed tools pass, anything else is blocked (4.524582ms)
|
||||
✔ claude: builtins map from pi names, typed tools need the mcp prefix (1.1263ms)
|
||||
✔ file tool paths must resolve inside the workspace (4.02957ms)
|
||||
✔ pi's own path normalisation can't be used to step out (1.586245ms)
|
||||
✔ a symlink inside the workspace that points out is outside (1.300474ms)
|
||||
✔ a dangling symlink is refused at any depth, in both harnesses (5.091178ms)
|
||||
✔ read is checked under every spelling pi's read would open, in both harnesses (29.6566ms)
|
||||
✔ other spellings cover directories, dangling links and pi's cwd (2.651598ms)
|
||||
✔ a relative path climbs from the workspace's real path, in both harnesses (9.557314ms)
|
||||
✔ claude path fields per tool (1.146391ms)
|
||||
✔ glob patterns stay inside the workspace (1.220629ms)
|
||||
✔ a path that can't be checked is blocked (0.713439ms)
|
||||
✔ fetch_review's have lists the working refs before origin's, and no more than HAVE_MAX (358.466429ms)
|
||||
✔ fetch_review's have orders the working refs newest first within each clone, one clone after another (177.220281ms)
|
||||
✔ a runner git past its time: SIGTERM reaches its process group, and SIGKILL follows after the grace period (1810.093816ms)
|
||||
✔ once a signalled runner git has closed, its group gets SIGKILL, so a process that ignored SIGTERM dies too (303.717292ms)
|
||||
✔ land_work sends one land line and resolves the host's started answer (3.694332ms)
|
||||
✔ initialize, ping and tools/list (73.055562ms)
|
||||
✔ tools/call goes through the tool socket; a refusal is an isError result (66.566638ms)
|
||||
✔ replies are compact JSON; over the cap a tool error names the size and the cap (60.558157ms)
|
||||
✔ unknown tools and methods are JSON-RPC errors and never reach the socket (52.967178ms)
|
||||
✔ a missing argument is a usage error (35.244954ms)
|
||||
✔ pi: typed tools reach the socket, the gate blocks, agent_end writes the marker (676.072372ms)
|
||||
✔ pi: a reply over the cap is a tool error naming the size and the cap; list_tasks asks for open tasks (532.762084ms)
|
||||
✔ pi: a write through a dangling symlink is blocked, and nothing appears outside (479.264215ms)
|
||||
✔ pi: a read is refused when pi would open another spelling outside (479.008336ms)
|
||||
✔ pi: a relative path climbs from the real path of a workspace behind a symlink (495.496517ms)
|
||||
✔ pi: a relative path climbs from the real path of a dataRoot behind a symlink (458.873867ms)
|
||||
✔ pi: a missing extension refuses before any model call (6.358156ms)
|
||||
✔ pi: an extension without its configuration fails pi's start (380.653357ms)
|
||||
✔ pi: row 66 a reply with a tell gets the correction notice on the next turn, a clean reply gets none, and the counts read after (1353.463628ms)
|
||||
✔ pi: row 66 a broken lists.json gives no clean verdict, the operator is told once, and the session still answers (748.010347ms)
|
||||
✔ raise_decision offers domain as technical or delivery only, optional, and says where a raise goes (23.00088ms)
|
||||
✔ raise_decision forwards domain to decision.raise, and a call without it sends none (100.23044ms)
|
||||
✔ founderCheck: founder variables, then a needed service without a usable token (3.039179ms)
|
||||
✔ turnRequest names the sender, class, reply and decision (0.355597ms)
|
||||
✔ turnRequest says a tester's message is a test and never Jason's instruction (0.317095ms)
|
||||
✔ turnRequest says a user's message is a granted user's and never the owner's instruction (0.277911ms)
|
||||
✔ turnRequest shows the message's own sent time, a day old as well as new (0.227187ms)
|
||||
✔ stateBlock names the launch state with its time and event, and the open tasks with the cap (0.334368ms)
|
||||
✔ a message becomes a turn, the answer goes back as a RESULT, SIGTERM releases and exits 0 (257.255462ms)
|
||||
✔ launches revoked and then restored: the turn's block reads allowed and gives the restore time (272.592717ms)
|
||||
✔ a task closed on the tracker is missing from the next turn's open list (239.571073ms)
|
||||
✔ a message read a day after it was sent shows the time it was sent (148.998515ms)
|
||||
✔ a decision the human resolves becomes a turn citing the decision and the answer (196.043584ms)
|
||||
✔ a failed state read fails the turn: no adapter runs, the sender hears why, the message is read (103.372577ms)
|
||||
✔ a SIGTERM before the claim stops the runner with exit 0 and no claim (91.622163ms)
|
||||
✔ typed tools carry the runner's capability; launch goes to the host's launch socket (336.226718ms)
|
||||
✔ end_run, organization_revision and change_organization reach the broker with the tool's arguments, and refusals keep their codes (429.635331ms)
|
||||
✔ set_name reaches the broker's name.set with the tool's arguments, and refusals keep their codes (182.337097ms)
|
||||
✔ a RESULT gets no automatic reply; failed turns reply with the reason (1269.003752ms)
|
||||
✔ the bus's launch notice is one turn with no reply, and is not taken again (269.091562ms)
|
||||
✔ SIGTERM during a turn kills the turn's process group and still exits 0 (122.399792ms)
|
||||
✔ founder credentials stop before the claim (20) (162.909348ms)
|
||||
✔ a refused claim exits 21; an ended run's capability exits 22 (165.231771ms)
|
||||
✔ the launch ending under a running session exits 22 (134.851141ms)
|
||||
✔ a broker that stays unreachable exits 23 after brokerRetries polls (234.508622ms)
|
||||
✔ a broker that is down at the claim exits 23, not 21 (78.168597ms)
|
||||
✔ no capability, or a malformed one, on stdin exits 2 (194.303544ms)
|
||||
✔ a missing or malformed policy exits 2 before the claim (120.576748ms)
|
||||
✔ REQ-LIMIT-4 runner brackets its actual harness turn before the reply and read receipt (194.53726ms)
|
||||
✔ REQ-LIMIT-4 a runner at its limit stops at the end of its turn: RESULT and read first, then exit 22 and a limit-check revoke (168.261307ms)
|
||||
✔ landingRequest is the fixed template, with the decision and task ref and nothing else (0.147237ms)
|
||||
✔ each landing entry is one turn before any message, with the state block and the fixed request; it sends nothing and reads nothing (226.715761ms)
|
||||
✔ an empty landing takes no landing turn: the message is turn 1 (195.475495ms)
|
||||
✔ a run in a landing turn isn't released for a second held decision until its landing turns end and it has read its messages (596.516739ms)
|
||||
✔ a malformed landing exits 2 before the claim, with no turn (568.856934ms)
|
||||
✔ row 65 a session.json without a turnEnd of marker or exit, or a harnessEnv of strings, exits 2 before the claim (269.597797ms)
|
||||
✔ row 65 harnessEnv reaches the adapter, and an exit harness needs no turn marker (141.169295ms)
|
||||
✔ row 66 the adapter gets the run's unslop log, and a flagged reply's note rides that reply's RESULT, once (300.426996ms)
|
||||
✔ row 66 a turn with no reply holds its note for the next reply; a broken check is told once (345.164969ms)
|
||||
✔ row 66 unslopNotes keeps a note until sent(), reads only whole lines, and unslopCounts reads a log after the session (1.68702ms)
|
||||
✔ row 66 a clipped answer with both note parts stays under the bus's body limit, and the note under 600 (161.518813ms)
|
||||
✔ row 66 a refused send keeps the note: it rides the next RESULT the session sends (264.81696ms)
|
||||
✔ each repo role's prompt carries exactly its listed skills, each file as the bundle copy and the source (69.791416ms)
|
||||
✔ a skill's files go into the prompt in sorted path order, sub-directories included (9.238961ms)
|
||||
✔ a role with no skills gets no Skills section, no skills directory and an empty manifest list (11.39746ms)
|
||||
✔ an enabled skill the role doesn't list stays out of the prompt (8.706347ms)
|
||||
✔ the bundle copy outlives the source: deactivating a skill after the build leaves the run's copy (4.473957ms)
|
||||
✔ a listed skill that isn't enabled refuses skill-not-enabled, naming the activate command (9.541232ms)
|
||||
✔ a skill directory that isn't plain refuses: a symlinked skill, SKILL.md or sub-file, or a non-file entry (2.643822ms)
|
||||
✔ a skill file that can't go into the prompt refuses: a bad name, non-UTF-8 bytes, or the end marker (3.518581ms)
|
||||
✔ a role's skills over SKILL_BYTES together refuse, naming the skill that crossed it (10.193929ms)
|
||||
✔ each adapter passes the skills only in the prompt file, with skill discovery off (59.00799ms)
|
||||
✔ every role sees read_spec, record writer follows its grant, citation schemas stay strict (25.138022ms)
|
||||
✔ typed socket forwards read content/history and agent record writes, and cannot write a spec (172.529974ms)
|
||||
✔ the PM gets its task verbs and the reads, and no launch (11.972118ms)
|
||||
✔ send_message offers the BLOCK class, beside the classes it already had (3.837774ms)
|
||||
✔ the chief of staff gets launch, send_message, end_run, hire, fire, change_organization and set_name, and no task verbs (4.871494ms)
|
||||
✔ hire and fire send instance.hire and instance.fire under role.hire and role.fire, only for a holder of the grant (22.751702ms)
|
||||
✔ request_staff is the pm's alone: staff.request over message.send, roles and counts bounded (15.291362ms)
|
||||
✔ end_run sends role and reason, no decision; change_organization sends revision and the organization keys (2.689052ms)
|
||||
✔ set_name sends instance and name to name.set under instance.name, only for a holder of that grant (12.695737ms)
|
||||
✔ the organization keys change_organization takes are the broker's ORGANIZATION_KEYS and the settings' SETTINGS_KEYS (0.178758ms)
|
||||
✔ a role without role.end or organization.change gets none of the three tools, and each follows its own grant (12.115972ms)
|
||||
✔ no role's tools send instances or instances.set, and change_organization takes no instance write keys (10.7825ms)
|
||||
✔ the assistant gets send_message, the reads and the web tools (it holds the web grant), no launch (2.17462ms)
|
||||
✔ list_requirements reads the requirement ids, for a task.create holder with a tracker (3.939398ms)
|
||||
✔ a coder gets no launch, no resolve_decision, and no task tools without a tracker (3.125698ms)
|
||||
✔ a coder with a tracker gets its own task tools and no task_reassign (2.258296ms)
|
||||
✔ launch only when the business's launch block names the instance as launcher (3.280204ms)
|
||||
✔ an action outside the instance's authority has no tool (1.994949ms)
|
||||
✔ the review loop: push_working and request_review for the coder, fetch_review and review_verdict for the reviewer, none for the PM (7.387015ms)
|
||||
✔ land_work is there only with land, after push_working, with the task and the decision (4.431191ms)
|
||||
✔ callTool: one JSON line out, the result back, a refusal rejects (16.610729ms)
|
||||
✔ list_tasks takes the broker's filters and pages; get_task takes a task_ref (4.144909ms)
|
||||
✔ callTool sends list_tasks done false unless the session names done; other tools as given (3.985977ms)
|
||||
✔ replyText: compact JSON up to the cap, an error naming the size and the cap over it (1.008682ms)
|
||||
✔ web_search's query maxLength is the web layer's SEARCH_MAX_QUERY_CHARS (4.810935ms)
|
||||
ℹ tests 172
|
||||
ℹ suites 0
|
||||
ℹ pass 172
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 12131.328093
|
||||
@@ -0,0 +1,153 @@
|
||||
npm notice run @mosaic/[email protected] test
|
||||
npm notice run node --test tests/*.test.mjs
|
||||
✔ C2-06 reply schema: free bodies, exact objects and safe refusal reasons (31.081491ms)
|
||||
✔ C2-06 citation setting and all four exact fixed texts (27.31137ms)
|
||||
✔ C2-06 default citation cap passes 20 and refuses 21, even with optional citations (144.940253ms)
|
||||
✔ C2-06 real Git citation scope, reachability, lines and normalized quotes (71.988432ms)
|
||||
✔ C2-06 playground cites pass but cannot state canon (42.141068ms)
|
||||
✔ C2-06 independent universes refuse; a hybrid and only its sources pass (69.134397ms)
|
||||
✔ C2-06 web cites require allowed definition, this session fetch and kept quote (17.090852ms)
|
||||
✔ C2-06 file origin is the path commit and trailer, while last follows served changes (51.160201ms)
|
||||
✔ C2-06 origin uses literal paths even when a filename contains a glob (35.841257ms)
|
||||
✔ C2-06 cited-commit guard reads exactly the C2-05a indexed file set with supporting scope (79.711572ms)
|
||||
✔ C2-06 reply limits fall back independently without coercion or inherited keys (0.78046ms)
|
||||
✔ the same commit, repo path and mapping return the same index, and only mapped files are in it (53.330474ms)
|
||||
✔ a different repo path, mapping or commit gets its own index (73.465944ms)
|
||||
✔ the cache holds at most eight indexes and evicts the least recently used (93.355098ms)
|
||||
✔ a failed read is not kept in the cache (19.15839ms)
|
||||
✔ a missing or unchecked mapping is refused before any read (18.591276ms)
|
||||
✔ a 3,000-file rebuild completes and its time is reported (3339.384537ms)
|
||||
ℹ 3,000-file index rebuild: 3093 ms
|
||||
✔ resolver step 1: a path from the repo root, with or without .md (2.003164ms)
|
||||
✔ resolver step 2: the same path with vaultPrefix/ stripped (0.323373ms)
|
||||
✔ resolver step 3: a path relative to the linking file, never above the repo root (0.278534ms)
|
||||
✔ resolver step 4: a base name that matches exactly one indexed file (0.322938ms)
|
||||
✔ a link into another of her repos resolves to nothing (0.213594ms)
|
||||
✔ wikilink forms, embeds, and links skipped inside code (1.24016ms)
|
||||
✔ only a body embed whose target has an extension other than .md, in any case, is an attachment (0.455416ms)
|
||||
✔ the fixture mapping checks and comes back frozen (2.830981ms)
|
||||
✔ C2-01c: a prefix inside or holding another entry's book refuses library-playground-other-universe (1.34922ms)
|
||||
✔ C2-01c: a prefix equal to a book folder, or holding its own, refuses library-mapping-invalid (0.74756ms)
|
||||
✔ C2-01c: universe-level prefixes lie outside every book, in a plain universe and in a hybrid with no books (1.203696ms)
|
||||
✔ C2-01c: a draft takes kind, name and playground only, and comes back frozen with books [] (1.782129ms)
|
||||
✔ C2-01d: supporting prefixes at book level, universe level, in a hybrid and in a draft, [] when absent (0.643444ms)
|
||||
✔ C2-01d: each supporting prefix rule refuses with its code (2.880363ms)
|
||||
✔ C2-01d: between the lists, a supporting prefix may equal its own playground, and a playground may hold its own supporting (0.978814ms)
|
||||
✔ C2-01d: editor is optional, kept when given, and refuses anything but a plain name and email (5.417269ms)
|
||||
✔ C2-01d: an accepted editor round-trips through a real git commit unchanged (22.81842ms)
|
||||
✔ no playground prefix holds another, and no book folder holds another (1.309845ms)
|
||||
✔ shape refusals: kind, remote, branch, unknown keys, types, manuscript, folder names (1.68793ms)
|
||||
✔ C2-03a sage-2021: user is optional, kept when given, and must be a plain account name (0.986251ms)
|
||||
✔ a hybrid universe is a shape the query code can take (1.4), with sources that must exist (1.600445ms)
|
||||
✔ a caller-supplied fail receives the code, as business file loading will pass it (C2-04) (0.396233ms)
|
||||
✔ scope comes from the path alone (design 1.2) (2.453311ms)
|
||||
✔ C2-04 mirror: exact default path, bare without checkout or remote, and idempotent initialization (82.599485ms)
|
||||
✔ C2-04 mirror: simultaneous creators publish one intact mirror and leave no staging paths (49.399699ms)
|
||||
✔ C2-04 mirror: skipped publication accepts both coreutils statuses without removing the winner (174.577156ms)
|
||||
✔ C2-04 mirror: preserve occupied directories and reject symlink ancestors and code overlaps (20.556264ms)
|
||||
✔ C2-04 mirror: existing metadata accepts only bare Git plus state and the precreated lock (34.414614ms)
|
||||
✔ C2-04 state: missing state is empty only while the served ref is absent (54.101069ms)
|
||||
✔ C2-04 state: valid problems and sync metadata return no content and change no state bytes (57.832223ms)
|
||||
✔ C2-04 state: strict keys, types, times, branch, commit and fixed R messages fail closed (158.515834ms)
|
||||
✔ C2-04 state: symlink, hardlink, non-private state and missing lock refuse without replacement (57.609887ms)
|
||||
✔ C2-04 file: served commit, not HEAD or a caller commit, owns the exact returned text (113.829438ms)
|
||||
✔ C2-04 file: R1, R2 and R7 exclusions and never-synced mirrors cannot return file bodies (124.255784ms)
|
||||
✔ C2-04 lock: a first-sync and fast-forward reader wait for a consistent pair across processes (314.221744ms)
|
||||
✔ C2-04 lock: same-process waits, timeout code, callback expiry and throw release (5038.833094ms)
|
||||
✔ C2-04 lock: owner death releases the kernel lock without replacing its file (54.543028ms)
|
||||
✔ C2-04 lock: a missing flock binary becomes a handled refusal (49.73045ms)
|
||||
✔ C2-04 lock: an unawaited scoped read drains before the lock is released (20.869629ms)
|
||||
✔ the query reply cap equals the harness reply cap (1.544541ms)
|
||||
✔ find is bound to its universe and refuses a call without one (70.281377ms)
|
||||
✔ every result carries its scope, and playground appears only when asked for (39.878964ms)
|
||||
✔ unmapped files never appear in any reply (35.123505ms)
|
||||
✔ a hybrid sees its sources canon, minus exclusions, and no playground (39.679182ms)
|
||||
✔ a hybrid gets a source file it can see, and not an excluded or foreign one (54.602693ms)
|
||||
✔ get lists visible links both ways and drops a target another universe cannot see (50.638492ms)
|
||||
✔ a long list pages by position, never cuts an item, and returns 50 per page (193.227492ms)
|
||||
✔ a page stays under the reply cap when items are large (91.885035ms)
|
||||
✔ a search line too long to fit alone comes back marked, with no excerpt, and the other hits still return (33.20163ms)
|
||||
✔ a find item that cannot fit alone is refused, not cut (46.447292ms)
|
||||
✔ get pages its lines, and the next line picks up where the page stopped (39.12526ms)
|
||||
✔ get refuses a file whose front matter alone is over the cap, and a line alone is over the cap (36.804238ms)
|
||||
✔ get pages the links of a hub note, every page carries the front matter, and the pages add up (1107.995321ms)
|
||||
✔ get rejects a bad links_from (34.377162ms)
|
||||
✔ search returns scoped line hits, case-insensitively, and refuses empty text (30.729667ms)
|
||||
✔ a manuscript call returns one chapter, at most 400 lines, and names its next line (47.791378ms)
|
||||
✔ a manuscript call without a chapter returns the first chapter in path order and names the next (26.366902ms)
|
||||
✔ a chapter name that matches two visible files is refused (25.448584ms)
|
||||
✔ a hybrid reads a source chapter through its declared sources only (39.969561ms)
|
||||
✔ universe info reports a hybrid sources, constraints and notes, and refuses an unknown universe (15.657923ms)
|
||||
✔ an exclusion hides what it names from a hybrid and from nothing else (39.404555ms)
|
||||
✔ PRD 1.14: a lookup that names a book leaves book-null files out (34.647951ms)
|
||||
✔ PRD 1.14: library_manuscript never reads a book-null file (32.637362ms)
|
||||
✔ PRD 1.14: a draft universe has no canon, so its lookups return files only with scope playground (32.338176ms)
|
||||
✔ PRD 1.14: library_universe on a draft returns its kind, name and prefixes (15.442774ms)
|
||||
✔ a hybrid gets a source playground file as null, while the source gets it with scope playground (42.674554ms)
|
||||
✔ the fixture reads clean: every resolver step, appears_in and relationships wikilinks indexed (63.033383ms)
|
||||
✔ R1: executables, symlinks, gitlinks, blobs over 1 MiB and non-UTF-8 text are not indexed (95.339567ms)
|
||||
✔ R2: unmapped paths are reported and not indexed (31.564751ms)
|
||||
✔ R3: front matter not fully parsed stays raw, with the line where parsing stopped (36.896696ms)
|
||||
✔ front matter forms the reader accepts and refuses (1.596508ms)
|
||||
✔ R4: a link to no file, to more than one, or into another repo is reported and not followed (35.504393ms)
|
||||
✔ a block list link carries its item line, a scalar or flow link its key line, and problems follow (37.229678ms)
|
||||
✔ an unresolved attachment embed gives no problem; a link or front matter value to one is R4; a note embed resolves (33.783255ms)
|
||||
✔ an indexed Dr.Quinn.md resolves as a body link, a block list link and an embed (33.230236ms)
|
||||
✔ R5: a canon file that refers into the playground is reported, and the link still goes by path (29.709099ms)
|
||||
✔ R6: a canon file that refers into another universe is reported; a hybrid may refer into its sources (30.970646ms)
|
||||
✔ R7: two paths that differ only in case are both left out (41.126208ms)
|
||||
✔ the reader reads the commit, never the working tree, and refuses a bad commit id (41.98282ms)
|
||||
✔ a bare mirror reads the same as the clone (53.445984ms)
|
||||
✔ renderItems snapshot: fact (1.786386ms)
|
||||
✔ renderItems snapshot: finding (0.299155ms)
|
||||
✔ renderItems snapshot: correction (0.259329ms)
|
||||
✔ renderItems snapshot: question (0.218182ms)
|
||||
✔ renderItems snapshot: idea (0.223821ms)
|
||||
✔ renderItems numbers several items and takes a parsed body as well as a string (1.090019ms)
|
||||
✔ without options a path cite has no badge and is never marked changed (0.280013ms)
|
||||
✔ renderItems snapshot: notice no-cited-answer (0.237711ms)
|
||||
✔ renderItems snapshot: notice no-answer (0.198705ms)
|
||||
✔ renderItems snapshot: notice turn-failed (0.337126ms)
|
||||
✔ a body without the reply shape shows a fixed line and none of its text (0.613863ms)
|
||||
✔ C2-01c: each level gives its universe, and its book or null (4.092943ms)
|
||||
✔ C2-01c: prefixes come first: in a book that holds a prefix, a file outside it is canon and one under it playground (0.607188ms)
|
||||
✔ C2-01c: a canon file linking into a draft gives R6, and into its own universe-level prefix gives R5 (65.023589ms)
|
||||
✔ C2-01d: each supporting level gives its universe, and its book or null (0.8244ms)
|
||||
✔ C2-01d: supporting comes before playground; a folder in both lists is supporting, one in the playground only stays playground (0.633065ms)
|
||||
✔ C2-01d: only .md files are supporting; a .canvas or .base under a supporting prefix is unmapped (0.517375ms)
|
||||
✔ C2-01d: a path passes at book level, universe level, in a draft and in a folder in both lists (2.312377ms)
|
||||
✔ C2-01d: a path of exactly 1024 bytes passes, and 1025 bytes made of multi-byte characters refuses (0.98988ms)
|
||||
✔ C2-01d: a path outside the universe's supporting folders refuses (0.763326ms)
|
||||
✔ C2-01d: malformed paths refuse by class, in order (0.710036ms)
|
||||
✔ C2-01d: a symlink or gitlink on the way, or at the path itself, refuses (0.383033ms)
|
||||
✔ C2-01d: a name that differs from a tree name only in case or Unicode form refuses, at the file or any folder (0.99427ms)
|
||||
✔ the survey prints folder names, counts, key sets and link-form counts, and never text (65.469359ms)
|
||||
✔ folder names print DEL, C1 and bidi controls, U+061C among them, as escapes (37.571162ms)
|
||||
✔ an embed of an attachment counts as an embed and as an attachment; a plain link to one does not (24.053267ms)
|
||||
✔ with --mapping the survey adds scope, resolver step and problem counts (51.551822ms)
|
||||
✔ C2-01d: with --mapping the survey counts supporting files (49.232972ms)
|
||||
✔ survey exit codes: usage 4, bad mapping 3, unreadable repo 2 (19.679523ms)
|
||||
✔ scripts/mosaic library survey reaches the survey (97.237921ms)
|
||||
✔ C2-03a argv: the fixed sequence, one https allow, no other protocol key (2.539459ms)
|
||||
✔ C2-03a argv: only an https URL with a plain host, no userinfo, and a plain user (1.147619ms)
|
||||
✔ C2-03a helper: answers only the exact prompts for the configured host and user (dewey-0765) (43.662638ms)
|
||||
✔ C2-03a first sync: served is the fetched tip, HEAD is served, the survey reads it, and the token stays in the slot (199.624214ms)
|
||||
✔ C2-03a fast-forward: served moves, problems are rebuilt, and a repeat changes only lastFetch (272.12795ms)
|
||||
✔ C2-03a Filbert N2: a read that took served before a sync still finds its objects after served moves (255.892244ms)
|
||||
✔ C2-03a overlap: a reader during a sync sees the old pair or the new one, never a mix (220.077465ms)
|
||||
✔ C2-03a diverged: a non-fast-forward keeps serving and holds until a human accepts the tip (511.485441ms)
|
||||
✔ C2-03a accept starts the record over, so a changed branch gets a fresh state (204.895458ms)
|
||||
✔ C2-03a fetch failure: a wrong token keeps serving and records the error, lastFetch unchanged (210.171392ms)
|
||||
✔ C2-03a a failed first fetch records the error with nothing served (57.52009ms)
|
||||
✔ C2-03a a 302 to another host fails the fetch and the other host sees nothing (68.211135ms)
|
||||
✔ C2-03a the slot: missing or unsafe refuses before git, and sync never opens it (65.636096ms)
|
||||
✔ C2-03a sage-2021: an entry with no user refuses library-remote-invalid and runs no git (34.004871ms)
|
||||
✔ C2-03a one sync per mirror: an overlapping call refuses library-sync-busy (129.134012ms)
|
||||
ℹ tests 142
|
||||
ℹ suites 0
|
||||
ℹ pass 142
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 6490.060843
|
||||
@@ -0,0 +1,2 @@
|
||||
1 match: replyLimitsFence(old, document, actor);
|
||||
1 match: replyLimitsFence(old, written, actor);
|
||||
@@ -0,0 +1 @@
|
||||
M5-hide-library-unavailable: killed (control green, mutant exit 1, hashes restored, restored green)
|
||||
@@ -0,0 +1,11 @@
|
||||
✔ C2-06 held library lock gives the agent citation-unavailable and its retry reason (5151.319291ms)
|
||||
✔ C2-06 malformed sync state is availability failure, never a fabricated invalid cite (37.53806ms)
|
||||
✔ C2-06 no mirror or freshly initialized empty mirror still means no served citation (35.257703ms)
|
||||
ℹ tests 3
|
||||
ℹ suites 0
|
||||
ℹ pass 3
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 5310.30031
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
✔ C2-06 held library lock gives the agent citation-unavailable and its retry reason (5147.642347ms)
|
||||
✔ C2-06 malformed sync state is availability failure, never a fabricated invalid cite (32.256875ms)
|
||||
✔ C2-06 no mirror or freshly initialized empty mirror still means no served citation (31.701926ms)
|
||||
ℹ tests 3
|
||||
ℹ suites 0
|
||||
ℹ pass 3
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 5295.499085
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
eeca81ab965f9e94f930ee5f51d16f019af6368bc6c3994895e204f7a54ec8d2 packages/bus/src/broker.mjs
|
||||
ad3c686a089f67f3c89610937c6fc9b32367cea5d9735125d89bef042082d4e8 packages/bus/src/client.mjs
|
||||
36b05dd3119e5929211aa1cc5d45c5043f5a1c34567ddc7cac8f002835d44abe packages/bus/src/runtime.mjs
|
||||
66b26d131a19f4f411686427274936850c1ff0aed11e9b281ae4aadcf4b289fc packages/bus/src/server.mjs
|
||||
cdd0304ec25ef1ad3e31c52502fa46f2c80bd77c8d3c2e13f8ed4b5328f342c9 packages/bus/tests/citation-availability.test.mjs
|
||||
2e05074cd9d15d810103658af3858161cee2af78b0a2e1ba910222fab3e84401 packages/bus/tests/citation-guard.test.mjs
|
||||
2c7a2102e2e0244876e41b664f4f706baefe3375100b956655551db1230f5da3 packages/bus/tests/citation-helpers.mjs
|
||||
168dcac99d9bfdfdf5ff0eaa2c0fff91595b351b4d0092dc299532c9c32869f0 packages/bus/tests/citation-runtime.test.mjs
|
||||
abaeac64f2c3bf8ba83c9a4488edd9105c4707a6564560c5333d5421445653af packages/business/src/business.mjs
|
||||
3a6044de5d1ca2cc35c5285b460c3e402b4274837e5d88b97f489797f6004903 packages/business/src/organization.mjs
|
||||
4d2eb11beaa80175e524af1b95c81e7164990fba1d3e1754f5ba06eee390a14f packages/business/tests/reply-limits.test.mjs
|
||||
a2bb98734bcc2556f8b2168f0faf8a89f7064c3f0aa49feb7d1975d596192f09 packages/cli/README.md
|
||||
2f291a71f490f2741edada7a3e3788500f8976a08eb8ab1411f6c5982f778260 packages/cli/src/limits.mjs
|
||||
f38af2d46d5f5f6388f599912507b94b87a0bf9dcc2104bb2187c38ee35118d5 packages/cli/tests/reply-limits.test.mjs
|
||||
6ad72b4245e0a66e32725941900c1ece64c2e5de2fb73d65c8e042b4f3a691a6 packages/harness/src/runner.mjs
|
||||
a5ef1b65230239a7baf6d0e8f2b8a51c0516348c7c4339a55b3f0a1a6ff531ba packages/harness/tests/citation-runner.test.mjs
|
||||
330bc71bf6c7e64d3ddb70440903d2d9acf7878d44a49d7e30c2352ee4c807ec packages/harness/tests/fixtures/citation-adapter.mjs
|
||||
f710d9600a17f6e2989a289cfe84e58f161d86c7306605946ce05fa71b364eb2 packages/library/src/guard.mjs
|
||||
c0d630798914e300e461c247340533328e97119e54909c6a9406340e61fed8b7 packages/library/src/index.mjs
|
||||
98ef45ed61144aaea44d8aea1ac43082b6d340297e46846d01772da38728e530 packages/library/src/limits.mjs
|
||||
7b46f47b5e9d6b554b5d39bce2cd95c4610f5f35b8ab8fdc5a2864b3214be809 packages/library/src/reply-protocol.mjs
|
||||
406146ebbce3710f308243b684a1c17e7626c1b65a4468489364317e31537a48 packages/library/tests/guard.test.mjs
|
||||
39c8e6c8250a13fa43015fb2c407195e30ee642f729a9f6a644c38b4ea758a72 packages/seat/src/sandbox.mjs
|
||||
@@ -0,0 +1,68 @@
|
||||
✖ C2-06 held library lock gives the agent citation-unavailable and its retry reason (5108.905478ms)
|
||||
✖ C2-06 malformed sync state is availability failure, never a fabricated invalid cite (40.518617ms)
|
||||
✔ C2-06 no mirror or freshly initialized empty mirror still means no served citation (37.68422ms)
|
||||
ℹ tests 3
|
||||
ℹ suites 0
|
||||
ℹ pass 1
|
||||
ℹ fail 2
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 5261.169843
|
||||
|
||||
✖ failing tests:
|
||||
|
||||
test at packages/bus/tests/citation-availability.test.mjs:13:1
|
||||
✖ C2-06 held library lock gives the agent citation-unavailable and its retry reason (5108.905478ms)
|
||||
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
|
||||
+ actual - expected
|
||||
|
||||
+ 'citation-invalid'
|
||||
- 'citation-unavailable'
|
||||
^
|
||||
|
||||
at Object.<anonymous> (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-pd3x2htc/packages/bus/tests/citation-availability.test.mjs:29:14)
|
||||
at expectedException (node:assert:547:17)
|
||||
at expectsError (node:assert:672:21)
|
||||
at strict.rejects (node:assert:738:3)
|
||||
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||
at async file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-pd3x2htc/packages/bus/tests/citation-availability.test.mjs:28:5
|
||||
at async withLibraryLock (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-pd3x2htc/packages/library/src/mirror.mjs:171:18)
|
||||
at async TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-pd3x2htc/packages/bus/tests/citation-availability.test.mjs:27:3)
|
||||
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: 'citation-invalid',
|
||||
expected: 'citation-unavailable',
|
||||
operator: 'strictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
|
||||
test at packages/bus/tests/citation-availability.test.mjs:40:1
|
||||
✖ C2-06 malformed sync state is availability failure, never a fabricated invalid cite (40.518617ms)
|
||||
AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal:
|
||||
+ actual - expected
|
||||
|
||||
Comparison {
|
||||
+ code: 'citation-invalid'
|
||||
- code: 'citation-unavailable'
|
||||
}
|
||||
|
||||
at async TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-pd3x2htc/packages/bus/tests/citation-availability.test.mjs:45:3)
|
||||
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: Error: citation-invalid: citation 1 (Book One/Characters/Mara Vell.md) isn't an indexed file at a commit reachable from the served commit
|
||||
at refuse (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-pd3x2htc/packages/library/src/guard.mjs:24:42)
|
||||
at checkReply (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-pd3x2htc/packages/library/src/guard.mjs:80:25)
|
||||
at async waitForActual (node:assert:615:5)
|
||||
at async strict.rejects (node:assert:738:25)
|
||||
at async TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-pd3x2htc/packages/bus/tests/citation-availability.test.mjs:45:3)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7),
|
||||
expected: { code: 'citation-unavailable' },
|
||||
operator: 'rejects',
|
||||
diff: 'simple'
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
M5-hide-library-unavailable: killed (control green, mutant exit 1, hashes restored, restored green)
|
||||
@@ -0,0 +1,5 @@
|
||||
M1-writer-fence: killed (control green, mutant exit 1, hashes restored, restored green)
|
||||
M2-incoming-human: killed (control green, mutant exit 1, hashes restored, restored green)
|
||||
M3-split-check-transaction: killed (control green, mutant exit 1, hashes restored, restored green)
|
||||
M5-hide-library-unavailable: killed (control green, mutant exit 1, hashes restored, restored green)
|
||||
M4-drop-client-reason: killed (control green, mutant exit 1, hashes restored, restored green)
|
||||
@@ -0,0 +1,14 @@
|
||||
✔ C2-06 M11 human replacement works; omitted settings return to defaults (29.278355ms)
|
||||
✔ C2-06 M11 agents and tester cannot change settings, including by changing human (22.040025ms)
|
||||
✔ C2-06 M11 serialization cannot replace settings after the first fence (8.805323ms)
|
||||
✔ C2-06 M11 an unrelated actor cannot appoint itself human and change reply limits (8.829275ms)
|
||||
✔ C2-06 invalid setter values preserve the business and changes.jsonl (9.171416ms)
|
||||
✔ C2-06 validator accepts hand-edited settings; raw reader fails closed on invalid files (10.423621ms)
|
||||
ℹ tests 6
|
||||
ℹ suites 0
|
||||
ℹ pass 6
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 139.016448
|
||||
@@ -0,0 +1,14 @@
|
||||
✔ C2-06 M11 human replacement works; omitted settings return to defaults (27.397407ms)
|
||||
✔ C2-06 M11 agents and tester cannot change settings, including by changing human (23.565905ms)
|
||||
✔ C2-06 M11 serialization cannot replace settings after the first fence (8.312613ms)
|
||||
✔ C2-06 M11 an unrelated actor cannot appoint itself human and change reply limits (8.050944ms)
|
||||
✔ C2-06 invalid setter values preserve the business and changes.jsonl (8.746752ms)
|
||||
✔ C2-06 validator accepts hand-edited settings; raw reader fails closed on invalid files (11.061782ms)
|
||||
ℹ tests 6
|
||||
ℹ suites 0
|
||||
ℹ pass 6
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 137.787038
|
||||
@@ -0,0 +1,23 @@
|
||||
eeca81ab965f9e94f930ee5f51d16f019af6368bc6c3994895e204f7a54ec8d2 packages/bus/src/broker.mjs
|
||||
ad3c686a089f67f3c89610937c6fc9b32367cea5d9735125d89bef042082d4e8 packages/bus/src/client.mjs
|
||||
36b05dd3119e5929211aa1cc5d45c5043f5a1c34567ddc7cac8f002835d44abe packages/bus/src/runtime.mjs
|
||||
66b26d131a19f4f411686427274936850c1ff0aed11e9b281ae4aadcf4b289fc packages/bus/src/server.mjs
|
||||
cdd0304ec25ef1ad3e31c52502fa46f2c80bd77c8d3c2e13f8ed4b5328f342c9 packages/bus/tests/citation-availability.test.mjs
|
||||
2e05074cd9d15d810103658af3858161cee2af78b0a2e1ba910222fab3e84401 packages/bus/tests/citation-guard.test.mjs
|
||||
2c7a2102e2e0244876e41b664f4f706baefe3375100b956655551db1230f5da3 packages/bus/tests/citation-helpers.mjs
|
||||
9768b6dc5ae078c5cc4f76473097287b74c5bc5853d39e1f57f153e646f861af packages/bus/tests/citation-runtime.test.mjs
|
||||
abaeac64f2c3bf8ba83c9a4488edd9105c4707a6564560c5333d5421445653af packages/business/src/business.mjs
|
||||
3a6044de5d1ca2cc35c5285b460c3e402b4274837e5d88b97f489797f6004903 packages/business/src/organization.mjs
|
||||
4d2eb11beaa80175e524af1b95c81e7164990fba1d3e1754f5ba06eee390a14f packages/business/tests/reply-limits.test.mjs
|
||||
a2bb98734bcc2556f8b2168f0faf8a89f7064c3f0aa49feb7d1975d596192f09 packages/cli/README.md
|
||||
2f291a71f490f2741edada7a3e3788500f8976a08eb8ab1411f6c5982f778260 packages/cli/src/limits.mjs
|
||||
f38af2d46d5f5f6388f599912507b94b87a0bf9dcc2104bb2187c38ee35118d5 packages/cli/tests/reply-limits.test.mjs
|
||||
6ad72b4245e0a66e32725941900c1ece64c2e5de2fb73d65c8e042b4f3a691a6 packages/harness/src/runner.mjs
|
||||
a5ef1b65230239a7baf6d0e8f2b8a51c0516348c7c4339a55b3f0a1a6ff531ba packages/harness/tests/citation-runner.test.mjs
|
||||
330bc71bf6c7e64d3ddb70440903d2d9acf7878d44a49d7e30c2352ee4c807ec packages/harness/tests/fixtures/citation-adapter.mjs
|
||||
f710d9600a17f6e2989a289cfe84e58f161d86c7306605946ce05fa71b364eb2 packages/library/src/guard.mjs
|
||||
c0d630798914e300e461c247340533328e97119e54909c6a9406340e61fed8b7 packages/library/src/index.mjs
|
||||
98ef45ed61144aaea44d8aea1ac43082b6d340297e46846d01772da38728e530 packages/library/src/limits.mjs
|
||||
7b46f47b5e9d6b554b5d39bce2cd95c4610f5f35b8ab8fdc5a2864b3214be809 packages/library/src/reply-protocol.mjs
|
||||
406146ebbce3710f308243b684a1c17e7626c1b65a4468489364317e31537a48 packages/library/tests/guard.test.mjs
|
||||
39c8e6c8250a13fa43015fb2c407195e30ee642f729a9f6a644c38b4ea758a72 packages/seat/src/sandbox.mjs
|
||||
@@ -0,0 +1,73 @@
|
||||
✔ C2-06 M11 human replacement works; omitted settings return to defaults (26.703775ms)
|
||||
✖ C2-06 M11 agents and tester cannot change settings, including by changing human (12.156717ms)
|
||||
✖ C2-06 M11 serialization cannot replace settings after the first fence (11.431272ms)
|
||||
✖ C2-06 M11 an unrelated actor cannot appoint itself human and change reply limits (14.308135ms)
|
||||
✔ C2-06 invalid setter values preserve the business and changes.jsonl (9.043165ms)
|
||||
✔ C2-06 validator accepts hand-edited settings; raw reader fails closed on invalid files (9.576698ms)
|
||||
ℹ tests 6
|
||||
ℹ suites 0
|
||||
ℹ pass 3
|
||||
ℹ fail 3
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 131.91294
|
||||
|
||||
✖ failing tests:
|
||||
|
||||
test at packages/business/tests/reply-limits.test.mjs:34:1
|
||||
✖ C2-06 M11 agents and tester cannot change settings, including by changing human (12.156717ms)
|
||||
AssertionError [ERR_ASSERTION]: Missing expected exception.
|
||||
at refused (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-m6rnq3wd/packages/business/tests/reply-limits.test.mjs:22:10)
|
||||
at TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-m6rnq3wd/packages/business/tests/reply-limits.test.mjs:37:5)
|
||||
at Test.runInAsyncScope (node:async_hooks:226:14)
|
||||
at Test.run (node:internal/test_runner/test:1402:25)
|
||||
at Test.processPendingSubtests (node:internal/test_runner/test:974:18)
|
||||
at Test.postRun (node:internal/test_runner/test:1542:19)
|
||||
at Test.run (node:internal/test_runner/test:1467:12)
|
||||
at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) {
|
||||
generatedMessage: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: undefined,
|
||||
expected: { code: 'organization-reply-limits-human-only' },
|
||||
operator: 'throws',
|
||||
diff: 'simple'
|
||||
}
|
||||
|
||||
test at packages/business/tests/reply-limits.test.mjs:43:1
|
||||
✖ C2-06 M11 serialization cannot replace settings after the first fence (11.431272ms)
|
||||
AssertionError [ERR_ASSERTION]: Missing expected exception.
|
||||
at refused (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-m6rnq3wd/packages/business/tests/reply-limits.test.mjs:22:10)
|
||||
at TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-m6rnq3wd/packages/business/tests/reply-limits.test.mjs:45:3)
|
||||
at Test.runInAsyncScope (node:async_hooks:226:14)
|
||||
at Test.run (node:internal/test_runner/test:1402:25)
|
||||
at Test.processPendingSubtests (node:internal/test_runner/test:974:18)
|
||||
at Test.postRun (node:internal/test_runner/test:1542:19)
|
||||
at Test.run (node:internal/test_runner/test:1467:12)
|
||||
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
|
||||
generatedMessage: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: undefined,
|
||||
expected: { code: 'organization-reply-limits-human-only' },
|
||||
operator: 'throws',
|
||||
diff: 'simple'
|
||||
}
|
||||
|
||||
test at packages/business/tests/reply-limits.test.mjs:52:1
|
||||
✖ C2-06 M11 an unrelated actor cannot appoint itself human and change reply limits (14.308135ms)
|
||||
AssertionError [ERR_ASSERTION]: Missing expected exception.
|
||||
at refused (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-m6rnq3wd/packages/business/tests/reply-limits.test.mjs:22:10)
|
||||
at TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-m6rnq3wd/packages/business/tests/reply-limits.test.mjs:54:3)
|
||||
at Test.runInAsyncScope (node:async_hooks:226:14)
|
||||
at Test.run (node:internal/test_runner/test:1402:25)
|
||||
at Test.processPendingSubtests (node:internal/test_runner/test:974:18)
|
||||
at Test.postRun (node:internal/test_runner/test:1542:19)
|
||||
at Test.run (node:internal/test_runner/test:1467:12)
|
||||
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
|
||||
generatedMessage: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: undefined,
|
||||
expected: { code: 'organization-reply-limits-human-only' },
|
||||
operator: 'throws',
|
||||
diff: 'simple'
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
✔ C2-06 M11 human replacement works; omitted settings return to defaults (31.955623ms)
|
||||
✔ C2-06 M11 agents and tester cannot change settings, including by changing human (22.832309ms)
|
||||
✔ C2-06 M11 serialization cannot replace settings after the first fence (9.274775ms)
|
||||
✔ C2-06 M11 an unrelated actor cannot appoint itself human and change reply limits (8.69039ms)
|
||||
✔ C2-06 invalid setter values preserve the business and changes.jsonl (8.733202ms)
|
||||
✔ C2-06 validator accepts hand-edited settings; raw reader fails closed on invalid files (10.441869ms)
|
||||
ℹ tests 6
|
||||
ℹ suites 0
|
||||
ℹ pass 6
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 143.570268
|
||||
@@ -0,0 +1,14 @@
|
||||
✔ C2-06 M11 human replacement works; omitted settings return to defaults (29.948602ms)
|
||||
✔ C2-06 M11 agents and tester cannot change settings, including by changing human (22.139351ms)
|
||||
✔ C2-06 M11 serialization cannot replace settings after the first fence (9.054641ms)
|
||||
✔ C2-06 M11 an unrelated actor cannot appoint itself human and change reply limits (8.381635ms)
|
||||
✔ C2-06 invalid setter values preserve the business and changes.jsonl (9.081946ms)
|
||||
✔ C2-06 validator accepts hand-edited settings; raw reader fails closed on invalid files (10.33004ms)
|
||||
ℹ tests 6
|
||||
ℹ suites 0
|
||||
ℹ pass 6
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 141.370383
|
||||
@@ -0,0 +1,23 @@
|
||||
eeca81ab965f9e94f930ee5f51d16f019af6368bc6c3994895e204f7a54ec8d2 packages/bus/src/broker.mjs
|
||||
ad3c686a089f67f3c89610937c6fc9b32367cea5d9735125d89bef042082d4e8 packages/bus/src/client.mjs
|
||||
36b05dd3119e5929211aa1cc5d45c5043f5a1c34567ddc7cac8f002835d44abe packages/bus/src/runtime.mjs
|
||||
66b26d131a19f4f411686427274936850c1ff0aed11e9b281ae4aadcf4b289fc packages/bus/src/server.mjs
|
||||
cdd0304ec25ef1ad3e31c52502fa46f2c80bd77c8d3c2e13f8ed4b5328f342c9 packages/bus/tests/citation-availability.test.mjs
|
||||
2e05074cd9d15d810103658af3858161cee2af78b0a2e1ba910222fab3e84401 packages/bus/tests/citation-guard.test.mjs
|
||||
2c7a2102e2e0244876e41b664f4f706baefe3375100b956655551db1230f5da3 packages/bus/tests/citation-helpers.mjs
|
||||
9768b6dc5ae078c5cc4f76473097287b74c5bc5853d39e1f57f153e646f861af packages/bus/tests/citation-runtime.test.mjs
|
||||
abaeac64f2c3bf8ba83c9a4488edd9105c4707a6564560c5333d5421445653af packages/business/src/business.mjs
|
||||
3a6044de5d1ca2cc35c5285b460c3e402b4274837e5d88b97f489797f6004903 packages/business/src/organization.mjs
|
||||
4d2eb11beaa80175e524af1b95c81e7164990fba1d3e1754f5ba06eee390a14f packages/business/tests/reply-limits.test.mjs
|
||||
a2bb98734bcc2556f8b2168f0faf8a89f7064c3f0aa49feb7d1975d596192f09 packages/cli/README.md
|
||||
2f291a71f490f2741edada7a3e3788500f8976a08eb8ab1411f6c5982f778260 packages/cli/src/limits.mjs
|
||||
f38af2d46d5f5f6388f599912507b94b87a0bf9dcc2104bb2187c38ee35118d5 packages/cli/tests/reply-limits.test.mjs
|
||||
6ad72b4245e0a66e32725941900c1ece64c2e5de2fb73d65c8e042b4f3a691a6 packages/harness/src/runner.mjs
|
||||
a5ef1b65230239a7baf6d0e8f2b8a51c0516348c7c4339a55b3f0a1a6ff531ba packages/harness/tests/citation-runner.test.mjs
|
||||
330bc71bf6c7e64d3ddb70440903d2d9acf7878d44a49d7e30c2352ee4c807ec packages/harness/tests/fixtures/citation-adapter.mjs
|
||||
f710d9600a17f6e2989a289cfe84e58f161d86c7306605946ce05fa71b364eb2 packages/library/src/guard.mjs
|
||||
c0d630798914e300e461c247340533328e97119e54909c6a9406340e61fed8b7 packages/library/src/index.mjs
|
||||
98ef45ed61144aaea44d8aea1ac43082b6d340297e46846d01772da38728e530 packages/library/src/limits.mjs
|
||||
7b46f47b5e9d6b554b5d39bce2cd95c4610f5f35b8ab8fdc5a2864b3214be809 packages/library/src/reply-protocol.mjs
|
||||
406146ebbce3710f308243b684a1c17e7626c1b65a4468489364317e31537a48 packages/library/tests/guard.test.mjs
|
||||
39c8e6c8250a13fa43015fb2c407195e30ee642f729a9f6a644c38b4ea758a72 packages/seat/src/sandbox.mjs
|
||||
@@ -0,0 +1,35 @@
|
||||
✔ C2-06 M11 human replacement works; omitted settings return to defaults (28.334896ms)
|
||||
✔ C2-06 M11 agents and tester cannot change settings, including by changing human (22.541196ms)
|
||||
✔ C2-06 M11 serialization cannot replace settings after the first fence (8.304131ms)
|
||||
✖ C2-06 M11 an unrelated actor cannot appoint itself human and change reply limits (11.712463ms)
|
||||
✔ C2-06 invalid setter values preserve the business and changes.jsonl (8.875517ms)
|
||||
✔ C2-06 validator accepts hand-edited settings; raw reader fails closed on invalid files (9.882976ms)
|
||||
ℹ tests 6
|
||||
ℹ suites 0
|
||||
ℹ pass 5
|
||||
ℹ fail 1
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 140.418146
|
||||
|
||||
✖ failing tests:
|
||||
|
||||
test at packages/business/tests/reply-limits.test.mjs:52:1
|
||||
✖ C2-06 M11 an unrelated actor cannot appoint itself human and change reply limits (11.712463ms)
|
||||
AssertionError [ERR_ASSERTION]: Missing expected exception.
|
||||
at refused (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-_aqjby1c/packages/business/tests/reply-limits.test.mjs:22:10)
|
||||
at TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-_aqjby1c/packages/business/tests/reply-limits.test.mjs:54:3)
|
||||
at Test.runInAsyncScope (node:async_hooks:226:14)
|
||||
at Test.run (node:internal/test_runner/test:1402:25)
|
||||
at Test.processPendingSubtests (node:internal/test_runner/test:974:18)
|
||||
at Test.postRun (node:internal/test_runner/test:1542:19)
|
||||
at Test.run (node:internal/test_runner/test:1467:12)
|
||||
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
|
||||
generatedMessage: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: undefined,
|
||||
expected: { code: 'organization-reply-limits-human-only' },
|
||||
operator: 'throws',
|
||||
diff: 'simple'
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
✔ C2-06 coder send_message guard covers every table refusal; inserts nothing (118.943843ms)
|
||||
✔ C2-06 research send_message guard covers every table refusal; inserts nothing (94.790271ms)
|
||||
✔ C2-06 stored check carries the file author trailer at an unrelated cited tip (65.901789ms)
|
||||
✔ C2-06 supporting cite cannot state canon, including a folder also marked playground (41.908138ms)
|
||||
✔ C2-06 supporting file stores supporting scope and its real agent trailer (48.179621ms)
|
||||
✔ C2-06 check evidence and insert are atomic when storing evidence fails (41.94764ms)
|
||||
✔ C2-06 live limits change both directions; unreadable file keeps checks and exact fixed texts (56.521104ms)
|
||||
✔ C2-06 page store is session-local, caps 20 fetches and 200 KiB, drops at disconnect (88.283371ms)
|
||||
✔ C2-06 transport passes safe capped guard reason; ordinary refusal envelope is byte-identical (55.47311ms)
|
||||
✔ C2-06 non-library businesses retain role.claim shape and unguarded free sends (26.321347ms)
|
||||
✔ C2-06 thread messages carry file/last evidence with one read per distinct path (77.5591ms)
|
||||
✔ C2-06 guarded request snapshot cannot change between check and insert (24.639839ms)
|
||||
✔ C2-06 library.limits.set is human-only and invalid settings leave file and receipts unchanged (42.159103ms)
|
||||
ℹ tests 13
|
||||
ℹ suites 0
|
||||
ℹ pass 13
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 866.146033
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
✔ C2-06 coder send_message guard covers every table refusal; inserts nothing (162.15169ms)
|
||||
✔ C2-06 research send_message guard covers every table refusal; inserts nothing (151.110586ms)
|
||||
✔ C2-06 stored check carries the file author trailer at an unrelated cited tip (100.984805ms)
|
||||
✔ C2-06 supporting cite cannot state canon, including a folder also marked playground (81.389166ms)
|
||||
✔ C2-06 supporting file stores supporting scope and its real agent trailer (92.148118ms)
|
||||
✔ C2-06 check evidence and insert are atomic when storing evidence fails (78.197117ms)
|
||||
✔ C2-06 live limits change both directions; unreadable file keeps checks and exact fixed texts (168.055107ms)
|
||||
✔ C2-06 page store is session-local, caps 20 fetches and 200 KiB, drops at disconnect (271.850306ms)
|
||||
✔ C2-06 transport passes safe capped guard reason; ordinary refusal envelope is byte-identical (92.491602ms)
|
||||
✔ C2-06 non-library businesses retain role.claim shape and unguarded free sends (61.315017ms)
|
||||
✔ C2-06 thread messages carry file/last evidence with one read per distinct path (126.633466ms)
|
||||
✔ C2-06 guarded request snapshot cannot change between check and insert (61.436932ms)
|
||||
✔ C2-06 library.limits.set is human-only and invalid settings leave file and receipts unchanged (118.486786ms)
|
||||
ℹ tests 13
|
||||
ℹ suites 0
|
||||
ℹ pass 13
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 1649.634687
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
eeca81ab965f9e94f930ee5f51d16f019af6368bc6c3994895e204f7a54ec8d2 packages/bus/src/broker.mjs
|
||||
ad3c686a089f67f3c89610937c6fc9b32367cea5d9735125d89bef042082d4e8 packages/bus/src/client.mjs
|
||||
36b05dd3119e5929211aa1cc5d45c5043f5a1c34567ddc7cac8f002835d44abe packages/bus/src/runtime.mjs
|
||||
66b26d131a19f4f411686427274936850c1ff0aed11e9b281ae4aadcf4b289fc packages/bus/src/server.mjs
|
||||
cdd0304ec25ef1ad3e31c52502fa46f2c80bd77c8d3c2e13f8ed4b5328f342c9 packages/bus/tests/citation-availability.test.mjs
|
||||
2e05074cd9d15d810103658af3858161cee2af78b0a2e1ba910222fab3e84401 packages/bus/tests/citation-guard.test.mjs
|
||||
2c7a2102e2e0244876e41b664f4f706baefe3375100b956655551db1230f5da3 packages/bus/tests/citation-helpers.mjs
|
||||
9768b6dc5ae078c5cc4f76473097287b74c5bc5853d39e1f57f153e646f861af packages/bus/tests/citation-runtime.test.mjs
|
||||
abaeac64f2c3bf8ba83c9a4488edd9105c4707a6564560c5333d5421445653af packages/business/src/business.mjs
|
||||
3a6044de5d1ca2cc35c5285b460c3e402b4274837e5d88b97f489797f6004903 packages/business/src/organization.mjs
|
||||
4d2eb11beaa80175e524af1b95c81e7164990fba1d3e1754f5ba06eee390a14f packages/business/tests/reply-limits.test.mjs
|
||||
a2bb98734bcc2556f8b2168f0faf8a89f7064c3f0aa49feb7d1975d596192f09 packages/cli/README.md
|
||||
2f291a71f490f2741edada7a3e3788500f8976a08eb8ab1411f6c5982f778260 packages/cli/src/limits.mjs
|
||||
f38af2d46d5f5f6388f599912507b94b87a0bf9dcc2104bb2187c38ee35118d5 packages/cli/tests/reply-limits.test.mjs
|
||||
6ad72b4245e0a66e32725941900c1ece64c2e5de2fb73d65c8e042b4f3a691a6 packages/harness/src/runner.mjs
|
||||
a5ef1b65230239a7baf6d0e8f2b8a51c0516348c7c4339a55b3f0a1a6ff531ba packages/harness/tests/citation-runner.test.mjs
|
||||
330bc71bf6c7e64d3ddb70440903d2d9acf7878d44a49d7e30c2352ee4c807ec packages/harness/tests/fixtures/citation-adapter.mjs
|
||||
f710d9600a17f6e2989a289cfe84e58f161d86c7306605946ce05fa71b364eb2 packages/library/src/guard.mjs
|
||||
c0d630798914e300e461c247340533328e97119e54909c6a9406340e61fed8b7 packages/library/src/index.mjs
|
||||
98ef45ed61144aaea44d8aea1ac43082b6d340297e46846d01772da38728e530 packages/library/src/limits.mjs
|
||||
7b46f47b5e9d6b554b5d39bce2cd95c4610f5f35b8ab8fdc5a2864b3214be809 packages/library/src/reply-protocol.mjs
|
||||
406146ebbce3710f308243b684a1c17e7626c1b65a4468489364317e31537a48 packages/library/tests/guard.test.mjs
|
||||
39c8e6c8250a13fa43015fb2c407195e30ee642f729a9f6a644c38b4ea758a72 packages/seat/src/sandbox.mjs
|
||||
@@ -0,0 +1,41 @@
|
||||
✔ C2-06 coder send_message guard covers every table refusal; inserts nothing (121.738375ms)
|
||||
✔ C2-06 research send_message guard covers every table refusal; inserts nothing (94.199334ms)
|
||||
✔ C2-06 stored check carries the file author trailer at an unrelated cited tip (59.307121ms)
|
||||
✔ C2-06 supporting cite cannot state canon, including a folder also marked playground (41.252933ms)
|
||||
✔ C2-06 supporting file stores supporting scope and its real agent trailer (48.700382ms)
|
||||
✖ C2-06 check evidence and insert are atomic when storing evidence fails (42.434516ms)
|
||||
✔ C2-06 live limits change both directions; unreadable file keeps checks and exact fixed texts (56.552861ms)
|
||||
✔ C2-06 page store is session-local, caps 20 fetches and 200 KiB, drops at disconnect (88.426285ms)
|
||||
✔ C2-06 transport passes safe capped guard reason; ordinary refusal envelope is byte-identical (54.352185ms)
|
||||
✔ C2-06 non-library businesses retain role.claim shape and unguarded free sends (26.064514ms)
|
||||
✔ C2-06 thread messages carry file/last evidence with one read per distinct path (81.176348ms)
|
||||
✔ C2-06 guarded request snapshot cannot change between check and insert (25.324993ms)
|
||||
✔ C2-06 library.limits.set is human-only and invalid settings leave file and receipts unchanged (42.147552ms)
|
||||
ℹ tests 13
|
||||
ℹ suites 0
|
||||
ℹ pass 12
|
||||
ℹ fail 1
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 872.02572
|
||||
|
||||
✖ failing tests:
|
||||
|
||||
test at packages/bus/tests/citation-guard.test.mjs:71:1
|
||||
✖ C2-06 check evidence and insert are atomic when storing evidence fails (42.434516ms)
|
||||
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
|
||||
|
||||
1 !== 0
|
||||
|
||||
at TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-etkv3bqf/packages/bus/tests/citation-guard.test.mjs:76: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: 1,
|
||||
expected: 0,
|
||||
operator: 'strictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
✔ C2-06 coder send_message guard covers every table refusal; inserts nothing (107.311079ms)
|
||||
✔ C2-06 research send_message guard covers every table refusal; inserts nothing (92.235404ms)
|
||||
✔ C2-06 stored check carries the file author trailer at an unrelated cited tip (59.017311ms)
|
||||
✔ C2-06 supporting cite cannot state canon, including a folder also marked playground (41.107066ms)
|
||||
✔ C2-06 supporting file stores supporting scope and its real agent trailer (47.696908ms)
|
||||
✔ C2-06 check evidence and insert are atomic when storing evidence fails (41.214066ms)
|
||||
✔ C2-06 live limits change both directions; unreadable file keeps checks and exact fixed texts (54.665908ms)
|
||||
✔ C2-06 page store is session-local, caps 20 fetches and 200 KiB, drops at disconnect (86.001777ms)
|
||||
✔ C2-06 transport passes safe capped guard reason; ordinary refusal envelope is byte-identical (55.168942ms)
|
||||
✔ C2-06 non-library businesses retain role.claim shape and unguarded free sends (26.744539ms)
|
||||
✔ C2-06 thread messages carry file/last evidence with one read per distinct path (79.212003ms)
|
||||
✔ C2-06 guarded request snapshot cannot change between check and insert (24.722314ms)
|
||||
✔ C2-06 library.limits.set is human-only and invalid settings leave file and receipts unchanged (41.933148ms)
|
||||
ℹ tests 13
|
||||
ℹ suites 0
|
||||
ℹ pass 13
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 841.716764
|
||||
@@ -0,0 +1,21 @@
|
||||
✔ C2-06 coder send_message guard covers every table refusal; inserts nothing (110.781773ms)
|
||||
✔ C2-06 research send_message guard covers every table refusal; inserts nothing (91.548051ms)
|
||||
✔ C2-06 stored check carries the file author trailer at an unrelated cited tip (57.119223ms)
|
||||
✔ C2-06 supporting cite cannot state canon, including a folder also marked playground (40.819326ms)
|
||||
✔ C2-06 supporting file stores supporting scope and its real agent trailer (47.776616ms)
|
||||
✔ C2-06 check evidence and insert are atomic when storing evidence fails (41.268825ms)
|
||||
✔ C2-06 live limits change both directions; unreadable file keeps checks and exact fixed texts (53.375873ms)
|
||||
✔ C2-06 page store is session-local, caps 20 fetches and 200 KiB, drops at disconnect (82.822565ms)
|
||||
✔ C2-06 transport passes safe capped guard reason; ordinary refusal envelope is byte-identical (54.131458ms)
|
||||
✔ C2-06 non-library businesses retain role.claim shape and unguarded free sends (26.350984ms)
|
||||
✔ C2-06 thread messages carry file/last evidence with one read per distinct path (80.819295ms)
|
||||
✔ C2-06 guarded request snapshot cannot change between check and insert (26.401011ms)
|
||||
✔ C2-06 library.limits.set is human-only and invalid settings leave file and receipts unchanged (41.116925ms)
|
||||
ℹ tests 13
|
||||
ℹ suites 0
|
||||
ℹ pass 13
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 839.688386
|
||||
@@ -0,0 +1,23 @@
|
||||
eeca81ab965f9e94f930ee5f51d16f019af6368bc6c3994895e204f7a54ec8d2 packages/bus/src/broker.mjs
|
||||
ad3c686a089f67f3c89610937c6fc9b32367cea5d9735125d89bef042082d4e8 packages/bus/src/client.mjs
|
||||
36b05dd3119e5929211aa1cc5d45c5043f5a1c34567ddc7cac8f002835d44abe packages/bus/src/runtime.mjs
|
||||
66b26d131a19f4f411686427274936850c1ff0aed11e9b281ae4aadcf4b289fc packages/bus/src/server.mjs
|
||||
cdd0304ec25ef1ad3e31c52502fa46f2c80bd77c8d3c2e13f8ed4b5328f342c9 packages/bus/tests/citation-availability.test.mjs
|
||||
2e05074cd9d15d810103658af3858161cee2af78b0a2e1ba910222fab3e84401 packages/bus/tests/citation-guard.test.mjs
|
||||
2c7a2102e2e0244876e41b664f4f706baefe3375100b956655551db1230f5da3 packages/bus/tests/citation-helpers.mjs
|
||||
9768b6dc5ae078c5cc4f76473097287b74c5bc5853d39e1f57f153e646f861af packages/bus/tests/citation-runtime.test.mjs
|
||||
abaeac64f2c3bf8ba83c9a4488edd9105c4707a6564560c5333d5421445653af packages/business/src/business.mjs
|
||||
3a6044de5d1ca2cc35c5285b460c3e402b4274837e5d88b97f489797f6004903 packages/business/src/organization.mjs
|
||||
4d2eb11beaa80175e524af1b95c81e7164990fba1d3e1754f5ba06eee390a14f packages/business/tests/reply-limits.test.mjs
|
||||
a2bb98734bcc2556f8b2168f0faf8a89f7064c3f0aa49feb7d1975d596192f09 packages/cli/README.md
|
||||
2f291a71f490f2741edada7a3e3788500f8976a08eb8ab1411f6c5982f778260 packages/cli/src/limits.mjs
|
||||
f38af2d46d5f5f6388f599912507b94b87a0bf9dcc2104bb2187c38ee35118d5 packages/cli/tests/reply-limits.test.mjs
|
||||
6ad72b4245e0a66e32725941900c1ece64c2e5de2fb73d65c8e042b4f3a691a6 packages/harness/src/runner.mjs
|
||||
a5ef1b65230239a7baf6d0e8f2b8a51c0516348c7c4339a55b3f0a1a6ff531ba packages/harness/tests/citation-runner.test.mjs
|
||||
330bc71bf6c7e64d3ddb70440903d2d9acf7878d44a49d7e30c2352ee4c807ec packages/harness/tests/fixtures/citation-adapter.mjs
|
||||
f710d9600a17f6e2989a289cfe84e58f161d86c7306605946ce05fa71b364eb2 packages/library/src/guard.mjs
|
||||
c0d630798914e300e461c247340533328e97119e54909c6a9406340e61fed8b7 packages/library/src/index.mjs
|
||||
98ef45ed61144aaea44d8aea1ac43082b6d340297e46846d01772da38728e530 packages/library/src/limits.mjs
|
||||
7b46f47b5e9d6b554b5d39bce2cd95c4610f5f35b8ab8fdc5a2864b3214be809 packages/library/src/reply-protocol.mjs
|
||||
406146ebbce3710f308243b684a1c17e7626c1b65a4468489364317e31537a48 packages/library/tests/guard.test.mjs
|
||||
39c8e6c8250a13fa43015fb2c407195e30ee642f729a9f6a644c38b4ea758a72 packages/seat/src/sandbox.mjs
|
||||
@@ -0,0 +1,47 @@
|
||||
✔ C2-06 coder send_message guard covers every table refusal; inserts nothing (109.280676ms)
|
||||
✔ C2-06 research send_message guard covers every table refusal; inserts nothing (94.019544ms)
|
||||
✔ C2-06 stored check carries the file author trailer at an unrelated cited tip (58.84355ms)
|
||||
✔ C2-06 supporting cite cannot state canon, including a folder also marked playground (42.275234ms)
|
||||
✔ C2-06 supporting file stores supporting scope and its real agent trailer (48.954969ms)
|
||||
✔ C2-06 check evidence and insert are atomic when storing evidence fails (41.628985ms)
|
||||
✔ C2-06 live limits change both directions; unreadable file keeps checks and exact fixed texts (54.367118ms)
|
||||
✔ C2-06 page store is session-local, caps 20 fetches and 200 KiB, drops at disconnect (85.049228ms)
|
||||
✖ C2-06 transport passes safe capped guard reason; ordinary refusal envelope is byte-identical (53.346085ms)
|
||||
✔ C2-06 non-library businesses retain role.claim shape and unguarded free sends (26.218776ms)
|
||||
✔ C2-06 thread messages carry file/last evidence with one read per distinct path (78.373306ms)
|
||||
✔ C2-06 guarded request snapshot cannot change between check and insert (24.622347ms)
|
||||
✔ C2-06 library.limits.set is human-only and invalid settings leave file and receipts unchanged (41.8227ms)
|
||||
ℹ tests 13
|
||||
ℹ suites 0
|
||||
ℹ pass 12
|
||||
ℹ fail 1
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 840.560306
|
||||
|
||||
✖ failing tests:
|
||||
|
||||
test at packages/bus/tests/citation-guard.test.mjs:116:1
|
||||
✖ C2-06 transport passes safe capped guard reason; ordinary refusal envelope is byte-identical (53.346085ms)
|
||||
AssertionError [ERR_ASSERTION]: The validation function is expected to return "true". Received false
|
||||
|
||||
Caught error:
|
||||
|
||||
Error: citation-invalid
|
||||
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||
at async TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-db3vgbd1/packages/bus/tests/citation-guard.test.mjs:121:3)
|
||||
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: Error: citation-invalid
|
||||
at Socket.<anonymous> (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-db3vgbd1/packages/bus/src/client.mjs:45:17)
|
||||
at Socket.emit (node:events:514:20)
|
||||
at addChunk (node:internal/streams/readable:575:12)
|
||||
at readableAddChunkPushByteMode (node:internal/streams/readable:526:3)
|
||||
at Readable.push (node:internal/streams/readable:406:5)
|
||||
at Pipe.onStreamRead (node:internal/stream_base_commons:189:23),
|
||||
operator: 'rejects',
|
||||
diff: 'simple'
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
✔ C2-06 held library lock gives the agent citation-unavailable and its retry reason (5143.590096ms)
|
||||
✔ C2-06 malformed sync state is availability failure, never a fabricated invalid cite (33.560438ms)
|
||||
✔ C2-06 no mirror or freshly initialized empty mirror still means no served citation (31.849587ms)
|
||||
ℹ tests 3
|
||||
ℹ suites 0
|
||||
ℹ pass 3
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 5290.343804
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
✔ C2-06 held library lock gives the agent citation-unavailable and its retry reason (5131.56715ms)
|
||||
✔ C2-06 malformed sync state is availability failure, never a fabricated invalid cite (32.560014ms)
|
||||
✔ C2-06 no mirror or freshly initialized empty mirror still means no served citation (31.756895ms)
|
||||
ℹ tests 3
|
||||
ℹ suites 0
|
||||
ℹ pass 3
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 5271.350019
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
eeca81ab965f9e94f930ee5f51d16f019af6368bc6c3994895e204f7a54ec8d2 packages/bus/src/broker.mjs
|
||||
ad3c686a089f67f3c89610937c6fc9b32367cea5d9735125d89bef042082d4e8 packages/bus/src/client.mjs
|
||||
36b05dd3119e5929211aa1cc5d45c5043f5a1c34567ddc7cac8f002835d44abe packages/bus/src/runtime.mjs
|
||||
66b26d131a19f4f411686427274936850c1ff0aed11e9b281ae4aadcf4b289fc packages/bus/src/server.mjs
|
||||
cdd0304ec25ef1ad3e31c52502fa46f2c80bd77c8d3c2e13f8ed4b5328f342c9 packages/bus/tests/citation-availability.test.mjs
|
||||
2e05074cd9d15d810103658af3858161cee2af78b0a2e1ba910222fab3e84401 packages/bus/tests/citation-guard.test.mjs
|
||||
2c7a2102e2e0244876e41b664f4f706baefe3375100b956655551db1230f5da3 packages/bus/tests/citation-helpers.mjs
|
||||
9768b6dc5ae078c5cc4f76473097287b74c5bc5853d39e1f57f153e646f861af packages/bus/tests/citation-runtime.test.mjs
|
||||
abaeac64f2c3bf8ba83c9a4488edd9105c4707a6564560c5333d5421445653af packages/business/src/business.mjs
|
||||
3a6044de5d1ca2cc35c5285b460c3e402b4274837e5d88b97f489797f6004903 packages/business/src/organization.mjs
|
||||
4d2eb11beaa80175e524af1b95c81e7164990fba1d3e1754f5ba06eee390a14f packages/business/tests/reply-limits.test.mjs
|
||||
a2bb98734bcc2556f8b2168f0faf8a89f7064c3f0aa49feb7d1975d596192f09 packages/cli/README.md
|
||||
2f291a71f490f2741edada7a3e3788500f8976a08eb8ab1411f6c5982f778260 packages/cli/src/limits.mjs
|
||||
f38af2d46d5f5f6388f599912507b94b87a0bf9dcc2104bb2187c38ee35118d5 packages/cli/tests/reply-limits.test.mjs
|
||||
6ad72b4245e0a66e32725941900c1ece64c2e5de2fb73d65c8e042b4f3a691a6 packages/harness/src/runner.mjs
|
||||
a5ef1b65230239a7baf6d0e8f2b8a51c0516348c7c4339a55b3f0a1a6ff531ba packages/harness/tests/citation-runner.test.mjs
|
||||
330bc71bf6c7e64d3ddb70440903d2d9acf7878d44a49d7e30c2352ee4c807ec packages/harness/tests/fixtures/citation-adapter.mjs
|
||||
f710d9600a17f6e2989a289cfe84e58f161d86c7306605946ce05fa71b364eb2 packages/library/src/guard.mjs
|
||||
c0d630798914e300e461c247340533328e97119e54909c6a9406340e61fed8b7 packages/library/src/index.mjs
|
||||
98ef45ed61144aaea44d8aea1ac43082b6d340297e46846d01772da38728e530 packages/library/src/limits.mjs
|
||||
7b46f47b5e9d6b554b5d39bce2cd95c4610f5f35b8ab8fdc5a2864b3214be809 packages/library/src/reply-protocol.mjs
|
||||
406146ebbce3710f308243b684a1c17e7626c1b65a4468489364317e31537a48 packages/library/tests/guard.test.mjs
|
||||
39c8e6c8250a13fa43015fb2c407195e30ee642f729a9f6a644c38b4ea758a72 packages/seat/src/sandbox.mjs
|
||||
@@ -0,0 +1,70 @@
|
||||
✖ C2-06 held library lock gives the agent citation-unavailable and its retry reason (5104.72293ms)
|
||||
✖ C2-06 malformed sync state is availability failure, never a fabricated invalid cite (35.117198ms)
|
||||
✔ C2-06 no mirror or freshly initialized empty mirror still means no served citation (31.286656ms)
|
||||
ℹ tests 3
|
||||
ℹ suites 0
|
||||
ℹ pass 1
|
||||
ℹ fail 2
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 5250.151124
|
||||
|
||||
✖ failing tests:
|
||||
|
||||
test at packages/bus/tests/citation-availability.test.mjs:13:1
|
||||
✖ C2-06 held library lock gives the agent citation-unavailable and its retry reason (5104.72293ms)
|
||||
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
|
||||
+ actual - expected
|
||||
|
||||
+ 'citation-invalid'
|
||||
- 'citation-unavailable'
|
||||
^
|
||||
|
||||
at Object.<anonymous> (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-xglaeqeb/packages/bus/tests/citation-availability.test.mjs:29:14)
|
||||
at expectedException (node:assert:547:17)
|
||||
at expectsError (node:assert:672:21)
|
||||
at strict.rejects (node:assert:738:3)
|
||||
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||
at async file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-xglaeqeb/packages/bus/tests/citation-availability.test.mjs:28:5
|
||||
at async withLibraryLock (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-xglaeqeb/packages/library/src/mirror.mjs:171:18)
|
||||
at async TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-xglaeqeb/packages/bus/tests/citation-availability.test.mjs:27:3)
|
||||
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: 'citation-invalid',
|
||||
expected: 'citation-unavailable',
|
||||
operator: 'strictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
|
||||
test at packages/bus/tests/citation-availability.test.mjs:40:1
|
||||
✖ C2-06 malformed sync state is availability failure, never a fabricated invalid cite (35.117198ms)
|
||||
AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal:
|
||||
+ actual - expected
|
||||
|
||||
Comparison {
|
||||
+ code: 'citation-invalid'
|
||||
- code: 'citation-unavailable'
|
||||
}
|
||||
|
||||
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||
at async TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-xglaeqeb/packages/bus/tests/citation-availability.test.mjs:45:3)
|
||||
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: Error: citation-invalid: citation 1 (Book One/Characters/Mara Vell.md) isn't an indexed file at a commit reachable from the served commit
|
||||
at refuse (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-xglaeqeb/packages/library/src/guard.mjs:24:42)
|
||||
at checkReply (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-xglaeqeb/packages/library/src/guard.mjs:80:25)
|
||||
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||
at async waitForActual (node:assert:615:5)
|
||||
at async strict.rejects (node:assert:738:25)
|
||||
at async TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-xglaeqeb/packages/bus/tests/citation-availability.test.mjs:45:3)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7),
|
||||
expected: { code: 'citation-unavailable' },
|
||||
operator: 'rejects',
|
||||
diff: 'simple'
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
M1-writer-fence: killed (control green, mutant exit 1, hashes restored, restored green)
|
||||
M2-incoming-human: killed (control green, mutant exit 1, hashes restored, restored green)
|
||||
M3-split-check-transaction: killed (control green, mutant exit 1, hashes restored, restored green)
|
||||
M5-hide-library-unavailable: killed (control green, mutant exit 1, hashes restored, restored green)
|
||||
M4-drop-client-reason: killed (control green, mutant exit 1, hashes restored, restored green)
|
||||
@@ -0,0 +1,3 @@
|
||||
npm warn deprecated [email protected]: Use your platform's native DOMException instead
|
||||
|
||||
added 128 packages in 2s
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
added 2 packages in 205ms
|
||||
@@ -0,0 +1,9 @@
|
||||
✔ C2-06 runtime reads changed and unreadable reply limits without restarting (118.083931ms)
|
||||
ℹ tests 1
|
||||
ℹ suites 0
|
||||
ℹ pass 1
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 227.817729
|
||||
@@ -0,0 +1,234 @@
|
||||
npm notice run @mosaic/[email protected] test
|
||||
npm notice run node --test tests/
|
||||
✔ C2-04: ensureCheckouts skips a library before a real clone and leaves no books path (66.766764ms)
|
||||
✔ a first launch clones the root at its branch, with the root's path as origin (47.521672ms)
|
||||
✔ the clone is not at its place until git clone has finished (31.999361ms)
|
||||
✔ a later launch fast-forwards a clean clone after a commit to the root, then finds it current (87.563022ms)
|
||||
✔ a clone ahead of the root keeps its commits and counts as current (53.447311ms)
|
||||
▶ a dirty clone and one on another branch are fetched, and nothing but refs/remotes moves
|
||||
✔ a modified file (53.258759ms)
|
||||
✔ an untracked file (52.286642ms)
|
||||
✔ a staged file (55.132154ms)
|
||||
✔ another branch (53.48074ms)
|
||||
✔ a detached HEAD (54.504119ms)
|
||||
✔ a dirty clone and one on another branch are fetched, and nothing but refs/remotes moves (269.989404ms)
|
||||
✔ a diverged clone gets the fetch into refs/remotes and is kept, not-fast-forward (53.461206ms)
|
||||
▶ a clone kept before the branch check, or for a failed status, gets no fetch
|
||||
✔ not-a-clone (27.485728ms)
|
||||
✔ hooks-present (31.094616ms)
|
||||
✔ submodule (38.060187ms)
|
||||
✔ config-changed (36.195255ms)
|
||||
✔ root-unreadable (36.385271ms)
|
||||
✔ root-detached (39.627905ms)
|
||||
✔ status-failed, on the root's branch and clean (42.704327ms)
|
||||
✔ status-failed, dirty (44.881211ms)
|
||||
✔ a clone kept before the branch check, or for a failed status, gets no fetch (297.899967ms)
|
||||
✔ a dirty clone whose fetch fails is kept, fetch-failed, exactly as it was (47.755395ms)
|
||||
✔ every git call the host makes, for a new clone and an existing one, carries maintenance.auto=false and gc.auto=0 (57.603139ms)
|
||||
✔ a clone with loose objects enough for gc --auto gets no maintenance or gc from the fetch and the merge (89.466874ms)
|
||||
▶ a clone with user.name or user.email in its config is kept, and git runs nothing in it
|
||||
✔ user.name (28.628791ms)
|
||||
✔ user.email (30.423895ms)
|
||||
✔ a clone with user.name or user.email in its config is kept, and git runs nothing in it (59.627127ms)
|
||||
✔ a commit git can't read after the fast-forward is null (57.084762ms)
|
||||
✔ a new clone whose commit can't be read refuses the launch and leaves nothing behind (21.081119ms)
|
||||
▶ a clone the session rigged is kept, and git runs nothing and writes nothing outside it
|
||||
✔ core.fsmonitor (39.453854ms)
|
||||
✔ core.hooksPath (34.616469ms)
|
||||
✔ a hook file (35.090442ms)
|
||||
✔ include.path (34.527401ms)
|
||||
✔ includeIf (35.13899ms)
|
||||
✔ a filter driver (34.195382ms)
|
||||
✔ origin moved (37.391948ms)
|
||||
✔ a second origin url (35.731817ms)
|
||||
✔ the origin url twice, both the root (33.999145ms)
|
||||
✔ an ext:: origin (31.652835ms)
|
||||
✔ a branch tracking another remote (33.3147ms)
|
||||
✔ a branch merging a tag (33.72502ms)
|
||||
✔ a fetch line onto local branches (34.126505ms)
|
||||
✔ no origin (32.973963ms)
|
||||
✔ a config file over the size cap (30.967833ms)
|
||||
✔ config a symlink to /dev/zero (31.51332ms)
|
||||
✔ the clone a symlink to the bait (32.976685ms)
|
||||
✔ the clone a file (39.528201ms)
|
||||
✔ the clone a plain directory (32.193931ms)
|
||||
✔ .git a gitdir: file (31.732811ms)
|
||||
✔ .git a symlink (36.499471ms)
|
||||
✔ .git/logs a symlink (34.327705ms)
|
||||
✔ .git/refs/heads a symlink (30.308688ms)
|
||||
✔ .git/objects a symlink (28.895664ms)
|
||||
✔ a reflog hard-linked to a file outside (28.33422ms)
|
||||
✔ HEAD a fifo (29.791372ms)
|
||||
✔ a commondir file (30.182546ms)
|
||||
✔ an alternates file (30.414863ms)
|
||||
✔ a gitlink staged, no .gitmodules (42.003032ms)
|
||||
✔ a gitlink and .gitmodules staged (47.484582ms)
|
||||
✔ a gitlink to a repository with its own gitlink (53.625899ms)
|
||||
✔ a gitlink and .gitmodules committed (45.90129ms)
|
||||
✔ a gitlink and submodule.active in config (43.005636ms)
|
||||
✔ a .git/modules with no gitlink (31.240083ms)
|
||||
✔ a clone the session rigged is kept, and git runs nothing and writes nothing outside it (1201.693467ms)
|
||||
▶ a root that can't be cloned refuses with the project id and leaves nothing behind
|
||||
✔ missing (9.543898ms)
|
||||
✔ not a repository (9.15995ms)
|
||||
✔ a plain directory inside another repository (13.291966ms)
|
||||
✔ unreadable (10.409599ms)
|
||||
✔ on no branch (11.130486ms)
|
||||
✔ missing an object (14.936384ms)
|
||||
✔ a root that can't be cloned refuses with the project id and leaves nothing behind (69.273079ms)
|
||||
✔ a clone whose root is on no branch, or gone, is kept and named (28.705151ms)
|
||||
✔ no credential or forge remote of the root reaches a clone (46.990023ms)
|
||||
✔ every project in the business file gets its own clone at its own branch (32.655381ms)
|
||||
✔ a clone past its time gets SIGTERM and refuses the launch, with nothing left in the workspace (514.003804ms)
|
||||
✔ a clone that ignores SIGTERM gets SIGKILL once the grace period is over (1016.843724ms)
|
||||
✔ a timeout signals git's process group, so a process git started dies with it (515.051887ms)
|
||||
✔ once a signalled git has closed, its group gets SIGKILL, so a process that ignored SIGTERM dies too (514.556145ms)
|
||||
✔ the budget is the setting's whole number of bytes from 1 MiB to 1 GiB, and the default for anything else (1.567727ms)
|
||||
✔ a stream past the default budget is not-collected with a lower bound, and a later collection catches up (65.101994ms)
|
||||
✔ a budget smaller than the streams counts over several collections, once each, and is known when it catches up (2.599724ms)
|
||||
✔ a line split across reads counts once (9.33078ms)
|
||||
✔ Claude history from before the ledger makes the first Pi collection harness-unsupported, for good (1.440992ms)
|
||||
✔ an empty claude-projects/ is no Claude history, and one filled after the ledger exists isn't checked (1.428192ms)
|
||||
✔ a claude-projects/ that can't be read records nothing, and the next collection checks again (1.330216ms)
|
||||
✔ the stream cap is the setting's whole number from 32 to 65536, and the default for anything else (0.16791ms)
|
||||
✔ more streams than the cap is not-collected, with cursors only for the streams opened, and a larger cap catches up (2.344595ms)
|
||||
✔ the default cap opens STREAMS streams and writes no more cursor lines than that (52.65919ms)
|
||||
✔ row 307 the known ledger row 270 wrote reads the same count (4.720302ms)
|
||||
✔ row 307 after the known ledger, one collection through pi's module answers the next count (3.122956ms)
|
||||
✔ row 307 the store-incomplete ledger row 270 wrote reads the same count (1.172174ms)
|
||||
✔ row 307 after the store-incomplete ledger, one collection through pi's module answers the next count (1.473641ms)
|
||||
✔ row 307 the store-unreadable ledger row 270 wrote reads the same count (1.233218ms)
|
||||
✔ row 307 after the store-unreadable ledger, one collection through pi's module answers the next count (1.478165ms)
|
||||
✔ row 307 the not-collected ledger row 270 wrote reads the same count (1.059533ms)
|
||||
✔ row 307 after the not-collected ledger, one collection through pi's module answers the next count (2.381792ms)
|
||||
✔ row 307 the claude-code ledger row 270 wrote reads the same count (1.16785ms)
|
||||
✔ row 307 after the claude-code ledger, one collection through pi's module answers the next count (1.422304ms)
|
||||
✔ row 307 the claude-history ledger row 270 wrote reads the same count (2.943093ms)
|
||||
✔ row 307 after the claude-history ledger, one collection through pi's module answers the next count (1.5333ms)
|
||||
✔ row 307 the torn ledger row 270 wrote reads the same count (1.006203ms)
|
||||
✔ row 307 after the torn ledger, one collection through pi's module answers the next count (2.284545ms)
|
||||
✔ row 307 core refuses an answer outside the contract and appends nothing (8.468181ms)
|
||||
✔ row 307 the module gets the store's two native directories, a copy of the cursors, the budget, the cap and first (2.320411ms)
|
||||
✔ an empty store, a store with no compaction and a failed start count 0, known (7.138038ms)
|
||||
✔ one and three completed compactions (2.441636ms)
|
||||
✔ a compaction copied into a branched stream counts once, under the stream it was first seen in (3.056ms)
|
||||
✔ one collection over two streams holding the same copy counts it once and writes it once (1.831681ms)
|
||||
✔ the same entry id at another time in another stream is another compaction (1.582065ms)
|
||||
✔ resume: each collection reads past its cursor and writes a key once (2.114301ms)
|
||||
✔ a partial trailing line waits for its newline (1.624959ms)
|
||||
✔ a missing ledger is not-collected and an unreadable one store-unreadable, never 0 (1.322325ms)
|
||||
✔ a symlinked ledger is store-unreadable and is not written through (1.293154ms)
|
||||
✔ a torn last ledger line makes the count unknown, a lower bound, and stays so (2.167108ms)
|
||||
✔ a bad ledger line in the middle makes the count unknown (3.331232ms)
|
||||
▶ a stream that shrank, changed under its cursor or went away is store-incomplete for good
|
||||
✔ shrink (2.038847ms)
|
||||
✔ rewrite (1.477185ms)
|
||||
✔ remove (1.974024ms)
|
||||
✔ a stream that shrank, changed under its cursor or went away is store-incomplete for good (6.254361ms)
|
||||
✔ a stream that isn't a regular file or a Pi session is store-unreadable, and that passes (1.252704ms)
|
||||
✔ a first line that isn't a session header is store-unreadable (1.120253ms)
|
||||
✔ a Claude run is harness-unsupported, and stays so after a Pi run (1.273691ms)
|
||||
✔ storeDir is the store sessionStore makes, without making it (1.538256ms)
|
||||
✔ the ledger is under no sandbox mount (5.456112ms)
|
||||
✔ rootHits: a top-level file, a new top-level directory, src/ and v1/ are the root; paths under known directories aren't (1.861197ms)
|
||||
✔ gateEnv keeps the named variables that are strings and drops everything else (0.310846ms)
|
||||
✔ isMosaicStack: a checkout whose HEAD descends from the root commit and has node_modules; nothing else (76.743834ms)
|
||||
✔ gateSteps: each package with tests but queue in name order, then each scripts/test-*.sh (2.377262ms)
|
||||
✔ runGate: every step passes, each with its own log and a summary line, under the environment it was given (211.160741ms)
|
||||
✔ runGate: the first failing step stops the gate and names its log (269.569796ms)
|
||||
✔ runGate: an abort stops the running step and everything in its group, and runs nothing after it (185.986993ms)
|
||||
✔ the CLI: root-file prints the hits and exits 2, or exits 0; gate exits 0, or 2 with the step and its log; anything else is usage (661.443234ms)
|
||||
✔ T3: publish pushes the work commit by oid to <user>/<branch> on the fork, with the token only through the helper (318.365034ms)
|
||||
✔ T3: the token is never in git's argv, the fork URL included; it reaches git on fd 3 only (157.63501ms)
|
||||
✔ T3: a moved fork branch refuses non-fast-forward; no + and no force (173.077055ms)
|
||||
✔ T3: D9a: an empty fork and an unrelated fork refuse remote-unrelated; a missing fork refuses fork-unavailable (379.595919ms)
|
||||
✔ T3: a fork past main refuses remote-unrelated until root catches up (152.254688ms)
|
||||
✔ T3: a wrong token refuses fork-unavailable; git's stderr isn't in the refusal (102.972548ms)
|
||||
✔ T3: a 302 is not followed: fork-unavailable, and the target sees no request (113.352932ms)
|
||||
✔ T3: the helper answers only the fork's host and port: a fork on another port gets no token (95.099891ms)
|
||||
✔ T3: a fork that echoes the token refuses credential-leak (131.28193ms)
|
||||
✔ T3: no tls parameter, no trust: the scratch CA reaches git only through it (91.935601ms)
|
||||
✔ D9 steps 3 and 4: ref-moved and identity-mismatch refuse before any request (143.070058ms)
|
||||
✔ publishRemote refuses a fork, user or destination that isn't shell- and ref-safe before any git (88.646013ms)
|
||||
✔ RUNNER_FILES is exactly what the runner and the harness sources it starts import (7.032234ms)
|
||||
✔ sandboxProblem names a missing bwrap and a bwrap that fails (15.78888ms)
|
||||
✔ every bind says why; the bundle and session file stay read-only over the run directory (2.196421ms)
|
||||
✔ row 65 a harness module's mounts bind read-only after the adapter, each with the module's reason (2.143393ms)
|
||||
✔ REQ-THREAD-2 a thread store binds its session directory and Claude transcripts, and nothing more (1.644658ms)
|
||||
✔ the host's git socket is bound only when given, read-only and before the writable binds (1.090126ms)
|
||||
✔ the git identity is the instance's, at <instance>@<business>.mosaic.invalid, and sandboxArgv refuses without it (1.690862ms)
|
||||
✔ a confined session's shell reaches its own workspace and run directory and nothing of the founder's or another session's (2106.854649ms)
|
||||
✔ a bind that exposes a stand-in, or a missing workspace bind, fails the matching check (2924.249794ms)
|
||||
✔ a confined session that runs tester-cli.mjs is refused as tester, and the same shim outside the sandbox binds (300.518853ms)
|
||||
✔ resolveSeat: by name under --repo resolves the repo layout (2.419588ms)
|
||||
✔ resolveSeat: by path resolves the fleet layout (0.765582ms)
|
||||
✔ resolveSeat: refusals for missing dir, missing launch.sh, non-executable launch.sh, invalid name, and unknown layout (1.626754ms)
|
||||
✔ tmuxContext: outside tmux, default socket, custom socket, and exec failure (1.236572ms)
|
||||
✔ makeRegistration produces a record that validates; each shape violation throws SeatError (1.593741ms)
|
||||
✔ writeRegistration/readRegistration: round trip, permissions, absence, and malformed records (2.34318ms)
|
||||
✔ updateTask: changes task, taskSetBy and updatedAt only, and refuses appropriately (2.203796ms)
|
||||
✔ CLI launch: registers, execs the fake launch script, and passes args through (66.404825ms)
|
||||
✔ CLI launch: --harness lands in the record (50.392752ms)
|
||||
✔ CLI launch: the launch script's own exit code passes through (46.659659ms)
|
||||
✔ CLI launch: relaunching a seat rewrites the one registration record (89.26575ms)
|
||||
✔ CLI launch: omitting --task records an empty string, not null (39.318048ms)
|
||||
✔ CLI seat task: updates only the task after a launch, and refuses on an unlaunched seat (96.331713ms)
|
||||
✔ CLI refusals: no args, unknown flag, missing config, already-registered env, and exec failure (164.27632ms)
|
||||
✔ samePath: equal paths, symlinked dirs, distinct dirs, and non-strings (0.422092ms)
|
||||
✔ resolveSetBy: explicit --by wins over the environment; absent or empty environment gives unknown; invalid explicit or environment values refuse with exit 4 (0.590318ms)
|
||||
✔ validateRegistration/readRegistration: taskSetBy is optional; a record without it (written before #1511) still loads unchanged; an invalid one is refused; the version does not change (0.734057ms)
|
||||
✔ updateTask: records setBy, preserves startedAt and every unrelated field, upgrades an old record in place only when the task is set, and replaces a previous attribution (0.906133ms)
|
||||
✔ CLI seat task: --by beats MOSAIC_AGENT_NAME, the environment beats nothing, empty environment is unknown, invalid --by or environment refuses with exit 4 and leaves the record byte for byte (330.90649ms)
|
||||
✔ REQ-THREAD-2 sessionStore: a legacy session keeps the thread's store, any other gets sessions/<s>/, each segment checked first (5.360486ms)
|
||||
✔ REQ-THREAD-2 sessionStore refuses legacy-store-unmapped for a thread whose old store no legacy session maps (1.608175ms)
|
||||
✔ REQ-THREAD-2 sessionWorkspace: private directories per session, unsafe segments and overlaps refused (3.523108ms)
|
||||
✔ REQ-THREAD-2 lockSessionWorkspace: one writer; a live host or run holds it, a stale lock is taken over, an unreadable one holds (15.189866ms)
|
||||
✔ REQ-THREAD-2 sessions.json v2: entries carry session and workspace, running() keys on the session, a v1 file still reads (1.889362ms)
|
||||
✔ REQ-LIMIT-1: family substring matching is no longer exported (1.378459ms)
|
||||
✔ sessionEnv passes only the allowlist, the repo's bin on PATH, and the run id (1.063207ms)
|
||||
✔ ZAI_API_KEY passes the session allowlist, and ZAI_TOKEN does not (0.239826ms)
|
||||
✔ sessionExit gives a runner's signal death back as the signal; a session credential is one whole set of nonempty variables (0.405172ms)
|
||||
✔ newRun: short ids, 0700 directories, and a refusal when the socket path won't fit (2.727102ms)
|
||||
✔ session file and launch log: 0600, the session file written once (2.111664ms)
|
||||
✔ endReason maps the runner's exit codes; a signal is killed (0.220582ms)
|
||||
✔ Registry mirrors to sessions.json; readSessions marks live entries; bad files refuse (2.216711ms)
|
||||
✔ a read-only Registry never writes sessions.json, refuses add() and leaves the file on remove() (2.154331ms)
|
||||
✔ REQ-THREAD-1 Registry.running keys a thread run by business, instance and thread (1.027065ms)
|
||||
✔ REQ-THREAD-2 REQ-LAUNCH-1 threadStore checks both segments before the join and refuses an unsafe directory (2.628544ms)
|
||||
✔ stopSession refuses an unknown run, reports a stale one, and won't signal a pid that isn't a runner (1.552738ms)
|
||||
✔ a session runs in its sandbox as pid 1 of its namespace, claims, answers, and stops on mosaic stop (293.088316ms)
|
||||
✔ workRef and validBranch take only what a ref name can hold (2.280976ms)
|
||||
✔ a push lands as the task's work ref, a fast-forward lands after it, and main is the root's (187.443563ms)
|
||||
✔ a rewritten branch refuses non-fast-forward and the work ref stays (124.192671ms)
|
||||
✔ a branch with no history in common with main refuses unrelated-history (60.579235ms)
|
||||
✔ a bundle that needs commits the working repository lacks refuses missing-prerequisite (51.079109ms)
|
||||
✔ the root is fetched again before each push and main follows it, so a clone of a newer root pushes (129.47937ms)
|
||||
✔ a root moved back after the clone leaves the push's base unknown: missing-prerequisite (78.854404ms)
|
||||
✔ a commit with a broken object refuses invalid-bundle, and only because fsck is on (86.468293ms)
|
||||
✔ only a v2 bundle with the named branch is read (64.914471ms)
|
||||
✔ a branch named main, or named for another task, moves only this task's work ref (102.371349ms)
|
||||
✔ a record that throws moves the work ref back, or removes a new one (141.771502ms)
|
||||
✔ a work ref that can't go back refuses rollback-failed, naming the ref and the commit (362.776758ms)
|
||||
✔ a root that can't be read refuses root-unreadable (28.853641ms)
|
||||
✔ a git past its time gets SIGTERM, leaves no ref lock, and the next push lands (2132.860162ms)
|
||||
✔ a git that ignores SIGTERM gets SIGKILL once the grace period is over (1025.936026ms)
|
||||
✔ a working repository path that isn't a directory refuses (23.030329ms)
|
||||
✔ review bundles a pushed commit as refs/mosaic/review, leaving out what the reviewer has (120.899663ms)
|
||||
✔ review of a project with no working repository refuses unknown-commit (14.031146ms)
|
||||
✔ the runner's git tools hold the host's limits and branch rule (1.219295ms)
|
||||
✔ a reseed moves root but leaves a landed main, and main forwards once root contains it (184.469774ms)
|
||||
✔ after a landing, a push built on the root still lands and main stays where the landing put it (126.530409ms)
|
||||
✔ once the root shares no history with a landed main, a push is checked against main, not the root (179.004093ms)
|
||||
✔ a landing squashes the reviewed diff onto main as the bus host and moves main only at finish (105.224989ms)
|
||||
✔ a landing refuses ref-moved, base-conflict and root-file before it makes a commit (308.132399ms)
|
||||
✔ a landing whose applied diff isn't the reviewed one refuses patch-drift and leaves no worktree (121.415385ms)
|
||||
✔ finish refuses base-moved when main moved, and a record that throws moves main back (242.643351ms)
|
||||
✔ halted push receipt rolls back only its unrecorded ref and cleans temporary refs (198.696687ms)
|
||||
ℹ tests 218
|
||||
ℹ suites 0
|
||||
ℹ pass 218
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 6318.071226
|
||||
@@ -0,0 +1,202 @@
|
||||
{
|
||||
"base": "e0c6142f3",
|
||||
"testedRevision": "2d274a5b6c35c3e74b07206ffd724a6579bb149d",
|
||||
"tmpdir": "/mnt/storage/scratch/tmp/tNoueZ",
|
||||
"wholeSuites": {
|
||||
"library": {
|
||||
"tests": 142,
|
||||
"pass": 142,
|
||||
"fail": 0,
|
||||
"cancelled": 0,
|
||||
"skipped": 0
|
||||
},
|
||||
"business": {
|
||||
"tests": 270,
|
||||
"pass": 270,
|
||||
"fail": 0,
|
||||
"cancelled": 0,
|
||||
"skipped": 0
|
||||
},
|
||||
"bus": {
|
||||
"tests": 974,
|
||||
"pass": 974,
|
||||
"fail": 0,
|
||||
"cancelled": 0,
|
||||
"skipped": 0
|
||||
},
|
||||
"cli": {
|
||||
"tests": 988,
|
||||
"pass": 988,
|
||||
"fail": 0,
|
||||
"cancelled": 0,
|
||||
"skipped": 0
|
||||
},
|
||||
"harness": {
|
||||
"tests": 172,
|
||||
"pass": 172,
|
||||
"fail": 0,
|
||||
"cancelled": 0,
|
||||
"skipped": 0
|
||||
},
|
||||
"seat": {
|
||||
"tests": 218,
|
||||
"pass": 218,
|
||||
"fail": 0,
|
||||
"cancelled": 0,
|
||||
"skipped": 0
|
||||
}
|
||||
},
|
||||
"touched": {
|
||||
"touched-first": {
|
||||
"tests": 57,
|
||||
"pass": 56,
|
||||
"fail": 1,
|
||||
"cancelled": 0,
|
||||
"skipped": 0
|
||||
},
|
||||
"touched-rerun": {
|
||||
"tests": 57,
|
||||
"pass": 57,
|
||||
"fail": 0,
|
||||
"cancelled": 0,
|
||||
"skipped": 0
|
||||
},
|
||||
"availability-green": {
|
||||
"tests": 3,
|
||||
"pass": 3,
|
||||
"fail": 0,
|
||||
"cancelled": 0,
|
||||
"skipped": 0
|
||||
},
|
||||
"runtime-fixture-retry": {
|
||||
"tests": 1,
|
||||
"pass": 1,
|
||||
"fail": 0,
|
||||
"cancelled": 0,
|
||||
"skipped": 0
|
||||
}
|
||||
},
|
||||
"mutants": {
|
||||
"M1-writer-fence": {
|
||||
"control": {
|
||||
"tests": 6,
|
||||
"pass": 6,
|
||||
"fail": 0,
|
||||
"cancelled": 0,
|
||||
"skipped": 0
|
||||
},
|
||||
"negative": {
|
||||
"tests": 6,
|
||||
"pass": 3,
|
||||
"fail": 3,
|
||||
"cancelled": 0,
|
||||
"skipped": 0
|
||||
},
|
||||
"restored": {
|
||||
"tests": 6,
|
||||
"pass": 6,
|
||||
"fail": 0,
|
||||
"cancelled": 0,
|
||||
"skipped": 0
|
||||
},
|
||||
"productHashesRestored": true
|
||||
},
|
||||
"M2-incoming-human": {
|
||||
"control": {
|
||||
"tests": 6,
|
||||
"pass": 6,
|
||||
"fail": 0,
|
||||
"cancelled": 0,
|
||||
"skipped": 0
|
||||
},
|
||||
"negative": {
|
||||
"tests": 6,
|
||||
"pass": 5,
|
||||
"fail": 1,
|
||||
"cancelled": 0,
|
||||
"skipped": 0
|
||||
},
|
||||
"restored": {
|
||||
"tests": 6,
|
||||
"pass": 6,
|
||||
"fail": 0,
|
||||
"cancelled": 0,
|
||||
"skipped": 0
|
||||
},
|
||||
"productHashesRestored": true
|
||||
},
|
||||
"M3-split-check-transaction": {
|
||||
"control": {
|
||||
"tests": 13,
|
||||
"pass": 13,
|
||||
"fail": 0,
|
||||
"cancelled": 0,
|
||||
"skipped": 0
|
||||
},
|
||||
"negative": {
|
||||
"tests": 13,
|
||||
"pass": 12,
|
||||
"fail": 1,
|
||||
"cancelled": 0,
|
||||
"skipped": 0
|
||||
},
|
||||
"restored": {
|
||||
"tests": 13,
|
||||
"pass": 13,
|
||||
"fail": 0,
|
||||
"cancelled": 0,
|
||||
"skipped": 0
|
||||
},
|
||||
"productHashesRestored": true
|
||||
},
|
||||
"M4-drop-client-reason": {
|
||||
"control": {
|
||||
"tests": 13,
|
||||
"pass": 13,
|
||||
"fail": 0,
|
||||
"cancelled": 0,
|
||||
"skipped": 0
|
||||
},
|
||||
"negative": {
|
||||
"tests": 13,
|
||||
"pass": 12,
|
||||
"fail": 1,
|
||||
"cancelled": 0,
|
||||
"skipped": 0
|
||||
},
|
||||
"restored": {
|
||||
"tests": 13,
|
||||
"pass": 13,
|
||||
"fail": 0,
|
||||
"cancelled": 0,
|
||||
"skipped": 0
|
||||
},
|
||||
"productHashesRestored": true
|
||||
},
|
||||
"M5-hide-library-unavailable": {
|
||||
"control": {
|
||||
"tests": 3,
|
||||
"pass": 3,
|
||||
"fail": 0,
|
||||
"cancelled": 0,
|
||||
"skipped": 0
|
||||
},
|
||||
"negative": {
|
||||
"tests": 3,
|
||||
"pass": 1,
|
||||
"fail": 2,
|
||||
"cancelled": 0,
|
||||
"skipped": 0
|
||||
},
|
||||
"restored": {
|
||||
"tests": 3,
|
||||
"pass": 3,
|
||||
"fail": 0,
|
||||
"cancelled": 0,
|
||||
"skipped": 0
|
||||
},
|
||||
"productHashesRestored": true
|
||||
}
|
||||
},
|
||||
"totalWholeSuiteTests": 2764
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
library: 142/142 pass; fail=0 skipped=0 cancelled=0
|
||||
business: 270/270 pass; fail=0 skipped=0 cancelled=0
|
||||
bus: 974/974 pass; fail=0 skipped=0 cancelled=0
|
||||
cli: 988/988 pass; fail=0 skipped=0 cancelled=0
|
||||
harness: 172/172 pass; fail=0 skipped=0 cancelled=0
|
||||
seat: 218/218 pass; fail=0 skipped=0 cancelled=0
|
||||
Touched rerun 57/57; first run 56/57, new runtime fixture corrected.
|
||||
M1-M5 killed; each control/restored run green, hashes restored.
|
||||
No old test failed or was edited. scripts/test-*.sh left to Sage at landing.
|
||||
@@ -0,0 +1,80 @@
|
||||
✔ C2-06 held library lock gives the agent citation-unavailable and its retry reason (5129.213097ms)
|
||||
✔ C2-06 malformed sync state is availability failure, never a fabricated invalid cite (32.312603ms)
|
||||
✔ C2-06 no mirror or freshly initialized empty mirror still means no served citation (31.769445ms)
|
||||
✔ C2-06 coder send_message guard covers every table refusal; inserts nothing (104.132156ms)
|
||||
✔ C2-06 research send_message guard covers every table refusal; inserts nothing (90.030314ms)
|
||||
✔ C2-06 stored check carries the file author trailer at an unrelated cited tip (57.202238ms)
|
||||
✔ C2-06 supporting cite cannot state canon, including a folder also marked playground (41.82067ms)
|
||||
✔ C2-06 supporting file stores supporting scope and its real agent trailer (47.52786ms)
|
||||
✔ C2-06 check evidence and insert are atomic when storing evidence fails (45.049883ms)
|
||||
✔ C2-06 live limits change both directions; unreadable file keeps checks and exact fixed texts (54.4217ms)
|
||||
✔ C2-06 page store is session-local, caps 20 fetches and 200 KiB, drops at disconnect (86.893454ms)
|
||||
✔ C2-06 transport passes safe capped guard reason; ordinary refusal envelope is byte-identical (55.019525ms)
|
||||
✔ C2-06 non-library businesses retain role.claim shape and unguarded free sends (26.383322ms)
|
||||
✔ C2-06 thread messages carry file/last evidence with one read per distinct path (76.778515ms)
|
||||
✔ C2-06 guarded request snapshot cannot change between check and insert (24.114008ms)
|
||||
✔ C2-06 library.limits.set is human-only and invalid settings leave file and receipts unchanged (47.161109ms)
|
||||
✖ C2-06 runtime reads changed and unreadable reply limits without restarting (78.402278ms)
|
||||
✔ C2-06 M11 human replacement works; omitted settings return to defaults (26.436831ms)
|
||||
✔ C2-06 M11 agents and tester cannot change settings, including by changing human (21.452407ms)
|
||||
✔ C2-06 M11 serialization cannot replace settings after the first fence (8.669666ms)
|
||||
✔ C2-06 M11 an unrelated actor cannot appoint itself human and change reply limits (8.204041ms)
|
||||
✔ C2-06 invalid setter values preserve the business and changes.jsonl (9.079346ms)
|
||||
✔ C2-06 validator accepts hand-edited settings; raw reader fails closed on invalid files (10.338142ms)
|
||||
✔ C2-06 CLI replies reads revision and sends only the JSON settings to the human verb (1.898838ms)
|
||||
✔ C2-06 CLI replies requires a file and refuses tester writes before a bus call (0.465972ms)
|
||||
✔ C2-06 RESULT reply-invalid retries once, delivers only the valid answer and names reason (222.089187ms)
|
||||
✔ C2-06 RESULT citation-missing retries once, delivers only the valid answer and names reason (200.104611ms)
|
||||
✔ C2-06 RESULT citations-over-limit retries once, delivers only the valid answer and names reason (197.834891ms)
|
||||
✔ C2-06 RESULT citation-invalid retries once, delivers only the valid answer and names reason (210.156515ms)
|
||||
✔ C2-06 RESULT playground-cited-as-canon retries once, delivers only the valid answer and names reason (213.835593ms)
|
||||
✔ C2-06 RESULT citation-cross-universe retries once, delivers only the valid answer and names reason (209.912186ms)
|
||||
✔ C2-06 RESULT citation-unfetched retries once, delivers only the valid answer and names reason (198.705684ms)
|
||||
✔ C2-06 RESULT two guard refusals use the citation fixed text and exactly one retry (182.386586ms)
|
||||
✔ C2-06 RESULT JSON 34000 characters retries with a shorter valid answer (213.370025ms)
|
||||
✔ C2-06 RESULT JSON 70000 characters retries with a shorter valid answer (199.782915ms)
|
||||
✔ C2-06 RESULT two oversized JSON bodies use the length fixed text with citations required (184.820165ms)
|
||||
✔ C2-06 multibyte plain bodies also receive the one request-size retry (201.829013ms)
|
||||
✔ C2-06 two multibyte plain bodies use the length fallback (182.03426ms)
|
||||
✔ C2-06 RESULT a length refusal then citation refusal shares one retry and citation fallback (183.540139ms)
|
||||
✔ C2-06 fixed empty/failed replies defer unslop note until the next cited reply (274.786836ms)
|
||||
✔ C2-06 cited JSON above the old 32000 clip retains its citations and text (167.141798ms)
|
||||
✔ C2-06 a flagged cited answer keeps the note inside text and citations whole (168.83631ms)
|
||||
✔ C2-06 send_message typed tool runs every guard code before the valid RESULT (230.565935ms)
|
||||
✔ C2-06 outside library the old failed text, clip and unslop behavior hold (197.472747ms)
|
||||
✔ C2-06 outside library a refused send keeps the existing no-retry behavior (151.296315ms)
|
||||
✔ C2-06 the retry turn delivers citation-unavailable reason to the agent (184.635398ms)
|
||||
✔ C2-06 reply schema: free bodies, exact objects and safe refusal reasons (14.759264ms)
|
||||
✔ C2-06 citation setting and all four exact fixed texts (9.899391ms)
|
||||
✔ C2-06 default citation cap passes 20 and refuses 21, even with optional citations (76.751112ms)
|
||||
✔ C2-06 real Git citation scope, reachability, lines and normalized quotes (41.360225ms)
|
||||
✔ C2-06 playground cites pass but cannot state canon (23.671961ms)
|
||||
✔ C2-06 independent universes refuse; a hybrid and only its sources pass (41.572641ms)
|
||||
✔ C2-06 web cites require allowed definition, this session fetch and kept quote (10.468249ms)
|
||||
✔ C2-06 file origin is the path commit and trailer, while last follows served changes (31.989388ms)
|
||||
✔ C2-06 origin uses literal paths even when a filename contains a glob (20.084358ms)
|
||||
✔ C2-06 cited-commit guard reads exactly the C2-05a indexed file set with supporting scope (44.687642ms)
|
||||
✔ C2-06 reply limits fall back independently without coercion or inherited keys (0.462948ms)
|
||||
ℹ tests 57
|
||||
ℹ suites 0
|
||||
ℹ pass 56
|
||||
ℹ fail 1
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 11101.06711
|
||||
|
||||
✖ failing tests:
|
||||
|
||||
test at packages/bus/tests/citation-runtime.test.mjs:12:1
|
||||
✖ C2-06 runtime reads changed and unreadable reply limits without restarting (78.402278ms)
|
||||
Error: invalid-authority
|
||||
at fail (file:///home/jwoltje/.t3/worktrees/mosaic-stack/beakley-row217/packages/bus/src/broker.mjs:215:9)
|
||||
at checkBusiness (file:///home/jwoltje/.t3/worktrees/mosaic-stack/beakley-row217/packages/bus/src/broker.mjs:366:7)
|
||||
at new Broker (file:///home/jwoltje/.t3/worktrees/mosaic-stack/beakley-row217/packages/bus/src/broker.mjs:537:63)
|
||||
at startBroker (file:///home/jwoltje/.t3/worktrees/mosaic-stack/beakley-row217/packages/bus/src/runtime.mjs:274:14)
|
||||
at async TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/beakley-row217/packages/bus/tests/citation-runtime.test.mjs:18:19)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) {
|
||||
code: 'invalid-authority'
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
✔ C2-06 held library lock gives the agent citation-unavailable and its retry reason (5131.834326ms)
|
||||
✔ C2-06 malformed sync state is availability failure, never a fabricated invalid cite (31.609704ms)
|
||||
✔ C2-06 no mirror or freshly initialized empty mirror still means no served citation (31.510292ms)
|
||||
✔ C2-06 coder send_message guard covers every table refusal; inserts nothing (102.606635ms)
|
||||
✔ C2-06 research send_message guard covers every table refusal; inserts nothing (91.30209ms)
|
||||
✔ C2-06 stored check carries the file author trailer at an unrelated cited tip (55.686451ms)
|
||||
✔ C2-06 supporting cite cannot state canon, including a folder also marked playground (42.44166ms)
|
||||
✔ C2-06 supporting file stores supporting scope and its real agent trailer (48.386414ms)
|
||||
✔ C2-06 check evidence and insert are atomic when storing evidence fails (39.194827ms)
|
||||
✔ C2-06 live limits change both directions; unreadable file keeps checks and exact fixed texts (54.284625ms)
|
||||
✔ C2-06 page store is session-local, caps 20 fetches and 200 KiB, drops at disconnect (85.004961ms)
|
||||
✔ C2-06 transport passes safe capped guard reason; ordinary refusal envelope is byte-identical (54.117068ms)
|
||||
✔ C2-06 non-library businesses retain role.claim shape and unguarded free sends (26.131034ms)
|
||||
✔ C2-06 thread messages carry file/last evidence with one read per distinct path (76.437567ms)
|
||||
✔ C2-06 guarded request snapshot cannot change between check and insert (23.908928ms)
|
||||
✔ C2-06 library.limits.set is human-only and invalid settings leave file and receipts unchanged (39.656735ms)
|
||||
✔ C2-06 runtime reads changed and unreadable reply limits without restarting (113.293022ms)
|
||||
✔ C2-06 M11 human replacement works; omitted settings return to defaults (36.305063ms)
|
||||
✔ C2-06 M11 agents and tester cannot change settings, including by changing human (21.839826ms)
|
||||
✔ C2-06 M11 serialization cannot replace settings after the first fence (8.253422ms)
|
||||
✔ C2-06 M11 an unrelated actor cannot appoint itself human and change reply limits (7.674495ms)
|
||||
✔ C2-06 invalid setter values preserve the business and changes.jsonl (8.65299ms)
|
||||
✔ C2-06 validator accepts hand-edited settings; raw reader fails closed on invalid files (9.800617ms)
|
||||
✔ C2-06 CLI replies reads revision and sends only the JSON settings to the human verb (1.78485ms)
|
||||
✔ C2-06 CLI replies requires a file and refuses tester writes before a bus call (0.520156ms)
|
||||
✔ C2-06 RESULT reply-invalid retries once, delivers only the valid answer and names reason (220.792912ms)
|
||||
✔ C2-06 RESULT citation-missing retries once, delivers only the valid answer and names reason (195.400791ms)
|
||||
✔ C2-06 RESULT citations-over-limit retries once, delivers only the valid answer and names reason (196.181772ms)
|
||||
✔ C2-06 RESULT citation-invalid retries once, delivers only the valid answer and names reason (211.797981ms)
|
||||
✔ C2-06 RESULT playground-cited-as-canon retries once, delivers only the valid answer and names reason (212.360651ms)
|
||||
✔ C2-06 RESULT citation-cross-universe retries once, delivers only the valid answer and names reason (212.667005ms)
|
||||
✔ C2-06 RESULT citation-unfetched retries once, delivers only the valid answer and names reason (184.261348ms)
|
||||
✔ C2-06 RESULT two guard refusals use the citation fixed text and exactly one retry (184.957084ms)
|
||||
✔ C2-06 RESULT JSON 34000 characters retries with a shorter valid answer (216.343048ms)
|
||||
✔ C2-06 RESULT JSON 70000 characters retries with a shorter valid answer (198.338992ms)
|
||||
✔ C2-06 RESULT two oversized JSON bodies use the length fixed text with citations required (183.309434ms)
|
||||
✔ C2-06 multibyte plain bodies also receive the one request-size retry (198.411283ms)
|
||||
✔ C2-06 two multibyte plain bodies use the length fallback (182.244769ms)
|
||||
✔ C2-06 RESULT a length refusal then citation refusal shares one retry and citation fallback (184.948978ms)
|
||||
✔ C2-06 fixed empty/failed replies defer unslop note until the next cited reply (294.575418ms)
|
||||
✔ C2-06 cited JSON above the old 32000 clip retains its citations and text (169.454956ms)
|
||||
✔ C2-06 a flagged cited answer keeps the note inside text and citations whole (164.824669ms)
|
||||
✔ C2-06 send_message typed tool runs every guard code before the valid RESULT (213.365137ms)
|
||||
✔ C2-06 outside library the old failed text, clip and unslop behavior hold (198.225522ms)
|
||||
✔ C2-06 outside library a refused send keeps the existing no-retry behavior (155.955999ms)
|
||||
✔ C2-06 the retry turn delivers citation-unavailable reason to the agent (188.198987ms)
|
||||
✔ C2-06 reply schema: free bodies, exact objects and safe refusal reasons (17.723832ms)
|
||||
✔ C2-06 citation setting and all four exact fixed texts (11.590649ms)
|
||||
✔ C2-06 default citation cap passes 20 and refuses 21, even with optional citations (79.713842ms)
|
||||
✔ C2-06 real Git citation scope, reachability, lines and normalized quotes (41.208361ms)
|
||||
✔ C2-06 playground cites pass but cannot state canon (24.250695ms)
|
||||
✔ C2-06 independent universes refuse; a hybrid and only its sources pass (42.707909ms)
|
||||
✔ C2-06 web cites require allowed definition, this session fetch and kept quote (10.901286ms)
|
||||
✔ C2-06 file origin is the path commit and trailer, while last follows served changes (37.369269ms)
|
||||
✔ C2-06 origin uses literal paths even when a filename contains a glob (20.592546ms)
|
||||
✔ C2-06 cited-commit guard reads exactly the C2-05a indexed file set with supporting scope (51.682837ms)
|
||||
✔ C2-06 reply limits fall back independently without coercion or inherited keys (0.499884ms)
|
||||
ℹ tests 57
|
||||
ℹ suites 0
|
||||
ℹ pass 57
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 11134.473726
|
||||
@@ -0,0 +1,10 @@
|
||||
# Bradford
|
||||
|
||||
Builder seat, Codex gpt-6.1-sol, started by Sage under Q246 and mos-1572. Owns the push check row:
|
||||
`scripts/push-check.sh`, which passes a binary only when an approved review candidate lists its path and sha256
|
||||
(docs/plans/2026-10-24_push-guard-binary-manifest.md, #1825).
|
||||
|
||||
No launcher in this directory. The seat runs as a T3 thread and works in its own worktree. It has no credentials of its
|
||||
own; it pushes only its own `bradford/*` branches through the repository credential helper (mos-0981), never `refactor`,
|
||||
`main` or another seat's branch. Poe gives the first Codex review and Dewey the Opus 5.5 landing review (mos-1542,
|
||||
mos-1571). Registered by Sage on 2026-10-24 so the queue can name the seat as row owner (store.mjs isSeatDir).
|
||||
@@ -0,0 +1,162 @@
|
||||
# Row 327 — reviewed binary push check (#1825)
|
||||
|
||||
2026-10-24 Bradford, branch bradford/row327, base b617b80f6.
|
||||
|
||||
## Plan and boundaries
|
||||
|
||||
Implement the scratch check's ordered tokens in scripts/push-check.sh, using an
|
||||
embedded Node program for byte-safe git paths and SHA-256 blob hashing. Bash is
|
||||
the public entry point; Node is already a repository requirement. Git commands
|
||||
use explicit resolved object IDs, disable external diff/textconv, and inspect
|
||||
committed bytes. No queue writes, hook changes, binary evidence, or live state.
|
||||
Fetch is opt-in. Read reviewed rows with the queue package rows() API rooted in
|
||||
the caller's repository; this preserves canonical/witness/replay checks.
|
||||
|
||||
Only the latest round counts; any changes receipt blocks that round. A matching
|
||||
approval authorizes exactly the manifest path/hash, or a path changed from the
|
||||
commit candidate's first parent with matching committed blob hash and mode.
|
||||
Deleted binaries need no candidate. Multiple --row values form a union.
|
||||
|
||||
Add scratch-only integration coverage in scripts/test-push-check.sh. Reuse queue
|
||||
test fixture helpers to bootstrap real scratch queues, then use queue verbs to
|
||||
open rounds and record receipts. All git writes, bare remotes and queues remain
|
||||
under TMPDIR. Test fail-closed ordering and five required mutants, generated as
|
||||
text copies in scratch. No old tests are modified. Add the TOOLS entry.
|
||||
|
||||
Every run needs Sage CLEAR; run timeout -k 10. Record plain-text results here or
|
||||
in this packet. After green checks, commit and push only bradford/row327 through
|
||||
the repository helper, send Sage and Poe tip/base/path sha256 manifest, and move
|
||||
327 in-review. Sage owns request posting and landing; Dewey reviews once there.
|
||||
|
||||
## Recovery and choices
|
||||
|
||||
Initial worktree queue next refused linked-worktree access as designed. Queue
|
||||
claim is performed from the canonical checkout; production reads in the guard
|
||||
retain the same refusal rather than invent a worktree override.
|
||||
|
||||
Requested Sage ruling on AGENTS log appends outside the brief's owned paths.
|
||||
|
||||
Sage sage-3989: lead handles BUILD-LOG and SESSIONS at landing. Session entry:
|
||||
2026-10-24 Bradford — row 327 / #1825 — implementation and scratch verification
|
||||
in this packet; outcome to be appended after acceptance.
|
||||
|
||||
Implementation note: commit candidates use an explicit first-parent diff (empty
|
||||
tree for a root commit), with rename detection disabled, like verify-commit.
|
||||
The changes-veto case has both an approval and a changes receipt; a veto mutant
|
||||
would otherwise still fail for lack of approval and provide false confidence.
|
||||
A receipt for another candidate cannot be produced through queue verbs: the
|
||||
suite corrupts only a scratch queue and expects the production reader to refuse.
|
||||
Diff color, external diff and textconv are disabled so scans inspect plain git
|
||||
output. Paths are read from NUL-delimited records (including spaces/tabs).
|
||||
|
||||
## Verification (Sage CLEAR sage-3991)
|
||||
|
||||
First new-suite run red: my whitespace-path fixture attempted a manifest path
|
||||
that the queue intentionally forbids. Corrected the fixture to a commit
|
||||
candidate, which can contain that git path. Production queue code and old tests
|
||||
remain unchanged. Raw first-run output is test-run-1.txt.
|
||||
|
||||
Second run green: PASS push-check 22 checks; KILLED skip-hash,
|
||||
accept-changes, earlier-round, working-tree, no-row. test-run-2.txt holds the
|
||||
plain-text receipt. bash -n both scripts and git diff --check passed. Runs used
|
||||
TMPDIR recorded in tmpdir.txt and timeout -k 10 240; all generated binary bytes
|
||||
were in disposable scratch repositories, never in this checkout or evidence.
|
||||
The slot was used for only the authorized new suite and syntax/diff checks.
|
||||
No claim of the lead's full scripts/test-*.sh landing gate is made here.
|
||||
|
||||
Final inspection after the first green run found a path-decoding concern: lossy
|
||||
UTF-8 decoding can conflate distinct git filenames. Hardened NUL-delimited path
|
||||
decoding to reject invalid UTF-8, and quote newline-containing paths in refusal
|
||||
output to preserve one STOP line. Added scratch cases for both. Requested a new
|
||||
CLEAR (bradford-0005) because the previous slot had already been released.
|
||||
|
||||
Final run (sage-3994 CLEAR) green on final code: PASS push-check 24 checks,
|
||||
all five mutants KILLED again, bash -n both scripts and git diff --check passed.
|
||||
Receipt: test-run-3.txt. The guard rejects non-UTF-8 git paths as environment
|
||||
errors rather than comparing replacement characters; newline paths remain
|
||||
checkable through commit candidates and refusals quote them on one line.
|
||||
|
||||
Acceptance for the builder stage: ordered tokens and stop behavior, explicit
|
||||
base/fetch, exact blob manifest/commit checks, latest-round/veto checks, deletion,
|
||||
log/FF/secrets/attribution refusals, and all required mutants are covered. Queue
|
||||
reads use rows() with production validation; tests use only scratch queues.
|
||||
Candidate-mismatched receipts are impossible through the queue API and are
|
||||
covered by a corrupt scratch queue refusing its read. The lead's full-suite gate,
|
||||
Poe first review, Dewey landing review, and adoption for Sage's next push remain
|
||||
landing stages. No hooks, role policy, credentials or other seats' paths changed.
|
||||
|
||||
## Poe first review R1 (poe-0010) — changes
|
||||
|
||||
cceea407e has a blocking subdirectory bypass: ls-tree without --full-tree can
|
||||
omit an existing binary outside the caller cwd, making it look deleted.
|
||||
Accepted the finding. Git now anchors all invocations at the repository root,
|
||||
ls-tree uses --full-tree, and diff/diff-tree use --no-relative. EXPECTED_LOG still
|
||||
resolves from the original caller cwd. Added outside-cwd and nested-binary cases
|
||||
under diff.relative=true: unreviewed stops, reviewed manifest/commit passes.
|
||||
No old test changed. New run requires Sage CLEAR before execution.
|
||||
|
||||
R1 verification under sage-3999 CLEAR: test-run-4.txt records PASS 29 checks
|
||||
and KILLED all five required mutants. Syntax and diff whitespace checks passed.
|
||||
A second bounded run used the new suite against cceea407e's script copied under
|
||||
TMPDIR: r1-regression-red.txt records the outside-cwd unreviewed binary reaching
|
||||
NO_BINARY/PUSH_READY (actual exit 0, expected 1). Thus the new regression detects
|
||||
the reviewed bug, while the revised guard refuses it. No code changed between
|
||||
the green run and this old-candidate reproduction. All runs used timeout -k 10.
|
||||
|
||||
Holding claimant queue writes per sage-3999 until Boyd finishes row 309's record.
|
||||
Last acknowledged row 327 state is in-progress (bradford-0010, revision 3868).
|
||||
|
||||
## Dewey landing review B1 (dewey-0956) — changes
|
||||
|
||||
Read the invited review body at /mnt/storage/scratch/tmp/dew327vWXloCT/body.md.
|
||||
B1 identifies a brief-level gap: numstat follows candidate/host git attributes,
|
||||
so *.bin diff makes a NUL-containing blob disappear from the binary-only set.
|
||||
The production script indeed filters numstat before reading any blob, consistent
|
||||
with that data flow. Proposed correction: enumerate every changed numstat path,
|
||||
skip absent/non-blob entries at SHA, classify binary when numstat says binary OR
|
||||
committed blob has NUL among first 8000 bytes. Read with cat-file, never worktree.
|
||||
Test committed .gitattributes, info/attributes, and core.attributesFile overrides
|
||||
in scratch; reject with no row, allow exact reviewed bytes; add NUL-scan mutant.
|
||||
Sage owns the brief amendment and next CLEAR/queue sequencing.
|
||||
|
||||
N1 acknowledged: candidate-equality check is defense in depth; invalid receipt
|
||||
cannot pass queue replay, so the corrupt-queue case does not isolate that check.
|
||||
N2/N3 recorded as described in review, without optional secrets/reader changes.
|
||||
N4 planned hardening: refuse unconfirmed durable tail notes from rows() with
|
||||
exit 2, with a real scratch witness-prefix case rather than a test-only reader.
|
||||
No test run or queue write started for B1/N4 before Sage CLEAR.
|
||||
|
||||
Sage sage-4013/4015 authorizes B1 and N4 within the brief; amendment committed on
|
||||
refactor at 9042754c4 (read with git show, no branch change). Fix and tests written
|
||||
before requesting CLEAR as directed. Tests cover all three attribute sources,
|
||||
approved manifest success under each override, exact 7999/8000 offset boundary,
|
||||
and a real prefix-witness rollback to yield an unconfirmed approval tail.
|
||||
Added only the requested sixth mutant, skip-nul-scan; the original five remain.
|
||||
No new production configuration knobs, no secrets-diff change, no queue writes.
|
||||
Will demonstrate red against the prior candidate using the new tests, then green
|
||||
against revised code, under the approved slot. Full landing gate remains Sage's.
|
||||
|
||||
After Dewey's round-2 CHANGES record (comment 31522, rev3876), Sage sage-4016
|
||||
released only the claimant return to in-progress. Acknowledged:
|
||||
`ok bradford-0017 rev 3877 row 327 in-review→in-progress`.
|
||||
No other queue write before the next in-review candidate move.
|
||||
Test slot remains pending Sage CLEAR after Gyro's build.
|
||||
|
||||
## Amendment 1 verification (sage-4017 CLEAR)
|
||||
|
||||
b1-regression-red.txt: new tests against 704910ca3 reproduce attributes-hidden
|
||||
asset.bin reaching NO_BINARY/PUSH_READY with exit0 instead of exit1.
|
||||
n4-regression-red.txt: revised code with only the N4 check removed lets the real
|
||||
scratch unconfirmed approval tail reach BINARY_REVIEWED/PUSH_READY, exit0 rather
|
||||
than exit2. These are expected negative controls; neither changed committed code.
|
||||
|
||||
Final full new-suite run is green: test-run-5.txt records PASS 38 checks and
|
||||
KILLED skip-hash, accept-changes, earlier-round, working-tree, no-row, skip-nul-scan.
|
||||
All runs used timeout -k 10 240 with the same scratch TMPDIR; no old tests were
|
||||
changed or run. bash -n both scripts and git diff --check also passed. No source
|
||||
changes followed this green run. Sage's full landing gate is still separate.
|
||||
|
||||
Scope in the final delta: classify all changed present blobs using numstat OR
|
||||
first-8000-byte NUL; fail closed on queue unconfirmed-tail notes; regression cases
|
||||
and requested sixth mutant; TOOLS entry and this plain-text packet. B1's brief
|
||||
amendment is Sage's 9042754c4; this branch does not edit the brief or queue files.
|
||||
@@ -0,0 +1,27 @@
|
||||
node:internal/modules/run_main:107
|
||||
triggerUncaughtException(
|
||||
^
|
||||
|
||||
AssertionError [ERR_ASSERTION]: LOG_OK
|
||||
FF_OK
|
||||
NO_BINARY
|
||||
SECRETS_CLEAN
|
||||
NO_ATTRIBUTION
|
||||
PUSH_READY ee394f31d1e52751716e2413049f41b2f3072e65..76acc948149e718091fcd3f3807257e752a6616e
|
||||
|
||||
|
||||
|
||||
0 !== 1
|
||||
|
||||
at Object.check (file:///home/jwoltje/.t3/worktrees/mosaic-stack/bradford-row327/[eval1]:44:12)
|
||||
at file:///home/jwoltje/.t3/worktrees/mosaic-stack/bradford-row327/[eval1]:100:7
|
||||
at process.processTicksAndRejections (node:internal/process/task_queues:104:5) {
|
||||
generatedMessage: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: 0,
|
||||
expected: 1,
|
||||
operator: 'strictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
|
||||
Node.js v26.8.1
|
||||
@@ -0,0 +1,27 @@
|
||||
node:internal/modules/run_main:107
|
||||
triggerUncaughtException(
|
||||
^
|
||||
|
||||
AssertionError [ERR_ASSERTION]: LOG_OK
|
||||
FF_OK
|
||||
BINARY_REVIEWED 1
|
||||
SECRETS_CLEAN
|
||||
NO_ATTRIBUTION
|
||||
PUSH_READY c1a8a1e9b8c3988874a8f7a35afab7c06aea94a5..325cd3671a7bf70b9a3aee60f4446bc93594a12a
|
||||
|
||||
|
||||
|
||||
0 !== 2
|
||||
|
||||
at Object.check (file:///home/jwoltje/.t3/worktrees/mosaic-stack/bradford-row327/[eval1]:44:12)
|
||||
at file:///home/jwoltje/.t3/worktrees/mosaic-stack/bradford-row327/[eval1]:121:7
|
||||
at process.processTicksAndRejections (node:internal/process/task_queues:104:5) {
|
||||
generatedMessage: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: 0,
|
||||
expected: 2,
|
||||
operator: 'strictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
|
||||
Node.js v26.8.1
|
||||
@@ -0,0 +1,27 @@
|
||||
node:internal/modules/run_main:107
|
||||
triggerUncaughtException(
|
||||
^
|
||||
|
||||
AssertionError [ERR_ASSERTION]: LOG_OK
|
||||
FF_OK
|
||||
NO_BINARY
|
||||
SECRETS_CLEAN
|
||||
NO_ATTRIBUTION
|
||||
PUSH_READY 896bdf0ef56596c67d2dc427275743c46026e832..ad9f9c86112fadafef4d4854f46bd9994fe2fe5d
|
||||
|
||||
|
||||
|
||||
0 !== 1
|
||||
|
||||
at Object.check (file:///home/jwoltje/.t3/worktrees/mosaic-stack/bradford-row327/[eval1]:44:12)
|
||||
at file:///home/jwoltje/.t3/worktrees/mosaic-stack/bradford-row327/[eval1]:130:7
|
||||
at process.processTicksAndRejections (node:internal/process/task_queues:104:5) {
|
||||
generatedMessage: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: 0,
|
||||
expected: 1,
|
||||
operator: 'strictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
|
||||
Node.js v26.8.1
|
||||
@@ -0,0 +1,21 @@
|
||||
node:internal/modules/run_main:107
|
||||
triggerUncaughtException(
|
||||
^
|
||||
|
||||
AssertionError [ERR_ASSERTION]: queue: candidate manifest path must be a repo-relative path: "space tab\tasset.bin"
|
||||
|
||||
|
||||
2 !== 1
|
||||
|
||||
at Object.round (file:///home/jwoltje/.t3/worktrees/mosaic-stack/bradford-row327/[eval1]:61:12)
|
||||
at file:///home/jwoltje/.t3/worktrees/mosaic-stack/bradford-row327/[eval1]:116:7
|
||||
at process.processTicksAndRejections (node:internal/process/task_queues:104:5) {
|
||||
generatedMessage: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: 2,
|
||||
expected: 1,
|
||||
operator: 'strictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
|
||||
Node.js v26.8.1
|
||||
@@ -0,0 +1,6 @@
|
||||
PASS push-check 22 checks
|
||||
KILLED skip-hash
|
||||
KILLED accept-changes
|
||||
KILLED earlier-round
|
||||
KILLED working-tree
|
||||
KILLED no-row
|
||||
@@ -0,0 +1,6 @@
|
||||
PASS push-check 24 checks
|
||||
KILLED skip-hash
|
||||
KILLED accept-changes
|
||||
KILLED earlier-round
|
||||
KILLED working-tree
|
||||
KILLED no-row
|
||||
@@ -0,0 +1,6 @@
|
||||
PASS push-check 29 checks
|
||||
KILLED skip-hash
|
||||
KILLED accept-changes
|
||||
KILLED earlier-round
|
||||
KILLED working-tree
|
||||
KILLED no-row
|
||||
@@ -0,0 +1,7 @@
|
||||
PASS push-check 38 checks
|
||||
KILLED skip-hash
|
||||
KILLED accept-changes
|
||||
KILLED earlier-round
|
||||
KILLED working-tree
|
||||
KILLED no-row
|
||||
KILLED skip-nul-scan
|
||||
@@ -0,0 +1 @@
|
||||
/mnt/storage/scratch/tmp/YPrPwR
|
||||
@@ -0,0 +1,124 @@
|
||||
# Row 217 (Case 2 C2-06): build notes
|
||||
|
||||
Brief: docs/plans/2026-10-20_case2-rows.md, section C2-06, at base 45dca69f6.
|
||||
Builder: Launchpad until 2026-10-23 19:09Z. Then Mos moved coding to Codex seats (mos-1500, Q245) and
|
||||
the row went to Beakley on beakley/row217.
|
||||
|
||||
## State at handoff
|
||||
|
||||
All code in this commit is UNTESTED. No node, no test and no mutant has run on it. No test file is written.
|
||||
`packages/harness/src/runner.mjs` is not started.
|
||||
|
||||
Done, untested:
|
||||
- `packages/library/src/limits.mjs` (new, pure): `REPLY_LIMITS`, `resolveReplyLimits(read)` gives
|
||||
`{requireCitation, citationsPerReply, fallback, unreadable}`, `checkReplyLimits(value)` gives a clone or null.
|
||||
An unreadable business file forces `requireCitation` true. A key falls back to its default when
|
||||
`replyLimits` is not an object or the key holds an invalid value.
|
||||
- `packages/library/src/guard.mjs` (new): `GUARD_CODES` in design 5.2's table order, `FIXED_TEXTS`,
|
||||
`WEB_CITE_DEFINITIONS`, `REASON_MAX` (300), `GuardError`, `parseReply`, `checkReply`, `libraryReader`,
|
||||
`lastCommits`, `guardReply`.
|
||||
- `packages/library/src/index.mjs`: exports for both.
|
||||
- `packages/business/src/business.mjs`: `replyLimits` is a known top key. The validated output doesn't carry it.
|
||||
- `packages/business/src/organization.mjs`: the M11 fence `replyLimitsFence(old, document, actor)` compares
|
||||
against `old.human`, refuses the tester and any `<definition>.<instance>` of `old.roles`, and is called for
|
||||
both `document` and `written`. `setReplyLimits` and `readRaw` are exported.
|
||||
- `packages/bus/src/broker.mjs`: the guard call, the page store, the check event, `library.limits.set`,
|
||||
`library.status` gains `replyLimits`, `role.claim` gains `library`, `thread.messages` gains `check` and `last`.
|
||||
- `packages/bus/src/server.mjs`, `client.mjs`: `BusError.reason` (sage-3599).
|
||||
- `packages/bus/src/runtime.mjs`: guard deps and the `library.limits.set` dispatch.
|
||||
- `packages/cli/src/limits.mjs`: `limits replies --file LIMITS`.
|
||||
|
||||
Left:
|
||||
- `packages/harness/src/runner.mjs`: the C2-07 runner work (see "Runner plan" below).
|
||||
- `packages/cli/README.md`: a line for `limits replies`.
|
||||
- Every test in the brief and the rulings below, then the mutants.
|
||||
- The rebases onto rows 283, 216 and 285, with the drift checks below.
|
||||
- This file's gate results and the manifest.
|
||||
|
||||
## Rulings in force
|
||||
|
||||
sage-3595:
|
||||
1. Supporting scope: a stub classify test now. Before in-review, rebase onto row 283's landing
|
||||
(honker/row283-build bd2c1c4ea when ruled) and add two real-fixture tests: a supporting cite with
|
||||
`as: "canon"` refuses `playground-cited-as-canon`, and the stored check result names `supporting`.
|
||||
2. runtime.mjs is approved for the guard wiring and the one `library.limits.set` branch. List its hunks here,
|
||||
name it in the manifest, and drift-check it after the 216 and 285 rebases.
|
||||
3. The check result is an `action.allowed` event with `action: "message.checked"`. The events kind CHECK at
|
||||
`packages/bus/src/migrations/3b.sql:9` has no `message.checked`, so a new kind would be a schema step.
|
||||
The event and the message INSERT share one transaction: a mutant that splits them must fail.
|
||||
4. readLibrary at the cited commit stands in for the C2-05a index. On the 216 rebase, compare 216's index
|
||||
set with readLibrary's for the fixture and record the result here.
|
||||
5. The retry is for a library business only. Tests: a JSON body between 32,768 characters and 64 KiB gets
|
||||
the retry; outside a library business nothing changes.
|
||||
6. Old `role.claim` pins stay as they are.
|
||||
7. `render.mjs:6` and `render.test.mjs:58` belong to row 225. Leave them.
|
||||
8. `thread.messages` rows that carry `check` get `last` per path cite: the file's last commit at the served
|
||||
tip, one git call per distinct path per read. Test with a fixture file committed after the cite.
|
||||
|
||||
sage-3599: `BusError` gets an optional `reason`. Only the citation guard's refusals set it. The envelope
|
||||
carries `reason` only when it is set. It is the guard's own text, never a quote, file text, url or a path
|
||||
other than the cited one, at most 300 characters. Tests: a guard refusal reaches the runner with code and
|
||||
reason; a refusal without a reason has an envelope byte-identical to today's, checked against an existing
|
||||
pin; a mutant that drops the client.mjs pass-through fails.
|
||||
|
||||
sage-3602: store `file` per path cite from the same git log call as the trailer. Test with a cited commit
|
||||
that didn't touch the file, so `file` differs from the cited commit, and `last` equals `file`.
|
||||
|
||||
## The check-result contract with row 225 (launchpad-0118, launchpad-0120, morgana-0200, sage-3596)
|
||||
|
||||
- Stored on the `message.checked` event: `{citations: [...]}` in body order.
|
||||
- A path cite: `{scope, agent, file}`. `scope` is the classify scope. `agent` is the cite's file's last
|
||||
commit's `Mosaic-Agent` trailer at the cited commit, or null. `file` is that commit's 40-hex id, or null.
|
||||
- A url cite: `{scope: "web", agent: null}`.
|
||||
- On `thread.messages`, each path cite gains `last`: the file's last commit at the served tip (40-hex or null).
|
||||
The Console compares `last` with `file`.
|
||||
- Rows without `check` are unchanged. No `changed` boolean. The webui passes rows through unchanged.
|
||||
|
||||
## Hunks outside the brief's file list
|
||||
|
||||
- `packages/bus/src/runtime.mjs`: imports `setReplyLimits`; the library deps gain `guard`, `replyLimits`
|
||||
(organizationWriter `readRaw`, or `{readable: false}` with no organization), `last` and `GuardError`;
|
||||
the organization dispatch gains `library.limits.set`.
|
||||
- `packages/bus/src/server.mjs`: a `refusal(e, other)` helper above serve's doc comment builds every
|
||||
BusError envelope and adds `reason` only when set. The synchronous request path accepts a Promise result
|
||||
(the guard is async), with a 120 s timeout, and releases `own` when it settles.
|
||||
- `packages/bus/src/client.mjs`: `new BusError(r.error, reason)` with `reason` a string cut at 300.
|
||||
|
||||
## Decisions and their tradeoffs
|
||||
|
||||
- The guard runs async outside the SQL transaction, then re-enters request() through `#guardPass`, so
|
||||
message.send's insert and the check event stay one synchronous transaction.
|
||||
- The guard runs before message.send's own checks, so a guard code can come before an authority code.
|
||||
- The check event id is derived from the message id (a UUID-shaped sha256), so `thread.messages` finds it
|
||||
through the unique index on `events.id`.
|
||||
- With no organization configured, `replyLimits` reads as unreadable, so it fails closed.
|
||||
- With more than one library project, the guard uses the first in the business file's order.
|
||||
- A library business without guard deps refuses guarded sends with `project-not-configured`.
|
||||
- The page store is per cap: 20 pages of 200 KB, kept only in a library business, dropped at session
|
||||
delete or disconnect and at run end.
|
||||
- The CLI `replies` verb reads the revision itself from `limits`.
|
||||
- Guard reasons never carry a url or a quote (sage-3599).
|
||||
|
||||
## Runner plan (not built)
|
||||
|
||||
`role.claim`'s reply is discarded at `runner.mjs:462`; keep it and read `library === true`. In a library
|
||||
business, at the reply site (`runner.mjs:582-587`):
|
||||
- Fixed texts `(the session gave no answer)` and `(the turn failed)`; the reason stays in the run log.
|
||||
A fixed text goes with no note, and `unslop.sent()` is not called, so the note waits.
|
||||
- A body that parses as a JSON object with a string `text` gets `unslop.note()` appended to `text`, is
|
||||
serialized again and is never clipped. A plain body keeps `clip(body) + unslop.note()`.
|
||||
- On a refusal whose code is in `GUARD_CODES`, or `request-too-large` from the client, or the broker's
|
||||
`invalid-request` from `string(a.body, 32768)` for a body over 32,768 characters (ruling 5; the runner
|
||||
can tell it by the body length it sent), run one new turn in the same
|
||||
session naming the code and `err.reason`, or the 64 KiB limit. Bracket it with usage like other turns.
|
||||
- After the retry: a table code sends `(no answer passed the citation check)`, too large sends
|
||||
`(the answer was too long to send)`. One retry per answer, whatever the cause.
|
||||
- `runTurn`'s output buffer holds up to 4 * BODY_MAX characters, so a reply over 64 KiB can reach the send.
|
||||
- Outside a library business nothing changes.
|
||||
|
||||
## Mutants planned
|
||||
|
||||
- The M11 writer check removed.
|
||||
- `document.human` compared instead of `old.human`.
|
||||
- The check event split from the insert transaction.
|
||||
- The client.mjs reason pass-through dropped.
|
||||
@@ -0,0 +1,323 @@
|
||||
# Row 296: FED R7, scratch two-instance acceptance (#1802)
|
||||
|
||||
## Start
|
||||
|
||||
- Started 2026-10-23 18:53:27Z, on Sage's sage-3583 (mos-1489).
|
||||
- Base: origin/refactor 45dca69f6 (pinned; local copy used, no fetch: fetch runs the credential node script, which
|
||||
is held during Darkwing's re-pin window).
|
||||
- Branch: quackerjack/row296 in worktree quackerjack-fed-r5-row296.
|
||||
- Brief: docs/plans/2026-10-23_mvp-readiness-rows.md at 45dca69f6, section "Brief: FED R7, scratch two-instance
|
||||
acceptance" (line 77).
|
||||
- Constraints from Sage: scratch roots only (mktemp -d under /mnt/storage/scratch/tmp), never ~/.mosaic-dev or
|
||||
the live bus. No push, claim, queue write, node or test run until CLEAR.
|
||||
|
||||
## What the brief asks for (summary)
|
||||
|
||||
- One script test under scripts/ with its harness in packages/*/tests/, as row 190's tests are.
|
||||
- Two configs, two data roots, two Consoles, one fake OP. Consoles start outside agent ancestry in a transient
|
||||
user unit. They never use the live stack's units, ports or sockets. The script removes its units on exit (trap).
|
||||
- Test (design section 7 R7 gate): Jason's test identity, granted collaborator on one hub project, signs in,
|
||||
makes a thread, sends to the granted instance, gets the reply in the thread, is refused on another project and
|
||||
on board reads, is revoked, is refused again, and the run ends. The factory shows nothing of the hub.
|
||||
- Mutants: grant project list widened to `*`; revocation claim end skipped.
|
||||
- Gate: Filbert approves the manifest; the script test and every scripts/test-*.sh green on Sage's gate; no unit,
|
||||
port or socket of the script outlives the run. R8 (live window) stays row 209.
|
||||
|
||||
## Open reads before design
|
||||
|
||||
- R4 and R6 candidates (the brief says it builds on their combined candidate). Confirm what they expose: the
|
||||
hub sign-in, grant and revocation paths, and the Console's board-read refusal.
|
||||
- Row 190's test harness (several instances on one uid): how it starts units and cleans up.
|
||||
- Transient user unit support on this host (systemd-run --user), and how the existing tests detect it.
|
||||
|
||||
## Status
|
||||
|
||||
- 18:53Z: worktree created, brief read. No code yet.
|
||||
|
||||
## Handoff 2026-10-23 19:10:09Z (Mos ruling Q245, mos-1503)
|
||||
|
||||
Row 296 moves to Lena (Codex seat, thread db27faca-85fb-4ca0-9fc7-78d740d3fa3a, branch lena/row296). Quackerjack
|
||||
stops here: no builds, no claim, no queue writes. This design is the handoff; Lena continues it.
|
||||
|
||||
Base: 45dca69f6. R4 landed as 2efd127ce (ancestor of the base, checked with merge-base --is-ancestor). R6 landed as
|
||||
d3059c2c3 (row 294). R7 is claimable once Darkwing's window ends (Sage, sage-3592).
|
||||
|
||||
What I verified by reading (not by running):
|
||||
- packages/cli/src/access.mjs:65 reads `system.federation?.peers ?? []` (the R6 seam).
|
||||
- packages/bus/src/user-cli.mjs exists at base (the user-cli transport).
|
||||
- Row 190's tests (packages/cli/tests/stack-instances.test.mjs, stack-release.test.mjs T56, stack-release-fixture.mjs)
|
||||
drive stand-in units and fixtures. They do not start real transient user units. Not a model for R7's Consoles.
|
||||
- Real transient-unit launch pattern: packages/conversation/src/cohort.mjs (`scopeAvailable()` and `ScopeLauncher`,
|
||||
systemd-run --user --scope -p Delegate=yes --unit=...; MANAGER_ENV = XDG_RUNTIME_DIR, DBUS_SESSION_BUS_ADDRESS).
|
||||
- Test-only spawn of systemd-run in packages/conversation/tests is the nearest precedent for start/stop cleanup.
|
||||
|
||||
What I did NOT verify (so treat as open): the hub sign-in, grant, revocation and board-read paths in R4/R6 code; the
|
||||
Console startup flags; whether the fake OP can be a local stand-in; the trap-based unit cleanup.
|
||||
|
||||
Design (proposal, not yet checked against code):
|
||||
1. scripts/test-federation-acceptance.sh: the entry point. Creates a mktemp -d scratch root under
|
||||
/mnt/storage/scratch/tmp (never ~/.mosaic-dev, never the live bus). trap removes every unit it started and the
|
||||
scratch root. Refuses to run if a transient unit name collides.
|
||||
2. Two configs (instance A = hub-side granted seat, instance B = collaborator's home), each with its own
|
||||
MOSAIC_CONFIG, data root and federation.self; federation.peers names the other.
|
||||
3. One fake OP: a local stand-in that issues Jason's test identity. Its port and socket are per-run, not the live ones.
|
||||
4. Two Consoles, each in its own transient user unit (systemd-run --user --unit=mosaic-r7-<run>-<A|B>); outside agent
|
||||
ancestry; ports picked per run.
|
||||
5. Test flow (the R7 gate): identity -> grant on one hub project -> sign in -> thread -> send to granted instance ->
|
||||
reply in thread -> refused on another project -> refused on board reads -> revoke -> refused after revoke -> run
|
||||
ends. Factory output must show nothing of the hub.
|
||||
6. Mutants: (a) grant project list widened to `*`, must fail the other-project refusal; (b) revocation claim end
|
||||
skipped, must fail the refusal-after-revoke check.
|
||||
|
||||
Unresolved decisions for Lena (I did not decide these):
|
||||
- Whether the harness lives in packages/cli/tests (matching row 190) or packages/conversation/tests (matching
|
||||
cohort.mjs). Brief says packages/*/tests/; pick the one that owns the Console start path.
|
||||
- Fake OP: in-process HTTP stand-in versus file-backed identity. No preference recorded.
|
||||
- Port selection: fixed range per run vs OS-assigned. Brief forbids the live ports; it does not pick a range.
|
||||
|
||||
R2 and R5 learning:
|
||||
- R2 (row 203, #1701) landed as a4da4e6df. I built it. Relevant to R7: validateFederation in
|
||||
scripts/mosaic-config.mjs rejects unknown keys and bad ids, and test-config.sh has an FED block
|
||||
(expect_fed_refusal). Use federation.self/peers exactly as row 203 validates them.
|
||||
Mutant runner pattern: one textual edit that must occur exactly once, then a named test must fail; restore from git.
|
||||
Name filter gotcha: `node --test --test-name-pattern` skips subtests whose parent does not match; include the
|
||||
parent name (T57 for row 203).
|
||||
- R5: I did not build R5 in this session and have no first-hand notes on it. Ask Sage for R5's landing sha and notes.
|
||||
|
||||
Status: design written; no code, no test runs, no claim, no push of the test files. Next owner: Lena.
|
||||
|
||||
## Lena continuation, 2026-10-23
|
||||
|
||||
Owner: Lena, thread db27faca-85fb-4ca0-9fc7-78d740d3fa3a. Branch lena/row296.
|
||||
Base remains 45dca69f6. Quackerjack's handoff c6ab9bdc9 preserved by cherry-pick ad84c1e45.
|
||||
Issue #1802 exists. Reviewer Filbert. Sage owns queue state, shared test slot and landing.
|
||||
Status: Untested. All Node, tests and credential-helper fetch/push held for Sage CLEAR (sage-3615).
|
||||
The earlier canonical `queue next lena` read finished with `nothing` and a rendered-view warning;
|
||||
no queue state was changed. Lena's owner registration is Sage's action.
|
||||
|
||||
### Design decisions sent to Sage (lena-0003)
|
||||
|
||||
- Harness under packages/cli/tests, beside row 190's instance proof; shell entry under scripts/.
|
||||
- Existing HTTPS fakeOidc helper, its generated scratch CA trusted through NODE_EXTRA_CA_CERTS
|
||||
by each real Console CLI. One fake OP, two client ids; no TLS verification bypass.
|
||||
- Kernel-assigned loopback ports (0), discovered from each Console's startup log. Public origins
|
||||
are distinct *.example.test HTTPS names; HTTP requests model the loopback reverse proxy with
|
||||
exact Host and Origin. This proves the Console boundary, not a deployed HTTPS front end (R8).
|
||||
- Transient user service units, not scopes: a scope leaves ancestry beneath the caller; the real
|
||||
user proof walks ancestry. Each Console runs the existing cli.mjs serve --sso --send verb.
|
||||
- Real startHost broker process and createLauncher. Only the harness adapter is a test stand-in,
|
||||
as in thread-revoke.test.mjs. A real sandboxed run replies through the broker.
|
||||
- Scratch-only setup and access grant/revoke use real human CLI transport from a transient service.
|
||||
No injected principal verifier, direct bindHuman/bindUser, or simulated user transport.
|
||||
- Every service has a unique per-run prefix and is recorded before launch. Shell EXIT/INT/TERM
|
||||
traps stop only these services, wait for collection and verify socket and port closure.
|
||||
- Claim-end assertion reads append-only claim history independently of the launcher's final
|
||||
shutdown so the claim-end mutant cannot be hidden by endLaunch's cleanup.
|
||||
|
||||
### Implementation plan
|
||||
|
||||
Goal: an executable scratch proof of federation section 7's R7 gate, without live state.
|
||||
Architecture: shell lifecycle owner, Node test driver, test-only host fixture, existing real Console CLI.
|
||||
Tech: Bash, Node ESM/node:test, systemd user transient services, existing fake OP and bwrap adapter.
|
||||
Spec: docs/plans/2026-10-23_mvp-readiness-rows.md, FED R7, plus preserved handoff above.
|
||||
|
||||
Constraints: scratch only under /mnt/storage/scratch/tmp; no live units/ports/sockets/configs or
|
||||
credential reads; no production behavior/policy changes; no old test edits without Mos via Sage.
|
||||
|
||||
Review focus: partial startup cleanup; signals; unit name collision; mismatched hub/factory sessions;
|
||||
claim end versus process exit. Each must have explicit assertions or a negative cleanup exercise.
|
||||
|
||||
- [ ] Write acceptance driver assertions: Jason test sub binds as collaborator (owner is another
|
||||
fixture identity), one allowed project/instance, thread send and correlated RESULT, private
|
||||
project creation/read refused, board reads refused, factory has no hub objects, revoke denies
|
||||
session and re-login, claim history records access-revoked and runner ends.
|
||||
- [ ] Write shell lifecycle: scratch HOME/TMPDIR, unique unit ledger, bounded command timeout,
|
||||
traps stop/collect only this run's units, verify recorded sockets and ports no longer listen.
|
||||
- [ ] Write host fixture using startHost(bootConfig), createLauncher with fakeHarnesses and the
|
||||
existing thread adapter. Prepare two named configs through bootstrap before fixture edits;
|
||||
supply only generated test client slots. Setup/grant/revoke through real human transport.
|
||||
- [ ] On Sage CLEAR run only the new script, fix failures in new files and record exact results.
|
||||
- [ ] Prepare explicit once-only mutant patches: R5 projects widened to ['*']; R4 #claimEnd call
|
||||
skipped. On Sage CLEAR prove each gives an assertion failure, restore bytes in finally.
|
||||
- [ ] Publish manifest (paths, hashes, assertion mapping, old-test numstat), request Filbert review,
|
||||
push additive commits to lena/row296 only. Sage runs shared suites and gate and lands the row.
|
||||
|
||||
Pre-existing test changes: none (numstat: empty).
|
||||
|
||||
### Source inspection corrections before first execution
|
||||
|
||||
- The real webui chat is channel-gated. Scratch businesses enable only harness pi and channel webui;
|
||||
the loader fixture re-exports the unchanged webui channel. The adapter replacement is exactly
|
||||
fakeHarnesses' pi.adapter export; no product file gains a fixture branch.
|
||||
- startHost creates a real broker child and a real Unix proof socket; it is hosted in the test
|
||||
driver. The two Console services run the exact same-tree webui CLI, which is required by
|
||||
verifyPrincipal. Human setup runs the exact same-tree human-cli through humanTransport.
|
||||
- The earlier in-process host proposal did not need a separate host fixture: startHost exposes
|
||||
the production launcher API directly, so the only helper file is federation-human.mjs.
|
||||
- Read-only SQLite inspects claim evidence while the broker remains the sole writer. The test
|
||||
also checks the registered runner and engine pids/start times are gone after revocation.
|
||||
- `--kill-after-start` kills the test process after both services have listened; Node teardown
|
||||
hooks cannot run. The shell trap owns service cleanup independently. This is an expected-red
|
||||
exercise; acceptance requires its kill marker, nonzero exit and successful cleanup line.
|
||||
- Main driver environment is a whitelist (PATH, scratch HOME/TMPDIR, systemd manager transport,
|
||||
R7 run ids). Console/human services use env -i. No host preload or credential env is carried.
|
||||
- No Node or test has run. Bash syntax and git diff --check passed during preparation.
|
||||
|
||||
### Binding design correction: sage-3625, 2026-10-23 19:17:35Z
|
||||
|
||||
Sage rejected the transient-unit approach: "no transient systemd user units used to satisfy the
|
||||
human proof"; such a unit makes the ancestry walk miss the development agent, and creates host
|
||||
state under mos-1438. This direction replaces the brief/handoff's unit requirement for this build.
|
||||
No unit was created by the superseded draft, and no Node/test execution occurred.
|
||||
|
||||
Current design, replacing the earlier proposals above:
|
||||
|
||||
- Consoles are ordinary spawned child processes in their own process groups; no systemd commands,
|
||||
units, user manager or manager environment are involved.
|
||||
- Test-only federation-host.mjs follows channel-fixture.mjs's mock.module pattern. It re-exports
|
||||
real readProcess and replaces verifyHuman's readProcess argument with real process fields plus
|
||||
ppid=1. This is explicitly a stand-in for Jason's shell, NOT a real ancestry acceptance proof.
|
||||
Real pid/uid/startTime/nonce/path checks still run; verifyPrincipal still checks the Console's
|
||||
actual direct parent path for user calls. No product source receives this override.
|
||||
- Each fixture host runs real startBroker and createLauncher. Its local host API is the existing
|
||||
thread-revoke.test.mjs pattern, with only the pi adapter replaced via fakeHarnesses.
|
||||
- Setup/grant/revoke are plain children using real CLI wrappers against that fixture proof seam.
|
||||
- Shell records each detached group's leader pid and start time, checks both before signalling,
|
||||
and verifies no live group member, TCP listener or Unix listener remains. Killed-driver mode
|
||||
bypasses every Node teardown hook and still leaves cleanup to the shell trap.
|
||||
- Read-only claim evidence and actual runner/engine exit remain independent assertions.
|
||||
- Gate limitation: this proves the revised scratch integration, not real outside-agent ancestry,
|
||||
transient unit cleanup, TLS proxy deployment or live federation. R8 remains row 209.
|
||||
- R5 landing found in git log: ddfb29af7 (#1700).
|
||||
- Targeted Node/tests remain held. Sage permits the first lena/row296 push in the 19:41Z gap,
|
||||
with MOSAIC_GITEA_CREDENTIAL_FILE unset. 226 and 283 have earlier slots.
|
||||
|
||||
Current files: shell entry; federation-acceptance.test.mjs; fixtures/federation-host.mjs and
|
||||
fixtures/federation-human.mjs; this BUILD; mutant runner; manifest; append-only logs; preserved
|
||||
Quackerjack BUILD at ad84c1e45. No pre-existing test modification (numstat empty).
|
||||
|
||||
### First candidate, 2026-10-23
|
||||
|
||||
Implementation is prepared under sage-3625, not yet executed. Static checks: Bash parser accepts
|
||||
scripts/test-federation-acceptance.sh; Python ast.parse accepts mutants.py; git diff --check clean.
|
||||
No test outcome is claimed. The root node_modules links the existing canonical install so the
|
||||
future targeted run needs no install or network. No webui editor build is involved.
|
||||
|
||||
M1 now requires the user project-list leak assertion (`R7 ungranted project must not appear`),
|
||||
so it proves exposure through the actual Console transport rather than only inspecting grant
|
||||
configuration. The private-project thread-create refusal and exact grant-list check follow it.
|
||||
M2 requires `R7 revoke must end the claim as access-revoked` before any host teardown.
|
||||
|
||||
Sage opened the push gap early in sage-3644 (19:23:04Z). The first candidate is committed as
|
||||
Untested, for push only to lena/row296 with MOSAIC_GITEA_CREDENTIAL_FILE unset. Node, acceptance,
|
||||
negative cleanup exercise and mutants still wait for the test slot. Full suites/gate are Sage's.
|
||||
|
||||
### Filbert static review, filbert-296-first-push-static, 19:28:51Z
|
||||
|
||||
Review pinned f06a1f78c against 45dca69f6. Filbert verified all nine manifest hashes from Git
|
||||
objects, no product/pre-existing test changes, no systemd calls, fixture-only ancestry override,
|
||||
real path/uid/startTime/nonce checks, group ledger identity checks and child-only CA trust.
|
||||
He ran nothing. The verdict remains pending execution and gate evidence.
|
||||
|
||||
- C1 confirmed by inspection: subprocess.run(timeout=280) kills the shell on timeout and can
|
||||
bypass its trap, while the shell's own deadline plus cleanup can exceed 280 seconds. Removed
|
||||
the outer Python timeout (the simpler alternative Filbert explicitly allowed). Python now
|
||||
waits for the shell's bounded run and EXIT/TERM cleanup. Source restoration remains in finally.
|
||||
- N1 retained limitation: a SIGKILL between spawn and the pid/startTime ledger append can leave
|
||||
an unrecorded group. The killed-driver exercise begins after both Consoles are recorded and
|
||||
does not cover that gap. Cleanup claims apply to recorded groups; no universal crash-proof
|
||||
process creation claim is made.
|
||||
- N2 addressed before the mutant run: the named readonly claim-history assertion now runs after
|
||||
revoke and before waiting for the run's end. A skipped #claimEnd therefore cannot first fail
|
||||
the run-end wait. The final latest-op check still runs after engine/runner exit. If M2 instead
|
||||
fails an earlier condition, its runner must say NOT KILLED; diagnose the first failure on the
|
||||
same pinned candidate, retain the intended assertion, and rerun on Sage CLEAR. Never accept a
|
||||
timeout or change the mutant's expected assertion merely to mark it killed.
|
||||
- N3 deferred cosmetic fixture detail: wrap() returns fn(value) without await, so async rejection
|
||||
skips its code mapping. This is not an authorization or cleanup change; the rejection still
|
||||
propagates, and no verdict relies on that fixture mapping.
|
||||
- N4: corrected the exact-grant assertion's indentation in the new test.
|
||||
- N5: prepare() first calls bootstrap --instance, then overwrites that bootstrap-generated
|
||||
config inside the unique disposable scratch HOME with fixture Console/provider settings.
|
||||
This is fixture-only setup, not a product/bootstrap overwrite path or a live-config operation.
|
||||
There remains one selected config per scratch instance, with the same marked data root.
|
||||
|
||||
Still Untested. No Node, acceptance, mutant, negative cleanup or CLI suite run. Static validation
|
||||
only; execution waits for Sage's test window. Follow-up push needs a currently authorized gap.
|
||||
|
||||
### Push receipt and N2 ordering proof, 2026-10-23 19:31Z
|
||||
|
||||
Sage sage-3659 authorized push before 19:38Z. e855f82e1846f094927c3de69aea1a801253736a
|
||||
was pushed to origin/lena/row296 with MOSAIC_GITEA_CREDENTIAL_FILE unset. No Node/tests ran.
|
||||
|
||||
N2, filbert-296-c1-ack: this path is synchronous after a successful reload. accessCommand awaits
|
||||
reload at access.mjs:289; reload awaits the access.reload transport at :297. broker.mjs:4645
|
||||
calls #revokeLost before constructing its reply. #revokeLost (:1025–1034) calls #claimEnd inside
|
||||
Store.transaction, which executes COMMIT before returning (store.mjs:282–302). server.mjs:160–161
|
||||
calls broker.request and then writes the response. Therefore the claim record is committed before
|
||||
the successful CLI call returns; no asynchronous sweep is required for this assertion. A refused
|
||||
reload can be reported by the CLI with exit 0, but then immediate revocation evidence is absent
|
||||
and this test must fail; that is not a race the test should hide. No polling change is needed.
|
||||
|
||||
T3 package comparison (sage-3659): the four planned runs execute only the new dedicated
|
||||
federation-acceptance.test.mjs and its fixture host/human children. They do not execute stack-copy,
|
||||
stack-release or the whole CLI suite. Existing helpers are imported; no old test module is run.
|
||||
Asked Researcher to confirm against row216. Full CLI suite remains a later Sage gate requirement,
|
||||
outside the targeted T3 command list. All test resources are unique scratch state.
|
||||
|
||||
### R2 rebase and slot start, 2026-10-24, sage-4035/4036/4038
|
||||
|
||||
New branch lena/row296-r2, base e0c6142f3a411ed70e32b2c50d01930e0b0641c8.
|
||||
Original branch remains a1321f8f9; no force push. Rebased tip before evidence: 17e421cf4.
|
||||
Only conflicts were append-only BUILD-LOG.md and docs/SESSIONS.md: retained all new-base bytes
|
||||
and appended this row's original suffix. All other row files byte-identical to a1321f8f9.
|
||||
Range-diff receipt: run-r2/range-diff.txt. Patch IDs: run-r2/patch-ids.txt.
|
||||
Mapping: ad84c1e45=4a16ebaa4, f06a1f78c→6418b1b12 (only append-log context),
|
||||
e855f82e1=bbc38067f, a1321f8f9=17e421cf4. Stable patch IDs match for 1/3/4;
|
||||
commit 2 differs because patch-id includes changed append-log context. No source delta.
|
||||
|
||||
The prior local root node_modules symlink was unlinked without following it. Own-worktree root
|
||||
npm ci --ignore-scripts --no-audit --no-fund: exit 0, 128 packages. Own-worktree webui same
|
||||
command: exit 0, 2 packages. Both node_modules are real local directories. Canonical dependencies
|
||||
were never installed, removed or changed. This supersedes the earlier link-based setup note.
|
||||
|
||||
Root install had completed before sage-4036 arrived. Exact queue command from worktree refused
|
||||
linked-worktree policy; reported as lena-0013 and held tests. Sage-4038 authorized queue verbs
|
||||
only in canonical; no npm/rm there. All further tests run in this worktree under short scratch
|
||||
TMPDIR, serially: plain script, killed-driver negative exercise, M1, M2, touched new test whole.
|
||||
Filbert cleared C1 on a1321f8f9 (filbert-296-c1-cleared); rebase preserves those source bytes.
|
||||
|
||||
### Scoped acceptance results, 2026-10-24 09:55–09:57Z
|
||||
|
||||
Queue start succeeded: lena-296-start rev3888, briefed→in-progress, through the authorized
|
||||
canonical queue route. Earlier retries refused Sage assignment locks; no lock bypass occurred.
|
||||
|
||||
Commands ran serially in this worktree, each with a newly created six-character external TMPDIR
|
||||
under /mnt/storage/scratch/tmp and timeout -k 10. The script itself additionally creates its own
|
||||
unique r7.* root and owns child group cleanup. All five external TMPDIRs were empty and removed
|
||||
afterward (run-r2/tmpdir-cleanup.txt). No product/test source changed to obtain these results.
|
||||
|
||||
| Run | Exit | Node pass/fail/skip/cancel | Evidence |
|
||||
| --- | --- | --- | --- |
|
||||
| plain script, timeout 600 | 0 | 1/0/0/0 | run-r2/plain-1.log, 3.788 s Node duration |
|
||||
| --kill-after-start, timeout 600 | 1 expected; negative wrapper 0 | 0/1/0/0 expected SIGKILL | run-r2/killed-1.log, both-Consoles-started marker and cleanup line |
|
||||
| M1 driver, timeout 600 | 0 (script 1 expected) | 0/1/0/0 expected mutation | run-r2/M1.log, KILLED by R7 ungranted project must not appear |
|
||||
| M2 driver, timeout 600 | 0 (script 1 expected) | 0/1/0/0 expected mutation | run-r2/M2.log, KILLED by R7 revoke must end the claim as access-revoked |
|
||||
| new test whole without script context, timeout 60 | 0 | 0/0/1/0 | run-r2/whole-file.log, expected dedicated-script skip |
|
||||
|
||||
Every script run printed exactly `R7 cleanup: no child groups, ports or sockets remain; no units
|
||||
created`. The killed-driver run exercised shell cleanup with no Node teardown hooks. M1 and M2
|
||||
failed on assertions, not startup failure or timeout; the runner found the named assertion and
|
||||
cleanup marker. pre-mutants.sha256 checked after each mutation: access.mjs and broker.mjs both
|
||||
restored byte-for-byte. git diff against e0c6142f3 confirms neither product path changed.
|
||||
|
||||
No unexpected first-run red: plain acceptance passed on its first run. Only the deliberate killed
|
||||
and mutated runs failed. The ordinary-file skip is intentional; the plain script ran its full test
|
||||
without skips. Module-mocking experimental/deprecation warnings are fixture-only. No old test
|
||||
was run or changed, so no mos-1272 placement was needed. N3 and N6 remain optional diagnostics;
|
||||
N1's documented spawn-to-ledger SIGKILL gap remains outside the killed-driver scenario.
|
||||
|
||||
Scope per sage-4035: dedicated script, touched new test whole, both mutants and cleanup checks.
|
||||
No full CLI suite, unrelated package suite, webui build or other scripts/test-*.sh ran in this slot.
|
||||
Those broader earlier review/gate requirements remain for Sage's integration gate; no full gate
|
||||
claim is made here. R8/live acceptance, real ancestry proof and deployment remain out of scope.
|
||||
@@ -0,0 +1,73 @@
|
||||
# Row 296 / #1802 — R2 scoped acceptance verified; review pending
|
||||
|
||||
Base: e0c6142f3a411ed70e32b2c50d01930e0b0641c8. Branch: lena/row296-r2. Reviewer: Filbert. Gate owner: Sage.
|
||||
Handoff: c6ab9bdc9 preserved as ad84c1e45, rebased as 4a16ebaa4, including
|
||||
agents/quackerjack/work/queue-296/BUILD.md. Every changed path is in MANIFEST.sha256,
|
||||
except the checksum file itself (self-hash is excluded). No product file or pre-existing test changed.
|
||||
Pre-existing test numstat: empty. BUILD-LOG.md and docs/SESSIONS.md are append-only additions.
|
||||
|
||||
Binding ruling: sage-3625 replaces the brief's transient-unit start with plain child Consoles and
|
||||
explicit test stand-ins. **This candidate does not prove genuine outside-agent ancestry.**
|
||||
It creates no transient systemd unit and makes no systemd CLI call. R8 remains row 209.
|
||||
|
||||
## What is real, and what is a stand-in
|
||||
|
||||
- Two configs created by bootstrap --instance hub/factory, two marked data roots, real Console
|
||||
cli.mjs serve --sso --send, real broker runtime and launcher, real path-bound human-cli and
|
||||
user-cli wrappers, real access loader, CLI writes/reload, grant filters and revocation.
|
||||
- One existing HTTPS fakeOidc server, two issuer/client identities. Its generated CA is trusted
|
||||
only through NODE_EXTRA_CA_CERTS in this test's child environment, never any trust store.
|
||||
- federation-host.mjs replaces verifyHuman's readProcess argument with actual process fields plus
|
||||
ppid=1, exactly the test pattern Sage named. This stands in for Jason's shell on setup,
|
||||
grant/revoke and both Consoles' transports. The actual Console parent/path check remains.
|
||||
There is no product parameter, environment switch or altered verifier default.
|
||||
- fakeHarnesses replaces only the pi harness adapter() with a scratch shell invoking the existing
|
||||
thread-adapter.mjs. The existing webui channel is re-exported unchanged. No network model runs.
|
||||
- Public HTTPS origins are modelled through HTTP loopback requests with matching Host/Origin;
|
||||
reverse-proxy TLS deployment is outside this scratch proof.
|
||||
|
||||
## Acceptance map
|
||||
|
||||
All checks live in `FED R7 scratch two-instance acceptance` in
|
||||
packages/cli/tests/federation-acceptance.test.mjs.
|
||||
|
||||
| Requirement | Assertion/evidence |
|
||||
| --- | --- |
|
||||
| Isolated instances | different config paths/data roots/ports; scratch HOME/TMPDIR; two named markers from bootstrap; port 0, forbidden live ports 7330–7332 checked |
|
||||
| Jason is collaborator, not owner | owner melanie; access user jason-test, home factory, fake sub jason-test-sub; hub /api/config user=true |
|
||||
| One project, one granted instance | actual access grant CLI, projects=[shared], instances=[assistant]; user project list contains shared only |
|
||||
| Thread and reply | create thread on shared, POST message, correlated RESULT with in_reply_to=sent.id, from_role=assistant, to_role=user, body contains question |
|
||||
| Other project refused | private project absent from listing; create on private returns 403 access-refused |
|
||||
| Board reads refused | /api/board, /api/bus/inbox and /api/bus/tasks return 403 owner-only |
|
||||
| Factory sees no hub objects | Jason sub refused at factory; factory owner sees factory-only project and no threads; hub cookie gets 401 at factory |
|
||||
| Revoke takes effect | actual access revoke CLI; existing hub session 401 and re-login 403 |
|
||||
| Claim and process ended | live run before revoke; end log exitCode=0; no registered sessions; engine and runner pid/startTime gone; readonly claim history has revoke/access-revoked before the process-end wait, latest op=revoke afterward |
|
||||
| Normal cleanup | EXIT trap terminates only recorded pid/startTime-checked groups; checks no live group member, no recorded TCP/Unix listener, no other scratch Unix listener, removes scratch directory/socket files |
|
||||
| Killed-driver cleanup | --kill-after-start prints both-Consoles-started marker then SIGKILLs test driver; shell performs the same independent cleanup; expected nonzero run with successful cleanup line |
|
||||
|
||||
## Verification commands (executed on sage-4035 CLEAR)
|
||||
|
||||
- scripts/test-federation-acceptance.sh — must exit 0, one acceptance test passes, cleanup line present.
|
||||
- scripts/test-federation-acceptance.sh --kill-after-start — must exit nonzero, print the explicit
|
||||
interruption marker and `R7 cleanup: no child groups, ports or sockets remain; no units created`.
|
||||
- python3 agents/lena/work/queue-296/mutants.py M1 — once-only R5 grant projects -> ['*']; must fail
|
||||
`R7 ungranted project must not appear` and verify cleanup, then restore original source bytes. Python relies on the shell's own run deadline and cleanup; no outer killing timeout.
|
||||
- python3 agents/lena/work/queue-296/mutants.py M2 — once-only R4 claim end omitted; must fail
|
||||
`R7 revoke must end the claim as access-revoked` before shutdown, verify cleanup and restore bytes.
|
||||
- Sage integration gate remains separate: every scripts/test-*.sh and full applicable suites per Sage; not run in this scoped slot.
|
||||
|
||||
Status: scoped gate passed: plain 1/1 (exit 0), killed-driver expected exit 1 with verified cleanup, M1/M2 drivers exit 0 with named assertion kills and source restoration; normal whole-file invocation exit 0 with one intentional dedicated-script skip. All cancellations 0. Receipts in run-r2/; counts and commands in BUILD.md.
|
||||
The script never silently skips a missing tool/sandbox/provider: prerequisites fail the acceptance.
|
||||
Ordinary CLI suites skip the dedicated test until invoked by its owning script.
|
||||
|
||||
Static-review follow-up: filbert-296-first-push-static. C1 removes Python's outer timeout so it
|
||||
cannot SIGKILL the shell before EXIT cleanup. N2 moves the named claim-history assertion before
|
||||
the process-end wait. N1's spawn-to-ledger SIGKILL gap is retained and documented in BUILD.md;
|
||||
--kill-after-start exercises the fully recorded groups. N3 remains a cosmetic fixture limitation.
|
||||
N4 indentation corrected. N5 scratch-bootstrap config overwrite is explicitly fixture-only.
|
||||
|
||||
R2 provenance: source identical to the statically cleared a1321f8f9. Rebase mapping/range-diff
|
||||
and stable patch IDs are in run-r2/. Only append-log conflict context changed. No unexpected
|
||||
first-run failure, no old test changed/run, and no broader suite or shared gate claimed.
|
||||
Manifest coverage is the complete changed-path set over e0c6142f3..candidate, including all
|
||||
text evidence and this description; only MANIFEST.sha256 itself is excluded from its own hash.
|
||||
@@ -0,0 +1,29 @@
|
||||
97a7d3518ac0e3f823c631d6616cea3de277040c673acd016f5bb0efd627938f BUILD-LOG.md
|
||||
5d040043c9ef15a5343ac4bc8382051c67c6bce13f273b7b16071e9e16e42c5d agents/lena/work/queue-296/BUILD.md
|
||||
1b853af963c754152466ae77a27e2136087192abd8cc912045b6d95c4c094e11 agents/lena/work/queue-296/MANIFEST.md
|
||||
bd6e9fd9e3f7aa0ee6702401776ef7bd3e39562059a11b87aaaf2a427904381b agents/lena/work/queue-296/mutants.py
|
||||
9a271f2a916b0b6ee6cecb2426f0b3206ef074578be55d9bc94f6f3fe3ab86aa agents/lena/work/queue-296/run-r2/M1.exit
|
||||
50ac6f0ea22cc671e4056385fc2feb4d015bfe853a9393a60a6cb38a10ad6cb2 agents/lena/work/queue-296/run-r2/M1.log
|
||||
5079eaa8fcc6964072f7ba20333ba77607fa25729697182151bb3739f3ab15f8 agents/lena/work/queue-296/run-r2/M1.tmpdir
|
||||
9a271f2a916b0b6ee6cecb2426f0b3206ef074578be55d9bc94f6f3fe3ab86aa agents/lena/work/queue-296/run-r2/M2.exit
|
||||
793b40f72e600ca71d6a29d058b2f11b4aaa0388dd80e8e6f8a925f46af589d7 agents/lena/work/queue-296/run-r2/M2.log
|
||||
01ef19b3acc3ac7f8cf0e69e31b8a0ef5413264109be154987993e0c8ce845d5 agents/lena/work/queue-296/run-r2/M2.tmpdir
|
||||
4355a46b19d348dc2f57c046f8ef63d4538ebb936000f3c9ee954a27460dd865 agents/lena/work/queue-296/run-r2/killed-1.exit
|
||||
6333824a3def94fc983f4d9ede08ae3301dd31921fae350cec77e9b7c220c963 agents/lena/work/queue-296/run-r2/killed-1.log
|
||||
67809d95a8b102392c23ed05e347ad461fc6eee8b66b0a732251be476ca99f08 agents/lena/work/queue-296/run-r2/killed-1.tmpdir
|
||||
c8a0c8d9d9a2c723aab5cfcb973713903a0914ec46394215533531f17a7eeeaf agents/lena/work/queue-296/run-r2/patch-ids.txt
|
||||
9a271f2a916b0b6ee6cecb2426f0b3206ef074578be55d9bc94f6f3fe3ab86aa agents/lena/work/queue-296/run-r2/plain-1.exit
|
||||
ae2d6a16a97907384f992ef847be503eae0124bd378648fd620717450d56f2f7 agents/lena/work/queue-296/run-r2/plain-1.log
|
||||
254a104ac320b5b8e7ed792b373e5ca3af0febb94d705dc62b54fc6545fe9395 agents/lena/work/queue-296/run-r2/plain-1.tmpdir
|
||||
97858a98531f635813404f1c2a149f9e3d620444ca4cddb49b1e035cb91fa73d agents/lena/work/queue-296/run-r2/pre-mutants.sha256
|
||||
f431f734d74169b9c0932dedadf4cb2bac7ecc37e0ee93f1009b90c5b7bf6541 agents/lena/work/queue-296/run-r2/range-diff.txt
|
||||
36d4dcb2e1a816b5bdde0c1f47510d7e059f86810b75f6e10a5ca91c8341fe4b agents/lena/work/queue-296/run-r2/tmpdir-cleanup.txt
|
||||
9a271f2a916b0b6ee6cecb2426f0b3206ef074578be55d9bc94f6f3fe3ab86aa agents/lena/work/queue-296/run-r2/whole-file.exit
|
||||
615834d38c4b90b0dc04529c6fc7f280a6e30e1b81c1658bd2e7d5a55e932e01 agents/lena/work/queue-296/run-r2/whole-file.log
|
||||
6e9863193aa62750f7ce89f17484973d5d85ef61980782d353c7ad6bd255b130 agents/lena/work/queue-296/run-r2/whole-file.tmpdir
|
||||
87239327014c49abbe130c17881bb48e13d96545bf9f3e09b6f4aed46e11453b agents/quackerjack/work/queue-296/BUILD.md
|
||||
04512fb4693bc135131857f204addfcc4968c660a00327c2589f5a107f591a2b docs/SESSIONS.md
|
||||
89a15e62aa6f951596b764993afeff7e33eeaa3a4f45d31599eba7d27a4000ad packages/cli/tests/federation-acceptance.test.mjs
|
||||
86b76565f5afe9efdd076ef61cc54e40c447d235f77b95818d0d601ce036effa packages/cli/tests/fixtures/federation-host.mjs
|
||||
b12a9bad4be083f2439c3363738b9763fa0061228f84d501a385ade48fea90e4 packages/cli/tests/fixtures/federation-human.mjs
|
||||
4008361f062a2f21b6075c500060196e10a48351fd7d95b25d681f36b4fa801a scripts/test-federation-acceptance.sh
|
||||
@@ -0,0 +1,51 @@
|
||||
#!/usr/bin/env python3
|
||||
"""R7 mutants. Run only on Sage CLEAR in Lena's isolated candidate.
|
||||
|
||||
Every replacement must occur once. Product bytes are restored even on timeout
|
||||
or failure. A killed mutant must contain the named assertion in the script's
|
||||
output; startup errors and timeout alone are not evidence. The shell owns its
|
||||
own timeout and EXIT/TERM cleanup. Do not put a killing Python timeout around it.
|
||||
"""
|
||||
from pathlib import Path
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
repo = Path(__file__).resolve().parents[4]
|
||||
mutants = {
|
||||
'M1': (
|
||||
'packages/cli/src/access.mjs',
|
||||
'projects: resolveProjects(list(parsed.values["--projects"]), rows),',
|
||||
'projects: ["*"],',
|
||||
'R7 ungranted project must not appear',
|
||||
),
|
||||
'M2': (
|
||||
'packages/bus/src/broker.mjs',
|
||||
"this.#claimEnd({ business: t.business }, h, 'revoke', null, 'access-revoked', by);",
|
||||
"/* R7 mutant: skip ending the revoked claim */",
|
||||
'R7 revoke must end the claim as access-revoked',
|
||||
),
|
||||
}
|
||||
if len(sys.argv) != 2 or sys.argv[1] not in mutants:
|
||||
raise SystemExit('usage: mutants.py M1|M2')
|
||||
name = sys.argv[1]
|
||||
file, before, after, assertion = mutants[name]
|
||||
path = repo / file
|
||||
original = path.read_bytes()
|
||||
text = original.decode()
|
||||
if text.count(before) != 1:
|
||||
raise SystemExit(f'{name}: anchor count {text.count(before)}, expected 1')
|
||||
try:
|
||||
path.write_text(text.replace(before, after))
|
||||
result = subprocess.run(['scripts/test-federation-acceptance.sh'], cwd=repo,
|
||||
stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
|
||||
text=True)
|
||||
print(result.stdout, end='')
|
||||
if result.returncode == 0 or assertion not in result.stdout:
|
||||
raise SystemExit(f'{name}: NOT KILLED by expected assertion')
|
||||
if 'R7 cleanup: no child groups, ports or sockets remain; no units created' not in result.stdout:
|
||||
raise SystemExit(f'{name}: cleanup not verified')
|
||||
print(f'{name}: KILLED by {assertion}')
|
||||
finally:
|
||||
path.write_bytes(original)
|
||||
if path.read_bytes() != original:
|
||||
raise SystemExit(f'{name}: restore failed')
|
||||
@@ -0,0 +1 @@
|
||||
0
|
||||
@@ -0,0 +1,59 @@
|
||||
✖ FED R7 scratch two-instance acceptance (1924.232002ms)
|
||||
ℹ tests 1
|
||||
ℹ suites 0
|
||||
ℹ pass 0
|
||||
ℹ fail 1
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 2002.66244
|
||||
|
||||
✖ failing tests:
|
||||
|
||||
test at packages/cli/tests/federation-acceptance.test.mjs:143:1
|
||||
✖ FED R7 scratch two-instance acceptance (1924.232002ms)
|
||||
AssertionError [ERR_ASSERTION]: R7 ungranted project must not appear
|
||||
+ actual - expected
|
||||
|
||||
[
|
||||
'd27c7d26-5ea3-446c-b1ce-f54183e16c8a',
|
||||
+ 'c1cb5a81-e752-4932-be3c-d849e5a34284'
|
||||
]
|
||||
|
||||
at TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/lena-row296/packages/cli/tests/federation-acceptance.test.mjs:185:10)
|
||||
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: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: [ 'd27c7d26-5ea3-446c-b1ce-f54183e16c8a', 'c1cb5a81-e752-4932-be3c-d849e5a34284' ],
|
||||
expected: [ 'd27c7d26-5ea3-446c-b1ce-f54183e16c8a' ],
|
||||
operator: 'deepStrictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
R7 diagnostic: factory-console.log
|
||||
Mosaic Console: http://127.0.0.1:43315/
|
||||
Board: http://127.0.0.1:1
|
||||
Bus: factory
|
||||
Sign-in: https://factory.example.test/ (--sso), reads and human writes (--send), grant Approve and Deny
|
||||
Sign-in provider: test-op issuer https://127.0.0.1:35689/factory/ subjects 1 (ready)
|
||||
Proxy: proxy proof off
|
||||
Ctrl-C stops this server.
|
||||
R7 diagnostic: factory-host.log
|
||||
(node:889203) ExperimentalWarning: Module mocking is an experimental feature and might change at any time
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:889203) DeprecationWarning: mock.module(): options.namedExports is deprecated. Use options.exports instead.
|
||||
R7 diagnostic: hub-console.log
|
||||
Mosaic Console: http://127.0.0.1:34081/
|
||||
Board: http://127.0.0.1:1
|
||||
Bus: hub
|
||||
Sign-in: https://hub.example.test/ (--sso), reads and human writes (--send), grant Approve and Deny
|
||||
Sign-in provider: test-op issuer https://127.0.0.1:35689/hub/ subjects 1 (ready)
|
||||
Proxy: proxy proof off
|
||||
Ctrl-C stops this server.
|
||||
R7 diagnostic: hub-host.log
|
||||
(node:889107) ExperimentalWarning: Module mocking is an experimental feature and might change at any time
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:889107) DeprecationWarning: mock.module(): options.namedExports is deprecated. Use options.exports instead.
|
||||
R7 cleanup: no child groups, ports or sockets remain; no units created
|
||||
M1: KILLED by R7 ungranted project must not appear
|
||||
@@ -0,0 +1 @@
|
||||
/mnt/storage/scratch/tmp/9Uoj48
|
||||
@@ -0,0 +1 @@
|
||||
0
|
||||
@@ -0,0 +1,60 @@
|
||||
✖ FED R7 scratch two-instance acceptance (3143.370798ms)
|
||||
ℹ tests 1
|
||||
ℹ suites 0
|
||||
ℹ pass 0
|
||||
ℹ fail 1
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 3218.651521
|
||||
|
||||
✖ failing tests:
|
||||
|
||||
test at packages/cli/tests/federation-acceptance.test.mjs:143:1
|
||||
✖ FED R7 scratch two-instance acceptance (3143.370798ms)
|
||||
AssertionError [ERR_ASSERTION]: R7 revoke must end the claim as access-revoked
|
||||
at TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/lena-row296/packages/cli/tests/federation-acceptance.test.mjs:226:10)
|
||||
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: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: false,
|
||||
expected: true,
|
||||
operator: '==',
|
||||
diff: 'simple'
|
||||
}
|
||||
R7 diagnostic: factory-console.log
|
||||
Mosaic Console: http://127.0.0.1:40569/
|
||||
Board: http://127.0.0.1:1
|
||||
Bus: factory
|
||||
Sign-in: https://factory.example.test/ (--sso), reads and human writes (--send), grant Approve and Deny
|
||||
Sign-in provider: test-op issuer https://127.0.0.1:37617/factory/ subjects 1 (ready)
|
||||
Proxy: proxy proof off
|
||||
Ctrl-C stops this server.
|
||||
2026-10-24T09:56:19.857Z sso refused code=subject-unknown provider=test-op iss="https://127.0.0.1:37617/factory/" sub="jason-test-sub"
|
||||
R7 diagnostic: factory-host.log
|
||||
(node:892054) ExperimentalWarning: Module mocking is an experimental feature and might change at any time
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:892054) DeprecationWarning: mock.module(): options.namedExports is deprecated. Use options.exports instead.
|
||||
R7 diagnostic: hub-console.log
|
||||
Mosaic Console: http://127.0.0.1:44529/
|
||||
Board: http://127.0.0.1:1
|
||||
Bus: hub
|
||||
Sign-in: https://hub.example.test/ (--sso), reads and human writes (--send), grant Approve and Deny
|
||||
Sign-in provider: test-op issuer https://127.0.0.1:37617/hub/ subjects 1 (ready)
|
||||
Proxy: proxy proof off
|
||||
Ctrl-C stops this server.
|
||||
2026-10-24T09:56:19.257Z chat action=createThread user="jason-test" id=58f85ce3-825f-42ea-9b19-e407157147f1
|
||||
2026-10-24T09:56:19.387Z chat action=send user="jason-test" id=3e803a2f-e10d-4ede-b80e-c7ca3fcc564b
|
||||
2026-10-24T09:56:19.836Z chat action=createThread user="jason-test" error=access-refused
|
||||
2026-10-24T09:56:20.395Z sso refused code=user-revoked provider=test-op user="jason-test"
|
||||
2026-10-24T09:56:20.401Z sso refused code=subject-unknown provider=test-op iss="https://127.0.0.1:37617/hub/" sub="jason-test-sub"
|
||||
R7 diagnostic: hub-host.log
|
||||
(node:892013) ExperimentalWarning: Module mocking is an experimental feature and might change at any time
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:892013) DeprecationWarning: mock.module(): options.namedExports is deprecated. Use options.exports instead.
|
||||
usage: {"event":"usage-unknown","business":"hub","run":"r892d587abe73","instance":"assistant","turn":"3e803a2f-e10d-4ede-b80e-c7ca3fcc564b","source":"@none","code":"baseline-unknown"}
|
||||
mosaic-bus: run r892d587abe73 (assistant) ended: stopped
|
||||
R7 cleanup: no child groups, ports or sockets remain; no units created
|
||||
M2: KILLED by R7 revoke must end the claim as access-revoked
|
||||
@@ -0,0 +1 @@
|
||||
/mnt/storage/scratch/tmp/wPuOGf
|
||||
@@ -0,0 +1 @@
|
||||
1
|
||||
@@ -0,0 +1,41 @@
|
||||
R7 interruption: both Consoles started; killing test driver
|
||||
✖ packages/cli/tests/federation-acceptance.test.mjs (2055.463978ms)
|
||||
ℹ tests 1
|
||||
ℹ suites 0
|
||||
ℹ pass 0
|
||||
ℹ fail 1
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 2061.099035
|
||||
|
||||
✖ failing tests:
|
||||
|
||||
test at packages/cli/tests/federation-acceptance.test.mjs:1:1
|
||||
✖ packages/cli/tests/federation-acceptance.test.mjs (2055.463978ms)
|
||||
'test failed'
|
||||
R7 diagnostic: factory-console.log
|
||||
Mosaic Console: http://127.0.0.1:42937/
|
||||
Board: http://127.0.0.1:1
|
||||
Bus: factory
|
||||
Sign-in: https://factory.example.test/ (--sso), reads and human writes (--send), grant Approve and Deny
|
||||
Sign-in provider: test-op issuer https://127.0.0.1:40605/factory/ subjects 1 (ready)
|
||||
Proxy: proxy proof off
|
||||
Ctrl-C stops this server.
|
||||
R7 diagnostic: factory-host.log
|
||||
(node:887305) ExperimentalWarning: Module mocking is an experimental feature and might change at any time
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:887305) DeprecationWarning: mock.module(): options.namedExports is deprecated. Use options.exports instead.
|
||||
R7 diagnostic: hub-console.log
|
||||
Mosaic Console: http://127.0.0.1:42267/
|
||||
Board: http://127.0.0.1:1
|
||||
Bus: hub
|
||||
Sign-in: https://hub.example.test/ (--sso), reads and human writes (--send), grant Approve and Deny
|
||||
Sign-in provider: test-op issuer https://127.0.0.1:40605/hub/ subjects 1 (ready)
|
||||
Proxy: proxy proof off
|
||||
Ctrl-C stops this server.
|
||||
R7 diagnostic: hub-host.log
|
||||
(node:887261) ExperimentalWarning: Module mocking is an experimental feature and might change at any time
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:887261) DeprecationWarning: mock.module(): options.namedExports is deprecated. Use options.exports instead.
|
||||
R7 cleanup: no child groups, ports or sockets remain; no units created
|
||||
@@ -0,0 +1 @@
|
||||
/mnt/storage/scratch/tmp/bZhAyq
|
||||
@@ -0,0 +1,8 @@
|
||||
old ad84c1e45cf2327b9584c38328db02fb9d5dfc63 af9d89f4c65a791b0aeabe7bf1f19c6709c50bfb
|
||||
old f06a1f78cf135b0cd749e4602b28f6e63c177c85 da6478f871cd450ff3ee43e14b4f6a1d1a1deb59
|
||||
old e855f82e1846f094927c3de69aea1a801253736a 6065440666f6fc49254352e259ecbc5b0a4b40c3
|
||||
old a1321f8f90b41295245859ec92bb5ec4801ede84 d1a7f19fabc3f0c604eda8051312ef1efb50e74e
|
||||
rebased 4a16ebaa4ac96bfac2a0e3787f4437467a13650b af9d89f4c65a791b0aeabe7bf1f19c6709c50bfb
|
||||
rebased 6418b1b12382186e82048cf9aa223b851a23d4d0 2d2d8a223bce50d30fc3525da5f1cda9c38254cd
|
||||
rebased bbc38067f2d6100e58020bc197a84e6251fef83d 6065440666f6fc49254352e259ecbc5b0a4b40c3
|
||||
rebased 17e421cf4c9a3fd0cf432de0205cc1efff7f6044 d1a7f19fabc3f0c604eda8051312ef1efb50e74e
|
||||
@@ -0,0 +1 @@
|
||||
0
|
||||
@@ -0,0 +1,10 @@
|
||||
✔ FED R7 scratch two-instance acceptance (3684.148824ms)
|
||||
ℹ tests 1
|
||||
ℹ suites 0
|
||||
ℹ pass 1
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 3787.998681
|
||||
R7 cleanup: no child groups, ports or sockets remain; no units created
|
||||
@@ -0,0 +1 @@
|
||||
/mnt/storage/scratch/tmp/vgwsGf
|
||||
@@ -0,0 +1,2 @@
|
||||
c4949a16173d11f9d32d10d3ddd58a181631848b259bef1998820a78f5694808 packages/cli/src/access.mjs
|
||||
71b32ee4afa322793aad81231441ee7badc3e5aff65ff008c6cc0f7f63b72781 packages/bus/src/broker.mjs
|
||||
@@ -0,0 +1,31 @@
|
||||
1: ad84c1e45 = 1: 4a16ebaa4 row 296 handoff: FED R7 design notes to lena/row296 (mos-1503, Q245)
|
||||
2: f06a1f78c ! 2: 6418b1b12 Untested: row 296 scratch two-instance acceptance (#1802)
|
||||
@@ Commit message
|
||||
Untested: row 296 scratch two-instance acceptance (#1802)
|
||||
|
||||
## BUILD-LOG.md ##
|
||||
-@@ BUILD-LOG.md: Row 299 (573, #1806, Gander, Filbert): before, the P10 band test timed a fault r
|
||||
- 2026-10-23T17:29:46Z | Gyro Vikunja571 sage-3542 Connections amendment | Branch gyro/editor-connections-design cut exactly from landed PRD1.17 30e6bb680; read REQ-LIB-5 in that PRD. Replaced stale J-b waits in parent and W4. Proposed W8 owns current authorized Markdown/DOCX links/backlinks list, labels, versioned refresh, leakage refusals and fixture tests. Build order under mos-1470/comment961 is W7 closed routing candidate, W8 landing, then W7 human first-real-import opening. No REQ-LIB-8 condition or acceptance change. Q234/mos-1363/S0 M1-M14 and post-10-27/MVP priority fixed. Static diff, twelve brief sections and append-only checks pass. No repo Node, tests, build, browser, queue mutation or live action. Fenton reviews after authorized docs branch push; Sage lands on approval.
|
||||
+@@ BUILD-LOG.md: remain; no live state, schema or bus policy change.
|
||||
|
||||
- 2026-10-23T17:32:37Z | Gyro sage-3544 fenton-0016 N1/N2 delta | Before: W7 Gate/final real-conversion list omit the W8 build-order cross-reference and W8 human-view filtering cites agent settings. After: both locations explicitly put W8 landing before human opening as mos-1470 build order, not acceptance; comment/tracked-deletion links are not current story links and never appear in the human Connections view regardless of agent settings. New commit atop approved 5af060fb5, no amend. Static diff and append-only checks pass. Docs only, no repo Node/tests/live action. Fenton checks only this delta.
|
||||
+ 2026-10-24 | Goldie | Row265 / #1770 verified (mos-1567, sage-3942) | Approved correction adds solely address import pin + Row265 comment to project-runtime.test and one pure-source RUNNER_FILES mount; new block checks parser has no imports. Serialized fresh-short-TMP timeout-k10: unchanged sandbox10/10, parser15/15, rooms18/18, full bus957/957, twelve named refusal mutants killed (each Node1, driver0), restored parser15/15 + rooms18/18. All positives zero fail/skip/cancel; every mutation restored full broker SHA71b32ee4. Old first-red evidence retained, no other old-test change. Slot returned goldie-0034; Boyd packet explicitly includes mount-list review, candidate push next.
|
||||
+ 2026-10-24T07:18:53Z | Sage | Row 327 (#1825, Bradford, Poe and Dewey) LANDED 68c08b4e7. Before: refactor at 94d9e90a6; the push guard was a scratch script with no reviewed-binary check. After: scripts/push-check.sh and scripts/test-push-check.sh on refactor, 3 commits cherry-picked onto 6a5e12511 with blobs equal to the round 3 tip d858c9f8b, plus doc commits 76f84465f and 68c08b4e7. Binaries are found by numstat or a NUL in the first 8000 committed bytes, regardless of attributes; each needs its sha256 and path in an approved latest-round candidate; an unconfirmed queue tail exits 2. Reviews: Poe c31525 rev 3882, Dewey c31526 rev 3883. Gate: 1st run 06:57Z RED, not the candidate: canonical node_modules was empty from 05:45:15Z (sage-4023). Rerun with its own root npm ci GREEN 07:15:49Z: 17 package suites 0 failures (cli 986, plugins 119, webui 418), 11 scripts exit 0, push-check 6 mutants KILLED; skips are the queue canonical-root check and the row 244 live provider cases. The landed push-check.sh passed its own push (NO_BINARY, NO_ATTRIBUTION, PUSH_READY). mos-1575: gates install their own node_modules; canonical restored with npm ci (128 packages).
|
||||
+
|
||||
+## 2026-10-23 — Lena, row 296 / #1802 FED R7 start
|
||||
+
|
||||
@@ agents/lena/work/queue-296/mutants.py (new)
|
||||
|
||||
## docs/SESSIONS.md ##
|
||||
@@ docs/SESSIONS.md: are never rewritten or removed; corrections are new entries.
|
||||
- 2026-10-23T17:48:43Z | Scrooge (629b6cd3) | Row 252 Console inbox Approve and Deny (#1753) | Rebased onto 306 landing as 580037105 (range-diff all =), slot run bus 907/0 webui 410/0 cli 943/0, in-review revs 3608/3609, Webby r1 APPROVE, J1-J19 specs to Sage; Sage landed 45ea3fa0d (done rev 3616). Part 1 mutant results were never in BUILD.md; they went to Sage by T3 (scrooge-0252-mutant-specs).
|
||||
- 2026-10-23 | Sage (1ef1e4f8) | Rows 308 and 252 landings, 571 Connections design amendment, Vikunja 597 | 308 (PRD 1.17, #1815) landed 30e6bb680 and 252 (#1753) landed 45ea3fa0d (replay of 580037105 onto 30e6bb680, range-diff all =), each after a full gate on the landed tree (252 also J1-J19, J11c and J18 equivalent); Gyro's 571 amendment (Fenton APPROVE) landed e8bb13df8; Vikunja 570, 435 and 597 done, canonical webui esbuild 0.28.2; queue revs 3589-3616 committed 59f013247
|
||||
- 2026-10-23 | Sage (1ef1e4f8) | Vikunja 571 W build rows; rows 13, 42, 257 and 289 check | Filed the design's ten W rows as queue rows 309-318 (revs 3617-3626, owners set to unassigned 3627-3636, queue commit 293b42fee pushed); Vikunja 571 done (comment 994). Row 13's candidate fd72d2689 is on refactor, gate is Monday's row 7 ledger run; 42 paused under mos-1184; 257 post-v1; 289 waits on 214 and 288. Slot released 17:56Z.
|
||||
+ 2026-10-24T04:27Z | Goldie (a13dd6d5-5e73-4b7d-8318-02abeff24940) | Row265 / #1770 C2-09b rooms | Goldie owns build, Boyd reviews under sage-3915. New goldie/row265 worktree at ec86f2c84, claim rev3814; room verbs/parser/new tests prepared, no old tests changed. Sage-3932 slot: new parser14/14 and rooms18/18 passed; whole bus in progress before refusal mutants, stop rule active.
|
||||
+ 2026-10-24T04:35Z | Goldie (a13dd6d5-5e73-4b7d-8318-02abeff24940) | Row265 / #1770 verified | First slot stopped at project-runtime import pin. mos-1567 narrowly authorizes pin and pure-source mount correction. sage-3942 rerun: sandbox10/10, parser15/15, rooms18/18, bus957/957, twelve refusal mutants killed/restored SHA71b32ee4, parser15/15 + rooms18/18 again. Slot returned goldie-0034; no further test runs. Boyd reviews RUNNER_FILES alongside rooms; own-branch push/claimant in-review next.
|
||||
+ 2026-10-24T07:18:53Z | Sage (1ef1e4f8) | Row 327 / #1825 push guard landed (mos-1572 option A, mos-1575) | Gate went red 06:57Z on an empty canonical node_modules (Glomgold's webui npm ci through a link to canonical, glomgold-0011); rerun with its own npm ci GREEN 07:15:49Z on 1bd214e38; pushed 68c08b4e7 07:18:03Z; #1825 closed c31530; canonical restored (128 packages); brief template rule 4db23a51f | landed
|
||||
+- 2026-10-23 — lena (Codex, db27faca): row 296 / #1802 FED R7; recovered Quackerjack design on lena/row296, inspecting acceptance paths; Node/tests held pending Sage CLEAR, no live changes.
|
||||
|
||||
## packages/cli/tests/federation-acceptance.test.mjs (new) ##
|
||||
3: e855f82e1 = 3: bbc38067f Untested: preserve R7 shell cleanup during mutant runs (#1802)
|
||||
4: a1321f8f9 = 4: 17e421cf4 Untested: record R7 reload ordering and slot boundaries (#1802)
|
||||
@@ -0,0 +1,5 @@
|
||||
M1: external TMPDIR removed (empty)
|
||||
M2: external TMPDIR removed (empty)
|
||||
killed-1: external TMPDIR removed (empty)
|
||||
plain-1: external TMPDIR removed (empty)
|
||||
whole-file: external TMPDIR removed (empty)
|
||||
@@ -0,0 +1 @@
|
||||
0
|
||||
@@ -0,0 +1,9 @@
|
||||
﹣ FED R7 scratch two-instance acceptance (0.501837ms) # run scripts/test-federation-acceptance.sh
|
||||
ℹ tests 1
|
||||
ℹ suites 0
|
||||
ℹ pass 0
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 1
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 77.634961
|
||||
@@ -0,0 +1 @@
|
||||
/mnt/storage/scratch/tmp/DRs04b
|
||||
@@ -0,0 +1,277 @@
|
||||
# Row 286: C2-03b push and per-seat credentials for the library mirror (#1791)
|
||||
|
||||
Owner Ludwig. Reviewer Dewey. Gate owner Sage (sage-2909).
|
||||
Brief: `docs/plans/2026-10-20_case2-rows.md`, "## C2-03b", at 94c33a43c. Design 7.2 and the ruling
|
||||
after r11 "agents never write story" in `agents/gosalyn/work/case2/DESIGN.md` at b68d79663.
|
||||
Base: `refactor` at 94c33a43c. The brief cites aca16404c, and lines have moved since:
|
||||
`GRANT_EVIDENCE` is `broker.mjs:253` now, not `:246`.
|
||||
|
||||
Status: code written, local and unrun (18:48Z on). No node until Sage's CLEAR, after row 258's run.
|
||||
|
||||
## What the code does today (94c33a43c)
|
||||
|
||||
- `packages/library/src/sync.mjs:32` `syncCommand(kind, url, {mirror, branch, user, slot})`. It refuses
|
||||
any kind but `fetch`. The env passes `MOSAIC_LIBRARY_HOST`, `_USER` and `_SLOT` to `bin/askpass`.
|
||||
- `bin/askpass` checks `-f` and `! -L` on the slot, then reads it. It doesn't check the uid or the mode.
|
||||
- `sync.mjs:51` `slotPresent` checks lstat: a regular file, our uid, no group or other bits.
|
||||
- The slot path is built in `packages/bus/src/runtime.mjs:211-217` (`syncOptions`) as
|
||||
`<configDir>/secrets/<business>/library-gitea`. The broker only calls `this.#library.sync(context,
|
||||
{accept})` (`broker.mjs:4630`), and the timer calls `libraryModule.sync` directly (`runtime.mjs:533`).
|
||||
- The sync state file has a strict key list in `packages/library/src/mirror.mjs:222`.
|
||||
- `chief-of-staff` is a definition (`STAFF_TO`, `broker.mjs:240`), not a fixed instance name.
|
||||
- A seat's Gitea user is in `gitea_grants.user` and `gitea_users`. Its token file is
|
||||
`<storeRoot>/<business>/<agent>/gitea` (`gitea-grant.mjs:379`). `giteaKeys.held(business, agent)`
|
||||
answers the held case.
|
||||
|
||||
## Plan
|
||||
|
||||
1. `syncCommand(kind, url, {mirror, branch, user, file, commit})`. `kind` is `fetch` or `push`. Same
|
||||
`SAFE` prefix, `-c` keys and env for both. A push is
|
||||
`push --porcelain --no-verify --end-of-options <url> <commit>:refs/heads/<branch>`, with no `+`.
|
||||
`commit` must be a full sha. The env var stays `MOSAIC_LIBRARY_SLOT` but now names whichever file
|
||||
answers: a seat file, the chief's file, slot `library-gitea` or slot `library-human`.
|
||||
2. `push(context, {commit, credential, retried, command})` in `sync.mjs`. git's porcelain line for
|
||||
the ref decides:
|
||||
- `!` with `[rejected]` and `(fetch first)` or `(non-fast-forward)` means the tip moved. Fetch once
|
||||
with the same credential and return `{pushed: false, raced: true, tip}`. With `retried: true`, the
|
||||
same rejection refuses `stale-base`. C2-02 owns the re-apply.
|
||||
- Any other failure refuses `library-push-failed`. git's stderr isn't kept.
|
||||
- A remote that fails C2-04's URL rules refuses `library-remote-invalid` before any git call.
|
||||
3. `bin/askpass` gets `readSecretFile`'s checks, the same way: no symlink, the bus's uid, mode 0600.
|
||||
In sh: `test -f && test ! -L && test -O`, plus a mode check through `stat -c %a`. Only the path
|
||||
reaches that argv. The user check stays an exact match on the one configured user. The check and the
|
||||
read happen at different times (TOCTOU). The bus owns the directories, so I take that as the
|
||||
accepted limit (Q1).
|
||||
4. Credential choice for the fetch, as a pure function `fetchCredential(store, business, keys)` in the
|
||||
bus. The broker exposes it, and `runtime.mjs` passes its answer to `sync` for the verb and the timer:
|
||||
- The chief is the one instance whose definition is `chief-of-staff`.
|
||||
- Evidence: `SELECT 1 FROM events WHERE business=? AND ${GRANT_EVIDENCE} AND
|
||||
json_extract(body,'$.method')='gitea' AND json_extract(body,'$.agent')=?`, of any action. It
|
||||
names no project and never reads `gitea_grants`.
|
||||
- No evidence: slot `library-gitea`, `{kind: 'slot'}`.
|
||||
- Evidence, a live `gitea_grants` row for the chief and not held: `{kind: 'chief', user, file}`,
|
||||
with the user from that row. The fallback test never reads the table. This path does, because it
|
||||
needs the user.
|
||||
- Evidence and anything else (revoked, fired or held): `library-fetch-no-grant`, before any file is
|
||||
opened.
|
||||
- No chief instance (fired): Q2.
|
||||
5. The sync state gets `credential: {kind, user} | null`. `library.status` shows it.
|
||||
`library-fetch-no-grant` shows as `lastError.code`. This changes `mirror.mjs`'s key check (Q3).
|
||||
6. Slot `library-human` is `<configDir>/secrets/<business>/library-human`. `humanCredential(...)`
|
||||
refuses `library-human-missing` before any git call when the slot is missing or fails the file checks
|
||||
(lstat: regular file, our uid, 0600). Her Gitea user: Q4.
|
||||
|
||||
## Files owned extension (sage-2922)
|
||||
|
||||
Added to the brief's list: `packages/bus/src/runtime.mjs` (`syncOptions` at :211-217 and the timer's
|
||||
call at :533) and `packages/library/src/mirror.mjs` (the state key list at :222). sage-2922 wrote
|
||||
`packages/library/src/runtime.mjs`, but the file is `packages/bus/src/runtime.mjs`. In mirror.mjs
|
||||
the row 222 contract holds: keys are added and none renamed. Before in-review I grep `packages/*/tests`
|
||||
for hash pins and path reads on both files and check them against every in-review manifest.
|
||||
|
||||
## Scope questions (for Dewey and Sage before code)
|
||||
|
||||
- Q1. The askpass TOCTOU above. Is it accepted as is, or should the helper be a node script that does
|
||||
O_NOFOLLOW plus fstat? If node, it would read the token in process and print it to git's pipe.
|
||||
- Q2. Fired chief. The instance and its `gitea_grants` row are gone, so I can't name the agent for the
|
||||
evidence check. My recommendation fails safe: with no chief instance, the fetch refuses
|
||||
`library-fetch-no-grant` when any gitea grant event exists in the business, and uses the slot only
|
||||
when none exists.
|
||||
- Q3. Files owned names `sync.mjs`, `askpass`, `broker.mjs` and the tests. The choice also needs
|
||||
`packages/bus/src/runtime.mjs` (`syncOptions` and the timer's call) and
|
||||
`packages/library/src/mirror.mjs` (the state key list for `credential`). I'd add both to the
|
||||
manifest, with only those hunks changed.
|
||||
- Q3: approved, sage-2922. See above.
|
||||
- Q4: sage-2922 allowed `user` only if design 7.2 or the ruling after r11 makes it her account. Neither
|
||||
does. `packages/library/README.md:31` at 94c33a43c says "`user` is the bot account name from design
|
||||
step 3, required for sync", so it is the fetch identity and can't be reused for her save. Back to Sage.
|
||||
My recommendation: `humanCredential(context, {user})` takes her login as a parameter, so this row adds no
|
||||
mapping field. The row that adds the save, C2-02 or C2-11a with `editor`, names the field. That
|
||||
needs a mapping schema change, which is Sage's call.
|
||||
Ruled sage-2925: accepted. `humanCredential(context, {user})` refuses `library-human-missing` before
|
||||
any git call when the slot is missing or bad or `user` is missing. This row adds no mapping field.
|
||||
Row 283 (C2-01d) adds an optional `editor.user`, and row 288 (C2-02) passes it in.
|
||||
- Q4 (original). Her Gitea user for `library-human`. The entry's `user` (`mapping.mjs:52`) is today the sync
|
||||
user, the bot's. The design names `editor {name, email}` (C2-11a) but no Gitea login. My
|
||||
recommendation: the entry's `user` becomes her Gitea login, used only with slot `library-human`. The
|
||||
fallback fetch keeps that same user too, because the bot slot was set up for it. Otherwise this row
|
||||
takes the user as a parameter and C2-02 or C2-12b names the field.
|
||||
|
||||
## Tests (brief list, mapped)
|
||||
|
||||
T1 push lands a fast-forward. T2 a moved tip reports the race. T3 a second race refuses `stale-base`.
|
||||
T4 a dead remote refuses `library-push-failed`. T5 askpass answers with the named seat's user and file,
|
||||
and refuses another seat's user, a symlink, 0644 and another uid (with a fallback note if the test can't
|
||||
chown). T6 the fetch uses the chief's file with a live grant, and the slot only with no chief event.
|
||||
T7 revoked (through `grants.revoke`), fired (through `instance.fire`) and held each refuse
|
||||
`library-fetch-no-grant` with a valid slot present, and each asserts the `gitea_grants` row is gone
|
||||
first. T8 a chief grant on another project ends the fallback. T9 T7's three cases with the slot at 0000.
|
||||
T10 a missing `library-human` refuses `library-human-missing` and runs no git. T11 a token search of
|
||||
argv, the mirror config, the run log and the test output. Mutant: a `+` added to the push refspec fails.
|
||||
|
||||
## Gate
|
||||
|
||||
Dewey approves the manifest. The library and bus suites, plus every `scripts/test-*.sh`, pass on Sage's
|
||||
gate. The mutant dies. A token search of the run's output finds nothing.
|
||||
|
||||
## Early look (dewey-0860), folded
|
||||
|
||||
Q1, askpass: sh, with no gap between the check and the read. The helper keeps `test -f` and then:
|
||||
- opens the slot with `exec 3<"$slot"`;
|
||||
- stats the open file with `stat -L -c '%d:%i %u %a %s %F' /dev/fd/3`, and the path itself (an lstat)
|
||||
with `stat -c '%d:%i' -- "$slot"`;
|
||||
- refuses unless the two dev:inode values match, the type is regular, the uid is `id -u`, the mode is
|
||||
600 and the size is at most 16384;
|
||||
- reads the token from fd 3.
|
||||
A symlink or a swap at either moment changes the inode, and the token comes from the file that was
|
||||
checked. This matches `readSecretFile` (`gitea-grant.mjs:167-181`).
|
||||
Residual, the same on both paths: a FIFO swapped in after `test -f` blocks the open. Neither side uses
|
||||
O_NONBLOCK.
|
||||
Swap test T5b: the direct helper test puts a `stat` shim on its own PATH. On its first call the shim
|
||||
renames another file over the slot, then runs the real stat. The helper must exit 1 and print nothing.
|
||||
Mutant M2 drops the inode compare and must fail T5b.
|
||||
|
||||
Q2, the chief: found through `roles` by definition, not through `launch.instances`. A fire only delists
|
||||
the name (`packages/business/src/instance-settings.mjs:355`), and `roles[name]` stays. Only a delete
|
||||
removes it (`deletedDocument`, :70).
|
||||
- Gitea grant evidence for any `roles` entry whose definition is `chief-of-staff` ends the fallback.
|
||||
That includes a fired chief beside a new listed one.
|
||||
- A live credential comes only from the listed chief's live, unheld `gitea_grants` row.
|
||||
- With no `roles` entry of that definition (deleted, or never a chief), any gitea grant event in the
|
||||
business refuses `library-fetch-no-grant`.
|
||||
- Cost, for Sage: row 236 lets seat gitea grants exist before C2-21. So a business with no chief
|
||||
entry and one seat grant loses the slot fallback. That fails safe, but it narrows "an install that
|
||||
runs before C2-21 still syncs".
|
||||
- T7's fired case also asserts that `roles[chief]` still exists after `instance.fire`.
|
||||
|
||||
N1: the `credential` key is optional in `mirror.mjs`'s exact `keys(...)` check (:221), so a pre-286
|
||||
state file still reads. The old fixtures have no `credential`: `library-sync.test.mjs:18`,
|
||||
`library.test.mjs:106` and `mirror.test.mjs:13`. New test T12 reads a pre-286 state file. Row 224
|
||||
(Della, 23816cf28) also changes `packages/bus/src/runtime.mjs`. Whichever lands second rebases and reruns
|
||||
bus whole.
|
||||
|
||||
N2: `[remote rejected]`, a hook refusal, is `library-push-failed`, not a race. Only `[rejected]` with
|
||||
`(fetch first)` or `(non-fast-forward)` counts as a race. The evidence query depends on
|
||||
`body.method` and `body.agent`. gitea `grant.applied` carries both at `broker.mjs:2479` and
|
||||
`grant.revoked` at :1862 and :2797. The spend event (`operation: 'grant.gitea'`, :1093) carries
|
||||
neither, so it doesn't match.
|
||||
|
||||
N3: `fetchCredential` reads the store, so it is the bus's choice function, not a pure one.
|
||||
|
||||
## Rulings sage-2928
|
||||
|
||||
- Q1: Dewey's fix, in sh. On dragon-lin `/bin/sh` is bash, and GNU coreutils stat 9.11 gives
|
||||
`stat -L -c '%d:%i %u %a %s %F' /dev/fd/3` on an open fd. Checked at 18:47Z with a scratch file, not
|
||||
the repo. The helper runs as git's child in the bus process, not under bwrap. T5b stages the swap with
|
||||
the PATH stat shim. If a run shows the swap can't be staged reliably, BUILD.md names M2, which drops the
|
||||
fd compare, and it gets killed.
|
||||
- Q2: chief by `roles[*].definition === 'chief-of-staff'`. The blanket refusal applies only with no such
|
||||
entry. Departure from the brief's "an install that runs before C2-21 still syncs", accepted in
|
||||
sage-2928: it refuses rather than widens, and every install enrolls the chief at initial configuration
|
||||
(F40, Q226). The refusal's message names the fix: "add the chief of staff, or grant the library
|
||||
through C2-21".
|
||||
- N1: as above.
|
||||
|
||||
## Build notes (code written; nothing run yet; dewey-0864 folded)
|
||||
|
||||
Files changed:
|
||||
- `packages/library/src/sync.mjs`: `syncCommand` takes `push` with a full-sha `commit`; `push()`;
|
||||
`humanCredential()`; `sync()` takes `credential`; `HUMAN_SLOT`, `CREDENTIAL_KINDS`. The `slot` opt
|
||||
and `MOSAIC_LIBRARY_SLOT` keep their names and now name whichever file answers.
|
||||
- `packages/library/src/index.mjs`: the new exports.
|
||||
- `packages/library/bin/askpass`: Dewey's fd 3 check.
|
||||
- `packages/library/src/mirror.mjs`: optional `credential` in the state key check. Nothing renamed.
|
||||
- `packages/bus/src/broker.mjs`: `LIBRARY_FETCH_FIX` and `libraryFetchCredential(business)`.
|
||||
- `packages/bus/src/runtime.mjs`: `syncOptions` passes the broker's choice to the verb and the timer.
|
||||
The timer's held line adds `fix` for `library-fetch-no-grant`.
|
||||
- `packages/library/README.md`: "Push and credentials (C2-03b)".
|
||||
- Tests: `packages/library/tests/sync.test.mjs` (appended), `packages/bus/tests/library-credential.test.mjs` (new).
|
||||
|
||||
Choices made without a ruling. Each is small and reversible:
|
||||
- `humanCredential(context, { user, configDir })`: sage-2925 named `{user}`. The slot path needs the
|
||||
config dir, and the library package doesn't know it, so the caller passes it. That's the same
|
||||
source runtime's `slotDir` uses.
|
||||
- `BusError` carries only a code, so the sage-2928 fix text can't ride on the verb's refusal. It
|
||||
goes in the timer's log line (`fix`) and in the README. The verb answers `library-fetch-no-grant`.
|
||||
- T7 and T9 run the real verbs (dewey-0864, ruled by sage-2947: no SQL staging; replaces the
|
||||
staged state in cefebf65b). Until row 285 lands, the test passes its own definitions; once it lands
|
||||
the real chief definition carries gitea. Whichever of 285 and 286 lands second rebases and reruns
|
||||
library and bus whole (sage-2947). The chief's grant goes through decision.raise and the human's yes against fake-gitea-api.mjs. The test's own
|
||||
definitions give chief-of-staff a gitea credential, as gitea-grant.test.mjs gives coder one. The
|
||||
real roles/chief-of-staff.json has `credentials: []`, so a live chief can't get one before C2-21.
|
||||
- Revoked: `grants.revoke`, then the row is gone and the fetch refuses.
|
||||
- Fired: `instance.fire` can't fire the launch.by chief. Only the launch.by role calls it, and it
|
||||
refuses its own name (`organization-instance-referenced`, broker.mjs `#chiefLifecycle`). So the
|
||||
test's launch.by is `boss` (definition pm, the chief's authority), and boss fires the one listed
|
||||
chief-of-staff instance. Step G deletes the row (row 281), `roles.chief` stays, the fetch refuses.
|
||||
Only launch.by may call instance.fire (`role-not-chief`, broker.mjs:4308 at 94c33a43c) and it
|
||||
refuses its own name (:4335), so this is the only fired chief the verb allows. Accepted by
|
||||
sage-2951 as brief owner and read the same way in dewey-0869.
|
||||
- T9's revoked case runs `grants.revoke` on the runtime's own data root and store, between starts.
|
||||
T9's runtime gets a scratch roles/ whose chief-of-staff carries `{service: gitea}`, as row 285
|
||||
ships it (case2-rows.md:1823-1824), so its definitions match the grant's (dewey-0869). After a
|
||||
rebase onto 285 the copy needs no edit.
|
||||
- Delisted with the row still there, a `fire.stopped` with no `fire.done`, held, two chiefs and
|
||||
another project stay unit checks on the choice function with SQL fixtures.
|
||||
- "Another uid" in T5: the suite can't chown, so a PATH `stat` shim reports uid+1 for the open file.
|
||||
The real `id -u` compare is covered only through that shim (dewey-0864).
|
||||
- Two listed chiefs, or none listed, refuse `library-fetch-no-grant` (T8).
|
||||
- The race fetch inside `push()` takes sync's `running` guard (dewey-0864 R1, in this row per
|
||||
sage-2947). While a sync of the mirror runs it refuses `library-sync-busy`, fetches nothing, and
|
||||
the caller writes again. Test: "race fetch: while a sync of the mirror runs". Its sync fetch is a
|
||||
git alias that touches a marker, then waits for a release file. The push starts after the marker
|
||||
exists and the release comes after the refusal, so nothing depends on timing (dewey-0869).
|
||||
- The slot at 0000: T9 covers the revoked case at runtime. Fired and held refuse inside the choice
|
||||
function, which takes no path and opens no file. `sync` with any `{ refused }` runs no git (library
|
||||
test, valid slot present).
|
||||
- First-run reds in the new tests are mine to fix in setup and report afterwards (mos-1272).
|
||||
- The chief's evidence is any gitea grant event naming the chief, of any action (grant.applied,
|
||||
grant.revoked and the rest), per the plan. The spend event names no agent, so it doesn't count.
|
||||
|
||||
Test map:
|
||||
- library sync.test.mjs: argv (push), T1, T2+T3, T4 (dead remote, hook, wrong token), refused or
|
||||
unsafe credential runs no git, T10, fetch credential and state with N1/T12, T5+T5b.
|
||||
- library sync.test.mjs also: race fetch busy (R1).
|
||||
- bus library-credential.test.mjs: T6, T7 (real revoke and fire), T7 choice checks, T8, departure,
|
||||
T9 runtime (real grant, chief file and user via timer and verb; real revoke, slot 0000: no git,
|
||||
log `fix`, state `credential: null`).
|
||||
- webby-0151 R3: T9 reads `library.status` for `credential` and `lastError`.
|
||||
- T11 token search: T1 scans the data root and every file but the seat's; T9 scans the log lines.
|
||||
The gate's output search uses the fixture tokens `fixture-token-*-made-up-00{42..49}`.
|
||||
|
||||
Mutants (each must die on a semantic assertion):
|
||||
- M1: `+` before the push refspec in `syncCommand`. Expected to fail: the argv test, and T2 (the
|
||||
forced push lands, so `raced` is never reported and her commit is gone).
|
||||
- M2: drop `test "$1" = "$path"` from askpass. Expected to fail: T5b (the helper prints the checked
|
||||
file's token).
|
||||
|
||||
## r2 rebase (sage-3579)
|
||||
|
||||
Sage ruled that 286 now goes before 258, because 222 is its only after row. Branch ludwig/row286-r2
|
||||
rebases b9506b352 (base 94c33a43c) onto origin/refactor 45dca69f6. The rebase had no conflicts.
|
||||
|
||||
- Range-diff 94c33a43c..b9506b352 against 45dca69f6..r2: all 11 commits are `=`, so no patch
|
||||
changed.
|
||||
- Rows 254 (331597709) and 268 (c27207f6e) were already in the old base 94c33a43c. Between the two
|
||||
bases nothing changed under packages/library.
|
||||
- Paths the two test files import or read, diffed 94c33a43c..45dca69f6: bus broker.mjs, runtime.mjs
|
||||
and store.mjs changed. None of the others changed: library/*, bus credentials, gitea-grant,
|
||||
mapping, mirror, reader, survey, sync, the fake-gitea-api, helpers and host-fixtures modules,
|
||||
business helpers (rolesCopy, systemFor), project git, seat checkout and fake-gitea, and roles/.
|
||||
- broker.mjs: the constructor gains `accessStamp` and `compactions`, both defaulting to null, and
|
||||
my tests pass neither. No base hunk falls in the fire job, the revoke job or the instance.fire
|
||||
verb. Old :4308/:4335 are now :4852/:4879, with the same text. The new console-cap check refuses
|
||||
a non-console session only on CONSOLE_VERBS, and the library verbs are not among them. The
|
||||
request path's access re-read applies only to `s.user` sessions, and my tests open none.
|
||||
- runtime.mjs: consoleOwners (default []), the access timer, compactions and the session-clear
|
||||
hooks. The Credentials and giteaStart wiring that T9 uses is unchanged.
|
||||
- store.mjs: schema 3l to 3n (row 206 thread_shares, row 271 session_ops and message_cancels).
|
||||
Each test opens a fresh Store, and none pins a schema version or step count.
|
||||
- Hash pins: no test or script line pairs a 64-hex value with a path I change. The positive
|
||||
control finds 64-hex pins in, for example, account-migration.test.mjs.
|
||||
- Row 285 has not landed. roles/chief-of-staff.json at 45dca69f6 still names no gitea credential,
|
||||
so T9 keeps its scratch roles copy (sage-2947).
|
||||
- sage-3589 freezes stack-release.sh, webui-service.sh, bus-service.sh, stack-copy.sh and common.sh.
|
||||
This row changes none of them.
|
||||
- Still to run, on CLEAR: library and bus whole, every scripts/test-*.sh, M1 and M2, and the token
|
||||
search, all on r2.
|
||||
@@ -0,0 +1,10 @@
|
||||
# Magica
|
||||
|
||||
Builder seat, Codex gpt-6.1-sol, started by Sage under Q246 and mos-1576. Takes over row 285 (C2-08b, #1790) from
|
||||
Scrooge's pushed `scrooge/row285-r2` 53db6b7ca and rebases it onto refactor. Scrooge's rulings and notes in
|
||||
agents/scrooge/work/queue-285/BUILD.md bind this seat.
|
||||
|
||||
No launcher in this directory. The seat runs as a T3 thread and works in its own worktree. It has no credentials of its
|
||||
own; it pushes only its own `magica/*` branches through the repository credential helper (mos-0981), never `refactor`,
|
||||
`main` or another seat's branch. Poe gives the first Codex review and Webby the Opus 5.5 landing review (mos-1542).
|
||||
Registered by Sage on 2026-10-24 so the queue can name the seat as row owner (store.mjs isSeatDir).
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,891 @@
|
||||
0f7caa5b7dc81530cec8ef607f099725085d7819beeed15c9a309a857c1630aa agents/magica/work/queue-285/BUILD.md
|
||||
04069ad089500536883425c2f75d1c37f83d9010c9ff15ac4c8250a2a67cb0bf agents/magica/work/queue-285/REVIEW.md
|
||||
8fe015d211223c6115b6e2eeb72890c0c22ea35b4fd49ab1afbf7a8a92b21f7c agents/magica/work/queue-285/b1-base-diff.txt
|
||||
7ea368e7b92e343e9f59a42e22be0fe63f78b8c4505ae4541038af2ae0bdc211 agents/magica/work/queue-285/b1-base-word-diff.txt
|
||||
774e7126acb4f5c61f413089cb64ca00dd5b1d4dfa5d0945bff2043b04606c68 agents/magica/work/queue-285/b1-incremental-word-diff.txt
|
||||
53effd50164c4c3c912488b2c6bc7cdcc579bea532eeb177d02614b4ac1e7544 agents/magica/work/queue-285/final-base-word-diffs.txt
|
||||
7a531c9e68a3c38ae28dc7ab32ef8c37a9369e21ec6d89a7d0b99bfc737a2cc8 agents/magica/work/queue-285/final-product-diff.txt
|
||||
7372c74641a0ad990fb025aaf0f18f1882901f5844b948ded10a0e5b97b00653 agents/magica/work/queue-285/fix-r4/citation-green.log
|
||||
9c9c5f6f3da7f1528e64a060b7fe149d407721e26571de3422210b5daed01bb0 agents/magica/work/queue-285/fix-r4/data-fix-base-word-diffs.txt
|
||||
962da7800285d6028bad3720786170b280f90ff20f63f94cb0505c07af43c2f8 agents/magica/work/queue-285/fix-r4/harness-green.log
|
||||
41d38e4bd8f34d6e94c3a28996f9be740f3f4e60faf9c80bf48c9b6fb507f832 agents/magica/work/queue-285/fix-r4/launcher-green.log
|
||||
e495167a9cb2c22e62ece9c8bbd17e2c81f026346009d10626e0d0ad51e2cd43 agents/magica/work/queue-285/fix-r4/new-tests-red.log
|
||||
a56a323d0ce0a485a4622013baa33f4cfec1c8f3364eebdbbae50546408b3b6e agents/magica/work/queue-285/fix-r4/product-green.log
|
||||
fa27ed9aa59296c8f830fdf88683a0cefed54d805a255ef293865d0a55d37c6f agents/magica/work/queue-285/fix-r4/tmpdir.txt
|
||||
acb10dbbdaecab898f69a455f5bafdedfa9de2ab429dfa91b46cb61444bc1e22 agents/magica/work/queue-285/gate-r4-collect/FINAL-COUNTS.txt
|
||||
3cbd7a131f72c29fb7995f929fd927320174b0e8f44e9084620971c7136f94f8 agents/magica/work/queue-285/gate-r4-collect/FINAL-REDS.txt
|
||||
ad3bbb579082673e9aa522c563e034cfe6b4d2e9ca1a8f3698da3c4239805b3c agents/magica/work/queue-285/gate-r4-collect/all-red-files.txt
|
||||
ab145f36910c8ab0d5b87e6e5f722c1c4e5e3a54ea15321318aaf56dcd4ff919 agents/magica/work/queue-285/gate-r4-collect/allowed-reds.txt
|
||||
8fa384ee8e7340deb2c54653124347cc548f480a8e459de2cc8dc7733e0a9d88 agents/magica/work/queue-285/gate-r4-collect/bus/access-revoke.test.mjs.log
|
||||
2e8ccae583cc8aa51eb9e2735059112d3bbc0ffb4567e51f5dc0e56ec7f0f2c5 agents/magica/work/queue-285/gate-r4-collect/bus/account-migration.test.mjs.log
|
||||
d1eebb9c0c5b9b764df9536fef12e8ae6dc7d540d542a1042a744571893fce2f agents/magica/work/queue-285/gate-r4-collect/bus/address.test.mjs.log
|
||||
e5276c9b114413b047b096171cbecc2a916c3bfb66e0b710473afd7aff37983f agents/magica/work/queue-285/gate-r4-collect/bus/agents.test.mjs.log
|
||||
633e516455c7aae5bef51d13d7898d5613500aae1c7982dcaf0e2e55b89baa6c agents/magica/work/queue-285/gate-r4-collect/bus/approval-binding.test.mjs.log
|
||||
31bbf97c09676378e2cd2831d512159f0ec7d4c749a9c7108f6cecee8b82c933 agents/magica/work/queue-285/gate-r4-collect/bus/broker.test.mjs.log
|
||||
9880c8b5c154fa75743f080411a665465bcf628004b8366ba36af17d66c4386b agents/magica/work/queue-285/gate-r4-collect/bus/business.test.mjs.log
|
||||
53f125c048700f0de7397d395a18ae7e08b74ee4e70a6b480942d8d23bfc27e0 agents/magica/work/queue-285/gate-r4-collect/bus/channel-proof.test.mjs.log
|
||||
1fac1f31aede9faa2e79f255b0b6c89b5eaef01f6f23d06294d4130a0467dbe5 agents/magica/work/queue-285/gate-r4-collect/bus/chief-of-staff.test.mjs.log
|
||||
6202c575549449212cb99100dba1727975c7ff11c9db9d79813918a25f6de513 agents/magica/work/queue-285/gate-r4-collect/bus/citation-availability.test.mjs.log
|
||||
70e107320e0166cf53ab9efcac876ed57b6d40eeb2d43854caa2ce3c7b83d762 agents/magica/work/queue-285/gate-r4-collect/bus/citation-guard.test.mjs.log
|
||||
9626e01de16bba9e4c7d9f124d5a10456bdf24916923021eb36d4a13fa0c24f2 agents/magica/work/queue-285/gate-r4-collect/bus/citation-runtime.test.mjs.log
|
||||
ce3bfe1e4bc9ee680f3018bae196d1d3200b48ddb3d3201d5f7f96513829a259 agents/magica/work/queue-285/gate-r4-collect/bus/comment-cursors.test.mjs.log
|
||||
36e6add82d7da0de154d21fa1ab6951b1a48cd42d7465708ce498553e3ec5329 agents/magica/work/queue-285/gate-r4-collect/bus/comment-migration.test.mjs.log
|
||||
909ceca801a9f04ca99f156773920feb18d38b632901433d35b3e08038c47860 agents/magica/work/queue-285/gate-r4-collect/bus/console-decide.test.mjs.log
|
||||
08c5d6bdf51a9c7854f96708141f01d0bd3f0d3571a16de131c9fe7f42256803 agents/magica/work/queue-285/gate-r4-collect/bus/creative.test.mjs.log
|
||||
f9c2621f3ec31a6fcebffc0b206f4b6137572db0a9c6c0787600a5c3b9a5a56d agents/magica/work/queue-285/gate-r4-collect/bus/credential-claim.test.mjs.log
|
||||
b4cd0bffe87b1f304fe25dbca4d0e1b9da073636d001ccf0a6eafba3b347361d agents/magica/work/queue-285/gate-r4-collect/bus/credential-status.test.mjs.log
|
||||
1a4d1842b6a7a1a8e43ac56c51e8585e6c6148bf4b20d988acdb68c828366cb6 agents/magica/work/queue-285/gate-r4-collect/bus/credential-store.test.mjs.log
|
||||
3c91d51794bfbbc158b5474924f4e0bf144632b07278e9a7e7e581c535c51613 agents/magica/work/queue-285/gate-r4-collect/bus/credential-verbs.test.mjs.log
|
||||
5c8b0cf96dedf10a531e4f7b561be7699f76cb539181d9f267f2bc4afa162c2d agents/magica/work/queue-285/gate-r4-collect/bus/credentials.test.mjs.log
|
||||
75cc4bb76f3f24db23641e52c0bf536ec5f3bf45d7785781d71e10742181fd67 agents/magica/work/queue-285/gate-r4-collect/bus/csuite-messaging.test.mjs.log
|
||||
f0ed6f2ff995880be3f023ef56bdc56c765888a029143bf2addaac494181401a agents/magica/work/queue-285/gate-r4-collect/bus/daily-quota-runtime.test.mjs.log
|
||||
c49f610ff33cddd95542d2b98190febd42f390ab543a1b8ff4072eb28f6b1ece agents/magica/work/queue-285/gate-r4-collect/bus/decision-close.test.mjs.log
|
||||
14e93bcf5605adaeb1b8c07a09132eb021d997cd89dbb2b432ef1d61cda35d5a agents/magica/work/queue-285/gate-r4-collect/bus/decision-route.test.mjs.log
|
||||
3fc65890bb8609e42ffae4ddc6fca06911d5896274ec7c566a4efd80646f7e9d agents/magica/work/queue-285/gate-r4-collect/bus/decisions.test.mjs.log
|
||||
53c8f0e07391cc2a7c0a5b1e98a50a39629557506d9765a05a7442afe2cac307 agents/magica/work/queue-285/gate-r4-collect/bus/end-launch.test.mjs.log
|
||||
0e148ab4405bb2ef5621afac5ae841e191268e2af98ac8db0fcaa75022a9e609 agents/magica/work/queue-285/gate-r4-collect/bus/fire-revokes-grants.test.mjs.log
|
||||
baefbf89713fb654a2c7e4996c050a9a8111fcc7a890eb231596f66f0aa45d25 agents/magica/work/queue-285/gate-r4-collect/bus/gitea-grant-docker.test.mjs.log
|
||||
c71bb26074541ea47bd2bb470a0a2f2b331b64d93ff2a570852ae34023a6d93a agents/magica/work/queue-285/gate-r4-collect/bus/gitea-grant.test.mjs.log
|
||||
f4ed7cf236ea25408654607c6b6d8b4dd4f13f43461784fb3f189ca1eba11db9 agents/magica/work/queue-285/gate-r4-collect/bus/gitea-migration.test.mjs.log
|
||||
caa8c827e4d2b52a7748cac2c48715098173dcd9fe2f064d433d0518bdf26ce5 agents/magica/work/queue-285/gate-r4-collect/bus/grant-enroll.test.mjs.log
|
||||
48f3e5a541c505090576ed81e50f7c4e0b766e4f5420c3350c405cd11117df1c agents/magica/work/queue-285/gate-r4-collect/bus/grant-executor.test.mjs.log
|
||||
472555ac19aa87e720015a6668398cece90bb3a3eaaf5a4190b1baef7b0f61fa agents/magica/work/queue-285/gate-r4-collect/bus/grant-host.test.mjs.log
|
||||
6d1cffb7ff723026d0dff55e0a293a5e209f598f675c04c5309cb91a4dd098a8 agents/magica/work/queue-285/gate-r4-collect/bus/grant-migration.test.mjs.log
|
||||
7bc1531725b891305fffc521ab79db14a4977bcb05c05f0cebae8699899eeb07 agents/magica/work/queue-285/gate-r4-collect/bus/grant-scope-runtime.test.mjs.log
|
||||
b6996ec19028c81fdcf584b0f76556a97fbfbb4c1681bef4cf08fa3fb3251c6f agents/magica/work/queue-285/gate-r4-collect/bus/grant-scope.test.mjs.log
|
||||
2980c8c42ef61b2822173d3f721bc5206a128b1356afcfeb9066483afe95ef89 agents/magica/work/queue-285/gate-r4-collect/bus/hard-waits.test.mjs.log
|
||||
125b72702751fc0433ad4eab85b0086402689b1a8c5306210b01485ab0e08791 agents/magica/work/queue-285/gate-r4-collect/bus/host-run.test.mjs.log
|
||||
2a93ea86cc9417161c8528329274386fa263d5dc9d76e2381dda09c6b8c98787 agents/magica/work/queue-285/gate-r4-collect/bus/host-tools.test.mjs.log
|
||||
fce3e1c743f6690d5a10b07eb5cc19159da0acdc60190587b8b53291a2bee8d3 agents/magica/work/queue-285/gate-r4-collect/bus/human.test.mjs.log
|
||||
e97463f3705aa86d1b8d3bdab797ca9f0af4a249d193d1b4e7aa9c344d6a90a3 agents/magica/work/queue-285/gate-r4-collect/bus/instances-verb.test.mjs.log
|
||||
103cb1c53148c538540600b223381a22c4a20dcaaf5cc9f8b253e20e3864b66f agents/magica/work/queue-285/gate-r4-collect/bus/interpreter.test.mjs.log
|
||||
2f0d2627a1f781e8b5496093f255ebaea9a5fa70e9e049a71286f7a3c6ae989f agents/magica/work/queue-285/gate-r4-collect/bus/land.test.mjs.log
|
||||
69b16fec4978aea5a9a2f5cc7706c38261cb1489e3d2a0a64aff4c2cd57d5faf agents/magica/work/queue-285/gate-r4-collect/bus/launch-notice.test.mjs.log
|
||||
63fb77e6a24a6cf4e660d88e7a405f973f0f51d59753fe99092f834beb241a09 agents/magica/work/queue-285/gate-r4-collect/bus/launcher-released.test.mjs.log
|
||||
1b2a4594098cbdc5e6cd9136dc3726333afef93586776b0aaa4ba76568038399 agents/magica/work/queue-285/gate-r4-collect/bus/library-sync.test.mjs.log
|
||||
4ab3898668c4f72eca47fdffb7ce3540b8b65115fc9bbba23a4e2292dcda857a agents/magica/work/queue-285/gate-r4-collect/bus/library.test.mjs.log
|
||||
e891028488f5b5bd1e168f5d3fb6d23524d9cd6d1e8f8b02fb8e2c09a66df190 agents/magica/work/queue-285/gate-r4-collect/bus/lifecycle-revoke.test.mjs.log
|
||||
fe65f6b3e137e12b930945861fbd9f378e7458fbbbac8d41047b7d575a6b11a9 agents/magica/work/queue-285/gate-r4-collect/bus/lifecycle-verbs.test.mjs.log
|
||||
250d26c11642b043334417627dd113cef88d202dd27d411ebf39d2ae938ca489 agents/magica/work/queue-285/gate-r4-collect/bus/limit-checks.test.mjs.log
|
||||
e2fcf9b930620c6580e6d49543e4ba46db6851b2b5253d97161efbc654d4eba7 agents/magica/work/queue-285/gate-r4-collect/bus/limit-stop.test.mjs.log
|
||||
6caaa97b3dbfb0446b36600f05f958ac1c2d69c1f65cb463c13e16ad50e8e3c1 agents/magica/work/queue-285/gate-r4-collect/bus/limits-runtime.test.mjs.log
|
||||
612000edd51a3aac507eab1b6b824ff52f9f1136e86478c2f9757b990fc8c9a8 agents/magica/work/queue-285/gate-r4-collect/bus/limits.test.mjs.log
|
||||
53be4dceb6d5ec741d1af2e3e2b3982a2c5ce7288ff5f5060e43e2e9ab9ebf88 agents/magica/work/queue-285/gate-r4-collect/bus/message-citation.test.mjs.log
|
||||
c33d9ae1847af596ffa2174290ba816a6d917dd37e986b1e1e5e44d20479f207 agents/magica/work/queue-285/gate-r4-collect/bus/message-filter.test.mjs.log
|
||||
71491e9dfab96f7774c5ab09f11e2f6416a09b3cf9b3279dafc61ea4733819b6 agents/magica/work/queue-285/gate-r4-collect/bus/messages.test.mjs.log
|
||||
9d6315b85b0aa34ca52eda1d7eb0f0894c3f290e03a3fe3f3f086c1b9e31a772 agents/magica/work/queue-285/gate-r4-collect/bus/messaging.test.mjs.log
|
||||
b2b6b920a936c15fa4f07509ce04bd6bc9021dc645eb452674ae076882bdfae1 agents/magica/work/queue-285/gate-r4-collect/bus/name-migration.test.mjs.log
|
||||
5dd20bde0ef52b3ccaf43a2d40a7df4e164b80424dee8e95652d57b9ee12a615 agents/magica/work/queue-285/gate-r4-collect/bus/names.test.mjs.log
|
||||
cb17f0c8e1a5cf3cc5a2632be0be7f650b2bb8bfd44a15863f554dc6875bef4c agents/magica/work/queue-285/gate-r4-collect/bus/peer-transport.test.mjs.log
|
||||
d71b96d5470e01f8c581e8ab0a3b2f43f297f8c1470b6cc05c4e889b6c807fdc agents/magica/work/queue-285/gate-r4-collect/bus/peercred.test.mjs.log
|
||||
2c139f7411f8907a34da17cc542f64857db2453c73e13ff4e21ae6ce8ac3fb74 agents/magica/work/queue-285/gate-r4-collect/bus/plugins-verb.test.mjs.log
|
||||
62c11085da98c8337a9d7dd9bceb51f509cdd7b90f61932adfc8c3b610a0f9e5 agents/magica/work/queue-285/gate-r4-collect/bus/principal.test.mjs.log
|
||||
cbda24869262c45d08619e5485076699e126e2cd4eca15d911ba10ecbc656b7a agents/magica/work/queue-285/gate-r4-collect/bus/process.test.mjs.log
|
||||
663508f9a4c3a9657ccceba5bb61d17041f15059d51d045e0d68cc5371f2ca21 agents/magica/work/queue-285/gate-r4-collect/bus/processing-runtime.test.mjs.log
|
||||
6cd0d914c8956080a26ec6bee0fea72296be413a14633354296e7e5c05b572de agents/magica/work/queue-285/gate-r4-collect/bus/processing-timeout.test.mjs.log
|
||||
b92474344d72a8bbe3614fad9b45e1a978348aa3efaadfe0d889ee19b4247bec agents/magica/work/queue-285/gate-r4-collect/bus/processing-web.test.mjs.log
|
||||
9a749c4003b6636452a04a57997141c0a32c9ea48f0572071a5c4e96b2042d23 agents/magica/work/queue-285/gate-r4-collect/bus/processing.test.mjs.log
|
||||
8c914a20a33d7c6b59ea7d6fd982ef756b4b88c65402e4db82116e91ac470a65 agents/magica/work/queue-285/gate-r4-collect/bus/project-await.test.mjs.log
|
||||
fec12c6a6063a3686041c0e2085a184baf3bde806e0cd2efe2f3512c5646133f agents/magica/work/queue-285/gate-r4-collect/bus/project-files.test.mjs.log
|
||||
2db6ce2d868da66852062696c8a840fa5a676f7b0dd2e648ad9da34db45c97d0 agents/magica/work/queue-285/gate-r4-collect/bus/project-runtime.test.mjs.log
|
||||
d9b606efd79461d7e41ea5cc3e6b9fe734c7cb179a52100ed41f367c8bb72b15 agents/magica/work/queue-285/gate-r4-collect/bus/publish.test.mjs.log
|
||||
946f97e12856d40dd8f1b0fb0599865b42149604db3a5107538009ce527d54f6 agents/magica/work/queue-285/gate-r4-collect/bus/reload.test.mjs.log
|
||||
f334fa9666b4d6ad8355c8df6cc6acfd69fe72a5071be0031e6482f394b5f72a agents/magica/work/queue-285/gate-r4-collect/bus/replies.test.mjs.log
|
||||
7d00afc9365f0df7bfc4a6ef72fc13a62c69afa2e965cc50fc4cc9d6b0d7e5df agents/magica/work/queue-285/gate-r4-collect/bus/requirements.test.mjs.log
|
||||
6ca9fff862a4b0b65a5962c46ea443d978aa7a3610c5b375c937bd6554bda874 agents/magica/work/queue-285/gate-r4-collect/bus/review.test.mjs.log
|
||||
25c11582fa80847a4ecb0861157cd0ae14947ecbf741c2b8cfac6604c5537cfb agents/magica/work/queue-285/gate-r4-collect/bus/revoke-window.test.mjs.log
|
||||
b5abd0a0dbe383382303ffa50284beb76c736fb2288a2db3de3386e9e79656f0 agents/magica/work/queue-285/gate-r4-collect/bus/rooms.test.mjs.log
|
||||
b7a2f7855a3a77fdc9e6209d88bd3eeffafb79801adaa63d9f466c7060497095 agents/magica/work/queue-285/gate-r4-collect/bus/routes-verb.test.mjs.log
|
||||
fd35c2917f7703162d61ccfe93a00d9c61d52b861b3a069c3967641085b42f23 agents/magica/work/queue-285/gate-r4-collect/bus/schema.test.mjs.log
|
||||
bdddd8aca4911f1f7cffbf3635aaaf2ba8a405bca89a68b5377fb828f0c8b660 agents/magica/work/queue-285/gate-r4-collect/bus/session-clear.test.mjs.log
|
||||
53116ee09f71522ec154bcdc2a89542a39039e08e9932f79cdbc96698d2f19f2 agents/magica/work/queue-285/gate-r4-collect/bus/session-compactions.test.mjs.log
|
||||
e2fc0905991cd8e88009776c48e1873dbe1870b100fe6cdedb1b2547b0abf032 agents/magica/work/queue-285/gate-r4-collect/bus/sessions.test.mjs.log
|
||||
453e9cfb7614a1079ba79eb6e594ffde43ad82228778214c5c3989b8c754c128 agents/magica/work/queue-285/gate-r4-collect/bus/single-use.test.mjs.log
|
||||
2a08f81797f3b94a8f1355ed66b122e74bb0030779a075690ae0daad11a4f258 agents/magica/work/queue-285/gate-r4-collect/bus/spec-migration.test.mjs.log
|
||||
9d41b431852372cc359c7eed1b8ac4897a440ebaa2917723351215478497a8b0 agents/magica/work/queue-285/gate-r4-collect/bus/spec-review.test.mjs.log
|
||||
66967a35ff979979b48c90cf199009ac1b9006078f0096a886115f5bdf351101 agents/magica/work/queue-285/gate-r4-collect/bus/spec-socket.test.mjs.log
|
||||
f0b464dc3e7cc35fcfcdf0d9425f1ddf5e9892c1b00db6ee90e9352ced95c7eb agents/magica/work/queue-285/gate-r4-collect/bus/spec.test.mjs.log
|
||||
6df3497357e590cad2c8a8d0527a572acd048c44446d172a0ff85e928c58820b agents/magica/work/queue-285/gate-r4-collect/bus/staff-request.test.mjs.log
|
||||
7ab5db4e6b8f780bb0000e2e96afc2ee9681a731ed41ec40d0f0a9f6039b2227 agents/magica/work/queue-285/gate-r4-collect/bus/state.test.mjs.log
|
||||
e7314d325c922e5f5b017c407620dccecb972d77d60136727f10b74f896c4bef agents/magica/work/queue-285/gate-r4-collect/bus/store.test.mjs.log
|
||||
cb89b8d82a433f2feec54aa77e30cc12c5ee6338dbe33ce21d72d6a92f675111 agents/magica/work/queue-285/gate-r4-collect/bus/task-page.test.mjs.log
|
||||
743848c9fce9bc10acc37766f51b2c18294d74ce88e1b570e3e51c0b2ed1194b agents/magica/work/queue-285/gate-r4-collect/bus/task-read.test.mjs.log
|
||||
4dfced1f1f8bfc7e208ca2420156b28d997b2606244f3c51ceba54a3f6dfaa8d agents/magica/work/queue-285/gate-r4-collect/bus/tasks.test.mjs.log
|
||||
5074aae295a408fd9875045ebd6465a0016984ee1be7b1272072d0f94d01f5a7 agents/magica/work/queue-285/gate-r4-collect/bus/tester-threads.test.mjs.log
|
||||
b0aae533ba475bb62fea5b5ee1f7df0267eb9fa6dee0a5fe5860bec9d0b2ef80 agents/magica/work/queue-285/gate-r4-collect/bus/tester-writes.test.mjs.log
|
||||
122397ae2cda28108f36122e6a9940e5183eb0a59f1a130ce50705225fc3126c agents/magica/work/queue-285/gate-r4-collect/bus/tester.test.mjs.log
|
||||
8b7d43f83d838bedbaf4b02e954db6735bdbd4fd484075320c253f2a361a0952 agents/magica/work/queue-285/gate-r4-collect/bus/thread-claims.test.mjs.log
|
||||
1c8adc84ffb80546f492817cd0f320f140ddd8aeb992d3932c9a6cac7adcbea1 agents/magica/work/queue-285/gate-r4-collect/bus/thread-migration.test.mjs.log
|
||||
65725df7873320df83604a8187e02e71759eed77bed824d998bfd78e4e4edb65 agents/magica/work/queue-285/gate-r4-collect/bus/thread-shares.test.mjs.log
|
||||
d230f21aada0c1f4e8f3e9eb467b500dd86d3725311daef53a53b5885ef363fc agents/magica/work/queue-285/gate-r4-collect/bus/threads.test.mjs.log
|
||||
1a1365b2973ee37294c2b9235ee18d7bed3149e3c1d651175c0c96020e87db40 agents/magica/work/queue-285/gate-r4-collect/bus/transport.test.mjs.log
|
||||
b588d0fe2bef2ee67e83b3e8421d336f158373d43f718d168cf06a65311c256c agents/magica/work/queue-285/gate-r4-collect/bus/usage-broker.test.mjs.log
|
||||
82df952270786ea3a6b04be1564fbb76d6bb456be4b1eef94850cb5544b0ea7f agents/magica/work/queue-285/gate-r4-collect/bus/usage-migration.test.mjs.log
|
||||
8354f0ff91acb5c92e4817e64c4b198f618f8cbc6b50be997ec79bc2f9c1ff6b agents/magica/work/queue-285/gate-r4-collect/bus/usage-runtime.test.mjs.log
|
||||
b2c469fa1ed6683a5ff762b7125da284e1956fa55c3b3855cfb66f1f57d74de9 agents/magica/work/queue-285/gate-r4-collect/bus/usage.test.mjs.log
|
||||
2577b4fbf5504fb14739b337b872cba239baf07f8533ca57c2f1a85063cbe762 agents/magica/work/queue-285/gate-r4-collect/bus/user-principal.test.mjs.log
|
||||
3e4e7d41763998cc4ca257d73dc6bc6e99f594c362653f12d7c7459232c42de1 agents/magica/work/queue-285/gate-r4-collect/bus/viewer.test.mjs.log
|
||||
ec558c17bb3d0629718bbd77af1855f4e13308128abc7ee7b1b4f3ff7c5652f9 agents/magica/work/queue-285/gate-r4-collect/bus/web.test.mjs.log
|
||||
9e89acc41ac56d95628f5ac98bc47d26b26ac942b6c376f75ee28e8a39cf0f77 agents/magica/work/queue-285/gate-r4-collect/bus/workflow-roles.test.mjs.log
|
||||
4d8d499aa27b7d5c7e37a3a05d28e49683a05da0976cf13af1b066758f02ff87 agents/magica/work/queue-285/gate-r4-collect/business/access-levels.test.mjs.log
|
||||
320e9beecb926e3a3078556eb4f78e421df377913354babd14ffed361bcb764f agents/magica/work/queue-285/gate-r4-collect/business/access.test.mjs.log
|
||||
e9892cd8cd2c773d4b99b6fab9bf09821642f4ae31306daaae0f3e80699d3247 agents/magica/work/queue-285/gate-r4-collect/business/agent-identity.test.mjs.log
|
||||
6ad15b6c153aa0ee3c672c32669d4a76861274105922875beea06c32d45a5ecf agents/magica/work/queue-285/gate-r4-collect/business/assistant.test.mjs.log
|
||||
74bc1ece3efe91fb11b24f6c7e66c211454b01ad21a5d86168264dbbf1d46944 agents/magica/work/queue-285/gate-r4-collect/business/business.test.mjs.log
|
||||
35e3ceba1bb5266df8147b341c94efacd797be9b02b7159eff78b2c6e3346c0e agents/magica/work/queue-285/gate-r4-collect/business/case1-business-file.test.mjs.log
|
||||
c9bcb0cca5bbd2c1aa3d63168d9a274bcf90f7861b542a8c3792253afa453445 agents/magica/work/queue-285/gate-r4-collect/business/case1-project-key.test.mjs.log
|
||||
10bb1c7e6ab123029cd335f2a53f14cff1a29259b83e9eb374e907927386da40 agents/magica/work/queue-285/gate-r4-collect/business/chief-library-credentials.test.mjs.log
|
||||
4024582a9f567fab3fb93631661d9c737b2efb7b08b519898d600ff5fa4dba41 agents/magica/work/queue-285/gate-r4-collect/business/chief-of-staff.test.mjs.log
|
||||
05814d03c8c22bd676063883a9c89d87784d113db4dc254d832593c8f6027442 agents/magica/work/queue-285/gate-r4-collect/business/cli.test.mjs.log
|
||||
967f2f6bff890fabaaee8a7a26a272909ba34f8f33f82790126aa5d0340f96fd agents/magica/work/queue-285/gate-r4-collect/business/credentials.test.mjs.log
|
||||
a56b0830f04da2b1196cfff8434c17ec0692674e04db309209c6165d1de6c204 agents/magica/work/queue-285/gate-r4-collect/business/csuite.test.mjs.log
|
||||
47578c7da20c8a70b0fbd210d3adf42ac92f5c98ec4275cb560220e5dd0cc667 agents/magica/work/queue-285/gate-r4-collect/business/grant-scope.test.mjs.log
|
||||
ec30af0def5877e1d8863a1edf5470e29cdd359eb84923bb6e360fc9cd4caedf agents/magica/work/queue-285/gate-r4-collect/business/hard-waits.test.mjs.log
|
||||
640508081b45d272ec018aa019f25e4f8e664748c608f38a6d852842f556c5fa agents/magica/work/queue-285/gate-r4-collect/business/hosts.test.mjs.log
|
||||
6d4d584aec16f7f2867c5bc6f2244511136278ae67bad81b481e65edb680598a agents/magica/work/queue-285/gate-r4-collect/business/instance-settings.test.mjs.log
|
||||
03de1d9cb7df27a865c6f4178ba7aef567185b9f6cf95ef0843ab7ba34d494d1 agents/magica/work/queue-285/gate-r4-collect/business/launch-settings.test.mjs.log
|
||||
1bb90b5f3e00691ced80a704d9e93bb5919ca3347064f4ede8a64ae05abe92a1 agents/magica/work/queue-285/gate-r4-collect/business/library-projects-protected.test.mjs.log
|
||||
59a50585220f28ab7a18c7f2d51cda8a341daa3b576408a93754547157da1f66 agents/magica/work/queue-285/gate-r4-collect/business/library-seats.test.mjs.log
|
||||
6ee85180af130d03cc2ddc33bd881509800ab16fc362a436b72dc1d98b38f4cc agents/magica/work/queue-285/gate-r4-collect/business/lifecycle-settings.test.mjs.log
|
||||
cca68f186ecf86ca21bbea1e6a88c88a718ab3837217e7e06d7ae319a7dca080 agents/magica/work/queue-285/gate-r4-collect/business/optional-tracker.test.mjs.log
|
||||
c86e707d1bebc6f85d38c8a8880da6d1bf680962b0525bb8139faaee5bd6362f agents/magica/work/queue-285/gate-r4-collect/business/plugin-settings.test.mjs.log
|
||||
e7fb4dd9710d361085db973ccc97330dcfba1b86bcb6d55e52b564616c080bd2 agents/magica/work/queue-285/gate-r4-collect/business/project-repo.test.mjs.log
|
||||
d98131db3b9b5cb3bc979b32d3bbf24fee19ca9482e325f7050f54d038d140dc agents/magica/work/queue-285/gate-r4-collect/business/project.test.mjs.log
|
||||
a4cba850b77200e3296d334a09af1a5a207a2288051912ece24aae2c10f6a336 agents/magica/work/queue-285/gate-r4-collect/business/record-grants.test.mjs.log
|
||||
7c81d5572512fa280e93057fa041b9742bba2f1c97051877417b74dd3cf70133 agents/magica/work/queue-285/gate-r4-collect/business/reply-limits.test.mjs.log
|
||||
539c4b5670c98fe51a07206bf9f562a04e0d0901f6e388f776af9ad167c8361a agents/magica/work/queue-285/gate-r4-collect/business/resolve.test.mjs.log
|
||||
54e0dd6196bdd623cb6cd1844ad549dca66057e9589a456969d377d6540085f6 agents/magica/work/queue-285/gate-r4-collect/business/role.test.mjs.log
|
||||
0450efbd5b6a8bd9ef705483192bfedb2a08f7ad19eb46090733a1173cde6a24 agents/magica/work/queue-285/gate-r4-collect/business/spec-review-contracts.test.mjs.log
|
||||
d5e0d0449238302ea3a95319f69c3d37f61cd94f20d40d3efddd18383d9406fd agents/magica/work/queue-285/gate-r4-collect/business/token-limit-settings.test.mjs.log
|
||||
51d8b6630c129de6a8035e227f8d052d7c54eee3d7fa9f96d6270203ad87fe6e agents/magica/work/queue-285/gate-r4-collect/business/vars.test.mjs.log
|
||||
dd25c40cf658bf86576e140cf6aadf6bda3696bda9c10b865d8dba3097248d00 agents/magica/work/queue-285/gate-r4-collect/business/workflow-roles.test.mjs.log
|
||||
b4be27463c5653da49629c821442e4a02ecf8ea74ee967266e8a2de5b9881a8d agents/magica/work/queue-285/gate-r4-collect/cli/access-boot.test.mjs.log
|
||||
768a88f82948d2d76182aec41494317bf61a7770d032a877a83f6e68d2977e85 agents/magica/work/queue-285/gate-r4-collect/cli/access.test.mjs.log
|
||||
a268078c5ee7f87f2f400fcfb8c9a8ae23b49ea0cfcd12d24efe1ec653584ce9 agents/magica/work/queue-285/gate-r4-collect/cli/app.test.mjs.log
|
||||
cc991467a77653bf782d616c280b28e08ddb424b20b9e69b10dbc5f3467a3942 agents/magica/work/queue-285/gate-r4-collect/cli/boot-status.test.mjs.log
|
||||
528f527ed6105aaf0372cd1cfba922d686ecc726c9d814dc2855d68e3356a63f agents/magica/work/queue-285/gate-r4-collect/cli/case1-accept.test.mjs.log
|
||||
2184872af36f4d4d556fa5252c5673671e703d38b9e8ea6b68a61067d98c4061 agents/magica/work/queue-285/gate-r4-collect/cli/case1-hostcheck.test.mjs.log
|
||||
31402532c82a1e31f66ab137cd117b59b8e1166c6708804440b33ef1ba1ead6c agents/magica/work/queue-285/gate-r4-collect/cli/case2-install.test.mjs.log
|
||||
da8937a055a90db43f1eb771d365de8ff884ef210e91ea1715ad2299ac37ae7d agents/magica/work/queue-285/gate-r4-collect/cli/case2-persona-import.test.mjs.log
|
||||
28d10077a22416c76dd0fb28d0f53fc083f5db6304e2a850ee1f8d67803a77ba agents/magica/work/queue-285/gate-r4-collect/cli/case2-unit.test.mjs.log
|
||||
78aebd2ab2a1da7e91e1f5fef1ebdfcd7afb35c610b7267e47780f6044dc0007 agents/magica/work/queue-285/gate-r4-collect/cli/channel-cli.test.mjs.log
|
||||
0f95569b928113808fe17a1ef454089e1f54a60c2b989ffc6aa3b488af7dbc5f agents/magica/work/queue-285/gate-r4-collect/cli/channel-recovery.test.mjs.log
|
||||
9e45e456034e6a5be057e6bf12e6ec75285ef5148b094b110d58e764408e782e agents/magica/work/queue-285/gate-r4-collect/cli/cli.test.mjs.log
|
||||
360bf318d489eb1cc37bcfbf8ac6ac4b20de57d614bf01142b76ae2975e0b791 agents/magica/work/queue-285/gate-r4-collect/cli/compactions-launch.test.mjs.log
|
||||
24a61025c7d3e21f3cf866a2a14bb15126d5680195f4ca1090db8276f627ac92 agents/magica/work/queue-285/gate-r4-collect/cli/config.test.mjs.log
|
||||
707bccbbb18e65268f228f61826f941fc70626510a5029afdc61bacbbc3a17c8 agents/magica/work/queue-285/gate-r4-collect/cli/credentials.test.mjs.log
|
||||
910f78059e8e1decbce7e7e9c49da8448f9a3b6ccd74b3dc6e3a68d415a7c50c agents/magica/work/queue-285/gate-r4-collect/cli/federation-acceptance.test.mjs.log
|
||||
d6ca83ef205b7ac02468c5bcfa798b6d648e6b7add6f658fa8afdc28fae69783 agents/magica/work/queue-285/gate-r4-collect/cli/follow.test.mjs.log
|
||||
b0b160f368149b4b097251034326ab0e6b6ad296a43fb56fbf567e493d3998f4 agents/magica/work/queue-285/gate-r4-collect/cli/format.test.mjs.log
|
||||
5c6e3d102f06cf1b97366c6ee9fed45fecd1ec08ab60e39dbcb546cdf0c3c3ab agents/magica/work/queue-285/gate-r4-collect/cli/gate-lane-auth.test.mjs.log
|
||||
77b29c852415910b7dd83e60b2c9fe27f884998901fd5a3adad126272b3606c1 agents/magica/work/queue-285/gate-r4-collect/cli/gate-lane-fixtures.test.mjs.log
|
||||
c91fc678ad0fadacdfc62e35846c16565a9154562c0c9aab76e22a9c83072987 agents/magica/work/queue-285/gate-r4-collect/cli/gate-lane-image.test.mjs.log
|
||||
21e328979c43384917512acb1b323542eef06540e6bde64b622832f846550860 agents/magica/work/queue-285/gate-r4-collect/cli/gate-lane-state.test.mjs.log
|
||||
43f4df9710c21137fd4abb55147d2b53c0e1d0e810c5c04728526a62985bc69c agents/magica/work/queue-285/gate-r4-collect/cli/gate-lane.test.mjs.log
|
||||
10034128e981729899d46c70856d653be4320718617daa5e59855165aa96b113 agents/magica/work/queue-285/gate-r4-collect/cli/git-socket.test.mjs.log
|
||||
5ad1c86535d914fbce7b2f79cb4a96cf3b20d229e0160ba028913f4da33c55bd agents/magica/work/queue-285/gate-r4-collect/cli/grants-scope.test.mjs.log
|
||||
363d69e61d5ff516f2669957900872d0275ca98560fe59a46e3e5e61c25e3baf agents/magica/work/queue-285/gate-r4-collect/cli/grants.test.mjs.log
|
||||
d69177952c1f90a61c6299b304c0c3a780773b136337085be55880522a4cbb6f agents/magica/work/queue-285/gate-r4-collect/cli/host.test.mjs.log
|
||||
a0a4b0630e0b9388b2e7c7e73f09470833226265c1ca0bf0c2daf7541baea951 agents/magica/work/queue-285/gate-r4-collect/cli/hosts.test.mjs.log
|
||||
036d5f4c6a6299902beb1083c99fae9b361cf8acd30c2c9c15f93181df4c75b0 agents/magica/work/queue-285/gate-r4-collect/cli/idle-stop-race.test.mjs.log
|
||||
4e3fddb5e5ef7de7049e88330972f158d1fce415f78b9026c4cd8d094f0c9492 agents/magica/work/queue-285/gate-r4-collect/cli/instances.test.mjs.log
|
||||
83cf17a9637567e8cb2af8b21291a4a8b7b080a81b25e8b28d96c3a41f3e6ba2 agents/magica/work/queue-285/gate-r4-collect/cli/launch-account.test.mjs.log
|
||||
d88d6a4829deabca9a3684d05b8e9735b289a58250530d77b309bfb97de8cc7b agents/magica/work/queue-285/gate-r4-collect/cli/launch-limit-checks.test.mjs.log
|
||||
d2de3f30d7c8828efefde07abdec219ccc866a21b25bc387c1fb6d03ae344cf3 agents/magica/work/queue-285/gate-r4-collect/cli/launch-limits.test.mjs.log
|
||||
d82afe4c2c5ed778b320e054db060167a81f4ba2dd45fec55c0a0d1bd861b537 agents/magica/work/queue-285/gate-r4-collect/cli/launch-routes.test.mjs.log
|
||||
aaacba374d85eca642f7c68af3de30c301384010974bc19952116622d8153e47 agents/magica/work/queue-285/gate-r4-collect/cli/launcher.test.mjs.log
|
||||
52e42ebae861e21ddff31248e92139116dbc0065cf29de2d617491b592566dd4 agents/magica/work/queue-285/gate-r4-collect/cli/lifecycle.test.mjs.log
|
||||
0fef5a4632857240742d4706dcc69fe8be43ab79ae9ec5f1181b101ce1f7627c agents/magica/work/queue-285/gate-r4-collect/cli/limits-tokens.test.mjs.log
|
||||
a604a407a7db3bc61f52beb6e1b6502276c239e57b0bee34a5da908362d452eb agents/magica/work/queue-285/gate-r4-collect/cli/limits.test.mjs.log
|
||||
65a5e1dbdbf8a5520509ae7c38183cc7652d93b6994ac54faf8e161cfe4ab0a3 agents/magica/work/queue-285/gate-r4-collect/cli/mark-read.test.mjs.log
|
||||
427ba220891cedd53d92caaeb984486d47a142a548c34216e6538102550b68a2 agents/magica/work/queue-285/gate-r4-collect/cli/names.test.mjs.log
|
||||
7b2c5aee04ba1843f5a78da2f885667d9ac8d6ea1a0d058eaeed703533ec9ce7 agents/magica/work/queue-285/gate-r4-collect/cli/notifier.test.mjs.log
|
||||
a379554c780ddd856366796553a8d2157969ade446336e6df6cd40e7aaf872d2 agents/magica/work/queue-285/gate-r4-collect/cli/optional-tracker.test.mjs.log
|
||||
45026d17870fec06e7c7d28d9c79407185d381db867425c6824b9578bc242bad agents/magica/work/queue-285/gate-r4-collect/cli/other-tree.test.mjs.log
|
||||
3dfbe2910da3ddea011a832fdac4269f09d54bbc355c48c686b82e29a350ca61 agents/magica/work/queue-285/gate-r4-collect/cli/processing-cli.test.mjs.log
|
||||
51c4a6b7f5ecda868ac65f5a9fc70cceae49cf37f1e41067dafb4ee835dc33a0 agents/magica/work/queue-285/gate-r4-collect/cli/project-name-repo.test.mjs.log
|
||||
76a8ab69e0192cf4c470e6b9f732e0d1c976215fb911330b001239919fc4c537 agents/magica/work/queue-285/gate-r4-collect/cli/project.test.mjs.log
|
||||
37f0035612ed5d42f5666bcbcc4c78688cc0c8d89cfaad33bcadf6f077048e94 agents/magica/work/queue-285/gate-r4-collect/cli/publish-socket.test.mjs.log
|
||||
c0af95393e817444d392da8ae69f42a9084ec48b6d748107e2c6f4b119c6c7db agents/magica/work/queue-285/gate-r4-collect/cli/reply-limits.test.mjs.log
|
||||
53d4891759dbbc32794b5ba2550dba2e3132c87ae1c719975a70cd4fc28e0253 agents/magica/work/queue-285/gate-r4-collect/cli/revoke-window.test.mjs.log
|
||||
1793b0b6539a775466b39fddb1d6033b1408975b7cba792ceb53c5f49f5339f8 agents/magica/work/queue-285/gate-r4-collect/cli/session-clear.test.mjs.log
|
||||
42bd370609f2be03af2b92af3151a95316a05a45b3ab075ea36e3c77629223b2 agents/magica/work/queue-285/gate-r4-collect/cli/session-cli.test.mjs.log
|
||||
98940f194f73641faf9639f86500a41eff0ff262601be2ad658691ade0b63557 agents/magica/work/queue-285/gate-r4-collect/cli/session-launch.test.mjs.log
|
||||
850d362199c1be564a06835a74a438aa71377d4496e62d86b3f0c8a22a198d3e agents/magica/work/queue-285/gate-r4-collect/cli/stack-copy.test.mjs.log
|
||||
786305fccb1cb9d9f2e773d0eeef9304435e8a7c681963a4a2d7eca3c0c66c75 agents/magica/work/queue-285/gate-r4-collect/cli/stack-instances.test.mjs.log
|
||||
7c817a07aa3f244f768902a5b2f8dcec4af45129f30ee1e3c3ee285fbafa7ef9 agents/magica/work/queue-285/gate-r4-collect/cli/stack-release-external.test.mjs.log
|
||||
83a2b2ce6c77cf73212b8cedcd4ce508925f9ab8a0e868a946fd3714bc9861dd agents/magica/work/queue-285/gate-r4-collect/cli/stack-release.test.mjs.log
|
||||
54446e68e53fa8b5d6f5c4849e0e56c236968eb8a770bdeaffcbe1783ea4ac77 agents/magica/work/queue-285/gate-r4-collect/cli/stack-release.test.mjs.retry-1800.log
|
||||
f44942236a588133d842f5e383f55fc715bc8ab3671a1340b07cdb32a495efad agents/magica/work/queue-285/gate-r4-collect/cli/stack-upgrade.test.mjs.log
|
||||
d104f4b4d74a4a274199a3a9f8bd238527fd0ff72f4cc6b03cbe4281b0736603 agents/magica/work/queue-285/gate-r4-collect/cli/tester-http.test.mjs.log
|
||||
9e4a14522f8167c2fac591b4f96684845a6e23d6ae55e20ea44c19e298e2566d agents/magica/work/queue-285/gate-r4-collect/cli/tester-reads.test.mjs.log
|
||||
1b5ccdbd6de9d6f88daecac4dc8659c9e8a2311a845f73425e3e9c1a1f4ce950 agents/magica/work/queue-285/gate-r4-collect/cli/tester-threads.test.mjs.log
|
||||
5f535f7468fb0809ffd30cbb0fe20b75152e82af29ecddaf3ae1779cfecb7f62 agents/magica/work/queue-285/gate-r4-collect/cli/tester.test.mjs.log
|
||||
907852840e76c6b8c81fc4aa833fa6900b6e0d210c0b612c07b5af0d36ed660f agents/magica/work/queue-285/gate-r4-collect/cli/thread-cli.test.mjs.log
|
||||
7f0a077e6d5d17b0383e8c3c9d04e015a7c25343a18220e51a733d805e945517 agents/magica/work/queue-285/gate-r4-collect/cli/thread-launch.test.mjs.log
|
||||
a7daf576845ad39e046a82990fb8e42e3c85503e6f530f05cd2e45a2c4a29ce5 agents/magica/work/queue-285/gate-r4-collect/cli/thread-revoke.test.mjs.log
|
||||
2f5d3d7b5eb6f8bf8e6c5ec0de7d98aa8ffe79fc80a58bbf391845aa4f73b182 agents/magica/work/queue-285/gate-r4-collect/cli/trackers-boot.test.mjs.log
|
||||
8200087293e60921637ac53df14b5bdaefb4b30008aa7d651741bc046f0e6003 agents/magica/work/queue-285/gate-r4-collect/cli/transport.test.mjs.log
|
||||
f1012726dc436c14ec4ad72ea41b28ac5a6ad0f3922389d14126a43374542c4c agents/magica/work/queue-285/gate-r4-collect/cli/usage.test.mjs.log
|
||||
8c75100a9cd8fd241e69e52d90049a20ab4f0ad2b189c0a0f5c6b2a169583666 agents/magica/work/queue-285/gate-r4-collect/cli/verbs.test.mjs.log
|
||||
4972c0195ce08eb554e3736ac10081126cc0bb19332ef6b7e703de37e839cbec agents/magica/work/queue-285/gate-r4-collect/harness/bundle.test.mjs.log
|
||||
600df22ea815da657be5fcd53ebaeef5088816c6905a52102ce5137361348abf agents/magica/work/queue-285/gate-r4-collect/harness/citation-runner.test.mjs.log
|
||||
91444028fa1482db88037dfa8cb739ceffe29df826d498123a2b643585774ff2 agents/magica/work/queue-285/gate-r4-collect/harness/claude-gate.test.mjs.log
|
||||
7fcf1ee724aaffd9eab682762ac8102c7df1d626fdfb5c2b3e47548697737de2 agents/magica/work/queue-285/gate-r4-collect/harness/claude-session.test.mjs.log
|
||||
afac0949e828bb08cb1aa984aac2e580e15ab2616998a3f29e4fc277bc3089a2 agents/magica/work/queue-285/gate-r4-collect/harness/creative.test.mjs.log
|
||||
c84e27a484ce925eeb813f6b631ecc4da0110df979f421dcb8890ced713793a2 agents/magica/work/queue-285/gate-r4-collect/harness/gate.test.mjs.log
|
||||
876efa4f8a84fb8b2e9daf19f59d27335ddae2b0745a8a317c42a3edb1da35a6 agents/magica/work/queue-285/gate-r4-collect/harness/git-tools.test.mjs.log
|
||||
72f34110bf46fdb5201e47d53bacad0942223c4dfe2ea915cbd4883435d4b03f agents/magica/work/queue-285/gate-r4-collect/harness/mcp-server.test.mjs.log
|
||||
c141676f400e03231187ee5356316d0d001de44ba0192ebc9d4cd88826148bcd agents/magica/work/queue-285/gate-r4-collect/harness/pi-session.test.mjs.log
|
||||
d835218873ae2c8b310f6b892af9ba8a64911b52167a9b25404393fdaa534fb2 agents/magica/work/queue-285/gate-r4-collect/harness/raise-domain.test.mjs.log
|
||||
8ca027206a44c5ff110e050259ba855797e7b66903e7657af5dc4ff4189af426 agents/magica/work/queue-285/gate-r4-collect/harness/runner.test.mjs.log
|
||||
e4ca5a9da218acc3bcf49f43f1e332760e21c81cf142f98f0e097f3d2a396327 agents/magica/work/queue-285/gate-r4-collect/harness/skills.test.mjs.log
|
||||
2b2a2c7ca6b2c350e157e5fb6a8ee53e1c4cc6e3a14f612cec4c1ab476af5db1 agents/magica/work/queue-285/gate-r4-collect/harness/spec-tools.test.mjs.log
|
||||
95427d61ca4ddaf19a7dce32383b79cb9c58a633bba6216666742ea47d9f061a agents/magica/work/queue-285/gate-r4-collect/harness/tools.test.mjs.log
|
||||
862418d3d4124871ca5fcaf35e16c318a04e2888da83836751ddfea110efeb06 agents/magica/work/queue-285/gate-r4-collect/npm-root.log
|
||||
5e2ca9088e90b2c747857ece26227b7eae41e7a49f763609ffe0885a36af2d56 agents/magica/work/queue-285/gate-r4-collect/npm-webui.log
|
||||
9776d535c680428e0f987a475323847ca908bc6127d029b0a8e15c26e869c7b1 agents/magica/work/queue-285/gate-r4-collect/plugins/channel.test.mjs.log
|
||||
828a48e2ff1243b4090a56c25e79d649ee935444480bcb77586d516dc5636ff5 agents/magica/work/queue-285/gate-r4-collect/plugins/daily-quota.test.mjs.log
|
||||
5bc1239dc7fb1108f4736fb1e89666b7e1189a961b365f7d4f1d9125469536ca agents/magica/work/queue-285/gate-r4-collect/plugins/harness-compactions.test.mjs.log
|
||||
fa038b8712570534664d7c432b677783a116fbf3b831a339f6fef7bdba9e8327 agents/magica/work/queue-285/gate-r4-collect/plugins/harness.test.mjs.log
|
||||
d40b40a54da7880fe00c391424002bcda59bdd0736509e3eb21a713d6b3f15e4 agents/magica/work/queue-285/gate-r4-collect/plugins/kinds.test.mjs.log
|
||||
d5dd47b47c0caf779f6a6c613cb0f75505caf637f8783331be6e05b19eff1d4f agents/magica/work/queue-285/gate-r4-collect/plugins/loader.test.mjs.log
|
||||
14b4585ca060ee626774c0479dbb3396baeca21e35496a1fab16cd86e9b8629f agents/magica/work/queue-285/gate-r4-collect/plugins/searxng.test.mjs.log
|
||||
eb0a6fa9d0656c931e328a2b2c3912d4148bd57921465e6757244c5c60d19ee2 agents/magica/work/queue-285/gate-r4-collect/plugins/token-limit.test.mjs.log
|
||||
19af7c28d8b7b924dcad3b87da6de3fb4cc064f01888c135be7c9749258d7907 agents/magica/work/queue-285/gate-r4-collect/plugins/transcript.test.mjs.log
|
||||
03edcf0e40935352060367941e115651c5b933232316bdc3657c42a9ff071a3b agents/magica/work/queue-285/gate-r4-collect/run-rest.py
|
||||
a0dff63b1054c79f044fbb5a6358262a896a6dae69859240a916ba92f1807e92 agents/magica/work/queue-285/gate-r4-collect/run-suites.py
|
||||
6ec98328166bf50e020c586992d70fa4330033bdc5e9e130f23139bf8e3f5f17 agents/magica/work/queue-285/gate-r4-collect/runs.txt
|
||||
132164715f840d4fa23c4ee9b55ed9269ee5d511e9487f35756556ec5374efc7 agents/magica/work/queue-285/gate-r4-collect/script-runs.txt
|
||||
f91fc95a173339137f981e24fbf630acfde957e32c3cd71e28304532083c6a77 agents/magica/work/queue-285/gate-r4-collect/scripts/test-auth.sh.log
|
||||
25579ce07a27584d2b55fe58031f2527b10e32a4e6106c70e909064315cc70b2 agents/magica/work/queue-285/gate-r4-collect/scripts/test-conductor.sh.log
|
||||
92ea8ce5e66d892fefacc76b87d140bcfb8c5a51dc77bdf4a47a6213ac5d2898 agents/magica/work/queue-285/gate-r4-collect/scripts/test-config.sh.log
|
||||
9b482b7a3f0672c872923c06e71d5a88ff085a08170905a6cabe1d2b6fc283b6 agents/magica/work/queue-285/gate-r4-collect/scripts/test-discord.sh.log
|
||||
41f517ff790f198088269aa15674bc45c70b8726230c30e4b87453003576ce7e agents/magica/work/queue-285/gate-r4-collect/scripts/test-extension-package.sh.log
|
||||
74a26505e01fe1077318d2b8ed7271a4448dc155924955ae905365ac68652af5 agents/magica/work/queue-285/gate-r4-collect/scripts/test-federation-acceptance.sh.log
|
||||
83dfaa21c4e4ad941088efab3f69e87ebd2f6bd3cc72ede938e21dc06da8a34f agents/magica/work/queue-285/gate-r4-collect/scripts/test-foundation.sh.log
|
||||
3e2f8024027592e77790db2bbe039803060915ebf37c7b67f04071a7e83d20dc agents/magica/work/queue-285/gate-r4-collect/scripts/test-land-work.sh.log
|
||||
5d9a170308927264d212e3dd00e87463a21d55811cf9b4cb51dce74d6a10fea5 agents/magica/work/queue-285/gate-r4-collect/scripts/test-push-check.sh.log
|
||||
e95247a7751aa13b204ef92deaf4d51e3ece71671296c045a50efac53088f99e agents/magica/work/queue-285/gate-r4-collect/scripts/test-queue.sh.log
|
||||
9f9dd11e2631a24ad55aaf7becc61965c592b00da08a4e72b98e0384d3a13ec7 agents/magica/work/queue-285/gate-r4-collect/scripts/test-release.sh.log
|
||||
a065947f07d70a4721b423da597968630bc8ec1659db14681af42bb3f974077d agents/magica/work/queue-285/gate-r4-collect/scripts/test-task.sh.log
|
||||
dddc2cfa2a4b9654ca12379fcc40c36163dbd5dad8ce330de8aa53fc50fbc10c agents/magica/work/queue-285/gate-r4-collect/stack-release-retry.txt
|
||||
5a598a778fb3923f4f880713065a48a5bd9eb68bbcaa1b95726be13eb307657a agents/magica/work/queue-285/gate-r4-collect/tmpdir.txt
|
||||
4c49e5314e4f2f1fc17f35dd8c69fb564056369c6a98d30abc4ac0b92d7797b2 agents/magica/work/queue-285/gate-r4-collect/webui/agents-browser.test.mjs.log
|
||||
4e7ff30470ade9149aacb11f38897ea5bfe7a128ff450b9cf0d2a8273aa75cff agents/magica/work/queue-285/gate-r4-collect/webui/agents.test.mjs.log
|
||||
bbf23042513467815079d91eb2debec7cbbd05a73d7b52807ac56efefdb0145a agents/magica/work/queue-285/gate-r4-collect/webui/assistant.test.mjs.log
|
||||
a174f230f76bc762e7227c14bb8455930628068304258e11bcc1bbbb646b5925 agents/magica/work/queue-285/gate-r4-collect/webui/board-held.test.mjs.log
|
||||
9b776f1ba1294697647a793b1f29f24468fdde3abda6a10ceefa57cf33ff233d agents/magica/work/queue-285/gate-r4-collect/webui/browser-edge.test.mjs.log
|
||||
e5aec8e2d4ea3ab650bbee5924cf2b12ada7e786e3b4abc186c375352f3c0af7 agents/magica/work/queue-285/gate-r4-collect/webui/browser.test.mjs.log
|
||||
14877988b1e7bdfe0fd1ef32773a51a5fd0661fe10d3fa6fc3fd9482ee84ddbc agents/magica/work/queue-285/gate-r4-collect/webui/bus-browser.test.mjs.log
|
||||
b3427c15ec89a2b8f6a6502e5b410120163e3260f962146e424cd9b43d56c109 agents/magica/work/queue-285/gate-r4-collect/webui/bus.test.mjs.log
|
||||
5ac2d8a442d2ab10797e6bec1e8670cf23d6eab27bd8f4ce07c6ae4a6c7bb765 agents/magica/work/queue-285/gate-r4-collect/webui/channel-chat.test.mjs.log
|
||||
beb26c0da4fe44b1eabff789769f16d8c391a77de19bcf38bee648318bf112c2 agents/magica/work/queue-285/gate-r4-collect/webui/chat-browser.test.mjs.log
|
||||
bf31d466870a43b167ac87f80b95a4aec1885235db5323d8e1b5c2b2d594ddf2 agents/magica/work/queue-285/gate-r4-collect/webui/chat-instances.test.mjs.log
|
||||
deb2909ebb17cebd7dfff0718be92045c07183e40243747c9b76bee2f2b0f1c2 agents/magica/work/queue-285/gate-r4-collect/webui/chat-sessions-access.test.mjs.log
|
||||
7fe605ae35d0ebac58bc778709db8e4357003274d2e989e64b6ecb1eb915ba10 agents/magica/work/queue-285/gate-r4-collect/webui/chat.test.mjs.log
|
||||
60fffdabfb3fbc296896e8a9c5f9fd43ec1416d402b30ae63f325b7893129b21 agents/magica/work/queue-285/gate-r4-collect/webui/conversation.test.mjs.log
|
||||
8e7cc112e62ab79e7592c536c7f2761634f43e87b6d4dc157cd667138829e15d agents/magica/work/queue-285/gate-r4-collect/webui/decide-browser.test.mjs.log
|
||||
bf6a2adfd07fa1db2f81c90696d975fa272527dc764dd6b5ad3b14c68fa47167 agents/magica/work/queue-285/gate-r4-collect/webui/decide-sso.test.mjs.log
|
||||
3082cb0c69c2b4f12ce78f282a946c15a010638d3b8057710f275847ac59ee69 agents/magica/work/queue-285/gate-r4-collect/webui/decision-http.test.mjs.log
|
||||
27ee7ebe4ff342a0e6015d3b0e4e7f3f1b6f84548657a1097bd673b58bd0d509 agents/magica/work/queue-285/gate-r4-collect/webui/discord.test.mjs.log
|
||||
d088c64c7da3bbf308dae6cd1e0771290b9eec01421097cec5d274042ff4818d agents/magica/work/queue-285/gate-r4-collect/webui/docs-browser.test.mjs.log
|
||||
616de36be38f08d81b43f7c6614a73793533a15785f21d8161597ec55f110a81 agents/magica/work/queue-285/gate-r4-collect/webui/editor-browser.test.mjs.log
|
||||
b4db8a01d5bc5f95a2df8e6d0a60515f7caa13b3134ac18d579f89066e56ab44 agents/magica/work/queue-285/gate-r4-collect/webui/editor-provenance.test.mjs.log
|
||||
31c1e95d6d063d3fc32b5a1fae7b0ec8de50f931b19e9f2a5d28450a086f9fdd agents/magica/work/queue-285/gate-r4-collect/webui/editor.test.mjs.log
|
||||
f7b8d686e6c982520ece1356901665eb3321623d6accac61fe45318feb98a46c agents/magica/work/queue-285/gate-r4-collect/webui/granted-user.test.mjs.log
|
||||
a609775cfc639b76587d3fc638f663621fa6aa27609fcd08b3970d4590d24efc agents/magica/work/queue-285/gate-r4-collect/webui/history-return-flow.test.mjs.log
|
||||
965d42a45be659b01280b2fb9c0b369106463fa062fe2a3243492a5aa77834fb agents/magica/work/queue-285/gate-r4-collect/webui/instances-browser.test.mjs.log
|
||||
26874568a0dc303d3cea58e3afb0253f96761d4106839a80e3f7954b8c13309a agents/magica/work/queue-285/gate-r4-collect/webui/instances.test.mjs.log
|
||||
f894e396adaf78f4bc4cc9a329a6776d19d0ac3789a3ee34101deae65b9caf00 agents/magica/work/queue-285/gate-r4-collect/webui/library-cli.test.mjs.log
|
||||
61d36b0ba239d8a4121d76516f27e3b71bda542b5b84ee1b042bbb0873a3a0b6 agents/magica/work/queue-285/gate-r4-collect/webui/library-status.test.mjs.log
|
||||
c0d99011fea775a9dd9665a32d3f52e8726f7a44076e69fccd53d84ecf9ec904 agents/magica/work/queue-285/gate-r4-collect/webui/limits-browser.test.mjs.log
|
||||
ee3db4235dfe7278601af17d3fb55ab4adb96e436d263a1b29b9fbf8a88600ec agents/magica/work/queue-285/gate-r4-collect/webui/limits-route.test.mjs.log
|
||||
c6b5980721c3b930928bab3d19e2a8074056f2fa1c7710e8161d7f0915903461 agents/magica/work/queue-285/gate-r4-collect/webui/markdown-preview.test.mjs.log
|
||||
49761952beb7c40bcbbab64ab7bce2c1eb3e2a9a774b50c12688cc0829032fe0 agents/magica/work/queue-285/gate-r4-collect/webui/messages.test.mjs.log
|
||||
1b4b045e253ea8c77743dd89aa9bc806ba4f1092532ef0717a33bc979d006d76 agents/magica/work/queue-285/gate-r4-collect/webui/pinned-copy.test.mjs.log
|
||||
5ad5a4c21d3be42e9b0c9697d6656656c4e4d13df491ef9e28ddcadaf94134b9 agents/magica/work/queue-285/gate-r4-collect/webui/preview.test.mjs.log
|
||||
82bed5d9abd8dc6ae54350075389fae21c7c3313e7d152f85be43bdf6380de43 agents/magica/work/queue-285/gate-r4-collect/webui/processing-browser.test.mjs.log
|
||||
75d0aef6d38f943af4af6e6ed5fdf60d9eebaada47fc81f69828586dc8a2bd27 agents/magica/work/queue-285/gate-r4-collect/webui/processing-ui.test.mjs.log
|
||||
baa715b9fd51a48b15ff4ce91bf61e4f87ef754617466cba82f748265f13d98b agents/magica/work/queue-285/gate-r4-collect/webui/processing.test.mjs.log
|
||||
4a0fd7e6c8fbb1c4a60adf830b99f63669a1bb90603ee5cc201a53f98a59e114 agents/magica/work/queue-285/gate-r4-collect/webui/project-file.test.mjs.log
|
||||
e9dada59fbd135a6000144675862faf7b040fdaf98a97a8435c42a6fcab4b24b agents/magica/work/queue-285/gate-r4-collect/webui/project-name-repo.test.mjs.log
|
||||
df9cb152d852c4af46fcceeefafebe5c1ca2e2a13bbb800477c391c82d7529e3 agents/magica/work/queue-285/gate-r4-collect/webui/proof-cli.test.mjs.log
|
||||
9f7b01827f1bf99754eeb6f97e88aaae1108e8585dc121a7729b1d337d17bdb9 agents/magica/work/queue-285/gate-r4-collect/webui/proof.test.mjs.log
|
||||
e2cac643cab088a3da791343795993d7554bc542eab40c6a703e052f67f6f4fe agents/magica/work/queue-285/gate-r4-collect/webui/reads.test.mjs.log
|
||||
35699bba6ff2bd11c438dd64dc9842aca0c87f6ec85fd6c8b467189fbf64032f agents/magica/work/queue-285/gate-r4-collect/webui/relaunch.test.mjs.log
|
||||
a8e4f84ee47a4b428429db5423054abc094e25d326c0c2a814d37a25984ebcb3 agents/magica/work/queue-285/gate-r4-collect/webui/return-flow.test.mjs.log
|
||||
dc79b156133650004447acaf385e55c22edf64c49944415c746e24f7c67d7e06 agents/magica/work/queue-285/gate-r4-collect/webui/routes-browser.test.mjs.log
|
||||
cc2d12dc65fef1f6ca30c959915291ddebaa722593aba9af7e30959f9dce4e99 agents/magica/work/queue-285/gate-r4-collect/webui/routes.test.mjs.log
|
||||
75f160bad77baa83c762ebba8826dc04d21fab38330d1bcdca5c055c17093753 agents/magica/work/queue-285/gate-r4-collect/webui/send-browser.test.mjs.log
|
||||
17da130008549c5addf878256fa6ed5a098e96653eedf347f40f5a875a407f5a agents/magica/work/queue-285/gate-r4-collect/webui/send.test.mjs.log
|
||||
227a040ea58ba0b1e8dd51c11d217cc82e3fbb064b28664d5975bccd0e3046aa agents/magica/work/queue-285/gate-r4-collect/webui/serve.test.mjs.log
|
||||
348cb5c96e5363b3183ef498883638a833aae1f239a2e5a511f520e84c2f282c agents/magica/work/queue-285/gate-r4-collect/webui/service.test.mjs.log
|
||||
226951cbd84f7d79bed678f24bc1051c5bb12ffe6ef15fd117331b6b5766a0ba agents/magica/work/queue-285/gate-r4-collect/webui/settings-form.test.mjs.log
|
||||
5dacec779edfdb3de375d2e048f31b8f40943a4ad14ab37c903835b74c61138a agents/magica/work/queue-285/gate-r4-collect/webui/settings-write.test.mjs.log
|
||||
93f1939404e20c10f30f14ab055fcd5cf8e94812c221c43e4fff8210db7f44f0 agents/magica/work/queue-285/gate-r4-collect/webui/shell.test.mjs.log
|
||||
7c226c910677f516cb31fea957e1c08867054446c670b0e76598c148f417bae9 agents/magica/work/queue-285/gate-r4-collect/webui/sso-browser.test.mjs.log
|
||||
460681e99510eacdd5457359da53ef713c514e37eb9e7e4bd081b5c54d1c2439 agents/magica/work/queue-285/gate-r4-collect/webui/sso.test.mjs.log
|
||||
9b804cedbbf78bc3ce7d31c6e29b3d7db144d0727ccb91a0d35b11f006e5e84a agents/magica/work/queue-285/gate-r4-collect/webui/tester-browser.test.mjs.log
|
||||
7327575ec1845331201b4fe1d2a29db409785c3da5c9ee496ae848b9a37119fd agents/magica/work/queue-285/gate-r4-collect/webui/tester-cli.test.mjs.log
|
||||
35053f6d5634051f82bf53d913e6b9bec6e54c79bda7c3b2de04db21ecd14e2d agents/magica/work/queue-285/gate-r4-collect/webui/tester-listener.test.mjs.log
|
||||
536e46d9f2f375d34a82c421d2722a9c5fdf32736c792c91b3f182d30f410472 agents/magica/work/queue-285/gate-r4-collect/webui/tester-socket.test.mjs.log
|
||||
9ced49dc7cfc4fd5859752e602996e9d007ecc9faecad87db5d7ffed7388abd1 agents/magica/work/queue-285/gate-r4-collect/webui/thread-claims-browser.test.mjs.log
|
||||
6e734711048f441c440ef2812fbf4c35401f9381ff325da5109b89208d0aaaaf agents/magica/work/queue-285/gate-r4-collect/webui/thread-claims.test.mjs.log
|
||||
22c4cb305abf2c349490f5f613ba43060f9cc537ff37c5e17438454389930dfb agents/magica/work/queue-285/gate-r4-collect/webui/thread-sharing.test.mjs.log
|
||||
399fcd57f19c70329f36195e3657a86701929b9d7b02151e8c78c76e6913bfd8 agents/magica/work/queue-285/gate-r4-collect/webui/usage-browser.test.mjs.log
|
||||
d5687942fd8a1f3d7cf7b7b7de6ac61b6d4c41b059d7a99628dc4fdcf67aba6c agents/magica/work/queue-285/gate-r4-collect/webui/usage.test.mjs.log
|
||||
fc62af04182d9b08e3fc3d66b985cae35f84f38ab70655833e856292601b6cbc agents/magica/work/queue-285/gate-r4-collect/webui/user-option-swap.test.mjs.log
|
||||
1083df786265d2f12d81eda55bc6093e6c33e0cf6dc99347dee363f232c6e27e agents/magica/work/queue-285/gate-r4-collect/webui/views.test.mjs.log
|
||||
f32fac302f88456e432d7a7ef8d501bf4f828c898e9d08bd2661f4a082fce200 agents/magica/work/queue-285/gate-r4-final/FINAL-COUNTS.txt
|
||||
7fbcc5422aaa64a9b4dccbb326d5575df71ac7916a7c9162afb5aa715e0f2c3f agents/magica/work/queue-285/gate-r4-final/bus/access-revoke.test.mjs.log
|
||||
01f8025de7d2f250e2d5f155ddd0d8a774e378763d94c17ec07d522a1519b20c agents/magica/work/queue-285/gate-r4-final/bus/account-migration.test.mjs.log
|
||||
584387359aca990ff756646b8d4a36ff401ff0249d451421ae3b04c4941109b9 agents/magica/work/queue-285/gate-r4-final/bus/address.test.mjs.log
|
||||
125f0a6e7ec07b065224336cc84a84f99149f730d0ade10dc71ebf5e4b9811e8 agents/magica/work/queue-285/gate-r4-final/bus/agents.test.mjs.log
|
||||
77c2f80f6b4e43f29c85dc68790dfd86f5db0e2d818494e83710b8c38970e9d0 agents/magica/work/queue-285/gate-r4-final/bus/approval-binding.test.mjs.log
|
||||
f6b71a3bdab941998178f08fead850fac6f45fa556a12db399c77d061872b672 agents/magica/work/queue-285/gate-r4-final/bus/broker.test.mjs.log
|
||||
e2377c7ca0aee4ad898849eb776cd8eb589526a8fb8d60d4acb71d1711b2b9bd agents/magica/work/queue-285/gate-r4-final/bus/business.test.mjs.log
|
||||
630eb8ba4fafb0ab5f95b5ef623eb3b011f48f8782922e440fd2d7eee708e744 agents/magica/work/queue-285/gate-r4-final/bus/channel-proof.test.mjs.log
|
||||
c50bc107c908b285f179e9b143f4e80eaf9cc0724d18779dde9fdabf7d9170fc agents/magica/work/queue-285/gate-r4-final/bus/chief-of-staff.test.mjs.log
|
||||
314a2b8b8c91acb53aecc2b3274ae6e5690fc0f07721a96525154ec3978c5038 agents/magica/work/queue-285/gate-r4-final/bus/citation-availability.test.mjs.log
|
||||
3686290550fbbc7dcd020a0a1f73a8c9f6426df767875ca9c62994d19505b651 agents/magica/work/queue-285/gate-r4-final/bus/citation-guard.test.mjs.log
|
||||
54b874193dd4c3cc6b36f1978385668a43c0b5a0fa58e0dd71f768bd61caf1bc agents/magica/work/queue-285/gate-r4-final/bus/citation-runtime.test.mjs.log
|
||||
be0d8470222d9116b7ceaa598a75988067d32d73f9dfbc7fcd0d896c5bb4e5b9 agents/magica/work/queue-285/gate-r4-final/bus/comment-cursors.test.mjs.log
|
||||
88e13b72f7ad0afcfd8eb28788793e745a93ee2aa67cdc9dcf951c1f763ec0c4 agents/magica/work/queue-285/gate-r4-final/bus/comment-migration.test.mjs.log
|
||||
7f2683ee6004219a0f03d6238933ef030223b9c3e15375bd25ae60f3a8cef26f agents/magica/work/queue-285/gate-r4-final/bus/console-decide.test.mjs.log
|
||||
8a94840b084b52a483174c39fbc0246b4f5eab010aaf05982c9cfea1fdd9f9b2 agents/magica/work/queue-285/gate-r4-final/bus/creative.test.mjs.log
|
||||
cca2741622e11e59f4d5a1bad5f070511c775033b0c53052bf647e6e6d5249c0 agents/magica/work/queue-285/gate-r4-final/bus/credential-claim.test.mjs.log
|
||||
81128c7cd52b059b4ac872b5c88c089f58e3b464dcdd19ab5a2178a1afb9f9fe agents/magica/work/queue-285/gate-r4-final/bus/credential-status.test.mjs.log
|
||||
3a2530a7cf3a45ddf7e6bc8ca1da86b51c278b98974e00ce85fb51542629ef7a agents/magica/work/queue-285/gate-r4-final/bus/credential-store.test.mjs.log
|
||||
f35239fd716b12762f3f64307044a032d283ee0d4e06105daa52d6b8ce39e6c2 agents/magica/work/queue-285/gate-r4-final/bus/credential-verbs.test.mjs.log
|
||||
36faea62cf044657e98634f951fc7d84992a446a48bc38cd6ee3b663eb2c3d52 agents/magica/work/queue-285/gate-r4-final/bus/credentials.test.mjs.log
|
||||
42362c6166dbde9724a13357487dcf1025c0418ff2bd3dbb678a732996dee5a7 agents/magica/work/queue-285/gate-r4-final/bus/csuite-messaging.test.mjs.log
|
||||
515676f310e5f8de8ee59058699e181744f84341bd895d538e3312c685c2300b agents/magica/work/queue-285/gate-r4-final/bus/daily-quota-runtime.test.mjs.log
|
||||
e546d55804b8cdc1e2ff20f913e6bddb97f65cdae8ec797f24f1660903987f28 agents/magica/work/queue-285/gate-r4-final/bus/decision-close.test.mjs.log
|
||||
c143c362feb567a0ff797cc626fc532fa4a701affb2dc50818200fa003754faf agents/magica/work/queue-285/gate-r4-final/bus/decision-route.test.mjs.log
|
||||
1e1506bcbc5fe95ed56e8b43a03f8cf8ab02b64692e822b562dd6a547b9e9ea4 agents/magica/work/queue-285/gate-r4-final/bus/decisions.test.mjs.log
|
||||
8d983bbcbbf2997be9525dc301d2e8a24e7bd133c602ca5ca754fcf0091c13f3 agents/magica/work/queue-285/gate-r4-final/bus/end-launch.test.mjs.log
|
||||
013b3f904af7741da91ba3e0550fc60c5387fd96161ffedd4026360be566a59a agents/magica/work/queue-285/gate-r4-final/bus/fire-revokes-grants.test.mjs.log
|
||||
87639d51c1d1e22694c59b7b603da9d1b23baf17c3e6c80c0018c857d045179e agents/magica/work/queue-285/gate-r4-final/bus/gitea-grant-docker.test.mjs.log
|
||||
650fa961ebd3e2fff69c17e31938a74d75456e2c86f32eb74e61ceada0214275 agents/magica/work/queue-285/gate-r4-final/bus/gitea-grant.test.mjs.log
|
||||
e202c6298a6e8e3a3512e88fc586a4aaf58e0767ffbb0d8e9a1dd960d34e6d4f agents/magica/work/queue-285/gate-r4-final/bus/gitea-migration.test.mjs.log
|
||||
181712d61bcf28343fcf585ae641d9d48f56310c6c5bffd7746bc8b723cbc345 agents/magica/work/queue-285/gate-r4-final/bus/grant-enroll.test.mjs.log
|
||||
344c2e1d1f952c012ca41a628d6cc341721d972314d65ec5a8df689ab412a4f6 agents/magica/work/queue-285/gate-r4-final/bus/grant-executor.test.mjs.log
|
||||
1e2c011030faf1c6e323f5003b119c4d3661ec9b6ffcb808094581bbece143eb agents/magica/work/queue-285/gate-r4-final/bus/grant-host.test.mjs.log
|
||||
169e7a59162ad4d1aa2ee9b04498ee836d85445b3141f2d79f18d387cf36f01b agents/magica/work/queue-285/gate-r4-final/bus/grant-migration.test.mjs.log
|
||||
e8d8f220f3e5c06c9b91e7edf4b8b19da1e4f83345bbd85b7c2b7d3654535536 agents/magica/work/queue-285/gate-r4-final/bus/grant-scope-runtime.test.mjs.log
|
||||
f6193c9e7c494cffe8014acef75239f7dafff9ee1054d9da31934d0177e76a8e agents/magica/work/queue-285/gate-r4-final/bus/grant-scope.test.mjs.log
|
||||
d4c00e6926997768456d5e2c604532fd064b8b96c8d30d56a2126e8f803af155 agents/magica/work/queue-285/gate-r4-final/bus/hard-waits.test.mjs.log
|
||||
56947c66c5c473f7fff875351a99c4dec7b0c53b40ed6e5d6279927772c1ed4b agents/magica/work/queue-285/gate-r4-final/bus/host-run.test.mjs.log
|
||||
89b48f344e528d4791e2140169a5c17238a88cf18645d5627e128ef4b173f462 agents/magica/work/queue-285/gate-r4-final/bus/host-tools.test.mjs.log
|
||||
d289774a4ca2adcbd63a02b236ae76f6c5a6f0c1a5232f8b6ceff0cf38f27e5b agents/magica/work/queue-285/gate-r4-final/bus/human.test.mjs.log
|
||||
737b5cec7eba5222f16b308337e1e9953f327c8280e29d777000ba580132a2f6 agents/magica/work/queue-285/gate-r4-final/bus/instances-verb.test.mjs.log
|
||||
1fdc8f57dd08839c9bdff0c3c27a9e8e36842ab4c58c96462ab009c4df1e96d5 agents/magica/work/queue-285/gate-r4-final/bus/interpreter.test.mjs.log
|
||||
1eaa31ed5052535a5feeb66b556d936610ea6fe064e65f6f7d768829e7264371 agents/magica/work/queue-285/gate-r4-final/bus/land.test.mjs.log
|
||||
b026fcc130fd66b05b3f106357341255f47710afdbae6e9571670550c3518233 agents/magica/work/queue-285/gate-r4-final/bus/launch-notice.test.mjs.log
|
||||
07321f4ad9ac2194631e8079d9a2fca242214c763eb80d8240ffe496c362d321 agents/magica/work/queue-285/gate-r4-final/bus/launcher-released.test.mjs.log
|
||||
e44056de0a30569e825bfcd57df53a6bef58763081758947cda95381895d8e3b agents/magica/work/queue-285/gate-r4-final/bus/library-sync.test.mjs.log
|
||||
e5f2a7baf52805260d438f55718c52579a5d618472a10992491a98e68d014a53 agents/magica/work/queue-285/gate-r4-final/bus/library.test.mjs.log
|
||||
a57ea3daf5391b344189595d0362f1818111a0218f6d9f22bb00dcf88b2e02b5 agents/magica/work/queue-285/gate-r4-final/bus/lifecycle-revoke.test.mjs.log
|
||||
ce6ff398a8aea0587ea68d9e086323bd02b994de20bbadc9ea9e6834fbc34ab0 agents/magica/work/queue-285/gate-r4-final/bus/lifecycle-verbs.test.mjs.log
|
||||
815d8c1052164a335dafbc4f96f94b13c59ee504622f9cf69a2800789e3ef06a agents/magica/work/queue-285/gate-r4-final/bus/limit-checks.test.mjs.log
|
||||
979d2f47c5cfd877dfa5fccf6c96b442c4a89f2e7830d95e4d4d93f2b36452ba agents/magica/work/queue-285/gate-r4-final/bus/limit-stop.test.mjs.log
|
||||
6e0989fc89827966c92ad8d365ca9b952aa2c47967f406c7e39a0a5f00d71a19 agents/magica/work/queue-285/gate-r4-final/bus/limits-runtime.test.mjs.log
|
||||
215b5e69a7bfc72dfa8baabc62952d314fe46e3bbab512274606e06c5a3313fe agents/magica/work/queue-285/gate-r4-final/bus/limits.test.mjs.log
|
||||
e60646acf02cae57656f4299bc3192030a245178726dace3542fdc2ae6dccdfe agents/magica/work/queue-285/gate-r4-final/bus/message-citation.test.mjs.log
|
||||
ae2ee45d07254563db32e2d0329dec9c460670126d0d30def4cf13494be10c9a agents/magica/work/queue-285/gate-r4-final/bus/message-filter.test.mjs.log
|
||||
daa88633e6a83e5970a65ac840608ea6b56192cf504927cd20108f5ce1e23288 agents/magica/work/queue-285/gate-r4-final/bus/messages.test.mjs.log
|
||||
fc4c4bb883f95c23a69abf03485f706e9162dd419506d825f8a8bb9250ef509b agents/magica/work/queue-285/gate-r4-final/bus/messaging.test.mjs.log
|
||||
fcbd138fc241687e2c4925e4822310f56eaffd471d42ab96c29f56f63feb7436 agents/magica/work/queue-285/gate-r4-final/bus/name-migration.test.mjs.log
|
||||
b12c8f432a7b0ff9500527925a5d87fa9e77be5702247f0f0fbf462b7dd623cc agents/magica/work/queue-285/gate-r4-final/bus/names.test.mjs.log
|
||||
3fa78959c9150dd7f42658c45eefaaec6ddc9d155875f8dd992cff63cd923dd8 agents/magica/work/queue-285/gate-r4-final/bus/peer-transport.test.mjs.log
|
||||
5054dac723654a3fa478946a6fe5ab04e51e53e6c0421917b4a50412987b5fe3 agents/magica/work/queue-285/gate-r4-final/bus/peercred.test.mjs.log
|
||||
ac5476b1714f9084041b35c65c1edfdcd142530f4688b8a87489df1cecb2eebd agents/magica/work/queue-285/gate-r4-final/bus/plugins-verb.test.mjs.log
|
||||
5e5cc59a8a94d8750a3669edab6e25f89487c5ad34836870e977f545cde7396c agents/magica/work/queue-285/gate-r4-final/bus/principal.test.mjs.log
|
||||
fe5a472dbe08b3cd445aedbf1661c627eeb62c9192c2ac9c2247285c74881023 agents/magica/work/queue-285/gate-r4-final/bus/process.test.mjs.log
|
||||
98149745574b72a66123848681bd7e08b22a934ab2787571bfd8110ac23a13f3 agents/magica/work/queue-285/gate-r4-final/bus/processing-runtime.test.mjs.log
|
||||
1aa94b85956045c985a2cbaa0442c1c010582b312fe4bc866faf48a599053dd9 agents/magica/work/queue-285/gate-r4-final/bus/processing-timeout.test.mjs.log
|
||||
b39772e500ea33ebd57b48c21137c60d04fb79fa6e6c528a9279aada4fcec2bf agents/magica/work/queue-285/gate-r4-final/bus/processing-web.test.mjs.log
|
||||
4a976a7c0dc3af6acda71c10f61c781269f65b3b8db1a7d52f4a0fa03a4925a9 agents/magica/work/queue-285/gate-r4-final/bus/processing.test.mjs.log
|
||||
3aa912af2f96507f007781c2674da0c15dd8b97f5b038afe75cad7aea698d02f agents/magica/work/queue-285/gate-r4-final/bus/project-await.test.mjs.log
|
||||
0728ebd155b5802d4dc8ddcc72b18a18a422f42ef4cef29e84fb128f2c409bd6 agents/magica/work/queue-285/gate-r4-final/bus/project-files.test.mjs.log
|
||||
c4c954e3b77be4e762b7e8b183503b191057a657c9e6b1c95390d32a16a6cd89 agents/magica/work/queue-285/gate-r4-final/bus/project-runtime.test.mjs.log
|
||||
d75203d37d67299709b87d2bb4545cfe812d67899c64f3117c4d727164ee8971 agents/magica/work/queue-285/gate-r4-final/bus/publish.test.mjs.log
|
||||
75fc7e625af4e73d359b6f1cb37ffcd995bd57c556e91fce6d1541d55b38b5e2 agents/magica/work/queue-285/gate-r4-final/bus/reload.test.mjs.log
|
||||
b6248c4aec83b1e10b135110772f9ff57793dc9487ca452fdd8725a6669d8789 agents/magica/work/queue-285/gate-r4-final/bus/replies.test.mjs.log
|
||||
d238b8e30451bb7a1f6483d98053856179b5dd9d46a512b47dcf5ada97365296 agents/magica/work/queue-285/gate-r4-final/bus/requirements.test.mjs.log
|
||||
0b0796b72dd4cc17ee74b8150d5359ee6b5c3bad940d45228863fefb6ad00012 agents/magica/work/queue-285/gate-r4-final/bus/review.test.mjs.log
|
||||
c4e2a5abdf3267315809dae8a895f37330e2532bfee285f7ec9167d0e10b9f0e agents/magica/work/queue-285/gate-r4-final/bus/revoke-window.test.mjs.log
|
||||
a53589c9b00fd25c5c815080bc595342a1bdec11c9b253a418fb252c0f8a1cc3 agents/magica/work/queue-285/gate-r4-final/bus/rooms.test.mjs.log
|
||||
f6b431f479981c441cce096cccba0122ec1a3426f6111f1f7f626686c165bc6b agents/magica/work/queue-285/gate-r4-final/bus/routes-verb.test.mjs.log
|
||||
7a4923f38ad902441ae6aea9cb576b7147dd70383d098d51336e6a14d8e86505 agents/magica/work/queue-285/gate-r4-final/bus/schema.test.mjs.log
|
||||
00b4938f9857909d8d1b2a09319d7789a3122e78b536a9ecea59dc0c186ad36c agents/magica/work/queue-285/gate-r4-final/bus/session-clear.test.mjs.log
|
||||
276bf89a346166d545ce198bc348481a5ce142318929061b630e8ec220876323 agents/magica/work/queue-285/gate-r4-final/bus/session-compactions.test.mjs.log
|
||||
47f135c2d70ef45642cb23c24ba3c0b3895fc17942d88fe3a8df6ccb7f5ea1d0 agents/magica/work/queue-285/gate-r4-final/bus/sessions.test.mjs.log
|
||||
55de3ac12488dce5d94534a65aa6cc5772f24203e568ba673629cd70e65320ce agents/magica/work/queue-285/gate-r4-final/bus/single-use.test.mjs.log
|
||||
0be7abd2fe17ce70d44441d99d24d3cb4cf6c333c8f13c1db6629b891ad081de agents/magica/work/queue-285/gate-r4-final/bus/spec-migration.test.mjs.log
|
||||
4cc4eec2ad4c90ff3a4e43cd9179e6fb74aeac8e2325a8672d066863dbeae4af agents/magica/work/queue-285/gate-r4-final/bus/spec-review.test.mjs.log
|
||||
92309088487d79eb7650fa9478ccbac120772693a8b470b4deeae1cd1d524859 agents/magica/work/queue-285/gate-r4-final/bus/spec-socket.test.mjs.log
|
||||
bc4e8e1ef8e47ec8afe23028cae658e3c977b49ca9a7e2fa4722dc44b08504c3 agents/magica/work/queue-285/gate-r4-final/bus/spec.test.mjs.log
|
||||
daef5df36cc1163103a974eb6f031ef14dd6c35cb7f226954ec5ae7135769fb5 agents/magica/work/queue-285/gate-r4-final/bus/staff-request.test.mjs.log
|
||||
37a19f9ce74424df735214c2f2e0b8dfe7aaf0ba0de12c54ce036443332d9c74 agents/magica/work/queue-285/gate-r4-final/bus/state.test.mjs.log
|
||||
22efe49c8472a0808718fe06cf675ddf40c44f1c595f08df790d9cecc79351b4 agents/magica/work/queue-285/gate-r4-final/bus/store.test.mjs.log
|
||||
9fd207dee8f33025cbcf7240eb1a7290a5415c699c746f4e5e5aae70cf03aa63 agents/magica/work/queue-285/gate-r4-final/bus/task-page.test.mjs.log
|
||||
f820bd4cc7de4988811e4c2182ee3e98929f53d497723cd5a8d57ffb7ca80ef9 agents/magica/work/queue-285/gate-r4-final/bus/task-read.test.mjs.log
|
||||
60895dc650cf104f7e993abd9959fbb040cf1e2bbf0f22918928d853d949acf1 agents/magica/work/queue-285/gate-r4-final/bus/tasks.test.mjs.log
|
||||
3d8b2b8b79f2311728ddbc5258c243aa155d4ccfe968464cce36a619aafe823a agents/magica/work/queue-285/gate-r4-final/bus/tester-threads.test.mjs.log
|
||||
f74d086924e32c5790d75dd781dda9949aea719591ba7e5c6dd2991621c53abe agents/magica/work/queue-285/gate-r4-final/bus/tester-writes.test.mjs.log
|
||||
5b205cd32bbb7030f6c1c2714ba9d96c6dcc8ef63f90b2a1fb717df02cf40b69 agents/magica/work/queue-285/gate-r4-final/bus/tester.test.mjs.log
|
||||
eab0913fca4df72aa7be69ec16151aa7d14b46da1c29eb814b25b819f10af57d agents/magica/work/queue-285/gate-r4-final/bus/thread-claims.test.mjs.log
|
||||
96756dcb51a27b330ebe3c17f971ae4927d350b4d38a49a7992a43563cb09354 agents/magica/work/queue-285/gate-r4-final/bus/thread-migration.test.mjs.log
|
||||
bee7685800c9c0b7bcb8ce114289ee041dc3d54bb54f2825c03effefa25e967c agents/magica/work/queue-285/gate-r4-final/bus/thread-shares.test.mjs.log
|
||||
205e6881f1c57f5db0df0cd6602d6565fc3230b4191cd18fab2c51f01c58edf2 agents/magica/work/queue-285/gate-r4-final/bus/threads.test.mjs.log
|
||||
ff12ac0ec50afe85988068d076e20ce4b567a009db1612e351853865d893a06e agents/magica/work/queue-285/gate-r4-final/bus/transport.test.mjs.log
|
||||
17677a3dbea58ce66d09ecd070341c57361932b5bc3a7c7a1c6c74c4c13bf261 agents/magica/work/queue-285/gate-r4-final/bus/usage-broker.test.mjs.log
|
||||
b72847be6b71ca57e1d740975709fba42ae8c8484727e70758db2b22f0df5331 agents/magica/work/queue-285/gate-r4-final/bus/usage-migration.test.mjs.log
|
||||
e4da4611615f4ad14961db09ea2b8bc11cb3ea26421cab1532e43f9be324b635 agents/magica/work/queue-285/gate-r4-final/bus/usage-runtime.test.mjs.log
|
||||
93e51bad9d0af852ba075e1ab1060315a8689d8e86abf817a31c5008896d9be1 agents/magica/work/queue-285/gate-r4-final/bus/usage.test.mjs.log
|
||||
29722547541fed38d5d7e5ba8fed04af0c1fdfa8225987a45b82130288b0fc3d agents/magica/work/queue-285/gate-r4-final/bus/user-principal.test.mjs.log
|
||||
71c75ee41d3d1c20ba7d6dc5ff116eeb41d015697a88940229f54ffa43554422 agents/magica/work/queue-285/gate-r4-final/bus/viewer.test.mjs.log
|
||||
69248dd13bec6172e0131c6abb1d7b7200d987a48547fa9a32ceac94aa3d7708 agents/magica/work/queue-285/gate-r4-final/bus/web.test.mjs.log
|
||||
35f9300554aa492fef841c3802556e1ac588fd2c0f54f6d03d68f27cb0c2717f agents/magica/work/queue-285/gate-r4-final/bus/workflow-roles.test.mjs.log
|
||||
620869895c15a8020c5a4f02a155104652ed773787122a60e521ff06053b1aaa agents/magica/work/queue-285/gate-r4-final/business/access-levels.test.mjs.log
|
||||
df5fe5da6101c683ba23da2b3c4f41df699255d8a05b04cbb31c98c9e033312d agents/magica/work/queue-285/gate-r4-final/business/access.test.mjs.log
|
||||
e6581e65adaf8722e835671ea70c897528247445271c277a4d3564b42b95b3c2 agents/magica/work/queue-285/gate-r4-final/business/agent-identity.test.mjs.log
|
||||
196ab38b12b821bb4fd527a7f289aee256bddfc9e2d14182d4910bed7019711c agents/magica/work/queue-285/gate-r4-final/business/assistant.test.mjs.log
|
||||
c58232ff3e724a3bc3e270c301365c2f821517ac558764888a5e7eb0e03b6433 agents/magica/work/queue-285/gate-r4-final/business/business.test.mjs.log
|
||||
4e522ebf2ff972aa1420458d2970172f879fc4e40e53ffb6a07b5164fcee59ff agents/magica/work/queue-285/gate-r4-final/business/case1-business-file.test.mjs.log
|
||||
6c0fb5d7e0afb9f9353822d5b1e0b54d1bc6ef7f7a1a5ffbf2baf6c77dba0bf8 agents/magica/work/queue-285/gate-r4-final/business/case1-project-key.test.mjs.log
|
||||
1c8ef8fdc13bf398b08958c27344f3041f8ca4d9359985851f3f00cdaf5bdac3 agents/magica/work/queue-285/gate-r4-final/business/chief-library-credentials.test.mjs.log
|
||||
fecfeeb2d9fca0a483bd7f6028e54180b6dc980885c4135a8614b48855564b8a agents/magica/work/queue-285/gate-r4-final/business/chief-of-staff.test.mjs.log
|
||||
052585f42b3f15e9598e06d39c86d70312df73907b17ae897972f88cbdfdd055 agents/magica/work/queue-285/gate-r4-final/business/cli.test.mjs.log
|
||||
9917bafb6253ea7c69d4e877c3b44dfb41cce4d9e66e3f437885e42ab2d50afc agents/magica/work/queue-285/gate-r4-final/business/credentials.test.mjs.log
|
||||
1d469db92293c9f9d614b3541de3aedc579475f6d9e63104b0d5cf6eafd142d2 agents/magica/work/queue-285/gate-r4-final/business/csuite.test.mjs.log
|
||||
58317d46f309281a36345add11ab12e537d814a18ca5715d65248f33d9d921a8 agents/magica/work/queue-285/gate-r4-final/business/grant-scope.test.mjs.log
|
||||
cf68073b5a586873194365b66a848d010ff2ba754de3d50ce25a470da2e34e8e agents/magica/work/queue-285/gate-r4-final/business/hard-waits.test.mjs.log
|
||||
d4d8adc8a9ffeadd59ead0983f7741382dcc77afd553c847cc063956b54dee11 agents/magica/work/queue-285/gate-r4-final/business/hosts.test.mjs.log
|
||||
53585e4c45ac886836d4ca443b767aabf9196dfd25e844add1e2a537755551d8 agents/magica/work/queue-285/gate-r4-final/business/instance-credential-transitions.test.mjs.log
|
||||
13c489103256b59ead37c55d642a1ce096c572d3b8a885e65e29836cdd3c2586 agents/magica/work/queue-285/gate-r4-final/business/instance-settings.test.mjs.log
|
||||
28043c37949a5c2dd556626aa79dd597fcf2a67c0c1789d28ea68e7227904752 agents/magica/work/queue-285/gate-r4-final/business/launch-settings.test.mjs.log
|
||||
6ecac0bb273d4cacc938f71e4a6dc7faef601a6c40bb150691884a523567c103 agents/magica/work/queue-285/gate-r4-final/business/library-projects-protected.test.mjs.log
|
||||
50bea34d902b5183112be0db1129c29ee57badb2a2845e50e1f6798d9724b60d agents/magica/work/queue-285/gate-r4-final/business/library-seats.test.mjs.log
|
||||
36e92ba28b6801ec5078eb0cacd2966e5f4c7d0a755c3aa7f8a4a3c8bce3c1fc agents/magica/work/queue-285/gate-r4-final/business/lifecycle-settings.test.mjs.log
|
||||
dc291ea0a20cc32ed43e06013ffdef621842fc1a130bda21a4d4523b82efdf85 agents/magica/work/queue-285/gate-r4-final/business/optional-tracker.test.mjs.log
|
||||
447ea0dde99631f0e1c12491ec4e0e12bc152e7837e4618349dd94a5f22e92ce agents/magica/work/queue-285/gate-r4-final/business/plugin-settings.test.mjs.log
|
||||
e98cdf2762716a9728315b4d8b5be06d565dc30744bf33f3a044bb35b4493565 agents/magica/work/queue-285/gate-r4-final/business/project-repo.test.mjs.log
|
||||
db67d6c2aed447238a7f58a614079e01d0100700ea60b7580960bff94e194b04 agents/magica/work/queue-285/gate-r4-final/business/project.test.mjs.log
|
||||
ebde91ab0bf3f4fcaa8cd54eec89d7f012269cafaf568934581b2dd85f5ac5f8 agents/magica/work/queue-285/gate-r4-final/business/record-grants.test.mjs.log
|
||||
54052ad43db71f392092a824e6bc6af3fe56a9438437774dca06fdff80ca4222 agents/magica/work/queue-285/gate-r4-final/business/reply-limits.test.mjs.log
|
||||
23c53f92a618f295b7ddf54d5260e8ab3423388a4e8699862d1aa8d5a980cbd1 agents/magica/work/queue-285/gate-r4-final/business/resolve.test.mjs.log
|
||||
68a935ad2c287f749784aa9073cc32ec382b3e6c452cf12f8a9cb3f46f015dc3 agents/magica/work/queue-285/gate-r4-final/business/role.test.mjs.log
|
||||
f740f5e590ddf6cdf3be4f8025d4880fb519f25dbaf96429fb5da6642cbf4c6a agents/magica/work/queue-285/gate-r4-final/business/spec-review-contracts.test.mjs.log
|
||||
48ada3c3ab56530759610cbe96e70c362a6759058870af082a2f6c5798e9bbd0 agents/magica/work/queue-285/gate-r4-final/business/token-limit-settings.test.mjs.log
|
||||
ef80f01ebf5bfc13fc98736787ac59b047ae9494a80f48ed68e53ee81fa1693c agents/magica/work/queue-285/gate-r4-final/business/vars.test.mjs.log
|
||||
c54d2ea2d3a7546d2922955473421f972d96780c9310ad5b8114c223ce11f07e agents/magica/work/queue-285/gate-r4-final/business/workflow-roles.test.mjs.log
|
||||
becb033f43710491064a94892fd653c6ab1e2c342cb2c0bf36199882924962fe agents/magica/work/queue-285/gate-r4-final/cli/access-boot.test.mjs.log
|
||||
a8f44861b55b198217b98b87093f5c2757223da36864738f5ad1464751322237 agents/magica/work/queue-285/gate-r4-final/cli/access.test.mjs.log
|
||||
dc51f9fd3c944ead18254dff3e0f5e5ba9ab91a314325c8d6027da78c225fda1 agents/magica/work/queue-285/gate-r4-final/cli/app.test.mjs.log
|
||||
ba0ddc56926939ee6f6e73a421ed3674dcf8eada5535a4a207c762e2d9eb51b8 agents/magica/work/queue-285/gate-r4-final/cli/boot-status.test.mjs.log
|
||||
431adc0251bf7b2d0e852b5cfbbfbe66f9b85666437ddc18255b88a60202e2bc agents/magica/work/queue-285/gate-r4-final/cli/case1-accept.test.mjs.log
|
||||
3b59d8fa33afd0ba18fea055107a266f3517415df9f61f02ce9d286bbbef1558 agents/magica/work/queue-285/gate-r4-final/cli/case1-hostcheck.test.mjs.log
|
||||
fa0b53fe612d2d6d8b338e090bf4fcacf324d00c791d50d6aa9cd1c1bf437e5c agents/magica/work/queue-285/gate-r4-final/cli/case2-install.test.mjs.log
|
||||
af0f8d0a0621bd3eb825ba4da34f0fa77787f42c0bf7e6e2ae825b94b83cc305 agents/magica/work/queue-285/gate-r4-final/cli/case2-persona-import.test.mjs.log
|
||||
a6fad64b7bad67b02329553d255e8039fec49110658c67ab87b6299915bb7a65 agents/magica/work/queue-285/gate-r4-final/cli/case2-unit.test.mjs.log
|
||||
3a641d364b0c71a1374a9c2a766d22da92ab25b38bc82574e5a2e10539327a15 agents/magica/work/queue-285/gate-r4-final/cli/channel-cli.test.mjs.log
|
||||
a5b80b75089a31667e980099402ccea965c171f1d9d6fe0b76c34c7618a0742c agents/magica/work/queue-285/gate-r4-final/cli/channel-recovery.test.mjs.log
|
||||
1fe6caf07bc134ccb9c19d190cfa3ff968b7bfa91a4f18a30b4aa79c4af7ec28 agents/magica/work/queue-285/gate-r4-final/cli/cli.test.mjs.log
|
||||
48b94802ff06a8285840e2d6b436a792b68d8f481dadd438c0db4c2dadccca7e agents/magica/work/queue-285/gate-r4-final/cli/compactions-launch.test.mjs.log
|
||||
51cb308333c4c5d514bd55e5c0409561eadad81b80d936c18e8abf0ea1e87ee9 agents/magica/work/queue-285/gate-r4-final/cli/config.test.mjs.log
|
||||
8c817f2a7e098a65d22aaa79e92e643a3607b1c549564f4158856c2abe5bdd2d agents/magica/work/queue-285/gate-r4-final/cli/credentials.test.mjs.log
|
||||
9935dc95cea7702d5ac6f47b8936b97b78aebd1650bcd4eccad0bcf2f223c19a agents/magica/work/queue-285/gate-r4-final/cli/federation-acceptance.test.mjs.log
|
||||
8709c0f22e863e70306f98f9ba86a06dbbbc6afb2a4ba5198d4e493dcfb50fdf agents/magica/work/queue-285/gate-r4-final/cli/follow.test.mjs.log
|
||||
8a4b4c132a57400e77929c2147649297941b7c0547a9c5ebb9e8fd2923398a21 agents/magica/work/queue-285/gate-r4-final/cli/format.test.mjs.log
|
||||
87c4affc28b430d58906c209455d1d19ad299906375a9216e42a712b042494a4 agents/magica/work/queue-285/gate-r4-final/cli/gate-lane-auth.test.mjs.log
|
||||
1b0f174aa9cbd164d7c82261ed6f9fbb55befb93b9ef835d79fb738f6f5fcb50 agents/magica/work/queue-285/gate-r4-final/cli/gate-lane-fixtures.test.mjs.log
|
||||
b507a2491d42f2747eafce9f190160f48652a5439efb5f75c57af300f6d424c2 agents/magica/work/queue-285/gate-r4-final/cli/gate-lane-image.test.mjs.log
|
||||
dff17f05c0fbcaeceadc3e96a2bc1d4902cf36accdab678ecaa523cc4aaf76ca agents/magica/work/queue-285/gate-r4-final/cli/gate-lane-state.test.mjs.log
|
||||
910e8b82d08af42f67f83410e86933faa5c6de1a2be7d216990d2c6de9675011 agents/magica/work/queue-285/gate-r4-final/cli/gate-lane.test.mjs.log
|
||||
7b99dccf6adcd676467916c2e0f0578dba9ba820f44c60d1d52210bbb3d5a76f agents/magica/work/queue-285/gate-r4-final/cli/git-socket.test.mjs.log
|
||||
f4a218937d6d9bc6f047369813998a3f4086e4136632f20d3040b165e5fb23a1 agents/magica/work/queue-285/gate-r4-final/cli/grants-scope.test.mjs.log
|
||||
68fda47a06a071a7485bcbcd89781a562949e87e5a10c3633d4f942b184a42ff agents/magica/work/queue-285/gate-r4-final/cli/grants.test.mjs.log
|
||||
83399a560afeafe70432a8c82eeccb4d6a59be9ef640f695331eb8ad083ac9aa agents/magica/work/queue-285/gate-r4-final/cli/host.test.mjs.log
|
||||
acf58453986d413a32b56232d897808073670cec3b71429f821b50462987ac54 agents/magica/work/queue-285/gate-r4-final/cli/hosts.test.mjs.log
|
||||
5a9f986ccf344157ab7ab15b93455dc27f221930b83ae6ca3e0feb6a67e33555 agents/magica/work/queue-285/gate-r4-final/cli/idle-stop-race.test.mjs.log
|
||||
419dd29b40b7c66241b24de42d4376fa34d8f3ad108005a76c8aca3dd48573ce agents/magica/work/queue-285/gate-r4-final/cli/instances.test.mjs.log
|
||||
e807633b3729eb1afad74b19d20f3636fea696c88451707ce7f83fcdc6e812f6 agents/magica/work/queue-285/gate-r4-final/cli/launch-account.test.mjs.log
|
||||
39cbdf7c125da38588c99844f24db509e4efe6735689d25cc5f519ee7edfb10c agents/magica/work/queue-285/gate-r4-final/cli/launch-limit-checks.test.mjs.log
|
||||
7d4e10896e0e2c5a15b49bcf9b29fbdfbda3ffbc990b3341bc427a2cef74a7ff agents/magica/work/queue-285/gate-r4-final/cli/launch-limits.test.mjs.log
|
||||
806e6c2e07046de60c4c14f09b1cf552e3f7b68e62eed4645bc0687b5333aa45 agents/magica/work/queue-285/gate-r4-final/cli/launch-routes.test.mjs.log
|
||||
f26be989d4aa677fe2785e32b6eef963da2d03653d09609a7e6e6dfe2d30ce37 agents/magica/work/queue-285/gate-r4-final/cli/launcher.test.mjs.log
|
||||
70de08df057a73660ec03a82be637288e715857386b3e82ab5181bf0808c2d1f agents/magica/work/queue-285/gate-r4-final/cli/lifecycle.test.mjs.log
|
||||
e1c5ac71b09f8fcc89702257290fbbdaa1f511d417bad8cc3e865bf8426c4173 agents/magica/work/queue-285/gate-r4-final/cli/limits-tokens.test.mjs.log
|
||||
7b89142839389e453ec5950a8e853db2ce861e01a8317fa4d348b32d49e049bc agents/magica/work/queue-285/gate-r4-final/cli/limits.test.mjs.log
|
||||
87449e4403c6df92693fc24c700cd3dc8b9a15308d655bdf90cb8276cd426147 agents/magica/work/queue-285/gate-r4-final/cli/mark-read.test.mjs.log
|
||||
ee42e596fe833d8ceaa429ca4c7f66c4f3a735befe4340fcfd961a4f4cf9113b agents/magica/work/queue-285/gate-r4-final/cli/names.test.mjs.log
|
||||
19394c29f2efcc0811a0bb3f0664da04c350c1941241f79b3670cf50ca23ff7c agents/magica/work/queue-285/gate-r4-final/cli/notifier.test.mjs.log
|
||||
26c65196b3fd9124dd87cc4fb74477dcddccd416c3fc60b1f3c191e3115dbb54 agents/magica/work/queue-285/gate-r4-final/cli/optional-tracker.test.mjs.log
|
||||
d9a54281386e2e4b0adba8a74c06125726092743be7bb3f37d476f88c026170e agents/magica/work/queue-285/gate-r4-final/cli/other-tree.test.mjs.log
|
||||
2dc5770feac41a86274226b047d3da8634d36f9417335aff149135297f7b83d8 agents/magica/work/queue-285/gate-r4-final/cli/processing-cli.test.mjs.log
|
||||
519c363c76d8cb9c98bb1a6fbb1ca6edf7d7c1ce6c2640d3ec52489c5d573a15 agents/magica/work/queue-285/gate-r4-final/cli/project-name-repo.test.mjs.log
|
||||
6a88d3f9ddbb9dee0a65cbebc5295e4296e415496aa8ae27f095cf239bcffbb5 agents/magica/work/queue-285/gate-r4-final/cli/project.test.mjs.log
|
||||
cc4a46df4c3c24f1eea3e0aeab63263aec72dd94d0b87f81bd7bdd5e7c27ecf8 agents/magica/work/queue-285/gate-r4-final/cli/publish-socket.test.mjs.log
|
||||
0d94b050bd04cd3e88053b771d882075ba373f14f321502c5d214d59e9bb7fb7 agents/magica/work/queue-285/gate-r4-final/cli/reply-limits.test.mjs.log
|
||||
83a9cfa63d47a61092a76a832e2053b2343187105701aa96d38b9ce919a43565 agents/magica/work/queue-285/gate-r4-final/cli/revoke-window.test.mjs.log
|
||||
4b59c7ff132d30a757df6fe84cab072b98cc92fbab156841ec148e05631ff41c agents/magica/work/queue-285/gate-r4-final/cli/session-clear.test.mjs.log
|
||||
75e9f5113a2c04c2008f5f289d51fd234b18683c66a1407381fd0d56253a1aa2 agents/magica/work/queue-285/gate-r4-final/cli/session-cli.test.mjs.log
|
||||
820ba254e7d78a6f67123694bbf05fb5e5442339e981ef9fa13c95b83a31e761 agents/magica/work/queue-285/gate-r4-final/cli/session-launch.test.mjs.log
|
||||
d794a7b383bab3c5793558788f3ed45a9e3d39bf12de1dbe956b218f63566f22 agents/magica/work/queue-285/gate-r4-final/cli/stack-copy.test.mjs.log
|
||||
69ff6bd9eac3e060cfb345f4f98aecca33210d3a1cf51818e9e09743c9593603 agents/magica/work/queue-285/gate-r4-final/cli/stack-instances.test.mjs.log
|
||||
ac7344e4dbc442a7209a040eea64f0961c0a916a0ed7a0383779799ae45541e5 agents/magica/work/queue-285/gate-r4-final/cli/stack-release-external.test.mjs.log
|
||||
1225f15558443da6e92667aca271d53aaea7a68a92dc7b3a5f662eba756ea276 agents/magica/work/queue-285/gate-r4-final/cli/stack-release.test.mjs.log
|
||||
b18c0cde266ec753e8a7335761a40e11b6ec0afa348729a253c0b55600ce886d agents/magica/work/queue-285/gate-r4-final/cli/stack-upgrade.test.mjs.log
|
||||
6c6add4badd13339057babb32f4ae31659fe4bfb876459a660694899700e671b agents/magica/work/queue-285/gate-r4-final/cli/tester-http.test.mjs.log
|
||||
b7f43878bdd8e2d1b8075ba16232d3c05dedad546e0182491d27df3fb19ca652 agents/magica/work/queue-285/gate-r4-final/cli/tester-reads.test.mjs.log
|
||||
441db39af976143186c138bd6fc9bcf9b453206639e99810577016010998e713 agents/magica/work/queue-285/gate-r4-final/cli/tester-threads.test.mjs.log
|
||||
3fcb791161838cb7bac2b044f994c658c46cded236a6be86b5636a3b7e813abe agents/magica/work/queue-285/gate-r4-final/cli/tester.test.mjs.log
|
||||
eba3c12680d187ffb4d7419c88bcbb84b60b6245d48dbb22425b0085b11180c7 agents/magica/work/queue-285/gate-r4-final/cli/thread-cli.test.mjs.log
|
||||
ae372ffda85e2c3b3b32d4d5547ff3321f0123a358daab2fc4e03c6b4ef134e3 agents/magica/work/queue-285/gate-r4-final/cli/thread-launch.test.mjs.log
|
||||
3f57a6a8e64244f4bd6f58fd4ef6800b1d39bd3c942fbe24b9a6144cadcb9ad1 agents/magica/work/queue-285/gate-r4-final/cli/thread-revoke.test.mjs.log
|
||||
122239cad3f48737102c3a7980eafc9e6aef6aa33670c0ec54fe0838d006f13f agents/magica/work/queue-285/gate-r4-final/cli/trackers-boot.test.mjs.log
|
||||
c786a1c2e8aac59bc9e3d47986f4490ea70397ac72d2c9d92e2647da84079900 agents/magica/work/queue-285/gate-r4-final/cli/transport.test.mjs.log
|
||||
79e04b0aad591a3c5146d7593a5a080473b34748b3b99713aad01f35f7e9e477 agents/magica/work/queue-285/gate-r4-final/cli/usage.test.mjs.log
|
||||
431c95ddbe51185e8565b56384ff35f229939c96cf67aaf05203c1c4c76434b4 agents/magica/work/queue-285/gate-r4-final/cli/verbs.test.mjs.log
|
||||
1099866589d1ec26e1da1587dd3bc661d6af83b4b8027d8b56bb80cdd325edbc agents/magica/work/queue-285/gate-r4-final/harness/bundle.test.mjs.log
|
||||
efaa20698497cc91ccbf586b1fc8e0090cc67258c2cb8652638f0d91acb636bd agents/magica/work/queue-285/gate-r4-final/harness/citation-runner.test.mjs.log
|
||||
bf6e527228f0a7b9acd8499a50dd02bea11e4e563690cb377a38e7ef6526b42d agents/magica/work/queue-285/gate-r4-final/harness/claude-gate.test.mjs.log
|
||||
bc07e35fb042ca1039d18fd5421c6bdcd69a29761bb39869d037e8071181a29f agents/magica/work/queue-285/gate-r4-final/harness/claude-session.test.mjs.log
|
||||
9526c194bf46c3917785664728355f18f493040ad3dc120d0d84539e03188ef1 agents/magica/work/queue-285/gate-r4-final/harness/creative.test.mjs.log
|
||||
ba133f48d2e7425769db81de2532c1d5496d68968dba97c75444769b81426fbf agents/magica/work/queue-285/gate-r4-final/harness/gate.test.mjs.log
|
||||
c8a85d1f441f5b0d9d04126803d69e76187cfece3ab057203da82c59043da6e5 agents/magica/work/queue-285/gate-r4-final/harness/git-tools.test.mjs.log
|
||||
8aa26d6e32a23e199be1255427edd0d1e66119add034348a56b80c983d4c72e9 agents/magica/work/queue-285/gate-r4-final/harness/mcp-server.test.mjs.log
|
||||
9f94d44e5ea4b2571de7b741b05693ef55138420a3247933aa92741612faa601 agents/magica/work/queue-285/gate-r4-final/harness/pi-session.test.mjs.log
|
||||
aa917f9598ed6ff1823e8fad12ca3a363b725f061d7127da84c35b359b9e1ee3 agents/magica/work/queue-285/gate-r4-final/harness/raise-domain.test.mjs.log
|
||||
5956d58f54a569aeedaaf3281a122c77fab8524b41a07e8f4592b23c7d66bcbd agents/magica/work/queue-285/gate-r4-final/harness/runner.test.mjs.log
|
||||
61a88a974a76ff283fb57d7d3ed97f96fe6a522330e21dfa808daa41ed1f9e3e agents/magica/work/queue-285/gate-r4-final/harness/skills.test.mjs.log
|
||||
60b4a3090e0ef98c0d85ee0e9ce7c47ffe9a952d1b4d1ba11ce1ca4a082616ac agents/magica/work/queue-285/gate-r4-final/harness/spec-tools.test.mjs.log
|
||||
1b4c3faa2035994bae0921726cea3c0a78ba92a541803bc018def8166a5f590a agents/magica/work/queue-285/gate-r4-final/harness/tools.test.mjs.log
|
||||
8f964a7f391cc35a4308ed3286487f93c2a08c5388b3e5e89e59d65698d896ce agents/magica/work/queue-285/gate-r4-final/mutant-summary.log
|
||||
2cdbd45225f70cc9814535a0609f22f945d089ab243cbf9ba1925b9c5e775ac4 agents/magica/work/queue-285/gate-r4-final/mutants/M1.log
|
||||
c06365b143f58f59023fe12e48d1baa1f264bc8bfa5d7944244c72e55d9eb749 agents/magica/work/queue-285/gate-r4-final/mutants/M1.patch
|
||||
5f5358727a146e1f7ffadd8fbf3996b62055f07a7b892dbb5c85e46d3e8bb5ab agents/magica/work/queue-285/gate-r4-final/mutants/M1.txt
|
||||
6cd98e55d3af97b29fb4f0c1f480d023a6a3d22afe33033659cdff4fb81a5ed9 agents/magica/work/queue-285/gate-r4-final/mutants/M10-case1.log
|
||||
ac8fa83440c050a33448563fa62c8141b4186a99b98804a8fcb4bd82f2d4c0b1 agents/magica/work/queue-285/gate-r4-final/mutants/M10-case1.patch
|
||||
219c39c3f32c50c267c5ebb91c53eb1d604bee1cac2c1dcef7d795eaf72dd5e7 agents/magica/work/queue-285/gate-r4-final/mutants/M10-case1.txt
|
||||
df30700c70733958068673649caf9ba1bd48886b3d27408e0b4cbcb66958fb16 agents/magica/work/queue-285/gate-r4-final/mutants/M10-new.log
|
||||
ac8fa83440c050a33448563fa62c8141b4186a99b98804a8fcb4bd82f2d4c0b1 agents/magica/work/queue-285/gate-r4-final/mutants/M10-new.patch
|
||||
8c82896f11c9a65670cb4d74e3ff4c0dcd08707d8ad12f70c78b55bd15986271 agents/magica/work/queue-285/gate-r4-final/mutants/M10-new.txt
|
||||
9dfb8cc7f364b43154ec605c04e6087b44cc1eaa80f3b5e6830120bdad08038f agents/magica/work/queue-285/gate-r4-final/mutants/M11.log
|
||||
e45b815fcfb78ed9626240fe05bcb5f5f4ddaf6ed49c30c7194682d915e45fb3 agents/magica/work/queue-285/gate-r4-final/mutants/M11.patch
|
||||
c5c94d557c3de0174a4f349ce439ecb71f33af192f6964c1a46da2d8fc8d4ac3 agents/magica/work/queue-285/gate-r4-final/mutants/M11.txt
|
||||
013a7cb8fd31d4a83a08bf166f0a9fb70d871597aad0074f9ffcea01ec9447fa agents/magica/work/queue-285/gate-r4-final/mutants/M12.log
|
||||
0817365531b4c4128e4d99517714010a941df2e3ab018536c6769f4b7e116353 agents/magica/work/queue-285/gate-r4-final/mutants/M12.patch
|
||||
8c0ffeee418bbd0d5a065304cab7f0674c375391d36ed292f3970f3f839a735d agents/magica/work/queue-285/gate-r4-final/mutants/M12.txt
|
||||
c29e10e0ef6b3c59ded6ce2982f2cf6452fed5f9b859943cf8053da8fb108ec7 agents/magica/work/queue-285/gate-r4-final/mutants/M13.log
|
||||
a9426d7e2460b3a7af1b77065b9ad1694f4dab600584f6a959b707af8f6d7eee agents/magica/work/queue-285/gate-r4-final/mutants/M13.patch
|
||||
03ba5e226632fa4d70d6a3146f6c3155e44b8d593f15e666241930c9571b4803 agents/magica/work/queue-285/gate-r4-final/mutants/M13.txt
|
||||
7de7822666e9c683b52cbace96eb2534d38b9871648c9f043bccab97b6d902c9 agents/magica/work/queue-285/gate-r4-final/mutants/M14.log
|
||||
bbee0309658083e837aed9ac867ebd836971ef18a5c98ed4d0930edfd3335161 agents/magica/work/queue-285/gate-r4-final/mutants/M14.patch
|
||||
27bd665683c1406683ac2f3cbcdf21b000f33d86152fcc66a346aacf284ce336 agents/magica/work/queue-285/gate-r4-final/mutants/M14.txt
|
||||
f3dc1ae22e8fa23e25945917750ddf44e3b8ef4fad8859860f97f3b41cf6dcb8 agents/magica/work/queue-285/gate-r4-final/mutants/M15.log
|
||||
811e583605b42ab01f4cffe61ba16dcc9c40947d3ad3839e8ea084a7158e784d agents/magica/work/queue-285/gate-r4-final/mutants/M15.patch
|
||||
ca02d178a90f9c500b448bc5568d68b272dcdcfe36c92958f2e43a5914a2ec78 agents/magica/work/queue-285/gate-r4-final/mutants/M15.txt
|
||||
91647571511bb1a6b956778d92ae15a4f6ec6001d9a2a7da9303688875ee3fcb agents/magica/work/queue-285/gate-r4-final/mutants/M2.log
|
||||
80804bf2a86cf53d134619c3e28f5112ee43aea967d26404dff0434565ae9388 agents/magica/work/queue-285/gate-r4-final/mutants/M2.patch
|
||||
0d521a2330b052424b3949022186abfa306cbece589713e83ee30ad3b1dfe9e9 agents/magica/work/queue-285/gate-r4-final/mutants/M2.txt
|
||||
811084a55d331889242df9ad420f5214a6c8c62a867cf76c38ee8d0496174b22 agents/magica/work/queue-285/gate-r4-final/mutants/M3.log
|
||||
7fbcab49e31e9cdf07e3147f1d8c99bacbb71d772459641b969bd6e7ead97d0f agents/magica/work/queue-285/gate-r4-final/mutants/M3.patch
|
||||
4eef66484ca9e169aa56eb20a1127008b4d272e046a408601ee6a55dd7f0047f agents/magica/work/queue-285/gate-r4-final/mutants/M3.txt
|
||||
2daa2af23e370444f1b2ca5df5ad4dcfdddc7e7cc6360d9f531c13927073010b agents/magica/work/queue-285/gate-r4-final/mutants/M4.log
|
||||
3030c1bc2499936ee327f3bddb529327c9524f814ef3ad5c85e8fb1e4ac40fcf agents/magica/work/queue-285/gate-r4-final/mutants/M4.patch
|
||||
727c31bca2ee65e8fe80ed7e1341446edbd77d1230f5bc74117736f36a167b15 agents/magica/work/queue-285/gate-r4-final/mutants/M4.txt
|
||||
d657773844006bb8b8204ec5efc51f9f555b9ec69c3f92acd5930604862a0cd0 agents/magica/work/queue-285/gate-r4-final/mutants/M5.log
|
||||
265062ec48fc6554cc7691f2518177d636e4311f09230407f472933e4e0f9a6a agents/magica/work/queue-285/gate-r4-final/mutants/M5.patch
|
||||
dabd9ffc237449869c9ea27cd76cd6e868c2c256f44e162f0a51a465a9e6aaeb agents/magica/work/queue-285/gate-r4-final/mutants/M5.txt
|
||||
830fde5eaff59ffac6df477998bedeb70b0f9c853c26e038995aaac1028d95e5 agents/magica/work/queue-285/gate-r4-final/mutants/M6.log
|
||||
e6f618d7ccee08aef6301cab28136b57f208be78915624b90b1bc6461974c9e9 agents/magica/work/queue-285/gate-r4-final/mutants/M6.patch
|
||||
cd6241193d1ecbb249380de7a0d0c78f2b35ee41e38b228110a82d52506d623a agents/magica/work/queue-285/gate-r4-final/mutants/M6.txt
|
||||
43a43a458e3d0d2d938d9bc46aaea21e6f03ef423e82b7fa6f122c0f740df421 agents/magica/work/queue-285/gate-r4-final/mutants/M9.log
|
||||
e4ee228f2cca5129b176dcc469c8f5f12e015be0638b6c551691fe42382ef9ba agents/magica/work/queue-285/gate-r4-final/mutants/M9.patch
|
||||
84275b1154923e3a974c058559e4e70f8454dbcd10bf9af444e66bb311aeca16 agents/magica/work/queue-285/gate-r4-final/mutants/M9.txt
|
||||
8dc64b303566c560d4ceff68c2102cfd7f2d629520d51a3a4d7225c40b727f8b agents/magica/work/queue-285/gate-r4-final/npm-root.log
|
||||
5e2ca9088e90b2c747857ece26227b7eae41e7a49f763609ffe0885a36af2d56 agents/magica/work/queue-285/gate-r4-final/npm-webui.log
|
||||
6066086769f37f6093587cf5be3699ad5e1076038070afd582309051cca4f16a agents/magica/work/queue-285/gate-r4-final/plugins/channel.test.mjs.log
|
||||
76e8f0f18076d40e74af077bcee9fa34fd5045b662dd4bbb23a05bf33cbb73e6 agents/magica/work/queue-285/gate-r4-final/plugins/daily-quota.test.mjs.log
|
||||
56b49f6d2d39fba29692f5eab51d63c8d192887d5b096435d765cf4e52f07b38 agents/magica/work/queue-285/gate-r4-final/plugins/harness-compactions.test.mjs.log
|
||||
883ccad3e0f28d2483f0eb6392777d46029b94fed5f992cfd605b0648d81bcce agents/magica/work/queue-285/gate-r4-final/plugins/harness.test.mjs.log
|
||||
29d9184238c1e5a95646338a2cdd29609ffb0861a3e03444146cff5334ad7469 agents/magica/work/queue-285/gate-r4-final/plugins/kinds.test.mjs.log
|
||||
56fcdbc046af0d1dba7dcfd36024d051049b14dc3bba55c52fa194777c081e51 agents/magica/work/queue-285/gate-r4-final/plugins/loader.test.mjs.log
|
||||
80723fd1e129fe1a795b7a60e8a521a24d8d8aeca8f9dd2b1afeef988102276e agents/magica/work/queue-285/gate-r4-final/plugins/searxng.test.mjs.log
|
||||
5eba932624dd7285047194909277d5cb3e487e1f9de565ae08a9083bc29f515f agents/magica/work/queue-285/gate-r4-final/plugins/token-limit.test.mjs.log
|
||||
805a3591b89140435dfb4eb9d7490c01a8b1e2b3a99fe393e89287ce8fe94d26 agents/magica/work/queue-285/gate-r4-final/plugins/transcript.test.mjs.log
|
||||
3610c16d6d26faa497b24cba4fbd535cff8e2864656afceee294ce3bfe0761cd agents/magica/work/queue-285/gate-r4-final/restored-controls.log
|
||||
b308a8a3d4ea7ce594a03fd3c677ea967ad874730de3cdfb469d2054c98c400f agents/magica/work/queue-285/gate-r4-final/run-mutants.py
|
||||
86e0e865eeeac93b8aa04a07f631419d4269a60e959b2f398b032f80a4a09ab2 agents/magica/work/queue-285/gate-r4-final/run-suites.py
|
||||
40b1f951561ef851e45d014e19726db2a195f6c90b127c7ca2069ecc8c575aa4 agents/magica/work/queue-285/gate-r4-final/runs.txt
|
||||
f91fc95a173339137f981e24fbf630acfde957e32c3cd71e28304532083c6a77 agents/magica/work/queue-285/gate-r4-final/scripts/test-auth.sh.log
|
||||
25579ce07a27584d2b55fe58031f2527b10e32a4e6106c70e909064315cc70b2 agents/magica/work/queue-285/gate-r4-final/scripts/test-conductor.sh.log
|
||||
92ea8ce5e66d892fefacc76b87d140bcfb8c5a51dc77bdf4a47a6213ac5d2898 agents/magica/work/queue-285/gate-r4-final/scripts/test-config.sh.log
|
||||
9b482b7a3f0672c872923c06e71d5a88ff085a08170905a6cabe1d2b6fc283b6 agents/magica/work/queue-285/gate-r4-final/scripts/test-discord.sh.log
|
||||
f4c406d220e1901993bca216afe7ceef8f20e44532f70cd91de3f2dea26299ec agents/magica/work/queue-285/gate-r4-final/scripts/test-extension-package.sh.log
|
||||
81e87833fece95a18e47a956b4373a36a34efffe3a0a5d84d0b5dba3b933cad2 agents/magica/work/queue-285/gate-r4-final/scripts/test-federation-acceptance.sh.log
|
||||
83dfaa21c4e4ad941088efab3f69e87ebd2f6bd3cc72ede938e21dc06da8a34f agents/magica/work/queue-285/gate-r4-final/scripts/test-foundation.sh.log
|
||||
3e2f8024027592e77790db2bbe039803060915ebf37c7b67f04071a7e83d20dc agents/magica/work/queue-285/gate-r4-final/scripts/test-land-work.sh.log
|
||||
5d9a170308927264d212e3dd00e87463a21d55811cf9b4cb51dce74d6a10fea5 agents/magica/work/queue-285/gate-r4-final/scripts/test-push-check.sh.log
|
||||
e95247a7751aa13b204ef92deaf4d51e3ece71671296c045a50efac53088f99e agents/magica/work/queue-285/gate-r4-final/scripts/test-queue.sh.log
|
||||
9f9dd11e2631a24ad55aaf7becc61965c592b00da08a4e72b98e0384d3a13ec7 agents/magica/work/queue-285/gate-r4-final/scripts/test-release.sh.log
|
||||
a065947f07d70a4721b423da597968630bc8ec1659db14681af42bb3f974077d agents/magica/work/queue-285/gate-r4-final/scripts/test-task.sh.log
|
||||
88832cfec4a9f6bb445c59e1f8e6ceb477ca14fa113571502ac9ed3850f5f660 agents/magica/work/queue-285/gate-r4-final/tmpdir.txt
|
||||
32f1ff0e42fffb8bd3fc0c73bd8c365bde1a890bcdcae57eacecbe1fa08b026b agents/magica/work/queue-285/gate-r4-final/webui/agents-browser.test.mjs.log
|
||||
64e08067a2f8e963f54aef52f6167ac6b643eeec4028780a4d609a6e8bae1ead agents/magica/work/queue-285/gate-r4-final/webui/agents.test.mjs.log
|
||||
464cb5cfbf5efa755e2d1a8d573db2cfb5a9dfcf8191ee76afa835e183f4d3fa agents/magica/work/queue-285/gate-r4-final/webui/assistant.test.mjs.log
|
||||
5fbe842e87878c37c382ae453db6b85ea98569a505b47db119f493c05b68ab47 agents/magica/work/queue-285/gate-r4-final/webui/board-held.test.mjs.log
|
||||
c7aa6a0cbf4a33f33686b423a37ba9afe6f0508172f40f93600d0b1d357cfc83 agents/magica/work/queue-285/gate-r4-final/webui/browser-edge.test.mjs.log
|
||||
0c0d311724c660f31a69ddc885da0517a83129d9efa1011bbb50deaab02735e6 agents/magica/work/queue-285/gate-r4-final/webui/browser.test.mjs.log
|
||||
19672eaffd1fa885c26d68798e121e2a4c53bd21f4a767bd22b3002c50cd59fb agents/magica/work/queue-285/gate-r4-final/webui/bus-browser.test.mjs.log
|
||||
89bee508ee6dffbe2e3e6b507aaa75f0a5975d2a08b335da53b13d7ab8622e35 agents/magica/work/queue-285/gate-r4-final/webui/bus.test.mjs.log
|
||||
5353c3541f3e073d70afe40833c63f479ee45beee48a3fa7f275025d50e4de7f agents/magica/work/queue-285/gate-r4-final/webui/channel-chat.test.mjs.log
|
||||
238296c7924f3b9cf7a718f7ee40f7f378cdc69e042adf9cf2f155b42f762ece agents/magica/work/queue-285/gate-r4-final/webui/chat-browser.test.mjs.log
|
||||
228ea77f10ef503b3bf95c24dc7425616553172276d548d2d94f29c4088e7c73 agents/magica/work/queue-285/gate-r4-final/webui/chat-instances.test.mjs.log
|
||||
fd3d6672ca1c99e10d98305022079455f47d057e827305da0cf1275373383fc8 agents/magica/work/queue-285/gate-r4-final/webui/chat-sessions-access.test.mjs.log
|
||||
1aec67de65971400ee06f8bbcd9101ee771608ad83e08fb33113f32921be5c8e agents/magica/work/queue-285/gate-r4-final/webui/chat.test.mjs.log
|
||||
a7ceea5464e18e88525b28c7eb50163ba4c80dcd87ddbff843c1ecfbc659b408 agents/magica/work/queue-285/gate-r4-final/webui/conversation.test.mjs.log
|
||||
01b3b972d2d301b945fbe63ca2e42507a6104be127edfaf367a2b83b98fd133a agents/magica/work/queue-285/gate-r4-final/webui/decide-browser.test.mjs.log
|
||||
444d866c54d18094a7cd31be5473f3c92b9633ee4454a14ba474f5125a2a42e2 agents/magica/work/queue-285/gate-r4-final/webui/decide-sso.test.mjs.log
|
||||
792e0573e8ed80e8ce651614502b4c8228eb94c64167258b71c4ec54e4915902 agents/magica/work/queue-285/gate-r4-final/webui/decision-http.test.mjs.log
|
||||
f99fc0415116f7b0826e0785e97cffa3f2639e0ad98584cf8e599f2b805fe3eb agents/magica/work/queue-285/gate-r4-final/webui/discord.test.mjs.log
|
||||
c82fc4cf34d71418900d0b8d35338dc8d57a22ddcb419faac37f8043f0029027 agents/magica/work/queue-285/gate-r4-final/webui/docs-browser.test.mjs.log
|
||||
5a633d2a0507300888b9995d59ccb0147593632d9071d3856d6508ec139cb789 agents/magica/work/queue-285/gate-r4-final/webui/editor-browser.test.mjs.log
|
||||
3cb0c04cfde5426bd303d2354bfe5126ea97a362abec1006c6f23551e00038fe agents/magica/work/queue-285/gate-r4-final/webui/editor-provenance.test.mjs.log
|
||||
521ebe746943dc0109b68931c2627571416160dce1230e0245de4d8aac209d98 agents/magica/work/queue-285/gate-r4-final/webui/editor.test.mjs.log
|
||||
1fdefc5dbe76d2bce7acacc599e5f7ee4100223ab4e7eedd755e6fef97244ac8 agents/magica/work/queue-285/gate-r4-final/webui/granted-user.test.mjs.log
|
||||
b760f5c5ba25f0eaab9501a9d8debc542f699c7c4010e0e14a9108958cdc04a8 agents/magica/work/queue-285/gate-r4-final/webui/history-return-flow.test.mjs.log
|
||||
1956a9a853510ebb09213e3d4d55c40daee0ca34fdcba94f5dfa5404a2eb6227 agents/magica/work/queue-285/gate-r4-final/webui/instances-browser.test.mjs.log
|
||||
5b2f512d0f4bf5e17adcee745c23d1021dd7c4869789299d4ab52fa6c9ed8298 agents/magica/work/queue-285/gate-r4-final/webui/instances.test.mjs.log
|
||||
55e3694e3b59f4320f37d53aaedb66b2e938dc07e6808ac0988106c399647bbf agents/magica/work/queue-285/gate-r4-final/webui/library-cli.test.mjs.log
|
||||
cc94f4ed5249f82a6232cf954e2dae7becd2ddc31a26d1c295f7f5e6590ffd5c agents/magica/work/queue-285/gate-r4-final/webui/library-status.test.mjs.log
|
||||
caa933e4d7939d3caa7de1e0f80614de9f7be92647375e397b54fb4bbcad6fdb agents/magica/work/queue-285/gate-r4-final/webui/limits-browser.test.mjs.log
|
||||
a896f5c083e56928b99af933e572b55487b8c7d4f9a2028135bcc2098376f3d6 agents/magica/work/queue-285/gate-r4-final/webui/limits-route.test.mjs.log
|
||||
78cc45f8fc5023e6582f9ac9aa22cfaa9bcb6d76fc86d0f0bbf0df438c60c652 agents/magica/work/queue-285/gate-r4-final/webui/markdown-preview.test.mjs.log
|
||||
576ccf1c467937853bd0b666af20957b7d5424c07cefbf49e3e3b4d9e4b696ce agents/magica/work/queue-285/gate-r4-final/webui/messages.test.mjs.log
|
||||
662f18ee5e668b603a7699ccd53a3de92ed6f195e7cc620277e80b97e8bbfe36 agents/magica/work/queue-285/gate-r4-final/webui/pinned-copy.test.mjs.log
|
||||
722ff7f74f394a3acf7735fe6703fe7b2f8dca9d8ce3969f3a3061d3c66d36ba agents/magica/work/queue-285/gate-r4-final/webui/preview.test.mjs.log
|
||||
de9952d211f777cc66aab61eff74ed6dcf7c6a5b4090813a32bd61165a398dab agents/magica/work/queue-285/gate-r4-final/webui/processing-browser.test.mjs.log
|
||||
0b8d64eb89a1f732cea19a81ae69feb2d8e50b77e42271000c5b268f798933aa agents/magica/work/queue-285/gate-r4-final/webui/processing-ui.test.mjs.log
|
||||
a260f098c5fa7ca1b1557889742a70fc085237dc26623e9552114d3dcbd57c27 agents/magica/work/queue-285/gate-r4-final/webui/processing.test.mjs.log
|
||||
26d05e87bebdaf044c97f50bd9367182664fa9249ea4b2174b212941d497f08c agents/magica/work/queue-285/gate-r4-final/webui/project-file.test.mjs.log
|
||||
e328e56f0e5463cd6548abab7561697a5f2ed15ccb101aa062d8de5344da8174 agents/magica/work/queue-285/gate-r4-final/webui/project-name-repo.test.mjs.log
|
||||
fbcc7c0a98cda711ae1600cb076990f8ba1f60e47aaa5001e8a417eadf1bc3d7 agents/magica/work/queue-285/gate-r4-final/webui/proof-cli.test.mjs.log
|
||||
45935f8c68faf691de7e127fa45bb4e777068031ec0c3327e8d3b67e50087f6d agents/magica/work/queue-285/gate-r4-final/webui/proof.test.mjs.log
|
||||
6155351033101ad33922a213720290a1d00eb1edeb63963fd6a7840b0e2b1c1f agents/magica/work/queue-285/gate-r4-final/webui/reads.test.mjs.log
|
||||
f5accc684809da649359a26acf7a9cb555874b46ddf7c6df921365764b08b6e8 agents/magica/work/queue-285/gate-r4-final/webui/relaunch.test.mjs.log
|
||||
7b3c389e64cfc5cabad106ffa328944c4ebfaf3b92982512a60f7032f8146a23 agents/magica/work/queue-285/gate-r4-final/webui/return-flow.test.mjs.log
|
||||
4cb0df5263ff01160eceb3491dbc911ca99221db6fb7fab1b6276fd04eac2a83 agents/magica/work/queue-285/gate-r4-final/webui/routes-browser.test.mjs.log
|
||||
67470a61a57567bee2d12cdf75ed8a33d4ae39b407a67e2c79909f9ef4561220 agents/magica/work/queue-285/gate-r4-final/webui/routes.test.mjs.log
|
||||
ef6bcdc1c45be394ebfb93313339a001ff99b2be16f3d2408e454031cb3a4529 agents/magica/work/queue-285/gate-r4-final/webui/send-browser.test.mjs.log
|
||||
1d638b9c08aea844a62f112ab791097286574d0f249dfd4157d363483d92efa6 agents/magica/work/queue-285/gate-r4-final/webui/send.test.mjs.log
|
||||
c2f493dc4905153a63df26e4fd76cde7ac139ef7e39370743b55bd5f1ccf4ab1 agents/magica/work/queue-285/gate-r4-final/webui/serve.test.mjs.log
|
||||
61b5164cb80c00d9ff71b80ef01f96c291bfb1740e168cdea32ca63f4b218548 agents/magica/work/queue-285/gate-r4-final/webui/service.test.mjs.log
|
||||
099cedbcaf1c4f6cb3a0024aedb184236d2a00c2af7c55b5d67be0d0bf1afd1e agents/magica/work/queue-285/gate-r4-final/webui/settings-form.test.mjs.log
|
||||
181b7fc3a479d0abd7c3114a4695faf11e5145e523decd644ea6215265ff06d0 agents/magica/work/queue-285/gate-r4-final/webui/settings-write.test.mjs.log
|
||||
340079e82aeb2d9d0ee0ff6463f0ae47d4ed707c5e9d9a2e592cd4327e8ea439 agents/magica/work/queue-285/gate-r4-final/webui/shell.test.mjs.log
|
||||
53b064bc3b3c017970e0c16a3a1da66266cbfed1f792489fafb7e95af1655f77 agents/magica/work/queue-285/gate-r4-final/webui/sso-browser.test.mjs.log
|
||||
146d1bf3b80b263125051882ea6ebeb3247c8f4fab8bb473179242b79af123e4 agents/magica/work/queue-285/gate-r4-final/webui/sso.test.mjs.log
|
||||
1ce10b90a902b8cf84dd77a59c2875ba6b94c4a34729937f76e51ad8b44345b1 agents/magica/work/queue-285/gate-r4-final/webui/tester-browser.test.mjs.log
|
||||
594a5bf5a631c354e59e3744669511fc7a2e693cdd28b186bba1658fa67eaf79 agents/magica/work/queue-285/gate-r4-final/webui/tester-cli.test.mjs.log
|
||||
33fb281013c2ac16882786c903248593e0ffd487877d652c68875061fc33a347 agents/magica/work/queue-285/gate-r4-final/webui/tester-listener.test.mjs.log
|
||||
526db1ce167e0f82e612a2d78be459d4cf5316a9b7079720ab55244ebb533bb1 agents/magica/work/queue-285/gate-r4-final/webui/tester-socket.test.mjs.log
|
||||
f55b3f91f0c6dca56ea7074cb2554d6faa3f7e06d9c119f0bcc9d05c92afa4df agents/magica/work/queue-285/gate-r4-final/webui/thread-claims-browser.test.mjs.log
|
||||
1bcdb62e5eb3bb51c1b27ecb7fe93ee58b74c67a054e758dc2da296e93085806 agents/magica/work/queue-285/gate-r4-final/webui/thread-claims.test.mjs.log
|
||||
624f64c743c4aca0a4db544471feb9b314fa3a49f8afc1749ea2dd025f58109b agents/magica/work/queue-285/gate-r4-final/webui/thread-sharing.test.mjs.log
|
||||
59c15497d79daca89e120425581bc8ea54d5986c15013e9cd314fca89148d95b agents/magica/work/queue-285/gate-r4-final/webui/usage-browser.test.mjs.log
|
||||
c2780f148ebda3b352150a67c3730ab0baa1a0ffdfb73ea639d705772fceaef1 agents/magica/work/queue-285/gate-r4-final/webui/usage.test.mjs.log
|
||||
3291a2f883c5aeefabf115a44d07c052e126bbb9499b2b41960f4a6cb8510f26 agents/magica/work/queue-285/gate-r4-final/webui/user-option-swap.test.mjs.log
|
||||
3d85724ae7651b9ff539d8e3c25a7cfc60eaf2e5a56582b682e87f4668f16da2 agents/magica/work/queue-285/gate-r4-final/webui/views.test.mjs.log
|
||||
2301247e29329c02a608b881b572c254c2cd514ed98bc8a04c2a329c92c4520a agents/magica/work/queue-285/gate-r4/bus/access-revoke.test.mjs.log
|
||||
4a43dcba0cdf84153d46825f480e80eb863288a55797b29bd4629d59dd99d788 agents/magica/work/queue-285/gate-r4/bus/account-migration.test.mjs.log
|
||||
ce44bf644471d547cd0fc180eeeb7c9310ca78151c29f6193c2229eee10c23f1 agents/magica/work/queue-285/gate-r4/bus/address.test.mjs.log
|
||||
344c03cfe33d7bdb79c8019ad9fb3d23eb31a80547ed056a9d026d19f7722162 agents/magica/work/queue-285/gate-r4/bus/agents.test.mjs.log
|
||||
2288290e04514e4a5540d462f4bac1ac1c1d0b9db3c54c143272412d946b5d9d agents/magica/work/queue-285/gate-r4/bus/approval-binding.test.mjs.log
|
||||
0ead07d6718b82669664a68a6d7883e2037c1f8bcf139ab6e183e329f9b117a0 agents/magica/work/queue-285/gate-r4/bus/broker.test.mjs.log
|
||||
f322dc4850567874dfce72d67cfeac8aff2e7bff9360ceb44bc8206e90655fd6 agents/magica/work/queue-285/gate-r4/bus/business.test.mjs.log
|
||||
b32faa27170cd78866e46b304aaa3731fc7d5749bb4039a7e27f6fcd61d58458 agents/magica/work/queue-285/gate-r4/bus/channel-proof.test.mjs.log
|
||||
66d815a014fe20899473c779c62e528d906184186a8309c4f4f63028cc5a6af0 agents/magica/work/queue-285/gate-r4/bus/chief-of-staff.test.mjs.log
|
||||
eb80cef4643b1706d28b871aed6a225c1e787dd5064d2a64555b0e0896d63749 agents/magica/work/queue-285/gate-r4/bus/citation-availability.test.mjs.log
|
||||
fc58f27e45575018e4eeccd07dc40222ce02cf044490df338c1e778e3eec0c66 agents/magica/work/queue-285/gate-r4/bus/citation-guard.test.mjs.log
|
||||
6837c51f688711726a2da3fa6f22eab56ef0146e5cbd47ebe00a27c0c51d748a agents/magica/work/queue-285/gate-r4/bus/citation-runtime.test.mjs.log
|
||||
862418d3d4124871ca5fcaf35e16c318a04e2888da83836751ddfea110efeb06 agents/magica/work/queue-285/gate-r4/npm-root.log
|
||||
d6c57ef19d0a160284ba6cc6b577b3e7ad36521987379584e499812c1fbbd200 agents/magica/work/queue-285/gate-r4/npm-webui.log
|
||||
8b817148218c3f0bd9c76c19ea9e2faee106f09e3f1ddf1f9aec8a4941132cfe agents/magica/work/queue-285/gate-r4/run-mutants.py
|
||||
002764b7dec7523299cd104956c3a967b2020c789562ced6db88d7a36714c5af agents/magica/work/queue-285/gate-r4/run-suites.py
|
||||
c8859b8cb4f817417cfbb48cfb4a89071e66c8bca76cc85b8e91e952094e2580 agents/magica/work/queue-285/gate-r4/runs.txt
|
||||
136f9094d1d2b7930d00a210646075d378c9fc453620345cc9553fd92b87a6e7 agents/magica/work/queue-285/gate-r4/tmpdir.txt
|
||||
165ac8c20da4b9be0329cdb0d9b3e7c6af53446d50f9e1f6f64cf8c96f4eef68 agents/magica/work/queue-285/gate/bus/access-revoke.test.mjs.log
|
||||
a436e7ca6e054568a7a63e46fd773b17538f391dfe9df946ad689eab41cb841e agents/magica/work/queue-285/gate/bus/account-migration.test.mjs.log
|
||||
75767c08f131d0c25e21c1305a80a78e039856aff8f10f606e5b08974ee69c41 agents/magica/work/queue-285/gate/bus/address.test.mjs.log
|
||||
e2373d3d32af47283add42ea6c9251a215fd9786f07ccb7c1045634c59ce06c6 agents/magica/work/queue-285/gate/bus/agents.test.mjs.log
|
||||
03bbd4a0be1f4f833873d83667d788b431948d670992e3e4499d150f1267527b agents/magica/work/queue-285/gate/bus/approval-binding.test.mjs.log
|
||||
c7be2d9a24f04c3804aee9576f5e116e4a3e0677c67177a520554fea4922849d agents/magica/work/queue-285/gate/bus/broker.test.mjs.log
|
||||
3351cad8e07f8d5250b8bb0c2f1b37717c51760f20b52f81b33c0153bcb13c21 agents/magica/work/queue-285/gate/bus/business.test.mjs.log
|
||||
40cb6683cdfa251bf28732bc435da2099338199b7825ac9b2d22427ac39f8a98 agents/magica/work/queue-285/gate/bus/channel-proof.test.mjs.log
|
||||
23347dfe0c38e100848e8b8d0ce6e834afb02dd1cb261c667305d8275f6567a4 agents/magica/work/queue-285/gate/bus/chief-of-staff.test.mjs.log
|
||||
db1d36645416814000c674b5b19a18ea3c8300241e87b3b8eabd16dccf271da4 agents/magica/work/queue-285/gate/bus/comment-cursors.test.mjs.log
|
||||
0ba4bfbd04a536c85e0acc89cba86d58d695bb43567a87b30948e91aa5ec8966 agents/magica/work/queue-285/gate/bus/comment-migration.test.mjs.log
|
||||
82d3a17772d9189b37e4bac2cadf32284c80a7e9207325bc473ba52efb73cf63 agents/magica/work/queue-285/gate/bus/console-decide.test.mjs.log
|
||||
8b9bd28443d6aff77514175541997e780ef7e7d1179055bc2adaccaaa54eae22 agents/magica/work/queue-285/gate/bus/creative.test.mjs.log
|
||||
5aacc8eed52059ddfe4ac4eb0ee9dca81ac9e47e688d0e381b74ba68ca808fba agents/magica/work/queue-285/gate/bus/credential-claim.test.mjs.log
|
||||
04309d1a801ba0f915b60d7d0653edf6241342b46bc7ceb5c83b6c67325cf639 agents/magica/work/queue-285/gate/bus/credential-status.test.mjs.log
|
||||
5567d28417bd12913c101408978b95b777cc2ad2a0e6fb92c2e84d2192bf8f52 agents/magica/work/queue-285/gate/bus/credential-store.test.mjs.log
|
||||
7f5ca995869e71e57385913a490c3cb7c90134f745fb771a6a81d948b879f685 agents/magica/work/queue-285/gate/bus/credential-verbs.test.mjs.log
|
||||
399d43e4c4c51892d95538ef3d0d09a70d20842dbf65710f5e4fb1590675e733 agents/magica/work/queue-285/gate/bus/credentials.test.mjs.log
|
||||
684e1f6eaaa0f187eae523378f76307cda73a57b4012d4deadfa0aaddc812cfd agents/magica/work/queue-285/gate/bus/csuite-messaging.test.mjs.log
|
||||
8ff7b07491ee4a6072cc9dbb4991c41e6369fc386538ab7225a418e8fdfdf6ab agents/magica/work/queue-285/gate/bus/daily-quota-runtime.test.mjs.log
|
||||
c987d0b0e2c5dff3e015cbc7813a2a87c48cd6d707e36e605f423f97e5d8054d agents/magica/work/queue-285/gate/bus/decision-close.test.mjs.log
|
||||
e321bb6e0628d79f4028150ab5ea65c327abf7f450915ffdaa80ba285c13c958 agents/magica/work/queue-285/gate/bus/decision-route.test.mjs.log
|
||||
0a51741dde7a835f0ab70e951da6d9890f934bec9ae05eaf18f416c41b922026 agents/magica/work/queue-285/gate/bus/decisions.test.mjs.log
|
||||
53851504776f91dbb95ffffb7c7479e471ef2e8d7e52a5871d59f2c64276b5b2 agents/magica/work/queue-285/gate/bus/end-launch.test.mjs.log
|
||||
6d3fa43627daeff987bea6cc8961c7d13ea13835c6b0b1510141640232c5d4ad agents/magica/work/queue-285/gate/bus/fire-revokes-grants.test.mjs.log
|
||||
62c79ab8d953f4fa9ede64fd7a1b269bd4fbbe0f7d7106881564316fc0b36133 agents/magica/work/queue-285/gate/bus/gitea-grant-docker.test.mjs.log
|
||||
374bc9ef18a5d933595a0ca581b8e3a5d13c77af32714d501e45bbd9a2b60ab2 agents/magica/work/queue-285/gate/bus/gitea-grant.test.mjs.log
|
||||
65441bf33ed60d11010baecafe6aa717471e5d9294adf4715b6d96d62d1685ca agents/magica/work/queue-285/gate/bus/gitea-migration.test.mjs.log
|
||||
10cbfdc931ba04bdee002e1f8d8a09066fe5bc93077fedbe28a790ee10b1e1d8 agents/magica/work/queue-285/gate/bus/grant-enroll.test.mjs.log
|
||||
109ada8149d171908d9386ebe3bae256f08b655b144f5b81067a95b9a2583927 agents/magica/work/queue-285/gate/bus/grant-executor.test.mjs.log
|
||||
2caadd7e81c411654458d4b36f7952d8a2c960eb596da478db970f5740a1a4ae agents/magica/work/queue-285/gate/bus/grant-host.test.mjs.log
|
||||
0da06c51f5d099f52551a325dc086f1f11c4a5b7391257394b591f099c6fc7ce agents/magica/work/queue-285/gate/bus/grant-migration.test.mjs.log
|
||||
c97a307d8ac1a4a3db14ed348aea3cbb4fe198b34b54bcce46aaabdc8a4d6a95 agents/magica/work/queue-285/gate/bus/grant-scope-runtime.test.mjs.log
|
||||
5066e51566443813fe6f0fe4516d5295532a9f807f4a34e5e5a1afb9a5ec5b47 agents/magica/work/queue-285/gate/bus/grant-scope.test.mjs.log
|
||||
947a27ef64b666032932b1833ab53fa7bc993eb3345000669696fc24589cf1eb agents/magica/work/queue-285/gate/bus/hard-waits.test.mjs.log
|
||||
02657421abea0327f6781c50a8c1513ce6664b15e08ff75f72a94d441d083744 agents/magica/work/queue-285/gate/bus/host-run.test.mjs.log
|
||||
1d950acf9c32213a2b6f841fe2d42c9a2b6ff4e66bd0abbb3429603ef4403d99 agents/magica/work/queue-285/gate/bus/host-tools.test.mjs.log
|
||||
5903235cc1763f13af0d777960a67a6ffea168488019a5c6aeb4c01872220e7d agents/magica/work/queue-285/gate/bus/human.test.mjs.log
|
||||
3230e31a897004c250ca99a3f1a4a1cf94b646137104ac8dc0343fa3d16c02c0 agents/magica/work/queue-285/gate/bus/instances-verb.test.mjs.log
|
||||
70e23d6f009a589f4e78762228a7d7540efd7a8ce562c8ea4ead40f6c6418546 agents/magica/work/queue-285/gate/bus/interpreter.test.mjs.log
|
||||
eb9b5778296bf89bbab64fc55556e984d32cc568b3e5194e6238dbefb631677a agents/magica/work/queue-285/gate/bus/land.test.mjs.log
|
||||
21d336357d7fca1e006ea05645f73d1669620932204faab0be572858e695c566 agents/magica/work/queue-285/gate/bus/launch-notice.test.mjs.log
|
||||
fd59e17bbafb07d815900b2f211ab51a14db9dbdba02433afec4886a0854f644 agents/magica/work/queue-285/gate/bus/launcher-released.test.mjs.log
|
||||
054f68f34f628e4ee7fb197c8d836a8e66a9dcecfa1c8cc38b1d13fd6bfd5c2d agents/magica/work/queue-285/gate/bus/library-sync.test.mjs.log
|
||||
a7a2a4a808f1687b8beebf658a9f9d76a737a73fb3ec71a97a5018e0c2964e93 agents/magica/work/queue-285/gate/bus/library.test.mjs.log
|
||||
f189b4f29edad63cae4907fe3418aefb79d68910067a3ab2a08976588346663e agents/magica/work/queue-285/gate/bus/lifecycle-revoke.test.mjs.log
|
||||
a4a7824fd964f9379a3227ebfe34a07b321c5413250e1309153f24adee2bf9b1 agents/magica/work/queue-285/gate/bus/lifecycle-verbs.test.mjs.log
|
||||
e425f66a75d86741101e6ba70394399d73bdd22e916a1e68c72da1f2ed543fce agents/magica/work/queue-285/gate/bus/limit-checks.test.mjs.log
|
||||
3a9675b63d8b1c2ccf2984a876eb08b87ae468dc4972674793a0f606de13551b agents/magica/work/queue-285/gate/bus/limit-stop.test.mjs.log
|
||||
d63cb10293343d694a43954cc8c432818b025df7ff8f51db49bf867dc0ca3315 agents/magica/work/queue-285/gate/bus/limits-runtime.test.mjs.log
|
||||
07a1544ec279b78b47f4657650501282607ad850d2eaeeeae3295a279d9fc7e9 agents/magica/work/queue-285/gate/bus/limits.test.mjs.log
|
||||
2765b2e390dcac152a35074f1ddaf72276420ca720fe43d42050b5c6aa433888 agents/magica/work/queue-285/gate/bus/message-citation.test.mjs.log
|
||||
e40fd5ff47d3d32fc11d9126bc1e108f5dbc0aff412a4bd14ec582eebe60751f agents/magica/work/queue-285/gate/bus/message-filter.test.mjs.log
|
||||
400b09c158043b38be5d99c107382d37d97fda0a3dfe22e995ceaeb7cb522f6a agents/magica/work/queue-285/gate/bus/messages.test.mjs.log
|
||||
6670bf47c54d00616506d6290554dc63f8c6b4502d247a29c52c7c5c0e4b6247 agents/magica/work/queue-285/gate/bus/messaging.test.mjs.log
|
||||
1e023f038447df07f7d4ca2bb03577b76c58b5f282809d611f33580640d3a1f1 agents/magica/work/queue-285/gate/bus/name-migration.test.mjs.log
|
||||
6c5a360b4a470ea749718cd68b58bbf417d41d841ae08a26c32cb634ac8aad41 agents/magica/work/queue-285/gate/bus/names.test.mjs.log
|
||||
094f3462a2c6a79ffa2faf24b37b239aa05196c5996ca6dc9da6ee644bf03f08 agents/magica/work/queue-285/gate/bus/peer-transport.test.mjs.log
|
||||
5e7b1b06498d9199e7e05b7d39f55b2fd57657c93f8e4b3862b0918063b7fd9a agents/magica/work/queue-285/gate/bus/peercred.test.mjs.log
|
||||
937d26c22ce9a068e3a38ecea0189d8a2debfb88dc28c3c5f83d6dc0147839fc agents/magica/work/queue-285/gate/bus/plugins-verb.test.mjs.log
|
||||
1b8a4989d11d7fd6c6164a01a34eca66f695fbe9d3eb06773bf0e548c7e4e48b agents/magica/work/queue-285/gate/bus/principal.test.mjs.log
|
||||
099b5e4b8c26c889531d7d3afefbbae79b7ae87507c6d161294a6c6ba8e04cfb agents/magica/work/queue-285/gate/bus/process.test.mjs.log
|
||||
eb7c22be7730a85f4f1cac7b1737df39b165e66fd9d8ba66930f15925c712238 agents/magica/work/queue-285/gate/bus/processing-runtime.test.mjs.log
|
||||
93ba31f03d968b87f814c2e7009ec276978d7e6ef61dc089704aaf65ebdd2545 agents/magica/work/queue-285/gate/bus/processing-timeout.test.mjs.log
|
||||
10759e851164ab0ddb89e71d53b3c3ac7b2fc303dd3c7ff73facd8a891872623 agents/magica/work/queue-285/gate/bus/processing-web.test.mjs.log
|
||||
e269b422237101df3cfab8b7a2de7aa34aa72deab6c61407682b9ba7603a8dfd agents/magica/work/queue-285/gate/bus/processing.test.mjs.log
|
||||
02fcb70eacbf9de218e9e374f15bf5754dc6f252f44d59251b215fcc38e76bbb agents/magica/work/queue-285/gate/bus/project-await.test.mjs.log
|
||||
5fc4a03a3f81b0e9e00a26feb41a6850b9d22f03eb1e87ea08c369a294458075 agents/magica/work/queue-285/gate/bus/project-files.test.mjs.log
|
||||
c2c70614e4e506f90d4fc6fecd2fcf1d9f8bc6b3baf665bd42c0bee7b521716d agents/magica/work/queue-285/gate/bus/project-runtime.test.mjs.log
|
||||
9ccc38a678edaeb50e78dd32ff1a63483c1a09c95416dc6a5ccddf8395033744 agents/magica/work/queue-285/gate/bus/publish.test.mjs.log
|
||||
26eed9482a90f8d590970450cc60fc2e0645affce783e3b5e6cc572d2cc35511 agents/magica/work/queue-285/gate/bus/reload.test.mjs.log
|
||||
8d1f47d9a6a0d0e399591812fd1d6074185c98f99c8e4445650607e099ce8644 agents/magica/work/queue-285/gate/bus/replies.test.mjs.log
|
||||
fc7dd97ba577e0c8c349728ed007b5c1bc380d39bc037513ba03b1b94cfd8143 agents/magica/work/queue-285/gate/bus/requirements.test.mjs.log
|
||||
6aba909a93806dbf597948361491675f51bbeabfb2da8f96b09188107f6cba22 agents/magica/work/queue-285/gate/bus/review.test.mjs.log
|
||||
f9ebaeb0cd19803b9820bafafe22b0d11fb92140be0e2cae48e2a822f65b86ff agents/magica/work/queue-285/gate/bus/revoke-window.test.mjs.log
|
||||
d1857b0811c788381ce70700a635565f04e159f4c691ba2ec500670ec0e67bd8 agents/magica/work/queue-285/gate/bus/rooms.test.mjs.log
|
||||
f7912e8d5e62ed5c762611c2d6994cd5b14ade2c613a03a981b6147da6db8c3b agents/magica/work/queue-285/gate/bus/routes-verb.test.mjs.log
|
||||
19db352329ef1bb3961589426cd98b738d766737583ab8a959a399298d4a3e56 agents/magica/work/queue-285/gate/bus/schema.test.mjs.log
|
||||
067e1d55602bbbd8441b01fbf98af30a0c2a4c2f735795f686b3004cc7c569cb agents/magica/work/queue-285/gate/bus/session-clear.test.mjs.log
|
||||
ee0645812caa720a6c6dadb87a507c9b6450e53d64f129a934c9715a59ca7e31 agents/magica/work/queue-285/gate/bus/session-compactions.test.mjs.log
|
||||
a0f4063b62e33829964d01c4701f6fa53a1a4e04db130556995fdeff57c5b98c agents/magica/work/queue-285/gate/bus/sessions.test.mjs.log
|
||||
d7cec28d86382f4257e5a5fa43830f057e2816916e5e3a889f2c49143a76e05c agents/magica/work/queue-285/gate/bus/single-use.test.mjs.log
|
||||
952b00b4b8be9e9b040859e3b1bf1a998d42ff60994ae56acbea3b9dce7aa109 agents/magica/work/queue-285/gate/bus/spec-migration.test.mjs.log
|
||||
4ecb30123315957c85c0cf57a3f9a37458516c7272053f422e776acd4538b6c3 agents/magica/work/queue-285/gate/bus/spec-review.test.mjs.log
|
||||
fd6ef3a781f6a6877ca983bf6aab2575b318484ce02332d73906726d94bd25a9 agents/magica/work/queue-285/gate/bus/spec-socket.test.mjs.log
|
||||
99bfda4b5a4a51ee2510b9063443ce595ec2c0fb6b9468a53779cca841aca137 agents/magica/work/queue-285/gate/bus/spec.test.mjs.log
|
||||
a46ff7b32c3828c5ca155c764baf010484b20ddddddce01313d9c80a7268f52b agents/magica/work/queue-285/gate/bus/staff-request.test.mjs.log
|
||||
62235e85812e9043c30f354b7f2845b9556e00f41730140e3427ee2e00962213 agents/magica/work/queue-285/gate/bus/state.test.mjs.log
|
||||
070c1062cff973022ea79efbe5fc60871e5e4b18f0313d7e1c824c959744353e agents/magica/work/queue-285/gate/bus/store.test.mjs.log
|
||||
31b0bd06d46b362caf29df339bc327cbcadd19c9be5a844528505dab4faa2890 agents/magica/work/queue-285/gate/bus/task-page.test.mjs.log
|
||||
e46273799cf36af56b2e18e276a8823e7236a35e32f5dca7e2a569c891860485 agents/magica/work/queue-285/gate/bus/task-read.test.mjs.log
|
||||
123f9f597326ab4f1f7b7bff25a4d642235ed601213ba68fa7c381e1333cc331 agents/magica/work/queue-285/gate/bus/tasks.test.mjs.log
|
||||
f92b53ae3c01de3abea42f271dcc5c301c8435b929da95d4b70d434a3b61cc97 agents/magica/work/queue-285/gate/bus/tester-threads.test.mjs.log
|
||||
c82fd429354c28acd70c88484c415c1cdd55442ed26f55539ff298179f417b69 agents/magica/work/queue-285/gate/bus/tester-writes.test.mjs.log
|
||||
6c1258f59be227961d53a31b709da31d9602557d240b859aa7a385cb9c8ba103 agents/magica/work/queue-285/gate/bus/tester.test.mjs.log
|
||||
1d9eac085ace72c24be5a5b7b2c623faba046f8d3355c43acdce40a11f25b6fe agents/magica/work/queue-285/gate/bus/thread-claims.test.mjs.log
|
||||
c2ac5ac38d0191328a6af9a464de7c6d929a63036a8082d148361ada35bd2fdb agents/magica/work/queue-285/gate/bus/thread-migration.test.mjs.log
|
||||
b0830e1c8443571f0c53a58cd754758db0034ee794ca3dab99b2985c25ef68d8 agents/magica/work/queue-285/gate/bus/thread-shares.test.mjs.log
|
||||
c58fa57661b4177265853846b57a0c47451428921401ab3eca5b1577f9c29f72 agents/magica/work/queue-285/gate/bus/threads.test.mjs.log
|
||||
3cb75a70732b8ed97f1721c12f3a944a2584907c5b3630556e4b1928075d7b50 agents/magica/work/queue-285/gate/bus/transport.test.mjs.log
|
||||
1f8396749c5352b3e731df8476c69edf4a0096a74a8901572b0806026a3f843e agents/magica/work/queue-285/gate/bus/usage-broker.test.mjs.log
|
||||
fd9657c6e3f60607ca105e886b4a63827f599473b0bfbfe73f4385b8b3846284 agents/magica/work/queue-285/gate/bus/usage-migration.test.mjs.log
|
||||
d3725b7e60f6f8e20613025ef776cf8dc8d02f7be307f662c648595ab65f234b agents/magica/work/queue-285/gate/bus/usage-runtime.test.mjs.log
|
||||
884e803280118072211f38f9719e146a2b691e00dde95398955e86604a47725b agents/magica/work/queue-285/gate/bus/usage.test.mjs.log
|
||||
c2daf35d42fb8065fff27135f0107d50a2bbe7e7123d084d5168a7a3afd77fef agents/magica/work/queue-285/gate/bus/user-principal.test.mjs.log
|
||||
7df90f279bf33f7f0afb46498e7dbe2a6e0f7638068cfb2d43ebdebf8c559f0a agents/magica/work/queue-285/gate/bus/viewer.test.mjs.log
|
||||
a4cd50f2f91fcb29ecfa9282e8ff8b904c4f0f39a3bcf25ab2bcf48a1edd08a9 agents/magica/work/queue-285/gate/bus/web.test.mjs.log
|
||||
12b98a74ef4f5b66753a9f5394a14c912df0763d3def383a8fd505d8254f41ba agents/magica/work/queue-285/gate/bus/workflow-roles.test.mjs.log
|
||||
3175b43dcbb4af1a804e31398dc9c44950e74d928eb6b9b903be7f1bc6a71f15 agents/magica/work/queue-285/gate/business/access-levels.test.mjs.log
|
||||
7a18722118a8f810387fb748de3ccab936654511a8f65912d65af2a64be27723 agents/magica/work/queue-285/gate/business/access.test.mjs.log
|
||||
b0b6cc83e1551c9090b9098751a180b6a7fa366d475b2eee5c8ab1dc29202067 agents/magica/work/queue-285/gate/business/agent-identity.test.mjs.log
|
||||
cdf62e328974ebb3af77cee2470c82e1658fc666d73457c48a1462e548a407d5 agents/magica/work/queue-285/gate/business/assistant.test.mjs.log
|
||||
b1d758b7003285c5962a1e51195cea7fe5e0074764a81fdeef1c90980ef6cb30 agents/magica/work/queue-285/gate/business/business.test.mjs.log
|
||||
e06ace69f48d9efb8b94db93ae30d87a995b47383f7a587c356c7e94c9cd0279 agents/magica/work/queue-285/gate/business/case1-business-file.test.mjs.log
|
||||
8dc64b303566c560d4ceff68c2102cfd7f2d629520d51a3a4d7225c40b727f8b agents/magica/work/queue-285/gate/npm-root.log
|
||||
d37ae47c1ad8ea6189f8eb044879a6a870ac25e4dde31b1dbcec1627afc063d7 agents/magica/work/queue-285/gate/npm-webui-r2.log
|
||||
7dcee599b2fa3d318aa251a45a3bb6534875614a7a5162037b537dab2fb40ab5 agents/magica/work/queue-285/gate/npm-webui.log
|
||||
b59cea53f5f27343cc482951b5ba84e0572e97affa305a8488cb24f07a5b036b agents/magica/work/queue-285/gate/run-mutants.py
|
||||
68434cb6454d426dd30859933fbcc5f4f47645b4c3e242505361607f5b367f57 agents/magica/work/queue-285/gate/runs.txt
|
||||
2a9f8f15f0c0f54f6b03b790767aacae868367fad0a48c8281b25ba48573c2e5 agents/magica/work/queue-285/gate/tmpdir.txt
|
||||
08b1950154484173715a761684864a92c0b83ff77d5f87b4d603d1e01a67e979 agents/magica/work/queue-285/hex-pins.txt
|
||||
4d7feff6cd3d9e6f3b90cce5ea199f7b6eb6c24d2908f6f3fdc72536b0670cb5 agents/magica/work/queue-285/r4-range-diff.txt
|
||||
9f2585f97b57aa4c14be990a72eeaf0fa5da877660a3e66f878e5e6c611176aa agents/magica/work/queue-285/readers.txt
|
||||
6a199bbd12fd4ee3183397ffa69a69da6d46e09492346584829d34740530cb6b agents/magica/work/queue-285/role-readers.txt
|
||||
91babb2a30a47167abef606a2b78fa25e4d285f40e35be8cb33212771ebdd27c agents/scrooge/work/queue-285/BUILD.md
|
||||
96d3a49f9154448520b74dc4acefbc78fc8d3b1f3038119fd909e3f318484f03 packages/bus/src/broker.mjs
|
||||
1f61878d74a77f3245bb29e56b600220daf224e73c2829aed74b317057628f6e packages/bus/tests/citation-runtime.test.mjs
|
||||
6f123ecfe86be3eca025c271239ba79a96d0db16a663adb3aaf7dae971dd1e7f packages/bus/tests/creative.test.mjs
|
||||
9af7b4678f17d975218a9aee5f4c6a0fe256dcf0f2e508d5121b0feda9b4f110 packages/bus/tests/gitea-grant.test.mjs
|
||||
9ab6f3bdcba52cc50cbd5efd587579303fe91041a18e5f360a2db30e29c7d011 packages/bus/tests/reload.test.mjs
|
||||
8e13676d0cf5d661b3049ec022a44c0665f91808aef1e373a6bf73728cba0feb packages/business/README.md
|
||||
3f13c07e9c51b1d328565f40f8001bc4475821d1985611164e99d2b08da97dc8 packages/business/src/business.mjs
|
||||
f9d2d88b3ba53acd5ac51014f57db83ded428bd072a4ab68a9c2f87418030edd packages/business/src/instance-settings.mjs
|
||||
b10af84d7422da4d0e8c0a4fea1064eebbc2fac6a838a1b3939b554e22dedfc9 packages/business/src/role.mjs
|
||||
de1f04628e400084a46e77fd7e03c7a039f0f80c9e07bb486c9c012f187aa3eb packages/business/src/vocabulary.mjs
|
||||
212309b5dc1ace2b653fa3c5489a48590bed1467f0f66a231dc88b20ed1f2fb9 packages/business/tests/agent-identity.test.mjs
|
||||
5b643c6af967578c8bef563a24554e207078f265621ba0c08dd63d9afe9abe62 packages/business/tests/business.test.mjs
|
||||
8310b8eef4da2fa88d92a35ae1ff62e36ec699700ba246b900bd468d13c4937c packages/business/tests/chief-library-credentials.test.mjs
|
||||
066befd2210dcfe5e3f395f0e7832e19a68c4673a6ef474106e2801b92cb75a6 packages/business/tests/chief-of-staff.test.mjs
|
||||
6c96c5e053fa7f43d18c1a65e8b99db00af84995b29ca941524ff3bca71aceeb packages/business/tests/cli.test.mjs
|
||||
ef811fb3495e9d60b09bda46e4192bed37a4eb5ff03be8bc3b075d9e40c55125 packages/business/tests/hard-waits.test.mjs
|
||||
b645c946e50add7a9114a5a5096e19ccb03064ca66a7ec8948ded07a3f2d23d5 packages/business/tests/instance-credential-transitions.test.mjs
|
||||
0746c639a4149f5b1731f4392791d626d8b339bbb2647807c9c1a572bb30858f packages/business/tests/instance-settings.test.mjs
|
||||
786ba2fd66779700b874230c4533c85d16e1b0a4e61e2d286163e6b5882974f6 packages/business/tests/launch-settings.test.mjs
|
||||
a574d95326d716da34063f2cabfe9537bc3298671743d1472bbc2bf5f2039fbd packages/business/tests/library-projects-protected.test.mjs
|
||||
27119cb07adeaf39a455ff8b4e4d011ed566eb1259e8ea58332db4033733988f packages/business/tests/library-seats.test.mjs
|
||||
0bd9bce351df3e0275661952dcc26a381a606e4b24ec57f4aa72e11a6edbaee7 packages/business/tests/lifecycle-settings.test.mjs
|
||||
adcd605a0524df6b3aa98d934746376669f2caa11aeaeb3809753e07f1a57678 packages/business/tests/resolve.test.mjs
|
||||
569c52a78a35b9dbf2eea88d84f4416f13cd0d7faddd999eb3d283510408de11 packages/business/tests/role.test.mjs
|
||||
ff515ce6e43411c6549a0e073776131fc97d6eed0fcaab09f315f2eb129926f9 packages/cli/tests/case2-install.test.mjs
|
||||
8d4370f0015e5d9c316358e2d849f9484894eb5408f25e4c7387d971d2f0eca3 packages/cli/tests/launcher.test.mjs
|
||||
c2fcfac8b85c8ac5ab7ea42e09c061a110fe3b5933d9a0dd30bec5e2654723f3 packages/cli/tests/thread-launch.test.mjs
|
||||
c2f7da3595999aca7665d4feba0774d042bb30cc794befc43fa4e73a9a4c4856 packages/cli/tests/trackers-boot.test.mjs
|
||||
178d777f7981f374029326d35795b7f5a30466fd0f8bf88ab45998f3886b1b44 packages/control-board/tests/creative-hidden.test.mjs
|
||||
49e5a394b3e4f07e9a57823f2ccaadc9a831fa9e99e65d6cf74dbeae5fb922a5 packages/discord/tests/library-seat.test.mjs
|
||||
cc351c842e1261ef179da051e0ebc2f8abe9132f4ca81f4cbdbd3612e47d1914 packages/harness/tests/creative.test.mjs
|
||||
c781c4108824db7f17cc4b514e3b0d446120dc1ad7c05e5bf5a72edcac70d054 roles/chief-of-staff.json
|
||||
db16c358820e199910eabe06f885a53a4bde2502aeafa5444c12d9b29c74880c roles/chief-of-staff.md
|
||||
962f1e8ca9d56d7ad7dd4f82a57b97b834bacdc72c3fe774f9a9afccf7dd72e9 roles/companion.json
|
||||
cad0360c16db9b2659370e6363937a27d61e9f6c4fae711a2dfc5b89aadead81 roles/companion.md
|
||||
031807451adfe5e4643da2ff59fab0a041fce519f4cb84d749ec6f10edff8f36 roles/continuity.json
|
||||
75522c66ccd242971b4b00786112ef37b41c972af5b0d98c011697169fba7db2 roles/continuity.md
|
||||
1dfc6629dc70dd8020483456db140751010e81a44fbd49308580f0c6356c2471 roles/fact-checker.json
|
||||
2d01f771831d52a1d9ddde8c1183601051782efd39899605949761fdd5e07291 roles/fact-checker.md
|
||||
2c69c26460574948584eae487e944b7240cfa37a0a0f3ddeaabd682815ebf6ed roles/ideas.json
|
||||
bb403867a2ba33ea271d2d576165c6131e43446f2d5deb4eb86389398cb0592d roles/ideas.md
|
||||
3a55947b867241dd42b78588276f6f901d374b519f3964ba0acc4b782513224c roles/proofreader.json
|
||||
054f6f888064eca4c6b7b1c0180bd2ad968b10429f045db7aaa92453cbddd1ab roles/proofreader.md
|
||||
38d36d8cca7f4f7141af5469f0a17dd2a44a5ec26ef113ad9a01c9b013968501 roles/research.json
|
||||
2a66291a7a8d21b9f587c6226d408667a775b2846bc9950606e73b210f4ac0d1 roles/research.md
|
||||
@@ -0,0 +1,45 @@
|
||||
# Row 285 / #1790 r4 review packet
|
||||
|
||||
Candidate: the pushed magica/row285-r4 tip accompanying the manifest.
|
||||
Base: d0a6a87cd (landed 296 + 217). Initial r4 receipt: 0f6cdc861.
|
||||
Owner: Magica. First reviewer: Poe. Landing reviewer: Webby. Sage posts requests.
|
||||
|
||||
The build grants the six creative definitions library.write and the declared Gitea
|
||||
service, gives the chief a read-only Gitea declaration, and requires its instance
|
||||
reference exactly when the business declares a library. The current write-scoped
|
||||
grant path still refuses the chief. No live business file is changed.
|
||||
|
||||
Binding scope is the C2-08b brief, Scrooge's retained BUILD, and mos-1580 through
|
||||
mos-1586 as quoted in BUILD.md. N1 (creative-only library.write role validation)
|
||||
remains a follow-up. No grant executor or write verbs join this row.
|
||||
|
||||
Review the entire original role/contract/vocabulary patch and the new instance
|
||||
settings logic. The latter is limited to actual instance credential references,
|
||||
duplicate-first hiring, and the creative-only equal-service exception:
|
||||
|
||||
- Derive creative status from reviewed withinRole library.write, not role names.
|
||||
- Preserve all non-creative definition fences and base accepted values.
|
||||
- Validate the full proposed creative change before its credential guard.
|
||||
- Permit retention only between creative definitions with identical DECLARED
|
||||
service sets. Host stays in that set even though it has no file reference.
|
||||
- Retain credential objects byte-for-byte; call no credential creation or mint.
|
||||
- List creative definitions only for the existing Gitea store add path; another
|
||||
service retains the base accepted value.
|
||||
|
||||
Check every old assertion, especially instance-settings 68/131/189/211/290/306/311
|
||||
and lifecycle 191. Those two files must be byte-identical to the initial r4 tip.
|
||||
Check the B1 token-only insertions against e0c6142f3 and the final data fixes
|
||||
against d0a6a87cd. The only non-credential fixture change is the explicitly ruled
|
||||
tracker credentials?.vikunja guard; its put() role set remains pm/cto/coder/reviewer.
|
||||
|
||||
Read the new instance-credential-transitions tests. Its auxiliary creative-host
|
||||
case must validate as an ordinary business before the declared-service fence
|
||||
refuses it, so M13 is evidence for the equal-set guard itself. M15 must preserve
|
||||
the old validator-first BusinessError. M11/M12 cover the two earlier guard reds.
|
||||
M10 must independently fail the new no-library positive and unchanged Case1 test.
|
||||
|
||||
Manifest hashes, final whole-suite/script counts, mutant receipts, blob restoration
|
||||
and controls are recorded in BUILD.md and gate-r4-final. Earlier r3/r4 failed logs
|
||||
are historical evidence and are not green acceptance claims. The completed release
|
||||
file has an 1800-second bound because its unchanged collection run takes about
|
||||
600 seconds; the original 300-second interruption is retained, never overwritten.
|
||||
@@ -0,0 +1,365 @@
|
||||
diff --git a/packages/bus/tests/reload.test.mjs b/packages/bus/tests/reload.test.mjs
|
||||
index 091b37b26..342d578d0 100644
|
||||
--- a/packages/bus/tests/reload.test.mjs
|
||||
+++ b/packages/bus/tests/reload.test.mjs
|
||||
@@ -194,7 +194,7 @@ test('T14 a file whose project root differs from the boot copy is not reloaded,
|
||||
});
|
||||
|
||||
test('T14 a file whose library mapping differs from the boot copy is not reloaded, because the mirror is ensured at start', async (t) => {
|
||||
- const f = await setup(t, doc => { doc.projects.books = mappingEntry(); });
|
||||
+ const f = await setup(t, doc => { doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } }; doc.projects.books = mappingEntry(); });
|
||||
const doc = JSON.parse(readFileSync(f.file, 'utf8'));
|
||||
doc.projects.books.branch = 'other';
|
||||
writeFileSync(f.file, JSON.stringify(doc, null, 2) + '\n', { mode: 0o600 });
|
||||
@@ -202,7 +202,7 @@ test('T14 a file whose library mapping differs from the boot copy is not reloade
|
||||
assert.equal(added.restart, true);
|
||||
assert.equal(f.reloads.length, 0);
|
||||
// The same library entry reloads.
|
||||
- const g = await setup(t, doc => { doc.projects.books = mappingEntry(); });
|
||||
+ const g = await setup(t, doc => { doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } }; doc.projects.books = mappingEntry(); });
|
||||
assert.equal(g.ask('instances.set', { revision: g.revision(), instance: 'sec-1', op: 'add', definition: 'security-reviewer' }).restart, false);
|
||||
assert.equal(g.reloads.length, 1);
|
||||
});
|
||||
diff --git a/packages/business/tests/business.test.mjs b/packages/business/tests/business.test.mjs
|
||||
index 9d4eda831..f78789250 100644
|
||||
--- a/packages/business/tests/business.test.mjs
|
||||
+++ b/packages/business/tests/business.test.mjs
|
||||
@@ -6,6 +6,7 @@ import { join } from "node:path";
|
||||
import { pathToFileURL } from "node:url";
|
||||
import { BusinessError, businessFilePath, configDir, loadBusiness, validateBusinessDocument } from "../src/index.mjs";
|
||||
import { THREAD_IDLE_SECONDS } from "../src/business.mjs";
|
||||
+import { CREATIVE_DEFINITIONS } from "../src/vocabulary.mjs";
|
||||
import { launchDoc, businessDoc, REPO, REPO_ROLES, rolesCopy, tmp, writeJson } from "./helpers.mjs";
|
||||
|
||||
test('C2-04: library mappings load without roots, remain frozen, and retain mapping refusals', async t => {
|
||||
@@ -14,6 +15,7 @@ test('C2-04: library mappings load without roots, remain frozen, and retain mapp
|
||||
const root = tmp(); t.after(() => rmSync(root, { recursive: true, force: true }));
|
||||
const doc = businessDoc(root), file = join(root, 'businesses/acme.json');
|
||||
doc.projects = { books: mappingEntry(), ...doc.projects };
|
||||
+ doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
const loaded = validateBusinessDocument(doc, file, { rolesDir: REPO_ROLES });
|
||||
const { checkMapping } = await import('../../library/src/mapping.mjs');
|
||||
assert.deepEqual(loaded.projects.books, checkMapping(mappingEntry()));
|
||||
@@ -41,6 +43,7 @@ test('C2-04: an otherwise valid publish grant cannot name a library repo', async
|
||||
const root = tmp(); t.after(() => rmSync(root, { recursive: true, force: true }));
|
||||
const doc = businessDoc(root);
|
||||
doc.projects.books = { ...mappingEntry(), remote: 'https://git.example/writer/books' };
|
||||
+ doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
doc.roles.coder.identity = { name: 'Coder', email: '[email protected]', gitea: { url: 'https://git.example', user: 'acme-coder' } };
|
||||
doc.roles.coder.publish = ['books'];
|
||||
refuses(() => validateBusinessDocument(doc, join(root, 'businesses/acme.json'), { rolesDir: REPO_ROLES }), /publish.*library/);
|
||||
@@ -273,28 +276,58 @@ test("the shipped example refuses as written and validates once filled in", () =
|
||||
assert.equal(id, 15);
|
||||
});
|
||||
|
||||
+// Row 285 (C2-08b, #1790, mos-1330): a creative definition declares gitea, so its instance names
|
||||
+// the reference. The store form needs no token file, and the bus reads a missing one as no token.
|
||||
+const CREATIVE_GITEA = Object.freeze({ gitea: Object.freeze({ store: true, rotateBy: "2099-01-01" }) });
|
||||
+
|
||||
// Row 213 (C2-08, #1714), deviation D1: the persona vars sit on a creative instance only, and
|
||||
// both or neither. The var checks themselves are vars.mjs's.
|
||||
test("persona vars: agent layer, creative definition only, both or neither", () => {
|
||||
const sha = "a".repeat(64);
|
||||
const persona = { "persona.name": "Bean", "persona.sha256": sha };
|
||||
- const business = check((d) => { d.roles.bean = { definition: "companion", vars: { ...persona } }; });
|
||||
+ const business = check((d) => { d.roles.bean = { definition: "companion", credentials: CREATIVE_GITEA, vars: { ...persona } }; });
|
||||
assert.deepEqual({ ...business.roles.bean.vars }, persona);
|
||||
- assert.doesNotThrow(() => check((d) => { d.roles.bean = { definition: "ideas" }; }));
|
||||
+ assert.doesNotThrow(() => check((d) => { d.roles.bean = { definition: "ideas", credentials: CREATIVE_GITEA }; }));
|
||||
refuses(() => check((d) => { d.vars["persona.name"] = "Bean"; }), /persona\.name can't be set at the business layer/);
|
||||
refuses(() => check((d) => { d.roles.pm.vars = { ...d.roles.pm.vars, ...persona }; }),
|
||||
/roles\.pm\.vars: persona vars need a creative definition \(pm isn't one\)/);
|
||||
refuses(() => check((d) => { d.roles.chief.vars = { ...persona }; }), /chief-of-staff isn't one/);
|
||||
for (const key of Object.keys(persona)) {
|
||||
- refuses(() => check((d) => { d.roles.bean = { definition: "research", vars: { [key]: persona[key] } }; }),
|
||||
+ refuses(() => check((d) => { d.roles.bean = { definition: "research", credentials: CREATIVE_GITEA, vars: { [key]: persona[key] } }; }),
|
||||
/roles\.bean\.vars: persona\.name and persona\.sha256 are set together or not at all/);
|
||||
}
|
||||
for (const [key, value] of [["persona.name", "x".repeat(41)], ["persona.name", "Be\nan"], ["persona.name", "Be\u0007an"], ["persona.name", "Be\u2028an"], ["persona.name", "Be\u2029an"], ["persona.name", 7],
|
||||
["persona.sha256", "A".repeat(64)], ["persona.sha256", sha.slice(1)], ["persona.sha256", `${sha}0`]]) {
|
||||
- refuses(() => check((d) => { d.roles.bean = { definition: "companion", vars: { ...persona, [key]: value } }; }), new RegExp(`variable ${key.replace(".", "\\.")}`), 2);
|
||||
+ refuses(() => check((d) => { d.roles.bean = { definition: "companion", credentials: CREATIVE_GITEA, vars: { ...persona, [key]: value } }; }), new RegExp(`variable ${key.replace(".", "\\.")}`), 2);
|
||||
+ }
|
||||
+});
|
||||
+
|
||||
+// Row 285 (C2-08b, #1790, mos-1330): the chief and each creative definition declare gitea, so an
|
||||
+// instance without the reference refuses. Amendment 1 (mos-1580, sage-4060): the chief
|
||||
+// requires its reference only in a library business; creative definitions always require it.
|
||||
+test("row 285: a chief or creative instance without credentials.gitea refuses at load", async () => {
|
||||
+ const { mappingEntry } = await import("../../library/tests/helpers.mjs");
|
||||
+ refuses(() => check((d) => { d.projects.books = mappingEntry(); delete d.roles.chief.credentials; }),
|
||||
+ /chief-library-gitea-required: .*roles\.chief\.credentials/);
|
||||
+ for (const definition of CREATIVE_DEFINITIONS) {
|
||||
+ refuses(() => check((d) => { d.roles.bean = { definition }; }),
|
||||
+ /roles\.bean\.credentials must reference exactly the services its role definition needs \(gitea; got none\)/);
|
||||
+ assert.doesNotThrow(() => check((d) => { d.roles.bean = { definition, credentials: CREATIVE_GITEA }; }), definition);
|
||||
}
|
||||
});
|
||||
|
||||
+// Row 285 (C2-08b, brief): a creative instance may carry identity and publish, under the rules at
|
||||
+// business.mjs:155-166, which the grant path reads. The grant itself still refuses it (#giteaRole).
|
||||
+test("row 285: a creative instance with identity and publish loads", () => {
|
||||
+ const identity = { name: "Bean", email: "[email protected]", gitea: { url: "https://git.example", user: "acme-bean" } };
|
||||
+ const business = check((d) => {
|
||||
+ d.projects.stack.remote = "https://git.example/acme/stack";
|
||||
+ d.roles.bean = { definition: "companion", credentials: CREATIVE_GITEA, identity, publish: ["stack"] };
|
||||
+ });
|
||||
+ assert.deepEqual({ ...business.roles.bean.identity, gitea: { ...business.roles.bean.identity.gitea } }, identity);
|
||||
+ assert.deepEqual([...business.roles.bean.publish], ["stack"]);
|
||||
+});
|
||||
+
|
||||
// Row 194 (#1692, D2.5, T17): the per-agent forbid and the retired list.
|
||||
test("row 194 keep, noHire and retired validate, and a file without them loads as before", () => {
|
||||
const plain = check();
|
||||
diff --git a/packages/business/tests/cli.test.mjs b/packages/business/tests/cli.test.mjs
|
||||
index 3aa1d52ee..beb367f8c 100644
|
||||
--- a/packages/business/tests/cli.test.mjs
|
||||
+++ b/packages/business/tests/cli.test.mjs
|
||||
@@ -11,7 +11,7 @@ const CLI = join(REPO, "packages", "business", "src", "cli.mjs");
|
||||
test('C2-04: business validate and resolve skip a library before code projects and credential checks', async t => {
|
||||
const { mappingEntry } = await import('../../library/tests/helpers.mjs');
|
||||
const { rmSync } = await import('node:fs');
|
||||
- const s = setup(doc => { doc.projects = { books: mappingEntry(), ...doc.projects }; });
|
||||
+ const s = setup(doc => { doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } }; doc.projects = { books: mappingEntry(), ...doc.projects }; });
|
||||
t.after(() => rmSync(s.root, { recursive: true, force: true }));
|
||||
writeJson(projectFilePath(s.doc.projects.stack.root), { projectVersion: 1, id: 'stack', vars: { 'tracker.project': 3 } });
|
||||
const checked = run(s, 'validate', 'acme');
|
||||
diff --git a/packages/business/tests/instance-settings.test.mjs b/packages/business/tests/instance-settings.test.mjs
|
||||
index e85366562..54c22e0e0 100644
|
||||
--- a/packages/business/tests/instance-settings.test.mjs
|
||||
+++ b/packages/business/tests/instance-settings.test.mjs
|
||||
@@ -9,7 +9,7 @@ import { mkdirSync, readdirSync, readFileSync, rmSync, statSync, writeFileSync }
|
||||
import { join } from "node:path";
|
||||
import { instanceSettings } from "../src/instance-settings.mjs";
|
||||
import { projectFilePath } from "../src/project.mjs";
|
||||
-import { businessDoc, REPO, rolesCopy, systemConfig, systemFor, tmp, writeJson } from "./helpers.mjs";
|
||||
+import { businessDoc, FAR_DATE, REPO, rolesCopy, systemConfig, systemFor, tmp, writeJson } from "./helpers.mjs";
|
||||
|
||||
const CLI = join(REPO, "packages", "business", "src", "cli.mjs");
|
||||
const roots = [];
|
||||
@@ -22,7 +22,7 @@ const LEVELS = { pi: ["off", "minimal", "low", "medium", "high", "xhigh", "max"]
|
||||
|
||||
test('C2-04: instance settings skip a library while checking a later code project', async () => {
|
||||
const { mappingEntry } = await import('../../library/tests/helpers.mjs');
|
||||
- const f = fixture(doc => { doc.projects = { books: mappingEntry(), ...doc.projects }; });
|
||||
+ const f = fixture(doc => { doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } }; doc.projects = { books: mappingEntry(), ...doc.projects }; });
|
||||
writeJson(projectFilePath(f.doc.projects.stack.root), { projectVersion: 1, id: 'stack', vars: { 'tracker.project': 3 } });
|
||||
const before = f.settings.read('acme');
|
||||
f.settings.set('acme', { revision: before.revision, instance: 'gate-215', op: 'add', definition: 'merge-gate' }, 'jason');
|
||||
@@ -286,7 +286,8 @@ test("row 213 a creative instance is the human's: add, vars and definition chang
|
||||
writeFileSync(join(f.root, "config", "personas", "acme", "bean.md"), text, { mode: 0o600 });
|
||||
const persona = { "persona.name": "Bean", "persona.sha256": createHash("sha256").update(text).digest("hex") };
|
||||
const view = f.settings.read("acme");
|
||||
- assert.deepEqual(view.definitions.companion, { services: [], accepted: true });
|
||||
+ // Row 285 (mos-1332 item 4): the companion definition declares gitea.
|
||||
+ assert.deepEqual(view.definitions.companion, { services: ["gitea"], accepted: true });
|
||||
const add = { instance: "bean", op: "add", definition: "companion", vars: persona };
|
||||
for (const actor of ["chief-of-staff.chief", "tester"]) {
|
||||
assert.throws(() => f.settings.set("acme", { revision: view.revision, ...add }, actor), e => e.code === "organization-creative-human-only", actor);
|
||||
@@ -331,8 +332,8 @@ test("row 213 a creative instance is the human's: add, vars and definition chang
|
||||
// every actor, the human included. The listing's endProtected is that same check for its reader.
|
||||
test("row 256 T1-T3, T5 the human deletes a creative instance, no other actor does, and the assistant stays", () => {
|
||||
const f = fixture(doc => {
|
||||
- doc.roles.bean = { definition: "companion" };
|
||||
- doc.roles.muse = { definition: "ideas" };
|
||||
+ doc.roles.bean = { definition: "companion", credentials: { gitea: { store: true, rotateBy: FAR_DATE } } };
|
||||
+ doc.roles.muse = { definition: "ideas", credentials: { gitea: { store: true, rotateBy: FAR_DATE } } };
|
||||
doc.roles.assistant = { definition: "assistant", holder: "mos" };
|
||||
});
|
||||
const del = (instance, actor) => () => f.settings.set("acme", { revision: f.settings.read("acme").revision, instance, op: "delete" }, actor);
|
||||
@@ -377,7 +378,7 @@ test("row 256 T1-T3, T5 the human deletes a creative instance, no other actor do
|
||||
// instance can't be kept, launch.by or an arbiter, so the check it reaches is the last-listed one.
|
||||
test("row 256 T4 the human's delete of the only listed instance, a creative one, is the last-listed refusal", () => {
|
||||
const f = fixture(doc => {
|
||||
- doc.roles.bean = { definition: "companion" };
|
||||
+ doc.roles.bean = { definition: "companion", credentials: { gitea: { store: true, rotateBy: FAR_DATE } } };
|
||||
doc.launch.instances = ["bean"];
|
||||
});
|
||||
const bytes = readFileSync(f.file, "utf8");
|
||||
diff --git a/packages/business/tests/library-projects-protected.test.mjs b/packages/business/tests/library-projects-protected.test.mjs
|
||||
index 51672bd7b..d4d09d94f 100644
|
||||
--- a/packages/business/tests/library-projects-protected.test.mjs
|
||||
+++ b/packages/business/tests/library-projects-protected.test.mjs
|
||||
@@ -14,6 +14,7 @@ function fixture(t) {
|
||||
books.universes.hybrid = { kind: 'hybrid', name: 'An invented crossover',
|
||||
sources: ['harbor', 'second'], books: ['Hybrid Book'], playground: [], constraints: [], notes: 'Fixture only' };
|
||||
doc.projects = { books, ...doc.projects };
|
||||
+ doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
const dir = join(root, 'config'), file = writeJson(join(dir, 'businesses/acme.json'), doc);
|
||||
const writer = organizationWriter({ dir, rolesDir: rolesCopy(root) });
|
||||
// Give both snapshots an existing ordinary committed receipt to preserve.
|
||||
diff --git a/packages/business/tests/library-seats.test.mjs b/packages/business/tests/library-seats.test.mjs
|
||||
index 3cd0f86cf..da76fdbc7 100644
|
||||
--- a/packages/business/tests/library-seats.test.mjs
|
||||
+++ b/packages/business/tests/library-seats.test.mjs
|
||||
@@ -27,7 +27,9 @@ test("M7/M8: library seats come from library businesses, creative seats from the
|
||||
const { root, dir } = fixture(t);
|
||||
const doc = businessDoc(root, "acme");
|
||||
doc.projects = { books: mappingEntry(), ...doc.projects };
|
||||
+ doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
doc.roles.bean = { definition: "companion" };
|
||||
+ doc.roles.bean.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
writeJson(join(dir, "businesses", "acme.json"), doc);
|
||||
const found = sets(dir);
|
||||
assert.deepEqual([...found.librarySeats].sort(), ["bean", "chief", "coder", "cto", "pm", "reviewer"]);
|
||||
@@ -39,6 +41,7 @@ test("M8: a business with no library project puts no seat in either set", (t) =>
|
||||
const { root, dir } = fixture(t);
|
||||
const doc = businessDoc(root, "other");
|
||||
doc.roles.bean = { definition: "companion" };
|
||||
+ doc.roles.bean.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
writeJson(join(dir, "businesses", "other.json"), doc);
|
||||
const found = sets(dir);
|
||||
assert.equal(found.librarySeats.size, 0);
|
||||
diff --git a/packages/business/tests/resolve.test.mjs b/packages/business/tests/resolve.test.mjs
|
||||
index b1e50f349..2fa106053 100644
|
||||
--- a/packages/business/tests/resolve.test.mjs
|
||||
+++ b/packages/business/tests/resolve.test.mjs
|
||||
@@ -31,7 +31,7 @@ const resolve = (s, instance) => resolveInstance({ system: s.system, business: s
|
||||
test('C2-04: a library first in projects does not hide a later project layer', async t => {
|
||||
const { mappingEntry } = await import('../../library/tests/helpers.mjs');
|
||||
const { rmSync } = await import('node:fs');
|
||||
- const s = setup(doc => { doc.projects = { books: mappingEntry(), ...doc.projects }; }, { vars: { 'tracker.project': 7 } });
|
||||
+ const s = setup(doc => { doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } }; doc.projects = { books: mappingEntry(), ...doc.projects }; }, { vars: { 'tracker.project': 7 } });
|
||||
t.after(() => rmSync(s.root, { recursive: true, force: true }));
|
||||
const result = resolve(s, 'coder');
|
||||
assert.equal(result.project, 'stack');
|
||||
diff --git a/packages/cli/tests/case2-install.test.mjs b/packages/cli/tests/case2-install.test.mjs
|
||||
index cc1142510..51b606bda 100644
|
||||
--- a/packages/cli/tests/case2-install.test.mjs
|
||||
+++ b/packages/cli/tests/case2-install.test.mjs
|
||||
@@ -51,8 +51,11 @@ function world(t, { profile = "library" } = {}) {
|
||||
for (const r of Object.values(doc.roles)) r.vars = { ...r.vars, harness: "pi" };
|
||||
if (profile === "library") {
|
||||
doc.projects.books = { ...mappingEntry(), user: "writer" };
|
||||
+ doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
doc.roles.bean = { definition: "companion", vars: { harness: "pi" } };
|
||||
+ doc.roles.bean.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
doc.roles.chet = { definition: "companion", vars: { harness: "pi" } };
|
||||
+ doc.roles.chet.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
} else doc.vars["bus.tester"] = true;
|
||||
const input = writeJson(join(root, "input", "acme.json"), doc);
|
||||
const staging = join(root, "staging");
|
||||
@@ -212,6 +215,7 @@ test("the factory install refuses a library project and bus.tester off, before a
|
||||
const x = world(t, { profile: "factory" });
|
||||
const doc = JSON.parse(readFileSync(x.input, "utf8"));
|
||||
doc.projects.books = { ...mappingEntry(), user: "writer" };
|
||||
+ doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
writeJson(x.input, doc);
|
||||
refused(install(x, { profile: "factory" }), /profile-library-business/);
|
||||
delete doc.projects.books;
|
||||
diff --git a/packages/cli/tests/launcher.test.mjs b/packages/cli/tests/launcher.test.mjs
|
||||
index baabd843e..eeca18eb0 100644
|
||||
--- a/packages/cli/tests/launcher.test.mjs
|
||||
+++ b/packages/cli/tests/launcher.test.mjs
|
||||
@@ -1,4 +1,4 @@
|
||||
-import { launchDoc } from "../../business/tests/helpers.mjs";
|
||||
+import { FAR_DATE, launchDoc } from "../../business/tests/helpers.mjs";
|
||||
// The S6 launcher inside a real bus host: real broker child, real runners
|
||||
// in the bwrap sandbox, the fake adapter from packages/harness standing in for the
|
||||
// harness. The chief of staff launches a coder through its `launch` tool (row 119: the
|
||||
@@ -32,7 +32,7 @@ const skip = sandboxProblem() ?? false;
|
||||
|
||||
test('C2-04: launcher workspace clones code but never the library', { skip, timeout: 30000 }, async t => {
|
||||
const { mappingEntry } = await import('../../library/tests/helpers.mjs');
|
||||
- const f = await setup(t, doc => { doc.projects = { books: mappingEntry(), ...doc.projects }; return doc; });
|
||||
+ const f = await setup(t, doc => { doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } }; doc.projects = { books: mappingEntry(), ...doc.projects }; return doc; });
|
||||
await f.launcher.launchPm();
|
||||
const workspace = workspaceDir(f.f.dataRoot, 'acme', 'chief');
|
||||
assert.equal(existsSync(join(workspace, 'stack', '.git')), true);
|
||||
@@ -766,7 +766,7 @@ test("row 64 a role skill that isn't enabled refuses skill-not-enabled, and one
|
||||
test("row 213 a creative instance's persona is read from <configDir>/personas: off its digest the launch fails with the mismatch as its reason", { timeout: 30000 }, async (t) => {
|
||||
const text = "Warm. PERSONA-MARKER-d2\n";
|
||||
const given = prepare(t, (doc) => {
|
||||
- doc.roles.bean = { definition: "companion", vars: { harness: "pi", model: "claude-sonnet-5-5", thinking: "high", "persona.name": "Bean", "persona.sha256": createHash("sha256").update(text).digest("hex") } };
|
||||
+ doc.roles.bean = { definition: "companion", credentials: { gitea: { store: true, rotateBy: FAR_DATE } }, vars: { harness: "pi", model: "claude-sonnet-5-5", thinking: "high", "persona.name": "Bean", "persona.sha256": createHash("sha256").update(text).digest("hex") } };
|
||||
doc.launch.instances.push("bean");
|
||||
return doc;
|
||||
});
|
||||
diff --git a/packages/cli/tests/thread-launch.test.mjs b/packages/cli/tests/thread-launch.test.mjs
|
||||
index fa3adb866..3e313e49d 100644
|
||||
--- a/packages/cli/tests/thread-launch.test.mjs
|
||||
+++ b/packages/cli/tests/thread-launch.test.mjs
|
||||
@@ -400,6 +400,7 @@ test("REQ-THREAD-1 REQ-LAUNCH-1 the chief can't launch the assistant outside a t
|
||||
test('C2-09a: fromSession refuses a creative instance outside a thread without a sandbox', { timeout: 30000 }, async t => {
|
||||
const prepared = prepare(t, { edit: doc => {
|
||||
doc.roles.bean = { ...doc.roles.assistant, definition: 'companion' };
|
||||
+ doc.roles.bean.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
doc.launch.instances.push('bean');
|
||||
return doc;
|
||||
} });
|
||||
@@ -465,7 +466,9 @@ test('C2-09a: creative thread messages start distinct runs and keep each instanc
|
||||
const vars = { ...doc.roles.assistant.vars };
|
||||
delete doc.roles.assistant;
|
||||
doc.roles.bean = { definition: 'companion', vars: { ...vars } };
|
||||
+ doc.roles.bean.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
doc.roles.chet = { definition: 'continuity', vars: { ...vars } };
|
||||
+ doc.roles.chet.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
doc.launch.instances = ['coder', 'bean', 'chet'];
|
||||
return doc;
|
||||
} });
|
||||
@@ -501,6 +504,7 @@ test('C2-09a: creative thread messages start distinct runs and keep each instanc
|
||||
test('C2-09a: terminating one creative thread does not signal an unselected peer of the same instance', { skip, timeout: 90000 }, async t => {
|
||||
const prepared = prepare(t, { sonnet: 2, idle: 60, edit: doc => {
|
||||
doc.roles.bean = { ...doc.roles.assistant, definition: 'companion' };
|
||||
+ doc.roles.bean.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
delete doc.roles.assistant;
|
||||
doc.launch.instances = ['coder', 'bean'];
|
||||
return doc;
|
||||
diff --git a/packages/cli/tests/trackers-boot.test.mjs b/packages/cli/tests/trackers-boot.test.mjs
|
||||
index 8d1a407c6..e7f50c947 100644
|
||||
--- a/packages/cli/tests/trackers-boot.test.mjs
|
||||
+++ b/packages/cli/tests/trackers-boot.test.mjs
|
||||
@@ -14,7 +14,7 @@ import { fixture, tmp } from "./helpers.mjs";
|
||||
|
||||
test('C2-04: a library-only business with tracker.baseUrl boots without a project tracker', async t => {
|
||||
const { mappingEntry } = await import('../../library/tests/helpers.mjs');
|
||||
- const f = fixture(tmp(t), 'acme', doc => { doc.projects = { books: mappingEntry() }; return doc; });
|
||||
+ const f = fixture(tmp(t), 'acme', doc => { doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } }; doc.projects = { books: mappingEntry() }; return doc; });
|
||||
const warnings = [];
|
||||
const boot = bootConfig({ system: loadSystem({ env: f.env }), businessId: 'acme', env: f.env, warn: text => warnings.push(text) });
|
||||
assert.equal(boot.trackers, undefined);
|
||||
@@ -40,6 +40,7 @@ test("bootConfig trackers reach the S3 adapter in the real broker child, which g
|
||||
|
||||
const f = fixture(root, "acme", (doc) => {
|
||||
doc.projects = { books: mappingEntry(), ...doc.projects };
|
||||
+ doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
doc.vars["tracker.baseUrl"] = srv.url;
|
||||
doc.tracker.sync.botId = bots.sync;
|
||||
// The chief of staff (row 119) has no tracker bot.
|
||||
@@ -51,7 +52,7 @@ test("bootConfig trackers reach the S3 adapter in the real broker child, which g
|
||||
chmodSync(file, 0o600);
|
||||
};
|
||||
put(f.doc.tracker.sync.credentials.vikunja.file, fake.token(bots.sync, SCOPES.sync));
|
||||
- for (const r of Object.keys(f.doc.roles)) if (f.doc.roles[r].credentials) put(f.doc.roles[r].credentials.vikunja.file, fake.token(bots[r], r === "pm" ? SCOPES.pm : SCOPES.worker));
|
||||
+ for (const r of Object.keys(f.doc.roles)) if (f.doc.roles[r].credentials?.vikunja) put(f.doc.roles[r].credentials.vikunja.file, fake.token(bots[r], r === "pm" ? SCOPES.pm : SCOPES.worker));
|
||||
writeJson(join(root, "project", ".mosaic", "project.json"), { projectVersion: 1, id: "stack", vars: { "tracker.project": project } });
|
||||
|
||||
mkdirSync(f.dataRoot, { recursive: true, mode: 0o700 });
|
||||
diff --git a/packages/control-board/tests/creative-hidden.test.mjs b/packages/control-board/tests/creative-hidden.test.mjs
|
||||
index c2abd348e..12e16866e 100644
|
||||
--- a/packages/control-board/tests/creative-hidden.test.mjs
|
||||
+++ b/packages/control-board/tests/creative-hidden.test.mjs
|
||||
@@ -20,7 +20,9 @@ function fixture(t) {
|
||||
const dir = join(root, "config");
|
||||
const doc = businessDoc(root, "acme");
|
||||
doc.projects = { books: mappingEntry(), ...doc.projects };
|
||||
+ doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
doc.roles.bean = { definition: "companion" };
|
||||
+ doc.roles.bean.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
writeJson(join(dir, "businesses", "acme.json"), doc);
|
||||
const threadDir = join(root, "data", "threads", "acme", "t1", "session");
|
||||
mkdirSync(threadDir, { recursive: true });
|
||||
diff --git a/packages/discord/tests/library-seat.test.mjs b/packages/discord/tests/library-seat.test.mjs
|
||||
index 315f69698..a7ac869e5 100644
|
||||
--- a/packages/discord/tests/library-seat.test.mjs
|
||||
+++ b/packages/discord/tests/library-seat.test.mjs
|
||||
@@ -31,7 +31,9 @@ function setup(overrides = {}) {
|
||||
function business(s, { library, role = "sage", definition = "companion" }) {
|
||||
const doc = businessDoc(s.root, "acme");
|
||||
if (library) doc.projects = { books: mappingEntry(), ...doc.projects };
|
||||
+ if (library) doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
doc.roles[role] = { definition };
|
||||
+ doc.roles[role].credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
writeJson(join(s.root, "businesses", "acme.json"), doc);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,698 @@
|
||||
Command: git diff --no-color --word-diff=porcelain e0c6142f3 -- packages/bus/tests/reload.test.mjs
|
||||
diff --git a/packages/bus/tests/reload.test.mjs b/packages/bus/tests/reload.test.mjs
|
||||
index 091b37b26..342d578d0 100644
|
||||
--- a/packages/bus/tests/reload.test.mjs
|
||||
+++ b/packages/bus/tests/reload.test.mjs
|
||||
@@ -194,7 +194,7 @@ test('T14 a file whose project root differs from the boot copy is not reloaded,
|
||||
});
|
||||
~
|
||||
|
||||
~
|
||||
test('T14 a file whose library mapping differs from the boot copy is not reloaded, because the mirror is ensured at start', async (t) => {
|
||||
~
|
||||
const f = await setup(t, doc => {
|
||||
+doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
doc.projects.books = mappingEntry(); });
|
||||
~
|
||||
const doc = JSON.parse(readFileSync(f.file, 'utf8'));
|
||||
~
|
||||
doc.projects.books.branch = 'other';
|
||||
~
|
||||
writeFileSync(f.file, JSON.stringify(doc, null, 2) + '\n', { mode: 0o600 });
|
||||
~
|
||||
@@ -202,7 +202,7 @@ test('T14 a file whose library mapping differs from the boot copy is not reloade
|
||||
assert.equal(added.restart, true);
|
||||
~
|
||||
assert.equal(f.reloads.length, 0);
|
||||
~
|
||||
// The same library entry reloads.
|
||||
~
|
||||
const g = await setup(t, doc => {
|
||||
+doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
doc.projects.books = mappingEntry(); });
|
||||
~
|
||||
assert.equal(g.ask('instances.set', { revision: g.revision(), instance: 'sec-1', op: 'add', definition: 'security-reviewer' }).restart, false);
|
||||
~
|
||||
assert.equal(g.reloads.length, 1);
|
||||
~
|
||||
});
|
||||
~
|
||||
|
||||
Command: git diff --no-color --word-diff=porcelain e0c6142f3 -- packages/business/tests/business.test.mjs
|
||||
diff --git a/packages/business/tests/business.test.mjs b/packages/business/tests/business.test.mjs
|
||||
index 9d4eda831..f78789250 100644
|
||||
--- a/packages/business/tests/business.test.mjs
|
||||
+++ b/packages/business/tests/business.test.mjs
|
||||
@@ -6,6 +6,7 @@ import { join } from "node:path";
|
||||
import { pathToFileURL } from "node:url";
|
||||
~
|
||||
import { BusinessError, businessFilePath, configDir, loadBusiness, validateBusinessDocument } from "../src/index.mjs";
|
||||
~
|
||||
import { THREAD_IDLE_SECONDS } from "../src/business.mjs";
|
||||
~
|
||||
+import { CREATIVE_DEFINITIONS } from "../src/vocabulary.mjs";
|
||||
~
|
||||
import { launchDoc, businessDoc, REPO, REPO_ROLES, rolesCopy, tmp, writeJson } from "./helpers.mjs";
|
||||
~
|
||||
|
||||
~
|
||||
test('C2-04: library mappings load without roots, remain frozen, and retain mapping refusals', async t => {
|
||||
~
|
||||
@@ -14,6 +15,7 @@ test('C2-04: library mappings load without roots, remain frozen, and retain mapp
|
||||
const root = tmp(); t.after(() => rmSync(root, { recursive: true, force: true }));
|
||||
~
|
||||
const doc = businessDoc(root), file = join(root, 'businesses/acme.json');
|
||||
~
|
||||
doc.projects = { books: mappingEntry(), ...doc.projects };
|
||||
~
|
||||
|
||||
+doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
const loaded = validateBusinessDocument(doc, file, { rolesDir: REPO_ROLES });
|
||||
~
|
||||
const { checkMapping } = await import('../../library/src/mapping.mjs');
|
||||
~
|
||||
assert.deepEqual(loaded.projects.books, checkMapping(mappingEntry()));
|
||||
~
|
||||
@@ -41,6 +43,7 @@ test('C2-04: an otherwise valid publish grant cannot name a library repo', async
|
||||
const root = tmp(); t.after(() => rmSync(root, { recursive: true, force: true }));
|
||||
~
|
||||
const doc = businessDoc(root);
|
||||
~
|
||||
doc.projects.books = { ...mappingEntry(), remote: 'https://git.example/writer/books' };
|
||||
~
|
||||
|
||||
+doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
doc.roles.coder.identity = { name: 'Coder', email: '[email protected]', gitea: { url: 'https://git.example', user: 'acme-coder' } };
|
||||
~
|
||||
doc.roles.coder.publish = ['books'];
|
||||
~
|
||||
refuses(() => validateBusinessDocument(doc, join(root, 'businesses/acme.json'), { rolesDir: REPO_ROLES }), /publish.*library/);
|
||||
~
|
||||
@@ -273,28 +276,58 @@ test("the shipped example refuses as written and validates once filled in", () =
|
||||
assert.equal(id, 15);
|
||||
~
|
||||
});
|
||||
~
|
||||
|
||||
~
|
||||
+// Row 285 (C2-08b, #1790, mos-1330): a creative definition declares gitea, so its instance names
|
||||
~
|
||||
+// the reference. The store form needs no token file, and the bus reads a missing one as no token.
|
||||
~
|
||||
+const CREATIVE_GITEA = Object.freeze({ gitea: Object.freeze({ store: true, rotateBy: "2099-01-01" }) });
|
||||
~
|
||||
~
|
||||
// Row 213 (C2-08, #1714), deviation D1: the persona vars sit on a creative instance only, and
|
||||
~
|
||||
// both or neither. The var checks themselves are vars.mjs's.
|
||||
~
|
||||
test("persona vars: agent layer, creative definition only, both or neither", () => {
|
||||
~
|
||||
const sha = "a".repeat(64);
|
||||
~
|
||||
const persona = { "persona.name": "Bean", "persona.sha256": sha };
|
||||
~
|
||||
const business = check((d) => { d.roles.bean = { definition: "companion",
|
||||
+credentials: CREATIVE_GITEA,
|
||||
vars: { ...persona } }; });
|
||||
~
|
||||
assert.deepEqual({ ...business.roles.bean.vars }, persona);
|
||||
~
|
||||
assert.doesNotThrow(() => check((d) => { d.roles.bean = { definition:
|
||||
-"ideas"
|
||||
+"ideas", credentials: CREATIVE_GITEA
|
||||
}; }));
|
||||
~
|
||||
refuses(() => check((d) => { d.vars["persona.name"] = "Bean"; }), /persona\.name can't be set at the business layer/);
|
||||
~
|
||||
refuses(() => check((d) => { d.roles.pm.vars = { ...d.roles.pm.vars, ...persona }; }),
|
||||
~
|
||||
/roles\.pm\.vars: persona vars need a creative definition \(pm isn't one\)/);
|
||||
~
|
||||
refuses(() => check((d) => { d.roles.chief.vars = { ...persona }; }), /chief-of-staff isn't one/);
|
||||
~
|
||||
for (const key of Object.keys(persona)) {
|
||||
~
|
||||
refuses(() => check((d) => { d.roles.bean = { definition: "research",
|
||||
+credentials: CREATIVE_GITEA,
|
||||
vars: { [key]: persona[key] } }; }),
|
||||
~
|
||||
/roles\.bean\.vars: persona\.name and persona\.sha256 are set together or not at all/);
|
||||
~
|
||||
}
|
||||
~
|
||||
for (const [key, value] of [["persona.name", "x".repeat(41)], ["persona.name", "Be\nan"], ["persona.name", "Be\u0007an"], ["persona.name", "Be\u2028an"], ["persona.name", "Be\u2029an"], ["persona.name", 7],
|
||||
~
|
||||
["persona.sha256", "A".repeat(64)], ["persona.sha256", sha.slice(1)], ["persona.sha256", `${sha}0`]]) {
|
||||
~
|
||||
refuses(() => check((d) => { d.roles.bean = { definition: "companion",
|
||||
+credentials: CREATIVE_GITEA,
|
||||
vars: { ...persona, [key]: value } }; }), new RegExp(`variable ${key.replace(".", "\\.")}`), 2);
|
||||
~
|
||||
|
||||
+}
|
||||
~
|
||||
+});
|
||||
~
|
||||
~
|
||||
+// Row 285 (C2-08b, #1790, mos-1330): the chief and each creative definition declare gitea, so an
|
||||
~
|
||||
+// instance without the reference refuses. Amendment 1 (mos-1580, sage-4060): the chief
|
||||
~
|
||||
+// requires its reference only in a library business; creative definitions always require it.
|
||||
~
|
||||
+test("row 285: a chief or creative instance without credentials.gitea refuses at load", async () => {
|
||||
~
|
||||
+ const { mappingEntry } = await import("../../library/tests/helpers.mjs");
|
||||
~
|
||||
+ refuses(() => check((d) => { d.projects.books = mappingEntry(); delete d.roles.chief.credentials; }),
|
||||
~
|
||||
+ /chief-library-gitea-required: .*roles\.chief\.credentials/);
|
||||
~
|
||||
+ for (const definition of CREATIVE_DEFINITIONS) {
|
||||
~
|
||||
+ refuses(() => check((d) => { d.roles.bean = { definition }; }),
|
||||
~
|
||||
+ /roles\.bean\.credentials must reference exactly the services its role definition needs \(gitea; got none\)/);
|
||||
~
|
||||
+ assert.doesNotThrow(() => check((d) => { d.roles.bean = { definition, credentials: CREATIVE_GITEA }; }), definition);
|
||||
~
|
||||
}
|
||||
~
|
||||
});
|
||||
~
|
||||
|
||||
~
|
||||
+// Row 285 (C2-08b, brief): a creative instance may carry identity and publish, under the rules at
|
||||
~
|
||||
+// business.mjs:155-166, which the grant path reads. The grant itself still refuses it (#giteaRole).
|
||||
~
|
||||
+test("row 285: a creative instance with identity and publish loads", () => {
|
||||
~
|
||||
+ const identity = { name: "Bean", email: "[email protected]", gitea: { url: "https://git.example", user: "acme-bean" } };
|
||||
~
|
||||
+ const business = check((d) => {
|
||||
~
|
||||
+ d.projects.stack.remote = "https://git.example/acme/stack";
|
||||
~
|
||||
+ d.roles.bean = { definition: "companion", credentials: CREATIVE_GITEA, identity, publish: ["stack"] };
|
||||
~
|
||||
+ });
|
||||
~
|
||||
+ assert.deepEqual({ ...business.roles.bean.identity, gitea: { ...business.roles.bean.identity.gitea } }, identity);
|
||||
~
|
||||
+ assert.deepEqual([...business.roles.bean.publish], ["stack"]);
|
||||
~
|
||||
+});
|
||||
~
|
||||
~
|
||||
// Row 194 (#1692, D2.5, T17): the per-agent forbid and the retired list.
|
||||
~
|
||||
test("row 194 keep, noHire and retired validate, and a file without them loads as before", () => {
|
||||
~
|
||||
const plain = check();
|
||||
~
|
||||
|
||||
Command: git diff --no-color --word-diff=porcelain e0c6142f3 -- packages/business/tests/cli.test.mjs
|
||||
diff --git a/packages/business/tests/cli.test.mjs b/packages/business/tests/cli.test.mjs
|
||||
index 3aa1d52ee..beb367f8c 100644
|
||||
--- a/packages/business/tests/cli.test.mjs
|
||||
+++ b/packages/business/tests/cli.test.mjs
|
||||
@@ -11,7 +11,7 @@ const CLI = join(REPO, "packages", "business", "src", "cli.mjs");
|
||||
test('C2-04: business validate and resolve skip a library before code projects and credential checks', async t => {
|
||||
~
|
||||
const { mappingEntry } = await import('../../library/tests/helpers.mjs');
|
||||
~
|
||||
const { rmSync } = await import('node:fs');
|
||||
~
|
||||
const s = setup(doc => {
|
||||
+doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
doc.projects = { books: mappingEntry(), ...doc.projects }; });
|
||||
~
|
||||
t.after(() => rmSync(s.root, { recursive: true, force: true }));
|
||||
~
|
||||
writeJson(projectFilePath(s.doc.projects.stack.root), { projectVersion: 1, id: 'stack', vars: { 'tracker.project': 3 } });
|
||||
~
|
||||
const checked = run(s, 'validate', 'acme');
|
||||
~
|
||||
|
||||
Command: git diff --no-color --word-diff=porcelain e0c6142f3 -- packages/business/tests/instance-settings.test.mjs
|
||||
diff --git a/packages/business/tests/instance-settings.test.mjs b/packages/business/tests/instance-settings.test.mjs
|
||||
index e85366562..54c22e0e0 100644
|
||||
--- a/packages/business/tests/instance-settings.test.mjs
|
||||
+++ b/packages/business/tests/instance-settings.test.mjs
|
||||
@@ -9,7 +9,7 @@ import { mkdirSync, readdirSync, readFileSync, rmSync, statSync, writeFileSync }
|
||||
import { join } from "node:path";
|
||||
~
|
||||
import { instanceSettings } from "../src/instance-settings.mjs";
|
||||
~
|
||||
import { projectFilePath } from "../src/project.mjs";
|
||||
~
|
||||
import { businessDoc,
|
||||
+FAR_DATE,
|
||||
REPO, rolesCopy, systemConfig, systemFor, tmp, writeJson } from "./helpers.mjs";
|
||||
~
|
||||
|
||||
~
|
||||
const CLI = join(REPO, "packages", "business", "src", "cli.mjs");
|
||||
~
|
||||
const roots = [];
|
||||
~
|
||||
@@ -22,7 +22,7 @@ const LEVELS = { pi: ["off", "minimal", "low", "medium", "high", "xhigh", "max"]
|
||||
|
||||
~
|
||||
test('C2-04: instance settings skip a library while checking a later code project', async () => {
|
||||
~
|
||||
const { mappingEntry } = await import('../../library/tests/helpers.mjs');
|
||||
~
|
||||
const f = fixture(doc => {
|
||||
+doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
doc.projects = { books: mappingEntry(), ...doc.projects }; });
|
||||
~
|
||||
writeJson(projectFilePath(f.doc.projects.stack.root), { projectVersion: 1, id: 'stack', vars: { 'tracker.project': 3 } });
|
||||
~
|
||||
const before = f.settings.read('acme');
|
||||
~
|
||||
f.settings.set('acme', { revision: before.revision, instance: 'gate-215', op: 'add', definition: 'merge-gate' }, 'jason');
|
||||
~
|
||||
@@ -286,7 +286,8 @@ test("row 213 a creative instance is the human's: add, vars and definition chang
|
||||
writeFileSync(join(f.root, "config", "personas", "acme", "bean.md"), text, { mode: 0o600 });
|
||||
~
|
||||
const persona = { "persona.name": "Bean", "persona.sha256": createHash("sha256").update(text).digest("hex") };
|
||||
~
|
||||
const view = f.settings.read("acme");
|
||||
~
|
||||
|
||||
+// Row 285 (mos-1332 item 4): the companion definition declares gitea.
|
||||
~
|
||||
assert.deepEqual(view.definitions.companion, { services:
|
||||
-[],
|
||||
+["gitea"],
|
||||
accepted: true });
|
||||
~
|
||||
const add = { instance: "bean", op: "add", definition: "companion", vars: persona };
|
||||
~
|
||||
for (const actor of ["chief-of-staff.chief", "tester"]) {
|
||||
~
|
||||
assert.throws(() => f.settings.set("acme", { revision: view.revision, ...add }, actor), e => e.code === "organization-creative-human-only", actor);
|
||||
~
|
||||
@@ -331,8 +332,8 @@ test("row 213 a creative instance is the human's: add, vars and definition chang
|
||||
// every actor, the human included. The listing's endProtected is that same check for its reader.
|
||||
~
|
||||
test("row 256 T1-T3, T5 the human deletes a creative instance, no other actor does, and the assistant stays", () => {
|
||||
~
|
||||
const f = fixture(doc => {
|
||||
~
|
||||
doc.roles.bean = { definition:
|
||||
-"companion"
|
||||
+"companion", credentials: { gitea: { store: true, rotateBy: FAR_DATE } }
|
||||
};
|
||||
~
|
||||
doc.roles.muse = { definition:
|
||||
-"ideas"
|
||||
+"ideas", credentials: { gitea: { store: true, rotateBy: FAR_DATE } }
|
||||
};
|
||||
~
|
||||
doc.roles.assistant = { definition: "assistant", holder: "mos" };
|
||||
~
|
||||
});
|
||||
~
|
||||
const del = (instance, actor) => () => f.settings.set("acme", { revision: f.settings.read("acme").revision, instance, op: "delete" }, actor);
|
||||
~
|
||||
@@ -377,7 +378,7 @@ test("row 256 T1-T3, T5 the human deletes a creative instance, no other actor do
|
||||
// instance can't be kept, launch.by or an arbiter, so the check it reaches is the last-listed one.
|
||||
~
|
||||
test("row 256 T4 the human's delete of the only listed instance, a creative one, is the last-listed refusal", () => {
|
||||
~
|
||||
const f = fixture(doc => {
|
||||
~
|
||||
doc.roles.bean = { definition:
|
||||
-"companion"
|
||||
+"companion", credentials: { gitea: { store: true, rotateBy: FAR_DATE } }
|
||||
};
|
||||
~
|
||||
doc.launch.instances = ["bean"];
|
||||
~
|
||||
});
|
||||
~
|
||||
const bytes = readFileSync(f.file, "utf8");
|
||||
~
|
||||
|
||||
Command: git diff --no-color --word-diff=porcelain e0c6142f3 -- packages/business/tests/library-projects-protected.test.mjs
|
||||
diff --git a/packages/business/tests/library-projects-protected.test.mjs b/packages/business/tests/library-projects-protected.test.mjs
|
||||
index 51672bd7b..d4d09d94f 100644
|
||||
--- a/packages/business/tests/library-projects-protected.test.mjs
|
||||
+++ b/packages/business/tests/library-projects-protected.test.mjs
|
||||
@@ -14,6 +14,7 @@ function fixture(t) {
|
||||
books.universes.hybrid = { kind: 'hybrid', name: 'An invented crossover',
|
||||
~
|
||||
sources: ['harbor', 'second'], books: ['Hybrid Book'], playground: [], constraints: [], notes: 'Fixture only' };
|
||||
~
|
||||
doc.projects = { books, ...doc.projects };
|
||||
~
|
||||
|
||||
+doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
const dir = join(root, 'config'), file = writeJson(join(dir, 'businesses/acme.json'), doc);
|
||||
~
|
||||
const writer = organizationWriter({ dir, rolesDir: rolesCopy(root) });
|
||||
~
|
||||
// Give both snapshots an existing ordinary committed receipt to preserve.
|
||||
~
|
||||
|
||||
Command: git diff --no-color --word-diff=porcelain e0c6142f3 -- packages/business/tests/library-seats.test.mjs
|
||||
diff --git a/packages/business/tests/library-seats.test.mjs b/packages/business/tests/library-seats.test.mjs
|
||||
index 3cd0f86cf..da76fdbc7 100644
|
||||
--- a/packages/business/tests/library-seats.test.mjs
|
||||
+++ b/packages/business/tests/library-seats.test.mjs
|
||||
@@ -27,7 +27,9 @@ test("M7/M8: library seats come from library businesses, creative seats from the
|
||||
const { root, dir } = fixture(t);
|
||||
~
|
||||
const doc = businessDoc(root, "acme");
|
||||
~
|
||||
doc.projects = { books: mappingEntry(), ...doc.projects };
|
||||
~
|
||||
|
||||
+doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
doc.roles.bean = { definition: "companion" };
|
||||
~
|
||||
|
||||
+doc.roles.bean.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
writeJson(join(dir, "businesses", "acme.json"), doc);
|
||||
~
|
||||
const found = sets(dir);
|
||||
~
|
||||
assert.deepEqual([...found.librarySeats].sort(), ["bean", "chief", "coder", "cto", "pm", "reviewer"]);
|
||||
~
|
||||
@@ -39,6 +41,7 @@ test("M8: a business with no library project puts no seat in either set", (t) =>
|
||||
const { root, dir } = fixture(t);
|
||||
~
|
||||
const doc = businessDoc(root, "other");
|
||||
~
|
||||
doc.roles.bean = { definition: "companion" };
|
||||
~
|
||||
|
||||
+doc.roles.bean.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
writeJson(join(dir, "businesses", "other.json"), doc);
|
||||
~
|
||||
const found = sets(dir);
|
||||
~
|
||||
assert.equal(found.librarySeats.size, 0);
|
||||
~
|
||||
|
||||
Command: git diff --no-color --word-diff=porcelain e0c6142f3 -- packages/business/tests/resolve.test.mjs
|
||||
diff --git a/packages/business/tests/resolve.test.mjs b/packages/business/tests/resolve.test.mjs
|
||||
index b1e50f349..2fa106053 100644
|
||||
--- a/packages/business/tests/resolve.test.mjs
|
||||
+++ b/packages/business/tests/resolve.test.mjs
|
||||
@@ -31,7 +31,7 @@ const resolve = (s, instance) => resolveInstance({ system: s.system, business: s
|
||||
test('C2-04: a library first in projects does not hide a later project layer', async t => {
|
||||
~
|
||||
const { mappingEntry } = await import('../../library/tests/helpers.mjs');
|
||||
~
|
||||
const { rmSync } = await import('node:fs');
|
||||
~
|
||||
const s = setup(doc => {
|
||||
+doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
doc.projects = { books: mappingEntry(), ...doc.projects }; }, { vars: { 'tracker.project': 7 } });
|
||||
~
|
||||
t.after(() => rmSync(s.root, { recursive: true, force: true }));
|
||||
~
|
||||
const result = resolve(s, 'coder');
|
||||
~
|
||||
assert.equal(result.project, 'stack');
|
||||
~
|
||||
|
||||
Command: git diff --no-color --word-diff=porcelain e0c6142f3 -- packages/cli/tests/case2-install.test.mjs
|
||||
diff --git a/packages/cli/tests/case2-install.test.mjs b/packages/cli/tests/case2-install.test.mjs
|
||||
index cc1142510..51b606bda 100644
|
||||
--- a/packages/cli/tests/case2-install.test.mjs
|
||||
+++ b/packages/cli/tests/case2-install.test.mjs
|
||||
@@ -51,8 +51,11 @@ function world(t, { profile = "library" } = {}) {
|
||||
for (const r of Object.values(doc.roles)) r.vars = { ...r.vars, harness: "pi" };
|
||||
~
|
||||
if (profile === "library") {
|
||||
~
|
||||
doc.projects.books = { ...mappingEntry(), user: "writer" };
|
||||
~
|
||||
|
||||
+doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
doc.roles.bean = { definition: "companion", vars: { harness: "pi" } };
|
||||
~
|
||||
|
||||
+doc.roles.bean.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
doc.roles.chet = { definition: "companion", vars: { harness: "pi" } };
|
||||
~
|
||||
|
||||
+doc.roles.chet.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
} else doc.vars["bus.tester"] = true;
|
||||
~
|
||||
const input = writeJson(join(root, "input", "acme.json"), doc);
|
||||
~
|
||||
const staging = join(root, "staging");
|
||||
~
|
||||
@@ -212,6 +215,7 @@ test("the factory install refuses a library project and bus.tester off, before a
|
||||
const x = world(t, { profile: "factory" });
|
||||
~
|
||||
const doc = JSON.parse(readFileSync(x.input, "utf8"));
|
||||
~
|
||||
doc.projects.books = { ...mappingEntry(), user: "writer" };
|
||||
~
|
||||
|
||||
+doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
writeJson(x.input, doc);
|
||||
~
|
||||
refused(install(x, { profile: "factory" }), /profile-library-business/);
|
||||
~
|
||||
delete doc.projects.books;
|
||||
~
|
||||
|
||||
Command: git diff --no-color --word-diff=porcelain e0c6142f3 -- packages/cli/tests/launcher.test.mjs
|
||||
diff --git a/packages/cli/tests/launcher.test.mjs b/packages/cli/tests/launcher.test.mjs
|
||||
index baabd843e..eeca18eb0 100644
|
||||
--- a/packages/cli/tests/launcher.test.mjs
|
||||
+++ b/packages/cli/tests/launcher.test.mjs
|
||||
@@ -1,4 +1,4 @@
|
||||
import {
|
||||
+FAR_DATE,
|
||||
launchDoc } from "../../business/tests/helpers.mjs";
|
||||
~
|
||||
// The S6 launcher inside a real bus host: real broker child, real runners
|
||||
~
|
||||
// in the bwrap sandbox, the fake adapter from packages/harness standing in for the
|
||||
~
|
||||
// harness. The chief of staff launches a coder through its `launch` tool (row 119: the
|
||||
~
|
||||
@@ -32,7 +32,7 @@ const skip = sandboxProblem() ?? false;
|
||||
|
||||
~
|
||||
test('C2-04: launcher workspace clones code but never the library', { skip, timeout: 30000 }, async t => {
|
||||
~
|
||||
const { mappingEntry } = await import('../../library/tests/helpers.mjs');
|
||||
~
|
||||
const f = await setup(t, doc => {
|
||||
+doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
doc.projects = { books: mappingEntry(), ...doc.projects }; return doc; });
|
||||
~
|
||||
await f.launcher.launchPm();
|
||||
~
|
||||
const workspace = workspaceDir(f.f.dataRoot, 'acme', 'chief');
|
||||
~
|
||||
assert.equal(existsSync(join(workspace, 'stack', '.git')), true);
|
||||
~
|
||||
@@ -766,7 +766,7 @@ test("row 64 a role skill that isn't enabled refuses skill-not-enabled, and one
|
||||
test("row 213 a creative instance's persona is read from <configDir>/personas: off its digest the launch fails with the mismatch as its reason", { timeout: 30000 }, async (t) => {
|
||||
~
|
||||
const text = "Warm. PERSONA-MARKER-d2\n";
|
||||
~
|
||||
const given = prepare(t, (doc) => {
|
||||
~
|
||||
doc.roles.bean = { definition: "companion",
|
||||
+credentials: { gitea: { store: true, rotateBy: FAR_DATE } },
|
||||
vars: { harness: "pi", model: "claude-sonnet-5-5", thinking: "high", "persona.name": "Bean", "persona.sha256": createHash("sha256").update(text).digest("hex") } };
|
||||
~
|
||||
doc.launch.instances.push("bean");
|
||||
~
|
||||
return doc;
|
||||
~
|
||||
});
|
||||
~
|
||||
|
||||
Command: git diff --no-color --word-diff=porcelain e0c6142f3 -- packages/cli/tests/thread-launch.test.mjs
|
||||
diff --git a/packages/cli/tests/thread-launch.test.mjs b/packages/cli/tests/thread-launch.test.mjs
|
||||
index fa3adb866..3e313e49d 100644
|
||||
--- a/packages/cli/tests/thread-launch.test.mjs
|
||||
+++ b/packages/cli/tests/thread-launch.test.mjs
|
||||
@@ -400,6 +400,7 @@ test("REQ-THREAD-1 REQ-LAUNCH-1 the chief can't launch the assistant outside a t
|
||||
test('C2-09a: fromSession refuses a creative instance outside a thread without a sandbox', { timeout: 30000 }, async t => {
|
||||
~
|
||||
const prepared = prepare(t, { edit: doc => {
|
||||
~
|
||||
doc.roles.bean = { ...doc.roles.assistant, definition: 'companion' };
|
||||
~
|
||||
|
||||
+doc.roles.bean.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
doc.launch.instances.push('bean');
|
||||
~
|
||||
return doc;
|
||||
~
|
||||
} });
|
||||
~
|
||||
@@ -465,7 +466,9 @@ test('C2-09a: creative thread messages start distinct runs and keep each instanc
|
||||
const vars = { ...doc.roles.assistant.vars };
|
||||
~
|
||||
delete doc.roles.assistant;
|
||||
~
|
||||
doc.roles.bean = { definition: 'companion', vars: { ...vars } };
|
||||
~
|
||||
|
||||
+doc.roles.bean.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
doc.roles.chet = { definition: 'continuity', vars: { ...vars } };
|
||||
~
|
||||
|
||||
+doc.roles.chet.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
doc.launch.instances = ['coder', 'bean', 'chet'];
|
||||
~
|
||||
return doc;
|
||||
~
|
||||
} });
|
||||
~
|
||||
@@ -501,6 +504,7 @@ test('C2-09a: creative thread messages start distinct runs and keep each instanc
|
||||
test('C2-09a: terminating one creative thread does not signal an unselected peer of the same instance', { skip, timeout: 90000 }, async t => {
|
||||
~
|
||||
const prepared = prepare(t, { sonnet: 2, idle: 60, edit: doc => {
|
||||
~
|
||||
doc.roles.bean = { ...doc.roles.assistant, definition: 'companion' };
|
||||
~
|
||||
|
||||
+doc.roles.bean.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
delete doc.roles.assistant;
|
||||
~
|
||||
doc.launch.instances = ['coder', 'bean'];
|
||||
~
|
||||
return doc;
|
||||
~
|
||||
|
||||
Command: git diff --no-color --word-diff=porcelain e0c6142f3 -- packages/cli/tests/trackers-boot.test.mjs
|
||||
diff --git a/packages/cli/tests/trackers-boot.test.mjs b/packages/cli/tests/trackers-boot.test.mjs
|
||||
index 8d1a407c6..e7f50c947 100644
|
||||
--- a/packages/cli/tests/trackers-boot.test.mjs
|
||||
+++ b/packages/cli/tests/trackers-boot.test.mjs
|
||||
@@ -14,7 +14,7 @@ import { fixture, tmp } from "./helpers.mjs";
|
||||
|
||||
~
|
||||
test('C2-04: a library-only business with tracker.baseUrl boots without a project tracker', async t => {
|
||||
~
|
||||
const { mappingEntry } = await import('../../library/tests/helpers.mjs');
|
||||
~
|
||||
const f = fixture(tmp(t), 'acme', doc => {
|
||||
+doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
doc.projects = { books: mappingEntry() }; return doc; });
|
||||
~
|
||||
const warnings = [];
|
||||
~
|
||||
const boot = bootConfig({ system: loadSystem({ env: f.env }), businessId: 'acme', env: f.env, warn: text => warnings.push(text) });
|
||||
~
|
||||
assert.equal(boot.trackers, undefined);
|
||||
~
|
||||
@@ -40,6 +40,7 @@ test("bootConfig trackers reach the S3 adapter in the real broker child, which g
|
||||
|
||||
~
|
||||
const f = fixture(root, "acme", (doc) => {
|
||||
~
|
||||
doc.projects = { books: mappingEntry(), ...doc.projects };
|
||||
~
|
||||
|
||||
+doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
doc.vars["tracker.baseUrl"] = srv.url;
|
||||
~
|
||||
doc.tracker.sync.botId = bots.sync;
|
||||
~
|
||||
// The chief of staff (row 119) has no tracker bot.
|
||||
~
|
||||
@@ -51,7 +52,7 @@ test("bootConfig trackers reach the S3 adapter in the real broker child, which g
|
||||
chmodSync(file, 0o600);
|
||||
~
|
||||
};
|
||||
~
|
||||
put(f.doc.tracker.sync.credentials.vikunja.file, fake.token(bots.sync, SCOPES.sync));
|
||||
~
|
||||
for (const r of Object.keys(f.doc.roles)) if
|
||||
-(f.doc.roles[r].credentials)
|
||||
+(f.doc.roles[r].credentials?.vikunja)
|
||||
put(f.doc.roles[r].credentials.vikunja.file, fake.token(bots[r], r === "pm" ? SCOPES.pm : SCOPES.worker));
|
||||
~
|
||||
writeJson(join(root, "project", ".mosaic", "project.json"), { projectVersion: 1, id: "stack", vars: { "tracker.project": project } });
|
||||
~
|
||||
|
||||
~
|
||||
mkdirSync(f.dataRoot, { recursive: true, mode: 0o700 });
|
||||
~
|
||||
|
||||
Command: git diff --no-color --word-diff=porcelain e0c6142f3 -- packages/control-board/tests/creative-hidden.test.mjs
|
||||
diff --git a/packages/control-board/tests/creative-hidden.test.mjs b/packages/control-board/tests/creative-hidden.test.mjs
|
||||
index c2abd348e..12e16866e 100644
|
||||
--- a/packages/control-board/tests/creative-hidden.test.mjs
|
||||
+++ b/packages/control-board/tests/creative-hidden.test.mjs
|
||||
@@ -20,7 +20,9 @@ function fixture(t) {
|
||||
const dir = join(root, "config");
|
||||
~
|
||||
const doc = businessDoc(root, "acme");
|
||||
~
|
||||
doc.projects = { books: mappingEntry(), ...doc.projects };
|
||||
~
|
||||
|
||||
+doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
doc.roles.bean = { definition: "companion" };
|
||||
~
|
||||
|
||||
+doc.roles.bean.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
writeJson(join(dir, "businesses", "acme.json"), doc);
|
||||
~
|
||||
const threadDir = join(root, "data", "threads", "acme", "t1", "session");
|
||||
~
|
||||
mkdirSync(threadDir, { recursive: true });
|
||||
~
|
||||
|
||||
Command: git diff --no-color --word-diff=porcelain e0c6142f3 -- packages/discord/tests/library-seat.test.mjs
|
||||
diff --git a/packages/discord/tests/library-seat.test.mjs b/packages/discord/tests/library-seat.test.mjs
|
||||
index 315f69698..a7ac869e5 100644
|
||||
--- a/packages/discord/tests/library-seat.test.mjs
|
||||
+++ b/packages/discord/tests/library-seat.test.mjs
|
||||
@@ -31,7 +31,9 @@ function setup(overrides = {}) {
|
||||
function business(s, { library, role = "sage", definition = "companion" }) {
|
||||
~
|
||||
const doc = businessDoc(s.root, "acme");
|
||||
~
|
||||
if (library) doc.projects = { books: mappingEntry(), ...doc.projects };
|
||||
~
|
||||
|
||||
+if (library) doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
doc.roles[role] = { definition };
|
||||
~
|
||||
|
||||
+doc.roles[role].credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
writeJson(join(s.root, "businesses", "acme.json"), doc);
|
||||
~
|
||||
}
|
||||
~
|
||||
|
||||
~
|
||||
@@ -0,0 +1,440 @@
|
||||
Command: git diff --word-diff=porcelain c53ea7d12 -- packages/bus/tests/reload.test.mjs
|
||||
diff --git a/packages/bus/tests/reload.test.mjs b/packages/bus/tests/reload.test.mjs
|
||||
index 091b37b26..342d578d0 100644
|
||||
--- a/packages/bus/tests/reload.test.mjs
|
||||
+++ b/packages/bus/tests/reload.test.mjs
|
||||
@@ -194,7 +194,7 @@ test('T14 a file whose project root differs from the boot copy is not reloaded,
|
||||
});
|
||||
~
|
||||
|
||||
~
|
||||
test('T14 a file whose library mapping differs from the boot copy is not reloaded, because the mirror is ensured at start', async (t) => {
|
||||
~
|
||||
const f = await setup(t, doc => {
|
||||
+doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
doc.projects.books = mappingEntry(); });
|
||||
~
|
||||
const doc = JSON.parse(readFileSync(f.file, 'utf8'));
|
||||
~
|
||||
doc.projects.books.branch = 'other';
|
||||
~
|
||||
writeFileSync(f.file, JSON.stringify(doc, null, 2) + '\n', { mode: 0o600 });
|
||||
~
|
||||
@@ -202,7 +202,7 @@ test('T14 a file whose library mapping differs from the boot copy is not reloade
|
||||
assert.equal(added.restart, true);
|
||||
~
|
||||
assert.equal(f.reloads.length, 0);
|
||||
~
|
||||
// The same library entry reloads.
|
||||
~
|
||||
const g = await setup(t, doc => {
|
||||
+doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
doc.projects.books = mappingEntry(); });
|
||||
~
|
||||
assert.equal(g.ask('instances.set', { revision: g.revision(), instance: 'sec-1', op: 'add', definition: 'security-reviewer' }).restart, false);
|
||||
~
|
||||
assert.equal(g.reloads.length, 1);
|
||||
~
|
||||
});
|
||||
~
|
||||
Command: git diff --word-diff=porcelain c53ea7d12 -- packages/business/tests/business.test.mjs
|
||||
diff --git a/packages/business/tests/business.test.mjs b/packages/business/tests/business.test.mjs
|
||||
index b79576af8..f78789250 100644
|
||||
--- a/packages/business/tests/business.test.mjs
|
||||
+++ b/packages/business/tests/business.test.mjs
|
||||
@@ -15,6 +15,7 @@ test('C2-04: library mappings load without roots, remain frozen, and retain mapp
|
||||
const root = tmp(); t.after(() => rmSync(root, { recursive: true, force: true }));
|
||||
~
|
||||
const doc = businessDoc(root), file = join(root, 'businesses/acme.json');
|
||||
~
|
||||
doc.projects = { books: mappingEntry(), ...doc.projects };
|
||||
~
|
||||
|
||||
+doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
const loaded = validateBusinessDocument(doc, file, { rolesDir: REPO_ROLES });
|
||||
~
|
||||
const { checkMapping } = await import('../../library/src/mapping.mjs');
|
||||
~
|
||||
assert.deepEqual(loaded.projects.books, checkMapping(mappingEntry()));
|
||||
~
|
||||
@@ -42,6 +43,7 @@ test('C2-04: an otherwise valid publish grant cannot name a library repo', async
|
||||
const root = tmp(); t.after(() => rmSync(root, { recursive: true, force: true }));
|
||||
~
|
||||
const doc = businessDoc(root);
|
||||
~
|
||||
doc.projects.books = { ...mappingEntry(), remote: 'https://git.example/writer/books' };
|
||||
~
|
||||
|
||||
+doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
doc.roles.coder.identity = { name: 'Coder', email: '[email protected]', gitea: { url: 'https://git.example', user: 'acme-coder' } };
|
||||
~
|
||||
doc.roles.coder.publish = ['books'];
|
||||
~
|
||||
refuses(() => validateBusinessDocument(doc, join(root, 'businesses/acme.json'), { rolesDir: REPO_ROLES }), /publish.*library/);
|
||||
~
|
||||
Command: git diff --word-diff=porcelain c53ea7d12 -- packages/business/tests/cli.test.mjs
|
||||
diff --git a/packages/business/tests/cli.test.mjs b/packages/business/tests/cli.test.mjs
|
||||
index 3aa1d52ee..beb367f8c 100644
|
||||
--- a/packages/business/tests/cli.test.mjs
|
||||
+++ b/packages/business/tests/cli.test.mjs
|
||||
@@ -11,7 +11,7 @@ const CLI = join(REPO, "packages", "business", "src", "cli.mjs");
|
||||
test('C2-04: business validate and resolve skip a library before code projects and credential checks', async t => {
|
||||
~
|
||||
const { mappingEntry } = await import('../../library/tests/helpers.mjs');
|
||||
~
|
||||
const { rmSync } = await import('node:fs');
|
||||
~
|
||||
const s = setup(doc => {
|
||||
+doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
doc.projects = { books: mappingEntry(), ...doc.projects }; });
|
||||
~
|
||||
t.after(() => rmSync(s.root, { recursive: true, force: true }));
|
||||
~
|
||||
writeJson(projectFilePath(s.doc.projects.stack.root), { projectVersion: 1, id: 'stack', vars: { 'tracker.project': 3 } });
|
||||
~
|
||||
const checked = run(s, 'validate', 'acme');
|
||||
~
|
||||
Command: git diff --word-diff=porcelain c53ea7d12 -- packages/business/tests/instance-settings.test.mjs
|
||||
diff --git a/packages/business/tests/instance-settings.test.mjs b/packages/business/tests/instance-settings.test.mjs
|
||||
index 4b4860633..54c22e0e0 100644
|
||||
--- a/packages/business/tests/instance-settings.test.mjs
|
||||
+++ b/packages/business/tests/instance-settings.test.mjs
|
||||
@@ -22,7 +22,7 @@ const LEVELS = { pi: ["off", "minimal", "low", "medium", "high", "xhigh", "max"]
|
||||
|
||||
~
|
||||
test('C2-04: instance settings skip a library while checking a later code project', async () => {
|
||||
~
|
||||
const { mappingEntry } = await import('../../library/tests/helpers.mjs');
|
||||
~
|
||||
const f = fixture(doc => {
|
||||
+doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
doc.projects = { books: mappingEntry(), ...doc.projects }; });
|
||||
~
|
||||
writeJson(projectFilePath(f.doc.projects.stack.root), { projectVersion: 1, id: 'stack', vars: { 'tracker.project': 3 } });
|
||||
~
|
||||
const before = f.settings.read('acme');
|
||||
~
|
||||
f.settings.set('acme', { revision: before.revision, instance: 'gate-215', op: 'add', definition: 'merge-gate' }, 'jason');
|
||||
~
|
||||
Command: git diff --word-diff=porcelain c53ea7d12 -- packages/business/tests/library-projects-protected.test.mjs
|
||||
diff --git a/packages/business/tests/library-projects-protected.test.mjs b/packages/business/tests/library-projects-protected.test.mjs
|
||||
index 51672bd7b..d4d09d94f 100644
|
||||
--- a/packages/business/tests/library-projects-protected.test.mjs
|
||||
+++ b/packages/business/tests/library-projects-protected.test.mjs
|
||||
@@ -14,6 +14,7 @@ function fixture(t) {
|
||||
books.universes.hybrid = { kind: 'hybrid', name: 'An invented crossover',
|
||||
~
|
||||
sources: ['harbor', 'second'], books: ['Hybrid Book'], playground: [], constraints: [], notes: 'Fixture only' };
|
||||
~
|
||||
doc.projects = { books, ...doc.projects };
|
||||
~
|
||||
|
||||
+doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
const dir = join(root, 'config'), file = writeJson(join(dir, 'businesses/acme.json'), doc);
|
||||
~
|
||||
const writer = organizationWriter({ dir, rolesDir: rolesCopy(root) });
|
||||
~
|
||||
// Give both snapshots an existing ordinary committed receipt to preserve.
|
||||
~
|
||||
Command: git diff --word-diff=porcelain c53ea7d12 -- packages/business/tests/library-seats.test.mjs
|
||||
diff --git a/packages/business/tests/library-seats.test.mjs b/packages/business/tests/library-seats.test.mjs
|
||||
index 3cd0f86cf..da76fdbc7 100644
|
||||
--- a/packages/business/tests/library-seats.test.mjs
|
||||
+++ b/packages/business/tests/library-seats.test.mjs
|
||||
@@ -27,7 +27,9 @@ test("M7/M8: library seats come from library businesses, creative seats from the
|
||||
const { root, dir } = fixture(t);
|
||||
~
|
||||
const doc = businessDoc(root, "acme");
|
||||
~
|
||||
doc.projects = { books: mappingEntry(), ...doc.projects };
|
||||
~
|
||||
|
||||
+doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
doc.roles.bean = { definition: "companion" };
|
||||
~
|
||||
|
||||
+doc.roles.bean.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
writeJson(join(dir, "businesses", "acme.json"), doc);
|
||||
~
|
||||
const found = sets(dir);
|
||||
~
|
||||
assert.deepEqual([...found.librarySeats].sort(), ["bean", "chief", "coder", "cto", "pm", "reviewer"]);
|
||||
~
|
||||
@@ -39,6 +41,7 @@ test("M8: a business with no library project puts no seat in either set", (t) =>
|
||||
const { root, dir } = fixture(t);
|
||||
~
|
||||
const doc = businessDoc(root, "other");
|
||||
~
|
||||
doc.roles.bean = { definition: "companion" };
|
||||
~
|
||||
|
||||
+doc.roles.bean.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
writeJson(join(dir, "businesses", "other.json"), doc);
|
||||
~
|
||||
const found = sets(dir);
|
||||
~
|
||||
assert.equal(found.librarySeats.size, 0);
|
||||
~
|
||||
Command: git diff --word-diff=porcelain c53ea7d12 -- packages/business/tests/resolve.test.mjs
|
||||
diff --git a/packages/business/tests/resolve.test.mjs b/packages/business/tests/resolve.test.mjs
|
||||
index b1e50f349..2fa106053 100644
|
||||
--- a/packages/business/tests/resolve.test.mjs
|
||||
+++ b/packages/business/tests/resolve.test.mjs
|
||||
@@ -31,7 +31,7 @@ const resolve = (s, instance) => resolveInstance({ system: s.system, business: s
|
||||
test('C2-04: a library first in projects does not hide a later project layer', async t => {
|
||||
~
|
||||
const { mappingEntry } = await import('../../library/tests/helpers.mjs');
|
||||
~
|
||||
const { rmSync } = await import('node:fs');
|
||||
~
|
||||
const s = setup(doc => {
|
||||
+doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
doc.projects = { books: mappingEntry(), ...doc.projects }; }, { vars: { 'tracker.project': 7 } });
|
||||
~
|
||||
t.after(() => rmSync(s.root, { recursive: true, force: true }));
|
||||
~
|
||||
const result = resolve(s, 'coder');
|
||||
~
|
||||
assert.equal(result.project, 'stack');
|
||||
~
|
||||
Command: git diff --word-diff=porcelain c53ea7d12 -- packages/cli/tests/case2-install.test.mjs
|
||||
diff --git a/packages/cli/tests/case2-install.test.mjs b/packages/cli/tests/case2-install.test.mjs
|
||||
index cc1142510..51b606bda 100644
|
||||
--- a/packages/cli/tests/case2-install.test.mjs
|
||||
+++ b/packages/cli/tests/case2-install.test.mjs
|
||||
@@ -51,8 +51,11 @@ function world(t, { profile = "library" } = {}) {
|
||||
for (const r of Object.values(doc.roles)) r.vars = { ...r.vars, harness: "pi" };
|
||||
~
|
||||
if (profile === "library") {
|
||||
~
|
||||
doc.projects.books = { ...mappingEntry(), user: "writer" };
|
||||
~
|
||||
|
||||
+doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
doc.roles.bean = { definition: "companion", vars: { harness: "pi" } };
|
||||
~
|
||||
|
||||
+doc.roles.bean.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
doc.roles.chet = { definition: "companion", vars: { harness: "pi" } };
|
||||
~
|
||||
|
||||
+doc.roles.chet.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
} else doc.vars["bus.tester"] = true;
|
||||
~
|
||||
const input = writeJson(join(root, "input", "acme.json"), doc);
|
||||
~
|
||||
const staging = join(root, "staging");
|
||||
~
|
||||
@@ -212,6 +215,7 @@ test("the factory install refuses a library project and bus.tester off, before a
|
||||
const x = world(t, { profile: "factory" });
|
||||
~
|
||||
const doc = JSON.parse(readFileSync(x.input, "utf8"));
|
||||
~
|
||||
doc.projects.books = { ...mappingEntry(), user: "writer" };
|
||||
~
|
||||
|
||||
+doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
writeJson(x.input, doc);
|
||||
~
|
||||
refused(install(x, { profile: "factory" }), /profile-library-business/);
|
||||
~
|
||||
delete doc.projects.books;
|
||||
~
|
||||
Command: git diff --word-diff=porcelain c53ea7d12 -- packages/cli/tests/launcher.test.mjs
|
||||
diff --git a/packages/cli/tests/launcher.test.mjs b/packages/cli/tests/launcher.test.mjs
|
||||
index 9e7518ee5..eeca18eb0 100644
|
||||
--- a/packages/cli/tests/launcher.test.mjs
|
||||
+++ b/packages/cli/tests/launcher.test.mjs
|
||||
@@ -32,7 +32,7 @@ const skip = sandboxProblem() ?? false;
|
||||
|
||||
~
|
||||
test('C2-04: launcher workspace clones code but never the library', { skip, timeout: 30000 }, async t => {
|
||||
~
|
||||
const { mappingEntry } = await import('../../library/tests/helpers.mjs');
|
||||
~
|
||||
const f = await setup(t, doc => {
|
||||
+doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
doc.projects = { books: mappingEntry(), ...doc.projects }; return doc; });
|
||||
~
|
||||
await f.launcher.launchPm();
|
||||
~
|
||||
const workspace = workspaceDir(f.f.dataRoot, 'acme', 'chief');
|
||||
~
|
||||
assert.equal(existsSync(join(workspace, 'stack', '.git')), true);
|
||||
~
|
||||
Command: git diff --word-diff=porcelain c53ea7d12 -- packages/cli/tests/thread-launch.test.mjs
|
||||
diff --git a/packages/cli/tests/thread-launch.test.mjs b/packages/cli/tests/thread-launch.test.mjs
|
||||
index fa3adb866..3e313e49d 100644
|
||||
--- a/packages/cli/tests/thread-launch.test.mjs
|
||||
+++ b/packages/cli/tests/thread-launch.test.mjs
|
||||
@@ -400,6 +400,7 @@ test("REQ-THREAD-1 REQ-LAUNCH-1 the chief can't launch the assistant outside a t
|
||||
test('C2-09a: fromSession refuses a creative instance outside a thread without a sandbox', { timeout: 30000 }, async t => {
|
||||
~
|
||||
const prepared = prepare(t, { edit: doc => {
|
||||
~
|
||||
doc.roles.bean = { ...doc.roles.assistant, definition: 'companion' };
|
||||
~
|
||||
|
||||
+doc.roles.bean.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
doc.launch.instances.push('bean');
|
||||
~
|
||||
return doc;
|
||||
~
|
||||
} });
|
||||
~
|
||||
@@ -465,7 +466,9 @@ test('C2-09a: creative thread messages start distinct runs and keep each instanc
|
||||
const vars = { ...doc.roles.assistant.vars };
|
||||
~
|
||||
delete doc.roles.assistant;
|
||||
~
|
||||
doc.roles.bean = { definition: 'companion', vars: { ...vars } };
|
||||
~
|
||||
|
||||
+doc.roles.bean.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
doc.roles.chet = { definition: 'continuity', vars: { ...vars } };
|
||||
~
|
||||
|
||||
+doc.roles.chet.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
doc.launch.instances = ['coder', 'bean', 'chet'];
|
||||
~
|
||||
return doc;
|
||||
~
|
||||
} });
|
||||
~
|
||||
@@ -501,6 +504,7 @@ test('C2-09a: creative thread messages start distinct runs and keep each instanc
|
||||
test('C2-09a: terminating one creative thread does not signal an unselected peer of the same instance', { skip, timeout: 90000 }, async t => {
|
||||
~
|
||||
const prepared = prepare(t, { sonnet: 2, idle: 60, edit: doc => {
|
||||
~
|
||||
doc.roles.bean = { ...doc.roles.assistant, definition: 'companion' };
|
||||
~
|
||||
|
||||
+doc.roles.bean.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
delete doc.roles.assistant;
|
||||
~
|
||||
doc.launch.instances = ['coder', 'bean'];
|
||||
~
|
||||
return doc;
|
||||
~
|
||||
Command: git diff --word-diff=porcelain c53ea7d12 -- packages/cli/tests/trackers-boot.test.mjs
|
||||
diff --git a/packages/cli/tests/trackers-boot.test.mjs b/packages/cli/tests/trackers-boot.test.mjs
|
||||
index 8d1a407c6..e7f50c947 100644
|
||||
--- a/packages/cli/tests/trackers-boot.test.mjs
|
||||
+++ b/packages/cli/tests/trackers-boot.test.mjs
|
||||
@@ -14,7 +14,7 @@ import { fixture, tmp } from "./helpers.mjs";
|
||||
|
||||
~
|
||||
test('C2-04: a library-only business with tracker.baseUrl boots without a project tracker', async t => {
|
||||
~
|
||||
const { mappingEntry } = await import('../../library/tests/helpers.mjs');
|
||||
~
|
||||
const f = fixture(tmp(t), 'acme', doc => {
|
||||
+doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
doc.projects = { books: mappingEntry() }; return doc; });
|
||||
~
|
||||
const warnings = [];
|
||||
~
|
||||
const boot = bootConfig({ system: loadSystem({ env: f.env }), businessId: 'acme', env: f.env, warn: text => warnings.push(text) });
|
||||
~
|
||||
assert.equal(boot.trackers, undefined);
|
||||
~
|
||||
@@ -40,6 +40,7 @@ test("bootConfig trackers reach the S3 adapter in the real broker child, which g
|
||||
|
||||
~
|
||||
const f = fixture(root, "acme", (doc) => {
|
||||
~
|
||||
doc.projects = { books: mappingEntry(), ...doc.projects };
|
||||
~
|
||||
|
||||
+doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
doc.vars["tracker.baseUrl"] = srv.url;
|
||||
~
|
||||
doc.tracker.sync.botId = bots.sync;
|
||||
~
|
||||
// The chief of staff (row 119) has no tracker bot.
|
||||
~
|
||||
@@ -51,7 +52,7 @@ test("bootConfig trackers reach the S3 adapter in the real broker child, which g
|
||||
chmodSync(file, 0o600);
|
||||
~
|
||||
};
|
||||
~
|
||||
put(f.doc.tracker.sync.credentials.vikunja.file, fake.token(bots.sync, SCOPES.sync));
|
||||
~
|
||||
for (const r of Object.keys(f.doc.roles)) if
|
||||
-(f.doc.roles[r].credentials)
|
||||
+(f.doc.roles[r].credentials?.vikunja)
|
||||
put(f.doc.roles[r].credentials.vikunja.file, fake.token(bots[r], r === "pm" ? SCOPES.pm : SCOPES.worker));
|
||||
~
|
||||
writeJson(join(root, "project", ".mosaic", "project.json"), { projectVersion: 1, id: "stack", vars: { "tracker.project": project } });
|
||||
~
|
||||
|
||||
~
|
||||
mkdirSync(f.dataRoot, { recursive: true, mode: 0o700 });
|
||||
~
|
||||
Command: git diff --word-diff=porcelain c53ea7d12 -- packages/control-board/tests/creative-hidden.test.mjs
|
||||
diff --git a/packages/control-board/tests/creative-hidden.test.mjs b/packages/control-board/tests/creative-hidden.test.mjs
|
||||
index c2abd348e..12e16866e 100644
|
||||
--- a/packages/control-board/tests/creative-hidden.test.mjs
|
||||
+++ b/packages/control-board/tests/creative-hidden.test.mjs
|
||||
@@ -20,7 +20,9 @@ function fixture(t) {
|
||||
const dir = join(root, "config");
|
||||
~
|
||||
const doc = businessDoc(root, "acme");
|
||||
~
|
||||
doc.projects = { books: mappingEntry(), ...doc.projects };
|
||||
~
|
||||
|
||||
+doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
doc.roles.bean = { definition: "companion" };
|
||||
~
|
||||
|
||||
+doc.roles.bean.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
writeJson(join(dir, "businesses", "acme.json"), doc);
|
||||
~
|
||||
const threadDir = join(root, "data", "threads", "acme", "t1", "session");
|
||||
~
|
||||
mkdirSync(threadDir, { recursive: true });
|
||||
~
|
||||
Command: git diff --word-diff=porcelain c53ea7d12 -- packages/discord/tests/library-seat.test.mjs
|
||||
diff --git a/packages/discord/tests/library-seat.test.mjs b/packages/discord/tests/library-seat.test.mjs
|
||||
index 315f69698..a7ac869e5 100644
|
||||
--- a/packages/discord/tests/library-seat.test.mjs
|
||||
+++ b/packages/discord/tests/library-seat.test.mjs
|
||||
@@ -31,7 +31,9 @@ function setup(overrides = {}) {
|
||||
function business(s, { library, role = "sage", definition = "companion" }) {
|
||||
~
|
||||
const doc = businessDoc(s.root, "acme");
|
||||
~
|
||||
if (library) doc.projects = { books: mappingEntry(), ...doc.projects };
|
||||
~
|
||||
|
||||
+if (library) doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
doc.roles[role] = { definition };
|
||||
~
|
||||
|
||||
+doc.roles[role].credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
|
||||
~
|
||||
writeJson(join(s.root, "businesses", "acme.json"), doc);
|
||||
~
|
||||
}
|
||||
~
|
||||
|
||||
~
|
||||
Loaded 100 of 1115 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user