Compare commits

...
Author SHA1 Message Date
jason.woltje 2e4503dc7d row 285: preserve credential bindings for approved creative changes and verify r4 (#1790, mos-1585, mos-1586) 2026-10-24 08:03:32 -05:00
jason.woltje 0f6cdc8610 docs: row 285 r4 replay and regenerated B1 evidence on landed 296 and 217 (sage-4078) 2026-10-24 06:24:49 -05:00
jason.woltje 826d6e1d38 row 285: align library and creative fixture credential data under B1 (mos-1581, mos-1582) 2026-10-24 06:23:01 -05:00
jason.woltje c53ea7d12c row 285: require chief gitea exactly for library businesses (mos-1580, sage-4059, sage-4060) 2026-10-24 06:23:01 -05:00
jason.woltje 0882bd9976 docs: trim range-diff evidence trailing whitespace 2026-10-24 06:23:01 -05:00
jason.woltje 405b05e914 docs: correct row 285 evidence timestamps with append-only receipts 2026-10-24 06:23:01 -05:00
jason.woltje 9f7adb03ea docs: row 285 r3 replay and static drift evidence before CLEAR (#1790, sage-4039) 2026-10-24 06:23:01 -05:00
jason.woltje 01dfecc1f2 row 285: BUILD.md records N1, the creative-only library.write refusal as a follow-up, and the round scope (#1790, sage-3593) 2026-10-24 06:22:37 -05:00
jason.woltje 059cf04ea2 row 285: library.write joins ACTIONS and ROUTED in the business vocabulary and the broker under PRD 1.16 REQ-WAIT-3 and REQ-LIB-6, with a hard-waits test; BUILD.md records the r2 rebase, range-diff and drift check (#1790, sage-3578) 2026-10-24 06:22:37 -05:00
jason.woltje ee81d2ae65 row 285: mos-1333, withdraw the publish fence; N10 option (a) with an assistant instance; a chief with its gitea ref, identity and publish loads; restore the creative publish test; BUILD.md gate scope (sage-2946) (#1790) 2026-10-24 06:22:37 -05:00
jason.woltje 02fdae405a row 285: webby-0178 early read, drop the stale creative publish comment and name the example's test readers (#1790) 2026-10-24 06:22:37 -05:00
jason.woltje 86322bea20 row 285: a chief-of-staff or creative instance that names publish refuses at load, keeping today's N10 refusal; instance-settings :289 follows the companion's gitea (#1790, mos-1332)
The fence sits near business.mjs:166, clear of row 287's :283-291. Its message
starts with the N10 text. An assistant-instance test keeps the no-gitea branch
covered, and a creative-instance test covers the fence. Nothing here has run.
2026-10-24 06:22:37 -05:00
jason.woltje 5e8e5f8a93 row 285: fixtures, example and README give the chief and creative instances their gitea reference (#1790, mos-1330)
Fixture data only, plus two named tests that a chief or creative instance
without credentials.gitea refuses at load. chief-of-staff.test :88 and :155
change expected values and wait on Mos's mos-1272 ruling. Nothing here has run.
2026-10-24 06:22:37 -05:00
jason.woltje 6ea4e3d378 row 285: C2-08b, creative roles hold library.write and the gitea credential, the chief of staff a read-scoped gitea credential; #giteaRole refuses the chief (#1790, mos-1309 item 5, sage-2915, sage-2921)
The creative role files declare gitea with SEAT_SCOPES, the scopes the Gitea
grant mints. The chief declares read scopes only, so #giteaRole refuses it
with gitea-not-declared until row 287 mints its declared scopes.
library.write is not yet routed: it waits on PRD 1.16 (row #1796), and the
fixture change waits on Mos's mos-1272 rulings. Nothing here has run.
2026-10-24 06:22:37 -05:00
894 changed files with 66315 additions and 94 deletions

No files matched your search

+15
View File
@@ -5501,3 +5501,18 @@ claim. Receipts and limitations in agents/lena/work/queue-296/BUILD.md and run-r
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-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.
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
+45
View File
@@ -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);
~
}
~
~
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,16 @@
TAP version 13
# Subtest: C2-06 runtime reads changed and unreadable reply limits without restarting
ok 1 - C2-06 runtime reads changed and unreadable reply limits without restarting
---
duration_ms: 115.226832
type: 'test'
...
1..1
# tests 1
# suites 0
# pass 1
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 225.83934
@@ -0,0 +1,93 @@
Command: git diff --word-diff=porcelain d0a6a87cd -- packages/bus/tests/citation-runtime.test.mjs
diff --git a/packages/bus/tests/citation-runtime.test.mjs b/packages/bus/tests/citation-runtime.test.mjs
index fdcfdadfc..b1a2de155 100644
--- a/packages/bus/tests/citation-runtime.test.mjs
+++ b/packages/bus/tests/citation-runtime.test.mjs
@@ -12,7 +12,7 @@ import { mappingEntry } from '../../library/tests/helpers.mjs';
test('C2-06 runtime reads changed and unreadable reply limits without restarting', async t => {
~
const root = mkdtempSync(join(tmpdir(), 'citation-runtime-')); t.after(() => rmSync(root, { recursive: true, force: true }));
~
const doc = businessDoc(root), rolesDir = rolesCopy(root), dir = join(root, 'config'), dataRoot = join(root, 'data');
~
doc.projects.books = mappingEntry();
+doc.roles.chief.credentials = { gitea: { ...doc.roles.coder.credentials.gitea } };
doc.replyLimits = { requireCitation: false, citationsPerReply: 3 };
~
const file = writeJson(join(dir, 'businesses/acme.json'), doc);
~
const checked = validateBusinessDocument(doc, file, { rolesDir }); mkdirSync(dataRoot, { mode: 0o700 });
~
// Runtime takes the host's broker projection, not the business validator's unresolved role entries.
~
Command: git diff --word-diff=porcelain d0a6a87cd -- packages/cli/tests/launcher.test.mjs
diff --git a/packages/cli/tests/launcher.test.mjs b/packages/cli/tests/launcher.test.mjs
index baabd843e..766bbb35a 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: { ...doc.roles.coder.credentials.gitea } },
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 --word-diff=porcelain d0a6a87cd -- packages/harness/tests/creative.test.mjs
diff --git a/packages/harness/tests/creative.test.mjs b/packages/harness/tests/creative.test.mjs
index 80f4516ee..c3191f99e 100644
--- a/packages/harness/tests/creative.test.mjs
+++ b/packages/harness/tests/creative.test.mjs
@@ -24,6 +24,7 @@ function bean(t, definition, { harness = "pi", persona = false, vars = {} } = {}
return resolvedFor(t, "bean", (d) => {
~
d.roles.bean = { definition, vars: { harness, model: "claude-sonnet-5-5", thinking: "high",
~
...(persona ? { "persona.name": "Bean", "persona.sha256": sha(TEXT) } : {}), ...vars } };
~
+d.roles.bean.credentials = { gitea: { ...d.roles.coder.credentials.gitea } };
~
});
~
}
~
~
@@ -0,0 +1,52 @@
TAP version 13
# Subtest: M2: the gate refuses write, edit and bash to every creative role on pi and claude-code
ok 1 - M2: the gate refuses write, edit and bash to every creative role on pi and claude-code
---
duration_ms: 24.86457
type: 'test'
...
# Subtest: M6: no creative session gets raise_decision; the assistant and the chief of staff keep it
ok 2 - M6: no creative session gets raise_decision; the assistant and the chief of staff keep it
---
duration_ms: 9.932694
type: 'test'
...
# Subtest: web: research and companion get the broker's typed web tools, and a harness-builtin source refuses web-source-not-allowed
ok 3 - web: research and companion get the broker's typed web tools, and a harness-builtin source refuses web-source-not-allowed
---
duration_ms: 13.028605
type: 'test'
...
# Subtest: persona: the block sits between the contract and \#\# This session, fenced, with the name and digest
ok 4 - persona: the block sits between the contract and \#\# This session, fenced, with the name and digest
---
duration_ms: 4.024321
type: 'test'
...
# Subtest: persona: each unsafe or unpinned file refuses before the bundle directory is made
ok 5 - persona: each unsafe or unpinned file refuses before the bundle directory is made
---
duration_ms: 11.602161
type: 'test'
...
# Subtest: adapters pass the prompt file's absolute path; the persona and the prompt text never sit in argv
ok 6 - adapters pass the prompt file's absolute path; the persona and the prompt text never sit in argv
---
duration_ms: 20.120053
type: 'test'
...
# Subtest: the pi adapter refuses a missing, unreadable or directory prompt file before pi starts
ok 7 - the pi adapter refuses a missing, unreadable or directory prompt file before pi starts
---
duration_ms: 5.87968
type: 'test'
...
1..7
# tests 7
# suites 0
# pass 7
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 167.281349
@@ -0,0 +1,230 @@
TAP version 13
# Subtest: C2-04: launcher workspace clones code but never the library
ok 1 - C2-04: launcher workspace clones code but never the library
---
duration_ms: 1382.205037
type: 'test'
...
# Subtest: bus start --pm: the launcher instance (the chief of staff) runs under its own PID namespace, registered, with a manifest
ok 2 - bus start --pm: the launcher instance (the chief of staff) runs under its own PID namespace, registered, with a manifest
---
duration_ms: 1315.878416
type: 'test'
...
# usage: {"event":"usage-unknown","business":"acme","run":"rec3d76ee6f45","instance":"chief","turn":"96c79974-cd3e-4805-9d8f-83b3ebb19dc9","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"r2432de926bd2","instance":"coder","turn":"20911d9d-f533-4c54-894e-8cae3d52800d","source":"@none","code":"baseline-unknown"}
# Subtest: the chief of staff launches a coder through its launch tool; the coder answers; refusals name their code
ok 3 - the chief of staff launches a coder through its launch tool; the coder answers; refusals name their code
---
duration_ms: 718.325592
type: 'test'
...
# usage: {"event":"usage-unknown","business":"acme","run":"r3781ca43a525","instance":"chief","turn":"b0d06ae5-15b6-49f6-879e-d54813b52a3f","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"rbb2a8cb5634c","instance":"pm","turn":"185e128f-c472-45f3-9fa5-4f7542512518","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"r3781ca43a525","instance":"chief","turn":"ac22694f-bd40-4f64-8f1b-2b47a1b46aba","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"r3781ca43a525","instance":"chief","turn":"ade5a279-1ee9-4da5-8bc9-5624a44e4a6c","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"rbb2a8cb5634c","instance":"pm","turn":"80a63aa8-25ef-4fcf-9802-a70e8850e1d8","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"rbb2a8cb5634c","instance":"pm","turn":"f4a924e1-9b5a-4c24-bbc0-3ad4db6d622d","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"r3781ca43a525","instance":"chief","turn":"c345639d-6f70-4ed1-a87a-7c1575070734","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"rbb2a8cb5634c","instance":"pm","turn":"a2fbcb83-85f9-4699-b27f-d6248865bfac","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"r3781ca43a525","instance":"chief","turn":"c9db32bc-63e4-4e46-915f-70500f1b316c","source":"@none","code":"baseline-unknown"}
# Subtest: a launched pm's request_staff reaches the chief of staff; no other session has the tool and the launch limits still hold
ok 4 - a launched pm's request_staff reaches the chief of staff; no other session has the tool and the launch limits still hold
---
duration_ms: 1025.202516
type: 'test'
...
# Subtest: each launch makes sure the workspace has a clone of the project: cloned, fast-forwarded, or fetched and logged
ok 5 - each launch makes sure the workspace has a clone of the project: cloned, fast-forwarded, or fetched and logged
---
duration_ms: 4040.698536
type: 'test'
...
# Subtest: a role the broker says holds a merge decision gets land_work, its prompt line, its landing and the git socket; without it, none
ok 6 - a role the broker says holds a merge decision gets land_work, its prompt line, its landing and the git socket; without it, none
---
duration_ms: 722.105035
type: 'test'
...
# Subtest: REQ-LAUNCH-1 the tick starts a listed merge decision holder once, with land_work, the Landing line and its landing turn; an unlisted holder starts nothing
ok 7 - REQ-LAUNCH-1 the tick starts a listed merge decision holder once, with land_work, the Landing line and its landing turn; an unlisted holder starts nothing
---
duration_ms: 414.464152
type: 'test'
...
# usage: {"event":"usage-unknown","business":"acme","run":"r3efa154d36cf","instance":"coder","turn":"4d43a1c0-6944-4a3b-bde9-ddcecfbc6b6f","source":"@none","code":"baseline-unknown"}
# Subtest: a holder running since before the resolution is stopped once the broker releases it, land-relaunch, and the next tick starts it: landing turn first, then the message that waited
ok 8 - a holder running since before the resolution is stopped once the broker releases it, land-relaunch, and the next tick starts it: landing turn first, then the message that waited
---
duration_ms: 695.611226
type: 'test'
...
# Subtest: a landing run that ended isn't started again for its decision, a spent decision starts nothing, and a new decision starts the holder
ok 9 - a landing run that ended isn't started again for its decision, a spent decision starts nothing, and a new decision starts the holder
---
duration_ms: 643.90832
type: 'test'
...
# Subtest: after a restart, the new host's first tick starts a holder whose decision is still held
ok 10 - after a restart, the new host's first tick starts a holder whose decision is still held
---
duration_ms: 888.403197
type: 'test'
...
# Subtest: a refused landing start is logged once per code with its decision, isn't a start, and the next tick with room starts the holder
ok 11 - a refused landing start is logged once per code with its decision, isn't a start, and the next tick with room starts the holder
---
duration_ms: 624.203009
type: 'test'
...
# Subtest: a project clone that can't be made refuses checkout-failed, from --chief and from a session, with no run and no clone left
ok 12 - a project clone that can't be made refuses checkout-failed, from --chief and from a session, with no run and no clone left
---
duration_ms: 268.190754
type: 'test'
...
# Subtest: a runner that stops at once ends its launch with the runner's reason
ok 13 - a runner that stops at once ends its launch with the runner's reason
---
duration_ms: 342.058129
type: 'test'
...
# Subtest: a Claude Code launch with no session credential refuses before it starts
ok 14 - a Claude Code launch with no session credential refuses before it starts
---
duration_ms: 194.183906
type: 'test'
...
# Subtest: a pi launch needs no session credential: pi logs in through its own ENV_ALLOW variables
ok 15 - a pi launch needs no session credential: pi logs in through its own ENV_ALLOW variables
---
duration_ms: 327.428178
type: 'test'
...
# usage: {"event":"plugin-refused","kind":"harness","name":"down","code":"missing","message":"/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row285-r3/packages/plugins/harness/down is missing","kept":[]}
# plugins: {"event":"plugin-refused","kind":"harness","name":"down","code":"missing","message":"/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row285-r3/packages/plugins/harness/down is missing","kept":[]}
# Subtest: row 65 a failed primary preflight launches the fallback on a fixture harness module, recording the route and the reason
ok 16 - row 65 a failed primary preflight launches the fallback on a fixture harness module, recording the route and the reason
---
duration_ms: 365.842153
type: 'test'
...
# Subtest: a runner killed from the host ends its launch as killed, not failed
ok 17 - a runner killed from the host ends its launch as killed, not failed
---
duration_ms: 386.802623
type: 'test'
...
# Subtest: a missing or failing bwrap refuses sandbox-unavailable before anything starts; there is no unconfined fallback
ok 18 - a missing or failing bwrap refuses sandbox-unavailable before anything starts; there is no unconfined fallback
---
duration_ms: 195.74996
type: 'test'
...
# Subtest: row 64 a role skill that isn't enabled refuses skill-not-enabled, and one that isn't a plain directory skill-refused, before anything starts
ok 19 - row 64 a role skill that isn't enabled refuses skill-not-enabled, and one that isn't a plain directory skill-refused, before anything starts
---
duration_ms: 191.053307
type: 'test'
...
# Subtest: row 213 a creative instance's persona is read from <configDir>/personas: off its digest the launch fails with the mismatch as its reason
ok 20 - row 213 a creative instance's persona is read from <configDir>/personas: off its digest the launch fails with the mismatch as its reason
---
duration_ms: 261.252111
type: 'test'
...
# Subtest: row 64 on Claude Code a role skill that isn't enabled refuses the same way, before anything starts
ok 21 - row 64 on Claude Code a role skill that isn't enabled refuses the same way, before anything starts
---
duration_ms: 192.876047
type: 'test'
...
# usage: {"event":"usage-unknown","business":"acme","run":"r36e07a81bce7","instance":"chief","turn":"e8e6dd62-d686-469e-a6a8-74257846bbca","source":"@none","code":"baseline-unknown"}
# usage: {"event":"usage-unknown","business":"acme","run":"redb6b19f4ae9","instance":"coder","turn":"61f8b85e-b929-4c24-ab81-8930df5fb83b","source":"@none","code":"baseline-unknown"}
# Subtest: a real Claude Code coder's shell can't read a stand-in secret or anything else its sandbox doesn't hold
ok 22 - a real Claude Code coder's shell can't read a stand-in secret or anything else its sandbox doesn't hold
---
duration_ms: 1431.280634
type: 'test'
...
# Subtest: a host that died hard leaves its sessions to the next host, which kills them and ends their runs so the role can be launched again
ok 23 - a host that died hard leaves its sessions to the next host, which kills them and ends their runs so the role can be launched again
---
duration_ms: 1071.474426
type: 'test'
...
# Subtest: a host that died hard leaves its sessions to the next host, which finds one already exited (23) and ends their runs so the role can be launched again
ok 24 - a host that died hard leaves its sessions to the next host, which finds one already exited (23) and ends their runs so the role can be launched again
---
duration_ms: 4028.142598
type: 'test'
...
# Subtest: bus start --no-launch leaves an earlier host's live session alone: no signal, no end, sessions.json as it was
ok 25 - bus start --no-launch leaves an earlier host's live session alone: no signal, no end, sessions.json as it was
---
duration_ms: 244.439555
type: 'test'
...
# Subtest: bus start --no-launch refuses every launch: the PM launch and a session's request, each logged, nothing spawned
ok 26 - bus start --no-launch refuses every launch: the PM launch and a session's request, each logged, nothing spawned
---
duration_ms: 219.352715
type: 'test'
...
# Subtest: bus start --no-launch starts no thread tick; the same host with launches runs it
ok 27 - bus start --no-launch starts no thread tick; the same host with launches runs it
---
duration_ms: 1196.59052
type: 'test'
...
# Subtest: a malformed sessions.json refuses the host start with exit 3 and stays as it was
ok 28 - a malformed sessions.json refuses the host start with exit 3 and stays as it was
---
duration_ms: 178.862698
type: 'test'
...
# Subtest: an over-long launch request is refused at once, not at the 10 s idle timeout
ok 29 - an over-long launch request is refused at once, not at the 10 s idle timeout
---
duration_ms: 186.749375
type: 'test'
...
# Subtest: a launch client that never closes its side doesn't hold the host's close
ok 30 - a launch client that never closes its side doesn't hold the host's close
---
duration_ms: 182.061723
type: 'test'
...
# Subtest: a runner that ignores SIGTERM is killed when the host closes
ok 31 - a runner that ignores SIGTERM is killed when the host closes
---
duration_ms: 1357.232693
type: 'test'
...
# Subtest: kill switch refuses chief and hire before launch work and a clear permits a later request
ok 32 - kill switch refuses chief and hire before launch work and a clear permits a later request
---
duration_ms: 319.277841
type: 'test'
...
# Subtest: kill switch stops an actual managed namespace and records the halt reason without rewriting its bundle
ok 33 - kill switch stops an actual managed namespace and records the halt reason without rewriting its bundle
---
duration_ms: 330.778618
type: 'test'
...
# Subtest: a launch waiting across halt and resume cannot use its stale admission
ok 34 - a launch waiting across halt and resume cannot use its stale admission
---
duration_ms: 200.208935
type: 'test'
...
1..34
# tests 34
# suites 0
# pass 34
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 26258.674877
@@ -0,0 +1,104 @@
TAP version 13
# Subtest: row 285 P: creative equal-service changes preserve every existing credential reference
not ok 1 - row 285 P: creative equal-service changes preserve every existing credential reference
---
duration_ms: 10.905862
type: 'test'
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row285-r3/packages/business/tests/instance-credential-transitions.test.mjs:29:1'
failureType: 'testCodeFailure'
error: 'ideas declares gitea credentials; binding them is a hand edit'
code: 'organization-credentials-out-of-scope'
stack: |-
definitionFor (file:///home/jwoltje/.t3/worktrees/mosaic-stack/magica-row285-r3/packages/business/src/instance-settings.mjs:100:11)
Object.set (file:///home/jwoltje/.t3/worktrees/mosaic-stack/magica-row285-r3/packages/business/src/instance-settings.mjs:250:9)
Object.change (file:///home/jwoltje/.t3/worktrees/mosaic-stack/magica-row285-r3/packages/business/tests/instance-credential-transitions.test.mjs:24:41)
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/magica-row285-r3/packages/business/tests/instance-credential-transitions.test.mjs:31:5)
Test.runInAsyncScope (node:async_hooks:226:14)
Test.run (node:internal/test_runner/test:1402:25)
Test.start (node:internal/test_runner/test:1262:17)
startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17)
...
# Subtest: row 285 P: creative declared-service mismatch refuses even when host has no reference
ok 2 - row 285 P: creative declared-service mismatch refuses even when host has no reference
---
duration_ms: 5.201752
type: 'test'
...
# Subtest: row 285 P: an equal-service non-creative target keeps the base credential refusal
ok 3 - row 285 P: an equal-service non-creative target keeps the base credential refusal
---
duration_ms: 3.949275
type: 'test'
...
# Subtest: row 285 P: business validation precedes the creative credential fence
not ok 4 - row 285 P: business validation precedes the creative credential fence
---
duration_ms: 3.906887
type: 'test'
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row285-r3/packages/business/tests/instance-credential-transitions.test.mjs:54:1'
failureType: 'testCodeFailure'
error: |-
The validation function is expected to return "true". Received false
Caught error:
Error: bean holds companion credentials; moving them to another definition is a hand edit
code: 'ERR_ASSERTION'
name: 'AssertionError'
stack: |-
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/magica-row285-r3/packages/business/tests/instance-credential-transitions.test.mjs:56:10)
Test.runInAsyncScope (node:async_hooks:226:14)
Test.run (node:internal/test_runner/test:1402:25)
Test.processPendingSubtests (node:internal/test_runner/test:974:18)
Test.postRun (node:internal/test_runner/test:1542:19)
Test.run (node:internal/test_runner/test:1467:12)
async Test.processPendingSubtests (node:internal/test_runner/test:974:7)
...
# Subtest: row 285 P: listing derives creative from authority and accepts only existing gitea minting
not ok 5 - row 285 P: listing derives creative from authority and accepts only existing gitea minting
---
duration_ms: 3.425763
type: 'test'
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row285-r3/packages/business/tests/instance-credential-transitions.test.mjs:61:1'
failureType: 'testCodeFailure'
error: |-
Expected values to be strictly deep-equal:
+ actual - expected
{
+ accepted: false,
- accepted: true,
services: [
'gitea'
]
}
code: 'ERR_ASSERTION'
name: 'AssertionError'
expected:
services:
0: 'gitea'
accepted: true
actual:
services:
0: 'gitea'
accepted: false
operator: 'deepStrictEqual'
stack: |-
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/magica-row285-r3/packages/business/tests/instance-credential-transitions.test.mjs:63:10)
Test.runInAsyncScope (node:async_hooks:226:14)
Test.run (node:internal/test_runner/test:1402:25)
Test.processPendingSubtests (node:internal/test_runner/test:974:18)
Test.postRun (node:internal/test_runner/test:1542:19)
Test.run (node:internal/test_runner/test:1467:12)
async Test.processPendingSubtests (node:internal/test_runner/test:974:7)
...
1..5
# tests 5
# suites 0
# pass 2
# fail 3
# cancelled 0
# skipped 0
# todo 0
# duration_ms 81.442767
@@ -0,0 +1,208 @@
TAP version 13
# Subtest: row 285 P: creative equal-service changes preserve every existing credential reference
ok 1 - row 285 P: creative equal-service changes preserve every existing credential reference
---
duration_ms: 25.058981
type: 'test'
...
# Subtest: row 285 P: creative declared-service mismatch refuses even when host has no reference
ok 2 - row 285 P: creative declared-service mismatch refuses even when host has no reference
---
duration_ms: 4.656078
type: 'test'
...
# Subtest: row 285 P: an equal-service non-creative target keeps the base credential refusal
ok 3 - row 285 P: an equal-service non-creative target keeps the base credential refusal
---
duration_ms: 4.061092
type: 'test'
...
# Subtest: row 285 P: business validation precedes the creative credential fence
ok 4 - row 285 P: business validation precedes the creative credential fence
---
duration_ms: 4.051028
type: 'test'
...
# Subtest: row 285 P: listing derives creative from authority and accepts only existing gitea minting
ok 5 - row 285 P: listing derives creative from authority and accepts only existing gitea minting
---
duration_ms: 2.909261
type: 'test'
...
# Subtest: C2-04: instance settings skip a library while checking a later code project
ok 6 - C2-04: instance settings skip a library while checking a later code project
---
duration_ms: 29.605697
type: 'test'
...
# Subtest: row 165 read lists each instance and the definitions add accepts
ok 7 - row 165 read lists each instance and the definitions add accepts
---
duration_ms: 2.641137
type: 'test'
...
# Subtest: row 165 add: two instances join, validate exits 0, the log names the human, and the writer asks for no restart (row 194, D3)
ok 8 - row 165 add: two instances join, validate exits 0, the log names the human, and the writer asks for no restart (row 194, D3)
---
duration_ms: 89.479348
type: 'test'
...
# Subtest: row 165 change: definition, vars and launch membership log before and after; none asks for a restart, the bus reloads (row 194, D3)
ok 9 - row 165 change: definition, vars and launch membership log before and after; none asks for a restart, the bus reloads (row 194, D3)
---
duration_ms: 107.955468
type: 'test'
...
# Subtest: row 165 refuses each validation failure and leaves the file's bytes alone
ok 10 - row 165 refuses each validation failure and leaves the file's bytes alone
---
duration_ms: 35.287908
type: 'test'
...
# Subtest: T19 add of a credentialed definition writes store references dated today, names its bot, and validate exits 0
ok 11 - T19 add of a credentialed definition writes store references dated today, names its bot, and validate exits 0
---
duration_ms: 86.712516
type: 'test'
...
# Subtest: T19 add of a definition that declares host writes references for its token services only
ok 12 - T19 add of a definition that declares host writes references for its token services only
---
duration_ms: 11.44187
type: 'test'
...
# Subtest: row 165 refuses a definition change to or from one that declares credentials
ok 13 - row 165 refuses a definition change to or from one that declares credentials
---
duration_ms: 5.177352
type: 'test'
...
# Subtest: row 165 a vars or launch change on an instance with its binding succeeds and keeps the binding
ok 14 - row 165 a vars or launch change on an instance with its binding succeeds and keeps the binding
---
duration_ms: 72.703296
type: 'test'
...
# Subtest: row 165 refuses an END_PROTECTED definition and every change to a protected instance
ok 15 - row 165 refuses an END_PROTECTED definition and every change to a protected instance
---
duration_ms: 8.093901
type: 'test'
...
# Subtest: row 165 refuses while a project file doesn't resolve, as validate would
ok 16 - row 165 refuses while a project file doesn't resolve, as validate would
---
duration_ms: 18.126581
type: 'test'
...
# Subtest: row 165 refuses a stale revision and leaves the file's bytes alone
ok 17 - row 165 refuses a stale revision and leaves the file's bytes alone
---
duration_ms: 12.248392
type: 'test'
...
# Subtest: row 65 an instance write refuses harness-off, thinking-unsupported, an unknown model and a partial fallback
ok 18 - row 65 an instance write refuses harness-off, thinking-unsupported, an unknown model and a partial fallback
---
duration_ms: 35.166234
type: 'test'
...
# Subtest: row 213 a creative instance is the human's: add, vars and definition changes, persona digest only
ok 19 - row 213 a creative instance is the human's: add, vars and definition changes, persona digest only
---
duration_ms: 85.059334
type: 'test'
...
# Subtest: row 256 T1-T3, T5 the human deletes a creative instance, no other actor does, and the assistant stays
ok 20 - row 256 T1-T3, T5 the human deletes a creative instance, no other actor does, and the assistant stays
---
duration_ms: 93.04184
type: 'test'
...
# Subtest: row 256 T4 the human's delete of the only listed instance, a creative one, is the last-listed refusal
ok 21 - row 256 T4 the human's delete of the only listed instance, a creative one, is the last-listed refusal
---
duration_ms: 3.339348
type: 'test'
...
# Subtest: T6 delete refuses in the design's order and leaves the file's bytes alone
ok 22 - T6 delete refuses in the design's order and leaves the file's bytes alone
---
duration_ms: 29.486891
type: 'test'
...
# Subtest: T6 delete refuses the last listed instance
ok 23 - T6 delete refuses the last listed instance
---
duration_ms: 3.154392
type: 'test'
...
# Subtest: T6 a clean delete removes the entry and its own references, adds retired, and the name can't come back
ok 24 - T6 a clean delete removes the entry and its own references, adds retired, and the name can't come back
---
duration_ms: 83.9085
type: 'test'
...
# Subtest: T7 veto: keep, unkeep, nohire and hire each write once, a repeat is no change, and the log names the human
ok 25 - T7 veto: keep, unkeep, nohire and hire each write once, a repeat is no change, and the log names the human
---
duration_ms: 117.121239
type: 'test'
...
# Subtest: T7 veto refuses an unknown or END_PROTECTED keep, a bad request, a stale revision and a business without launch
ok 26 - T7 veto refuses an unknown or END_PROTECTED keep, a bad request, a stale revision and a business without launch
---
duration_ms: 19.203594
type: 'test'
...
# Subtest: D2.2 hire adds and lists a new instance, logs the chief's context, and sets only model and limits
ok 27 - D2.2 hire adds and lists a new instance, logs the chief's context, and sets only model and limits
---
duration_ms: 80.802635
type: 'test'
...
# Subtest: D2.2 hire refuses noHire, a kept name and a listed name, and re-lists a fired one only as it was
ok 28 - D2.2 hire refuses noHire, a kept name and a listed name, and re-lists a fired one only as it was
---
duration_ms: 22.788496
type: 'test'
...
# Subtest: D2.2 fire delists and keeps the entry, a repeat is done with no write, and each refusal holds
ok 29 - D2.2 fire delists and keeps the entry, a repeat is done with no write, and each refusal holds
---
duration_ms: 83.151242
type: 'test'
...
# Subtest: row 256 checkDelete passes the human's creative delete and refuses another actor's; fire still refuses
ok 30 - row 256 checkDelete passes the human's creative delete and refuses another actor's; fire still refuses
---
duration_ms: 4.881667
type: 'test'
...
# Subtest: row 239 T1 a fire on a revision that goes stale before the writer's lock refuses there and revokes nothing
ok 31 - row 239 T1 a fire on a revision that goes stale before the writer's lock refuses there and revokes nothing
---
duration_ms: 5.083378
type: 'test'
...
# Subtest: row 239 T2 a write after the revoke refused before publication carries revoked, and the file keeps the edit
ok 32 - row 239 T2 a write after the revoke refused before publication carries revoked, and the file keeps the edit
---
duration_ms: 8.12204
type: 'test'
...
# Subtest: row 239 T3 any error after the revoke carries revoked, for a fire and a delete; a revoke that throws carries nothing
ok 33 - row 239 T3 any error after the revoke carries revoked, for a fire and a delete; a revoke that throws carries nothing
---
duration_ms: 28.075765
type: 'test'
...
1..33
# tests 33
# suites 0
# pass 33
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 764.196213
@@ -0,0 +1 @@
/mnt/storage/scratch/tmp/SzhU3V
@@ -0,0 +1,8 @@
bus: files=111 tests=975 pass=974 fail=1 skip=0 cancelled=0
business: files=32 tests=277 pass=274 fail=3 skip=0 cancelled=0
cli: files=68 tests=989 pass=987 fail=1 skip=1 cancelled=0
webui: files=66 tests=418 pass=418 fail=0 skip=0 cancelled=0
harness: files=14 tests=172 pass=165 fail=7 skip=0 cancelled=0
plugins: files=9 tests=119 pass=119 fail=0 skip=0 cancelled=0
all12 scripts exit0
CLI stack-release uses completed1800s retry224/224; initial300s exit124 retained.
@@ -0,0 +1,21 @@
agents/magica/work/queue-285/gate-r4-collect/bus/citation-runtime.test.mjs.log
not ok 1 - C2-06 runtime reads changed and unreadable reply limits without restarting
agents/magica/work/queue-285/gate-r4-collect/business/instance-settings.test.mjs.log
not ok 5 - row 165 refuses each validation failure and leaves the file's bytes alone
not ok 14 - row 213 a creative instance is the human's: add, vars and definition changes, persona digest only
agents/magica/work/queue-285/gate-r4-collect/business/lifecycle-settings.test.mjs.log
not ok 7 - D2.2 hire refuses noHire, a kept name and a listed name, and re-lists a fired one only as it was
agents/magica/work/queue-285/gate-r4-collect/cli/launcher.test.mjs.log
not ok 20 - row 213 a creative instance's persona is read from <configDir>/personas: off its digest the launch fails with the mismatch as its reason
agents/magica/work/queue-285/gate-r4-collect/harness/creative.test.mjs.log
not ok 1 - M2: the gate refuses write, edit and bash to every creative role on pi and claude-code
not ok 2 - M6: no creative session gets raise_decision; the assistant and the chief of staff keep it
not ok 3 - web: research and companion get the broker's typed web tools, and a harness-builtin source refuses web-source-not-allowed
not ok 4 - persona: the block sits between the contract and \#\# This session, fenced, with the name and digest
not ok 5 - persona: each unsafe or unpinned file refuses before the bundle directory is made
not ok 6 - adapters pass the prompt file's absolute path; the persona and the prompt text never sit in argv
not ok 7 - the pi adapter refuses a missing, unreadable or directory prompt file before pi starts
@@ -0,0 +1,4 @@
2026-10-24T11:34:25.664819+00:00 business/lifecycle-settings.test.mjs exit=1 # tests 12; # pass 11; # fail 1; # cancelled 0; # skipped 0
2026-10-24T11:41:34.105275+00:00 cli/launcher.test.mjs exit=1 # tests 34; # pass 33; # fail 1; # cancelled 0; # skipped 0
2026-10-24T11:48:56.409810+00:00 cli/stack-release.test.mjs exit=124
2026-10-24T11:55:02.930926+00:00 harness/creative.test.mjs exit=1 # tests 7; # pass 0; # fail 7; # cancelled 0; # skipped 0
@@ -0,0 +1 @@
packages/bus/tests/citation-runtime.test.mjs: chief-library-gitea-required; failed tests=1
@@ -0,0 +1,70 @@
TAP version 13
# Subtest: R4: the timer sweep after a hand edit ends only the lost user's run; its next call refuses thread-revoked
ok 1 - R4: the timer sweep after a hand edit ends only the lost user's run; its next call refuses thread-revoked
---
duration_ms: 32.02841
type: 'test'
...
# Subtest: R4: an expiry with no write and no request ends the run at the next timer sweep
ok 2 - R4: an expiry with no write and no request ends the run at the next timer sweep
---
duration_ms: 29.41202
type: 'test'
...
# Subtest: R4: a downgrade to viewer is a loss
ok 3 - R4: a downgrade to viewer is a loss
---
duration_ms: 25.347286
type: 'test'
...
# Subtest: R4: another user's request after a hand edit ends the lost user's run, and its own run stays
ok 4 - R4: another user's request after a hand edit ends the lost user's run, and its own run stays
---
duration_ms: 25.472628
type: 'test'
...
# Subtest: R4: a request reads the access file only when its stamp changed, once per change
ok 5 - R4: a request reads the access file only when its stamp changed, once per change
---
duration_ms: 22.746748
type: 'test'
...
# Subtest: R4: access.reload ends the lost runs at once for the human; the tester, a reader, an agent and a user are refused
ok 6 - R4: access.reload ends the lost runs at once for the human; the tester, a reader, an agent and a user are refused
---
duration_ms: 26.498161
type: 'test'
...
# Subtest: R4: threadsState marks revoked: true on the lost user's thread only, a pending message included
ok 7 - R4: threadsState marks revoked: true on the lost user's thread only, a pending message included
---
duration_ms: 17.601075
type: 'test'
...
# Subtest: R4: threadsState after an expiry with no write and no sweep ends the claim before it marks the row revoked
ok 8 - R4: threadsState after an expiry with no write and no sweep ends the claim before it marks the row revoked
---
duration_ms: 22.480125
type: 'test'
...
# Subtest: R4: a new run of a revoked thread refuses thread-revoked at bind and at claim; a rebind is allowed
ok 9 - R4: a new run of a revoked thread refuses thread-revoked at bind and at claim; a rebind is allowed
---
duration_ms: 18.323686
type: 'test'
...
# Subtest: R4 runtime: a hand edit ends the run at the first timer period, intervalMs is checked, and close stops the timer
ok 10 - R4 runtime: a hand edit ends the run at the first timer period, intervalMs is checked, and close stops the timer
---
duration_ms: 53.003165
type: 'test'
...
1..10
# tests 10
# suites 0
# pass 10
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 393.240976
@@ -0,0 +1,28 @@
TAP version 13
# Subtest: REQ-LIMIT-4 3h copy migrates to 3i: every row keeps its seq, the sequence carries over, and only the account CHECK changes
ok 1 - REQ-LIMIT-4 3h copy migrates to 3i: every row keeps its seq, the sequence carries over, and only the account CHECK changes
---
duration_ms: 89.223993
type: 'test'
...
# Subtest: REQ-LIMIT-4 a 3h→3i step that fails partway leaves the store at 3h with every row, the sequence and the schema intact
ok 2 - REQ-LIMIT-4 a 3h→3i step that fails partway leaves the store at 3h with every row, the sequence and the schema intact
---
duration_ms: 100.045868
type: 'test'
...
# Subtest: REQ-LIMIT-4 the 3h engine refuses a migrated store, migrating or not, and leaves it as it was
ok 3 - REQ-LIMIT-4 the 3h engine refuses a migrated store, migrating or not, and leaves it as it was
---
duration_ms: 88.115003
type: 'test'
...
1..3
# tests 3
# suites 0
# pass 3
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 344.890477
@@ -0,0 +1,100 @@
TAP version 13
# Subtest: parseAddress: one
ok 1 - parseAddress: one
---
duration_ms: 1.131296
type: 'test'
...
# Subtest: parseAddress: many
ok 2 - parseAddress: many
---
duration_ms: 0.102995
type: 'test'
...
# Subtest: parseAddress: repeat
ok 3 - parseAddress: repeat
---
duration_ms: 0.079576
type: 'test'
...
# Subtest: parseAddress: plain
ok 4 - parseAddress: plain
---
duration_ms: 0.081185
type: 'test'
...
# Subtest: parseAddress: stop
ok 5 - parseAddress: stop
---
duration_ms: 0.08717
type: 'test'
...
# Subtest: parseAddress: EOF tag
ok 6 - parseAddress: EOF tag
---
duration_ms: 0.08155
type: 'test'
...
# Subtest: parseAddress: EOF last tag
ok 7 - parseAddress: EOF last tag
---
duration_ms: 0.069714
type: 'test'
...
# Subtest: parseAddress: leading whitespace
ok 8 - parseAddress: leading whitespace
---
duration_ms: 0.087843
type: 'test'
...
# Subtest: parseAddress: tags only
ok 9 - parseAddress: tags only
---
duration_ms: 0.082623
type: 'test'
...
# Subtest: parseAddress: empty
ok 10 - parseAddress: empty
---
duration_ms: 0.144492
type: 'test'
...
# Subtest: parseAddress: whitespace
ok 11 - parseAddress: whitespace
---
duration_ms: 0.074327
type: 'test'
...
# Subtest: parseAddress: bare at
ok 12 - parseAddress: bare at
---
duration_ms: 0.073012
type: 'test'
...
# Subtest: parseAddress: punctuation is a name
ok 13 - parseAddress: punctuation is a name
---
duration_ms: 0.051354
type: 'test'
...
# Subtest: parseAddress rejects non-text without coercion
ok 14 - parseAddress rejects non-text without coercion
---
duration_ms: 0.2938
type: 'test'
...
# Subtest: the mounted address parser has no import dependency
ok 15 - the mounted address parser has no import dependency
---
duration_ms: 0.194185
type: 'test'
...
1..15
# tests 15
# suites 0
# pass 15
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 50.821891
@@ -0,0 +1,76 @@
TAP version 13
# Subtest: agents: a held role with nothing on the bus is idle; a role session gets the claim rows unchanged
ok 1 - agents: a held role with nothing on the bus is idle; a role session gets the claim rows unchanged
---
duration_ms: 21.615667
type: 'test'
...
# Subtest: agents: working counts what the holder received and has not read; routed alone is not working
ok 2 - agents: working counts what the holder received and has not read; routed alone is not working
---
duration_ms: 20.934044
type: 'test'
...
# Subtest: agents: input needed is the role's open decisions routed to the human, gated first, then oldest
ok 3 - agents: input needed is the role's open decisions routed to the human, gated first, then oldest
---
duration_ms: 33.084534
type: 'test'
...
# Subtest: agents: working wins over waiting, and Input needed still shows
ok 4 - agents: working wins over waiting, and Input needed still shows
---
duration_ms: 16.320454
type: 'test'
...
# Subtest: agents: a new holder doesn't inherit what the last one left unread; decisions stay with the role
ok 5 - agents: a new holder doesn't inherit what the last one left unread; decisions stay with the role
---
duration_ms: 17.925665
type: 'test'
...
# Subtest: agents: state reads only its own business, even for a run name both use
ok 6 - agents: state reads only its own business, even for a run name both use
---
duration_ms: 16.434999
type: 'test'
...
# Subtest: agents: a message the holder released unread is stranded; the next holder gets nothing and cannot read it
ok 7 - agents: a message the holder released unread is stranded; the next holder gets nothing and cannot read it
---
duration_ms: 25.805217
type: 'test'
...
# Subtest: agents: a message the holder read is not stranded; one the current holder has not read is not listed
ok 8 - agents: a message the holder read is not stranded; one the current holder has not read is not listed
---
duration_ms: 20.196847
type: 'test'
...
# Subtest: agents: stranded is oldest first and capped at 50 for a role
ok 9 - agents: stranded is oldest first and capped at 50 for a role
---
duration_ms: 87.529983
type: 'test'
...
# Subtest: agents: stranded is per role and per business
ok 10 - agents: stranded is per role and per business
---
duration_ms: 32.078053
type: 'test'
...
# Subtest: agents: a message routed to a held role and not yet received is not stranded
ok 11 - agents: a message routed to a held role and not yet received is not stranded
---
duration_ms: 13.271239
type: 'test'
...
1..11
# tests 11
# suites 0
# pass 11
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 380.059351
@@ -0,0 +1,46 @@
TAP version 13
# Subtest: REQ-DEC an approval outlives its run and a broker restart; a new run of the instance consumes it once
ok 1 - REQ-DEC an approval outlives its run and a broker restart; a new run of the instance consumes it once
---
duration_ms: 39.215325
type: 'test'
...
# Subtest: REQ-DEC another instance of the same definition cannot consume an approval, and its refusal consumes nothing
ok 2 - REQ-DEC another instance of the same definition cannot consume an approval, and its refusal consumes nothing
---
duration_ms: 17.857211
type: 'test'
...
# Subtest: REQ-DEC REQ-THREAD-1 a thread approval is consumed only by a run holding the same thread
ok 3 - REQ-DEC REQ-THREAD-1 a thread approval is consumed only by a run holding the same thread
---
duration_ms: 24.147215
type: 'test'
...
# Subtest: REQ-DEC a later run of the same instance supersedes an open decision; another instance cannot
ok 4 - REQ-DEC a later run of the same instance supersedes an open decision; another instance cannot
---
duration_ms: 20.597329
type: 'test'
...
# Subtest: REQ-DEC REQ-THREAD-1 a thread decision is superseded only from the same thread
ok 5 - REQ-DEC REQ-THREAD-1 a thread decision is superseded only from the same thread
---
duration_ms: 21.627221
type: 'test'
...
# Subtest: REQ-DEC REQ-THREAD-1 a thread instance decision raised before row 121 is not consumed or superseded by any thread run
ok 6 - REQ-DEC REQ-THREAD-1 a thread instance decision raised before row 121 is not consumed or superseded by any thread run
---
duration_ms: 28.409388
type: 'test'
...
1..6
# tests 6
# suites 0
# pass 6
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 229.63663
@@ -0,0 +1,106 @@
TAP version 13
# Subtest: launch identity is stamped, payload identity is refused and stale holder cannot send
ok 1 - launch identity is stamped, payload identity is refused and stale holder cannot send
---
duration_ms: 31.731209
type: 'test'
...
# Subtest: decision classes route from policy; gated resolution is human-only, choice and target must match
ok 2 - decision classes route from policy; gated resolution is human-only, choice and target must match
---
duration_ms: 23.320799
type: 'test'
...
# Subtest: claim exclusion, holder release, gated revoke and rerouting to a new holder are atomic
ok 3 - claim exclusion, holder release, gated revoke and rerouting to a new holder are atomic
---
duration_ms: 24.306613
type: 'test'
...
# Subtest: launch events require a human CLI capability; generic emit cannot forge authority events
ok 4 - launch events require a human CLI capability; generic emit cannot forge authority events
---
duration_ms: 15.578919
type: 'test'
...
# Subtest: within-role decisions close atomically and invalid options or blocking omissions refuse
ok 5 - within-role decisions close atomically and invalid options or blocking omissions refuse
---
duration_ms: 17.034377
type: 'test'
...
# Subtest: a recommendation that is not exactly one option key refuses invalid-recommendation after the options
ok 6 - a recommendation that is not exactly one option key refuses invalid-recommendation after the options
---
duration_ms: 26.941122
type: 'test'
...
# Subtest: observer capabilities read human inbox but cannot mutate or forge launch identity
ok 7 - observer capabilities read human inbox but cannot mutate or forge launch identity
---
duration_ms: 16.772108
type: 'test'
...
# Subtest: task action subjects and linked decision trail are complete and ordered
ok 8 - task action subjects and linked decision trail are complete and ordered
---
duration_ms: 24.460932
type: 'test'
...
# Subtest: launch binding is durable and reconnecting requires the identical trusted record
ok 9 - launch binding is durable and reconnecting requires the identical trusted record
---
duration_ms: 14.228603
type: 'test'
...
# Subtest: business isolation includes inherited object names and cross-business message references
ok 10 - business isolation includes inherited object names and cross-business message references
---
duration_ms: 19.738271
type: 'test'
...
# Subtest: authority never transfers between action, target, unresolved or replaced role holder; a later run of the instance keeps it
ok 11 - authority never transfers between action, target, unresolved or replaced role holder; a later run of the instance keeps it
---
duration_ms: 27.060905
type: 'test'
...
# Subtest: task projection uses schema current view, skipping earlier and equal-start polls
ok 12 - task projection uses schema current view, skipping earlier and equal-start polls
---
duration_ms: 14.972182
type: 'test'
...
# Subtest: revocation permanently bars the old run from reclaiming first, including after broker restart
ok 13 - revocation permanently bars the old run from reclaiming first, including after broker restart
---
duration_ms: 24.455057
type: 'test'
...
# Subtest: empty message references refuse before storage; refusal-evidence failure stays a typed error
ok 14 - empty message references refuse before storage; refusal-evidence failure stays a typed error
---
duration_ms: 15.456487
type: 'test'
...
# Subtest: both arbiters require human resolution when their cross-role route is themselves
ok 15 - both arbiters require human resolution when their cross-role route is themselves
---
duration_ms: 22.514528
type: 'test'
...
# Subtest: the shipped coder role raises task.reassign as gated to the human; task.scope.change stays cross-role
ok 16 - the shipped coder role raises task.reassign as gated to the human; task.scope.change stays cross-role
---
duration_ms: 21.417074
type: 'test'
...
1..16
# tests 16
# suites 0
# pass 16
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 424.573875
@@ -0,0 +1,16 @@
TAP version 13
# Subtest: S1 adapter takes resolved limits and refs, rejects mismatched instance, never mutates input
ok 1 - S1 adapter takes resolved limits and refs, rejects mismatched instance, never mutates input
---
duration_ms: 1.243514
type: 'test'
...
1..1
# tests 1
# suites 0
# pass 1
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 55.281696
@@ -0,0 +1,22 @@
TAP version 13
# Subtest: channel conversion preserves the four proof/transport byte baselines and modules cannot import a proof caller
ok 1 - channel conversion preserves the four proof/transport byte baselines and modules cannot import a proof caller
---
duration_ms: 0.970322
type: 'test'
...
# Subtest: channel recovery still requires the same shim path and rejects an absent or forged proof
ok 2 - channel recovery still requires the same shim path and rejects an absent or forged proof
---
duration_ms: 442.677911
type: 'test'
...
1..2
# tests 2
# suites 0
# pass 2
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 552.683865
@@ -0,0 +1,271 @@
TAP version 13
# organization: {"event":"reload-needs-restart","business":"demo"}
# organization: {"event":"reload-needs-restart","business":"demo"}
# organization: {"event":"reload-needs-restart","business":"demo"}
# organization: {"event":"reload-needs-restart","business":"demo"}
# organization: {"event":"reload-needs-restart","business":"demo"}
# organization: {"event":"reload-needs-restart","business":"demo"}
# organization: {"event":"reload-needs-restart","business":"demo"}
# organization: {"event":"reload-needs-restart","business":"demo"}
# organization: {"event":"reload-needs-restart","business":"demo"}
# Subtest: REQ-COS-1, REQ-ROLE-2: the chief of staff ends a run with a reason and no decision, and the reason is logged
ok 1 - REQ-COS-1, REQ-ROLE-2: the chief of staff ends a run with a reason and no decision, and the reason is logged
---
duration_ms: 30.865375
type: 'test'
...
# Subtest: REQ-ROLE-2: a role without role.end still needs a resolved decision to revoke
ok 2 - REQ-ROLE-2: a role without role.end still needs a resolved decision to revoke
---
duration_ms: 28.553456
type: 'test'
...
# Subtest: REQ-ROLE-2: storage accepts a revoke with a reason or a decision and aborts one with neither
ok 3 - REQ-ROLE-2: storage accepts a revoke with a reason or a decision and aborts one with neither
---
duration_ms: 21.042362
type: 'test'
...
# Subtest: REQ-ROLE-2: the chief of staff may still cite a decision, and a decision alone is the old path
ok 4 - REQ-ROLE-2: the chief of staff may still cite a decision, and a decision alone is the old path
---
duration_ms: 20.422182
type: 'test'
...
# Subtest: REQ-ROLE-2: a role without role.end still ends a run through a resolved decision, which is recorded and has no reason
ok 5 - REQ-ROLE-2: a role without role.end still ends a run through a resolved decision, which is recorded and has no reason
---
duration_ms: 23.388668
type: 'test'
...
# Subtest: REQ-ROLE-2: a reason is required, bounded, and never sent with a decision
ok 6 - REQ-ROLE-2: a reason is required, bounded, and never sent with a decision
---
duration_ms: 24.135807
type: 'test'
...
# Subtest: REQ-COS-1: the chief of staff cannot end its own run; its end of the assistant stops the assistant's thread run
ok 7 - REQ-COS-1: the chief of staff cannot end its own run; its end of the assistant stops the assistant's thread run
---
duration_ms: 24.370186
type: 'test'
...
# Subtest: REQ-LIMIT-1, REQ-COS-1: organization.set from the chief of staff reaches the shared writer, named as the actor
ok 8 - REQ-LIMIT-1, REQ-COS-1: organization.set from the chief of staff reaches the shared writer, named as the actor
---
duration_ms: 20.299878
type: 'test'
...
# Subtest: REQ-LIMIT-1, REQ-COS-1: a refused organization.set logs action.refused and no action.allowed, like a refused limits.set
ok 9 - REQ-LIMIT-1, REQ-COS-1: a refused organization.set logs action.refused and no action.allowed, like a refused limits.set
---
duration_ms: 26.858588
type: 'test'
...
# Subtest: REQ-LIMIT-1: organization.set is refused for every caller whose role file lacks organization.change
ok 10 - REQ-LIMIT-1: organization.set is refused for every caller whose role file lacks organization.change
---
duration_ms: 28.867922
type: 'test'
...
# Subtest: REQ-LIMIT-1: the chief of staff is logged as allowed, and organization.set takes only the human's keys
ok 11 - REQ-LIMIT-1: the chief of staff is logged as allowed, and organization.set takes only the human's keys
---
duration_ms: 31.588315
type: 'test'
...
# Subtest: REQ-COS-1: organization.revision answers the revision alone to the chief of staff and spends nothing
ok 12 - REQ-COS-1: organization.revision answers the revision alone to the chief of staff and spends nothing
---
duration_ms: 24.949595
type: 'test'
...
# Subtest: REQ-COS-1, REQ-LIMIT-1: organization.revision is refused for every caller whose role file lacks organization.change
ok 13 - REQ-COS-1, REQ-LIMIT-1: organization.revision is refused for every caller whose role file lacks organization.change
---
duration_ms: 30.676172
type: 'test'
...
# Subtest: REQ-ROLE-3, REQ-LIMIT-1: a chief-of-staff change is validated, written and logged like a human's; an invalid one is refused
ok 14 - REQ-ROLE-3, REQ-LIMIT-1: a chief-of-staff change is validated, written and logged like a human's; an invalid one is refused
---
duration_ms: 86.773254
type: 'test'
...
# Subtest: REQ-COS-1: the chief of staff reads the revision, changes the file with it, and reads again after a stale one is refused
ok 15 - REQ-COS-1: the chief of staff reads the revision, changes the file with it, and reads again after a stale one is refused
---
duration_ms: 73.714409
type: 'test'
...
# Subtest: Q169: the chief of staff's change of the assistant is validated, written and logged; a stale or protection-stripping one is refused
ok 16 - Q169: the chief of staff's change of the assistant is validated, written and logged; a stale or protection-stripping one is refused
---
duration_ms: 73.877399
type: 'test'
...
# Subtest: row 65, Q169: the chief's change of the assistant's route runs the routing checks, and a valid one saves as the chief
ok 17 - row 65, Q169: the chief's change of the assistant's route runs the routing checks, and a valid one saves as the chief
---
duration_ms: 55.380527
type: 'test'
...
# Subtest: REQ-ROLE-2, REQ-COS-1: the 3c→3d migration lets the chief of staff end a held role with a reason; neither is still refused
ok 18 - REQ-ROLE-2, REQ-COS-1: the 3c→3d migration lets the chief of staff end a held role with a reason; neither is still refused
---
duration_ms: 70.002475
type: 'test'
...
# Subtest: row 194 T10: the chief's reason end of a kept instance refuses instance-kept, holds the claim and spends nothing
ok 19 - row 194 T10: the chief's reason end of a kept instance refuses instance-kept, holds the claim and spends nothing
---
duration_ms: 20.372425
type: 'test'
...
# Subtest: row 194 T10 (Q2): a role.revoke citing a decision the human resolved still ends a kept run
ok 20 - row 194 T10 (Q2): a role.revoke citing a decision the human resolved still ends a kept run
---
duration_ms: 21.179087
type: 'test'
...
# Subtest: row 194 T10 (B7): the chief's organization.set of a kept instance's model refuses before the writer; the human's limits.set does not
ok 21 - row 194 T10 (B7): the chief's organization.set of a kept instance's model refuses before the writer; the human's limits.set does not
---
duration_ms: 21.491242
type: 'test'
...
# Subtest: row 194 T13: organization.set and limits.set refuse the launch, retired, keep and noHire keys before the writer
ok 22 - row 194 T13: organization.set and limits.set refuse the launch, retired, keep and noHire keys before the writer
---
duration_ms: 24.658061
type: 'test'
...
# Subtest: row 194 T18 (D2.4): from a chief session veto.set and instances.set refuse, and nothing reaches the writer
ok 23 - row 194 T18 (D2.4): from a chief session veto.set and instances.set refuse, and nothing reaches the writer
---
duration_ms: 26.240316
type: 'test'
...
# Subtest: row 194 T8: the chief hires with a reason and no decision, the writer gets the reason as context, and the log names it
ok 24 - row 194 T8: the chief hires with a reason and no decision, the writer gets the reason as context, and the log names it
---
duration_ms: 22.622978
type: 'test'
...
# Subtest: row 194 T11: on a bus with two businesses, the chief of one hires and fires only in its own
ok 25 - row 194 T11: on a bus with two businesses, the chief of one hires and fires only in its own
---
duration_ms: 20.021868
type: 'test'
...
# Subtest: row 194 T8: hire and fire need a reason of 1 to 500 characters and refuse a decision key
ok 26 - row 194 T8: hire and fire need a reason of 1 to 500 characters and refuse a decision key
---
duration_ms: 33.215765
type: 'test'
...
# Subtest: row 194 T8 (sage-1471): only the chief hires or fires; every other role refuses role-not-chief, even one granted the actions
ok 27 - row 194 T8 (sage-1471): only the chief hires or fires; every other role refuses role-not-chief, even one granted the actions
---
duration_ms: 29.355838
type: 'test'
...
# Subtest: row 194 T8 (sage-1471): a chief whose authority lacks role.hire or role.fire refuses decision-required before the writer
ok 28 - row 194 T8 (sage-1471): a chief whose authority lacks role.hire or role.fire refuses decision-required before the writer
---
duration_ms: 47.931873
type: 'test'
...
# Subtest: row 194 T8a: a re-hire of a fired name goes to the writer like a hire, and the writer's refusals pass through by name
ok 29 - row 194 T8a: a re-hire of a fired name goes to the writer like a hire, and the writer's refusals pass through by name
---
duration_ms: 25.681497
type: 'test'
...
# Subtest: row 194 T8b: a definition is hireable only when every action is on HIRE_ALLOWED, it is version 2, the chief lists it and noHire doesn't
ok 30 - row 194 T8b: a definition is hireable only when every action is on HIRE_ALLOWED, it is version 2, the chief lists it and noHire doesn't
---
duration_ms: 736.691272
type: 'test'
...
# Subtest: row 194 T8b: a hire without the role files configured refuses not-configured
ok 31 - row 194 T8b: a hire without the role files configured refuses not-configured
---
duration_ms: 20.404344
type: 'test'
...
# Subtest: row 194 T9: a fire revokes the claim, cancels open requests, asks the launcher to kill the runs, then delists and logs
ok 32 - row 194 T9: a fire revokes the claim, cancels open requests, asks the launcher to kill the runs, then delists and logs
---
duration_ms: 24.342678
type: 'test'
...
# Subtest: row 194 T9a (bus): a fire end's done writes lifecycle.end.killed and lifecycle.end.alive with run and pid, and an unknown stop's reason; a terminate's done or a bad stop refuses
ok 33 - row 194 T9a (bus): a fire end's done writes lifecycle.end.killed and lifecycle.end.alive with run and pid, and an unknown stop's reason; a terminate's done or a bad stop refuses
---
duration_ms: 27.932245
type: 'test'
...
# Subtest: row 194 T9: fire refusals come before step A and leave the claim, the requests and the file alone
ok 34 - row 194 T9: fire refusals come before step A and leave the claim, the requests and the file alone
---
duration_ms: 26.37099
type: 'test'
...
# Subtest: row 194 T9c: a writer failure at B leaves the instance firing, and the repeat delists and logs once
ok 35 - row 194 T9c: a writer failure at B leaves the instance firing, and the repeat delists and logs once
---
duration_ms: 25.60327
type: 'test'
...
# Subtest: row 194 T9c: a failure at C leaves the fire unlogged and the instance firing, and the repeat logs it
ok 36 - row 194 T9c: a failure at C leaves the fire unlogged and the instance firing, and the repeat logs it
---
duration_ms: 27.1223
type: 'test'
...
# Subtest: row 194 W-N1: a fire.done before a later fire.stopped of the same instance leaves it firing; another instance's done does not end it
ok 37 - row 194 W-N1: a fire.done before a later fire.stopped of the same instance leaves it firing; another instance's done does not end it
---
duration_ms: 24.66538
type: 'test'
...
# Subtest: row 194 T10: a hire or fire of a kept name refuses instance-kept before the writer
ok 38 - row 194 T10: a hire or fire of a kept name refuses instance-kept before the writer
---
duration_ms: 21.48409
type: 'test'
...
# Subtest: row 194 T10: a fire the writer's check refuses from the file stops nothing and leaves the instance launchable
ok 39 - row 194 T10: a fire the writer's check refuses from the file stops nothing and leaves the instance launchable
---
duration_ms: 21.272866
type: 'test'
...
# Subtest: row 194 T18: hire and fire take only their own keys, and a refused call writes nothing
ok 40 - row 194 T18: hire and fire take only their own keys, and a refused call writes nothing
---
duration_ms: 29.296147
type: 'test'
...
# Subtest: row 194 T8, T9, T18: through the runtime the chief hires and fires with the real writer, the receipt carries the reason, and a refusal leaves the file alone
ok 41 - row 194 T8, T9, T18: through the runtime the chief hires and fires with the real writer, the receipt carries the reason, and a refusal leaves the file alone
---
duration_ms: 73.146506
type: 'test'
...
# Subtest: row 194 W-N1: the launcher's take of a launch or regenerate of a firing instance closes it as instance-firing
ok 42 - row 194 W-N1: the launcher's take of a launch or regenerate of a firing instance closes it as instance-firing
---
duration_ms: 27.120623
type: 'test'
...
1..42
# tests 42
# suites 0
# pass 42
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 2209.273531
@@ -0,0 +1,28 @@
TAP version 13
# Subtest: C2-06 held library lock gives the agent citation-unavailable and its retry reason
ok 1 - C2-06 held library lock gives the agent citation-unavailable and its retry reason
---
duration_ms: 5158.552056
type: 'test'
...
# Subtest: C2-06 malformed sync state is availability failure, never a fabricated invalid cite
ok 2 - C2-06 malformed sync state is availability failure, never a fabricated invalid cite
---
duration_ms: 32.45412
type: 'test'
...
# Subtest: C2-06 no mirror or freshly initialized empty mirror still means no served citation
ok 3 - C2-06 no mirror or freshly initialized empty mirror still means no served citation
---
duration_ms: 32.119077
type: 'test'
...
1..3
# tests 3
# suites 0
# pass 3
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 5300.691255
@@ -0,0 +1,88 @@
TAP version 13
# Subtest: C2-06 coder send_message guard covers every table refusal; inserts nothing
ok 1 - C2-06 coder send_message guard covers every table refusal; inserts nothing
---
duration_ms: 106.578608
type: 'test'
...
# Subtest: C2-06 research send_message guard covers every table refusal; inserts nothing
ok 2 - C2-06 research send_message guard covers every table refusal; inserts nothing
---
duration_ms: 96.002195
type: 'test'
...
# Subtest: C2-06 stored check carries the file author trailer at an unrelated cited tip
ok 3 - C2-06 stored check carries the file author trailer at an unrelated cited tip
---
duration_ms: 60.674429
type: 'test'
...
# Subtest: C2-06 supporting cite cannot state canon, including a folder also marked playground
ok 4 - C2-06 supporting cite cannot state canon, including a folder also marked playground
---
duration_ms: 41.588011
type: 'test'
...
# Subtest: C2-06 supporting file stores supporting scope and its real agent trailer
ok 5 - C2-06 supporting file stores supporting scope and its real agent trailer
---
duration_ms: 50.407285
type: 'test'
...
# Subtest: C2-06 check evidence and insert are atomic when storing evidence fails
ok 6 - C2-06 check evidence and insert are atomic when storing evidence fails
---
duration_ms: 41.674629
type: 'test'
...
# Subtest: C2-06 live limits change both directions; unreadable file keeps checks and exact fixed texts
ok 7 - C2-06 live limits change both directions; unreadable file keeps checks and exact fixed texts
---
duration_ms: 56.164878
type: 'test'
...
# Subtest: C2-06 page store is session-local, caps 20 fetches and 200 KiB, drops at disconnect
ok 8 - C2-06 page store is session-local, caps 20 fetches and 200 KiB, drops at disconnect
---
duration_ms: 89.612789
type: 'test'
...
# Subtest: C2-06 transport passes safe capped guard reason; ordinary refusal envelope is byte-identical
ok 9 - C2-06 transport passes safe capped guard reason; ordinary refusal envelope is byte-identical
---
duration_ms: 55.976843
type: 'test'
...
# Subtest: C2-06 non-library businesses retain role.claim shape and unguarded free sends
ok 10 - C2-06 non-library businesses retain role.claim shape and unguarded free sends
---
duration_ms: 26.319898
type: 'test'
...
# Subtest: C2-06 thread messages carry file/last evidence with one read per distinct path
ok 11 - C2-06 thread messages carry file/last evidence with one read per distinct path
---
duration_ms: 79.888116
type: 'test'
...
# Subtest: C2-06 guarded request snapshot cannot change between check and insert
ok 12 - C2-06 guarded request snapshot cannot change between check and insert
---
duration_ms: 24.409667
type: 'test'
...
# Subtest: C2-06 library.limits.set is human-only and invalid settings leave file and receipts unchanged
ok 13 - C2-06 library.limits.set is human-only and invalid settings leave file and receipts unchanged
---
duration_ms: 42.292832
type: 'test'
...
1..13
# tests 13
# suites 0
# pass 13
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 860.457252
@@ -0,0 +1,30 @@
TAP version 13
# Subtest: C2-06 runtime reads changed and unreadable reply limits without restarting
not ok 1 - C2-06 runtime reads changed and unreadable reply limits without restarting
---
duration_ms: 5.205368
type: 'test'
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row285-r3/packages/bus/tests/citation-runtime.test.mjs:12:1'
failureType: 'testCodeFailure'
error: 'chief-library-gitea-required: /mnt/storage/scratch/tmp/oUqw8t/citation-runtime-lExQTC/config/businesses/acme.json roles.chief.credentials must reference gitea because this business declares a library'
code: 'ERR_TEST_FAILURE'
name: 'BusinessError'
stack: |-
refuse (file:///home/jwoltje/.t3/worktrees/mosaic-stack/magica-row285-r3/packages/business/src/errors.mjs:12:9)
checkRoles (file:///home/jwoltje/.t3/worktrees/mosaic-stack/magica-row285-r3/packages/business/src/business.mjs:144:7)
validateBusinessDocument (file:///home/jwoltje/.t3/worktrees/mosaic-stack/magica-row285-r3/packages/business/src/business.mjs:251:34)
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/magica-row285-r3/packages/bus/tests/citation-runtime.test.mjs:17:19)
Test.runInAsyncScope (node:async_hooks:226:14)
Test.run (node:internal/test_runner/test:1402:25)
Test.start (node:internal/test_runner/test:1262:17)
startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17)
...
1..1
# tests 1
# suites 0
# pass 0
# fail 1
# cancelled 0
# skipped 0
# todo 0
# duration_ms 118.757871
@@ -0,0 +1,22 @@
TAP version 13
# Subtest: comment cursors isolate businesses, move only forward and remain append-only
ok 1 - comment cursors isolate businesses, move only forward and remain append-only
---
duration_ms: 16.350445
type: 'test'
...
# Subtest: only trusted sync writes validated cursors; events and cursor share rollback
ok 2 - only trusted sync writes validated cursors; events and cursor share rollback
---
duration_ms: 11.907002
type: 'test'
...
1..2
# tests 2
# suites 0
# pass 2
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 104.469464
@@ -0,0 +1,40 @@
TAP version 13
# Subtest: explicit 3b copy migration preserves evidence and opens as 3g; normal startup never migrates
ok 1 - explicit 3b copy migration preserves evidence and opens as 3g; normal startup never migrates
---
duration_ms: 66.488214
type: 'test'
...
# Subtest: migration refuses active writers and drifted legacy schemas, with no partial upgrade
ok 2 - migration refuses active writers and drifted legacy schemas, with no partial upgrade
---
duration_ms: 86.256643
type: 'test'
...
# Subtest: named migration registry chains 3b through 3g to a fixture-only future version in order
ok 3 - named migration registry chains 3b through 3g to a fixture-only future version in order
---
duration_ms: 82.117708
type: 'test'
...
# Subtest: migration refuses mismatched source metadata without changing schema or evidence
ok 4 - migration refuses mismatched source metadata without changing schema or evidence
---
duration_ms: 30.203585
type: 'test'
...
# Subtest: offline command migrates only the supplied fixture root and reports usage errors
ok 5 - offline command migrates only the supplied fixture root and reports usage errors
---
duration_ms: 168.374571
type: 'test'
...
1..5
# tests 5
# suites 0
# pass 5
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 505.649983
@@ -0,0 +1,82 @@
TAP version 13
# Subtest: N4: the console verbs are exactly the preview and the console resolve, and decision.resolve is not one
ok 1 - N4: the console verbs are exactly the preview and the console resolve, and decision.resolve is not one
---
duration_ms: 1.068124
type: 'test'
...
# Subtest: bindConsole takes only the business human and a three-string owner subject
ok 2 - bindConsole takes only the business human and a three-string owner subject
---
duration_ms: 30.05527
type: 'test'
...
# Subtest: J1, Q188: only a console cap reaches the console verbs, and a console cap reaches nothing else
ok 3 - J1, Q188: only a console cap reaches the console verbs, and a console cap reaches nothing else
---
duration_ms: 37.544041
type: 'test'
...
# Subtest: preview: the two real answers, a grant summary and the digest, for an open grant request only
ok 4 - preview: the two real answers, a grant summary and the digest, for an open grant request only
---
duration_ms: 31.296805
type: 'test'
...
# Subtest: J1, J2: a decision that is not an eligible grant request refuses both console verbs
ok 5 - J1, J2: a decision that is not an eligible grant request refuses both console verbs
---
duration_ms: 32.974251
type: 'test'
...
# Subtest: N2, J13: a Console approve records via console and the owner, before the executor starts, and the grant runs once
ok 6 - N2, J13: a Console approve records via console and the owner, before the executor starts, and the grant runs once
---
duration_ms: 99.892461
type: 'test'
...
# Subtest: J15: a Console deny closes with the other key and starts nothing
ok 7 - J15: a Console deny closes with the other key and starts nothing
---
duration_ms: 127.896225
type: 'test'
...
# Subtest: J2: approve and deny come from approvalChoice and the options, not a fixed yes and no
ok 8 - J2: approve and deny come from approvalChoice and the options, not a fixed yes and no
---
duration_ms: 153.735022
type: 'test'
...
# Subtest: J11: a stale digest or a key outside the two refuses decision-stale and writes nothing
ok 9 - J11: a stale digest or a key outside the two refuses decision-stale and writes nothing
---
duration_ms: 32.714529
type: 'test'
...
# Subtest: J14: a via console close with no matching human.input approves nothing
ok 10 - J14: a via console close with no matching human.input approves nothing
---
duration_ms: 38.510042
type: 'test'
...
# Subtest: recordEvent keeps human.input reserved, so no agent forges a console answer
ok 11 - recordEvent keeps human.input reserved, so no agent forges a console answer
---
duration_ms: 24.098631
type: 'test'
...
# Subtest: J7: a console proof over the socket binds a cap for its one call and the reply releases it
ok 12 - J7: a console proof over the socket binds a cap for its one call and the reply releases it
---
duration_ms: 79.930736
type: 'test'
...
1..12
# tests 12
# suites 0
# pass 12
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 771.569183
@@ -0,0 +1,36 @@
TAP version 13
# organization: {"event":"reload-needs-restart","business":"demo"}
# organization: {"event":"reload-needs-restart","business":"demo"}
# Subtest: M6: a creative raise refuses decision-not-allowed, cited or not, and no decision row appears; the assistant still raises
ok 1 - M6: a creative raise refuses decision-not-allowed, cited or not, and no decision row appears; the assistant still raises
---
duration_ms: 37.542845
type: 'test'
...
# Subtest: a creative instance sends only to the user and hears only from the user
ok 2 - a creative instance sends only to the user and hears only from the user
---
duration_ms: 44.124804
type: 'test'
...
# Subtest: M10 through the broker: the chief and the tester are refused on bean, the human's limits.set of its models key works
ok 3 - M10 through the broker: the chief and the tester are refused on bean, the human's limits.set of its models key works
---
duration_ms: 75.62517
type: 'test'
...
# Subtest: row 256 T6 the human deletes a creative instance through the broker; the chief and the tester are refused at the verb
ok 4 - row 256 T6 the human deletes a creative instance through the broker; the chief and the tester are refused at the verb
---
duration_ms: 58.332935
type: 'test'
...
1..4
# tests 4
# suites 0
# pass 4
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 322.599671
@@ -0,0 +1,58 @@
TAP version 13
# Subtest: X4: register adds a store reference to the running bus, and issue then writes the key
ok 1 - X4: register adds a store reference to the running bus, and issue then writes the key
---
duration_ms: 13.058658
type: 'test'
...
# Subtest: X4: register runs the constructor's reference checks
ok 2 - X4: register runs the constructor's reference checks
---
duration_ms: 0.634029
type: 'test'
...
# Subtest: X4: register reads no file, so a key file left at the path stays unused, and a live token refuses
ok 3 - X4: register reads no file, so a key file left at the path stays unused, and a live token refuses
---
duration_ms: 7.997699
type: 'test'
...
# Subtest: X3, X4: unregister drops an entry with no token and refuses one with a live token
ok 4 - X3, X4: unregister drops an entry with no token and refuses one with a live token
---
duration_ms: 7.717805
type: 'test'
...
# Subtest: X5: a claim holds the slot, so a second claim and a host.run refuse host-busy until release
ok 5 - X5: a claim holds the slot, so a second claim and a host.run refuse host-busy until release
---
duration_ms: 4.655693
type: 'test'
...
# Subtest: X5: a claim made while a host.run is in flight refuses host-busy
ok 6 - X5: a claim made while a host.run is in flight refuses host-busy
---
duration_ms: 4.71412
type: 'test'
...
# Subtest: X5: a stale release leaves a later claim in place
ok 7 - X5: a stale release leaves a later claim in place
---
duration_ms: 0.374769
type: 'test'
...
# Subtest: X5: abortClaim aborts a live claim and says pending, and revoke's abort reaches a claim too
ok 8 - X5: abortClaim aborts a live claim and says pending, and revoke's abort reaches a claim too
---
duration_ms: 4.882381
type: 'test'
...
1..8
# tests 8
# suites 0
# pass 8
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 95.166772
@@ -0,0 +1,34 @@
TAP version 13
# Subtest: credentials gives human and reader sessions service, account, role, date and state, and nothing else
ok 1 - credentials gives human and reader sessions service, account, role, date and state, and nothing else
---
duration_ms: 18.034544
type: 'test'
...
# Subtest: credentials refuses a role session and any argument
ok 2 - credentials refuses a role session and any argument
---
duration_ms: 15.634635
type: 'test'
...
# Subtest: credentials reads the status on each request, and a broker without one lists none
ok 3 - credentials reads the status on each request, and a broker without one lists none
---
duration_ms: 20.239234
type: 'test'
...
# Subtest: the broker process answers credentials without a token, path or variable in its output, log or store
ok 4 - the broker process answers credentials without a token, path or variable in its output, log or store
---
duration_ms: 153.929182
type: 'test'
...
1..4
# tests 4
# suites 0
# pass 4
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 286.119213
@@ -0,0 +1,82 @@
TAP version 13
# Subtest: T1: a store reference with no file yet starts, and the agent is not-issued until issue
ok 1 - T1: a store reference with no file yet starts, and the agent is not-issued until issue
---
duration_ms: 4.464094
type: 'test'
...
# Subtest: T1: a store path the reference does not own, or no store root, refuses the reference
ok 2 - T1: a store path the reference does not own, or no store root, refuses the reference
---
duration_ms: 0.509555
type: 'test'
...
# Subtest: T1: a wrong mode on the store root, a business dir, an agent dir or the file refuses start
ok 3 - T1: a wrong mode on the store root, a business dir, an agent dir or the file refuses start
---
duration_ms: 1.796932
type: 'test'
...
# Subtest: T1: a missing store root refuses start; a missing {file} reference still refuses start
ok 4 - T1: a missing store root refuses start; a missing {file} reference still refuses start
---
duration_ms: 0.489681
type: 'test'
...
# Subtest: T1: a store file that is a directory or a symlink refuses start
ok 5 - T1: a store file that is a directory or a symlink refuses start
---
duration_ms: 0.705776
type: 'test'
...
# Subtest: T2: useFor keys from the session only
ok 6 - T2: useFor keys from the session only
---
duration_ms: 1.650779
type: 'test'
...
# Subtest: T5: issue, rotate, revoke and delete are live with no restart, and revoke holds across one
ok 7 - T5: issue, rotate, revoke and delete are live with no restart, and revoke holds across one
---
duration_ms: 3.610803
type: 'test'
...
# Subtest: T5: a failed commit leaves the token on disk but not in memory, and a bad token or date writes nothing
ok 8 - T5: a failed commit leaves the token on disk but not in memory, and a bad token or date writes nothing
---
duration_ms: 1.475601
type: 'test'
...
# Subtest: T5: revoke drops the token from memory before the unlink, so a failed unlink still leaves it revoked
ok 9 - T5: revoke drops the token from memory before the unlink, so a failed unlink still leaves it revoked
---
duration_ms: 1.395573
type: 'test'
...
# Subtest: T5: revoke of a {file} reference forgets the token and never unlinks the file
ok 10 - T5: revoke of a {file} reference forgets the token and never unlinks the file
---
duration_ms: 0.50461
type: 'test'
...
# Subtest: T5: delete refuses an agent dir holding anything but tokens
ok 11 - T5: delete refuses an agent dir holding anything but tokens
---
duration_ms: 1.338839
type: 'test'
...
# Subtest: D5: every credentials use( call site is on the allowlist
ok 12 - D5: every credentials use( call site is on the allowlist
---
duration_ms: 35.474802
type: 'test'
...
1..12
# tests 12
# suites 0
# pass 12
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 116.336978
@@ -0,0 +1,22 @@
TAP version 13
# Subtest: row 199: the lifecycle verbs refuse every session but the human, and the tester revokes only
ok 1 - row 199: the lifecycle verbs refuse every session but the human, and the tester revokes only
---
duration_ms: 66.972841
type: 'test'
...
# Subtest: T5: issue, rotate, revoke and delete are live, rewrite the business file and leave one receipt each, with no value anywhere
ok 2 - T5: issue, rotate, revoke and delete are live, rewrite the business file and leave one receipt each, with no value anywhere
---
duration_ms: 83.961285
type: 'test'
...
1..2
# tests 2
# suites 0
# pass 2
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 259.515042
@@ -0,0 +1,40 @@
TAP version 13
# Subtest: only validated broker references load; returned data and exceptions cannot expose a known token
ok 1 - only validated broker references load; returned data and exceptions cannot expose a known token
---
duration_ms: 2.282364
type: 'test'
...
# Subtest: bad file modes, symlinks, repository/data paths, malformed tokens and missing dates refuse
ok 2 - bad file modes, symlinks, repository/data paths, malformed tokens and missing dates refuse
---
duration_ms: 1.313212
type: 'test'
...
# Subtest: expiry refuses use and env references never become client data
ok 3 - expiry refuses use and env references never become client data
---
duration_ms: 0.389757
type: 'test'
...
# Subtest: S1 parsed service refs work, service mismatch refuses, Gitea rotation due is a warning state
ok 4 - S1 parsed service refs work, service mismatch refuses, Gitea rotation due is a warning state
---
duration_ms: 0.88474
type: 'test'
...
# Subtest: opaque tokens shorter than 16 characters refuse before use
ok 5 - opaque tokens shorter than 16 characters refuse before use
---
duration_ms: 0.257912
type: 'test'
...
1..5
# tests 5
# suites 0
# pass 5
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 62.955059
@@ -0,0 +1,106 @@
TAP version 13
# Subtest: each C-suite role file carries the same two lists: human, chief-of-staff, pm, cto
ok 1 - each C-suite role file carries the same two lists: human, chief-of-staff, pm, cto
---
duration_ms: 1.178051
type: 'test'
...
# Subtest: chief-executive-officer: messages to and from the user, chief of staff, pm and cto pass
ok 2 - chief-executive-officer: messages to and from the user, chief of staff, pm and cto pass
---
duration_ms: 46.063799
type: 'test'
...
# Subtest: chief-executive-officer: a message to or from the coder, reviewer or assistant is refused and logged, and nothing is stored
ok 3 - chief-executive-officer: a message to or from the coder, reviewer or assistant is refused and logged, and nothing is stored
---
duration_ms: 37.191813
type: 'test'
...
# Subtest: chief-executive-officer: another C-suite role isn't on the lists either
ok 4 - chief-executive-officer: another C-suite role isn't on the lists either
---
duration_ms: 30.321816
type: 'test'
...
# Subtest: chief-financial-officer: messages to and from the user, chief of staff, pm and cto pass
ok 5 - chief-financial-officer: messages to and from the user, chief of staff, pm and cto pass
---
duration_ms: 37.768466
type: 'test'
...
# Subtest: chief-financial-officer: a message to or from the coder, reviewer or assistant is refused and logged, and nothing is stored
ok 6 - chief-financial-officer: a message to or from the coder, reviewer or assistant is refused and logged, and nothing is stored
---
duration_ms: 34.766322
type: 'test'
...
# Subtest: chief-financial-officer: another C-suite role isn't on the lists either
ok 7 - chief-financial-officer: another C-suite role isn't on the lists either
---
duration_ms: 30.392045
type: 'test'
...
# Subtest: chief-information-officer: messages to and from the user, chief of staff, pm and cto pass
ok 8 - chief-information-officer: messages to and from the user, chief of staff, pm and cto pass
---
duration_ms: 38.097102
type: 'test'
...
# Subtest: chief-information-officer: a message to or from the coder, reviewer or assistant is refused and logged, and nothing is stored
ok 9 - chief-information-officer: a message to or from the coder, reviewer or assistant is refused and logged, and nothing is stored
---
duration_ms: 35.082458
type: 'test'
...
# Subtest: chief-information-officer: another C-suite role isn't on the lists either
ok 10 - chief-information-officer: another C-suite role isn't on the lists either
---
duration_ms: 31.171705
type: 'test'
...
# Subtest: chief-information-security-officer: messages to and from the user, chief of staff, pm and cto pass
ok 11 - chief-information-security-officer: messages to and from the user, chief of staff, pm and cto pass
---
duration_ms: 38.817461
type: 'test'
...
# Subtest: chief-information-security-officer: a message to or from the coder, reviewer or assistant is refused and logged, and nothing is stored
ok 12 - chief-information-security-officer: a message to or from the coder, reviewer or assistant is refused and logged, and nothing is stored
---
duration_ms: 37.899147
type: 'test'
...
# Subtest: chief-information-security-officer: another C-suite role isn't on the lists either
ok 13 - chief-information-security-officer: another C-suite role isn't on the lists either
---
duration_ms: 31.959408
type: 'test'
...
# Subtest: chief-marketing-officer: messages to and from the user, chief of staff, pm and cto pass
ok 14 - chief-marketing-officer: messages to and from the user, chief of staff, pm and cto pass
---
duration_ms: 38.564196
type: 'test'
...
# Subtest: chief-marketing-officer: a message to or from the coder, reviewer or assistant is refused and logged, and nothing is stored
ok 15 - chief-marketing-officer: a message to or from the coder, reviewer or assistant is refused and logged, and nothing is stored
---
duration_ms: 36.454288
type: 'test'
...
# Subtest: chief-marketing-officer: another C-suite role isn't on the lists either
ok 16 - chief-marketing-officer: another C-suite role isn't on the lists either
---
duration_ms: 31.008996
type: 'test'
...
1..16
# tests 16
# suites 0
# pass 16
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 612.792718
@@ -0,0 +1,38 @@
TAP version 13
# limits: {"event":"limit-reached","business":"demo","check":"daily-quota","export":"mayLaunch","subject":{"instance":"coder","provider":"anthropic","model":"opus","account":"jason-max"},"path":["tokens","daily","jason-max"],"limit":0,"count":0,"unknownTurns":0}
# usage: {"event":"usage-unknown","business":"demo","run":"run1","instance":"coder","turn":"399f7745-ec51-473c-9972-2fde5d511475","source":"@none","code":"baseline-unknown"}
# limits: {"event":"limit-reached","business":"demo","check":"daily-quota","export":"mustStop","subject":{"instance":"coder","provider":"anthropic","model":"opus","account":"jason-max"},"path":["tokens","daily","jason-max"],"limit":0,"count":0,"unknownTurns":1}
# usage: {"event":"usage-unknown","business":"demo","run":"run1","instance":"coder","turn":"1d20369e-9c24-48f1-8bb0-159123c6e515","source":"@none","code":"baseline-unknown"}
# Subtest: REQ-LIMIT-2 runtime: limits counts the daily quota, and mayLaunch refuses only the account at it
ok 1 - REQ-LIMIT-2 runtime: limits counts the daily quota, and mayLaunch refuses only the account at it
---
duration_ms: 109.106557
type: 'test'
...
# Subtest: REQ-LIMIT-4 runtime: a run bound with the account writes it on its usage records and stops at the quota
ok 2 - REQ-LIMIT-4 runtime: a run bound with the account writes it on its usage records and stops at the quota
---
duration_ms: 50.518965
type: 'test'
...
# Subtest: REQ-LIMIT-4 runtime: a run bound without an account records null and the daily quota never stops it
ok 3 - REQ-LIMIT-4 runtime: a run bound without an account records null and the daily quota never stops it
---
duration_ms: 44.132095
type: 'test'
...
# Subtest: REQ-LIMIT-4 bindLaunch keeps the account off session.launched, refuses one that is not an identifier, and takes null as none
ok 4 - REQ-LIMIT-4 bindLaunch keeps the account off session.launched, refuses one that is not an identifier, and takes null as none
---
duration_ms: 11.979393
type: 'test'
...
1..4
# tests 4
# suites 0
# pass 4
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 294.164354
@@ -0,0 +1,58 @@
TAP version 13
# Subtest: a human resolve sends the raising role one message from the human, and its request is the answer
ok 1 - a human resolve sends the raising role one message from the human, and its request is the answer
---
duration_ms: 35.676149
type: 'test'
...
# Subtest: a cross-role decision resolved by its arbiter comes from that role and run, with no request
ok 2 - a cross-role decision resolved by its arbiter comes from that role and run, with no request
---
duration_ms: 20.919123
type: 'test'
...
# Subtest: a human withdraw sends one message with the note
ok 3 - a human withdraw sends one message with the note
---
duration_ms: 20.223548
type: 'test'
...
# Subtest: a human seen before the close leaves the request on the close's answer, not the seen
ok 4 - a human seen before the close leaves the request on the close's answer, not the seen
---
duration_ms: 23.705422
type: 'test'
...
# Subtest: the raising run's withdraw, a supersede, a within-role raise and seen send nothing
ok 5 - the raising run's withdraw, a supersede, a within-role raise and seen send nothing
---
duration_ms: 25.191887
type: 'test'
...
# Subtest: refused closes send nothing: invalid-choice, decision-closed, not-resolver
ok 6 - refused closes send nothing: invalid-choice, decision-closed, not-resolver
---
duration_ms: 25.925616
type: 'test'
...
# Subtest: a raising role nobody holds at the close gets the message on the next claim
ok 7 - a raising role nobody holds at the close gets the message on the next claim
---
duration_ms: 21.667199
type: 'test'
...
# Subtest: a human DECISION send keeps its own instruction as the request, not a close's answer
ok 8 - a human DECISION send keeps its own instruction as the request, not a close's answer
---
duration_ms: 20.803709
type: 'test'
...
1..8
# tests 8
# suites 0
# pass 8
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 267.377328
@@ -0,0 +1,40 @@
TAP version 13
# Subtest: a cross-role raise whose arbiter the raiser does not hear from is refused and stores nothing
ok 1 - a cross-role raise whose arbiter the raiser does not hear from is refused and stores nothing
---
duration_ms: 33.262186
type: 'test'
...
# Subtest: a gated raise by a role that does not hear from the human is refused and stores nothing
ok 2 - a gated raise by a role that does not hear from the human is refused and stores nothing
---
duration_ms: 26.351602
type: 'test'
...
# Subtest: a route the raiser hears from is allowed, checked from the route to the raiser
ok 3 - a route the raiser hears from is allowed, checked from the route to the raiser
---
duration_ms: 28.765206
type: 'test'
...
# Subtest: a refused supersede withdraws nothing
ok 4 - a refused supersede withdraws nothing
---
duration_ms: 24.459553
type: 'test'
...
# Subtest: the assistant's within-role and gated raises still work
ok 5 - the assistant's within-role and gated raises still work
---
duration_ms: 25.256673
type: 'test'
...
1..5
# tests 5
# suites 0
# pass 5
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 212.800428
@@ -0,0 +1,52 @@
TAP version 13
# Subtest: roles lists open decisions routed to a role, and never the human inbox
ok 1 - roles lists open decisions routed to a role, and never the human inbox
---
duration_ms: 29.861674
type: 'test'
...
# Subtest: recent lists closed decisions of every route, newest close first, with how each closed
ok 2 - recent lists closed decisions of every route, newest close first, with how each closed
---
duration_ms: 26.912278
type: 'test'
...
# Subtest: recent gives the closing event as closed when the decision was seen first
ok 3 - recent gives the closing event as closed when the decision was seen first
---
duration_ms: 26.360568
type: 'test'
...
# Subtest: recent stops at RECENT rows
ok 4 - recent stops at RECENT rows
---
duration_ms: 76.379396
type: 'test'
...
# Subtest: every row is what trail already gives the same session for that id
ok 5 - every row is what trail already gives the same session for that id
---
duration_ms: 34.663758
type: 'test'
...
# Subtest: a role session can't list decisions, so it can't read another role's open decisions
ok 6 - a role session can't list decisions, so it can't read another role's open decisions
---
duration_ms: 34.464503
type: 'test'
...
# Subtest: decisions is a read: one business, strict arguments, nothing written
ok 7 - decisions is a read: one business, strict arguments, nothing written
---
duration_ms: 36.717285
type: 'test'
...
1..7
# tests 7
# suites 0
# pass 7
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 339.808831
@@ -0,0 +1,52 @@
TAP version 13
# Subtest: endLaunch writes session.ended, releases the run claim and kills its capabilities
ok 1 - endLaunch writes session.ended, releases the run claim and kills its capabilities
---
duration_ms: 30.568901
type: 'test'
...
# Subtest: endLaunch refuses an unknown run, a second end and a rebind of the ended run
ok 2 - endLaunch refuses an unknown run, a second end and a rebind of the ended run
---
duration_ms: 11.454093
type: 'test'
...
# Subtest: a restarted broker refuses to rebind an ended run; a refused rebind leaves the run unbound
ok 3 - a restarted broker refuses to rebind an ended run; a refused rebind leaves the run unbound
---
duration_ms: 13.907467
type: 'test'
...
# Subtest: endLaunch leaves a claim another run took alone
ok 4 - endLaunch leaves a claim another run took alone
---
duration_ms: 14.271719
type: 'test'
...
# Subtest: refuse records action.refused against the caller with the code only
ok 5 - refuse records action.refused against the caller with the code only
---
duration_ms: 10.961408
type: 'test'
...
# Subtest: launches off refuses role.launch with launch-revoked until launches on
ok 6 - launches off refuses role.launch with launch-revoked until launches on
---
duration_ms: 15.823975
type: 'test'
...
# Subtest: broker process: launch ops authorize role.launch, record refusals and end runs
ok 7 - broker process: launch ops authorize role.launch, record refusals and end runs
---
duration_ms: 154.315753
type: 'test'
...
1..7
# tests 7
# suites 0
# pass 7
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 330.303398
@@ -0,0 +1,154 @@
TAP version 13
# Subtest: row 281 T2: a fire with host grants on two hosts and a Gitea grant answers with a job, then revokes all three
ok 1 - row 281 T2: a fire with host grants on two hosts and a Gitea grant answers with a job, then revokes all three
---
duration_ms: 271.519558
type: 'test'
...
# Subtest: row 281 T3 (sage-2575): a delete with grants takes two requests: the first starts the job, the next completes
ok 2 - row 281 T3 (sage-2575): a delete with grants takes two requests: the first starts the job, the next completes
---
duration_ms: 224.418472
type: 'test'
...
# Subtest: row 281 T3b (Q2): a delete whose job refuses on host B; the retry refuses grant-revoke-failed and revokes only B and Gitea
ok 3 - row 281 T3b (Q2): a delete whose job refuses on host B; the retry refuses grant-revoke-failed and revokes only B and Gitea
---
duration_ms: 202.901281
type: 'test'
...
# Subtest: row 281 T3b: B cleared by hand with hosts.revoke; the next delete starts a job for Gitea and the leftover line only
ok 4 - row 281 T3b: B cleared by hand with hosts.revoke; the next delete starts a job for Gitea and the leftover line only
---
duration_ms: 210.347558
type: 'test'
...
# Subtest: row 281 T3c (sage-2575 condition 4): a delete of an instance with no grant completes in one request
ok 5 - row 281 T3c (sage-2575 condition 4): a delete of an instance with no grant completes in one request
---
duration_ms: 56.202657
type: 'test'
...
# Subtest: row 281 T4: host B unreachable in a fire: the job refuses, A stays revoked, B and Gitea untouched; a repeat completes
ok 6 - row 281 T4: host B unreachable in a fire: the job refuses, A stays revoked, B and Gitea untouched; a repeat completes
---
duration_ms: 200.876573
type: 'test'
...
# Subtest: row 281 T4b (Q1): a line a manual hosts.revoke left on C is removed by the fire, with its close
ok 7 - row 281 T4b (Q1): a line a manual hosts.revoke left on C is removed by the fire, with its close
---
duration_ms: 89.157186
type: 'test'
...
# Subtest: row 281 T4b (Q1): with C unreachable, the fire completes and names the line in grantsLeft
ok 8 - row 281 T4b (Q1): with C unreachable, the fire completes and names the line in grantsLeft
---
duration_ms: 95.460034
type: 'test'
...
# Subtest: row 281 T5: Gitea's admin token can't be checked: the job refuses with the Gitea grant intact
ok 9 - row 281 T5: Gitea's admin token can't be checked: the job refuses with the Gitea grant intact
---
duration_ms: 125.981553
type: 'test'
...
# Subtest: row 281 T5b (N1): a failed token DELETE refuses gitea-left; the repeat retries only this agent's entries
ok 10 - row 281 T5b (N1): a failed token DELETE refuses gitea-left; the repeat retries only this agent's entries
---
duration_ms: 290.884497
type: 'test'
...
# Subtest: row 281 T6 (sage-2574): a host decision approved before the fire and run after it ends revoked, with nothing applied
ok 11 - row 281 T6 (sage-2574): a host decision approved before the fire and run after it ends revoked, with nothing applied
---
duration_ms: 61.321628
type: 'test'
...
# Subtest: row 281 T6b (sage-2574): a Gitea decision approved before the fire and run after it ends revoked before any Gitea write
ok 12 - row 281 T6b (sage-2574): a Gitea decision approved before the fire and run after it ends revoked before any Gitea write
---
duration_ms: 78.290059
type: 'test'
...
# Subtest: row 281 T6c: a host executor in flight aborts and ends revoked; a Gitea executor in flight is awaited and leaves no token
ok 13 - row 281 T6c: a host executor in flight aborts and ends revoked; a Gitea executor in flight is awaited and leaves no token
---
duration_ms: 244.379957
type: 'test'
...
# Subtest: row 281 T6d (B1): undecided host and Gitea decisions are in the set, and approved after the fire both end revoked
ok 14 - row 281 T6d (B1): undecided host and Gitea decisions are in the set, and approved after the fire both end revoked
---
duration_ms: 98.546111
type: 'test'
...
# Subtest: row 281 T6e (B1): a grant raise refuses instance-fired while firing and after the fire, goes through after a rehire, and refuses grant-revoke-running during a delete job
ok 15 - row 281 T6e (B1): a grant raise refuses instance-fired while firing and after the fire, goes through after a rehire, and refuses grant-revoke-running during a delete job
---
duration_ms: 107.127915
type: 'test'
...
# Subtest: row 281 T7: an instance with no grant fires as today, synchronously, with the same events
ok 16 - row 281 T7: an instance with no grant fires as today, synchronously, with the same events
---
duration_ms: 56.10589
type: 'test'
...
# Subtest: row 281 T9 (B3): one step G per agent; the manual verbs refuse while it runs, and sweep names it running
ok 17 - row 281 T9 (B3): one step G per agent; the manual verbs refuse while it runs, and sweep names it running
---
duration_ms: 219.333857
type: 'test'
...
# Subtest: row 281 T10 (B2): the fire and the delete answer while their jobs are held, and the broker answers other verbs
ok 18 - row 281 T10 (B2): the fire and the delete answer while their jobs are held, and the broker answers other verbs
---
duration_ms: 187.536571
type: 'test'
...
# Subtest: row 281 T11 (C1): a fire's job completes after the chief's run ends and processing halts
ok 19 - row 281 T11 (C1): a fire's job completes after the chief's run ends and processing halts
---
duration_ms: 81.820486
type: 'test'
...
# Subtest: row 281 T12 (C1, N7): a step B refusal in the job is fire.failed, and the repeat runs B and C synchronously
ok 20 - row 281 T12 (C1, N7): a step B refusal in the job is fire.failed, and the repeat runs B and C synchronously
---
duration_ms: 75.368506
type: 'test'
...
# Subtest: row 281 T13 (N4): a restart records each held job interrupted once, with one message each; an ended job gets none
ok 21 - row 281 T13 (N4): a restart records each held job interrupted once, with one message each; an ended job gets none
---
duration_ms: 135.480277
type: 'test'
...
# Subtest: row 281 T14 (N1, sage-2653): a host removed under an undecided decision stops the fire on host-unknown; the human's no closes it, and the repeat fire has no job
ok 22 - row 281 T14 (N1, sage-2653): a host removed under an undecided decision stops the fire on host-unknown; the human's no closes it, and the repeat fire has no job
---
duration_ms: 61.217216
type: 'test'
...
# Subtest: row 239 T4: a refusal after the writer's revoke is named -revoked, in the job's fire.failed and notice, a synchronous fire and a delete
ok 23 - row 239 T4: a refusal after the writer's revoke is named -revoked, in the job's fire.failed and notice, a synchronous fire and a delete
---
duration_ms: 86.890748
type: 'test'
...
# Subtest: row 239 T4b: an unmarked step B refusal keeps its code, and the notice says nothing of the tokens
ok 24 - row 239 T4b: an unmarked step B refusal keeps its code, and the notice says nothing of the tokens
---
duration_ms: 74.32138
type: 'test'
...
1..24
# tests 24
# suites 0
# pass 24
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 3424.217118
@@ -0,0 +1,16 @@
TAP version 13
# Subtest: X-G3: on scratch 1.27.1, a grant makes the user, mints, forks, checks reach, writes the file, and revoke deletes the token
ok 1 - X-G3: on scratch 1.27.1, a grant makes the user, mints, forks, checks reach, writes the file, and revoke deletes the token
---
duration_ms: 11992.407797
type: 'test'
...
1..1
# tests 1
# suites 0
# pass 1
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 12077.514952
@@ -0,0 +1,310 @@
TAP version 13
# Subtest: versionAtLeast compares numbers and refuses a prerelease of 1.27.0
ok 1 - versionAtLeast compares numbers and refuses a prerelease of 1.27.0
---
duration_ms: 0.993112
type: 'test'
...
# Subtest: X-G1: a raise that fails a check refuses and stores nothing
ok 2 - X-G1: a raise that fails a check refuses and stores nothing
---
duration_ms: 65.144002
type: 'test'
...
# Subtest: X-G1: a creative role, a role without identity and a missing or due slot refuse at raise
ok 3 - X-G1: a creative role, a role without identity and a missing or due slot refuse at raise
---
duration_ms: 176.153604
type: 'test'
...
# Subtest: X-G1: the chief of staff refuses at raise, whatever its definition, identity and publish declare
ok 4 - X-G1: the chief of staff refuses at raise, whatever its definition, identity and publish declare
---
duration_ms: 37.039318
type: 'test'
...
# Subtest: X-G2: admin set refuses each failed check and writes nothing, then writes the slot once
ok 5 - X-G2: admin set refuses each failed check and writes nothing, then writes the slot once
---
duration_ms: 135.41468
type: 'test'
...
# Subtest: X-G3 to X-G8: an approve makes the user, mints the token, forks, checks reach and writes the file, record and grant.applied
ok 6 - X-G3 to X-G8: an approve makes the user, mints the token, forks, checks reach and writes the file, record and grant.applied
---
duration_ms: 103.900914
type: 'test'
...
# Subtest: X-G4: a user this stack did not make, an admin, a disabled user and a remade user each refuse
ok 7 - X-G4: a user this stack did not make, an admin, a disabled user and a remade user each refuse
---
duration_ms: 314.051809
type: 'test'
...
# Subtest: X-G6 and X-G8: the user and mint steps are written before their calls, and each result after its call
ok 8 - X-G6 and X-G8: the user and mint steps are written before their calls, and each result after its call
---
duration_ms: 102.418501
type: 'test'
...
# Subtest: X-G4: a fork by the seat user of another repository than the project refuses fork-foreign
ok 9 - X-G4: a fork by the seat user of another repository than the project refuses fork-foreign
---
duration_ms: 79.552914
type: 'test'
...
# Subtest: X-G5: a failure after the mint deletes the token, unloads nothing it did not load and leaves no file
ok 10 - X-G5: a failure after the mint deletes the token, unloads nothing it did not load and leaves no file
---
duration_ms: 124.288579
type: 'test'
...
# Subtest: X-G5: a token delete that fails is left at Gitea, shown by status and taken by sweep
ok 11 - X-G5: a token delete that fails is left at Gitea, shown by status and taken by sweep
---
duration_ms: 122.236446
type: 'test'
...
# Subtest: X-G5: a mint that fails deletes by name, and a refusal at step 0 leaves the decision unspent
ok 12 - X-G5: a mint that fails deletes by name, and a refusal at step 0 leaves the decision unspent
---
duration_ms: 147.015181
type: 'test'
...
# Subtest: X-G5: an agent held for an unknown token is refused at step 0 with no Gitea call
ok 13 - X-G5: an agent held for an unknown token is refused at step 0 with no Gitea call
---
duration_ms: 65.072391
type: 'test'
...
# Subtest: X-G5 and X-G9 (step 7): a rotation whose old-token delete fails stays applied with the old id left
ok 14 - X-G5 and X-G9 (step 7): a rotation whose old-token delete fails stays applied with the old id left
---
duration_ms: 168.88228
type: 'test'
...
# Subtest: X-G10: in a rotation the store file holds the new token before the old one is deleted
ok 15 - X-G10: in a rotation the store file holds the new token before the old one is deleted
---
duration_ms: 168.825604
type: 'test'
...
# Subtest: X-G6: a rotation cut before the rename settles back at once, and the old token stays live
ok 16 - X-G6: a rotation cut before the rename settles back at once, and the old token stays live
---
duration_ms: 177.890446
type: 'test'
...
# Subtest: X-G6: a rotation whose step 8 write fails is settle-pending, and a restart settles it forward
ok 17 - X-G6: a rotation whose step 8 write fails is settle-pending, and a restart settles it forward
---
duration_ms: 176.296589
type: 'test'
...
# Subtest: X-G6: a restart settles an open rotation back when the file still holds the old token
ok 18 - X-G6: a restart settles an open rotation back when the file still holds the old token
---
duration_ms: 137.42724
type: 'test'
...
# Subtest: X-G6: a restart settles an open rotation forward when the file holds the new token
ok 19 - X-G6: a restart settles an open rotation forward when the file holds the new token
---
duration_ms: 116.849781
type: 'test'
...
# Subtest: X-G6: a 401 on the file token loses the grant: both tokens go, the record goes and memory unloads
ok 20 - X-G6: a 401 on the file token loses the grant: both tokens go, the record goes and memory unloads
---
duration_ms: 136.599794
type: 'test'
...
# Subtest: X-G6: a 403, 404, 500, a hang and a dropped socket each leave the rotation settle-pending with nothing deleted
ok 21 - X-G6: a 403, 404, 500, a hang and a dropped socket each leave the rotation settle-pending with nothing deleted
---
duration_ms: 1009.05306
type: 'test'
...
# Subtest: X-G6: a file token no grant minted is held; the next restart says so again; a revoke clears it and takes both ids
ok 22 - X-G6: a file token no grant minted is held; the next restart says so again; a revoke clears it and takes both ids
---
duration_ms: 165.028255
type: 'test'
...
# Subtest: N9: a revoke of an open rotation, then a restart: no settle, no Gitea call and no message
ok 23 - N9: a revoke of an open rotation, then a restart: no settle, no Gitea call and no message
---
duration_ms: 137.431301
type: 'test'
...
# Subtest: N9: a 404 on a delete by id counts as done
ok 24 - N9: a 404 on a delete by id counts as done
---
duration_ms: 129.565786
type: 'test'
...
# Subtest: X-G6: a restart undoes each step a killed child left, and spends an approved unspent decision
ok 25 - X-G6: a restart undoes each step a killed child left, and spends an approved unspent decision
---
duration_ms: 409.592388
type: 'test'
...
# Subtest: X-G6: a restart with no admin slot leaves the user an orphan and the token left
ok 26 - X-G6: a restart with no admin slot leaves the user an orphan and the token left
---
duration_ms: 56.049391
type: 'test'
...
# Subtest: X-G7: a change to the definition, identity, publish remotes or admin slot after the raise ends decision-mismatch
ok 27 - X-G7: a change to the definition, identity, publish remotes or admin slot after the raise ends decision-mismatch
---
duration_ms: 119.347201
type: 'test'
...
# Subtest: X-G7 and X-G9: an admin rotate voids open decisions, and rotate --finish deletes what was left
ok 28 - X-G7 and X-G9: an admin rotate voids open decisions, and rotate --finish deletes what was left
---
duration_ms: 107.296891
type: 'test'
...
# Subtest: X-G9: a rotate whose name is taken refuses and writes nothing; remove takes the slot away
ok 29 - X-G9: a rotate whose name is taken refuses and writes nothing; remove takes the slot away
---
duration_ms: 65.99498
type: 'test'
...
# Subtest: X-G9: a slot past its rotate-by date refuses a run at step 0, leaving the decision unspent
ok 30 - X-G9: a slot past its rotate-by date refuses a run at step 0, leaving the decision unspent
---
duration_ms: 51.530121
type: 'test'
...
# Subtest: X-G11: run refuses every caller but the human, an unapproved, a spent and a busy decision
ok 31 - X-G11: run refuses every caller but the human, an unapproved, a spent and a busy decision
---
duration_ms: 102.722145
type: 'test'
...
# Subtest: kill switch (plan :16): while halted the chief still reads grants.status, and an agent grants.revoke refuses
ok 32 - kill switch (plan :16): while halted the chief still reads grants.status, and an agent grants.revoke refuses
---
duration_ms: 106.804233
type: 'test'
...
# Subtest: X-G11: a revoke while the executor runs aborts it and the grant ends revoked
ok 33 - X-G11: a revoke while the executor runs aborts it and the grant ends revoked
---
duration_ms: 105.633901
type: 'test'
...
# Subtest: X-G11: a revoke unloads memory and removes the file before its Gitea delete
ok 34 - X-G11: a revoke unloads memory and removes the file before its Gitea delete
---
duration_ms: 129.733108
type: 'test'
...
# Subtest: X-G11: a revoke during a rotation step 7 ends it revoked, and step 8 writes no record back
ok 35 - X-G11: a revoke during a rotation step 7 ends it revoked, and step 8 writes no record back
---
duration_ms: 156.370271
type: 'test'
...
# Subtest: X-G11: a revoke while a sweep settles a rotation, forward or back, ends it revoked with no record
ok 36 - X-G11: a revoke while a sweep settles a rotation, forward or back, ends it revoked with no record
---
duration_ms: 348.377983
type: 'test'
...
# Subtest: X-G11: a revoke during a settle whoami that finds a foreign token ends it revoked, not held
ok 37 - X-G11: a revoke during a settle whoami that finds a foreign token ends it revoked, not held
---
duration_ms: 174.861644
type: 'test'
...
# Subtest: X-G11: a revoke during a settle whoami that gets a 401 ends it revoked, not lost
ok 38 - X-G11: a revoke during a settle whoami that gets a 401 ends it revoked, not lost
---
duration_ms: 160.189925
type: 'test'
...
# Subtest: X-G12: a token that reaches wider than its forks fails with the repository named
ok 39 - X-G12: a token that reaches wider than its forks fails with the repository named
---
duration_ms: 406.656917
type: 'test'
...
# Subtest: X-G12: reach is paged by X-Total-Count and a count that does not add up refuses
ok 40 - X-G12: reach is paged by X-Total-Count and a count that does not add up refuses
---
duration_ms: 248.981956
type: 'test'
...
# Subtest: X-G13: an agent cannot record a grant event, and the trigger refuses one from any writer but the grant writer
ok 41 - X-G13: an agent cannot record a grant event, and the trigger refuses one from any writer but the grant writer
---
duration_ms: 43.223661
type: 'test'
...
# Subtest: X-G14: credentials delete fires the user: tokens go, login is prohibited, and grant.revoke.closed records it
ok 42 - X-G14: credentials delete fires the user: tokens go, login is prohibited, and grant.revoke.closed records it
---
duration_ms: 262.131509
type: 'test'
...
# Subtest: X-G14: a fire whose token delete or login PATCH fails lands it in serviceLeft
ok 43 - X-G14: a fire whose token delete or login PATCH fails lands it in serviceLeft
---
duration_ms: 135.20833
type: 'test'
...
# Subtest: X-G14: a fire whose user is gone or remade skips the fire steps and says why
ok 44 - X-G14: a fire whose user is gone or remade skips the fire steps and says why
---
duration_ms: 272.641505
type: 'test'
...
# Subtest: X-G14: a sweep retries a fire only for the user it fired: a remade or gone user is skipped and named
ok 45 - X-G14: a sweep retries a fire only for the user it fired: a remade or gone user is skipped and named
---
duration_ms: 347.659833
type: 'test'
...
# Subtest: X-G14: a revoke Gitea cannot reach stays open, and a restart closes it
ok 46 - X-G14: a revoke Gitea cannot reach stays open, and a restart closes it
---
duration_ms: 138.206945
type: 'test'
...
# Subtest: row 281 T8: a tester grants.revoke refuses tester-dev-only once bus.tester is off; the human revoke keeps its records and starts no job
ok 47 - row 281 T8: a tester grants.revoke refuses tester-dev-only once bus.tester is off; the human revoke keeps its records and starts no job
---
duration_ms: 129.669912
type: 'test'
...
# Subtest: X-G15: look-alike commit steps outside the grant writer are ignored at start, by revoke and by status
ok 48 - X-G15: look-alike commit steps outside the grant writer are ignored at start, by revoke and by status
---
duration_ms: 135.849488
type: 'test'
...
# Subtest: X-G15: a look-alike spend under another kind with the grant writer pair is not an open grant
ok 49 - X-G15: a look-alike spend under another kind with the grant writer pair is not an open grant
---
duration_ms: 47.432816
type: 'test'
...
# Subtest: status lists the slot, users, grants and nothing secret, and every grants verb needs service gitea
ok 50 - status lists the slot, users, grants and nothing secret, and every grants verb needs service gitea
---
duration_ms: 113.321647
type: 'test'
...
1..50
# tests 50
# suites 0
# pass 50
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 8467.002792
@@ -0,0 +1,40 @@
TAP version 13
# Subtest: 3j copy migrates to 3k: every row kept, and sqlite_master gains only the two tables and their keys
ok 1 - 3j copy migrates to 3k: every row kept, and sqlite_master gains only the two tables and their keys
---
duration_ms: 89.459024
type: 'test'
...
# Subtest: a 3j→3k step that fails partway leaves the store at 3j with every row and the schema intact
ok 2 - a 3j→3k step that fails partway leaves the store at 3j with every row and the schema intact
---
duration_ms: 91.221183
type: 'test'
...
# Subtest: the 3j engine refuses a migrated store, migrating or not, and leaves it as it was
ok 3 - the 3j engine refuses a migrated store, migrating or not, and leaves it as it was
---
duration_ms: 88.209221
type: 'test'
...
# Subtest: gitea_users: one user per business and agent, an id above 0, a 16-hex nonce and a real decision
ok 4 - gitea_users: one user per business and agent, an id above 0, a 16-hex nonce and a real decision
---
duration_ms: 11.809605
type: 'test'
...
# Subtest: gitea_grants: one grant per agent, a projects array, a token id above 0, and only for a recorded user
ok 5 - gitea_grants: one grant per agent, a projects array, a token id above 0, and only for a recorded user
---
duration_ms: 12.340308
type: 'test'
...
1..5
# tests 5
# suites 0
# pass 5
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 369.424097
@@ -0,0 +1,154 @@
TAP version 13
# Subtest: G1, A1: only the chief raises a grant, and a refused raise stores nothing and runs no keyscan
ok 1 - G1, A1: only the chief raises a grant, and a refused raise stores nothing and runs no keyscan
---
duration_ms: 43.290782
type: 'test'
...
# Subtest: G1: grant goes only with credential.mint, row a takes only host-enroll, and E1 refuses each bad field
ok 2 - G1: grant goes only with credential.mint, row a takes only host-enroll, and E1 refuses each bad field
---
duration_ms: 47.259817
type: 'test'
...
# Subtest: G5, A5, A6: the scanned key set must equal the requested set, or host-key-mismatch and nothing stored
ok 3 - G5, A5, A6: the scanned key set must equal the requested set, or host-key-mismatch and nothing stored
---
duration_ms: 32.998123
type: 'test'
...
# Subtest: G4 (host-enroll block, M1): the broker appends the keys, fingerprints and sudo line, and the cap counts the block
ok 4 - G4 (host-enroll block, M1): the broker appends the keys, fingerprints and sudo line, and the cap counts the block
---
duration_ms: 27.343232
type: 'test'
...
# Subtest: G6, X1: the human's cli yes starts enrollment, which writes the record, the key file and the events in order
ok 5 - G6, X1: the human's cli yes starts enrollment, which writes the record, the key file and the events in order
---
duration_ms: 50.094997
type: 'test'
...
# Subtest: A2, A4: a credential.mint without grant, and a no, start nothing
ok 6 - A2, A4: a credential.mint without grant, and a no, start nothing
---
duration_ms: 240.665869
type: 'test'
...
# Subtest: A3, X1: a resolve by the tester or an agent starts nothing
ok 7 - A3, X1: a resolve by the tester or an agent starts nothing
---
duration_ms: 241.250779
type: 'test'
...
# Subtest: G6 (duckworth-0081 B3): a withdraw by the chief or the human, and an arbiter resolve, start nothing
ok 8 - G6 (duckworth-0081 B3): a withdraw by the chief or the human, and an arbiter resolve, start nothing
---
duration_ms: 241.688714
type: 'test'
...
# Subtest: G10 (duckworth-0081 B1): a second start for a spent decision refuses decision-consumed, and an unresolved or agent-resolved one not-authorized
ok 9 - G10 (duckworth-0081 B1): a second start for a spent decision refuses decision-consumed, and an unresolved or agent-resolved one not-authorized
---
duration_ms: 51.200834
type: 'test'
...
# Subtest: A8, S1: two approved enrollments for one host: the second ends host-enrolled and the pin stays
ok 10 - A8, S1: two approved enrollments for one host: the second ends host-enrolled and the pin stays
---
duration_ms: 69.960016
type: 'test'
...
# Subtest: A9: the hosts primary key refuses a second record for (business, host)
ok 11 - A9: the hosts primary key refuses a second record for (business, host)
---
duration_ms: 26.029538
type: 'test'
...
# Subtest: X3: a failure at step 2 deletes the record again and ends grant.failed, with no key file
ok 12 - X3: a failure at step 2 deletes the record again and ends grant.failed, with no key file
---
duration_ms: 45.771992
type: 'test'
...
# Subtest: A10, X3: at start a resolved, unspent enrollment is spent and ends interrupted, and never runs late
ok 13 - A10, X3: at start a resolved, unspent enrollment is spent and ends interrupted, and never runs late
---
duration_ms: 27.031698
type: 'test'
...
# Subtest: X3: at start an enrollment that stopped after its registry step loses its record and key file
ok 14 - X3: at start an enrollment that stopped after its registry step loses its record and key file
---
duration_ms: 49.174071
type: 'test'
...
# Subtest: G24 first sentence, M2, A12: tags are mosaic- and 32 hex, and differ by business, agent and host
ok 15 - G24 first sentence, M2, A12: tags are mosaic- and 32 hex, and differ by business, agent and host
---
duration_ms: 0.29412
type: 'test'
...
# Subtest: E4: hosts.check sets the record ready and records grant.host.checked; a non-zero list leaves it pending
ok 16 - E4: hosts.check sets the record ready and records grant.host.checked; a non-zero list leaves it pending
---
duration_ms: 51.694048
type: 'test'
...
# Subtest: G20 (duckworth-0081 B3): the human's hosts.check marks the host ready, and the reader refuses
ok 17 - G20 (duckworth-0081 B3): the human's hosts.check marks the host ready, and the reader refuses
---
duration_ms: 47.764066
type: 'test'
...
# Subtest: G18 (duckworth-0081 B2), broker half: a check refused host-key-mismatch leaves the host pending-install with no grant.host.checked
ok 18 - G18 (duckworth-0081 B2), broker half: a check refused host-key-mismatch leaves the host pending-install with no grant.host.checked
---
duration_ms: 48.010953
type: 'test'
...
# Subtest: E4: a check whose installer fingerprint differs from the record refuses host-changed
ok 19 - E4: a check whose installer fingerprint differs from the record refuses host-changed
---
duration_ms: 47.86067
type: 'test'
...
# Subtest: E4, G21: hosts.remove is the human's or the tester's, deletes the key and the record, and records grant.host.removed
ok 20 - E4, G21: hosts.remove is the human's or the tester's, deletes the key and the record, and records grant.host.removed
---
duration_ms: 49.888318
type: 'test'
...
# Subtest: G21, F1, F2, M4, A22: hosts.remove refuses host-line-left on a guarded hostLineLeft, and ignores look-alikes
ok 21 - G21, F1, F2, M4, A22: hosts.remove refuses host-line-left on a guarded hostLineLeft, and ignores look-alikes
---
duration_ms: 49.738619
type: 'test'
...
# Subtest: hosts.remove refuses host-in-use while a grant record names the host
ok 22 - hosts.remove refuses host-in-use while a grant record names the host
---
duration_ms: 48.695475
type: 'test'
...
# Subtest: the grant writer refuses a body outside section 7's shape
ok 23 - the grant writer refuses a body outside section 7's shape
---
duration_ms: 22.397218
type: 'test'
...
# Subtest: recordEvent refuses reserved-event for a grant.* action or operation
ok 24 - recordEvent refuses reserved-event for a grant.* action or operation
---
duration_ms: 22.146496
type: 'test'
...
1..24
# tests 24
# suites 0
# pass 24
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 1660.480589
@@ -0,0 +1,262 @@
TAP version 13
# Subtest: row 280: an occupied TCP port is attempted, refused, and retried with our sshd
ok 1 - row 280: an occupied TCP port is attempted, refused, and retried with our sshd
---
duration_ms: 84.233313
type: 'test'
...
# Subtest: row 280: every injected picker sample is unprivileged and outside the ephemeral range
ok 2 - row 280: every injected picker sample is unprivileged and outside the ephemeral range
---
duration_ms: 0.339333
type: 'test'
...
# Subtest: G7: an Approve installs the tagged line, logs in with the new key, and writes the key file, record and grant.applied
ok 3 - G7: an Approve installs the tagged line, logs in with the new key, and writes the key file, record and grant.applied
---
duration_ms: 661.10899
type: 'test'
...
# Subtest: G7: a commands change on a live grant updates the record in one transaction and keeps the key and line
ok 4 - G7: a commands change on a live grant updates the record in one transaction and keeps the key and line
---
duration_ms: 550.346061
type: 'test'
...
# Subtest: G8: a failure at install or verify removes the line and leaves no record, key file or reference
ok 5 - G8: a failure at install or verify removes the line and leaves no record, key file or reference
---
duration_ms: 1522.222707
type: 'test'
...
# Subtest: G8: a failed remove adds hostLineLeft and tells the human to sweep
ok 6 - G8: a failed remove adds hostLineLeft and tells the human to sweep
---
duration_ms: 627.20238
type: 'test'
...
# Subtest: G8: a failure in step 5 before commit unlinks the key file, drops the reference and removes the line
ok 7 - G8: a failure in step 5 before commit unlinks the key file, drops the reference and removes the line
---
duration_ms: 635.691634
type: 'test'
...
# Subtest: G8: a store fault in the commit transaction ends host-failed with no record, key file, reference or line
ok 8 - G8: a store fault in the commit transaction ends host-failed with no record, key file, reference or line
---
duration_ms: 672.231136
type: 'test'
...
# Subtest: G8: a failed step 1 check spends the decision and runs nothing remote
ok 9 - G8: a failed step 1 check spends the decision and runs nothing remote
---
duration_ms: 81.813124
type: 'test'
...
# Subtest: G9: a registry, definition or commands change between raise and Approve ends decision-mismatch before any remote step
ok 10 - G9: a registry, definition or commands change between raise and Approve ends decision-mismatch before any remote step
---
duration_ms: 521.064038
type: 'test'
...
# Subtest: G9: an agent no longer a role or no longer declaring host ends with its code, spent
ok 11 - G9: an agent no longer a role or no longer declaring host ends with its code, spent
---
duration_ms: 72.738203
type: 'test'
...
# Subtest: G10: a second start refuses decision-consumed, and an unresolved or agent-resolved decision not-authorized, writing nothing
ok 12 - G10: a second start refuses decision-consumed, and an unresolved or agent-resolved decision not-authorized, writing nothing
---
duration_ms: 497.413394
type: 'test'
...
# Subtest: G15: no event, message or decision holds the private key
ok 13 - G15: no event, message or decision holds the private key
---
duration_ms: 507.641407
type: 'test'
...
# Subtest: G23: a revoke during install ends grant.failed revoked with no key file, no grant and no line
ok 14 - G23: a revoke during install ends grant.failed revoked with no key file, no grant and no line
---
duration_ms: 525.432258
type: 'test'
...
# Subtest: G23 (row 249): an add that writes after an abort's remove leaves hostLineLeft until the sweep
ok 15 - G23 (row 249): an add that writes after an abort's remove leaves hostLineLeft until the sweep
---
duration_ms: 863.594858
type: 'test'
...
# Subtest: G23 (row 249): an add that writes after a timed-out install's remove leaves hostLineLeft until the sweep
ok 16 - G23 (row 249): an add that writes after a timed-out install's remove leaves hostLineLeft until the sweep
---
duration_ms: 863.543575
type: 'test'
...
# Subtest: G23: a revoke recorded after the raise and before the start ends step 1 revoked, and a held slot ends host-busy
ok 17 - G23: a revoke recorded after the raise and before the start ends step 1 revoked, and a held slot ends host-busy
---
duration_ms: 499.460894
type: 'test'
...
# Subtest: G24: names at 64 characters with . and _ give distinct tags of the fixed length
ok 18 - G24: names at 64 characters with . and _ give distinct tags of the fixed length
---
duration_ms: 0.375905
type: 'test'
...
# Subtest: G11: a restart after install removes the line, then ends interrupted with the tag, holding the slot until then
ok 19 - G11: a restart after install removes the line, then ends interrupted with the tag, holding the slot until then
---
duration_ms: 212.63299
type: 'test'
...
# Subtest: G11: a restart after a new key's commit, with the key file written, ends with no key file, record, reference or line
ok 20 - G11: a restart after a new key's commit, with the key file written, ends with no key file, record, reference or line
---
duration_ms: 220.600676
type: 'test'
...
# Subtest: G11: a restart after a commands change's commit leaves the record as it was and asks nothing of the host
ok 21 - G11: a restart after a commands change's commit leaves the record as it was and asks nothing of the host
---
duration_ms: 494.476505
type: 'test'
...
# Subtest: G11 (B2): a restart before step 1, spent or not yet spent, ends interrupted and nothing runs later
ok 22 - G11 (B2): a restart before step 1, spent or not yet spent, ends interrupted and nothing runs later
---
duration_ms: 68.990695
type: 'test'
...
# Subtest: G11: a remote undo that fails ends interrupted with hostLineLeft and the sweep hint
ok 23 - G11: a remote undo that fails ends interrupted with hostLineLeft and the sweep hint
---
duration_ms: 279.634006
type: 'test'
...
# Subtest: G11: a restart leaves a finished grant alone, and the reconcile adds nothing for it
ok 24 - G11: a restart leaves a finished grant alone, and the reconcile adds nothing for it
---
duration_ms: 508.376373
type: 'test'
...
# Subtest: N1 (G27): the start sweep unlinks host.<id> files with no record in loaded businesses only, and refuses a store dir that is not private
ok 25 - N1 (G27): the start sweep unlinks host.<id> files with no record in loaded businesses only, and refuses a store dir that is not private
---
duration_ms: 6.14849
type: 'test'
...
# Subtest: G12: the human's hosts.revoke deletes the record, the key file, the reference and the line, with a closed marker
ok 26 - G12: the human's hosts.revoke deletes the record, the key file, the reference and the line, with a closed marker
---
duration_ms: 652.787646
type: 'test'
...
# Subtest: G12 (N4): a revoke with no record still removes the computed tag's line, with granted false; bad args refuse
ok 27 - G12 (N4): a revoke with no record still removes the computed tag's line, with granted false; bad args refuse
---
duration_ms: 210.268204
type: 'test'
...
# Subtest: G13: a revoke during install aborts the executor, which ends revoked, and the line goes
ok 28 - G13: a revoke during install aborts the executor, which ends revoked, and the line goes
---
duration_ms: 559.328925
type: 'test'
...
# Subtest: G26: the human, the assistant and the tester revoke; the chief and a pm refuse; sweep is the human's or the tester's
ok 29 - G26: the human, the assistant and the tester revoke; the chief and a pm refuse; sweep is the human's or the tester's
---
duration_ms: 501.042445
type: 'test'
...
# Subtest: row 281 T8: a tester hosts.revoke refuses tester-dev-only once bus.tester is off, and a human revoke writes no job records
ok 30 - row 281 T8: a tester hosts.revoke refuses tester-dev-only once bus.tester is off, and a human revoke writes no job records
---
duration_ms: 654.224941
type: 'test'
...
# Subtest: G27: a restart after step 1 sweeps the key file and runs step 3 once the bus is up; status shows the revoke until then
ok 31 - G27: a restart after step 1 sweeps the key file and runs step 3 once the bus is up; status shows the revoke until then
---
duration_ms: 651.50552
type: 'test'
...
# Subtest: G27: after step 2 with the host down, the restart closes the marker with hostLineLeft; a marker without a revoke id is not reopened
ok 32 - G27: after step 2 with the host down, the restart closes the marker with hostLineLeft; a marker without a revoke id is not reopened
---
duration_ms: 931.747122
type: 'test'
...
# Subtest: G27: a key file a revoke could not unlink is reported left and goes at the next start
ok 33 - G27: a key file a revoke could not unlink is reported left and goes at the next start
---
duration_ms: 653.518165
type: 'test'
...
# Subtest: G28: a commands change, then a revoke, then a restart leave no record, key, reference or line
ok 34 - G28: a commands change, then a revoke, then a restart leave no record, key, reference or line
---
duration_ms: 690.305558
type: 'test'
...
# Subtest: G24 (B4): hosts.sweep removes only this business's recorded tags no live grant holds, and records what it left
ok 35 - G24 (B4): hosts.sweep removes only this business's recorded tags no live grant holds, and records what it left
---
duration_ms: 946.174823
type: 'test'
...
# Subtest: G12: the local steps finish before the host step, so a host that hangs leaves the agent no access
ok 36 - G12: the local steps finish before the host step, so a host that hangs leaves the agent no access
---
duration_ms: 680.963024
type: 'test'
...
# Subtest: G23 (X5): a revoke right after the spend reaches the executor's claim, so the grant ends revoked
ok 37 - G23 (X5): a revoke right after the spend reaches the executor's claim, so the grant ends revoked
---
duration_ms: 212.576713
type: 'test'
...
# Subtest: G23 (X5): a revoke that lands as verify returns ends revoked with no record, key file or line
ok 38 - G23 (X5): a revoke that lands as verify returns ends revoked with no record, key file or line
---
duration_ms: 672.317381
type: 'test'
...
# Subtest: G13: a revoke whose host remove fails still drops the record and key, and reports the line left for a sweep
ok 39 - G13: a revoke whose host remove fails still drops the record and key, and reports the line left for a sweep
---
duration_ms: 656.630346
type: 'test'
...
# Subtest: G22: enroll, check, grant, host.run, a commands change the next host.run uses, and a revoke that kills a run in flight
ok 40 - G22: enroll, check, grant, host.run, a commands change the next host.run uses, and a revoke that kills a run in flight
---
duration_ms: 1175.25132
type: 'test'
...
# Subtest: mos-1163: a grant whose agent became a creative role after the raise ends host-creative-role at step 1, spent, with nothing remote
ok 41 - mos-1163: a grant whose agent became a creative role after the raise ends host-creative-role at step 1, spent, with nothing remote
---
duration_ms: 64.37628
type: 'test'
...
# Subtest: sage-1908: once the agent of an applied grant is a creative role, host.run refuses host-creative-role, runs nothing remote and keeps the record
ok 42 - sage-1908: once the agent of an applied grant is a creative role, host.run refuses host-creative-role, runs nothing remote and keeps the record
---
duration_ms: 511.702438
type: 'test'
...
1..42
# tests 42
# suites 0
# pass 42
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 21492.237126
@@ -0,0 +1,70 @@
TAP version 13
# Subtest: G1 (host): only the chief raises a host grant, a grant on any other action refuses, and nothing is stored
ok 1 - G1 (host): only the chief raises a host grant, a grant on any other action refuses, and nothing is stored
---
duration_ms: 30.222106
type: 'test'
...
# Subtest: G1, R4: the grant takes exactly method, agent, host, commands and rotateBy, and an unknown method refuses
ok 2 - G1, R4: the grant takes exactly method, agent, host, commands and rotateBy, and an unknown method refuses
---
duration_ms: 32.837987
type: 'test'
...
# Subtest: row 236 (\#1742): a gitea grant on a broker with no Gitea path refuses gitea-not-configured, and nothing is stored
ok 3 - row 236 (\#1742): a gitea grant on a broker with no Gitea path refuses gitea-not-configured, and nothing is stored
---
duration_ms: 19.718511
type: 'test'
...
# Subtest: G2: an agent whose definition lacks host refuses host-not-declared, and an unknown agent unknown-role
ok 4 - G2: an agent whose definition lacks host refuses host-not-declared, and an unknown agent unknown-role
---
duration_ms: 23.378767
type: 'test'
...
# Subtest: mos-1163: a grant whose agent is a creative role refuses host-creative-role, even when its definition declares host
ok 5 - mos-1163: a grant whose agent is a creative role refuses host-creative-role, even when its definition declares host
---
duration_ms: 18.498151
type: 'test'
...
# Subtest: G3: wildcard, shell, empty and other 210 D6 argv prefixes refuse invalid-request
ok 6 - G3: wildcard, shell, empty and other 210 D6 argv prefixes refuse invalid-request
---
duration_ms: 38.953131
type: 'test'
...
# Subtest: R4 rotateBy (sage-1782): a real calendar day after today UTC, or invalid-request
ok 7 - R4 rotateBy (sage-1782): a real calendar day after today UTC, or invalid-request
---
duration_ms: 29.945428
type: 'test'
...
# Subtest: G19: a grant naming a host that is pending-install refuses host-not-ready, and an unknown host host-unknown
ok 8 - G19: a grant naming a host that is pending-install refuses host-not-ready, and an unknown host host-unknown
---
duration_ms: 24.624288
type: 'test'
...
# Subtest: R4, G5: the raise routes to the human and its event body binds the eight fields with their hashes
ok 9 - R4, G5: the raise routes to the human and its event body binds the eight fields with their hashes
---
duration_ms: 19.595559
type: 'test'
...
# Subtest: G4 (host block): the broker appends the host, each prefix, the rotate date and new key or change
ok 10 - G4 (host block): the broker appends the host, each prefix, the rotate date and new key or change
---
duration_ms: 33.966769
type: 'test'
...
1..10
# tests 10
# suites 0
# pass 10
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 359.892808
@@ -0,0 +1,46 @@
TAP version 13
# Subtest: 3i copy migrates to 3j: every row kept, and sqlite_master gains only the two tables, their keys and the guard
ok 1 - 3i copy migrates to 3j: every row kept, and sqlite_master gains only the two tables, their keys and the guard
---
duration_ms: 76.579993
type: 'test'
...
# Subtest: a 3i→3j step that fails partway leaves the store at 3i with every row and the schema intact
ok 2 - a 3i→3j step that fails partway leaves the store at 3i with every row and the schema intact
---
duration_ms: 91.070005
type: 'test'
...
# Subtest: the 3i engine refuses a migrated store, migrating or not, and leaves it as it was
ok 3 - the 3i engine refuses a migrated store, migrating or not, and leaves it as it was
---
duration_ms: 82.739993
type: 'test'
...
# Subtest: A22b, sage-1703: a session-written grant.* row from before the step survives it, and the grant readers ignore it
ok 4 - A22b, sage-1703: a session-written grant.* row from before the step survives it, and the grant readers ignore it
---
duration_ms: 75.799197
type: 'test'
...
# Subtest: the guard: a grant.* action or operation on action.allowed needs the (NULL, grant) actor
ok 5 - the guard: a grant.* action or operation on action.allowed needs the (NULL, grant) actor
---
duration_ms: 14.297081
type: 'test'
...
# Subtest: hosts: one record per business and host, a ready host has its installer and check, grants need the host
ok 6 - hosts: one record per business and host, a ready host has its installer and check, grants need the host
---
duration_ms: 11.715868
type: 'test'
...
1..6
# tests 6
# suites 0
# pass 6
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 434.285818
@@ -0,0 +1,17 @@
TAP version 13
# organization: {"event":"reload-needs-restart","business":"demo"}
# Subtest: row 298 runtime: human scope approval writes the file and organization history at the supplied revision
ok 1 - row 298 runtime: human scope approval writes the file and organization history at the supplied revision
---
duration_ms: 67.117012
type: 'test'
...
1..1
# tests 1
# suites 0
# pass 1
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 175.452624
@@ -0,0 +1,94 @@
TAP version 13
# Subtest: row 298 (Q3): only the human at the cli reads or sets the scope; agents, the tester, a reader and the Console refuse
ok 1 - row 298 (Q3): only the human at the cli reads or sets the scope; agents, the tester, a reader and the Console refuse
---
duration_ms: 69.719988
type: 'test'
...
# Subtest: row 298 (Q1): organization.set and limits.set refuse a grantScope key, and nothing is written
ok 2 - row 298 (Q1): organization.set and limits.set refuse a grantScope key, and nothing is written
---
duration_ms: 45.413372
type: 'test'
...
# Subtest: row 298 (Q3): the human verb writes the scope and a grant.scope record with the human proof and both sha256
ok 3 - row 298 (Q3): the human verb writes the scope and a grant.scope record with the human proof and both sha256
---
duration_ms: 48.028148
type: 'test'
...
# Subtest: row 298 (Q4): an in-scope Gitea grant is issued with no inbox item, logged with 236 records, and revocable
ok 4 - row 298 (Q4): an in-scope Gitea grant is issued with no inbox item, logged with 236 records, and revocable
---
duration_ms: 149.52373
type: 'test'
...
# Subtest: row 298: an out-of-scope Gitea grant waits for the human, whose Approve still issues it
ok 5 - row 298: an out-of-scope Gitea grant waits for the human, whose Approve still issues it
---
duration_ms: 114.79696
type: 'test'
...
# Subtest: row 298: with no scope, a bad scope or an unreadable file, an in-scope-looking grant waits
ok 6 - row 298: with no scope, a bad scope or an unreadable file, an in-scope-looking grant waits
---
duration_ms: 140.626999
type: 'test'
...
# Subtest: row 298 (Q6): a chief-of-staff instance that is not launch.by never raises in scope
ok 7 - row 298 (Q6): a chief-of-staff instance that is not launch.by never raises in scope
---
duration_ms: 48.396881
type: 'test'
...
# Subtest: row 298 (Q5): a scope narrowed between the raise and the spend ends the grant scope-changed
ok 8 - row 298 (Q5): a scope narrowed between the raise and the spend ends the grant scope-changed
---
duration_ms: 70.178854
type: 'test'
...
# Subtest: row 298 (Q2): an in-scope host grant is spent with no Approve; ls never covers lsblk, nor a scope command extra arguments
ok 9 - row 298 (Q2): an in-scope host grant is spent with no Approve; ls never covers lsblk, nor a scope command extra arguments
---
duration_ms: 75.917567
type: 'test'
...
# Subtest: row 298 (Q5): a host scope narrowed before the spend ends scope-changed
ok 10 - row 298 (Q5): a host scope narrowed before the spend ends scope-changed
---
duration_ms: 68.537493
type: 'test'
...
# Subtest: row 298 Q4: missing scope evidence or a bad scope digest cannot authorize execution
ok 11 - row 298 Q4: missing scope evidence or a bad scope digest cannot authorize execution
---
duration_ms: 89.47811
type: 'test'
...
# Subtest: row 298 T4/T8: an in-scope host grant issues, records and revokes through the existing executor
ok 12 - row 298 T4/T8: an in-scope host grant issues, records and revokes through the existing executor
---
duration_ms: 73.632785
type: 'test'
...
# Subtest: row 298 T6: host enrollment stays open for human Approve even with both methods in scope
ok 13 - row 298 T6: host enrollment stays open for human Approve even with both methods in scope
---
duration_ms: 47.902233
type: 'test'
...
# Subtest: row 298: scope without an organization revision never closes automatically
ok 14 - row 298: scope without an organization revision never closes automatically
---
duration_ms: 48.110426
type: 'test'
...
1..14
# tests 14
# suites 0
# pass 14
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 1178.912887
@@ -0,0 +1,88 @@
TAP version 13
# Subtest: REQ-WAIT-1: the broker hard waits are exactly the list, and match the business vocabulary
ok 1 - REQ-WAIT-1: the broker hard waits are exactly the list, and match the business vocabulary
---
duration_ms: 1.029503
type: 'test'
...
# Subtest: REQ-WAIT-2: a business granting a hard wait at either class is refused; the actions that left are grantable
ok 2 - REQ-WAIT-2: a business granting a hard wait at either class is refused; the actions that left are grantable
---
duration_ms: 19.394396
type: 'test'
...
# Subtest: REQ-DEC-2: every hard wait goes to the human, cited or not, and the arbiter cannot resolve it
ok 3 - REQ-DEC-2: every hard wait goes to the human, cited or not, and the arbiter cannot resolve it
---
duration_ms: 407.134845
type: 'test'
...
# Subtest: REQ-DEC-2: a gated raise citing the current spec goes to the arbiter for its domain; uncited, to the human
ok 4 - REQ-DEC-2: a gated raise citing the current spec goes to the arbiter for its domain; uncited, to the human
---
duration_ms: 168.556027
type: 'test'
...
# Subtest: REQ-DEC-2: an arbiter-approved cited gated decision authorizes the raiser, and the human cannot resolve it
ok 5 - REQ-DEC-2: an arbiter-approved cited gated decision authorizes the raiser, and the human cannot resolve it
---
duration_ms: 48.673479
type: 'test'
...
# Subtest: REQ-DEC-2: a cited merge raised by merge-gate goes to the technical arbiter; a merge raised without the grant routes by citation
ok 6 - REQ-DEC-2: a cited merge raised by merge-gate goes to the technical arbiter; a merge raised without the grant routes by citation
---
duration_ms: 62.672514
type: 'test'
...
# Subtest: REQ-DEC-2: a stale or unconfirmed citation refuses without a decision; an arbiter raising its own goes to the human
ok 7 - REQ-DEC-2: a stale or unconfirmed citation refuses without a decision; an arbiter raising its own goes to the human
---
duration_ms: 95.467172
type: 'test'
...
# Subtest: Q169: the chief of staff's end of the assistant stops every thread run; its own run and another ender's are refused
ok 8 - Q169: the chief of staff's end of the assistant stops every thread run; its own run and another ender's are refused
---
duration_ms: 47.899568
type: 'test'
...
# Subtest: Q169: a revoke of the assistant the chief of staff raises goes to the human, cited or not, and no arbiter resolves it
ok 9 - Q169: a revoke of the assistant the chief of staff raises goes to the human, cited or not, and no arbiter resolves it
---
duration_ms: 113.752003
type: 'test'
...
# Subtest: Q169: another role's cited revoke of the assistant, resolved by an arbiter, is refused
ok 10 - Q169: another role's cited revoke of the assistant, resolved by an arbiter, is refused
---
duration_ms: 61.450425
type: 'test'
...
# Subtest: Q169: a revoke of the assistant citing a decision the human resolved stops its thread run
ok 11 - Q169: a revoke of the assistant citing a decision the human resolved stops its thread run
---
duration_ms: 51.39323
type: 'test'
...
# Subtest: Q169: a cited revoke of a role not in END_PROTECTED still goes to the arbiter, and executes
ok 12 - Q169: a cited revoke of a role not in END_PROTECTED still goes to the arbiter, and executes
---
duration_ms: 50.786581
type: 'test'
...
# Subtest: Q169: a role granted role.revoke at either class still sends a revoke of the assistant to the human
ok 13 - Q169: a role granted role.revoke at either class still sends a revoke of the assistant to the human
---
duration_ms: 65.766422
type: 'test'
...
1..13
# tests 13
# suites 0
# pass 13
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 1270.793796
@@ -0,0 +1,166 @@
TAP version 13
# Subtest: row 280: an occupied TCP port is attempted, refused, and retried with our sshd
ok 1 - row 280: an occupied TCP port is attempted, refused, and retried with our sshd
---
duration_ms: 86.72061
type: 'test'
...
# Subtest: row 280: every injected picker sample is unprivileged and outside the ephemeral range
ok 2 - row 280: every injected picker sample is unprivileged and outside the ephemeral range
---
duration_ms: 0.336822
type: 'test'
...
# Subtest: the executor tests need sshd, ssh, ssh-agent, ssh-add, ssh-keygen and setpriv: a missing one fails, never skips
ok 3 - the executor tests need sshd, ssh, ssh-agent, ssh-add, ssh-keygen and setpriv: a missing one fails, never skips
---
duration_ms: 0.116342
type: 'test'
...
# Subtest: T3: organization.set, limits.set and instances.set refuse hosts, and the writer never runs
ok 4 - T3: organization.set, limits.set and instances.set refuse hosts, and the writer never runs
---
duration_ms: 32.598932
type: 'test'
...
# Subtest: T4: the value check takes one unencrypted ed25519 key and nothing else
ok 5 - T4: the value check takes one unencrypted ed25519 key and nothing else
---
duration_ms: 199.716466
type: 'test'
...
# Subtest: T5 to T8: registry, grant, argv shape and allowlist refusals
ok 6 - T5 to T8: registry, grant, argv shape and allowlist refusals
---
duration_ms: 521.196367
type: 'test'
...
# Subtest: T9: under 1.7 every call needs a decision bound to its host, argv and stdin, spent once
ok 7 - T9: under 1.7 every call needs a decision bound to its host, argv and stdin, spent once
---
duration_ms: 296.725978
type: 'test'
...
# Subtest: T10, T11: argv reaches sudo unchanged after sudo -n --
ok 8 - T10, T11: argv reaches sudo unchanged after sudo -n --
---
duration_ms: 265.557823
type: 'test'
...
# Subtest: T12, T13: exit code passes through, the timeout kills the group, output is capped
ok 9 - T12, T13: exit code passes through, the timeout kills the group, output is capped
---
duration_ms: 1490.959926
type: 'test'
...
# Subtest: T14: a host key not in the registry refuses and nothing runs
ok 10 - T14: a host key not in the registry refuses and nothing runs
---
duration_ms: 178.341381
type: 'test'
...
# Subtest: G18: hosts.check with a wrong pin refuses host-key-mismatch and runs nothing on the host
ok 11 - G18: hosts.check with a wrong pin refuses host-key-mismatch and runs nothing on the host
---
duration_ms: 317.766831
type: 'test'
...
# Subtest: N3: a remote exit 255 that prints the pin refusal text is the command result, and an ssh failure keeps its message
ok 12 - N3: a remote exit 255 that prints the pin refusal text is the command result, and an ssh failure keeps its message
---
duration_ms: 289.494208
type: 'test'
...
# Subtest: T15: ssh reads no config file and no user known_hosts
ok 13 - T15: ssh reads no config file and no user known_hosts
---
duration_ms: 269.54208
type: 'test'
...
# Subtest: T16, T17: key material in output or stdin refuses credential-leak, and no event holds it
ok 14 - T16, T17: key material in output or stdin refuses credential-leak, and no event holds it
---
duration_ms: 601.092393
type: 'test'
...
# Subtest: T18, T19, T20: one call at a time, no key in any argv or env, and nothing left after
ok 15 - T18, T19, T20: one call at a time, no key in any argv or env, and nothing left after
---
duration_ms: 4648.633835
type: 'test'
...
# Subtest: T21: revoke kills the call in flight, and the next call refuses
ok 16 - T21: revoke kills the call in flight, and the next call refuses
---
duration_ms: 295.363959
type: 'test'
...
# Subtest: T22: events carry host, address, user and argv in clear, and sizes and hashes only
ok 17 - T22: events carry host, address, user and argv in clear, and sizes and hashes only
---
duration_ms: 262.958685
type: 'test'
...
# Subtest: T24: no literal gitea and vikunja kind list outside vocabulary.mjs, and the credential use sites are known
ok 18 - T24: no literal gitea and vikunja kind list outside vocabulary.mjs, and the credential use sites are known
---
duration_ms: 17.681448
type: 'test'
...
# Subtest: T25: no role definition lists host.sudo while it is a hard wait
ok 19 - T25: no role definition lists host.sudo while it is a hard wait
---
duration_ms: 0.472588
type: 'test'
...
# Subtest: T27: the bus child dying takes ssh and ssh-agent with it
ok 20 - T27: the bus child dying takes ssh and ssh-agent with it
---
duration_ms: 313.589659
type: 'test'
...
# Subtest: T27: ssh-add -t drops the key from an agent the test keeps alive
ok 21 - T27: ssh-add -t drops the key from an agent the test keeps alive
---
duration_ms: 3554.796534
type: 'test'
...
# Subtest: N2: a hung ssh-add is killed at its limit or on abort, and nothing is left running
ok 22 - N2: a hung ssh-add is killed at its limit or on abort, and nothing is left running
---
duration_ms: 425.147853
type: 'test'
...
# Subtest: T27: the start sweep keeps a live bus dir and kills only a matching live process
ok 23 - T27: the start sweep keeps a live bus dir and kills only a matching live process
---
duration_ms: 26.648991
type: 'test'
...
# Subtest: T27: the bus start sweeps <configDir>/secrets/run before it listens, and a stray entry stops the start
ok 24 - T27: the bus start sweeps <configDir>/secrets/run before it listens, and a stray entry stops the start
---
duration_ms: 49.434378
type: 'test'
...
# Subtest: M3: host.run refuses host-not-granted unless the grant record has an approved, spent host grant
ok 25 - M3: host.run refuses host-not-granted unless the grant record has an approved, spent host grant
---
duration_ms: 139.457427
type: 'test'
...
# Subtest: M3: a host_grants record gives Credentials a store reference at start, and a restart reads its key
ok 26 - M3: a host_grants record gives Credentials a store reference at start, and a restart reads its key
---
duration_ms: 98.437944
type: 'test'
...
1..26
# tests 26
# suites 0
# pass 26
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 14505.572071
@@ -0,0 +1,46 @@
TAP version 13
# Subtest: G16: the writer refuses each user, tag and key the design names, before any key file
ok 1 - G16: the writer refuses each user, tag and key the design names, before any key file
---
duration_ms: 1955.505179
type: 'test'
...
# Subtest: G16: from= comes from the host file, a privileged user skips the group and sudo checks, and the line is exact
ok 2 - G16: from= comes from the host file, a privileged user skips the group and sudo checks, and the line is exact
---
duration_ms: 503.650032
type: 'test'
...
# Subtest: G16: list shows tagged lines only, and add and remove never touch a line outside the tag pattern
ok 3 - G16: list shows tagged lines only, and add and remove never touch a line outside the tag pattern
---
duration_ms: 253.063447
type: 'test'
...
# Subtest: G25: the writer refuses a symlinked dir or user file, a group-writable dir and an odd tmp, and writes 0644
ok 4 - G25: the writer refuses a symlinked dir or user file, a group-writable dir and an odd tmp, and writes 0644
---
duration_ms: 363.332708
type: 'test'
...
# Subtest: G16: mosaic-keys passes the three requests to the writer through sudo and refuses anything else without it
ok 5 - G16: mosaic-keys passes the three requests to the writer through sudo and refuses anything else without it
---
duration_ms: 63.308266
type: 'test'
...
# Subtest: E3: the sudoers line and the sshd drop-in are the design lines and parse
ok 6 - E3: the sudoers line and the sshd drop-in are the design lines and parse
---
duration_ms: 12.536171
type: 'test'
...
1..6
# tests 6
# suites 0
# pass 6
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 3207.523128
@@ -0,0 +1,34 @@
TAP version 13
# Subtest: human proof binds CLI entry, process start and nonce; agents and incomplete ancestry refuse
ok 1 - human proof binds CLI entry, process start and nonce; agents and incomplete ancestry refuse
---
duration_ms: 1.387596
type: 'test'
...
# Subtest: process reader gets own kernel identity without exposing environment values
ok 2 - process reader gets own kernel identity without exposing environment values
---
duration_ms: 0.424386
type: 'test'
...
# Subtest: EACCES ancestor environments skip only markers; commands and registered launches still refuse
ok 3 - EACCES ancestor environments skip only markers; commands and registered launches still refuse
---
duration_ms: 0.548357
type: 'test'
...
# Subtest: real pid 1 remains inspectable when its environment is protected
ok 4 - real pid 1 remains inspectable when its environment is protected
---
duration_ms: 0.222025
type: 'test'
...
1..4
# tests 4
# suites 0
# pass 4
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 54.190651
@@ -0,0 +1,30 @@
TAP version 13
# organization: {"event":"reload-needs-restart","business":"demo"}
# organization: {"event":"reload-needs-restart","business":"demo"}
# Subtest: row 165: instances and instances.set refuse every non-human session but the tester, the chief of staff included, and pass the verified actor
ok 1 - row 165: instances and instances.set refuse every non-human session but the tester, the chief of staff included, and pass the verified actor
---
duration_ms: 33.874028
type: 'test'
...
# Subtest: row 165 runtime: an add and a change reach the organization file with the human as actor; each refusal keeps the bytes and logs nothing
ok 2 - row 165 runtime: an add and a change reach the organization file with the human as actor; each refusal keeps the bytes and logs nothing
---
duration_ms: 119.895174
type: 'test'
...
# Subtest: row 194 T12: agent and reader sessions refuse veto.set; the tester gets add and change but not delete or veto.set; the human passes the hook for each listed verb
ok 3 - row 194 T12: agent and reader sessions refuse veto.set; the tester gets add and change but not delete or veto.set; the human passes the hook for each listed verb
---
duration_ms: 23.508596
type: 'test'
...
1..3
# tests 3
# suites 0
# pass 3
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 258.81023
@@ -0,0 +1,40 @@
TAP version 13
# Subtest: system Python is a resolved root-owned ELF, never a shim or home interpreter
ok 1 - system Python is a resolved root-owned ELF, never a shim or home interpreter
---
duration_ms: 1.934039
type: 'test'
...
# Subtest: real system interpreter is available and safely inspected
ok 2 - real system interpreter is available and safely inspected
---
duration_ms: 18.926583
type: 'test'
...
# Subtest: restart receipt appends actual replacement identity and refuses unsafe files
ok 3 - restart receipt appends actual replacement identity and refuses unsafe files
---
duration_ms: 2.627052
type: 'test'
...
# Subtest: activation gate compares fresh startup receipt to the current interpreter identity
ok 4 - activation gate compares fresh startup receipt to the current interpreter identity
---
duration_ms: 1.278684
type: 'test'
...
# Subtest: non-regular startup receipt refuses promptly without waiting on a FIFO peer
ok 5 - non-regular startup receipt refuses promptly without waiting on a FIFO peer
---
duration_ms: 27.588406
type: 'test'
...
1..5
# tests 5
# suites 0
# pass 5
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 98.09596
@@ -0,0 +1,118 @@
TAP version 13
# Subtest: REQ-DEC-2: a merge-gate raise its arbiter resolved lands through the host op: checkLand answers the facts and a ticket, records nothing, and recordLand spends the decision once
ok 1 - REQ-DEC-2: a merge-gate raise its arbiter resolved lands through the host op: checkLand answers the facts and a ticket, records nothing, and recordLand spends the decision once
---
duration_ms: 36.588915
type: 'test'
...
# Subtest: checkLand refuses on the decision and the review
ok 2 - checkLand refuses on the decision and the review
---
duration_ms: 33.674416
type: 'test'
...
# Subtest: REQ-LAND-1: a gated merge decision refuses not-authorized, cited and approved by the arbiter or uncited and approved by the human
ok 3 - REQ-LAND-1: a gated merge decision refuses not-authorized, cited and approved by the arbiter or uncited and approved by the human
---
duration_ms: 83.354839
type: 'test'
...
# Subtest: REQ-LAND-1: a within-role merge grant refuses not-authorized at the land
ok 4 - REQ-LAND-1: a within-role merge grant refuses not-authorized at the land
---
duration_ms: 22.631904
type: 'test'
...
# Subtest: a cross-role merge that routes to the human, because merge-gate is its own arbiter, lands on the human's CLI answer
ok 5 - a cross-role merge that routes to the human, because merge-gate is its own arbiter, lands on the human's CLI answer
---
duration_ms: 25.496459
type: 'test'
...
# Subtest: a merge option with no first line refuses no-subject, as land-work does
ok 6 - a merge option with no first line refuses no-subject, as land-work does
---
duration_ms: 23.900985
type: 'test'
...
# Subtest: checkLand refuses with land-work's codes past the authority check, and a decision raised for refactor never lands
ok 7 - checkLand refuses with land-work's codes past the authority check, and a decision raised for refactor never lands
---
duration_ms: 60.41266
type: 'test'
...
# Subtest: a ticket outlives the run that asked, and recordLand checks the task again
ok 8 - a ticket outlives the run that asked, and recordLand checks the task again
---
duration_ms: 28.068033
type: 'test'
...
# Subtest: two tickets on one decision: the first recordLand lands, the second refuses decision-consumed and records nothing
ok 9 - two tickets on one decision: the first recordLand lands, the second refuses decision-consumed and records nothing
---
duration_ms: 27.616875
type: 'test'
...
# Subtest: landRefused files the code on the task, tells the role only with notify, and ends the ticket
ok 10 - landRefused files the code on the task, tells the role only with notify, and ends the ticket
---
duration_ms: 27.21367
type: 'test'
...
# Subtest: landHeld is true only for an approved, unspent cross-role merge decision this role raised for a task in this thread
ok 11 - landHeld is true only for an approved, unspent cross-role merge decision this role raised for a task in this thread
---
duration_ms: 26.668436
type: 'test'
...
# Subtest: landHolders lists a merge decision exactly while landHeld is true for its non-thread instance, in decision order
ok 12 - landHolders lists a merge decision exactly while landHeld is true for its non-thread instance, in decision order
---
duration_ms: 37.138953
type: 'test'
...
# Subtest: landHolders leaves out a thread instance's decision, even one raised before its role became one
ok 13 - landHolders leaves out a thread instance's decision, even one raised before its role became one
---
duration_ms: 22.438369
type: 'test'
...
# Subtest: landRelease releases the holding run by land-relaunch once it has asked message.receive and nothing delivered to it is unread, and waiting messages go to the next holder
ok 14 - landRelease releases the holding run by land-relaunch once it has asked message.receive and nothing delivered to it is unread, and waiting messages go to the next holder
---
duration_ms: 34.032962
type: 'test'
...
# Subtest: a landing run started after the resolution passes checkLand for its held decision before any message.receive, and lands it
ok 15 - a landing run started after the resolution passes checkLand for its held decision before any message.receive, and lands it
---
duration_ms: 27.760937
type: 'test'
...
# Subtest: the bus process answers landHolders and landRelease from their own lines, not as credentialStatus
ok 16 - the bus process answers landHolders and landRelease from their own lines, not as credentialStatus
---
duration_ms: 134.74686
type: 'test'
...
# Subtest: usage.begin with a decision id needs it held for the run's instance, usage.end needs the begin, and the limit checks see the landing turn
ok 17 - usage.begin with a decision id needs it held for the run's instance, usage.end needs the begin, and the limit checks see the landing turn
---
duration_ms: 33.789151
type: 'test'
...
# Subtest: no run may write the action.allowed for git.merge.protected itself
ok 18 - no run may write the action.allowed for git.merge.protected itself
---
duration_ms: 16.411938
type: 'test'
...
1..18
# tests 18
# suites 0
# pass 18
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 789.39976
@@ -0,0 +1,58 @@
TAP version 13
# Subtest: a message to a stopped role sends launch.by one notice, and the result says so
ok 1 - a message to a stopped role sends launch.by one notice, and the result says so
---
duration_ms: 25.835391
type: 'test'
...
# Subtest: a message to a role outside launch.instances says so in its result and in the notice
ok 2 - a message to a role outside launch.instances says so in its result and in the notice
---
duration_ms: 18.604298
type: 'test'
...
# Subtest: a message to a running role sends no notice and its result is unchanged
ok 3 - a message to a running role sends no notice and its result is unchanged
---
duration_ms: 13.025474
type: 'test'
...
# Subtest: a re-route at a claim, a release and claim, and a broker restart send no second notice
ok 4 - a re-route at a claim, a release and claim, and a broker restart send no second notice
---
duration_ms: 19.762766
type: 'test'
...
# Subtest: a run launched but not yet claimed counts as no holder
ok 5 - a run launched but not yet claimed counts as no holder
---
duration_ms: 12.46569
type: 'test'
...
# Subtest: no notice for a message to launch.by, from it, a refused one from a tester, to the human, or in a thread to a thread instance
ok 6 - no notice for a message to launch.by, from it, a refused one from a tester, to the human, or in a thread to a thread instance
---
duration_ms: 25.170526
type: 'test'
...
# Subtest: a business with no launch block tells nobody and says there is no launcher
ok 7 - a business with no launch block tells nobody and says there is no launcher
---
duration_ms: 10.740537
type: 'test'
...
# Subtest: the notice sender stays internal: no role is named _bus and no caller can send as it or to it
ok 8 - the notice sender stays internal: no role is named _bus and no caller can send as it or to it
---
duration_ms: 30.515636
type: 'test'
...
1..8
# tests 8
# suites 0
# pass 8
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 238.838053
@@ -0,0 +1,28 @@
TAP version 13
# Subtest: row 302 a run threadIdle released answers launcher-released on receive, state, read and send, logs each, and claims nothing again
ok 1 - row 302 a run threadIdle released answers launcher-released on receive, state, read and send, logs each, and claims nothing again
---
duration_ms: 42.884687
type: 'test'
...
# Subtest: row 302 with a run launcher-released, a run that lost its claim another way still answers not-holder
ok 2 - row 302 with a run launcher-released, a run that lost its claim another way still answers not-holder
---
duration_ms: 30.416458
type: 'test'
...
# Subtest: row 302 a run landRelease released answers launcher-released, and claims nothing again
ok 3 - row 302 a run landRelease released answers launcher-released, and claims nothing again
---
duration_ms: 31.926716
type: 'test'
...
1..3
# tests 3
# suites 0
# pass 3
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 187.778823
@@ -0,0 +1,46 @@
TAP version 13
# Subtest: C2-03a library.sync: every agent, the tester and a reader are refused before the adapter runs
ok 1 - C2-03a library.sync: every agent, the tester and a reader are refused before the adapter runs
---
duration_ms: 18.809299
type: 'test'
...
# Subtest: C2-03a library.sync: the human fetches, accept passes through, and a held sync is a recorded refusal
ok 2 - C2-03a library.sync: the human fetches, accept passes through, and a held sync is a recorded refusal
---
duration_ms: 16.128008
type: 'test'
...
# Subtest: C2-03a library.sync: a LibraryError keeps its code and a host without sync is not configured
ok 3 - C2-03a library.sync: a LibraryError keeps its code and a host without sync is not configured
---
duration_ms: 22.831234
type: 'test'
...
# Subtest: C2-03a runtime: a librarySync from a boot config, with no function, is refused
ok 4 - C2-03a runtime: a librarySync from a boot config, with no function, is refused
---
duration_ms: 1.164045
type: 'test'
...
# Subtest: C2-03a runtime: the timer syncs each entry with a user at start and on each tick, logs codes only, and stops on close
ok 5 - C2-03a runtime: the timer syncs each entry with a user at start and on each tick, logs codes only, and stops on close
---
duration_ms: 539.769997
type: 'test'
...
# Subtest: row 254 human-cli: library.sync outlasts the 5 s client default, and library.status does not
ok 6 - row 254 human-cli: library.sync outlasts the 5 s client default, and library.status does not
---
duration_ms: 6077.612028
type: 'test'
...
1..6
# tests 6
# suites 0
# pass 6
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 6793.098387
@@ -0,0 +1,46 @@
TAP version 13
# Subtest: C2-04 M4: both verbs reject every agent before arguments or adapter access
ok 1 - C2-04 M4: both verbs reject every agent before arguments or adapter access
---
duration_ms: 34.532465
type: 'test'
...
# Subtest: C2-04 bus: human reads validate keys and return adapter results without path leakage
ok 2 - C2-04 bus: human reads validate keys and return adapter results without path leakage
---
duration_ms: 13.9518
type: 'test'
...
# Subtest: C2-04 socket: each async library verb resolves its result rather than serializing {}
ok 3 - C2-04 socket: each async library verb resolves its result rather than serializing {}
---
duration_ms: 71.717328
type: 'test'
...
# Subtest: C2-04 runtime: protectedRoots skips library but retains real code-root credential protection
ok 4 - C2-04 runtime: protectedRoots skips library but retains real code-root credential protection
---
duration_ms: 102.755164
type: 'test'
...
# Subtest: C2-04 runtime: unsafe existing mirror refuses boot and never publishes a socket
ok 5 - C2-04 runtime: unsafe existing mirror refuses boot and never publishes a socket
---
duration_ms: 23.522113
type: 'test'
...
# Subtest: C2-04 runtime: real library adapters reach the socket and lock waits leave other bus reads responsive
ok 6 - C2-04 runtime: real library adapters reach the socket and lock waits leave other bus reads responsive
---
duration_ms: 205.694746
type: 'test'
...
1..6
# tests 6
# suites 0
# pass 6
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 563.805395
@@ -0,0 +1,59 @@
TAP version 13
# organization: {"event":"reload-needs-restart","business":"demo"}
# Subtest: T20 fire: a revoke that fails stops the fire with the file unchanged; one that succeeds revokes, keeps the directory and names the services outside the store
ok 1 - T20 fire: a revoke that fails stops the fire with the file unchanged; one that succeeds revokes, keeps the directory and names the services outside the store
---
duration_ms: 88.783422
type: 'test'
...
# Subtest: T20 fire: an instance already delisted still has its tokens revoked and the file is left alone
ok 2 - T20 fire: an instance already delisted still has its tokens revoked and the file is left alone
---
duration_ms: 50.606633
type: 'test'
...
# Subtest: T20 fire: with no entry in the running bus, a token on disk refuses and an empty store goes on
ok 3 - T20 fire: with no entry in the running bus, a token on disk refuses and an empty store goes on
---
duration_ms: 54.539356
type: 'test'
...
# Subtest: T20 delete: a revoke that fails keeps the file; one that succeeds clears the store, deletes, and names the tracker bot
ok 4 - T20 delete: a revoke that fails keeps the file; one that succeeds clears the store, deletes, and names the tracker bot
---
duration_ms: 69.390859
type: 'test'
...
# Subtest: T20 delete: with no entry in the running bus, a token file is cleared and the delete goes on; a file reference refuses
ok 5 - T20 delete: with no entry in the running bus, a token file is cleared and the delete goes on; a file reference refuses
---
duration_ms: 53.604096
type: 'test'
...
# Subtest: T21 delete: a write between the raise and the take makes the delete refuse revision-conflict before it revokes anything
ok 6 - T21 delete: a write between the raise and the take makes the delete refuse revision-conflict before it revokes anything
---
duration_ms: 54.846039
type: 'test'
...
# Subtest: row 281 T1 fire: a host.<id> or granted gitea file in the store refuses step B credential-revoke-failed, file unchanged
ok 7 - row 281 T1 fire: a host.<id> or granted gitea file in the store refuses step B credential-revoke-failed, file unchanged
---
duration_ms: 54.13066
type: 'test'
...
# Subtest: row 281 T1 start: a host grant record whose key file is gone starts and reads not-issued
ok 8 - row 281 T1 start: a host grant record whose key file is gone starts and reads not-issued
---
duration_ms: 52.43513
type: 'test'
...
1..8
# tests 8
# suites 0
# pass 8
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 598.673464
@@ -0,0 +1,88 @@
TAP version 13
# Subtest: row 194 T12: agent and reader sessions refuse the lifecycle verbs before any effect; the tester gets launch, end and the request read, never regenerate
ok 1 - row 194 T12: agent and reader sessions refuse the lifecycle verbs before any effect; the tester gets launch, end and the request read, never regenerate
---
duration_ms: 36.805553
type: 'test'
...
# Subtest: row 194 V2 and V4 at the verb: the request is open, by the human, with a human.input; thread, retired, unknown and revoked refuse with no event
ok 2 - row 194 V2 and V4 at the verb: the request is open, by the human, with a human.input; thread, retired, unknown and revoked refuse with no event
---
duration_ms: 20.97007
type: 'test'
...
# Subtest: row 194 D1.1 take: a request is taken once, closes once, and lifecycleRequests lists only what is not closed
ok 3 - row 194 D1.1 take: a request is taken once, closes once, and lifecycleRequests lists only what is not closed
---
duration_ms: 15.743079
type: 'test'
...
# Subtest: row 194 D1.1 take: a launch.revoke after the request closes it launch-revoked, and a request past 60 s closes request-expired
ok 4 - row 194 D1.1 take: a launch.revoke after the request closes it launch-revoked, and a request past 60 s closes request-expired
---
duration_ms: 17.83732
type: 'test'
...
# Subtest: row 194 T15 (bus): while halted, launch and regenerate refuse processing-halted at the verb and at the take, hire and fire refuse, terminate goes; an unreadable switch refuses with its code
ok 5 - row 194 T15 (bus): while halted, launch and regenerate refuse processing-halted at the verb and at the take, hire and fire refuse, terminate goes; an unreadable switch refuses with its code
---
duration_ms: 27.33388
type: 'test'
...
# Subtest: row 194 T12a: the tester launches and ends on its own business with actor tester; bus.tester off in the file refuses the call and the take tester-off
ok 6 - row 194 T12a: the tester launches and ends on its own business with actor tester; bus.tester off in the file refuses the call and the take tester-off
---
duration_ms: 23.619105
type: 'test'
...
# Subtest: row 194 V3 terminate: claims revoked, open requests cancelled, bound runs named, taken requests listed; nothing at all answers not-held
ok 7 - row 194 V3 terminate: claims revoked, open requests cancelled, bound runs named, taken requests listed; nothing at all answers not-held
---
duration_ms: 26.637455
type: 'test'
...
# Subtest: row 194 V3 terminate of a thread instance: the human ends every thread, the tester only its own
ok 8 - row 194 V3 terminate of a thread instance: the human ends every thread, the tester only its own
---
duration_ms: 19.564192
type: 'test'
...
# Subtest: row 194 T6 V5 order at the verb: the writer's named refusals, then instance-running, instance-starting, the last-listed refusal and the revision
ok 9 - row 194 T6 V5 order at the verb: the writer's named refusals, then instance-running, instance-starting, the last-listed refusal and the revision
---
duration_ms: 29.26284
type: 'test'
...
# Subtest: row 194 V5: an open launch past its 60 s is not starting, as it can only close request-expired
ok 10 - row 194 V5: an open launch past its 60 s is not starting, as it can only close request-expired
---
duration_ms: 12.09276
type: 'test'
...
# Subtest: row 194 V5 after the take: lifecycleDelete re-checks running and starting, then commits through the writer with the human as actor
ok 11 - row 194 V5 after the take: lifecycleDelete re-checks running and starting, then commits through the writer with the human as actor
---
duration_ms: 20.822909
type: 'test'
...
# Subtest: row 194 V5 retry: a retired name deletes again only after workspace-rename-failed, and that request commits nothing
ok 12 - row 194 V5 retry: a retired name deletes again only after workspace-rename-failed, and that request commits nothing
---
duration_ms: 18.478586
type: 'test'
...
# Subtest: row 194 V5 runtime: a delete request, the take and lifecycleDelete commit the file with retired, log the human and reload so the name no longer binds
ok 13 - row 194 V5 runtime: a delete request, the take and lifecycleDelete commit the file with retired, log the human and reload so the name no longer binds
---
duration_ms: 128.114406
type: 'test'
...
1..13
# tests 13
# suites 0
# pass 13
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 475.014609
@@ -0,0 +1,106 @@
TAP version 13
# Subtest: REQ-LIMIT-3 limitLeaves finds every limit object and skips the agent numbers
ok 1 - REQ-LIMIT-3 limitLeaves finds every limit object and skips the agent numbers
---
duration_ms: 1.279942
type: 'test'
...
# Subtest: REQ-LIMIT-3 limitLeaves takes token limits at schema depth only, whatever their names
ok 2 - REQ-LIMIT-3 limitLeaves takes token limits at schema depth only, whatever their names
---
duration_ms: 0.188287
type: 'test'
...
# Subtest: REQ-LIMIT-3 with no check switched on a launch is allowed, a turn never stops, and every limit is not enforced
ok 3 - REQ-LIMIT-3 with no check switched on a launch is allowed, a turn never stops, and every limit is not enforced
---
duration_ms: 13.449709
type: 'test'
...
# Subtest: REQ-LIMIT-3 a fixture check that refuses refuses the launch and stops the turn, logged with the limit and the count
ok 4 - REQ-LIMIT-3 a fixture check that refuses refuses the launch and stops the turn, logged with the limit and the count
---
duration_ms: 13.36592
type: 'test'
...
# Subtest: REQ-LIMIT-3 a report that omits a limit shows it not enforced; a counted entry and a reason come through
ok 5 - REQ-LIMIT-3 a report that omits a limit shows it not enforced; a counted entry and a reason come through
---
duration_ms: 11.995207
type: 'test'
...
# Subtest: REQ-LIMIT-4 each check gets the business, a copy of the limits, the subject, the records and the time
ok 6 - REQ-LIMIT-4 each check gets the business, a copy of the limits, the subject, the records and the time
---
duration_ms: 16.847287
type: 'test'
...
# Subtest: REQ-LIMIT-4 fail closed: a throw refuses, stops and fails the report, naming the check and the code
ok 7 - REQ-LIMIT-4 fail closed: a throw refuses, stops and fails the report, naming the check and the code
---
duration_ms: 12.592307
type: 'test'
...
# Subtest: REQ-LIMIT-4 fail closed: a malformed answer, a promise, a rejected promise, a non-boolean or a bad hit is malformed-answer
ok 8 - REQ-LIMIT-4 fail closed: a malformed answer, a promise, a rejected promise, a non-boolean or a bad hit is malformed-answer
---
duration_ms: 14.569999
type: 'test'
...
# Subtest: REQ-LIMIT-4 fail closed: a check switched on but not loaded refuses, stops and fails every limit as not-loaded
ok 9 - REQ-LIMIT-4 fail closed: a check switched on but not loaded refuses, stops and fails every limit as not-loaded
---
duration_ms: 10.917135
type: 'test'
...
# Subtest: REQ-LIMIT-4 state(), never-loaded case: before any load the report shows not enforced, or not-loaded for a switched-on check
ok 10 - REQ-LIMIT-4 state(), never-loaded case: before any load the report shows not enforced, or not-loaded for a switched-on check
---
duration_ms: 9.490498
type: 'test'
...
# Subtest: REQ-LIMIT-4 state(), first-load-refused case: a check refused on its first load is not-loaded in mayLaunch, mustStop and report
ok 11 - REQ-LIMIT-4 state(), first-load-refused case: a check refused on its first load is not-loaded in mayLaunch, mustStop and report
---
duration_ms: 10.415123
type: 'test'
...
# Subtest: REQ-LIMIT-4 fail closed: an unreadable organization file refuses and stops with check null; the report throws
ok 12 - REQ-LIMIT-4 fail closed: an unreadable organization file refuses and stops with check null; the report throws
---
duration_ms: 10.061642
type: 'test'
...
# Subtest: REQ-LIMIT-4 fail closed: unreadable records refuse and stop with check null and fail the report
ok 13 - REQ-LIMIT-4 fail closed: unreadable records refuse and stop with check null and fail the report
---
duration_ms: 0.432421
type: 'test'
...
# Subtest: REQ-LIMIT-3 the shipped token-limit, through the real loader, counts known records only since the limit was set
ok 14 - REQ-LIMIT-3 the shipped token-limit, through the real loader, counts known records only since the limit was set
---
duration_ms: 22.846723
type: 'test'
...
# Subtest: REQ-LIMIT-3 a token limit for a provider named limit is counted and refuses, beside an agent limit of the same name
ok 15 - REQ-LIMIT-3 a token limit for a provider named limit is counted and refuses, beside an agent limit of the same name
---
duration_ms: 9.658881
type: 'test'
...
# Subtest: REQ-LIMIT-3 core reaches limit checks only through the plug-in loader
ok 16 - REQ-LIMIT-3 core reaches limit checks only through the plug-in loader
---
duration_ms: 1.016701
type: 'test'
...
1..16
# tests 16
# suites 0
# pass 16
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 231.276327
@@ -0,0 +1,40 @@
TAP version 13
# Subtest: REQ-LIMIT-4 a role run at its limit stops at the end of its turn: RESULT and read land first, the claim is revoked by limit-check
ok 1 - REQ-LIMIT-4 a role run at its limit stops at the end of its turn: RESULT and read land first, the claim is revoked by limit-check
---
duration_ms: 32.150647
type: 'test'
...
# Subtest: REQ-LIMIT-4 the stop also lands on state; a run with no stop ends without a limit
ok 2 - REQ-LIMIT-4 the stop also lands on state; a run with no stop ends without a limit
---
duration_ms: 32.281556
type: 'test'
...
# Subtest: REQ-LIMIT-4 fail closed: a mustStop throw or a malformed answer stops the run, naming the bus and the code
ok 3 - REQ-LIMIT-4 fail closed: a mustStop throw or a malformed answer stops the run, naming the bus and the code
---
duration_ms: 79.939409
type: 'test'
...
# Subtest: REQ-LIMIT-4 a thread run at its limit is released with the reason, and its end record names the limit
ok 4 - REQ-LIMIT-4 a thread run at its limit is released with the reason, and its end record names the limit
---
duration_ms: 20.75732
type: 'test'
...
# Subtest: REQ-LIMIT-4 a broker with no limit checks configured never stops a run
ok 5 - REQ-LIMIT-4 a broker with no limit checks configured never stops a run
---
duration_ms: 14.916524
type: 'test'
...
1..5
# tests 5
# suites 0
# pass 5
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 255.509779
@@ -0,0 +1,46 @@
TAP version 13
# limits: {"event":"limit-reached","business":"demo","check":"token-limit","export":"mayLaunch","subject":{"instance":"coder","provider":"zai","model":"glm-5.3-flash","account":null},"path":["tokens","instances","coder"],"limit":0,"count":0,"unknownTurns":0}
# organization: {"event":"reload-needs-restart","business":"demo"}
# usage: {"event":"usage-unknown","business":"demo","run":"run1","instance":"coder","turn":"e38fa3e5-3498-45d2-919f-18d1646e4b6a","source":"@none","code":"baseline-unknown"}
# limits: {"event":"limit-reached","business":"demo","check":"token-limit","export":"mustStop","subject":{"instance":"coder","provider":"zai","model":"glm-5.3-flash","account":null},"path":["tokens","instances","coder"],"limit":0,"count":0,"unknownTurns":1}
# usage: {"event":"usage-unknown","business":"demo","run":"run1","instance":"coder","turn":"fcf2b115-abb0-48d8-bf7a-73d6d4899c9d","source":"@none","code":"baseline-unknown"}
# Subtest: REQ-LIMIT-3 REQ-LIMIT-4 runtime: limits carries the token count, mayLaunch refuses at the limit, a reset moves since
# organization: {"event":"reload-needs-restart","business":"demo"}
ok 1 - REQ-LIMIT-3 REQ-LIMIT-4 runtime: limits carries the token count, mayLaunch refuses at the limit, a reset moves since
---
duration_ms: 137.280622
type: 'test'
...
# Subtest: REQ-LIMIT-3 runtime: with no limit check switched on, the limit shows not enforced and every launch is allowed
ok 2 - REQ-LIMIT-3 runtime: with no limit check switched on, the limit shows not enforced and every launch is allowed
---
duration_ms: 35.670316
type: 'test'
...
# Subtest: REQ-LIMIT-4 runtime: the broker asks the shipped token-limit after a turn, and the run at its limit stops on its next receive
ok 3 - REQ-LIMIT-4 runtime: the broker asks the shipped token-limit after a turn, and the run at its limit stops on its next receive
---
duration_ms: 48.214458
type: 'test'
...
# Subtest: REQ-LIMIT-4 runtime: with no usage source a turn is unknown, counts zero and stops nothing under a limit of 1
ok 4 - REQ-LIMIT-4 runtime: with no usage source a turn is unknown, counts zero and stops nothing under a limit of 1
---
duration_ms: 47.345605
type: 'test'
...
# Subtest: REQ-LIMIT-3 runtime: switching a limit check on with plugins.set loads it without a launch or a turn
ok 5 - REQ-LIMIT-3 runtime: switching a limit check on with plugins.set loads it without a launch or a turn
---
duration_ms: 65.017203
type: 'test'
...
1..5
# tests 5
# suites 0
# pass 5
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 375.410031
@@ -0,0 +1,30 @@
TAP version 13
# organization: {"event":"reload-needs-restart","business":"demo"}
# organization: {"event":"reload-needs-restart","business":"demo"}
# Subtest: limits binds actor from human proof and rejects role, reader, a tester set and forged actor
ok 1 - limits binds actor from human proof and rejects role, reader, a tester set and forged actor
---
duration_ms: 20.917794
type: 'test'
...
# Subtest: runtime wires verified human settings to the actual shared file writer and actor receipt
ok 2 - runtime wires verified human settings to the actual shared file writer and actor receipt
---
duration_ms: 101.845678
type: 'test'
...
# Subtest: uncertain organization receipts leave bus startup and reads alone but refuse writes until reconciled
ok 3 - uncertain organization receipts leave bus startup and reads alone but refuse writes until reconciled
---
duration_ms: 53.765707
type: 'test'
...
1..3
# tests 3
# suites 0
# pass 3
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 251.817766
@@ -0,0 +1,28 @@
TAP version 13
# Subtest: within-role sends cite an open gated launch decision without spending it or naming it in grants
ok 1 - within-role sends cite an open gated launch decision without spending it or naming it in grants
---
duration_ms: 26.66
type: 'test'
...
# Subtest: missing and foreign-business citations refuse and roll back message and grant
ok 2 - missing and foreign-business citations refuse and roll back message and grant
---
duration_ms: 17.748971
type: 'test'
...
# Subtest: cross-role sends still need a matching resolved decision and consume it once
ok 3 - cross-role sends still need a matching resolved decision and consume it once
---
duration_ms: 23.512535
type: 'test'
...
1..3
# tests 3
# suites 0
# pass 3
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 141.955036
@@ -0,0 +1,46 @@
TAP version 13
# Subtest: trail on a hidden message id answers exactly as on an unknown id, for the owner, a reader and the tester
ok 1 - trail on a hidden message id answers exactly as on an unknown id, for the owner, a reader and the tester
---
duration_ms: 30.46557
type: 'test'
...
# Subtest: replies on a hidden message id answers exactly as on an unknown id, for the owner, a reader and the tester
ok 2 - replies on a hidden message id answers exactly as on an unknown id, for the owner, a reader and the tester
---
duration_ms: 23.470221
type: 'test'
...
# Subtest: trail on a decision keeps the decision and drops the user thread messages, their deliveries and their events
ok 3 - trail on a decision keeps the decision and drops the user thread messages, their deliveries and their events
---
duration_ms: 34.362181
type: 'test'
...
# Subtest: replies leaves out other users thread messages and still fills a page
ok 4 - replies leaves out other users thread messages and still fills a page
---
duration_ms: 177.88772
type: 'test'
...
# Subtest: messages in the business human and tester threads are not hidden (row 177 unchanged)
ok 5 - messages in the business human and tester threads are not hidden (row 177 unchanged)
---
duration_ms: 36.082327
type: 'test'
...
# Subtest: governance pin: the owner sees decisions, inbox entries, claims, tasks and project files, but not the user messages
ok 6 - governance pin: the owner sees decisions, inbox entries, claims, tasks and project files, but not the user messages
---
duration_ms: 99.237636
type: 'test'
...
1..6
# tests 6
# suites 0
# pass 6
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 476.200395
@@ -0,0 +1,34 @@
TAP version 13
# Subtest: messages pages all human messages newest first without writes; read state is history
ok 1 - messages pages all human messages newest first without writes; read state is history
---
duration_ms: 310.007058
type: 'test'
...
# Subtest: messages refuses role callers, invalid paging and cursors outside this human feed
ok 2 - messages refuses role callers, invalid paging and cursors outside this human feed
---
duration_ms: 25.833777
type: 'test'
...
# Subtest: views messages passes only its paging arguments through
ok 3 - views messages passes only its paging arguments through
---
duration_ms: 0.251497
type: 'test'
...
# Subtest: messages isolates businesses even with a valid foreign cursor
ok 4 - messages isolates businesses even with a valid foreign cursor
---
duration_ms: 17.936793
type: 'test'
...
1..4
# tests 4
# suites 0
# pass 4
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 465.514975
@@ -0,0 +1,88 @@
TAP version 13
# Subtest: the assistant sends to the user and to the chief of staff only
ok 1 - the assistant sends to the user and to the chief of staff only
---
duration_ms: 34.79863
type: 'test'
...
# Subtest: an assistant send to any other role, or to the tester, is refused and logged
ok 2 - an assistant send to any other role, or to the tester, is refused and logged
---
duration_ms: 30.495085
type: 'test'
...
# Subtest: only the user and the chief of staff may send to the assistant; the tester is refused by default
ok 3 - only the user and the chief of staff may send to the assistant; the tester is refused by default
---
duration_ms: 32.853869
type: 'test'
...
# Subtest: REQ-ASSIST-2 REQ-THREAD-1 thread.send to an instance that does not hear from the user is refused and stores nothing
ok 4 - REQ-ASSIST-2 REQ-THREAD-1 thread.send to an instance that does not hear from the user is refused and stores nothing
---
duration_ms: 31.535305
type: 'test'
...
# Subtest: a sender-side list alone refuses a send to a role that has no list
ok 5 - a sender-side list alone refuses a send to a role that has no list
---
duration_ms: 28.749226
type: 'test'
...
# Subtest: a target-side list alone refuses a send from a role that has no list
ok 6 - a target-side list alone refuses a send from a role that has no list
---
duration_ms: 28.733572
type: 'test'
...
# Subtest: the sender list is checked before the target list
ok 7 - the sender list is checked before the target list
---
duration_ms: 25.884246
type: 'test'
...
# Subtest: roles without the field behave exactly as before
ok 8 - roles without the field behave exactly as before
---
duration_ms: 37.134168
type: 'test'
...
# Subtest: a business with no role definitions at all is unlimited
ok 9 - a business with no role definitions at all is unlimited
---
duration_ms: 33.602113
type: 'test'
...
# Subtest: a malformed messaging field refuses at boot
ok 10 - a malformed messaging field refuses at boot
---
duration_ms: 12.275319
type: 'test'
...
# Subtest: the assistant's review.request to a reviewer is refused and logged, even with an approved decision
ok 11 - the assistant's review.request to a reviewer is refused and logged, even with an approved decision
---
duration_ms: 29.91565
type: 'test'
...
# Subtest: a review.verdict to the assistant from a role outside its receiveFrom is refused and logged
ok 12 - a review.verdict to the assistant from a role outside its receiveFrom is refused and logged
---
duration_ms: 33.693279
type: 'test'
...
# Subtest: review requests and verdicts between roles without the field are unchanged
ok 13 - review requests and verdicts between roles without the field are unchanged
---
duration_ms: 28.006421
type: 'test'
...
1..13
# tests 13
# suites 0
# pass 13
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 473.157104
@@ -0,0 +1,16 @@
TAP version 13
# Subtest: 3f copy migrates to 3g preserving every old column/row, with an empty instance_names and null to_name
ok 1 - 3f copy migrates to 3g preserving every old column/row, with an empty instance_names and null to_name
---
duration_ms: 84.065877
type: 'test'
...
1..1
# tests 1
# suites 0
# pass 1
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 154.030914
@@ -0,0 +1,52 @@
TAP version 13
# Subtest: REQ-MSG-2: the chief of staff names an instance under its within-role grant, and the write is logged
ok 1 - REQ-MSG-2: the chief of staff names an instance under its within-role grant, and the write is logged
---
duration_ms: 28.06074
type: 'test'
...
# Subtest: REQ-MSG-2: the human names an instance through the CLI
ok 2 - REQ-MSG-2: the human names an instance through the CLI
---
duration_ms: 16.255956
type: 'test'
...
# Subtest: REQ-MSG-2: a role without the grant, or holding it cross-role, is refused not-authorized
ok 3 - REQ-MSG-2: a role without the grant, or holding it cross-role, is refused not-authorized
---
duration_ms: 19.785067
type: 'test'
...
# Subtest: REQ-MSG-2: a name is unique in the business and is never an instance key or a role name
ok 4 - REQ-MSG-2: a name is unique in the business and is never an instance key or a role name
---
duration_ms: 33.047298
type: 'test'
...
# Subtest: REQ-MSG-2: a send by name reaches the instance and records both; a send by instance key is unchanged
ok 5 - REQ-MSG-2: a send by name reaches the instance and records both; a send by instance key is unchanged
---
duration_ms: 28.181095
type: 'test'
...
# Subtest: REQ-MSG-2: an instance key beats a name that equals it, as when a later instance takes the key
ok 6 - REQ-MSG-2: an instance key beats a name that equals it, as when a later instance takes the key
---
duration_ms: 18.813022
type: 'test'
...
# Subtest: REQ-MSG-2: a role name beats a name that equals it, as when a later definition takes the word (sage-0590)
ok 7 - REQ-MSG-2: a role name beats a name that equals it, as when a later definition takes the word (sage-0590)
---
duration_ms: 19.505504
type: 'test'
...
1..7
# tests 7
# suites 0
# pass 7
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 237.328149
@@ -0,0 +1,34 @@
TAP version 13
# Subtest: proof receives actual peer, cap traffic never invokes helper and transient cap disconnects
ok 1 - proof receives actual peer, cap traffic never invokes helper and transient cap disconnects
---
duration_ms: 5.859437
type: 'test'
...
# Subtest: proof helper error and disconnect during verification never dispatch or bind
ok 2 - proof helper error and disconnect during verification never dispatch or bind
---
duration_ms: 1.339241
type: 'test'
...
# Subtest: Client receives explicit proof refusal codes without dispatch, not outcome-unknown
ok 3 - Client receives explicit proof refusal codes without dispatch, not outcome-unknown
---
duration_ms: 36.986006
type: 'test'
...
# Subtest: asynchronous proof calls release their transient session on success, failure and timeout
ok 4 - asynchronous proof calls release their transient session on success, failure and timeout
---
duration_ms: 28.183558
type: 'test'
...
1..4
# tests 4
# suites 0
# pass 4
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 124.581919
@@ -0,0 +1,40 @@
TAP version 13
# Subtest: T2 eight proof callers and a racing copier bind the exact accepted socket, which survives helper exit
ok 1 - T2 eight proof callers and a racing copier bind the exact accepted socket, which survives helper exit
---
duration_ms: 231.080155
type: 'test'
...
# Subtest: helper output and failures fail closed including unsafe gid
ok 2 - helper output and failures fail closed including unsafe gid
---
duration_ms: 1.571377
type: 'test'
...
# Subtest: helper timeout, capacity and shutdown refuse without leaving children
ok 3 - helper timeout, capacity and shutdown refuse without leaving children
---
duration_ms: 25.605223
type: 'test'
...
# Subtest: missing or non-regular peer helper refuses at construction before opening the bus
ok 4 - missing or non-regular peer helper refuses at construction before opening the bus
---
duration_ms: 0.229484
type: 'test'
...
# Subtest: shutdown waits for killed helper close before returning
ok 5 - shutdown waits for killed helper close before returning
---
duration_ms: 4.636361
type: 'test'
...
1..5
# tests 5
# suites 0
# pass 5
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 339.234434
@@ -0,0 +1,32 @@
TAP version 13
# organization: {"event":"reload-needs-restart","business":"demo"}
# organization: {"event":"reload-needs-restart","business":"demo"}
# organization: {"event":"reload-needs-restart","business":"demo"}
# organization: {"event":"reload-needs-restart","business":"demo"}
# Subtest: plugins and plugins.set refuse every non-human session and a forged actor, and pass only the patch with the verified actor
ok 1 - plugins and plugins.set refuse every non-human session and a forged actor, and pass only the patch with the verified actor
---
duration_ms: 22.612905
type: 'test'
...
# Subtest: runtime: the switch changes the organization file, the receipt carries the actor, and a bad shape, an unknown module and a stale revision are refused with nothing written
ok 2 - runtime: the switch changes the organization file, the receipt carries the actor, and a bad shape, an unknown module and a stale revision are refused with nothing written
---
duration_ms: 108.012818
type: 'test'
...
# Subtest: vikunja:19/309 through the broker, a patch switches the kinds it names and keeps the rest; null removes one kind and is trailed
ok 3 - vikunja:19/309 through the broker, a patch switches the kinds it names and keeps the rest; null removes one kind and is trailed
---
duration_ms: 49.129294
type: 'test'
...
1..3
# tests 3
# suites 0
# pass 3
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 263.61252
@@ -0,0 +1,40 @@
TAP version 13
# Subtest: principal binds kernel peer PID and uid, maps owner, and never takes identity or role from body
ok 1 - principal binds kernel peer PID and uid, maps owner, and never takes identity or role from body
---
duration_ms: 1.509967
type: 'test'
...
# Subtest: user requires its own nonce and full walk plus immediate same-tree Console parent
ok 2 - user requires its own nonce and full walk plus immediate same-tree Console parent
---
duration_ms: 0.437537
type: 'test'
...
# Subtest: tester deliberately admits agent parents but rejects managed runs and another nonce
ok 3 - tester deliberately admits agent parents but rejects managed runs and another nonce
---
duration_ms: 0.273773
type: 'test'
...
# Subtest: human leaf identity is reread after walking the parents
ok 4 - human leaf identity is reread after walking the parents
---
duration_ms: 0.148839
type: 'test'
...
# Subtest: console requires its own wrapper, nonce and serve parent, and a configured owner from the spawn env
ok 5 - console requires its own wrapper, nonce and serve parent, and a configured owner from the spawn env
---
duration_ms: 1.148782
type: 'test'
...
1..5
# tests 5
# suites 0
# pass 5
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 64.904422
@@ -0,0 +1,58 @@
TAP version 13
# Subtest: broker process binds trusted launches, offers reader capabilities, refuses human mutation, closes cleanly
ok 1 - broker process binds trusted launches, offers reader capabilities, refuses human mutation, closes cleanly
---
duration_ms: 161.572972
type: 'test'
...
# Subtest: startup token refusal returns safe code without value or partial listening broker
ok 2 - startup token refusal returns safe code without value or partial listening broker
---
duration_ms: 112.859322
type: 'test'
...
# Subtest: loaded fixture token is absent from socket replies and SQLite, including refusal evidence
ok 3 - loaded fixture token is absent from socket replies and SQLite, including refusal evidence
---
duration_ms: 142.142863
type: 'test'
...
# Subtest: killed broker leaves an explicit stale lock; another process cannot silently reclaim it
ok 4 - killed broker leaves an explicit stale lock; another process cannot silently reclaim it
---
duration_ms: 224.894609
type: 'test'
...
# Subtest: trusted host registers later launches; socket clients never have a registration verb
ok 5 - trusted host registers later launches; socket clients never have a registration verb
---
duration_ms: 139.659084
type: 'test'
...
# Subtest: REQ-LIMIT-4 the broker process answers the launcher's mayLaunch op with the limits' awaited decision
ok 6 - REQ-LIMIT-4 the broker process answers the launcher's mayLaunch op with the limits' awaited decision
---
duration_ms: 133.493971
type: 'test'
...
# Subtest: runtime excludes declared project roots even when host supplies no repoRoots
ok 7 - runtime excludes declared project roots even when host supplies no repoRoots
---
duration_ms: 104.676199
type: 'test'
...
# Subtest: a refused launch binding leaves the broker and existing capabilities alive; bad protocol stops it
ok 8 - a refused launch binding leaves the broker and existing capabilities alive; bad protocol stops it
---
duration_ms: 145.496456
type: 'test'
...
1..8
# tests 8
# suites 0
# pass 8
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 1218.038025
@@ -0,0 +1,22 @@
TAP version 13
# Subtest: real runtime injects the coordinator, stops its workload and mirrors stable stop events across restart
ok 1 - real runtime injects the coordinator, stops its workload and mirrors stable stop events across restart
---
duration_ms: 156.282049
type: 'test'
...
# Subtest: invalid state still starts the control bus and human halt then resume repairs it
ok 2 - invalid state still starts the control bus and human halt then resume repairs it
---
duration_ms: 60.548241
type: 'test'
...
1..2
# tests 2
# suites 0
# pass 2
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 332.681231
@@ -0,0 +1,16 @@
TAP version 13
# Subtest: processing halt and resume extend only the socket timeout while ordinary status retains the explicit timeout
ok 1 - processing halt and resume extend only the socket timeout while ordinary status retains the explicit timeout
---
duration_ms: 182.715715
type: 'test'
...
1..1
# tests 1
# suites 0
# pass 1
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 240.016751
@@ -0,0 +1,16 @@
TAP version 13
# Subtest: a root halt aborts the active search-source signal before the normal web deadline
ok 1 - a root halt aborts the active search-source signal before the normal web deadline
---
duration_ms: 32.155923
type: 'test'
...
1..1
# tests 1
# suites 0
# pass 1
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 99.327303
@@ -0,0 +1,94 @@
TAP version 13
# Subtest: processing.halt refuses agent reader and tester before any transition
ok 1 - processing.halt refuses agent reader and tester before any transition
---
duration_ms: 23.023763
type: 'test'
...
# Subtest: processing.resume refuses agent reader and tester before any transition
ok 2 - processing.resume refuses agent reader and tester before any transition
---
duration_ms: 15.057262
type: 'test'
...
# Subtest: human halt and clear each have one event with verified actor; launch.restore cannot clear
ok 3 - human halt and clear each have one event with verified actor; launch.restore cannot clear
---
duration_ms: 17.662175
type: 'test'
...
# Subtest: all ordinary work verbs refuse before dispatch while pure reads remain available
ok 4 - all ordinary work verbs refuse before dispatch while pure reads remain available
---
duration_ms: 30.303465
type: 'test'
...
# Subtest: task web authorization and bind paths refuse before external work
ok 5 - task web authorization and bind paths refuse before external work
---
duration_ms: 15.58056
type: 'test'
...
# Subtest: recordEvent cannot forge processing.halt
ok 6 - recordEvent cannot forge processing.halt
---
duration_ms: 11.112097
type: 'test'
...
# Subtest: recordEvent cannot forge processing.resume
ok 7 - recordEvent cannot forge processing.resume
---
duration_ms: 11.498006
type: 'test'
...
# Subtest: recordEvent cannot forge processing.stop
ok 8 - recordEvent cannot forge processing.stop
---
duration_ms: 10.989846
type: 'test'
...
# Subtest: recordTask poll cannot forge a processing action through its kinds filter
ok 9 - recordTask poll cannot forge a processing action through its kinds filter
---
duration_ms: 11.243507
type: 'test'
...
# Subtest: recordTask self cannot forge a processing action through its kinds filter
ok 10 - recordTask self cannot forge a processing action through its kinds filter
---
duration_ms: 11.308024
type: 'test'
...
# Subtest: spec read remains a read but cannot release new write work after an await
ok 11 - spec read remains a read but cannot release new write work after an await
---
duration_ms: 14.69766
type: 'test'
...
# Subtest: the real socket awaits halt and resume beyond the ordinary idle deadline
ok 12 - the real socket awaits halt and resume beyond the ordinary idle deadline
---
duration_ms: 53.82092
type: 'test'
...
# Subtest: a malformed processing reader never silently admits agent work
ok 13 - a malformed processing reader never silently admits agent work
---
duration_ms: 15.472924
type: 'test'
...
# Subtest: halt refuses the newly landed host executor path before credentials or effects
ok 14 - halt refuses the newly landed host executor path before credentials or effects
---
duration_ms: 13.132101
type: 'test'
...
1..14
# tests 14
# suites 0
# pass 14
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 333.325086
@@ -0,0 +1,34 @@
TAP version 13
# Subtest: D1: committed write with a failed receipt refuses outcome-unknown without action.allowed
ok 1 - D1: committed write with a failed receipt refuses outcome-unknown without action.allowed
---
duration_ms: 21.832477
type: 'test'
...
# Subtest: D2: spec.read refuses without content if its role is released during the read
ok 2 - D2: spec.read refuses without content if its role is released during the read
---
duration_ms: 14.149694
type: 'test'
...
# Subtest: D3: spec.read secret check refuses flagged content without content
ok 3 - D3: spec.read secret check refuses flagged content without content
---
duration_ms: 12.975497
type: 'test'
...
# Subtest: D3: spec.read secret check refuses flagged subject without content
ok 4 - D3: spec.read secret check refuses flagged subject without content
---
duration_ms: 12.392189
type: 'test'
...
1..4
# tests 4
# suites 0
# pass 4
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 139.620503
@@ -0,0 +1,58 @@
TAP version 13
# Subtest: a human lists, opens and saves; the save is one commit by the business human
ok 1 - a human lists, opens and saves; the save is one commit by the business human
---
duration_ms: 103.952872
type: 'test'
...
# Subtest: an agent and a reader refuse every file verb and nothing is written
ok 2 - an agent and a reader refuse every file verb and nothing is written
---
duration_ms: 40.348399
type: 'test'
...
# Subtest: a stale base refuses stale-base and writes nothing
ok 3 - a stale base refuses stale-base and writes nothing
---
duration_ms: 67.043723
type: 'test'
...
# Subtest: paths outside the spec and docs refuse, as do unknown projects, missing files and odd arguments
ok 4 - paths outside the spec and docs refuse, as do unknown projects, missing files and odd arguments
---
duration_ms: 55.563705
type: 'test'
...
# Subtest: without a project adapter the file verbs refuse project-not-configured
ok 5 - without a project adapter the file verbs refuse project-not-configured
---
duration_ms: 26.421856
type: 'test'
...
# Subtest: on the socket a save may carry 1 MiB of text; every other request keeps the 64 KiB limit
ok 6 - on the socket a save may carry 1 MiB of text; every other request keeps the 64 KiB limit
---
duration_ms: 227.12954
type: 'test'
...
# Subtest: a request that names the save verb first and another verb last is refused at 64 KiB
ok 7 - a request that names the save verb first and another verb last is refused at 64 KiB
---
duration_ms: 56.66452
type: 'test'
...
# Subtest: two saves racing for one repository make one commit
ok 8 - two saves racing for one repository make one commit
---
duration_ms: 140.365249
type: 'test'
...
1..8
# tests 8
# suites 0
# pass 8
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 795.184899
@@ -0,0 +1,28 @@
TAP version 13
# Subtest: Broker keeps the sandbox client import closure: only the listed imports, no lazy project import
ok 1 - Broker keeps the sandbox client import closure: only the listed imports, no lazy project import
---
duration_ms: 2.009533
type: 'test'
...
# Subtest: without a trusted project adapter all three async paths refuse project-not-configured
ok 2 - without a trusted project adapter all three async paths refuse project-not-configured
---
duration_ms: 39.853331
type: 'test'
...
# Subtest: real startBroker injects the project adapter for socket reads and bound-author record writes
ok 3 - real startBroker injects the project adapter for socket reads and bound-author record writes
---
duration_ms: 179.965907
type: 'test'
...
1..3
# tests 3
# suites 0
# pass 3
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 330.164652
@@ -0,0 +1,88 @@
TAP version 13
# Subtest: a raise with no recorded push refuses no-push; a raise binds the latest push and shows it
ok 1 - a raise with no recorded push refuses no-push; a raise binds the latest push and shows it
---
duration_ms: 28.668868
type: 'test'
...
# Subtest: happy path: the fork is the upstream repo under the agent's own user, the destination is host-built
ok 2 - happy path: the fork is the upstream repo under the agent's own user, the destination is host-built
---
duration_ms: 25.211352
type: 'test'
...
# Subtest: a hard wait: no decision refuses, and a decision for another task refuses
ok 3 - a hard wait: no decision refuses, and a decision for another task refuses
---
duration_ms: 22.021857
type: 'test'
...
# Subtest: r4 B4: approve while the latest push is A, push B, publish refuses decision-mismatch
ok 4 - r4 B4: approve while the latest push is A, push B, publish refuses decision-mismatch
---
duration_ms: 44.293723
type: 'test'
...
# Subtest: grant and fork refusals
ok 5 - grant and fork refusals
---
duration_ms: 40.544735
type: 'test'
...
# Subtest: remote-not-fork, compared without case, and remote-host-mismatch, at push
ok 6 - remote-not-fork, compared without case, and remote-host-mismatch, at push
---
duration_ms: 80.353441
type: 'test'
...
# Subtest: two agents granted one project each get their own fork
ok 7 - two agents granted one project each get their own fork
---
duration_ms: 40.657106
type: 'test'
...
# Subtest: the request cannot name the fork, the user or the destination
ok 8 - the request cannot name the fork, the user or the destination
---
duration_ms: 19.203863
type: 'test'
...
# Subtest: one decision, one open publish: a second ticket refuses publish-busy, whatever its branch
ok 9 - one decision, one open publish: a second ticket refuses publish-busy, whatever its branch
---
duration_ms: 48.998582
type: 'test'
...
# Subtest: publishRefused files the code on the task's trail and drops the ticket
ok 10 - publishRefused files the code on the task's trail and drops the ticket
---
duration_ms: 21.718099
type: 'test'
...
# Subtest: git.push.remote is in neither ROUTED list and no shipped role grants it
ok 11 - git.push.remote is in neither ROUTED list and no shipped role grants it
---
duration_ms: 0.695681
type: 'test'
...
# Subtest: runtime: withGitea keys from the open ticket only, and the store root is the organization dir
ok 12 - runtime: withGitea keys from the open ticket only, and the store root is the organization dir
---
duration_ms: 96.048518
type: 'test'
...
# Subtest: the bus process answers the publish ops from their own lines, not launch-op-refused
ok 13 - the bus process answers the publish ops from their own lines, not launch-op-refused
---
duration_ms: 143.048521
type: 'test'
...
1..13
# tests 13
# suites 0
# pass 13
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 693.173626
@@ -0,0 +1,79 @@
TAP version 13
# organization: {"event":"reload-needs-restart","business":"demo"}
# organization: {"event":"reload-needs-restart","business":"demo"}
# Subtest: T14 a create goes live with no restart: the new instance binds at once and the answer says restart false
ok 1 - T14 a create goes live with no restart: the new instance binds at once and the answer says restart false
---
duration_ms: 69.238239
type: 'test'
...
# organization: {"event":"reload-needs-restart","business":"demo"}
# organization: {"event":"reload-needs-restart","business":"demo"}
# organization: {"event":"reload-needs-restart","business":"demo"}
# organization: {"event":"reload-needs-restart","business":"demo"}
# organization: {"event":"reload-needs-restart","business":"demo"}
# organization: {"event":"reload-needs-restart","business":"demo"}
# Subtest: T14 every committed verb reloads once, limits.set, routes.set, plugins.set and veto.set included, and a refused one does not
ok 2 - T14 every committed verb reloads once, limits.set, routes.set, plugins.set and veto.set included, and a refused one does not
---
duration_ms: 79.403588
type: 'test'
...
# Subtest: T14 a definition change on a running instance refuses instance-running; a vars change still goes live
ok 3 - T14 a definition change on a running instance refuses instance-running; a vars change still goes live
---
duration_ms: 59.954374
type: 'test'
...
# Subtest: T14 a file whose credential references differ from the boot copy is not reloaded and the write answers restart true
ok 4 - T14 a file whose credential references differ from the boot copy is not reloaded and the write answers restart true
---
duration_ms: 44.154579
type: 'test'
...
# Subtest: T14 a date-only change to a credential reference still reloads: row 199 issue rewrites the date outside the reload
ok 5 - T14 a date-only change to a credential reference still reloads: row 199 issue rewrites the date outside the reload
---
duration_ms: 43.4104
type: 'test'
...
# Subtest: T19 a credentialed create answers restart true; issue works only after a restart, and a later vars change goes live
ok 6 - T19 a credentialed create answers restart true; issue works only after a restart, and a later vars change goes live
---
duration_ms: 91.282961
type: 'test'
...
# Subtest: T14 after a refused reload veto.set, instance.hire and instance.fire answer restart true, and a fire of a name kept since refuses before step A
ok 7 - T14 after a refused reload veto.set, instance.hire and instance.fire answer restart true, and a fire of a name kept since refuses before step A
---
duration_ms: 97.367656
type: 'test'
...
# Subtest: T14 a file whose project root differs from the boot copy is not reloaded, because the Credentials store protects the boot roots
ok 8 - T14 a file whose project root differs from the boot copy is not reloaded, because the Credentials store protects the boot roots
---
duration_ms: 44.078514
type: 'test'
...
# organization: {"event":"reload-needs-restart","business":"demo"}
# Subtest: T14 a file whose library mapping differs from the boot copy is not reloaded, because the mirror is ensured at start
ok 9 - T14 a file whose library mapping differs from the boot copy is not reloaded, because the mirror is ensured at start
---
duration_ms: 181.685261
type: 'test'
...
# Subtest: T14 reloadBusiness refuses an unknown business, a changed human and a document the boot check refuses
ok 10 - T14 reloadBusiness refuses an unknown business, a changed human and a document the boot check refuses
---
duration_ms: 9.782089
type: 'test'
...
1..10
# tests 10
# suites 0
# pass 10
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 834.628431
@@ -0,0 +1,52 @@
TAP version 13
# Subtest: a reply is listed for human and reader sessions, and its delivery rows are unchanged
ok 1 - a reply is listed for human and reader sessions, and its delivery rows are unchanged
---
duration_ms: 42.263501
type: 'test'
...
# Subtest: the reply still reaches the human message.receive (mosaic talk) after the Console showed it
ok 2 - the reply still reaches the human message.receive (mosaic talk) after the Console showed it
---
duration_ms: 19.227119
type: 'test'
...
# Subtest: a message with no reply gives an empty list
ok 3 - a message with no reply gives an empty list
---
duration_ms: 14.810148
type: 'test'
...
# Subtest: replies come oldest first and stop at REPLIES
ok 4 - replies come oldest first and stop at REPLIES
---
duration_ms: 71.506472
type: 'test'
...
# Subtest: an id that names no message in the business refuses message-not-found, and the refusal is recorded
ok 5 - an id that names no message in the business refuses message-not-found, and the refusal is recorded
---
duration_ms: 26.280546
type: 'test'
...
# Subtest: strict arguments; a role session gets human-required
ok 6 - strict arguments; a role session gets human-required
---
duration_ms: 30.106167
type: 'test'
...
# Subtest: views passes replies through as one call with the id
ok 7 - views passes replies through as one call with the id
---
duration_ms: 0.192008
type: 'test'
...
1..7
# tests 7
# suites 0
# pass 7
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 280.849724
@@ -0,0 +1,28 @@
TAP version 13
# Subtest: requirements returns the committed list to a holding role session, and no one else
ok 1 - requirements returns the committed list to a holding role session, and no one else
---
duration_ms: 31.793626
type: 'test'
...
# Subtest: the PM's prd.approve with no task, when no id fits, reaches the human's Inbox
ok 2 - the PM's prd.approve with no task, when no id fits, reaches the human's Inbox
---
duration_ms: 14.954772
type: 'test'
...
# Subtest: the PM's non-blocking role.revoke with no task reaches the human's Inbox
ok 3 - the PM's non-blocking role.revoke with no task reaches the human's Inbox
---
duration_ms: 14.811794
type: 'test'
...
1..3
# tests 3
# suites 0
# pass 3
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 139.051397
@@ -0,0 +1,58 @@
TAP version 13
# Subtest: a push is recorded as the action.allowed for git.push.working on the task, and only the host records one
ok 1 - a push is recorded as the action.allowed for git.push.working on the task, and only the host records one
---
duration_ms: 34.584538
type: 'test'
...
# Subtest: review.request names the latest pushed commit and sends the reviewer a REVIEW-REQUEST
ok 2 - review.request names the latest pushed commit and sends the reviewer a REVIEW-REQUEST
---
duration_ms: 22.262232
type: 'test'
...
# Subtest: review.request says which run holds the reviewer role, or null, and a null request waits for a claim
ok 3 - review.request says which run holds the reviewer role, or null, and a null request waits for a claim
---
duration_ms: 23.904478
type: 'test'
...
# Subtest: review.request refuses a commit that isn't the latest push, a non-reviewer and a role without the action
ok 4 - review.request refuses a commit that isn't the latest push, a non-reviewer and a role without the action
---
duration_ms: 34.834645
type: 'test'
...
# Subtest: reviewFetch answers only the addressed reviewer, for the request it cites
ok 5 - reviewFetch answers only the addressed reviewer, for the request it cites
---
duration_ms: 21.947407
type: 'test'
...
# Subtest: review.verdict answers one request once, to the role that asked
ok 6 - review.verdict answers one request once, to the role that asked
---
duration_ms: 24.354013
type: 'test'
...
# Subtest: task.close on a pushed task needs an approve verdict for the latest push
ok 7 - task.close on a pushed task needs an approve verdict for the latest push
---
duration_ms: 33.616062
type: 'test'
...
# Subtest: a refusal the host decided is filed on the task it names, and only a task ref counts
ok 8 - a refusal the host decided is filed on the task it names, and only a task ref counts
---
duration_ms: 20.816729
type: 'test'
...
1..8
# tests 8
# suites 0
# pass 8
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 298.726038
@@ -0,0 +1,28 @@
TAP version 13
# Subtest: row 306 T1: a run the timer sweep ended answers thread-revoked on every claim-needing call, logged, and its claim still refuses run-revoked
ok 1 - row 306 T1: a run the timer sweep ended answers thread-revoked on every claim-needing call, logged, and its claim still refuses run-revoked
---
duration_ms: 41.055678
type: 'test'
...
# Subtest: row 306 T1: a user's request and access.reload end the run the same way, and it answers thread-revoked
ok 2 - row 306 T1: a user's request and access.reload end the run the same way, and it answers thread-revoked
---
duration_ms: 44.860557
type: 'test'
...
# Subtest: row 306 T2: after the sweep, a run the human stopped and a run the limit stop ended still answer not-holder
ok 3 - row 306 T2: after the sweep, a run the human stopped and a run the limit stop ended still answer not-holder
---
duration_ms: 30.412064
type: 'test'
...
1..3
# tests 3
# suites 0
# pass 3
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 195.584834
@@ -0,0 +1,118 @@
TAP version 13
# Subtest: room.open sorts all threaded instances, creates defaults, and reuses caller-owned threads
ok 1 - room.open sorts all threaded instances, creates defaults, and reuses caller-owned threads
---
duration_ms: 31.775375
type: 'test'
...
# Subtest: room.open preflights instance collisions atomically
ok 2 - room.open preflights instance collisions atomically
---
duration_ms: 15.518549
type: 'test'
...
# Subtest: room.open preflights owner collisions atomically
ok 3 - room.open preflights owner collisions atomically
---
duration_ms: 14.332923
type: 'test'
...
# Subtest: room verbs require the human, and none is a tester verb
ok 4 - room verbs require the human, and none is a tester verb
---
duration_ms: 19.958754
type: 'test'
...
# Subtest: room verbs refuse missing projects and zero member businesses
ok 5 - room verbs refuse missing projects and zero member businesses
---
duration_ms: 29.696528
type: 'test'
...
# Subtest: send/read refuse a missing canonical member without effects
ok 6 - send/read refuse a missing canonical member without effects
---
duration_ms: 15.926384
type: 'test'
...
# Subtest: send/read refuse a foreign-owner canonical member without effects
ok 7 - send/read refuse a foreign-owner canonical member without effects
---
duration_ms: 16.434549
type: 'test'
...
# Subtest: send/read refuse a wrong-instance canonical member without effects
ok 8 - send/read refuse a wrong-instance canonical member without effects
---
duration_ms: 16.918037
type: 'test'
...
# Subtest: room.send targets a key, broadcasts without tags, and preserves original text and ordinary route/input rows
ok 9 - room.send targets a key, broadcasts without tags, and preserves original text and ordinary route/input rows
---
duration_ms: 17.814984
type: 'test'
...
# Subtest: current display names and repeated tags resolve once; a replaced display name is unknown
ok 10 - current display names and repeated tags resolve once; a replaced display name is unknown
---
duration_ms: 17.472042
type: 'test'
...
# Subtest: a legacy name colliding with another member key is ambiguous; its own key resolves once
ok 11 - a legacy name colliding with another member key is ambiguous; its own key resolves once
---
duration_ms: 17.262645
type: 'test'
...
# Subtest: unknown or non-member addressees and tags-only bodies leave no message effects
ok 12 - unknown or non-member addressees and tags-only bodies leave no message effects
---
duration_ms: 21.598657
type: 'test'
...
# Subtest: messaging denial on the last target rolls back the entire broadcast; allowed subset still works
ok 13 - messaging denial on the last target rolls back the entire broadcast; allowed subset still works
---
duration_ms: 16.127696
type: 'test'
...
# Subtest: a clearing last member fences the whole send; another active target still accepts
ok 14 - a clearing last member fences the whole send; another active target still accepts
---
duration_ms: 19.289109
type: 'test'
...
# Subtest: room.read groups one send, pages by the last grouped id, and rejects foreign or absent cursors
ok 15 - room.read groups one send, pages by the last grouped id, and rejects foreign or absent cursors
---
duration_ms: 30.606877
type: 'test'
...
# Subtest: room.read keeps identical sends at the same timestamp separate and includes every session
ok 16 - room.read keeps identical sends at the same timestamp separate and includes every session
---
duration_ms: 31.092162
type: 'test'
...
# Subtest: room.read defaults and caps the number of merged entries, not recipient rows
ok 17 - room.read defaults and caps the number of merged entries, not recipient rows
---
duration_ms: 480.013343
type: 'test'
...
# Subtest: room.read includes an agent reply with its thread and instance without merging it with human rows
ok 18 - room.read includes an agent reply with its thread and instance without merging it with human rows
---
duration_ms: 21.740174
type: 'test'
...
1..18
# tests 18
# suites 0
# pass 18
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 914.031453
@@ -0,0 +1,35 @@
TAP version 13
# organization: {"event":"reload-needs-restart","business":"demo"}
# Subtest: row 65: routes and routes.set refuse every non-human session, the chief of staff included, the tester may read and set, and each passes the verified actor
ok 1 - row 65: routes and routes.set refuse every non-human session, the chief of staff included, the tester may read and set, and each passes the verified actor
---
duration_ms: 37.521939
type: 'test'
...
# Subtest: row 65: a new launch binds only on a switched-on harness with a module name, and a run an earlier broker bound binds again after its harness is switched off
ok 2 - row 65: a new launch binds only on a switched-on harness with a module name, and a run an earlier broker bound binds again after its harness is switched off
---
duration_ms: 22.751488
type: 'test'
...
# Subtest: row 65 runtime: harnessLevels answers each module in the tree, and null for a name with no module
ok 3 - row 65 runtime: harnessLevels answers each module in the tree, and null for a name with no module
---
duration_ms: 39.956296
type: 'test'
...
# Subtest: row 65 runtime: routes and routes.set reach the organization file with the human as actor, a new bind reads plugins.harness, and each refusal keeps the bytes and logs nothing
ok 4 - row 65 runtime: routes and routes.set reach the organization file with the human as actor, a new bind reads plugins.harness, and each refusal keeps the bytes and logs nothing
---
duration_ms: 82.354035
type: 'test'
...
1..4
# tests 4
# suites 0
# pass 4
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 260.356604
Loaded 100 of 894 files, more files were not shown because too many files have changed in this diff. Show more