diff --git a/BUILD-LOG.md b/BUILD-LOG.md index c1b8fa471..bcc1ac164 100644 --- a/BUILD-LOG.md +++ b/BUILD-LOG.md @@ -5504,3 +5504,7 @@ claim. Receipts and limitations in agents/lena/work/queue-296/BUILD.md and run-r 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. diff --git a/agents/magica/work/queue-285/BUILD.md b/agents/magica/work/queue-285/BUILD.md index 2a5c073c4..cabb30fde 100644 --- a/agents/magica/work/queue-285/BUILD.md +++ b/agents/magica/work/queue-285/BUILD.md @@ -450,3 +450,108 @@ Retains newer base changes: packages/business/tests/lifecycle-settings.test.mjs All remaining changed paths equal 53db6b7ca byte-for-byte. Static assertion passed: every tests/ path has exactly the same added/removed lines as the original 45dca69f6..53db6b7ca patch; no extra old-test change introduced by replay. + +## CLEAR sage-4048: gate started + +2026-10-24T10:28:35.498486+00:00 — candidate 66a800e15. Own root npm ci +installed 128 packages. Own webui npm ci installed 2 packages; its first command +looked up the TMPDIR receipt relative to webui and missed it, so reran that install +with the corrected receipt path and short scratch TMPDIR. Both output logs retained. +Neither node_modules directory is a symlink. CLI suite will run locally as one of +the six requested suites; authoritative landing counts and extra readers belong to Sage. +Run each whole test file serially, stop at the first failing file for old/new classification. +This replaces the one-process suite example above so no later file runs after an old red. + +## First-run old-test STOP (2026-10-24T10:32:02Z, sage-4048) + +Whole bus: 108 files, 958/958 pass, zero fail/skip/cancel. +Business partial: 6 files, 84 tests, 80 pass/4 fail; first five files green, +including row 285 agent-identity/business tests. First failing file: +packages/business/tests/case1-business-file.test.mjs (old row 323 tests at +57, 86, 95, 105), 3 pass/4 fail. All four refuse because roles.chief.credentials +must reference exactly the services its role definition needs (gitea; got none). +Full first-red evidence: gate/business/case1-business-file.test.mjs.log. +Per-file commands/counts: gate/runs.txt. + +Stopped before the next file. CLI/webui/harness/plugins/config/mutants NOT RUN. +The mutant driver is prepared but has never executed. No source or old test edited. +Sage notified immediately (magica-0002). No green claim or in-review move. + +Static diagnosis under systematic-debugging (no extra test execution): +case1-business-file.test.mjs:13 reads docs/guides/case1-business.mosaic-stack.json +through join(REPO, "docs/guides/case1-business.mosaic-stack.json"). That committed +document's chief has no credentials. The role now declares gitea; unchanged +checkCredentialMap in business.mjs fails closed at load. The document is an +additional repository business writer absent from Scrooge's earlier writer scan. +It landed after r2's base. case1-project-key.test.mjs is another direct reader. + +A document-only ref would expose further old expectations: case1-business-file +line 81 deepEquals every role.credentials to {}; lines 112 and 114 expect empty +credential status lists. These expectations need a specific owner ruling before +any edits, and a store reference also needs the private store-root bootstrap +precondition from Scrooge's binding notes. No narrowed fix has been attempted. + +Recommended resolution: Sage coordinates the row 323 document owner and Mos +ruling for exact document/ref/fixture expectation changes; preserve no-tracker +semantics and every unrelated assertion. Re-CLEAR before resuming the gate. + +## Amendment 1 build (2026-10-24T10:42:28Z, mos-1580, sage-4059, sage-4060) + +Canonical amendment read from local commit 98235fdb329384a948d9ce8c954c66920e6d2ed2; +queue re-pin rev3902 per Sage. This supersedes the earlier unconditional chief-reference +fixture and live-step assumption. No tests/install/queue verbs run under the held slot. +Sage explicitly authorized building and pushing before returning CLEAR. The earlier +958-pass bus and partial business evidence belongs to 66a800e15, not this amendment. + +Implementation plan, following the supplied ruling: +1. Write three cases in new chief-library-credentials.test.mjs against unchanged Case1 + document: no-library empty refs load; library missing chief gitea refuses by name + with library+reference positive control; no-library extra gitea refuses. The third + also checks assistant exact-match stays enforced. Tests written before source edit, + execution deferred by explicit slot order (no claimed RED/GREEN yet). +2. business.mjs passes whether projects declares any kind=library to checkRoles. + Only a chief-of-staff instance without a library removes gitea from required refs. + Library without chief gitea refuses chief-library-gitea-required. The exact-match + function is byte-identical and still rejects unused refs and every other role's + mismatch; no role authority/scopes or grant-executor changes. +3. Reconcile only row285-owned fixture hunks under sage-4060, keep old base assertions. +4. Prepare M10: remove the chief's library filter condition; require independent kills + by the new no-library positive and unchanged row323 committed-document test. + gate/run-mutants.py includes both checks; it has never executed. +5. Push build, report hunks and known untouched fixture dependencies; await CLEAR + before rerunning the whole gate from the start. + +Exact hunk list beyond 66a800e15: +- business/src/business.mjs: checkRoles hasLibrary parameter; chief-only gitea filter + and named missing ref refusal; compute hasLibrary at call site. checkCredentialMap unchanged. +- business/tests/chief-library-credentials.test.mjs: new file, three ruled cases only. +- business/tests/helpers.mjs: remove row285 chief credential/comment hunk, restore whole base. +- business/tests/resolve.test.mjs: remove row285 chief2 credential/import hunk, restore whole base. +- business/tests/chief-of-staff.test.mjs: restore base import, resolved-record block, + and no-credential/no-tracker refusal block. Retain only approved r2 APPROVED.credentials hunk. +- business/tests/agent-identity.test.mjs: only row285's new chief-positive test gains + library mapping and explicit reference; approved N10 helper hunk remains unchanged. +- business/tests/business.test.mjs: only row285's new chief/creative-missing test + declares a library for the chief case and expects the named refusal. Other assertions unchanged. +- business/examples/mosaic-stack.example.json: remove row285 chief-reference hunk; whole base + restored because this example has no library. This is a retraction of row285's own data edit. +- business/README.md: retract own chief example reference; amend own prose to state + the library-only rule. No unrelated base paragraph edited. +- Evidence/docs: retain first-red logs, append receipts and add M10 mutant plan. + +Static byte checks (not test execution): +9e43bfef326e568488aaa4f0d8882e9b932750aeb39f587a113a226bfb30cf0f docs/guides/case1-business.mosaic-stack.json (base-identical) +9c3bf7f349d0ee8626743e1388b9a596c7f3c274beaedad5106db5f2ff8f65e7 packages/business/tests/case1-business-file.test.mjs (base-identical) +a6a9971b42ddf176d9415caee3efc2eb16791dead5f0f0557d28449a550aefa1 packages/business/tests/helpers.mjs (base-identical) +c74af44a83ee918196e2c1016b62786e757c0ae774c9b1613280d3fbbf3ffb22 packages/business/tests/resolve.test.mjs (base-identical) +211ce2b570f4e3034a8de6fc567b4cf7f866e612c26a3dceb327117c85785f1a packages/business/examples/mosaic-stack.example.json (base-identical) +checkCredentialMap function: byte-identical to base. + +Remaining known boundary, reported to Sage: base library fixtures that call businessDoc() +and add a mapping now need a chief ref (e.g. business.test.mjs C2-04 mapping case, +instance-settings.test.mjs C2-04, resolve.test.mjs C2-04, library-seats.test.mjs). +The base library-seats bean fixtures also lack creative gitea, which row285 now requires. +No unapproved base test fixture or assertion has been changed. These are static findings, +not new gate failures. Resolve fixture authority before CLEAR to avoid a predictable old red. + +Verification status: NOT RUN; Rockerduck holds the slot. diff --git a/agents/magica/work/queue-285/gate/bus/access-revoke.test.mjs.log b/agents/magica/work/queue-285/gate/bus/access-revoke.test.mjs.log new file mode 100644 index 000000000..eaf779c93 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/access-revoke.test.mjs.log @@ -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: 33.626648 + 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: 24.298035 + type: 'test' + ... +# Subtest: R4: a downgrade to viewer is a loss +ok 3 - R4: a downgrade to viewer is a loss + --- + duration_ms: 22.57153 + 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: 23.569539 + 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: 21.657022 + 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: 28.239912 + 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: 19.026173 + 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: 23.579436 + 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.706671 + 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: 51.190176 + type: 'test' + ... +1..10 +# tests 10 +# suites 0 +# pass 10 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 403.444104 diff --git a/agents/magica/work/queue-285/gate/bus/account-migration.test.mjs.log b/agents/magica/work/queue-285/gate/bus/account-migration.test.mjs.log new file mode 100644 index 000000000..7a9928210 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/account-migration.test.mjs.log @@ -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: 83.317074 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 a 3h→3i step that fails partway leaves the store at 3h with every row, the sequence and the schema intact +ok 2 - REQ-LIMIT-4 a 3h→3i step that fails partway leaves the store at 3h with every row, the sequence and the schema intact + --- + duration_ms: 99.893076 + 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.767524 + type: 'test' + ... +1..3 +# tests 3 +# suites 0 +# pass 3 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 336.91479 diff --git a/agents/magica/work/queue-285/gate/bus/address.test.mjs.log b/agents/magica/work/queue-285/gate/bus/address.test.mjs.log new file mode 100644 index 000000000..f7546e244 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/address.test.mjs.log @@ -0,0 +1,100 @@ +TAP version 13 +# Subtest: parseAddress: one +ok 1 - parseAddress: one + --- + duration_ms: 1.215726 + type: 'test' + ... +# Subtest: parseAddress: many +ok 2 - parseAddress: many + --- + duration_ms: 0.109567 + type: 'test' + ... +# Subtest: parseAddress: repeat +ok 3 - parseAddress: repeat + --- + duration_ms: 0.113433 + type: 'test' + ... +# Subtest: parseAddress: plain +ok 4 - parseAddress: plain + --- + duration_ms: 0.086429 + type: 'test' + ... +# Subtest: parseAddress: stop +ok 5 - parseAddress: stop + --- + duration_ms: 0.094831 + type: 'test' + ... +# Subtest: parseAddress: EOF tag +ok 6 - parseAddress: EOF tag + --- + duration_ms: 0.084473 + type: 'test' + ... +# Subtest: parseAddress: EOF last tag +ok 7 - parseAddress: EOF last tag + --- + duration_ms: 0.093228 + type: 'test' + ... +# Subtest: parseAddress: leading whitespace +ok 8 - parseAddress: leading whitespace + --- + duration_ms: 0.082522 + type: 'test' + ... +# Subtest: parseAddress: tags only +ok 9 - parseAddress: tags only + --- + duration_ms: 0.101877 + type: 'test' + ... +# Subtest: parseAddress: empty +ok 10 - parseAddress: empty + --- + duration_ms: 0.147787 + type: 'test' + ... +# Subtest: parseAddress: whitespace +ok 11 - parseAddress: whitespace + --- + duration_ms: 0.070537 + type: 'test' + ... +# Subtest: parseAddress: bare at +ok 12 - parseAddress: bare at + --- + duration_ms: 0.058675 + type: 'test' + ... +# Subtest: parseAddress: punctuation is a name +ok 13 - parseAddress: punctuation is a name + --- + duration_ms: 0.053762 + type: 'test' + ... +# Subtest: parseAddress rejects non-text without coercion +ok 14 - parseAddress rejects non-text without coercion + --- + duration_ms: 0.305883 + type: 'test' + ... +# Subtest: the mounted address parser has no import dependency +ok 15 - the mounted address parser has no import dependency + --- + duration_ms: 0.182326 + type: 'test' + ... +1..15 +# tests 15 +# suites 0 +# pass 15 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 50.77204 diff --git a/agents/magica/work/queue-285/gate/bus/agents.test.mjs.log b/agents/magica/work/queue-285/gate/bus/agents.test.mjs.log new file mode 100644 index 000000000..61c95317f --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/agents.test.mjs.log @@ -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: 23.039682 + 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.838861 + 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.753622 + 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.123908 + 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: 19.19964 + 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: 18.006766 + 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: 20.989914 + 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: 19.359359 + 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: 83.800358 + type: 'test' + ... +# Subtest: agents: stranded is per role and per business +ok 10 - agents: stranded is per role and per business + --- + duration_ms: 30.675778 + 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: 12.903845 + type: 'test' + ... +1..11 +# tests 11 +# suites 0 +# pass 11 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 380.772119 diff --git a/agents/magica/work/queue-285/gate/bus/approval-binding.test.mjs.log b/agents/magica/work/queue-285/gate/bus/approval-binding.test.mjs.log new file mode 100644 index 000000000..bfcf93263 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/approval-binding.test.mjs.log @@ -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: 32.600196 + 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.073437 + 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.142504 + 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.191503 + 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: 22.772926 + 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: 29.561496 + type: 'test' + ... +1..6 +# tests 6 +# suites 0 +# pass 6 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 220.181783 diff --git a/agents/magica/work/queue-285/gate/bus/broker.test.mjs.log b/agents/magica/work/queue-285/gate/bus/broker.test.mjs.log new file mode 100644 index 000000000..f2221eecd --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/broker.test.mjs.log @@ -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: 23.464381 + 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.610753 + 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.082258 + 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.235739 + 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: 15.402932 + 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: 24.02956 + 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: 14.88234 + 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: 21.87516 + 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: 11.288413 + 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: 18.569538 + 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: 25.257868 + 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: 13.819347 + 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: 19.708118 + 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: 14.074236 + 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: 21.790465 + 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.104151 + type: 'test' + ... +1..16 +# tests 16 +# suites 0 +# pass 16 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 393.064499 diff --git a/agents/magica/work/queue-285/gate/bus/business.test.mjs.log b/agents/magica/work/queue-285/gate/bus/business.test.mjs.log new file mode 100644 index 000000000..b82c9fd4b --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/business.test.mjs.log @@ -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.244776 + type: 'test' + ... +1..1 +# tests 1 +# suites 0 +# pass 1 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 53.912851 diff --git a/agents/magica/work/queue-285/gate/bus/channel-proof.test.mjs.log b/agents/magica/work/queue-285/gate/bus/channel-proof.test.mjs.log new file mode 100644 index 000000000..88ebc1e74 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/channel-proof.test.mjs.log @@ -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.81546 + 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: 364.837355 + type: 'test' + ... +1..2 +# tests 2 +# suites 0 +# pass 2 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 461.413513 diff --git a/agents/magica/work/queue-285/gate/bus/chief-of-staff.test.mjs.log b/agents/magica/work/queue-285/gate/bus/chief-of-staff.test.mjs.log new file mode 100644 index 000000000..4fd2d5d45 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/chief-of-staff.test.mjs.log @@ -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: 32.365947 + 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: 29.293804 + 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: 22.737912 + 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: 22.512309 + 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: 25.131069 + 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: 26.203055 + 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: 27.940645 + 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.825985 + 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.695586 + 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.257 + 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: 33.750075 + 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: 25.22416 + 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: 27.765739 + 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: 85.366594 + 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: 72.298444 + 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: 75.387333 + 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: 56.118435 + 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: 71.976768 + 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.972885 + 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: 22.072714 + 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: 22.589401 + 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: 25.565738 + 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: 24.557985 + 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: 20.204671 + 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: 18.369659 + 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: 29.924403 + 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: 26.990661 + 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: 43.256375 + 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: 24.900921 + 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: 727.24594 + 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.021601 + 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: 26.010883 + 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: 25.678267 + 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: 22.699001 + 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: 24.331575 + 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: 26.607146 + 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: 23.386743 + 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.68831 + 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.118953 + 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: 28.682139 + 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: 72.426182 + 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: 25.98699 + type: 'test' + ... +1..42 +# tests 42 +# suites 0 +# pass 42 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 2185.248238 diff --git a/agents/magica/work/queue-285/gate/bus/comment-cursors.test.mjs.log b/agents/magica/work/queue-285/gate/bus/comment-cursors.test.mjs.log new file mode 100644 index 000000000..c3da40ce4 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/comment-cursors.test.mjs.log @@ -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: 31.616209 + 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.454417 + type: 'test' + ... +1..2 +# tests 2 +# suites 0 +# pass 2 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 122.444165 diff --git a/agents/magica/work/queue-285/gate/bus/comment-migration.test.mjs.log b/agents/magica/work/queue-285/gate/bus/comment-migration.test.mjs.log new file mode 100644 index 000000000..01d928dca --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/comment-migration.test.mjs.log @@ -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: 68.302978 + 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: 87.993331 + 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: 83.420299 + 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: 31.223627 + 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: 171.783675 + type: 'test' + ... +1..5 +# tests 5 +# suites 0 +# pass 5 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 515.777793 diff --git a/agents/magica/work/queue-285/gate/bus/console-decide.test.mjs.log b/agents/magica/work/queue-285/gate/bus/console-decide.test.mjs.log new file mode 100644 index 000000000..0b0566df2 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/console-decide.test.mjs.log @@ -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.226413 + 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: 38.054856 + 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: 40.390974 + 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: 29.326401 + 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: 33.699567 + 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: 101.893948 + 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: 137.287624 + 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: 216.963508 + 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: 96.590479 + 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: 127.724952 + 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: 67.510451 + 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: 134.563522 + type: 'test' + ... +1..12 +# tests 12 +# suites 0 +# pass 12 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 1108.142847 diff --git a/agents/magica/work/queue-285/gate/bus/creative.test.mjs.log b/agents/magica/work/queue-285/gate/bus/creative.test.mjs.log new file mode 100644 index 000000000..f523ff81b --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/creative.test.mjs.log @@ -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: 46.582838 + 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: 41.398175 + 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.936029 + 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: 65.593668 + type: 'test' + ... +1..4 +# tests 4 +# suites 0 +# pass 4 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 336.170763 diff --git a/agents/magica/work/queue-285/gate/bus/credential-claim.test.mjs.log b/agents/magica/work/queue-285/gate/bus/credential-claim.test.mjs.log new file mode 100644 index 000000000..1e6b4a052 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/credential-claim.test.mjs.log @@ -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: 12.733334 + type: 'test' + ... +# Subtest: X4: register runs the constructor's reference checks +ok 2 - X4: register runs the constructor's reference checks + --- + duration_ms: 0.634437 + 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.923231 + 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.631188 + 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.620921 + 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.517207 + 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.404873 + 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.515245 + type: 'test' + ... +1..8 +# tests 8 +# suites 0 +# pass 8 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 96.657011 diff --git a/agents/magica/work/queue-285/gate/bus/credential-status.test.mjs.log b/agents/magica/work/queue-285/gate/bus/credential-status.test.mjs.log new file mode 100644 index 000000000..70f52fd63 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/credential-status.test.mjs.log @@ -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: 25.773164 + type: 'test' + ... +# Subtest: credentials refuses a role session and any argument +ok 2 - credentials refuses a role session and any argument + --- + duration_ms: 15.55684 + 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.068395 + 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: 147.252349 + type: 'test' + ... +1..4 +# tests 4 +# suites 0 +# pass 4 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 285.765836 diff --git a/agents/magica/work/queue-285/gate/bus/credential-store.test.mjs.log b/agents/magica/work/queue-285/gate/bus/credential-store.test.mjs.log new file mode 100644 index 000000000..d797f0416 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/credential-store.test.mjs.log @@ -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.550369 + 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.513372 + 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.961044 + 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.527569 + 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.735641 + type: 'test' + ... +# Subtest: T2: useFor keys from the session only +ok 6 - T2: useFor keys from the session only + --- + duration_ms: 1.589245 + 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.38055 + 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.426566 + 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.406987 + 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.500836 + 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.394648 + 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: 29.743201 + type: 'test' + ... +1..12 +# tests 12 +# suites 0 +# pass 12 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 102.485385 diff --git a/agents/magica/work/queue-285/gate/bus/credential-verbs.test.mjs.log b/agents/magica/work/queue-285/gate/bus/credential-verbs.test.mjs.log new file mode 100644 index 000000000..4c60e1037 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/credential-verbs.test.mjs.log @@ -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: 47.008468 + 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: 91.104329 + type: 'test' + ... +1..2 +# tests 2 +# suites 0 +# pass 2 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 251.679699 diff --git a/agents/magica/work/queue-285/gate/bus/credentials.test.mjs.log b/agents/magica/work/queue-285/gate/bus/credentials.test.mjs.log new file mode 100644 index 000000000..0e1d5bac4 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/credentials.test.mjs.log @@ -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.603082 + 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.455167 + 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.469711 + 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: 1.098781 + 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.270185 + type: 'test' + ... +1..5 +# tests 5 +# suites 0 +# pass 5 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 64.643476 diff --git a/agents/magica/work/queue-285/gate/bus/csuite-messaging.test.mjs.log b/agents/magica/work/queue-285/gate/bus/csuite-messaging.test.mjs.log new file mode 100644 index 000000000..b2af764e3 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/csuite-messaging.test.mjs.log @@ -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.312352 + 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: 54.864743 + 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: 39.426586 + 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: 32.872239 + 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: 39.87281 + 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: 37.285713 + 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: 29.64681 + 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: 37.244398 + 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: 37.01834 + 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: 29.933447 + 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.734733 + 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: 38.084336 + 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: 33.331877 + 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.619317 + 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.99243 + 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.908678 + type: 'test' + ... +1..16 +# tests 16 +# suites 0 +# pass 16 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 640.907986 diff --git a/agents/magica/work/queue-285/gate/bus/daily-quota-runtime.test.mjs.log b/agents/magica/work/queue-285/gate/bus/daily-quota-runtime.test.mjs.log new file mode 100644 index 000000000..98908ae23 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/daily-quota-runtime.test.mjs.log @@ -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":"783f9fb9-cb01-4614-a9e5-4e58de0edc47","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":"054da5e0-bddc-42f8-8ff1-9163a693f5de","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: 130.635393 + 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: 55.467888 + 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: 49.392456 + 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: 14.081215 + type: 'test' + ... +1..4 +# tests 4 +# suites 0 +# pass 4 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 329.792565 diff --git a/agents/magica/work/queue-285/gate/bus/decision-close.test.mjs.log b/agents/magica/work/queue-285/gate/bus/decision-close.test.mjs.log new file mode 100644 index 000000000..1fbe92720 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/decision-close.test.mjs.log @@ -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: 41.952568 + 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.366527 + 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: 19.568305 + 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.902003 + 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: 23.922097 + 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: 24.900287 + 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.59873 + 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.57458 + type: 'test' + ... +1..8 +# tests 8 +# suites 0 +# pass 8 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 269.975152 diff --git a/agents/magica/work/queue-285/gate/bus/decision-route.test.mjs.log b/agents/magica/work/queue-285/gate/bus/decision-route.test.mjs.log new file mode 100644 index 000000000..b8e27eeab --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/decision-route.test.mjs.log @@ -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: 32.482629 + 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: 25.371753 + 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: 29.243181 + type: 'test' + ... +# Subtest: a refused supersede withdraws nothing +ok 4 - a refused supersede withdraws nothing + --- + duration_ms: 24.305093 + 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.782782 + type: 'test' + ... +1..5 +# tests 5 +# suites 0 +# pass 5 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 211.213541 diff --git a/agents/magica/work/queue-285/gate/bus/decisions.test.mjs.log b/agents/magica/work/queue-285/gate/bus/decisions.test.mjs.log new file mode 100644 index 000000000..d8a6fe2e2 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/decisions.test.mjs.log @@ -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: 35.070302 + 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: 27.765623 + 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.27781 + type: 'test' + ... +# Subtest: recent stops at RECENT rows +ok 4 - recent stops at RECENT rows + --- + duration_ms: 78.134842 + 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: 35.718697 + 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: 36.183484 + 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: 39.756474 + type: 'test' + ... +1..7 +# tests 7 +# suites 0 +# pass 7 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 356.946622 diff --git a/agents/magica/work/queue-285/gate/bus/end-launch.test.mjs.log b/agents/magica/work/queue-285/gate/bus/end-launch.test.mjs.log new file mode 100644 index 000000000..3267c7250 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/end-launch.test.mjs.log @@ -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: 28.833722 + 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: 14.013821 + 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: 14.00076 + type: 'test' + ... +# Subtest: endLaunch leaves a claim another run took alone +ok 4 - endLaunch leaves a claim another run took alone + --- + duration_ms: 15.011188 + 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: 11.575429 + 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: 16.820239 + 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: 158.400836 + type: 'test' + ... +1..7 +# tests 7 +# suites 0 +# pass 7 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 335.496597 diff --git a/agents/magica/work/queue-285/gate/bus/fire-revokes-grants.test.mjs.log b/agents/magica/work/queue-285/gate/bus/fire-revokes-grants.test.mjs.log new file mode 100644 index 000000000..4fa4dc483 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/fire-revokes-grants.test.mjs.log @@ -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: 236.650762 + 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: 211.933934 + 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: 200.544987 + 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: 200.69229 + 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: 54.366426 + 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: 190.143795 + 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: 85.215699 + 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: 86.635331 + 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: 120.538599 + 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: 285.663654 + 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: 63.174476 + 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: 74.58714 + 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: 229.811152 + 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: 94.297023 + 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: 106.365092 + 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.418823 + 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: 216.946442 + 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: 201.674741 + 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: 86.697927 + 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: 79.607017 + 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: 144.340484 + 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: 63.576923 + 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: 91.735696 + 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: 76.921326 + type: 'test' + ... +1..24 +# tests 24 +# suites 0 +# pass 24 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 3342.462062 diff --git a/agents/magica/work/queue-285/gate/bus/gitea-grant-docker.test.mjs.log b/agents/magica/work/queue-285/gate/bus/gitea-grant-docker.test.mjs.log new file mode 100644 index 000000000..1624ed2dc --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/gitea-grant-docker.test.mjs.log @@ -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: 11756.822035 + type: 'test' + ... +1..1 +# tests 1 +# suites 0 +# pass 1 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 11850.569796 diff --git a/agents/magica/work/queue-285/gate/bus/gitea-grant.test.mjs.log b/agents/magica/work/queue-285/gate/bus/gitea-grant.test.mjs.log new file mode 100644 index 000000000..b3558e1ba --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/gitea-grant.test.mjs.log @@ -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: 1.138824 + 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: 64.60238 + 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: 187.669422 + 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.31195 + 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: 145.197815 + 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: 107.156803 + 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: 303.577062 + 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: 104.549894 + 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: 107.3476 + 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: 150.873888 + 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: 129.838625 + 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: 150.039926 + 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: 66.986764 + 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: 171.079767 + 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: 151.907468 + 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: 170.945576 + 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: 185.793441 + 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: 144.014313 + 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: 142.474084 + 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: 147.865261 + 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: 1065.533954 + 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: 162.773787 + 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: 151.739195 + 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: 142.331753 + 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: 463.720696 + 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: 61.403183 + 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: 126.180326 + 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: 123.820498 + 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: 70.36785 + 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: 56.25775 + 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: 117.792307 + 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: 105.999534 + 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: 107.177993 + 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: 131.914846 + 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: 179.665576 + 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: 316.396176 + 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: 180.890524 + 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: 188.8265 + 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: 430.78295 + 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: 287.736259 + 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: 40.701702 + 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: 255.00293 + 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: 150.028688 + 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: 307.943002 + 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: 329.886149 + 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: 131.77271 + 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: 109.986328 + 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: 131.334179 + 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: 46.720817 + 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: 134.567484 + type: 'test' + ... +1..50 +# tests 50 +# suites 0 +# pass 50 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 8877.069255 diff --git a/agents/magica/work/queue-285/gate/bus/gitea-migration.test.mjs.log b/agents/magica/work/queue-285/gate/bus/gitea-migration.test.mjs.log new file mode 100644 index 000000000..d5c072b3d --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/gitea-migration.test.mjs.log @@ -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: 93.335171 + 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: 100.672759 + 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: 87.645326 + 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: 12.32901 + 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.966492 + type: 'test' + ... +1..5 +# tests 5 +# suites 0 +# pass 5 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 381.559306 diff --git a/agents/magica/work/queue-285/gate/bus/grant-enroll.test.mjs.log b/agents/magica/work/queue-285/gate/bus/grant-enroll.test.mjs.log new file mode 100644 index 000000000..9d1d88b33 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/grant-enroll.test.mjs.log @@ -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: 38.281427 + 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: 48.163669 + 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.853876 + 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: 30.33327 + 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.930216 + 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: 244.336417 + 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: 240.65584 + 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: 240.507806 + 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: 54.926707 + 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: 75.219986 + 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: 25.782861 + 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: 48.544299 + 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: 29.529821 + 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.214869 + 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.271703 + 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: 53.128906 + 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: 49.568529 + 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: 49.698822 + 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: 48.584144 + 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: 51.761624 + 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: 50.075941 + 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: 50.420746 + 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: 25.550962 + 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.326313 + type: 'test' + ... +1..24 +# tests 24 +# suites 0 +# pass 24 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 1685.932811 diff --git a/agents/magica/work/queue-285/gate/bus/grant-executor.test.mjs.log b/agents/magica/work/queue-285/gate/bus/grant-executor.test.mjs.log new file mode 100644 index 000000000..3b8942604 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/grant-executor.test.mjs.log @@ -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: 85.147898 + 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.38305 + 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: 654.326801 + 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: 555.189536 + 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: 1529.700962 + 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: 631.927863 + 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: 651.862059 + 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: 673.221734 + 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: 85.965762 + 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: 516.617317 + 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: 71.610917 + 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: 514.449713 + 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: 490.45793 + 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.403254 + 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: 859.650025 + 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: 856.142201 + 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: 512.212562 + 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.395966 + 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: 223.650509 + 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: 228.242918 + 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: 518.665478 + 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: 67.726567 + 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: 278.544275 + 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: 510.221326 + type: 'test' + ... +# Subtest: N1 (G27): the start sweep unlinks host. files with no record in loaded businesses only, and refuses a store dir that is not private +ok 25 - N1 (G27): the start sweep unlinks host. files with no record in loaded businesses only, and refuses a store dir that is not private + --- + duration_ms: 6.772461 + 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: 657.45817 + 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: 214.935534 + 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.367656 + 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: 505.610854 + 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: 657.398806 + 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: 660.311286 + 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: 949.275926 + 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: 655.004235 + 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: 683.030342 + 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: 947.263093 + 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: 711.921212 + 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: 208.636299 + 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: 648.992204 + 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: 655.778712 + 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: 1176.881676 + 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.182383 + 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: 518.919831 + type: 'test' + ... +1..42 +# tests 42 +# suites 0 +# pass 42 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 21606.612426 diff --git a/agents/magica/work/queue-285/gate/bus/grant-host.test.mjs.log b/agents/magica/work/queue-285/gate/bus/grant-host.test.mjs.log new file mode 100644 index 000000000..d04d7db1e --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/grant-host.test.mjs.log @@ -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: 29.512761 + 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: 40.401059 + 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: 24.133273 + 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.680691 + 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: 20.254516 + 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: 41.214228 + 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: 32.587628 + 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: 26.849369 + 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: 21.543146 + 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: 34.607206 + type: 'test' + ... +1..10 +# tests 10 +# suites 0 +# pass 10 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 377.938537 diff --git a/agents/magica/work/queue-285/gate/bus/grant-migration.test.mjs.log b/agents/magica/work/queue-285/gate/bus/grant-migration.test.mjs.log new file mode 100644 index 000000000..3ddfc60c5 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/grant-migration.test.mjs.log @@ -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: 78.321774 + 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: 94.303753 + 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: 85.717476 + 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: 79.018659 + 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: 15.653321 + 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: 12.80956 + type: 'test' + ... +1..6 +# tests 6 +# suites 0 +# pass 6 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 441.379813 diff --git a/agents/magica/work/queue-285/gate/bus/grant-scope-runtime.test.mjs.log b/agents/magica/work/queue-285/gate/bus/grant-scope-runtime.test.mjs.log new file mode 100644 index 000000000..bfbe776ac --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/grant-scope-runtime.test.mjs.log @@ -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: 75.959603 + type: 'test' + ... +1..1 +# tests 1 +# suites 0 +# pass 1 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 184.502678 diff --git a/agents/magica/work/queue-285/gate/bus/grant-scope.test.mjs.log b/agents/magica/work/queue-285/gate/bus/grant-scope.test.mjs.log new file mode 100644 index 000000000..fd97b0481 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/grant-scope.test.mjs.log @@ -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: 76.602768 + 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: 49.29448 + 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.741112 + 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: 131.30707 + 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: 112.266108 + 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: 141.184127 + 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: 47.197556 + 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: 68.220502 + 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.844738 + 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: 67.290315 + 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.039863 + 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.928974 + 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: 51.023627 + 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.248905 + type: 'test' + ... +1..14 +# tests 14 +# suites 0 +# pass 14 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 1162.045876 diff --git a/agents/magica/work/queue-285/gate/bus/hard-waits.test.mjs.log b/agents/magica/work/queue-285/gate/bus/hard-waits.test.mjs.log new file mode 100644 index 000000000..742774104 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/hard-waits.test.mjs.log @@ -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.193206 + 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: 26.375408 + 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: 466.348889 + 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: 190.216517 + 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: 49.516039 + 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: 72.728787 + 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: 103.290969 + 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: 48.768178 + 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: 114.814502 + 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: 63.423274 + 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: 50.811833 + 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: 49.699334 + 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: 70.00674 + type: 'test' + ... +1..13 +# tests 13 +# suites 0 +# pass 13 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 1393.657013 diff --git a/agents/magica/work/queue-285/gate/bus/host-run.test.mjs.log b/agents/magica/work/queue-285/gate/bus/host-run.test.mjs.log new file mode 100644 index 000000000..52405bd72 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/host-run.test.mjs.log @@ -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: 88.88808 + 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.389323 + 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.115572 + 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: 31.85853 + 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: 162.875863 + 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: 527.25457 + 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: 300.897416 + 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: 279.757279 + 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: 1509.864596 + 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: 173.80908 + 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: 312.878674 + 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: 305.582747 + 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: 278.446582 + 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: 617.456634 + 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: 4654.933725 + 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: 291.755403 + 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: 278.189827 + 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: 23.423912 + 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.564622 + 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: 342.968434 + 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: 3542.905082 + 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: 428.870752 + 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: 27.220032 + type: 'test' + ... +# Subtest: T27: the bus start sweeps /secrets/run before it listens, and a stray entry stops the start +ok 24 - T27: the bus start sweeps /secrets/run before it listens, and a stray entry stops the start + --- + duration_ms: 52.209172 + 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: 145.231007 + 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: 104.662799 + type: 'test' + ... +1..26 +# tests 26 +# suites 0 +# pass 26 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 14603.445804 diff --git a/agents/magica/work/queue-285/gate/bus/host-tools.test.mjs.log b/agents/magica/work/queue-285/gate/bus/host-tools.test.mjs.log new file mode 100644 index 000000000..a5f8275fa --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/host-tools.test.mjs.log @@ -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: 2115.883429 + 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: 517.226102 + 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: 256.283481 + 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: 383.692365 + 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: 77.405161 + 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: 14.546124 + type: 'test' + ... +1..6 +# tests 6 +# suites 0 +# pass 6 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 3412.250249 diff --git a/agents/magica/work/queue-285/gate/bus/human.test.mjs.log b/agents/magica/work/queue-285/gate/bus/human.test.mjs.log new file mode 100644 index 000000000..6bc684130 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/human.test.mjs.log @@ -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.375668 + 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.393442 + 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.583749 + 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.232996 + type: 'test' + ... +1..4 +# tests 4 +# suites 0 +# pass 4 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 54.830277 diff --git a/agents/magica/work/queue-285/gate/bus/instances-verb.test.mjs.log b/agents/magica/work/queue-285/gate/bus/instances-verb.test.mjs.log new file mode 100644 index 000000000..8e888229d --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/instances-verb.test.mjs.log @@ -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: 36.484777 + 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: 128.208541 + 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: 25.863108 + type: 'test' + ... +1..3 +# tests 3 +# suites 0 +# pass 3 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 274.257156 diff --git a/agents/magica/work/queue-285/gate/bus/interpreter.test.mjs.log b/agents/magica/work/queue-285/gate/bus/interpreter.test.mjs.log new file mode 100644 index 000000000..cfb0786be --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/interpreter.test.mjs.log @@ -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: 2.030887 + type: 'test' + ... +# Subtest: real system interpreter is available and safely inspected +ok 2 - real system interpreter is available and safely inspected + --- + duration_ms: 19.118933 + 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: 4.251693 + 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.28812 + 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: 29.268501 + type: 'test' + ... +1..5 +# tests 5 +# suites 0 +# pass 5 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 103.564663 diff --git a/agents/magica/work/queue-285/gate/bus/land.test.mjs.log b/agents/magica/work/queue-285/gate/bus/land.test.mjs.log new file mode 100644 index 000000000..b474f3984 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/land.test.mjs.log @@ -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: 37.846485 + type: 'test' + ... +# Subtest: checkLand refuses on the decision and the review +ok 2 - checkLand refuses on the decision and the review + --- + duration_ms: 34.951131 + 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.160306 + 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.634701 + 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.932752 + 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.866952 + 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: 69.631014 + 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: 27.570116 + 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: 30.428122 + 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: 30.007493 + 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: 28.645388 + 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.70204 + 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.808296 + 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: 35.287353 + 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: 28.249072 + 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: 137.675026 + 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: 36.29073 + 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: 18.368651 + type: 'test' + ... +1..18 +# tests 18 +# suites 0 +# pass 18 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 813.691433 diff --git a/agents/magica/work/queue-285/gate/bus/launch-notice.test.mjs.log b/agents/magica/work/queue-285/gate/bus/launch-notice.test.mjs.log new file mode 100644 index 000000000..87858c427 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/launch-notice.test.mjs.log @@ -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: 27.80908 + 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: 15.490264 + 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.314736 + 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: 20.788754 + 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: 11.922992 + 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: 23.587631 + 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.429305 + 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.09346 + type: 'test' + ... +1..8 +# tests 8 +# suites 0 +# pass 8 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 233.106825 diff --git a/agents/magica/work/queue-285/gate/bus/launcher-released.test.mjs.log b/agents/magica/work/queue-285/gate/bus/launcher-released.test.mjs.log new file mode 100644 index 000000000..c03b09af7 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/launcher-released.test.mjs.log @@ -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.582326 + 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: 31.668665 + 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: 32.290996 + type: 'test' + ... +1..3 +# tests 3 +# suites 0 +# pass 3 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 186.014217 diff --git a/agents/magica/work/queue-285/gate/bus/library-sync.test.mjs.log b/agents/magica/work/queue-285/gate/bus/library-sync.test.mjs.log new file mode 100644 index 000000000..505c42bed --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/library-sync.test.mjs.log @@ -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: 19.169688 + 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: 15.915067 + 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: 24.257198 + 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.310757 + 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: 558.931568 + 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: 6080.946109 + type: 'test' + ... +1..6 +# tests 6 +# suites 0 +# pass 6 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 6813.5026 diff --git a/agents/magica/work/queue-285/gate/bus/library.test.mjs.log b/agents/magica/work/queue-285/gate/bus/library.test.mjs.log new file mode 100644 index 000000000..af3923cc7 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/library.test.mjs.log @@ -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: 37.344826 + 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: 16.332414 + 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: 79.144627 + 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: 109.185924 + 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: 25.867172 + 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: 222.293394 + type: 'test' + ... +1..6 +# tests 6 +# suites 0 +# pass 6 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 614.170243 diff --git a/agents/magica/work/queue-285/gate/bus/lifecycle-revoke.test.mjs.log b/agents/magica/work/queue-285/gate/bus/lifecycle-revoke.test.mjs.log new file mode 100644 index 000000000..1776597b9 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/lifecycle-revoke.test.mjs.log @@ -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: 91.697035 + 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: 53.072006 + 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: 58.331052 + 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: 78.290907 + 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: 62.034163 + 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: 64.515985 + type: 'test' + ... +# Subtest: row 281 T1 fire: a host. or granted gitea file in the store refuses step B credential-revoke-failed, file unchanged +ok 7 - row 281 T1 fire: a host. or granted gitea file in the store refuses step B credential-revoke-failed, file unchanged + --- + duration_ms: 62.311222 + 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: 58.140551 + type: 'test' + ... +1..8 +# tests 8 +# suites 0 +# pass 8 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 653.759661 diff --git a/agents/magica/work/queue-285/gate/bus/lifecycle-verbs.test.mjs.log b/agents/magica/work/queue-285/gate/bus/lifecycle-verbs.test.mjs.log new file mode 100644 index 000000000..ee6299172 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/lifecycle-verbs.test.mjs.log @@ -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.174694 + 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.369541 + 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.444837 + 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.744659 + 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: 30.245113 + 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: 26.862404 + 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.507599 + 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.17881 + 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: 28.018373 + 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: 11.649386 + 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: 21.341319 + 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: 21.257984 + 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: 137.897954 + type: 'test' + ... +1..13 +# tests 13 +# suites 0 +# pass 13 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 496.81624 diff --git a/agents/magica/work/queue-285/gate/bus/limit-checks.test.mjs.log b/agents/magica/work/queue-285/gate/bus/limit-checks.test.mjs.log new file mode 100644 index 000000000..50c92b2e9 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/limit-checks.test.mjs.log @@ -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.308677 + 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.201839 + 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: 14.354093 + 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.101545 + 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: 12.544299 + 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: 13.960739 + 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: 11.913582 + 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.658805 + 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.679739 + 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.307716 + 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.868384 + 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.698385 + 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.47025 + 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: 16.68495 + 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: 10.651737 + 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.470129 + type: 'test' + ... +1..16 +# tests 16 +# suites 0 +# pass 16 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 233.090607 diff --git a/agents/magica/work/queue-285/gate/bus/limit-stop.test.mjs.log b/agents/magica/work/queue-285/gate/bus/limit-stop.test.mjs.log new file mode 100644 index 000000000..c98d8d98e --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/limit-stop.test.mjs.log @@ -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.733374 + 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: 34.422552 + 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: 80.313268 + 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: 22.652278 + 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.508164 + type: 'test' + ... +1..5 +# tests 5 +# suites 0 +# pass 5 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 259.40863 diff --git a/agents/magica/work/queue-285/gate/bus/limits-runtime.test.mjs.log b/agents/magica/work/queue-285/gate/bus/limits-runtime.test.mjs.log new file mode 100644 index 000000000..15ff04c50 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/limits-runtime.test.mjs.log @@ -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":"03ce1bde-0b22-4634-b1a0-a7baad750a2b","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":"2646c66e-f96f-4723-a01b-66e8ec601e17","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: 145.307315 + 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: 36.374289 + 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.688122 + 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: 45.207804 + 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: 63.205522 + type: 'test' + ... +1..5 +# tests 5 +# suites 0 +# pass 5 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 381.203354 diff --git a/agents/magica/work/queue-285/gate/bus/limits.test.mjs.log b/agents/magica/work/queue-285/gate/bus/limits.test.mjs.log new file mode 100644 index 000000000..3d87f1941 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/limits.test.mjs.log @@ -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: 54.532604 + 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: 97.971332 + 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.74373 + type: 'test' + ... +1..3 +# tests 3 +# suites 0 +# pass 3 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 281.657269 diff --git a/agents/magica/work/queue-285/gate/bus/message-citation.test.mjs.log b/agents/magica/work/queue-285/gate/bus/message-citation.test.mjs.log new file mode 100644 index 000000000..8ef3fdad2 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/message-citation.test.mjs.log @@ -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: 38.403577 + 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: 16.771426 + 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: 21.602787 + type: 'test' + ... +1..3 +# tests 3 +# suites 0 +# pass 3 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 154.775138 diff --git a/agents/magica/work/queue-285/gate/bus/message-filter.test.mjs.log b/agents/magica/work/queue-285/gate/bus/message-filter.test.mjs.log new file mode 100644 index 000000000..060ad1c27 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/message-filter.test.mjs.log @@ -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: 84.975298 + 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: 100.934275 + 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: 98.503124 + 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: 789.171476 + 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: 127.278913 + 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: 190.962668 + type: 'test' + ... +1..6 +# tests 6 +# suites 0 +# pass 6 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 1464.341692 diff --git a/agents/magica/work/queue-285/gate/bus/messages.test.mjs.log b/agents/magica/work/queue-285/gate/bus/messages.test.mjs.log new file mode 100644 index 000000000..d22057f01 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/messages.test.mjs.log @@ -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: 308.580063 + 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: 24.510231 + type: 'test' + ... +# Subtest: views messages passes only its paging arguments through +ok 3 - views messages passes only its paging arguments through + --- + duration_ms: 0.285542 + 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.148738 + type: 'test' + ... +1..4 +# tests 4 +# suites 0 +# pass 4 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 446.277243 diff --git a/agents/magica/work/queue-285/gate/bus/messaging.test.mjs.log b/agents/magica/work/queue-285/gate/bus/messaging.test.mjs.log new file mode 100644 index 000000000..64904cc6c --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/messaging.test.mjs.log @@ -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: 42.757376 + 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: 32.965072 + 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.637806 + 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: 25.489268 + 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.58315 + 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.874455 + 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.36166 + type: 'test' + ... +# Subtest: roles without the field behave exactly as before +ok 8 - roles without the field behave exactly as before + --- + duration_ms: 35.710632 + 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: 32.156819 + type: 'test' + ... +# Subtest: a malformed messaging field refuses at boot +ok 10 - a malformed messaging field refuses at boot + --- + duration_ms: 12.561738 + 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: 30.029693 + 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.367279 + 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: 26.302136 + type: 'test' + ... +1..13 +# tests 13 +# suites 0 +# pass 13 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 462.653952 diff --git a/agents/magica/work/queue-285/gate/bus/name-migration.test.mjs.log b/agents/magica/work/queue-285/gate/bus/name-migration.test.mjs.log new file mode 100644 index 000000000..374c4d63c --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/name-migration.test.mjs.log @@ -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: 82.991277 + type: 'test' + ... +1..1 +# tests 1 +# suites 0 +# pass 1 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 146.792555 diff --git a/agents/magica/work/queue-285/gate/bus/names.test.mjs.log b/agents/magica/work/queue-285/gate/bus/names.test.mjs.log new file mode 100644 index 000000000..6206274a2 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/names.test.mjs.log @@ -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: 34.398425 + 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: 17.15729 + 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.338874 + 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: 32.200163 + 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: 27.214989 + 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: 19.250075 + 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.533385 + type: 'test' + ... +1..7 +# tests 7 +# suites 0 +# pass 7 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 245.496335 diff --git a/agents/magica/work/queue-285/gate/bus/peer-transport.test.mjs.log b/agents/magica/work/queue-285/gate/bus/peer-transport.test.mjs.log new file mode 100644 index 000000000..1a0c4e0f3 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/peer-transport.test.mjs.log @@ -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.749109 + 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.335897 + 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: 38.364481 + 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.555373 + type: 'test' + ... +1..4 +# tests 4 +# suites 0 +# pass 4 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 125.777462 diff --git a/agents/magica/work/queue-285/gate/bus/peercred.test.mjs.log b/agents/magica/work/queue-285/gate/bus/peercred.test.mjs.log new file mode 100644 index 000000000..d634e052b --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/peercred.test.mjs.log @@ -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: 234.751974 + 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.799281 + 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.766608 + 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.289419 + type: 'test' + ... +# Subtest: shutdown waits for killed helper close before returning +ok 5 - shutdown waits for killed helper close before returning + --- + duration_ms: 5.712687 + type: 'test' + ... +1..5 +# tests 5 +# suites 0 +# pass 5 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 339.640356 diff --git a/agents/magica/work/queue-285/gate/bus/plugins-verb.test.mjs.log b/agents/magica/work/queue-285/gate/bus/plugins-verb.test.mjs.log new file mode 100644 index 000000000..9293f3ccd --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/plugins-verb.test.mjs.log @@ -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.156207 + 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: 112.230912 + 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: 59.303096 + type: 'test' + ... +1..3 +# tests 3 +# suites 0 +# pass 3 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 269.880034 diff --git a/agents/magica/work/queue-285/gate/bus/principal.test.mjs.log b/agents/magica/work/queue-285/gate/bus/principal.test.mjs.log new file mode 100644 index 000000000..617759775 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/principal.test.mjs.log @@ -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.598442 + 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.50262 + 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.285343 + 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.153324 + 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.274611 + type: 'test' + ... +1..5 +# tests 5 +# suites 0 +# pass 5 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 58.415338 diff --git a/agents/magica/work/queue-285/gate/bus/process.test.mjs.log b/agents/magica/work/queue-285/gate/bus/process.test.mjs.log new file mode 100644 index 000000000..5e85551f6 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/process.test.mjs.log @@ -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: 162.402875 + 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: 104.511422 + 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: 146.007246 + 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: 223.278634 + 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: 171.458678 + 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: 134.693475 + 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: 108.789551 + 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: 150.416773 + type: 'test' + ... +1..8 +# tests 8 +# suites 0 +# pass 8 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 1254.687541 diff --git a/agents/magica/work/queue-285/gate/bus/processing-runtime.test.mjs.log b/agents/magica/work/queue-285/gate/bus/processing-runtime.test.mjs.log new file mode 100644 index 000000000..5eb5d5936 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/processing-runtime.test.mjs.log @@ -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: 160.686197 + 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: 67.198627 + type: 'test' + ... +1..2 +# tests 2 +# suites 0 +# pass 2 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 335.440989 diff --git a/agents/magica/work/queue-285/gate/bus/processing-timeout.test.mjs.log b/agents/magica/work/queue-285/gate/bus/processing-timeout.test.mjs.log new file mode 100644 index 000000000..46d2199af --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/processing-timeout.test.mjs.log @@ -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: 183.216891 + type: 'test' + ... +1..1 +# tests 1 +# suites 0 +# pass 1 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 235.289094 diff --git a/agents/magica/work/queue-285/gate/bus/processing-web.test.mjs.log b/agents/magica/work/queue-285/gate/bus/processing-web.test.mjs.log new file mode 100644 index 000000000..a39a48a18 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/processing-web.test.mjs.log @@ -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: 33.671547 + type: 'test' + ... +1..1 +# tests 1 +# suites 0 +# pass 1 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 98.241716 diff --git a/agents/magica/work/queue-285/gate/bus/processing.test.mjs.log b/agents/magica/work/queue-285/gate/bus/processing.test.mjs.log new file mode 100644 index 000000000..80311ba42 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/processing.test.mjs.log @@ -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: 22.887001 + 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: 14.966832 + 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.922193 + 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: 31.531025 + 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.922592 + type: 'test' + ... +# Subtest: recordEvent cannot forge processing.halt +ok 6 - recordEvent cannot forge processing.halt + --- + duration_ms: 11.810395 + type: 'test' + ... +# Subtest: recordEvent cannot forge processing.resume +ok 7 - recordEvent cannot forge processing.resume + --- + duration_ms: 14.718066 + type: 'test' + ... +# Subtest: recordEvent cannot forge processing.stop +ok 8 - recordEvent cannot forge processing.stop + --- + duration_ms: 11.317725 + 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.280761 + 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: 10.998626 + 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.884287 + 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.60331 + 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.970847 + 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: 14.541247 + type: 'test' + ... +1..14 +# tests 14 +# suites 0 +# pass 14 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 333.348316 diff --git a/agents/magica/work/queue-285/gate/bus/project-await.test.mjs.log b/agents/magica/work/queue-285/gate/bus/project-await.test.mjs.log new file mode 100644 index 000000000..4ad7ebf82 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/project-await.test.mjs.log @@ -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.633659 + 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.345614 + 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: 13.371872 + 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.77567 + type: 'test' + ... +1..4 +# tests 4 +# suites 0 +# pass 4 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 136.771938 diff --git a/agents/magica/work/queue-285/gate/bus/project-files.test.mjs.log b/agents/magica/work/queue-285/gate/bus/project-files.test.mjs.log new file mode 100644 index 000000000..d52ca4054 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/project-files.test.mjs.log @@ -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: 102.225288 + 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.256895 + 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.757673 + 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: 56.787219 + 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: 27.905029 + 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: 229.733966 + 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: 59.730483 + 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: 132.501597 + type: 'test' + ... +1..8 +# tests 8 +# suites 0 +# pass 8 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 797.30583 diff --git a/agents/magica/work/queue-285/gate/bus/project-runtime.test.mjs.log b/agents/magica/work/queue-285/gate/bus/project-runtime.test.mjs.log new file mode 100644 index 000000000..f988468a5 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/project-runtime.test.mjs.log @@ -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: 1.923845 + 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: 42.451202 + 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: 199.703737 + type: 'test' + ... +1..3 +# tests 3 +# suites 0 +# pass 3 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 357.861956 diff --git a/agents/magica/work/queue-285/gate/bus/publish.test.mjs.log b/agents/magica/work/queue-285/gate/bus/publish.test.mjs.log new file mode 100644 index 000000000..792aa731b --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/publish.test.mjs.log @@ -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: 29.037054 + 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: 22.690586 + 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.617765 + 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.702604 + type: 'test' + ... +# Subtest: grant and fork refusals +ok 5 - grant and fork refusals + --- + duration_ms: 40.787987 + 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: 83.061963 + 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: 43.594065 + 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: 20.183608 + 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: 49.139367 + 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.139396 + 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.697216 + 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: 95.77284 + 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: 137.273424 + type: 'test' + ... +1..13 +# tests 13 +# suites 0 +# pass 13 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 687.373143 diff --git a/agents/magica/work/queue-285/gate/bus/reload.test.mjs.log b/agents/magica/work/queue-285/gate/bus/reload.test.mjs.log new file mode 100644 index 000000000..1ab41229f --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/reload.test.mjs.log @@ -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.242354 + 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: 82.454928 + 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: 61.758295 + 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: 43.483042 + 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: 44.645779 + 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: 95.238605 + 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: 105.907228 + 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: 58.349325 + 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: 191.268691 + 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: 10.440953 + type: 'test' + ... +1..10 +# tests 10 +# suites 0 +# pass 10 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 876.201837 diff --git a/agents/magica/work/queue-285/gate/bus/replies.test.mjs.log b/agents/magica/work/queue-285/gate/bus/replies.test.mjs.log new file mode 100644 index 000000000..55cf3f519 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/replies.test.mjs.log @@ -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: 38.602536 + 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.85836 + 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: 15.374113 + type: 'test' + ... +# Subtest: replies come oldest first and stop at REPLIES +ok 4 - replies come oldest first and stop at REPLIES + --- + duration_ms: 72.181413 + 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.696416 + type: 'test' + ... +# Subtest: strict arguments; a role session gets human-required +ok 6 - strict arguments; a role session gets human-required + --- + duration_ms: 30.7198 + 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.224431 + type: 'test' + ... +1..7 +# tests 7 +# suites 0 +# pass 7 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 282.184229 diff --git a/agents/magica/work/queue-285/gate/bus/requirements.test.mjs.log b/agents/magica/work/queue-285/gate/bus/requirements.test.mjs.log new file mode 100644 index 000000000..aa7c1824b --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/requirements.test.mjs.log @@ -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: 28.36651 + 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: 16.745268 + 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: 17.373687 + type: 'test' + ... +1..3 +# tests 3 +# suites 0 +# pass 3 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 140.39683 diff --git a/agents/magica/work/queue-285/gate/bus/review.test.mjs.log b/agents/magica/work/queue-285/gate/bus/review.test.mjs.log new file mode 100644 index 000000000..4b10febed --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/review.test.mjs.log @@ -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: 30.296994 + 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: 23.529897 + 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: 26.171158 + 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: 33.057767 + 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: 23.095518 + 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: 25.638946 + 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: 34.923901 + 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: 19.44463 + type: 'test' + ... +1..8 +# tests 8 +# suites 0 +# pass 8 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 291.610836 diff --git a/agents/magica/work/queue-285/gate/bus/revoke-window.test.mjs.log b/agents/magica/work/queue-285/gate/bus/revoke-window.test.mjs.log new file mode 100644 index 000000000..a9e0db96d --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/revoke-window.test.mjs.log @@ -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: 34.474606 + 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: 42.933114 + 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: 32.312363 + type: 'test' + ... +1..3 +# tests 3 +# suites 0 +# pass 3 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 183.431888 diff --git a/agents/magica/work/queue-285/gate/bus/rooms.test.mjs.log b/agents/magica/work/queue-285/gate/bus/rooms.test.mjs.log new file mode 100644 index 000000000..c919abe82 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/rooms.test.mjs.log @@ -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: 23.504339 + type: 'test' + ... +# Subtest: room.open preflights instance collisions atomically +ok 2 - room.open preflights instance collisions atomically + --- + duration_ms: 15.453505 + type: 'test' + ... +# Subtest: room.open preflights owner collisions atomically +ok 3 - room.open preflights owner collisions atomically + --- + duration_ms: 13.365239 + 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: 20.113002 + 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.19635 + 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.691762 + 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.147529 + 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: 17.257285 + 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.918111 + 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.569751 + 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: 16.835485 + 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: 19.933568 + 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: 15.040151 + 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.148051 + 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: 31.10873 + 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: 28.620091 + 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: 449.726146 + 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: 20.318066 + type: 'test' + ... +1..18 +# tests 18 +# suites 0 +# pass 18 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 863.875474 diff --git a/agents/magica/work/queue-285/gate/bus/routes-verb.test.mjs.log b/agents/magica/work/queue-285/gate/bus/routes-verb.test.mjs.log new file mode 100644 index 000000000..e7c8694dd --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/routes-verb.test.mjs.log @@ -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.13708 + 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: 21.862763 + 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: 38.116593 + 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: 80.455295 + type: 'test' + ... +1..4 +# tests 4 +# suites 0 +# pass 4 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 251.758969 diff --git a/agents/magica/work/queue-285/gate/bus/schema.test.mjs.log b/agents/magica/work/queue-285/gate/bus/schema.test.mjs.log new file mode 100644 index 000000000..77be501d3 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/schema.test.mjs.log @@ -0,0 +1,16 @@ +TAP version 13 +# Subtest: v3b prototype refusals, views and append-only mutations +ok 1 - v3b prototype refusals, views and append-only mutations + --- + duration_ms: 87.075404 + type: 'test' + ... +1..1 +# tests 1 +# suites 0 +# pass 1 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 131.691588 diff --git a/agents/magica/work/queue-285/gate/bus/session-clear.test.mjs.log b/agents/magica/work/queue-285/gate/bus/session-clear.test.mjs.log new file mode 100644 index 000000000..719ccd745 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/session-clear.test.mjs.log @@ -0,0 +1,124 @@ +TAP version 13 +# Subtest: T4 D7: a clear of a held default session fences it, drains at the next receive, retires at the exit proof and moves the default +ok 1 - T4 D7: a clear of a held default session fences it, drains at the next receive, retires at the exit proof and moves the default + --- + duration_ms: 139.573367 + type: 'test' + ... +# Subtest: T4 D7: an unheld session drains at accept, its proof is run null, and a non-default clear leaves the default +ok 2 - T4 D7: an unheld session drains at accept, its proof is run null, and a non-default clear leaves the default + --- + duration_ms: 76.436253 + type: 'test' + ... +# Subtest: T4 D7: a run that ends before its next receive drains at its end, with its generation +ok 3 - T4 D7: a run that ends before its next receive drains at its end, with its generation + --- + duration_ms: 73.695914 + type: 'test' + ... +# Subtest: T4 D7: a run whose turn is running (delivered, unread) stays clearing; uncertain is recorded once and nothing more +ok 4 - T4 D7: a run whose turn is running (delivered, unread) stays clearing; uncertain is recorded once and nothing more + --- + duration_ms: 107.140203 + type: 'test' + ... +# Subtest: T4 D7 B1: undelivered inputs are cancelled with receipts at accept, never delivered to the successor, and a routed reply is cancelled at arrival +ok 5 - T4 D7 B1: undelivered inputs are cancelled with receipts at accept, never delivered to the successor, and a routed reply is cancelled at arrival + --- + duration_ms: 122.531343 + type: 'test' + ... +# Subtest: T4 D7: repeat, conflict, a second op, a stale revision, confirm and a halt +ok 6 - T4 D7: repeat, conflict, a second op, a stale revision, confirm and a halt + --- + duration_ms: 104.601526 + type: 'test' + ... +# Subtest: T4 Q4: the successor takes -N, the next N free, and a bound name stays taken +ok 7 - T4 Q4: the successor takes -N, the next N free, and a bound name stays taken + --- + duration_ms: 90.612442 + type: 'test' + ... +# Subtest: T4 D8: the successor start is held, refused or started, each report on its own counter +ok 8 - T4 D8: the successor start is held, refused or started, each report on its own counter + --- + duration_ms: 88.162498 + type: 'test' + ... +# Subtest: T4 D7 N4: a halt at retirement waits and writes nothing; retirement goes once processing resumes +ok 9 - T4 D7 N4: a halt at retirement waits and writes nothing; retirement goes once processing resumes + --- + duration_ms: 70.048248 + type: 'test' + ... +# Subtest: T4 sage-2828: a cancel before retirement makes the session active again, keeps the claim and the cancelled messages, and never makes the successor +ok 10 - T4 sage-2828: a cancel before retirement makes the session active again, keeps the claim and the cancelled messages, and never makes the successor + --- + duration_ms: 100.823621 + type: 'test' + ... +# Subtest: T4 sage-2828 sage-2830: a cancel after retirement ends the startup only, and a later thread-only send makes the successor pending as new input +ok 11 - T4 sage-2828 sage-2830: a cancel after retirement ends the startup only, and a later thread-only send makes the successor pending as new input + --- + duration_ms: 83.167647 + type: 'test' + ... +# Subtest: T4 N4: a user's thread whose grant is gone by retirement ends the clear failed, writes no successor, and leaves the session as it was +ok 12 - T4 N4: a user's thread whose grant is gone by retirement ends the clear failed, writes no successor, and leaves the session as it was + --- + duration_ms: 84.885077 + type: 'test' + ... +# Subtest: T4 N4: a user's thread whose grant is live at retirement retires the session and makes its successor +ok 13 - T4 N4: a user's thread whose grant is live at retirement retires the session and makes its successor + --- + duration_ms: 83.448743 + type: 'test' + ... +# Subtest: T4 sage-2828: a cancel after the successor started refuses session-clear-complete +ok 14 - T4 sage-2828: a cancel after the successor started refuses session-clear-complete + --- + duration_ms: 76.911584 + type: 'test' + ... +# Subtest: T4 B2: a run bound to a clearing session refuses its claim, and claims again once the clear is cancelled +ok 15 - T4 B2: a run bound to a clearing session refuses its claim, and claims again once the clear is cancelled + --- + duration_ms: 83.895535 + type: 'test' + ... +# Subtest: T4 mos-1325: the tester clears its own thread; its clear, cancel and operation on a human-owned thread refuse thread-not-owned and write nothing +ok 16 - T4 mos-1325: the tester clears its own thread; its clear, cancel and operation on a human-owned thread refuse thread-not-owned and write nothing + --- + duration_ms: 94.245934 + type: 'test' + ... +# Subtest: T4 schema: session_ops and message_cancels are append-only, and a second open clear of a session is refused below the broker +ok 17 - T4 schema: session_ops and message_cancels are append-only, and a second open clear of a session is refused below the broker + --- + duration_ms: 64.740868 + type: 'test' + ... +# Subtest: T4 schema: a 3m store migrates to 3n, session_ops and message_cancels are new and empty, and every other row stays as it was +ok 18 - T4 schema: a 3m store migrates to 3n, session_ops and message_cancels are new and empty, and every other row stays as it was + --- + duration_ms: 500.309365 + type: 'test' + ... +# Subtest: T4 schema: the 3m engine refuses a 3n store, migrating or not, and leaves it as it was +ok 19 - T4 schema: the 3m engine refuses a 3n store, migrating or not, and leaves it as it was + --- + duration_ms: 954.398623 + type: 'test' + ... +1..19 +# tests 19 +# suites 0 +# pass 19 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 3077.300038 diff --git a/agents/magica/work/queue-285/gate/bus/session-compactions.test.mjs.log b/agents/magica/work/queue-285/gate/bus/session-compactions.test.mjs.log new file mode 100644 index 000000000..cca714775 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/session-compactions.test.mjs.log @@ -0,0 +1,34 @@ +TAP version 13 +# Subtest: session.list rows carry the reader count for each session, with its store identity +ok 1 - session.list rows carry the reader count for each session, with its store identity + --- + duration_ms: 27.217947 + type: 'test' + ... +# Subtest: a legacy session is asked for with legacy true +ok 2 - a legacy session is asked for with legacy true + --- + duration_ms: 14.876979 + type: 'test' + ... +# Subtest: without a reader the count is unknown, never 0; a reader that throws is store-unreadable +ok 3 - without a reader the count is unknown, never 0; a reader that throws is store-unreadable + --- + duration_ms: 25.704946 + type: 'test' + ... +# Subtest: compactions must be a function +ok 4 - compactions must be a function + --- + duration_ms: 9.038293 + type: 'test' + ... +1..4 +# tests 4 +# suites 0 +# pass 4 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 149.758854 diff --git a/agents/magica/work/queue-285/gate/bus/sessions.test.mjs.log b/agents/magica/work/queue-285/gate/bus/sessions.test.mjs.log new file mode 100644 index 000000000..0e8059303 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/sessions.test.mjs.log @@ -0,0 +1,52 @@ +TAP version 13 +# Subtest: T1 REQ-ROLE-2: two sessions of one thread keep their own history, delivery and replies +ok 1 - T1 REQ-ROLE-2: two sessions of one thread keep their own history, delivery and replies + --- + duration_ms: 52.447052 + type: 'test' + ... +# Subtest: T2 REQ-ROLE-2: one holder per session, generations count its claims, and a sibling session's message never reaches the other holder +ok 2 - T2 REQ-ROLE-2: one holder per session, generations count its claims, and a sibling session's message never reaches the other holder + --- + duration_ms: 37.413272 + type: 'test' + ... +# Subtest: T2 sage-2257: a released or revoked run's retired generation refuses its approval, delivery and read, and writes nothing +ok 3 - T2 sage-2257: a released or revoked run's retired generation refuses its approval, delivery and read, and writes nothing + --- + duration_ms: 48.636403 + type: 'test' + ... +# Subtest: session.create is idempotent on its op, refuses a reused op or a taken name, and reaches only the owner's threads +ok 4 - session.create is idempotent on its op, refuses a reused op or a taken name, and reaches only the owner's threads + --- + duration_ms: 28.072857 + type: 'test' + ... +# Subtest: the 3l triggers keep sessions in their thread and session ids apart from thread ids +ok 5 - the 3l triggers keep sessions in their thread and session ids apart from thread ids + --- + duration_ms: 66.1131 + type: 'test' + ... +# Subtest: T7: a 3k store migrates to 3l, each thread's default session has the thread's id, and old rows keep their seqs +ok 6 - T7: a 3k store migrates to 3l, each thread's default session has the thread's id, and old rows keep their seqs + --- + duration_ms: 100.049413 + type: 'test' + ... +# Subtest: T7 D9: the 3k engine refuses a 3l store, migrating or not, and leaves it as it was +ok 7 - T7 D9: the 3k engine refuses a 3l store, migrating or not, and leaves it as it was + --- + duration_ms: 154.293355 + type: 'test' + ... +1..7 +# tests 7 +# suites 0 +# pass 7 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 567.356958 diff --git a/agents/magica/work/queue-285/gate/bus/single-use.test.mjs.log b/agents/magica/work/queue-285/gate/bus/single-use.test.mjs.log new file mode 100644 index 000000000..aa1b126ad --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/single-use.test.mjs.log @@ -0,0 +1,82 @@ +TAP version 13 +# Subtest: gated approval authorizes once, survives store reopen, and fresh approval works +ok 1 - gated approval authorizes once, survives store reopen, and fresh approval works + --- + duration_ms: 38.765836 + type: 'test' + ... +# Subtest: another run of the same instance consumes an approval once; a failed check leaves it usable +ok 2 - another run of the same instance consumes an approval once; a failed check leaves it usable + --- + duration_ms: 18.91237 + type: 'test' + ... +# Subtest: two scheduled callers have exactly one grant and one consumed refusal +ok 3 - two scheduled callers have exactly one grant and one consumed refusal + --- + duration_ms: 15.121428 + type: 'test' + ... +# Subtest: failed commit rolls consumption back; cross-role consumes and within-role stays reusable +ok 4 - failed commit rolls consumption back; cross-role consumes and within-role stays reusable + --- + duration_ms: 27.764609 + type: 'test' + ... +# Subtest: class drift gated to cross-role refuses before consumption +ok 5 - class drift gated to cross-role refuses before consumption + --- + duration_ms: 19.173603 + type: 'test' + ... +# Subtest: class drift cross-role to gated refuses before consumption +ok 6 - class drift cross-role to gated refuses before consumption + --- + duration_ms: 21.022631 + type: 'test' + ... +# Subtest: class drift gated to within-role refuses before consumption +ok 7 - class drift gated to within-role refuses before consumption + --- + duration_ms: 18.541143 + type: 'test' + ... +# Subtest: class drift cross-role to within-role refuses before consumption +ok 8 - class drift cross-role to within-role refuses before consumption + --- + duration_ms: 19.631314 + type: 'test' + ... +# Subtest: class drift within-role to gated refuses before consumption +ok 9 - class drift within-role to gated refuses before consumption + --- + duration_ms: 18.222474 + type: 'test' + ... +# Subtest: class drift within-role to cross-role refuses before consumption +ok 10 - class drift within-role to cross-role refuses before consumption + --- + duration_ms: 17.905388 + type: 'test' + ... +# Subtest: message.send consumes approval and prevents a later send or authorize +ok 11 - message.send consumes approval and prevents a later send or authorize + --- + duration_ms: 20.400932 + type: 'test' + ... +# Subtest: role.revoke consumes approval and prevents a later revoke or authorize +ok 12 - role.revoke consumes approval and prevents a later revoke or authorize + --- + duration_ms: 22.298188 + type: 'test' + ... +1..12 +# tests 12 +# suites 0 +# pass 12 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 330.529971 diff --git a/agents/magica/work/queue-285/gate/bus/spec-migration.test.mjs.log b/agents/magica/work/queue-285/gate/bus/spec-migration.test.mjs.log new file mode 100644 index 000000000..fb79f8928 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/spec-migration.test.mjs.log @@ -0,0 +1,16 @@ +TAP version 13 +# Subtest: 3e copy migrates through 3f to 3g preserving every old column/row and adding null spec citations +ok 1 - 3e copy migrates through 3f to 3g preserving every old column/row and adding null spec citations + --- + duration_ms: 90.395948 + type: 'test' + ... +1..1 +# tests 1 +# suites 0 +# pass 1 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 155.354393 diff --git a/agents/magica/work/queue-285/gate/bus/spec-review.test.mjs.log b/agents/magica/work/queue-285/gate/bus/spec-review.test.mjs.log new file mode 100644 index 000000000..15788c95c --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/spec-review.test.mjs.log @@ -0,0 +1,82 @@ +TAP version 13 +# Subtest: a human spec save sends one notice to each pm and cto, naming the commit, and each commit sends its own +ok 1 - a human spec save sends one notice to each pm and cto, naming the commit, and each commit sends its own + --- + duration_ms: 127.988885 + type: 'test' + ... +# Subtest: no notice for a docs save, an agent record commit, a git commit outside the Console, or a refused save +ok 2 - no notice for a docs save, an agent record commit, a git commit outside the Console, or a refused save + --- + duration_ms: 133.106454 + type: 'test' + ... +# Subtest: a notice to a role no run holds waits for a claim, and launches nobody and tells nobody +ok 3 - a notice to a role no run holds waits for a claim, and launches nobody and tells nobody + --- + duration_ms: 66.261911 + type: 'test' + ... +# Subtest: a business without a pm or a cto saves the spec and sends nothing +ok 4 - a business without a pm or a cto saves the spec and sends nothing + --- + duration_ms: 58.186501 + type: 'test' + ... +# Subtest: a notice that cannot be stored answers outcome-unknown, and the commit stands +ok 5 - a notice that cannot be stored answers outcome-unknown, and the commit stands + --- + duration_ms: 68.126595 + type: 'test' + ... +# Subtest: a BLOCK reaches the chief of staff, the chief relays it to the assistant in the user's thread, and the commit stands +ok 6 - a BLOCK reaches the chief of staff, the chief relays it to the assistant in the user's thread, and the commit stands + --- + duration_ms: 75.523138 + type: 'test' + ... +# Subtest: with no thread a BLOCK still reaches the chief of staff, and the relay to the assistant is refused +ok 7 - with no thread a BLOCK still reaches the chief of staff, and the relay to the assistant is refused + --- + duration_ms: 69.894864 + type: 'test' + ... +# Subtest: within the notice's project the relay lands in the user's most recently opened thread +ok 8 - within the notice's project the relay lands in the user's most recently opened thread + --- + duration_ms: 74.638592 + type: 'test' + ... +# Subtest: a more recently opened thread in another project does not take the relay +ok 9 - a more recently opened thread in another project does not take the relay + --- + duration_ms: 71.452685 + type: 'test' + ... +# Subtest: a BLOCK is refused from anyone but a pm or cto, to anyone but the chief of staff, and outside a reply to its own notice +ok 10 - a BLOCK is refused from anyone but a pm or cto, to anyone but the chief of staff, and outside a reply to its own notice + --- + duration_ms: 78.28336 + type: 'test' + ... +# Subtest: a role cannot forge a spec notice: its text opens neither a BLOCK nor the assistant's thread +ok 11 - a role cannot forge a spec notice: its text opens neither a BLOCK nor the assistant's thread + --- + duration_ms: 75.398448 + type: 'test' + ... +# Subtest: the bus receives nothing: a reply to a notice addressed to _bus is refused +ok 12 - the bus receives nothing: a reply to a notice addressed to _bus is refused + --- + duration_ms: 68.108541 + type: 'test' + ... +1..12 +# tests 12 +# suites 0 +# pass 12 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 1044.288469 diff --git a/agents/magica/work/queue-285/gate/bus/spec-socket.test.mjs.log b/agents/magica/work/queue-285/gate/bus/spec-socket.test.mjs.log new file mode 100644 index 000000000..91b8dcf27 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/spec-socket.test.mjs.log @@ -0,0 +1,46 @@ +TAP version 13 +# Subtest: real socket awaits spec reads, record writes and cited raises; other requests still return normally +ok 1 - real socket awaits spec reads, record writes and cited raises; other requests still return normally + --- + duration_ms: 109.228566 + type: 'test' + ... +# Subtest: real socket preserves asynchronous refusal codes and disconnects its transient proof +ok 2 - real socket preserves asynchronous refusal codes and disconnects its transient proof + --- + duration_ms: 62.722234 + type: 'test' + ... +# Subtest: two real socket writes to one repository yield one commit and one project-busy refusal +ok 3 - two real socket writes to one repository yield one commit and one project-busy refusal + --- + duration_ms: 63.935486 + type: 'test' + ... +# Subtest: client disconnect during await tolerates late reply +ok 4 - client disconnect during await tolerates late reply + --- + duration_ms: 61.857055 + type: 'test' + ... +# Subtest: client disconnect during await tolerates late refusal +ok 5 - client disconnect during await tolerates late refusal + --- + duration_ms: 44.342334 + type: 'test' + ... +# Subtest: N-a: slow admitted record.write returns its committed result after the idle deadline +ok 6 - N-a: slow admitted record.write returns its committed result after the idle deadline + --- + duration_ms: 213.952861 + type: 'test' + ... +1..6 +# tests 6 +# suites 0 +# pass 6 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 629.247053 diff --git a/agents/magica/work/queue-285/gate/bus/spec.test.mjs.log b/agents/magica/work/queue-285/gate/bus/spec.test.mjs.log new file mode 100644 index 000000000..660c0ddc4 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/spec.test.mjs.log @@ -0,0 +1,34 @@ +TAP version 13 +# Subtest: current citation is recorded; docs commits do not stale it and a new spec never reopens settlement +ok 1 - current citation is recorded; docs commits do not stale it and a new spec never reopens settlement + --- + duration_ms: 96.830639 + type: 'test' + ... +# Subtest: stale, unconfirmed, missing and partial spec citations refuse without inserting a decision +ok 2 - stale, unconfirmed, missing and partial spec citations refuse without inserting a decision + --- + duration_ms: 101.715858 + type: 'test' + ... +# Subtest: uncited raises retain their synchronous path and spec read is available to any held role in its business +ok 3 - uncited raises retain their synchronous path and spec read is available to any held role in its business + --- + duration_ms: 46.911584 + type: 'test' + ... +# Subtest: record writes bind the session author, require authority and refuse spec and impersonation paths +ok 4 - record writes bind the session author, require authority and refuse spec and impersonation paths + --- + duration_ms: 54.362423 + type: 'test' + ... +1..4 +# tests 4 +# suites 0 +# pass 4 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 371.868184 diff --git a/agents/magica/work/queue-285/gate/bus/staff-request.test.mjs.log b/agents/magica/work/queue-285/gate/bus/staff-request.test.mjs.log new file mode 100644 index 000000000..6005bba78 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/staff-request.test.mjs.log @@ -0,0 +1,70 @@ +TAP version 13 +# Subtest: REQ-COS-1: the pm asks the chief of staff for roles and counts; the chief receives a STAFF-REQUEST and answers it +ok 1 - REQ-COS-1: the pm asks the chief of staff for roles and counts; the chief receives a STAFF-REQUEST and answers it + --- + duration_ms: 92.507328 + type: 'test' + ... +# Subtest: REQ-COS-1: only the pm can send a staff request; every other session is refused and the chief of staff hears nothing +ok 2 - REQ-COS-1: only the pm can send a staff request; every other session is refused and the chief of staff hears nothing + --- + duration_ms: 100.814643 + type: 'test' + ... +# Subtest: REQ-COS-1: a pm without message.send is refused like any other gated action +ok 3 - REQ-COS-1: a pm without message.send is refused like any other gated action + --- + duration_ms: 56.220592 + type: 'test' + ... +# Subtest: REQ-COS-1: the request goes to the business launcher, and only when that is a chief of staff +ok 4 - REQ-COS-1: the request goes to the business launcher, and only when that is a chief of staff + --- + duration_ms: 143.171044 + type: 'test' + ... +# Subtest: REQ-COS-1: the sender is judged by definition: an instance `lead` of the pm definition can ask, an instance `pm` of the coder definition can't +ok 5 - REQ-COS-1: the sender is judged by definition: an instance `lead` of the pm definition can ask, an instance `pm` of the coder definition can't + --- + duration_ms: 134.927188 + type: 'test' + ... +# Subtest: REQ-COS-1: the launcher is judged by definition: an instance `boss` of the chief-of-staff definition receives, a `chief` of the coder definition gives no-chief-of-staff +ok 6 - REQ-COS-1: the launcher is judged by definition: an instance `boss` of the chief-of-staff definition receives, a `chief` of the coder definition gives no-chief-of-staff + --- + duration_ms: 134.41351 + type: 'test' + ... +# Subtest: REQ-COS-1: a refused staff request leaves no staff.request action.allowed event +ok 7 - REQ-COS-1: a refused staff request leaves no staff.request action.allowed event + --- + duration_ms: 79.132154 + type: 'test' + ... +# Subtest: REQ-ASSIST-2: the role definitions' messaging lists hold for a staff request, sender and recipient +ok 8 - REQ-ASSIST-2: the role definitions' messaging lists hold for a staff request, sender and recipient + --- + duration_ms: 219.325023 + type: 'test' + ... +# Subtest: a staff request names a task, 1 to 10 distinct roles and counts of 1 to 20; nothing else is accepted +ok 9 - a staff request names a task, 1 to 10 distinct roles and counts of 1 to 20; nothing else is accepted + --- + duration_ms: 152.699478 + type: 'test' + ... +# Subtest: REQ-COS-1: a staff request grants nothing: the pm still can't launch and the chief of staff launches as before +ok 10 - REQ-COS-1: a staff request grants nothing: the pm still can't launch and the chief of staff launches as before + --- + duration_ms: 89.09922 + type: 'test' + ... +1..10 +# tests 10 +# suites 0 +# pass 10 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 1278.843559 diff --git a/agents/magica/work/queue-285/gate/bus/state.test.mjs.log b/agents/magica/work/queue-285/gate/bus/state.test.mjs.log new file mode 100644 index 000000000..20429e9c2 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/state.test.mjs.log @@ -0,0 +1,58 @@ +TAP version 13 +# Subtest: a business that never switched launches reads allowed with no time and no event +ok 1 - a business that never switched launches reads allowed with no time and no event + --- + duration_ms: 24.853961 + type: 'test' + ... +# Subtest: launches revoked and then restored read allowed, with the restore time and event id +ok 2 - launches revoked and then restored read allowed, with the restore time and event id + --- + duration_ms: 14.215993 + type: 'test' + ... +# Subtest: a task closed on the tracker leaves the open list, and total counts the open ones +ok 3 - a task closed on the tracker leaves the open list, and total counts the open ones + --- + duration_ms: 15.087952 + type: 'test' + ... +# Subtest: a tombstone is not open +ok 4 - a tombstone is not open + --- + duration_ms: 12.475878 + type: 'test' + ... +# Subtest: the open list stops at the cap and says so; total still counts every open task +ok 5 - the open list stops at the cap and says so; total still counts every open task + --- + duration_ms: 14.614274 + type: 'test' + ... +# Subtest: a role and a reader session read state; arguments, and an unbound cap, refuse +ok 6 - a role and a reader session read state; arguments, and an unbound cap, refuse + --- + duration_ms: 13.054829 + type: 'test' + ... +# Subtest: a human session reads the same state, with the same cap +ok 7 - a human session reads the same state, with the same cap + --- + duration_ms: 16.018199 + type: 'test' + ... +# Subtest: reading state writes nothing: every table keeps its row count +ok 8 - reading state writes nothing: every table keeps its row count + --- + duration_ms: 15.293874 + type: 'test' + ... +1..8 +# tests 8 +# suites 0 +# pass 8 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 201.769812 diff --git a/agents/magica/work/queue-285/gate/bus/store.test.mjs.log b/agents/magica/work/queue-285/gate/bus/store.test.mjs.log new file mode 100644 index 000000000..648f2dc1e --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/store.test.mjs.log @@ -0,0 +1,52 @@ +TAP version 13 +# Subtest: creates private WAL store and excludes a second writer until explicit close +ok 1 - creates private WAL store and excludes a second writer until explicit close + --- + duration_ms: 11.884907 + type: 'test' + ... +# Subtest: rollback is atomic and schema metadata is checked against trusted DDL, not just itself +ok 2 - rollback is atomic and schema metadata is checked against trusted DDL, not just itself + --- + duration_ms: 11.629264 + type: 'test' + ... +# Subtest: existing empty database and symlink runtime directory refuse, never initialize over damage +ok 3 - existing empty database and symlink runtime directory refuse, never initialize over damage + --- + duration_ms: 11.876703 + type: 'test' + ... +# Subtest: crash during a transaction recovers no partial event after explicit fixture-only lock removal +ok 4 - crash during a transaction recovers no partial event after explicit fixture-only lock removal + --- + duration_ms: 62.883714 + type: 'test' + ... +# Subtest: writer refuses mixed at/read_at forms atomically, even through trusted SQL helpers +ok 5 - writer refuses mixed at/read_at forms atomically, even through trusted SQL helpers + --- + duration_ms: 9.224663 + type: 'test' + ... +# Subtest: async transactions refuse before invoking their function +ok 6 - async transactions refuse before invoking their function + --- + duration_ms: 7.164541 + type: 'test' + ... +# Subtest: usage_records refuses non-canonical timestamps atomically +ok 7 - usage_records refuses non-canonical timestamps atomically + --- + duration_ms: 8.082585 + type: 'test' + ... +1..7 +# tests 7 +# suites 0 +# pass 7 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 188.497074 diff --git a/agents/magica/work/queue-285/gate/bus/task-page.test.mjs.log b/agents/magica/work/queue-285/gate/bus/task-page.test.mjs.log new file mode 100644 index 000000000..ba1628207 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/task-page.test.mjs.log @@ -0,0 +1,46 @@ +TAP version 13 +# Subtest: the session default fits under the reply cap and pages to the end with next +ok 1 - the session default fits under the reply cap and pages to the end with next + --- + duration_ms: 114.014536 + type: 'test' + ... +# Subtest: the short form: no description, assignees by role, every listed key +ok 2 - the short form: no description, assignees by role, every listed key + --- + duration_ms: 72.032682 + type: 'test' + ... +# Subtest: each filter, alone and together, and total counts every match +ok 3 - each filter, alone and together, and total counts every match + --- + duration_ms: 142.808336 + type: 'test' + ... +# Subtest: task_ref reads one task in full, as the whole board has it +ok 4 - task_ref reads one task in full, as the whole board has it + --- + duration_ms: 89.346269 + type: 'test' + ... +# Subtest: no arguments is the read the Console and mosaic make, unchanged +ok 5 - no arguments is the read the Console and mosaic make, unchanged + --- + duration_ms: 77.157628 + type: 'test' + ... +# Subtest: an unknown argument or a bad value refuses invalid-request +ok 6 - an unknown argument or a bad value refuses invalid-request + --- + duration_ms: 296.078284 + type: 'test' + ... +1..6 +# tests 6 +# suites 0 +# pass 6 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 875.378823 diff --git a/agents/magica/work/queue-285/gate/bus/task-read.test.mjs.log b/agents/magica/work/queue-285/gate/bus/task-read.test.mjs.log new file mode 100644 index 000000000..ca743e699 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/task-read.test.mjs.log @@ -0,0 +1,28 @@ +TAP version 13 +# Subtest: tasks rows carry priority and requirement for every session that reads tasks +ok 1 - tasks rows carry priority and requirement for every session that reads tasks + --- + duration_ms: 46.060009 + type: 'test' + ... +# Subtest: the read model rebuilds from the ledger: a reopened bus and each trail give the same values +ok 2 - the read model rebuilds from the ledger: a reopened bus and each trail give the same values + --- + duration_ms: 38.625836 + type: 'test' + ... +# Subtest: an empty business and one with snapshots but no task.created read cleanly +ok 3 - an empty business and one with snapshots but no task.created read cleanly + --- + duration_ms: 10.365394 + type: 'test' + ... +1..3 +# tests 3 +# suites 0 +# pass 3 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 167.22348 diff --git a/agents/magica/work/queue-285/gate/bus/tasks.test.mjs.log b/agents/magica/work/queue-285/gate/bus/tasks.test.mjs.log new file mode 100644 index 000000000..975d26b45 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/tasks.test.mjs.log @@ -0,0 +1,64 @@ +TAP version 13 +# Subtest: recordTask keeps sync reads and a role write apart +ok 1 - recordTask keeps sync reads and a role write apart + --- + duration_ms: 32.291615 + type: 'test' + ... +# Subtest: read_at must be one canonical UTC format, so the projection compares strings safely +ok 2 - read_at must be one canonical UTC format, so the projection compares strings safely + --- + duration_ms: 9.749087 + type: 'test' + ... +# Subtest: a bad entry refuses the whole record +ok 3 - a bad entry refuses the whole record + --- + duration_ms: 9.920013 + type: 'test' + ... +# Subtest: taskView reads the projection for one business +ok 4 - taskView reads the projection for one business + --- + duration_ms: 12.236337 + type: 'test' + ... +# Subtest: requestTask hands only a holder and a task verb to the handler, and records refusals +ok 5 - requestTask hands only a holder and a task verb to the handler, and records refusals + --- + duration_ms: 23.173468 + type: 'test' + ... +# Subtest: the server sends task verbs to the adapter with its own timeout; other verbs stay synchronous +ok 6 - the server sends task verbs to the adapter with its own timeout; other verbs stay synchronous + --- + duration_ms: 300.213754 + type: 'test' + ... +# Subtest: without an adapter the server refuses every task verb +ok 7 - without an adapter the server refuses every task verb + --- + duration_ms: 41.015793 + type: 'test' + ... +# Subtest: the runtime refuses an invalid adapter and closes a valid one +ok 8 - the runtime refuses an invalid adapter and closes a valid one + --- + duration_ms: 50.467871 + type: 'test' + ... +# Subtest: the process loads the S3 adapter from plain-data trackers +ok 9 - the process loads the S3 adapter from plain-data trackers + --- + duration_ms: 243.013357 + type: 'test' + ... +1..9 +# tests 9 +# suites 0 +# pass 9 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 830.235689 diff --git a/agents/magica/work/queue-285/gate/bus/tester-threads.test.mjs.log b/agents/magica/work/queue-285/gate/bus/tester-threads.test.mjs.log new file mode 100644 index 000000000..943ad21c6 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/tester-threads.test.mjs.log @@ -0,0 +1,100 @@ +TAP version 13 +# Subtest: row 177 T1: a tester thread is owned by tester, and neither side reaches or lists the other +ok 1 - row 177 T1: a tester thread is owned by tester, and neither side reaches or lists the other + --- + duration_ms: 35.979213 + type: 'test' + ... +# Subtest: row 177 T2: the tester thread.send is from tester-cli with no human.input; its open is by tester +ok 2 - row 177 T2: the tester thread.send is from tester-cli with no human.input; its open is by tester + --- + duration_ms: 17.968372 + type: 'test' + ... +# Subtest: row 177 T3: the lists read the tester as the human in its own thread, and nowhere else +ok 3 - row 177 T3: the lists read the tester as the human in its own thread, and nowhere else + --- + duration_ms: 14.662839 + type: 'test' + ... +# Subtest: row 177 T3: an assistant that would not hear the human refuses the tester too +ok 4 - row 177 T3: an assistant that would not hear the human refuses the tester too + --- + duration_ms: 13.349224 + type: 'test' + ... +# Subtest: row 177 T4: the tester thread run answers the tester, never the human +ok 5 - row 177 T4: the tester thread run answers the tester, never the human + --- + duration_ms: 27.308895 + type: 'test' + ... +# Subtest: row 177 T5: each stop revokes only its own threads, recorded by its own actor +ok 6 - row 177 T5: each stop revokes only its own threads, recorded by its own actor + --- + duration_ms: 20.244143 + type: 'test' + ... +# Subtest: row 177 T5: the human stop never ends a tester run +ok 7 - row 177 T5: the human stop never ends a tester run + --- + duration_ms: 15.017796 + type: 'test' + ... +# Subtest: row 177 T6: a business whose human is tester refuses invalid-business +ok 8 - row 177 T6: a business whose human is tester refuses invalid-business + --- + duration_ms: 9.500037 + type: 'test' + ... +# Subtest: row 177 T7: the human trail shows a tester thread message as the tester +ok 9 - row 177 T7: the human trail shows a tester thread message as the tester + --- + duration_ms: 18.681979 + type: 'test' + ... +# Subtest: row 177 T8: a tester-thread run never raises a decision to the human; a human-thread run still does +ok 10 - row 177 T8: a tester-thread run never raises a decision to the human; a human-thread run still does + --- + duration_ms: 19.116027 + type: 'test' + ... +# Subtest: row 177 T8: a tester-thread raise routed to the arbiter stays allowed +ok 11 - row 177 T8: a tester-thread raise routed to the arbiter stays allowed + --- + duration_ms: 15.581525 + type: 'test' + ... +# Subtest: row 182 T9: a tester reply into the human's thread refuses thread-not-owned and stores nothing +ok 12 - row 182 T9: a tester reply into the human's thread refuses thread-not-owned and stores nothing + --- + duration_ms: 17.569161 + type: 'test' + ... +# Subtest: row 182 T9: a tester reply into its own thread lands there +ok 13 - row 182 T9: a tester reply into its own thread lands there + --- + duration_ms: 17.583589 + type: 'test' + ... +# Subtest: row 182 T9: the chief's reply up a chain into a tester's thread lands there +ok 14 - row 182 T9: the chief's reply up a chain into a tester's thread lands there + --- + duration_ms: 20.75166 + type: 'test' + ... +# Subtest: row 182 T9: a tester reply to a spec notice refuses thread-not-owned; the chief's relay still lands +ok 15 - row 182 T9: a tester reply to a spec notice refuses thread-not-owned; the chief's relay still lands + --- + duration_ms: 19.657996 + type: 'test' + ... +1..15 +# tests 15 +# suites 0 +# pass 15 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 356.736022 diff --git a/agents/magica/work/queue-285/gate/bus/tester-writes.test.mjs.log b/agents/magica/work/queue-285/gate/bus/tester-writes.test.mjs.log new file mode 100644 index 000000000..2804e936d --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/tester-writes.test.mjs.log @@ -0,0 +1,63 @@ +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"} +# Subtest: row 175: TESTER_VERBS and the organization branch tester set are pinned +ok 1 - row 175: TESTER_VERBS and the organization branch tester set are pinned + --- + duration_ms: 1.064462 + type: 'test' + ... +# Subtest: row 175: each of the six reads as the tester deep-equals the human read +ok 2 - row 175: each of the six reads as the tester deep-equals the human read + --- + duration_ms: 78.503549 + type: 'test' + ... +# Subtest: row 175: W1-W3 as the tester land with receipt actor tester; the human still logs the human +ok 3 - row 175: W1-W3 as the tester land with receipt actor tester; the human still logs the human + --- + duration_ms: 71.663579 + type: 'test' + ... +# Subtest: row 175: W2 as the tester refuses credentials, protected definitions, human, tester and bus.tester, and changes nothing +ok 4 - row 175: W2 as the tester refuses credentials, protected definitions, human, tester and bus.tester, and changes nothing + --- + duration_ms: 60.738463 + type: 'test' + ... +# Subtest: row 175: the human-only actions refuse a tester tester-refused, and the file and store stay as they were +ok 5 - row 175: the human-only actions refuse a tester tester-refused, and the file and store stay as they were + --- + duration_ms: 60.904038 + type: 'test' + ... +# Subtest: row 175: W4 as the tester writes by tester and keeps every name check +ok 6 - row 175: W4 as the tester writes by tester and keeps every name check + --- + duration_ms: 19.013292 + type: 'test' + ... +# Subtest: row 175: W6 as the tester records created_by tester; the human records the human +ok 7 - row 175: W6 as the tester records created_by tester; the human records the human + --- + duration_ms: 12.638177 + type: 'test' + ... +# Subtest: row 175: with bus.tester unset or not exactly true no tester binds, so no read or write runs +ok 8 - row 175: with bus.tester unset or not exactly true no tester binds, so no read or write runs + --- + duration_ms: 47.549587 + type: 'test' + ... +1..8 +# tests 8 +# suites 0 +# pass 8 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 465.587546 diff --git a/agents/magica/work/queue-285/gate/bus/tester.test.mjs.log b/agents/magica/work/queue-285/gate/bus/tester.test.mjs.log new file mode 100644 index 000000000..8d841e1cb --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/tester.test.mjs.log @@ -0,0 +1,94 @@ +TAP version 13 +# Subtest: the tester binds only when the business sets bus.tester to exactly true +ok 1 - the tester binds only when the business sets bus.tester to exactly true + --- + duration_ms: 91.899234 + type: 'test' + ... +# Subtest: a business may not name a role tester, so the tester address is never a role +ok 2 - a business may not name a role tester, so the tester address is never a role + --- + duration_ms: 22.459037 + type: 'test' + ... +# Subtest: every verb outside the tester list refuses tester-refused and is recorded against the tester +ok 3 - every verb outside the tester list refuses tester-refused and is recorded against the tester + --- + duration_ms: 39.375495 + type: 'test' + ... +# Subtest: a tester message is from tester, needs no prefix, and writes no human.input or authority +ok 4 - a tester message is from tester, needs no prefix, and writes no human.input or authority + --- + duration_ms: 16.78048 + type: 'test' + ... +# Subtest: a tester message to a role no run holds refuses tester-target-not-running and stores nothing +ok 5 - a tester message to a role no run holds refuses tester-target-not-running and stores nothing + --- + duration_ms: 13.335004 + type: 'test' + ... +# Subtest: a tester message is refused while the run is only launched, and routes once it claims +ok 6 - a tester message is refused while the run is only launched, and routes once it claims + --- + duration_ms: 14.772012 + type: 'test' + ... +# Subtest: a human message to a role no run holds still waits and tells launch.by +ok 7 - a human message to a role no run holds still waits and tells launch.by + --- + duration_ms: 12.842306 + type: 'test' + ... +# Subtest: a role answers a tester only in reply to a tester message, and the answer never reaches the human +ok 8 - a role answers a tester only in reply to a tester message, and the answer never reaches the human + --- + duration_ms: 24.056725 + type: 'test' + ... +# Subtest: the tester reads the human views a reader reads +ok 9 - the tester reads the human views a reader reads + --- + duration_ms: 26.435408 + type: 'test' + ... +# Subtest: tester proof binds its own CLI, start time and nonce, refuses a managed run and allows an agent +ok 10 - tester proof binds its own CLI, start time and nonce, refuses a managed run and allows an agent + --- + duration_ms: 1.110431 + type: 'test' + ... +# Subtest: neither CLI's nonce proves the other: each proof is bound to its own CLI and nonce variable +ok 11 - neither CLI's nonce proves the other: each proof is bound to its own CLI and nonce variable + --- + duration_ms: 0.32652 + type: 'test' + ... +# Subtest: testerNonce reads only the tester's variable and gives null on any read error +ok 12 - testerNonce reads only the tester's variable and gives null on any read error + --- + duration_ms: 0.171059 + type: 'test' + ... +# Subtest: an envelope carries exactly one of cap, human and tester; no tester authenticator refuses +ok 13 - an envelope carries exactly one of cap, human and tester; no tester authenticator refuses + --- + duration_ms: 90.568113 + type: 'test' + ... +# Subtest: tester-cli.mjs binds through the runtime when the switch is on, and refuses off or under a run marker +ok 14 - tester-cli.mjs binds through the runtime when the switch is on, and refuses off or under a run marker + --- + duration_ms: 1014.44347 + type: 'test' + ... +1..14 +# tests 14 +# suites 0 +# pass 14 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 1479.197933 diff --git a/agents/magica/work/queue-285/gate/bus/thread-claims.test.mjs.log b/agents/magica/work/queue-285/gate/bus/thread-claims.test.mjs.log new file mode 100644 index 000000000..570c8de0c --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/thread-claims.test.mjs.log @@ -0,0 +1,46 @@ +TAP version 13 +# Subtest: T1: the human and the reader see a held thread claim; agents still lists the role only +ok 1 - T1: the human and the reader see a held thread claim; agents still lists the role only + --- + duration_ms: 26.131314 + type: 'test' + ... +# Subtest: T2: a released or revoked thread claim is not listed, though its thread has an earlier claim row +ok 2 - T2: a released or revoked thread claim is not listed, though its thread has an earlier claim row + --- + duration_ms: 22.341324 + type: 'test' + ... +# Subtest: T3: a role session refuses human-required and the tester refuses tester-refused +ok 3 - T3: a role session refuses human-required and the tester refuses tester-refused + --- + duration_ms: 19.309594 + type: 'test' + ... +# Subtest: T4: agents answers each session the same before and after a thread run claims +ok 4 - T4: agents answers each session the same before and after a thread run claims + --- + duration_ms: 20.260967 + type: 'test' + ... +# Subtest: T5: the result carries neither the thread name a user wrote nor a message body +ok 5 - T5: the result carries neither the thread name a user wrote nor a message body + --- + duration_ms: 19.243968 + type: 'test' + ... +# Subtest: T6: two held sessions of one thread list as two rows, each its session's latest claim +ok 6 - T6: two held sessions of one thread list as two rows, each its session's latest claim + --- + duration_ms: 20.903121 + type: 'test' + ... +1..6 +# tests 6 +# suites 0 +# pass 6 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 202.500603 diff --git a/agents/magica/work/queue-285/gate/bus/thread-migration.test.mjs.log b/agents/magica/work/queue-285/gate/bus/thread-migration.test.mjs.log new file mode 100644 index 000000000..44411499d --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/thread-migration.test.mjs.log @@ -0,0 +1,28 @@ +TAP version 13 +# Subtest: REQ-THREAD-1 REQ-ORG-2: the 3d→3e migration adds the thread tables and leaves messages from before threads as written +ok 1 - REQ-THREAD-1 REQ-ORG-2: the 3d→3e migration adds the thread tables and leaves messages from before threads as written + --- + duration_ms: 91.806427 + type: 'test' + ... +# Subtest: REQ-THREAD-1: a 3d bus with a changed schema is refused and keeps its version and tables +ok 2 - REQ-THREAD-1: a 3d bus with a changed schema is refused and keeps its version and tables + --- + duration_ms: 39.810172 + type: 'test' + ... +# Subtest: REQ-THREAD-1: the offline command prints the kept-message counts before the ready line +ok 3 - REQ-THREAD-1: the offline command prints the kept-message counts before the ready line + --- + duration_ms: 118.987073 + type: 'test' + ... +1..3 +# tests 3 +# suites 0 +# pass 3 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 322.116298 diff --git a/agents/magica/work/queue-285/gate/bus/thread-shares.test.mjs.log b/agents/magica/work/queue-285/gate/bus/thread-shares.test.mjs.log new file mode 100644 index 000000000..65857618d --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/thread-shares.test.mjs.log @@ -0,0 +1,106 @@ +TAP version 13 +# Subtest: a share lets the sharee read the thread and nothing else: every write verb stays the owner's (mutants 7, 9) +ok 1 - a share lets the sharee read the thread and nothing else: every write verb stays the owner's (mutants 7, 9) + --- + duration_ms: 43.941034 + type: 'test' + ... +# Subtest: the business human shares too, and a `*` share reaches every covered principal but the tester +ok 2 - the business human shares too, and a `*` share reaches every covered principal but the tester + --- + duration_ms: 24.14052 + type: 'test' + ... +# Subtest: mutant 2: a share never widens a grant; when the sharee's grant stops covering the thread, its reads end +ok 3 - mutant 2: a share never widens a grant; when the sharee's grant stops covering the thread, its reads end + --- + duration_ms: 25.435969 + type: 'test' + ... +# Subtest: mutant 3: a thread whose user owner has lost coverage is hidden from its sharees, the owner's board included +ok 4 - mutant 3: a thread whose user owner has lost coverage is hidden from its sharees, the owner's board included + --- + duration_ms: 32.562142 + type: 'test' + ... +# Subtest: mutant 4: a share's state is its latest row, so an unshare ends it and a share after it starts it again +ok 5 - mutant 4: a share's state is its latest row, so an unshare ends it and a share after it starts it again + --- + duration_ms: 27.186848 + type: 'test' + ... +# Subtest: mutant 8: a user target needs a live grant of any level covering the thread, else share-not-covered +ok 6 - mutant 8: a user target needs a live grant of any level covering the thread, else share-not-covered + --- + duration_ms: 20.221167 + type: 'test' + ... +# Subtest: a viewer reads a thread shared with it, and share, unshare and shares refuse a viewer access-refused (design 4.3) +ok 7 - a viewer reads a thread shared with it, and share, unshare and shares refuse a viewer access-refused (design 4.3) + --- + duration_ms: 22.380148 + type: 'test' + ... +# Subtest: a share target is `user:`, the business human or `*`, and never the sharer +ok 8 - a share target is `user:`, the business human or `*`, and never the sharer + --- + duration_ms: 41.319386 + type: 'test' + ... +# Subtest: a user whose collaborator grant no longer covers its own thread can't share, unshare or list its shares +ok 9 - a user whose collaborator grant no longer covers its own thread can't share, unshare or list its shares + --- + duration_ms: 22.006092 + type: 'test' + ... +# Subtest: the tester and a reader session never share: each verb refuses and writes nothing +ok 10 - the tester and a reader session never share: each verb refuses and writes nothing + --- + duration_ms: 37.446329 + type: 'test' + ... +# Subtest: the owner's trail and replies show a user's message only while that user's thread is shared with the owner +ok 11 - the owner's trail and replies show a user's message only while that user's thread is shared with the owner + --- + duration_ms: 26.60919 + type: 'test' + ... +# Subtest: a share covers every session of the thread +ok 12 - a share covers every session of the thread + --- + duration_ms: 20.425014 + type: 'test' + ... +# Subtest: a sharee can't list the thread's sessions: session.list stays owner-only (Q7, sage-2818 Q1) +ok 13 - a sharee can't list the thread's sessions: session.list stays owner-only (Q7, sage-2818 Q1) + --- + duration_ms: 22.143462 + type: 'test' + ... +# Subtest: only a human principal matches a share: an agent bound to the thread and the tester match none (sage-2818 Q2) +ok 14 - only a human principal matches a share: an agent bound to the thread and the tester match none (sage-2818 Q2) + --- + duration_ms: 31.249372 + type: 'test' + ... +# Subtest: a 3l store migrates to 3m: thread_shares is new and empty, and every other row stays as it was +ok 15 - a 3l store migrates to 3m: thread_shares is new and empty, and every other row stays as it was + --- + duration_ms: 86.559405 + type: 'test' + ... +# Subtest: the 3l engine refuses a 3m store, migrating or not, and leaves it as it was +ok 16 - the 3l engine refuses a 3m store, migrating or not, and leaves it as it was + --- + duration_ms: 159.077297 + type: 'test' + ... +1..16 +# tests 16 +# suites 0 +# pass 16 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 718.564177 diff --git a/agents/magica/work/queue-285/gate/bus/threads.test.mjs.log b/agents/magica/work/queue-285/gate/bus/threads.test.mjs.log new file mode 100644 index 000000000..2c7ced342 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/threads.test.mjs.log @@ -0,0 +1,130 @@ +TAP version 13 +# Subtest: REQ-ROLE-2 REQ-THREAD-1: one holder per thread, through the broker and the trigger +ok 1 - REQ-ROLE-2 REQ-THREAD-1: one holder per thread, through the broker and the trigger + --- + duration_ms: 48.051304 + type: 'test' + ... +# Subtest: REQ-ROLE-2 REQ-THREAD-1: the 3e triggers refuse writes that skip the broker +ok 2 - REQ-ROLE-2 REQ-THREAD-1: the 3e triggers refuse writes that skip the broker + --- + duration_ms: 69.479038 + type: 'test' + ... +# Subtest: REQ-MSG-1: a message to or from the assistant names its thread, or is refused +ok 3 - REQ-MSG-1: a message to or from the assistant names its thread, or is refused + --- + duration_ms: 32.966872 + type: 'test' + ... +# Subtest: REQ-MSG-1: the chief of staff's reply comes back to the thread that sent the work +ok 4 - REQ-MSG-1: the chief of staff's reply comes back to the thread that sent the work + --- + duration_ms: 599.889276 + type: 'test' + ... +# Subtest: REQ-MSG-1: a reply can't carry one thread instance's thread to another thread instance +ok 5 - REQ-MSG-1: a reply can't carry one thread instance's thread to another thread instance + --- + duration_ms: 23.266064 + type: 'test' + ... +# Subtest: REQ-THREAD-1 REQ-USER-2: one thread's messages never reach another thread's holder +ok 6 - REQ-THREAD-1 REQ-USER-2: one thread's messages never reach another thread's holder + --- + duration_ms: 27.954495 + type: 'test' + ... +# Subtest: REQ-LAUNCH-1: a message to a thread with no holder waits, and the next holder gets it +ok 7 - REQ-LAUNCH-1: a message to a thread with no holder waits, and the next holder gets it + --- + duration_ms: 29.63919 + type: 'test' + ... +# Subtest: REQ-THREAD-2 REQ-LAUNCH-1: threadIdle releases only a thread with nothing waiting, and only for its holder +ok 8 - REQ-THREAD-2 REQ-LAUNCH-1: threadIdle releases only a thread with nothing waiting, and only for its holder + --- + duration_ms: 32.542022 + type: 'test' + ... +# Subtest: REQ-THREAD-2 REQ-LAUNCH-1: a message delivered to a run that ended unread doesn't hold up the next holder +ok 9 - REQ-THREAD-2 REQ-LAUNCH-1: a message delivered to a run that ended unread doesn't hold up the next holder + --- + duration_ms: 31.105501 + type: 'test' + ... +# Subtest: REQ-ROLE-2 REQ-THREAD-1 Q169: a role.revoke the human approved ends every thread run of the assistant +ok 10 - REQ-ROLE-2 REQ-THREAD-1 Q169: a role.revoke the human approved ends every thread run of the assistant + --- + duration_ms: 25.661825 + type: 'test' + ... +# Subtest: Q169 REQ-USER-2: assistant.stop ends the human's own assistant thread runs, and only the human's +ok 11 - Q169 REQ-USER-2: assistant.stop ends the human's own assistant thread runs, and only the human's + --- + duration_ms: 39.501096 + type: 'test' + ... +# Subtest: REQ-USER-2: the human verbs refuse another owner's thread +ok 12 - REQ-USER-2: the human verbs refuse another owner's thread + --- + duration_ms: 28.364521 + type: 'test' + ... +# Subtest: REQ-THREAD-1: thread.create refuses when the business has no thread instance or more than one +ok 13 - REQ-THREAD-1: thread.create refuses when the business has no thread instance or more than one + --- + duration_ms: 23.30089 + type: 'test' + ... +# Subtest: REQ-ORG-2: projects and threads are named once, and the repo names a business project +ok 14 - REQ-ORG-2: projects and threads are named once, and the repo names a business project + --- + duration_ms: 25.470387 + type: 'test' + ... +# Subtest: REQ-THREAD-2: thread.messages returns the thread's history in pages and writes nothing +ok 15 - REQ-THREAD-2: thread.messages returns the thread's history in pages and writes nothing + --- + duration_ms: 89.450916 + type: 'test' + ... +# Subtest: project.create refuses a repository name without its matching repo before any write +ok 16 - project.create refuses a repository name without its matching repo before any write + --- + duration_ms: 16.336059 + type: 'test' + ... +# Subtest: project.create keeps unrelated names with and without a repository +ok 17 - project.create keeps unrelated names with and without a repository + --- + duration_ms: 11.385244 + type: 'test' + ... +# Subtest: C2-09a: explicit creative instances bind independent threads, default sessions and holders +ok 18 - C2-09a: explicit creative instances bind independent threads, default sessions and holders + --- + duration_ms: 47.224194 + type: 'test' + ... +# Subtest: C2-09a: explicit missing, non-thread and malformed selectors create no thread or session +ok 19 - C2-09a: explicit missing, non-thread and malformed selectors create no thread or session + --- + duration_ms: 20.857792 + type: 'test' + ... +# Subtest: C2-09a: creative bindLaunch without a thread refuses thread-required +ok 20 - C2-09a: creative bindLaunch without a thread refuses thread-required + --- + duration_ms: 9.899993 + type: 'test' + ... +1..20 +# tests 20 +# suites 0 +# pass 20 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 1315.860354 diff --git a/agents/magica/work/queue-285/gate/bus/transport.test.mjs.log b/agents/magica/work/queue-285/gate/bus/transport.test.mjs.log new file mode 100644 index 000000000..899ae6770 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/transport.test.mjs.log @@ -0,0 +1,40 @@ +TAP version 13 +# Subtest: socket capability stamps launch identity; shared views use wire, no SQL client +ok 1 - socket capability stamps launch identity; shared views use wire, no SQL client + --- + duration_ms: 56.340741 + type: 'test' + ... +# Subtest: two wire claims serialize; a lost reply never automatically retries +ok 2 - two wire claims serialize; a lost reply never automatically retries + --- + duration_ms: 39.45593 + type: 'test' + ... +# Subtest: malformed, oversized and identity-forging envelopes refuse without echoing input +ok 3 - malformed, oversized and identity-forging envelopes refuse without echoing input + --- + duration_ms: 32.448402 + type: 'test' + ... +# Subtest: client preserves UTF-8 when a response divides a multibyte character +ok 4 - client preserves UTF-8 when a response divides a multibyte character + --- + duration_ms: 11.639519 + type: 'test' + ... +# Subtest: committed mutation followed by dropped reply reports unknown and is never retried +ok 5 - committed mutation followed by dropped reply reports unknown and is never retried + --- + duration_ms: 39.585103 + type: 'test' + ... +1..5 +# tests 5 +# suites 0 +# pass 5 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 259.874956 diff --git a/agents/magica/work/queue-285/gate/bus/usage-broker.test.mjs.log b/agents/magica/work/queue-285/gate/bus/usage-broker.test.mjs.log new file mode 100644 index 000000000..5882ae32b --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/usage-broker.test.mjs.log @@ -0,0 +1,16 @@ +TAP version 13 +# Subtest: REQ-LIMIT-4 usage protocol binds run identity, requires a delivered turn and isolates businesses +ok 1 - REQ-LIMIT-4 usage protocol binds run identity, requires a delivered turn and isolates businesses + --- + duration_ms: 36.143656 + type: 'test' + ... +1..1 +# tests 1 +# suites 0 +# pass 1 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 114.292603 diff --git a/agents/magica/work/queue-285/gate/bus/usage-migration.test.mjs.log b/agents/magica/work/queue-285/gate/bus/usage-migration.test.mjs.log new file mode 100644 index 000000000..e260bb2fe --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/usage-migration.test.mjs.log @@ -0,0 +1,16 @@ +TAP version 13 +# Subtest: REQ-LIMIT-4 3g copy migrates through 3h, 3i, 3j and 3k to 3l preserving every old column, row and sequence; new usage table is empty +ok 1 - REQ-LIMIT-4 3g copy migrates through 3h, 3i, 3j and 3k to 3l preserving every old column, row and sequence; new usage table is empty + --- + duration_ms: 85.868963 + type: 'test' + ... +1..1 +# tests 1 +# suites 0 +# pass 1 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 150.898219 diff --git a/agents/magica/work/queue-285/gate/bus/usage-runtime.test.mjs.log b/agents/magica/work/queue-285/gate/bus/usage-runtime.test.mjs.log new file mode 100644 index 000000000..5c84d0527 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/usage-runtime.test.mjs.log @@ -0,0 +1,16 @@ +TAP version 13 +# Subtest: REQ-PLUG-1 runtime reaches transcript only through loader, over the real bus socket +ok 1 - REQ-PLUG-1 runtime reaches transcript only through loader, over the real bus socket + --- + duration_ms: 65.638424 + type: 'test' + ... +1..1 +# tests 1 +# suites 0 +# pass 1 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 183.74315 diff --git a/agents/magica/work/queue-285/gate/bus/usage.test.mjs.log b/agents/magica/work/queue-285/gate/bus/usage.test.mjs.log new file mode 100644 index 000000000..c3ee0f49b --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/usage.test.mjs.log @@ -0,0 +1,100 @@ +TAP version 13 +# Subtest: REQ-LIMIT-4 loader source records new turn kinds, excludes history and retries exactly once +ok 1 - REQ-LIMIT-4 loader source records new turn kinds, excludes history and retries exactly once + --- + duration_ms: 21.723303 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 cut: unknown is durable and logged next to every total +ok 2 - REQ-LIMIT-4 cut: unknown is durable and logged next to every total + --- + duration_ms: 11.736702 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 disabled: unknown is durable and logged next to every total +ok 3 - REQ-LIMIT-4 disabled: unknown is durable and logged next to every total + --- + duration_ms: 9.395119 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 missing-begin: unknown is durable and logged next to every total +ok 4 - REQ-LIMIT-4 missing-begin: unknown is durable and logged next to every total + --- + duration_ms: 8.561661 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 no-new-usage: unknown is durable and logged next to every total +ok 5 - REQ-LIMIT-4 no-new-usage: unknown is durable and logged next to every total + --- + duration_ms: 9.082537 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 rewrite: unknown is durable and logged next to every total +ok 6 - REQ-LIMIT-4 rewrite: unknown is durable and logged next to every total + --- + duration_ms: 9.040613 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 unfinished turn remains visibly unknown after accounting restarts +ok 7 - REQ-LIMIT-4 unfinished turn remains visibly unknown after accounting restarts + --- + duration_ms: 7.895509 + type: 'test' + ... +# Subtest: usage records are append-only +ok 8 - usage records are append-only + --- + duration_ms: 9.605738 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 parse failure logs its safe code, never transcript content +ok 9 - REQ-LIMIT-4 parse failure logs its safe code, never transcript content + --- + duration_ms: 10.658114 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 resumed run baselines history and exact totals do not overflow +ok 10 - REQ-LIMIT-4 resumed run baselines history and exact totals do not overflow + --- + duration_ms: 13.403738 + type: 'test' + ... +# Subtest: REQ-PLUG-1 core has no transcript import and disabled sources do not read any transcript +ok 11 - REQ-PLUG-1 core has no transcript import and disabled sources do not read any transcript + --- + duration_ms: 8.804973 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 a resumed thread bills only new assistant messages to its next run +ok 12 - REQ-LIMIT-4 a resumed thread bills only new assistant messages to its next run + --- + duration_ms: 10.804841 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 every enabled source is called; failure is unknown and a partial total stays labelled +ok 13 - REQ-LIMIT-4 every enabled source is called; failure is unknown and a partial total stays labelled + --- + duration_ms: 13.76469 + type: 'test' + ... +# Subtest: REQ-LIMIT-4 a turn whose reported sum exceeds safe precision is unknown, not rounded +ok 14 - REQ-LIMIT-4 a turn whose reported sum exceeds safe precision is unknown, not rounded + --- + duration_ms: 9.345827 + type: 'test' + ... +# Subtest: row 65 a run bound without a transcript directory records no-transcript +ok 15 - row 65 a run bound without a transcript directory records no-transcript + --- + duration_ms: 9.078946 + type: 'test' + ... +1..15 +# tests 15 +# suites 0 +# pass 15 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 237.584645 diff --git a/agents/magica/work/queue-285/gate/bus/user-principal.test.mjs.log b/agents/magica/work/queue-285/gate/bus/user-principal.test.mjs.log new file mode 100644 index 000000000..d1b8b385c --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/user-principal.test.mjs.log @@ -0,0 +1,154 @@ +TAP version 13 +# Subtest: R3: bindUser binds a granted user and refuses one with no live grant +ok 1 - R3: bindUser binds a granted user and refuses one with no live grant + --- + duration_ms: 22.409949 + type: 'test' + ... +# Subtest: R3: a user named like the business human, the tester or a principal word is refused, whatever the grants say +ok 2 - R3: a user named like the business human, the tester or a principal word is refused, whatever the grants say + --- + duration_ms: 10.561028 + type: 'test' + ... +# Subtest: R3: each collaborator verb is allowed to a granted user +ok 3 - R3: each collaborator verb is allowed to a granted user + --- + duration_ms: 20.681719 + type: 'test' + ... +# Subtest: R3: every verb off the collaborator list refuses a user access-refused before its own checks +ok 4 - R3: every verb off the collaborator list refuses a user access-refused before its own checks + --- + duration_ms: 119.590254 + type: 'test' + ... +# Subtest: R3: task, web and host verbs refuse a user access-refused +ok 5 - R3: task, web and host verbs refuse a user access-refused + --- + duration_ms: 23.690522 + type: 'test' + ... +# Subtest: R3 leak: project.list shows granted projects only +ok 6 - R3 leak: project.list shows granted projects only + --- + duration_ms: 12.93918 + type: 'test' + ... +# Subtest: R3 leak: thread.create needs the project and the thread instance granted, and an ungranted id reads as one that does not exist +ok 7 - R3 leak: thread.create needs the project and the thread instance granted, and an ungranted id reads as one that does not exist + --- + duration_ms: 15.520702 + type: 'test' + ... +# Subtest: R3 leak: thread.list shows the user its own threads that are still granted, never others +ok 8 - R3 leak: thread.list shows the user its own threads that are still granted, never others + --- + duration_ms: 34.729869 + type: 'test' + ... +# Subtest: R3 leak: names shows granted instances only +ok 9 - R3 leak: names shows granted instances only + --- + duration_ms: 14.475312 + type: 'test' + ... +# Subtest: R3: thread.send is from user: and writes no human.input +ok 10 - R3: thread.send is from user: and writes no human.input + --- + duration_ms: 13.40531 + type: 'test' + ... +# Subtest: R3: a reply-chain message.send into another user thread is refused +ok 11 - R3: a reply-chain message.send into another user thread is refused + --- + duration_ms: 16.244226 + type: 'test' + ... +# Subtest: R3: the run reply to a user message reaches that user thread.messages, with no waiting and no notice +ok 12 - R3: the run reply to a user message reaches that user thread.messages, with no waiting and no notice + --- + duration_ms: 18.048903 + type: 'test' + ... +# Subtest: R3: a reply to: user without a matching in_reply_to is refused user-reply-required +ok 13 - R3: a reply to: user without a matching in_reply_to is refused user-reply-required + --- + duration_ms: 28.706317 + type: 'test' + ... +# Subtest: R3: a non-thread run, the human and the tester cannot send to: user +ok 14 - R3: a non-thread run, the human and the tester cannot send to: user + --- + duration_ms: 16.875064 + type: 'test' + ... +# Subtest: R3: a user thread run cannot message the owner, while its uncited gated raise reaches only the owner inbox, B9 +ok 15 - R3: a user thread run cannot message the owner, while its uncited gated raise reaches only the owner inbox, B9 + --- + duration_ms: 19.670301 + type: 'test' + ... +# Subtest: R3: a removed or expired grant refuses the next request access-revoked, and the file is read per request +ok 16 - R3: a removed or expired grant refuses the next request access-revoked, and the file is read per request + --- + duration_ms: 19.533822 + type: 'test' + ... +# Subtest: R3: a user refusal is recorded as action.refused by user: +ok 17 - R3: a user refusal is recorded as action.refused by user: + --- + duration_ms: 13.721333 + type: 'test' + ... +# Subtest: R3: a business with a role keyed user refuses invalid-business +ok 18 - R3: a business with a role keyed user refuses invalid-business + --- + duration_ms: 9.875125 + type: 'test' + ... +# Subtest: R3: name.set refuses the name user +ok 19 - R3: name.set refuses the name user + --- + duration_ms: 10.393686 + type: 'test' + ... +# Subtest: R3 r4: while halted, a granted user's thread.send refuses processing-halted and thread.messages still answers +ok 20 - R3 r4: while halted, a granted user's thread.send refuses processing-halted and thread.messages still answers + --- + duration_ms: 14.963059 + type: 'test' + ... +# Subtest: R3 r4: the chief's hire refuses an instance named user with the code it gives human and tester +ok 21 - R3 r4: the chief's hire refuses an instance named user with the code it gives human and tester + --- + duration_ms: 15.251075 + type: 'test' + ... +# Subtest: R3 r4: a non-function access throws before the store is read +ok 22 - R3 r4: a non-function access throws before the store is read + --- + duration_ms: 0.120342 + type: 'test' + ... +# Subtest: C2-09a: naming an instance cannot bypass its collaborator grant or disclose an ungranted project +ok 23 - C2-09a: naming an instance cannot bypass its collaborator grant or disclose an ungranted project + --- + duration_ms: 16.908476 + type: 'test' + ... +# Subtest: 264e deferred B6: a reply cannot cite the same user in a sibling session +ok 24 - 264e deferred B6: a reply cannot cite the same user in a sibling session + --- + duration_ms: 19.1841 + type: 'test' + ... +1..24 +# tests 24 +# suites 0 +# pass 24 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 589.096835 diff --git a/agents/magica/work/queue-285/gate/bus/viewer.test.mjs.log b/agents/magica/work/queue-285/gate/bus/viewer.test.mjs.log new file mode 100644 index 000000000..faf295bcb --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/viewer.test.mjs.log @@ -0,0 +1,52 @@ +TAP version 13 +# Subtest: 275: VIEWER_VERBS is the ruled read list, inside USER_VERBS +ok 1 - 275: VIEWER_VERBS is the ruled read list, inside USER_VERBS + --- + duration_ms: 1.017094 + type: 'test' + ... +# Subtest: 275: a viewer binds, and each viewer verb answers with what its grant covers +ok 2 - 275: a viewer binds, and each viewer verb answers with what its grant covers + --- + duration_ms: 35.586921 + type: 'test' + ... +# Subtest: 275: a viewer is refused thread.create, thread.open and thread.send access-refused, and nothing is stored +ok 3 - 275: a viewer is refused thread.create, thread.open and thread.send access-refused, and nothing is stored + --- + duration_ms: 20.35424 + type: 'test' + ... +# Subtest: 275: every verb off the user list refuses a viewer access-refused before its own checks +ok 4 - 275: every verb off the user list refuses a viewer access-refused before its own checks + --- + duration_ms: 99.164772 + type: 'test' + ... +# Subtest: 275: mixed grants, collaborator on one project and viewer on another, take the level per project +ok 5 - 275: mixed grants, collaborator on one project and viewer on another, take the level per project + --- + duration_ms: 24.091474 + type: 'test' + ... +# Subtest: 275: board reads refuse users and viewers access-refused +ok 6 - 275: board reads refuse users and viewers access-refused + --- + duration_ms: 75.642366 + type: 'test' + ... +# Subtest: governance pin, user side: decisions, inbox entries, claims, tasks and project files are the owner's, the user reads its messages +ok 7 - governance pin, user side: decisions, inbox entries, claims, tasks and project files are the owner's, the user reads its messages + --- + duration_ms: 41.732538 + type: 'test' + ... +1..7 +# tests 7 +# suites 0 +# pass 7 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 375.802494 diff --git a/agents/magica/work/queue-285/gate/bus/web.test.mjs.log b/agents/magica/work/queue-285/gate/bus/web.test.mjs.log new file mode 100644 index 000000000..c8c642930 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/web.test.mjs.log @@ -0,0 +1,124 @@ +TAP version 13 +# Subtest: web.search: a granted role gets labelled results, and the call is trailed with role, run, verb and query +ok 1 - web.search: a granted role gets labelled results, and the call is trailed with role, run, verb and query + --- + duration_ms: 29.492133 + type: 'test' + ... +# Subtest: web.fetch: a granted role gets the page as labelled text, and the call is trailed with the url +ok 2 - web.fetch: a granted role gets the page as labelled text, and the call is trailed with the url + --- + duration_ms: 19.866309 + type: 'test' + ... +# Subtest: a role without the grant is refused, the refusal is logged with the verb, and nothing is fetched +ok 3 - a role without the grant is refused, the refusal is logged with the verb, and nothing is fetched + --- + duration_ms: 18.647297 + type: 'test' + ... +# Subtest: a broker with no web service refuses a granted role +ok 4 - a broker with no web service refuses a granted role + --- + duration_ms: 13.504609 + type: 'test' + ... +# Subtest: bad requests are refused: unknown verb, extra or missing argument, not a string, a human or reader session +ok 5 - bad requests are refused: unknown verb, extra or missing argument, not a string, a human or reader session + --- + duration_ms: 17.584128 + type: 'test' + ... +# Subtest: a session that is not the role holder is refused +ok 6 - a session that is not the role holder is refused + --- + duration_ms: 11.156727 + type: 'test' + ... +# Subtest: web.mjs's fences hold on the broker side: refusals are normal results with the fixed reason +ok 7 - web.mjs's fences hold on the broker side: refusals are normal results with the fixed reason + --- + duration_ms: 38.446407 + type: 'test' + ... +# Subtest: web.search with no search source configured is a refused result, not an error +ok 8 - web.search with no search source configured is a refused result, not an error + --- + duration_ms: 14.330598 + type: 'test' + ... +# Subtest: a search source that fails with its own refusal, or that throws, is handled +ok 9 - a search source that fails with its own refusal, or that throws, is handled + --- + duration_ms: 19.282117 + type: 'test' + ... +# Subtest: a slow search source ends in a refusal at the deadline +ok 10 - a slow search source ends in a refusal at the deadline + --- + duration_ms: 65.11867 + type: 'test' + ... +# Subtest: a secret in the arguments is refused before anything is trailed or fetched +ok 11 - a secret in the arguments is refused before anything is trailed or fetched + --- + duration_ms: 13.315443 + type: 'test' + ... +# Subtest: over the socket: the server routes web verbs to the service; other roles are refused; no service is web-not-configured +ok 12 - over the socket: the server routes web verbs to the service; other roles are refused; no service is web-not-configured + --- + duration_ms: 66.848041 + type: 'test' + ... +# Subtest: busBusiness: the web grant comes from "web" in the resolved tool limit +ok 13 - busBusiness: the web grant comes from "web" in the resolved tool limit + --- + duration_ms: 0.251761 + type: 'test' + ... +# Subtest: webServices: the business's search-source plug-in and web.searxng var make web.search work; without either it is refused as not configured +ok 14 - webServices: the business's search-source plug-in and web.searxng var make web.search work; without either it is refused as not configured + --- + duration_ms: 44.852308 + type: 'test' + ... +# Subtest: an ungranted call is refused at once: no admission, no wait, nothing touched +ok 15 - an ungranted call is refused at once: no admission, no wait, nothing touched + --- + duration_ms: 18.888999 + type: 'test' + ... +# Subtest: over the socket an ungranted caller is dropped by the server timeout and a granted one gets the longer wait +ok 16 - over the socket an ungranted caller is dropped by the server timeout and a granted one gets the longer wait + --- + duration_ms: 346.722398 + type: 'test' + ... +# Subtest: a search that never answers is aborted at the deadline, the module sees the signal, and the call is trailed as refused (timeout) +ok 17 - a search that never answers is aborted at the deadline, the module sees the signal, and the call is trailed as refused (timeout) + --- + duration_ms: 75.618227 + type: 'test' + ... +# Subtest: a fetch that stalls is cut off at the deadline: the request is destroyed, not left running +ok 18 - a fetch that stalls is cut off at the deadline: the request is destroyed, not left running + --- + duration_ms: 96.163601 + type: 'test' + ... +# Subtest: one query limit: over SEARCH_MAX_QUERY_CHARS or empty is refused with the same reason before any backend, and the tool schema carries the same number +ok 19 - one query limit: over SEARCH_MAX_QUERY_CHARS or empty is refused with the same reason before any backend, and the tool schema carries the same number + --- + duration_ms: 18.083939 + type: 'test' + ... +1..19 +# tests 19 +# suites 0 +# pass 19 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 1028.644089 diff --git a/agents/magica/work/queue-285/gate/bus/workflow-roles.test.mjs.log b/agents/magica/work/queue-285/gate/bus/workflow-roles.test.mjs.log new file mode 100644 index 000000000..b4060d302 --- /dev/null +++ b/agents/magica/work/queue-285/gate/bus/workflow-roles.test.mjs.log @@ -0,0 +1,34 @@ +TAP version 13 +# Subtest: merge-gate's technical raise is cross-role, goes to the cto, and only merge-gate can use the approval +ok 1 - merge-gate's technical raise is cross-role, goes to the cto, and only merge-gate can use the approval + --- + duration_ms: 43.277146 + type: 'test' + ... +# Subtest: merge-gate has no message.send, and without a domain its raise goes to the delivery arbiter +ok 2 - merge-gate has no message.send, and without a domain its raise goes to the delivery arbiter + --- + duration_ms: 24.941938 + type: 'test' + ... +# Subtest: the cto must be able to message merge-gate, or the technical raise is refused (row 133) +ok 3 - the cto must be able to message merge-gate, or the technical raise is refused (row 133) + --- + duration_ms: 21.151798 + type: 'test' + ... +# Subtest: security-reviewer answers a review with its verdict alone; it holds no message.send +ok 4 - security-reviewer answers a review with its verdict alone; it holds no message.send + --- + duration_ms: 25.644597 + type: 'test' + ... +1..4 +# tests 4 +# suites 0 +# pass 4 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 192.50018 diff --git a/agents/magica/work/queue-285/gate/business/access-levels.test.mjs.log b/agents/magica/work/queue-285/gate/business/access-levels.test.mjs.log new file mode 100644 index 000000000..e8b04438a --- /dev/null +++ b/agents/magica/work/queue-285/gate/business/access-levels.test.mjs.log @@ -0,0 +1,40 @@ +TAP version 13 +# Subtest: a grant's level is collaborator or viewer +ok 1 - a grant's level is collaborator or viewer + --- + duration_ms: 1.297066 + type: 'test' + ... +# Subtest: any other level refuses with the key path named +ok 2 - any other level refuses with the key path named + --- + duration_ms: 0.757845 + type: 'test' + ... +# Subtest: covers tells a viewer grant from a collaborator grant +ok 3 - covers tells a viewer grant from a collaborator grant + --- + duration_ms: 0.174265 + type: 'test' + ... +# Subtest: covers refuses a call with no level, so a viewer grant can't slip past a collaborator check +ok 4 - covers refuses a call with no level, so a viewer grant can't slip past a collaborator check + --- + duration_ms: 0.123378 + type: 'test' + ... +# Subtest: a viewer grant still needs its business, project, instance and expiry to cover +ok 5 - a viewer grant still needs its business, project, instance and expiry to cover + --- + duration_ms: 0.121671 + type: 'test' + ... +1..5 +# tests 5 +# suites 0 +# pass 5 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 62.792583 diff --git a/agents/magica/work/queue-285/gate/business/access.test.mjs.log b/agents/magica/work/queue-285/gate/business/access.test.mjs.log new file mode 100644 index 000000000..8d57d3ac4 --- /dev/null +++ b/agents/magica/work/queue-285/gate/business/access.test.mjs.log @@ -0,0 +1,166 @@ +TAP version 13 +# Subtest: a valid document passes and comes back frozen +ok 1 - a valid document passes and comes back frozen + --- + duration_ms: 2.26584 + type: 'test' + ... +# Subtest: checkAccess does not freeze or alias the caller's document +ok 2 - checkAccess does not freeze or alias the caller's document + --- + duration_ms: 0.266319 + type: 'test' + ... +# Subtest: LEVELS is the single allowed level set, collaborator and viewer (row 193a) +ok 3 - LEVELS is the single allowed level set, collaborator and viewer (row 193a) + --- + duration_ms: 0.112336 + type: 'test' + ... +# Subtest: accessFilePath is access.json in the config directory +ok 4 - accessFilePath is access.json in the config directory + --- + duration_ms: 0.344518 + type: 'test' + ... +# Subtest: top level: object, unknown keys, accessVersion, revision, arrays +ok 5 - top level: object, unknown keys, accessVersion, revision, arrays + --- + duration_ms: 1.005278 + type: 'test' + ... +# Subtest: users: unknown keys and the id rule +ok 6 - users: unknown keys and the id rule + --- + duration_ms: 0.292162 + type: 'test' + ... +# Subtest: users: human, tester and any business's human are refused +ok 7 - users: human, tester and any business's human are refused + --- + duration_ms: 0.289841 + type: 'test' + ... +# Subtest: users: home is a given peer or local +ok 8 - users: home is a given peer or local + --- + duration_ms: 0.250798 + type: 'test' + ... +# Subtest: users: subjects, provider, sub, uniqueness and owner subjects +ok 9 - users: subjects, provider, sub, uniqueness and owner subjects + --- + duration_ms: 0.616444 + type: 'test' + ... +# Subtest: grants: unknown keys, id, user and business +ok 10 - grants: unknown keys, id, user and business + --- + duration_ms: 0.519082 + type: 'test' + ... +# Subtest: grants: projects is ["*"] or distinct lowercase UUIDs +ok 11 - grants: projects is ["*"] or distinct lowercase UUIDs + --- + duration_ms: 0.699421 + type: 'test' + ... +# Subtest: grants: instances is ["*"] or distinct declared instances of that business +ok 12 - grants: instances is ["*"] or distinct declared instances of that business + --- + duration_ms: 0.354264 + type: 'test' + ... +# Subtest: grants: any level other than collaborator or viewer refuses, naming grants[i].level +ok 13 - grants: any level other than collaborator or viewer refuses, naming grants[i].level + --- + duration_ms: 0.444955 + type: 'test' + ... +# Subtest: grants: expires is optional ISO time, and a past expiry is not refused +ok 14 - grants: expires is optional ISO time, and a past expiry is not refused + --- + duration_ms: 0.483002 + type: 'test' + ... +# Subtest: the context is required and checked +ok 15 - the context is required and checked + --- + duration_ms: 0.650239 + type: 'test' + ... +# Subtest: loadAccess reads a valid file and checks it +ok 16 - loadAccess reads a valid file and checks it + --- + duration_ms: 0.507835 + type: 'test' + ... +# Subtest: loadAccess refuses a missing file, a symlink and a directory with exit 4 +ok 17 - loadAccess refuses a missing file, a symlink and a directory with exit 4 + --- + duration_ms: 0.381489 + type: 'test' + ... +# Subtest: loadAccess refuses another owner and group or other write +ok 18 - loadAccess refuses another owner and group or other write + --- + duration_ms: 0.388316 + type: 'test' + ... +# Subtest: loadAccess refuses bad JSON and a bad document with exit 2 +ok 19 - loadAccess refuses bad JSON and a bad document with exit 2 + --- + duration_ms: 0.43116 + type: 'test' + ... +# Subtest: covers: * and listed ids match +ok 20 - covers: * and listed ids match + --- + duration_ms: 0.231469 + type: 'test' + ... +# Subtest: covers: an unlisted project, instance or business doesn't match +ok 21 - covers: an unlisted project, instance or business doesn't match + --- + duration_ms: 0.166098 + type: 'test' + ... +# Subtest: covers: an expired grant doesn't match, at and after the instant +ok 22 - covers: an expired grant doesn't match, at and after the instant + --- + duration_ms: 0.150734 + type: 'test' + ... +# Subtest: covers: level is the least level asked for (row 193a) +ok 23 - covers: level is the least level asked for (row 193a) + --- + duration_ms: 0.128754 + type: 'test' + ... +# Subtest: covers: a missing or unknown level throws (row 193a, N1) +ok 24 - covers: a missing or unknown level throws (row 193a, N1) + --- + duration_ms: 0.244608 + type: 'test' + ... +# Subtest: covers: a grant with an unknown level covers nothing (row 193a) +ok 25 - covers: a grant with an unknown level covers nothing (row 193a) + --- + duration_ms: 0.10818 + type: 'test' + ... +# Subtest: covers: now must be a valid Date +ok 26 - covers: now must be a valid Date + --- + duration_ms: 0.129186 + type: 'test' + ... +1..26 +# tests 26 +# suites 0 +# pass 26 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 75.968106 diff --git a/agents/magica/work/queue-285/gate/business/agent-identity.test.mjs.log b/agents/magica/work/queue-285/gate/business/agent-identity.test.mjs.log new file mode 100644 index 000000000..3b5f32c1d --- /dev/null +++ b/agents/magica/work/queue-285/gate/business/agent-identity.test.mjs.log @@ -0,0 +1,82 @@ +TAP version 13 +# Subtest: today's files load unchanged: identity, publish and remote are optional +ok 1 - today's files load unchanged: identity, publish and remote are optional + --- + duration_ms: 5.091897 + type: 'test' + ... +# Subtest: a granted agent loads with its identity, grant and the project's upstream +ok 2 - a granted agent loads with its identity, grant and the project's upstream + --- + duration_ms: 2.250061 + type: 'test' + ... +# Subtest: N10: publish needs identity and a gitea definition, and the error names the grant +ok 3 - N10: publish needs identity and a gitea definition, and the error names the grant + --- + duration_ms: 2.6743 + type: 'test' + ... +# Subtest: row 285: a chief with its gitea reference, identity and publish loads +ok 4 - row 285: a chief with its gitea reference, identity and publish loads + --- + duration_ms: 1.71311 + type: 'test' + ... +# Subtest: publish names declared projects that have a remote, each once +ok 5 - publish names declared projects that have a remote, each once + --- + duration_ms: 3.162037 + type: 'test' + ... +# Subtest: identity fields are checked +ok 6 - identity fields are checked + --- + duration_ms: 3.310648 + type: 'test' + ... +# Subtest: D9c: the upstream must be its own normalized form, exactly /OWNER/REPO +ok 7 - D9c: the upstream must be its own normalized form, exactly /OWNER/REPO + --- + duration_ms: 9.044835 + type: 'test' + ... +# Subtest: D9c: one .git is stripped, and the fork is built from the stripped name +ok 8 - D9c: one .git is stripped, and the fork is built from the stripped name + --- + duration_ms: 0.885767 + type: 'test' + ... +# Subtest: D9c: gitea.url names the instance only +ok 9 - D9c: gitea.url names the instance only + --- + duration_ms: 3.41197 + type: 'test' + ... +# Subtest: the upstream's host and port must be the agent's Gitea's +ok 10 - the upstream's host and port must be the agent's Gitea's + --- + duration_ms: 1.529285 + type: 'test' + ... +# Subtest: remote-not-fork: an upstream the agent's own user owns, compared without case +ok 11 - remote-not-fork: an upstream the agent's own user owns, compared without case + --- + duration_ms: 1.394281 + type: 'test' + ... +# Subtest: store references: own path only (design D1, D3a) +ok 12 - store references: own path only (design D1, D3a) + --- + duration_ms: 0.288947 + type: 'test' + ... +1..12 +# tests 12 +# suites 0 +# pass 12 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 101.926953 diff --git a/agents/magica/work/queue-285/gate/business/assistant.test.mjs.log b/agents/magica/work/queue-285/gate/business/assistant.test.mjs.log new file mode 100644 index 000000000..5571d2c5a --- /dev/null +++ b/agents/magica/work/queue-285/gate/business/assistant.test.mjs.log @@ -0,0 +1,76 @@ +TAP version 13 +# Subtest: the role file loads and resolves through loadBusiness +ok 1 - the role file loads and resolves through loadBusiness + --- + duration_ms: 5.884396 + type: 'test' + ... +# Subtest: the shipped file is exactly the approved list +ok 2 - the shipped file is exactly the approved list + --- + duration_ms: 0.630373 + type: 'test' + ... +# Subtest: the assistant's authority is message.send and record.write within role +ok 3 - the assistant's authority is message.send and record.write within role + --- + duration_ms: 1.654162 + type: 'test' + ... +# Subtest: the assistant talks to the user and the chief of staff only, and no other shipped role is limited +ok 4 - the assistant talks to the user and the chief of staff only, and no other shipped role is limited + --- + duration_ms: 0.636764 + type: 'test' + ... +# Subtest: a business grant through limits does not widen the role +ok 5 - a business grant through limits does not widen the role + --- + duration_ms: 1.806073 + type: 'test' + ... +# Subtest: a launch block whose by is the assistant is refused +ok 6 - a launch block whose by is the assistant is refused + --- + duration_ms: 1.293345 + type: 'test' + ... +# Subtest: the instance takes no credential references and no tracker +ok 7 - the instance takes no credential references and no tracker + --- + duration_ms: 1.898929 + type: 'test' + ... +# Subtest: an arbiter whose role definition declares messaging lists is refused, for each kind +ok 8 - an arbiter whose role definition declares messaging lists is refused, for each kind + --- + duration_ms: 3.849788 + type: 'test' + ... +# Subtest: an arbiter without messaging lists is accepted beside the limited assistant +ok 9 - an arbiter without messaging lists is accepted beside the limited assistant + --- + duration_ms: 1.656276 + type: 'test' + ... +# Subtest: the contract passes work to the chief of staff and directs no one +ok 10 - the contract passes work to the chief of staff and directs no one + --- + duration_ms: 0.501764 + type: 'test' + ... +# Subtest: REQ-HARN-2: the assistant, companion and research hold the web grant, and no other role file does +ok 11 - REQ-HARN-2: the assistant, companion and research hold the web grant, and no other role file does + --- + duration_ms: 1.083631 + type: 'test' + ... +1..11 +# tests 11 +# suites 0 +# pass 11 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 79.71158 diff --git a/agents/magica/work/queue-285/gate/business/business.test.mjs.log b/agents/magica/work/queue-285/gate/business/business.test.mjs.log new file mode 100644 index 000000000..54b3b43b8 --- /dev/null +++ b/agents/magica/work/queue-285/gate/business/business.test.mjs.log @@ -0,0 +1,148 @@ +TAP version 13 +# Subtest: C2-04: library mappings load without roots, remain frozen, and retain mapping refusals +ok 1 - C2-04: library mappings load without roots, remain frozen, and retain mapping refusals + --- + duration_ms: 11.952862 + type: 'test' + ... +# Subtest: C2-04: an otherwise valid publish grant cannot name a library repo +ok 2 - C2-04: an otherwise valid publish grant cannot name a library repo + --- + duration_ms: 1.727425 + type: 'test' + ... +# Subtest: config directory and file path follow MOSAIC_CONFIG +ok 3 - config directory and file path follow MOSAIC_CONFIG + --- + duration_ms: 0.216648 + type: 'test' + ... +# Subtest: the fixture business validates and comes back frozen +ok 4 - the fixture business validates and comes back frozen + --- + duration_ms: 1.134394 + type: 'test' + ... +# Subtest: two instances may share a definition +ok 5 - two instances may share a definition + --- + duration_ms: 1.072913 + type: 'test' + ... +# Subtest: top-level refusals +ok 6 - top-level refusals + --- + duration_ms: 3.257726 + type: 'test' + ... +# Subtest: arbiters and projects +ok 7 - arbiters and projects + --- + duration_ms: 4.383802 + type: 'test' + ... +# Subtest: role instances +ok 8 - role instances + --- + duration_ms: 2.563649 + type: 'test' + ... +# Subtest: Vikunja bots +ok 9 - Vikunja bots + --- + duration_ms: 5.420411 + type: 'test' + ... +# Subtest: a role without Vikunja takes no tracker block +ok 10 - a role without Vikunja takes no tracker block + --- + duration_ms: 2.48482 + type: 'test' + ... +# Subtest: credential references match the definition's services +ok 11 - credential references match the definition's services + --- + duration_ms: 2.366405 + type: 'test' + ... +# Subtest: launch +ok 12 - launch + --- + duration_ms: 8.567756 + type: 'test' + ... +# Subtest: REQ-THREAD-2 REQ-LAUNCH-1 launch.threadIdleSeconds: absent is the default, a positive integer is used, anything else refuses +ok 13 - REQ-THREAD-2 REQ-LAUNCH-1 launch.threadIdleSeconds: absent is the default, a positive integer is used, anything else refuses + --- + duration_ms: 4.518613 + type: 'test' + ... +# Subtest: loadBusiness: file checks +ok 14 - loadBusiness: file checks + --- + duration_ms: 2.006595 + type: 'test' + ... +# Subtest: loadBusiness: not a regular file +ok 15 - loadBusiness: not a regular file + --- + duration_ms: 40.7709 + type: 'test' + ... +# Subtest: loading writes nothing +ok 16 - loading writes nothing + --- + duration_ms: 1.238911 + type: 'test' + ... +# Subtest: names that are Object.prototype properties don't count as declared +ok 17 - names that are Object.prototype properties don't count as declared + --- + duration_ms: 3.910752 + type: 'test' + ... +# Subtest: the shipped example refuses as written and validates once filled in +ok 18 - the shipped example refuses as written and validates once filled in + --- + duration_ms: 0.95096 + type: 'test' + ... +# Subtest: persona vars: agent layer, creative definition only, both or neither +ok 19 - persona vars: agent layer, creative definition only, both or neither + --- + duration_ms: 9.451181 + type: 'test' + ... +# Subtest: row 285: a chief or creative instance without credentials.gitea refuses at load +ok 20 - row 285: a chief or creative instance without credentials.gitea refuses at load + --- + duration_ms: 7.316882 + type: 'test' + ... +# Subtest: row 285: a creative instance with identity and publish loads +ok 21 - row 285: a creative instance with identity and publish loads + --- + duration_ms: 0.899726 + type: 'test' + ... +# Subtest: row 194 keep, noHire and retired validate, and a file without them loads as before +ok 22 - row 194 keep, noHire and retired validate, and a file without them loads as before + --- + duration_ms: 2.004463 + type: 'test' + ... +# Subtest: row 194 each bad keep, noHire or retired entry refuses +ok 23 - row 194 each bad keep, noHire or retired entry refuses + --- + duration_ms: 6.502144 + type: 'test' + ... +1..23 +# tests 23 +# suites 0 +# pass 23 +# fail 0 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 190.455885 diff --git a/agents/magica/work/queue-285/gate/business/case1-business-file.test.mjs.log b/agents/magica/work/queue-285/gate/business/case1-business-file.test.mjs.log new file mode 100644 index 000000000..1d46396ea --- /dev/null +++ b/agents/magica/work/queue-285/gate/business/case1-business-file.test.mjs.log @@ -0,0 +1,128 @@ +TAP version 13 +# Subtest: row 323: committed Case 1 document loads unchanged through the business loader +not ok 1 - row 323: committed Case 1 document loads unchanged through the business loader + --- + duration_ms: 11.423463 + type: 'test' + location: '/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row285-r3/packages/business/tests/case1-business-file.test.mjs:57:1' + failureType: 'testCodeFailure' + error: '/mnt/storage/scratch/tmp/dizpeO/mosaic-business-ynbH9s/home/.config/mosaic-dev/businesses/mosaic-stack.json roles.chief.credentials must reference exactly the services its role definition needs (gitea; got none)' + 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) + checkCredentialMap (file:///home/jwoltje/.t3/worktrees/mosaic-stack/magica-row285-r3/packages/business/src/business.mjs:51:5) + checkRoles (file:///home/jwoltje/.t3/worktrees/mosaic-stack/magica-row285-r3/packages/business/src/business.mjs:157:20) + validateBusinessDocument (file:///home/jwoltje/.t3/worktrees/mosaic-stack/magica-row285-r3/packages/business/src/business.mjs:245:34) + loadBusiness (file:///home/jwoltje/.t3/worktrees/mosaic-stack/magica-row285-r3/packages/business/src/business.mjs:325:10) + TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/magica-row285-r3/packages/business/tests/case1-business-file.test.mjs:62:13) + 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 323: real business validate accepts the Case 1 fixture without tracker credentials +not ok 2 - row 323: real business validate accepts the Case 1 fixture without tracker credentials + --- + duration_ms: 66.840353 + type: 'test' + location: '/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row285-r3/packages/business/tests/case1-business-file.test.mjs:86:1' + failureType: 'testCodeFailure' + error: |- + mosaic business: /mnt/storage/scratch/tmp/dizpeO/mosaic-business-bmTVa9/home/.config/mosaic-dev/businesses/mosaic-stack.json roles.chief.credentials must reference exactly the services its role definition needs (gitea; got none) + + + 2 !== 0 + + code: 'ERR_ASSERTION' + name: 'AssertionError' + expected: 0 + actual: 2 + operator: 'strictEqual' + stack: |- + TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/magica-row285-r3/packages/business/tests/case1-business-file.test.mjs:91: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 startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) + ... +# Subtest: row 323: real factory install accepts the document's scratch input and writes it unchanged +not ok 3 - row 323: real factory install accepts the document's scratch input and writes it unchanged + --- + duration_ms: 176.003358 + type: 'test' + location: '/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row285-r3/packages/business/tests/case1-business-file.test.mjs:95:1' + failureType: 'testCodeFailure' + error: |- + case2-install: config /mnt/storage/scratch/tmp/dizpeO/mosaic-business-74MpBD/home/.config/mosaic-dev/config.json + case2-install: copy /mnt/storage/scratch/tmp/dizpeO/mosaic-business-74MpBD/home/.local/share/mosaic-stack/copies/cccccccccccccccccccccccccccccccccccccccc + case2-install: business file /mnt/storage/scratch/tmp/dizpeO/mosaic-business-74MpBD/home/.config/mosaic-dev/businesses/mosaic-stack.json written + case2-install: refused: validate: mosaic business: /mnt/storage/scratch/tmp/dizpeO/mosaic-business-74MpBD/home/.config/mosaic-dev/businesses/mosaic-stack.json roles.chief.credentials must reference exactly the services its role definition needs (gitea; got none); the business file this run wrote is removed + + + 1 !== 0 + + code: 'ERR_ASSERTION' + name: 'AssertionError' + expected: 0 + actual: 1 + operator: 'strictEqual' + stack: |- + TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/magica-row285-r3/packages/business/tests/case1-business-file.test.mjs:98: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 323: the Case 1 business boots without a tracker or @sync credential +not ok 4 - row 323: the Case 1 business boots without a tracker or @sync credential + --- + duration_ms: 1.622916 + type: 'test' + location: '/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row285-r3/packages/business/tests/case1-business-file.test.mjs:105:1' + failureType: 'testCodeFailure' + error: '/mnt/storage/scratch/tmp/dizpeO/mosaic-business-JhKTnB/home/.config/mosaic-dev/businesses/mosaic-stack.json roles.chief.credentials must reference exactly the services its role definition needs (gitea; got none)' + code: 'ERR_TEST_FAILURE' + name: 'CliError' + stack: |- + business (file:///home/jwoltje/.t3/worktrees/mosaic-stack/magica-row285-r3/packages/cli/src/config.mjs:45:47) + bootConfig (file:///home/jwoltje/.t3/worktrees/mosaic-stack/magica-row285-r3/packages/cli/src/config.mjs:126:10) + TestContext. (file:///home/jwoltje/.t3/worktrees/mosaic-stack/magica-row285-r3/packages/business/tests/case1-business-file.test.mjs:108:16) + 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 323: factory install refuses bus.tester false before writing +ok 5 - row 323: factory install refuses bus.tester false before writing + --- + duration_ms: 36.645001 + type: 'test' + ... +# Subtest: row 323: literal library key refuses through final business validation +ok 6 - row 323: literal library key refuses through final business validation + --- + duration_ms: 176.379622 + type: 'test' + ... +# Subtest: row 323: a library project refuses through the factory profile plan +ok 7 - row 323: a library project refuses through the factory profile plan + --- + duration_ms: 34.838768 + type: 'test' + ... +1..7 +# tests 7 +# suites 0 +# pass 3 +# fail 4 +# cancelled 0 +# skipped 0 +# todo 0 +# duration_ms 632.214871 diff --git a/agents/magica/work/queue-285/gate/npm-root.log b/agents/magica/work/queue-285/gate/npm-root.log new file mode 100644 index 000000000..dd1f3710a --- /dev/null +++ b/agents/magica/work/queue-285/gate/npm-root.log @@ -0,0 +1,3 @@ +npm warn deprecated node-domexception@1.0.0: Use your platform's native DOMException instead + +added 128 packages in 1s diff --git a/agents/magica/work/queue-285/gate/npm-webui-r2.log b/agents/magica/work/queue-285/gate/npm-webui-r2.log new file mode 100644 index 000000000..4500ed02c --- /dev/null +++ b/agents/magica/work/queue-285/gate/npm-webui-r2.log @@ -0,0 +1,2 @@ + +added 2 packages in 188ms diff --git a/agents/magica/work/queue-285/gate/npm-webui.log b/agents/magica/work/queue-285/gate/npm-webui.log new file mode 100644 index 000000000..4a4fd8a2c --- /dev/null +++ b/agents/magica/work/queue-285/gate/npm-webui.log @@ -0,0 +1,2 @@ + +added 2 packages in 191ms diff --git a/agents/magica/work/queue-285/gate/run-mutants.py b/agents/magica/work/queue-285/gate/run-mutants.py new file mode 100644 index 000000000..5721d4f19 --- /dev/null +++ b/agents/magica/work/queue-285/gate/run-mutants.py @@ -0,0 +1,68 @@ +"""Row 285 planned mutation evidence; run only in the authorized gate slot.""" +import datetime +import difflib +import hashlib +import os +from pathlib import Path +import subprocess +import sys + +ROOT = Path(__file__).resolve().parents[5] +GATE = ROOT / 'agents/magica/work/queue-285/gate' +os.chdir(ROOT) +os.environ['TMPDIR'] = (GATE / 'tmpdir.txt').read_text().strip() +MUTANTS = [ + ('M1', 'packages/bus/src/broker.mjs', " || role.definition === STAFF_TO", '', 'packages/bus/tests/gitea-grant.test.mjs', 'X-G1: the chief of staff refuses at raise'), + ('M2', 'packages/business/src/vocabulary.mjs', 'export const CREATIVE_ACTIONS = Object.freeze(["message.send", "library.write"]);', 'export const CREATIVE_ACTIONS = Object.freeze(["message.send", "library.write", "role.end"]);', 'packages/business/tests/role.test.mjs', 'M1: a creative role file wider than read and answer is refused'), + ('M3', 'packages/business/src/role.mjs', ' if (services.length > 0) refuse(`creative role ${role.name} may hold only the ${CREATIVE_SERVICE} credential (got ${services.join(", ")})`);', '', 'packages/business/tests/role.test.mjs', 'M1: a creative role file wider than read and answer is refused'), + ('M4', 'packages/business/src/role.mjs', 'role.authority.crossRole.length > 0 || ', '', 'packages/business/tests/role.test.mjs', 'M1: a creative role file wider than read and answer is refused'), + ('M5', 'roles/companion.json', '"message.send", "library.write"', '"message.send"', 'packages/business/tests/role.test.mjs', 'the six creative roles load:'), + ('M6', 'roles/chief-of-staff.json', '"read:repository", "read:user"', '"read:repository", "read:user", "write:repository"', 'packages/business/tests/chief-of-staff.test.mjs', 'the shipped file is exactly the approved list'), + ('M9', 'packages/business/src/business.mjs', ' || !services.includes("gitea")', '', 'packages/business/tests/agent-identity.test.mjs', 'N10: publish needs identity and a gitea definition'), + # Amendment 1 (mos-1580, sage-4059): the same dropped condition must fail both files. + ('M10-new', 'packages/business/src/business.mjs', ' && !(entry.definition === "chief-of-staff" && !hasLibrary && s === "gitea")', '', 'packages/business/tests/chief-library-credentials.test.mjs', 'row 285 amendment 1: no library loads with empty chief credentials'), + ('M10-case1', 'packages/business/src/business.mjs', ' && !(entry.definition === "chief-of-staff" && !hasLibrary && s === "gitea")', '', 'packages/business/tests/case1-business-file.test.mjs', 'row 323: committed Case 1 document loads unchanged through the business loader'), +] + +def sha(data): + return hashlib.sha256(data).hexdigest() + +for name, relative, old, new, test, pattern in MUTANTS: + path = ROOT / relative + original = path.read_bytes() + text = original.decode() + if text.count(old) != 1: + sys.exit(f'{name}: mutation target count {text.count(old)}; refusing') + changed = text.replace(old, new).encode() + folder = GATE / 'mutants' + folder.mkdir(exist_ok=True) + (folder / (name + '.patch')).write_text(''.join(difflib.unified_diff(text.splitlines(True), changed.decode().splitlines(True), fromfile=relative, tofile=relative))) + cmd = ['timeout', '-k', '10', '180', 'node', '--test', '--test-reporter=tap', '--test-name-pattern=' + pattern, test] + before = sha(original) + try: + path.write_bytes(changed) + with (folder / (name + '.log')).open('w') as log: + result = subprocess.run(cmd, stdout=log, stderr=subprocess.STDOUT) + finally: + path.write_bytes(original) + after = sha(path.read_bytes()) + if after != before: + sys.exit(f'{name}: RESTORE FAILURE') + output = (folder / (name + '.log')).read_text() + killed = result.returncode == 1 and 'not ok ' in output and pattern in output and ('AssertionError' in output or 'ERR_ASSERTION' in output) + receipt = '\n'.join([ + datetime.datetime.now(datetime.timezone.utc).isoformat(), + 'command: ' + ' '.join(cmd), + 'source: ' + relative, + 'before sha256: ' + before, + 'mutant sha256: ' + sha(changed), + 'restored sha256: ' + after, + 'node/timeout exit: ' + str(result.returncode), + 'result: ' + ('KILLED' if killed else 'UNEXPECTED'), + ]) + '\n' + (folder / (name + '.txt')).write_text(receipt) + print(name + ' ' + ('KILLED' if killed else 'UNEXPECTED') + ' source restored ' + after, flush=True) + if not killed: + print(output[-7000:]) + sys.exit(1) +print('All nine planned mutant checks KILLED and sources restored.', flush=True) diff --git a/agents/magica/work/queue-285/gate/runs.txt b/agents/magica/work/queue-285/gate/runs.txt new file mode 100644 index 000000000..fa4e94748 --- /dev/null +++ b/agents/magica/work/queue-285/gate/runs.txt @@ -0,0 +1,114 @@ +2026-10-24T10:28:49.478396+00:00 bus/access-revoke.test.mjs exit=0 # tests 10; # pass 10; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:28:49.842823+00:00 bus/account-migration.test.mjs exit=0 # tests 3; # pass 3; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:28:49.923283+00:00 bus/address.test.mjs exit=0 # tests 15; # pass 15; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:28:50.333319+00:00 bus/agents.test.mjs exit=0 # tests 11; # pass 11; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:28:50.579383+00:00 bus/approval-binding.test.mjs exit=0 # tests 6; # pass 6; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:28:50.999417+00:00 bus/broker.test.mjs exit=0 # tests 16; # pass 16; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:28:51.081524+00:00 bus/business.test.mjs exit=0 # tests 1; # pass 1; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:28:51.570345+00:00 bus/channel-proof.test.mjs exit=0 # tests 2; # pass 2; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:28:53.783621+00:00 bus/chief-of-staff.test.mjs exit=0 # tests 42; # pass 42; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:28:53.935022+00:00 bus/comment-cursors.test.mjs exit=0 # tests 2; # pass 2; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:28:54.479290+00:00 bus/comment-migration.test.mjs exit=0 # tests 5; # pass 5; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:28:55.616671+00:00 bus/console-decide.test.mjs exit=0 # tests 12; # pass 12; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:28:55.978352+00:00 bus/creative.test.mjs exit=0 # tests 4; # pass 4; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:28:56.102574+00:00 bus/credential-claim.test.mjs exit=0 # tests 8; # pass 8; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:28:56.414797+00:00 bus/credential-status.test.mjs exit=0 # tests 4; # pass 4; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:28:56.544254+00:00 bus/credential-store.test.mjs exit=0 # tests 12; # pass 12; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:28:56.822207+00:00 bus/credential-verbs.test.mjs exit=0 # tests 2; # pass 2; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:28:56.917818+00:00 bus/credentials.test.mjs exit=0 # tests 5; # pass 5; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:28:57.587760+00:00 bus/csuite-messaging.test.mjs exit=0 # tests 16; # pass 16; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:28:57.944845+00:00 bus/daily-quota-runtime.test.mjs exit=0 # tests 4; # pass 4; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:28:58.241231+00:00 bus/decision-close.test.mjs exit=0 # tests 8; # pass 8; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:28:58.478132+00:00 bus/decision-route.test.mjs exit=0 # tests 5; # pass 5; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:28:58.861731+00:00 bus/decisions.test.mjs exit=0 # tests 7; # pass 7; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:28:59.225727+00:00 bus/end-launch.test.mjs exit=0 # tests 7; # pass 7; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:29:02.595368+00:00 bus/fire-revokes-grants.test.mjs exit=0 # tests 24; # pass 24; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:29:14.473084+00:00 bus/gitea-grant-docker.test.mjs exit=0 # tests 1; # pass 1; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:29:23.379107+00:00 bus/gitea-grant.test.mjs exit=0 # tests 50; # pass 50; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:29:23.789903+00:00 bus/gitea-migration.test.mjs exit=0 # tests 5; # pass 5; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:29:25.505736+00:00 bus/grant-enroll.test.mjs exit=0 # tests 24; # pass 24; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:29:47.138723+00:00 bus/grant-executor.test.mjs exit=0 # tests 42; # pass 42; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:29:47.542386+00:00 bus/grant-host.test.mjs exit=0 # tests 10; # pass 10; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:29:48.011588+00:00 bus/grant-migration.test.mjs exit=0 # tests 6; # pass 6; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:29:48.221641+00:00 bus/grant-scope-runtime.test.mjs exit=0 # tests 1; # pass 1; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:29:49.409463+00:00 bus/grant-scope.test.mjs exit=0 # tests 14; # pass 14; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:29:50.830444+00:00 bus/hard-waits.test.mjs exit=0 # tests 13; # pass 13; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:05.463177+00:00 bus/host-run.test.mjs exit=0 # tests 26; # pass 26; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:08.908005+00:00 bus/host-tools.test.mjs exit=0 # tests 6; # pass 6; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:08.992836+00:00 bus/human.test.mjs exit=0 # tests 4; # pass 4; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:09.294898+00:00 bus/instances-verb.test.mjs exit=0 # tests 3; # pass 3; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:09.427963+00:00 bus/interpreter.test.mjs exit=0 # tests 5; # pass 5; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:10.269039+00:00 bus/land.test.mjs exit=0 # tests 18; # pass 18; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:10.528541+00:00 bus/launch-notice.test.mjs exit=0 # tests 8; # pass 8; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:10.741255+00:00 bus/launcher-released.test.mjs exit=0 # tests 3; # pass 3; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:17.584538+00:00 bus/library-sync.test.mjs exit=0 # tests 6; # pass 6; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:18.238240+00:00 bus/library.test.mjs exit=0 # tests 6; # pass 6; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:18.920504+00:00 bus/lifecycle-revoke.test.mjs exit=0 # tests 8; # pass 8; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:19.449429+00:00 bus/lifecycle-verbs.test.mjs exit=0 # tests 13; # pass 13; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:19.720551+00:00 bus/limit-checks.test.mjs exit=0 # tests 16; # pass 16; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:20.006160+00:00 bus/limit-stop.test.mjs exit=0 # tests 5; # pass 5; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:20.415483+00:00 bus/limits-runtime.test.mjs exit=0 # tests 5; # pass 5; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:20.725384+00:00 bus/limits.test.mjs exit=0 # tests 3; # pass 3; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:20.906315+00:00 bus/message-citation.test.mjs exit=0 # tests 3; # pass 3; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:22.397588+00:00 bus/message-filter.test.mjs exit=0 # tests 6; # pass 6; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:22.870743+00:00 bus/messages.test.mjs exit=0 # tests 4; # pass 4; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:23.359873+00:00 bus/messaging.test.mjs exit=0 # tests 13; # pass 13; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:23.533384+00:00 bus/name-migration.test.mjs exit=0 # tests 1; # pass 1; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:23.804374+00:00 bus/names.test.mjs exit=0 # tests 7; # pass 7; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:23.959815+00:00 bus/peer-transport.test.mjs exit=0 # tests 4; # pass 4; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:24.326595+00:00 bus/peercred.test.mjs exit=0 # tests 5; # pass 5; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:24.624460+00:00 bus/plugins-verb.test.mjs exit=0 # tests 3; # pass 3; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:24.709637+00:00 bus/principal.test.mjs exit=0 # tests 5; # pass 5; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:25.993585+00:00 bus/process.test.mjs exit=0 # tests 8; # pass 8; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:26.362530+00:00 bus/processing-runtime.test.mjs exit=0 # tests 2; # pass 2; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:26.627221+00:00 bus/processing-timeout.test.mjs exit=0 # tests 1; # pass 1; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:26.752227+00:00 bus/processing-web.test.mjs exit=0 # tests 1; # pass 1; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:27.113799+00:00 bus/processing.test.mjs exit=0 # tests 14; # pass 14; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:27.277779+00:00 bus/project-await.test.mjs exit=0 # tests 4; # pass 4; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:28.101814+00:00 bus/project-files.test.mjs exit=0 # tests 8; # pass 8; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:28.488750+00:00 bus/project-runtime.test.mjs exit=0 # tests 3; # pass 3; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:29.203319+00:00 bus/publish.test.mjs exit=0 # tests 13; # pass 13; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:30.109898+00:00 bus/reload.test.mjs exit=0 # tests 10; # pass 10; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:30.418121+00:00 bus/replies.test.mjs exit=0 # tests 7; # pass 7; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:30.588863+00:00 bus/requirements.test.mjs exit=0 # tests 3; # pass 3; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:30.907627+00:00 bus/review.test.mjs exit=0 # tests 8; # pass 8; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:31.117858+00:00 bus/revoke-window.test.mjs exit=0 # tests 3; # pass 3; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:32.008755+00:00 bus/rooms.test.mjs exit=0 # tests 18; # pass 18; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:32.287604+00:00 bus/routes-verb.test.mjs exit=0 # tests 4; # pass 4; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:32.447902+00:00 bus/schema.test.mjs exit=0 # tests 1; # pass 1; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:35.551750+00:00 bus/session-clear.test.mjs exit=0 # tests 19; # pass 19; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:35.728038+00:00 bus/session-compactions.test.mjs exit=0 # tests 4; # pass 4; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:36.323666+00:00 bus/sessions.test.mjs exit=0 # tests 7; # pass 7; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:36.683220+00:00 bus/single-use.test.mjs exit=0 # tests 12; # pass 12; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:36.867801+00:00 bus/spec-migration.test.mjs exit=0 # tests 1; # pass 1; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:37.940493+00:00 bus/spec-review.test.mjs exit=0 # tests 12; # pass 12; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:38.595522+00:00 bus/spec-socket.test.mjs exit=0 # tests 6; # pass 6; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:38.992895+00:00 bus/spec.test.mjs exit=0 # tests 4; # pass 4; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:40.300799+00:00 bus/staff-request.test.mjs exit=0 # tests 10; # pass 10; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:40.529530+00:00 bus/state.test.mjs exit=0 # tests 8; # pass 8; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:40.745374+00:00 bus/store.test.mjs exit=0 # tests 7; # pass 7; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:41.646988+00:00 bus/task-page.test.mjs exit=0 # tests 6; # pass 6; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:41.841506+00:00 bus/task-read.test.mjs exit=0 # tests 3; # pass 3; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:42.697307+00:00 bus/tasks.test.mjs exit=0 # tests 9; # pass 9; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:43.082386+00:00 bus/tester-threads.test.mjs exit=0 # tests 15; # pass 15; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:43.575584+00:00 bus/tester-writes.test.mjs exit=0 # tests 8; # pass 8; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:45.080418+00:00 bus/tester.test.mjs exit=0 # tests 14; # pass 14; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:45.309760+00:00 bus/thread-claims.test.mjs exit=0 # tests 6; # pass 6; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:45.658164+00:00 bus/thread-migration.test.mjs exit=0 # tests 3; # pass 3; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:46.402756+00:00 bus/thread-shares.test.mjs exit=0 # tests 16; # pass 16; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:47.745844+00:00 bus/threads.test.mjs exit=0 # tests 20; # pass 20; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:48.033717+00:00 bus/transport.test.mjs exit=0 # tests 5; # pass 5; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:48.178487+00:00 bus/usage-broker.test.mjs exit=0 # tests 1; # pass 1; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:48.356137+00:00 bus/usage-migration.test.mjs exit=0 # tests 1; # pass 1; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:48.568543+00:00 bus/usage-runtime.test.mjs exit=0 # tests 1; # pass 1; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:48.836982+00:00 bus/usage.test.mjs exit=0 # tests 15; # pass 15; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:49.455063+00:00 bus/user-principal.test.mjs exit=0 # tests 24; # pass 24; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:49.859070+00:00 bus/viewer.test.mjs exit=0 # tests 7; # pass 7; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:50.916448+00:00 bus/web.test.mjs exit=0 # tests 19; # pass 19; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:51.135597+00:00 bus/workflow-roles.test.mjs exit=0 # tests 4; # pass 4; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:51.227343+00:00 business/access-levels.test.mjs exit=0 # tests 5; # pass 5; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:51.332918+00:00 business/access.test.mjs exit=0 # tests 26; # pass 26; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:51.466364+00:00 business/agent-identity.test.mjs exit=0 # tests 12; # pass 12; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:51.579553+00:00 business/assistant.test.mjs exit=0 # tests 11; # pass 11; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:51.799925+00:00 business/business.test.mjs exit=0 # tests 23; # pass 23; # fail 0; # cancelled 0; # skipped 0 +2026-10-24T10:30:52.461846+00:00 business/case1-business-file.test.mjs exit=1 # tests 7; # pass 3; # fail 4; # cancelled 0; # skipped 0 diff --git a/agents/magica/work/queue-285/gate/tmpdir.txt b/agents/magica/work/queue-285/gate/tmpdir.txt new file mode 100644 index 000000000..cd25b3fc2 --- /dev/null +++ b/agents/magica/work/queue-285/gate/tmpdir.txt @@ -0,0 +1 @@ +/mnt/storage/scratch/tmp/dizpeO diff --git a/docs/SESSIONS.md b/docs/SESSIONS.md index a7f49839a..7fa548131 100644 --- a/docs/SESSIONS.md +++ b/docs/SESSIONS.md @@ -1637,3 +1637,7 @@ are never rewritten or removed; corrections are new entries. 2026-10-24T10:02Z | Magica (483bbea5-e548-4c97-9b85-8f29ba81e427) | Row 285 / #1790 r3 replay, sage-4039 | Seven Scrooge commits replayed onto b19ffa04f; five overlaps auto-merged and inspected; range-diff, stable patch IDs and 291 conservative reader inventory in agents/magica/work/queue-285/BUILD.md. Every test added/removed line matches r2; N1 deferred. Canonical queue move magica-285-start rev3889 succeeded. No npm/tests; own-branch push for CLEAR next. 2026-10-24T09:58:36Z | Magica | Row 285 timestamp correction | Prior Magica replay entry marked 10:02Z used an incorrect timestamp; actual replay/evidence commit preceded 09:58:22Z. Its technical state is unchanged. + +2026-10-24T10:32:02Z | Magica | Row285 sage-4048 gate STOP | Own installs complete; bus958/958 zero skip/cancel; business partial80pass/4fail on old case1-business-file.test.mjs, missing chief gitea in committed Case1 document. Stopped before further files; Sage notified magica-0002, no source/old-test edits or mutants. Evidence in agents/magica/work/queue-285/gate. + +2026-10-24T10:42:28Z | Magica | Row285 Amendment1 build | mos-1580/sage-4059/4060: chief gitea exact iff library, new three-case file and M10 dual kill plan. Restore own unconditional fixture hunks; Case1 doc/test base-identical. No tests under held slot; own-branch push before CLEAR authorized. Static residual library-fixture needs reported. diff --git a/packages/business/README.md b/packages/business/README.md index 10b265af4..6bd61b4c0 100644 --- a/packages/business/README.md +++ b/packages/business/README.md @@ -167,7 +167,7 @@ thread run, and it configures the assistant through `assistants` (Assistant settings, below) and names instances through `set_name`. PRD 1.7 REQ-COS-3 (row 194) grants it `role.hire` and `role.fire` within role: it hires and fires with a reason and no decision, through the broker's `instance.hire` and -`instance.fire`, which the harness's `hire` and `fire` tools call. It has the same read-only tools, and its one credential reference is gitea, for the read grant the library mirror fetches with (row 285). The broker holds that token, never the agent. It is the only shipped role that holds `role.launch`, so +`instance.fire`, which the harness's `hire` and `fire` tools call. It has the same read-only tools. When the business declares a library, its one credential reference is gitea, for the read grant the library mirror fetches with (row 285, amendment 1, mos-1580). With no library it holds no credential references. The broker holds any token, never the agent. It is the only shipped role that holds `role.launch`, so it is the only role `launch.by` can name. The PM holds no `role.launch` (REQ-LAUNCH-1); it asks the chief of staff for a session. @@ -178,7 +178,7 @@ use the shared, broker-backed organization writer. The instance names are the ow example file's: ```json -"chief": { "definition": "chief-of-staff", "credentials": { "gitea": { "file": "/home/you/.config/mosaic-dev/secrets/mosaic-stack/chief-of-staff-gitea.token", "rotateBy": "YYYY-MM-DD" } }, "vars": { "model": "opus" } }, +"chief": { "definition": "chief-of-staff", "vars": { "model": "opus" } }, "assistant": { "definition": "assistant", "holder": "mos", "vars": { "model": "opus" } } ... "launch": { "by": "chief", "instances": ["coder", "reviewer"], "models": { @@ -187,8 +187,10 @@ example file's: }, "limits": { "models": { "anthropic": { "claude-opus-5-5": 4, "claude-sonnet-5-5": 4 } } } } ``` -Neither entry has a `tracker`. The chief's `credentials` must name exactly -its definition's services, gitea alone, and the assistant has none. A +Neither entry has a `tracker` or credential references in this example, which has +no library. A business with a library must give the chief exactly one `gitea` +reference; a business without a library must give it none (mos-1580). The +assistant has none. A `{ "store": true, "rotateBy": "YYYY-MM-DD" }` reference works as well as a file. Neither form creates an account, mints a token or grants anything. A session that launches needs a harness and a model, so give each instance `vars` (`harness`, `model`) as the PM has, unless the system's diff --git a/packages/business/examples/mosaic-stack.example.json b/packages/business/examples/mosaic-stack.example.json index ce82dfd33..3a81ca0fa 100644 --- a/packages/business/examples/mosaic-stack.example.json +++ b/packages/business/examples/mosaic-stack.example.json @@ -113,12 +113,6 @@ }, "chief": { "definition": "chief-of-staff", - "credentials": { - "gitea": { - "file": "/home/you/.config/mosaic-dev/secrets/mosaic-stack/chief-of-staff-gitea.token", - "rotateBy": "YYYY-MM-DD" - } - }, "vars": { "model": "opus" } diff --git a/packages/business/src/business.mjs b/packages/business/src/business.mjs index c5b1d81c7..351473c22 100644 --- a/packages/business/src/business.mjs +++ b/packages/business/src/business.mjs @@ -117,7 +117,7 @@ function checkPersonaVars(vars, definition, at) { // so the business file can't name them. The key stays known so the refusal says where they went. const HOSTS_MOVED = "lives in the bus store now: enroll a host with a host-enroll grant (mosaic hosts status)"; -function checkRoles(roles, file, rolesDir, business) { +function checkRoles(roles, file, rolesDir, business, hasLibrary) { const where = `${file} roles`; requireObject(roles, where); if (Object.keys(roles).length === 0) refuse(`${where} must declare at least one role instance`); @@ -137,7 +137,12 @@ function checkRoles(roles, file, rolesDir, business) { const services = definition.credentials.map((c) => c.service); if (entry.hosts !== undefined) refuse(`${at}.hosts ${HOSTS_MOVED}`); // A host. key reference comes from the agent's grant record at bus start (r6 X4), never from here. - const kinds = services.filter((s) => s !== HOST_SERVICE); + // Row 285 amendment 1 (mos-1580): the chief needs its read reference only for a library. + // Other definitions keep the exact service list; checkCredentialMap itself is unchanged. + const kinds = services.filter((s) => s !== HOST_SERVICE && !(entry.definition === "chief-of-staff" && !hasLibrary && s === "gitea")); + if (entry.definition === "chief-of-staff" && hasLibrary && !Object.hasOwn(entry.credentials ?? {}, "gitea")) { + refuse(`chief-library-gitea-required: ${at}.credentials must reference gitea because this business declares a library`); + } let tracker = null; if (services.includes("vikunja")) { if (entry.tracker === undefined) refuse(`${at} needs "tracker" with its Vikunja bot, because ${entry.definition} uses vikunja`); @@ -242,7 +247,8 @@ export function validateBusinessDocument(document, file, { rolesDir }) { const human = requireId(document.human, "business human"); const vars = checkVars(document.vars ?? {}, "business", `${file} vars`); if (document.hosts !== undefined) refuse(`${file} hosts ${HOSTS_MOVED}`); - const { roles, definitions } = checkRoles(document.roles, file, rolesDir, document.id); + const hasLibrary = Object.values(document.projects ?? {}).some((project) => project?.kind === "library"); + const { roles, definitions } = checkRoles(document.roles, file, rolesDir, document.id, hasLibrary); requireObject(document.arbiters, `${file} arbiters`); rejectUnknownKeys(document.arbiters, ["delivery", "technical"], `${file} arbiters`); diff --git a/packages/business/tests/agent-identity.test.mjs b/packages/business/tests/agent-identity.test.mjs index 53421aac8..8846b4e60 100644 --- a/packages/business/tests/agent-identity.test.mjs +++ b/packages/business/tests/agent-identity.test.mjs @@ -55,9 +55,16 @@ test("N10: publish needs identity and a gitea definition, and the error names th // Row 285 (mos-1333 item 4, brief :1829): the chief's grant needs identity and publish on the // instance, so a chief with its gitea reference loads with both. X-G1 (gitea-grant.test) shows the // same chief refuses at raise. -test("row 285: a chief with its gitea reference, identity and publish loads", () => { +test("row 285: a chief with its gitea reference, identity and publish loads", async () => { + // Amendment 1 (mos-1580, sage-4060): this read reference belongs to a library business. + const { mappingEntry } = await import("../../library/tests/helpers.mjs"); const identity = { name: "Chief", email: "chief@example.com", gitea: { url: "https://git.example", user: "acme-chief" } }; - const business = check((d) => { d.roles.chief.identity = structuredClone(identity); d.roles.chief.publish = ["stack"]; }); + const business = check((d) => { + d.projects.books = mappingEntry(); + d.roles.chief.credentials = { gitea: { store: true, rotateBy: FAR_DATE } }; + d.roles.chief.identity = structuredClone(identity); + d.roles.chief.publish = ["stack"]; + }); assert.deepEqual({ ...business.roles.chief.identity, gitea: { ...business.roles.chief.identity.gitea } }, identity); assert.deepEqual([...business.roles.chief.publish], ["stack"]); assert.deepEqual(Object.keys(business.roles.chief.credentials), ["gitea"]); diff --git a/packages/business/tests/business.test.mjs b/packages/business/tests/business.test.mjs index d5c2bba88..b79576af8 100644 --- a/packages/business/tests/business.test.mjs +++ b/packages/business/tests/business.test.mjs @@ -301,10 +301,12 @@ test("persona vars: agent layer, creative definition only, both or neither", () }); // Row 285 (C2-08b, #1790, mos-1330): the chief and each creative definition declare gitea, so an -// instance without the reference refuses at load with the credential map's message. -test("row 285: a chief or creative instance without credentials.gitea refuses at load", () => { - refuses(() => check((d) => { delete d.roles.chief.credentials; }), - /roles\.chief\.credentials must reference exactly the services its role definition needs \(gitea; got none\)/); +// 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\)/); diff --git a/packages/business/tests/chief-library-credentials.test.mjs b/packages/business/tests/chief-library-credentials.test.mjs new file mode 100644 index 000000000..016544b46 --- /dev/null +++ b/packages/business/tests/chief-library-credentials.test.mjs @@ -0,0 +1,53 @@ +// Row 285 amendment 1 (#1790, mos-1580, sage-4059): a chief references gitea +// exactly when this business declares a library. The Case 1 source stays unchanged. +import { test } from 'node:test'; +import assert from 'node:assert/strict'; +import { mkdtempSync, readFileSync, rmSync } from 'node:fs'; +import { tmpdir } from 'node:os'; +import { join } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { BusinessError, validateBusinessDocument } from '../src/index.mjs'; +import { mappingEntry } from '../../library/tests/helpers.mjs'; + +const ROLES = fileURLToPath(new URL('../../../roles/', import.meta.url)); +const CASE1 = new URL('../../../docs/guides/case1-business.mosaic-stack.json', import.meta.url); +const GITEA = { gitea: { store: true, rotateBy: '2099-01-01' } }; + +function fixture(t) { + const root = mkdtempSync(join(tmpdir(), 'chief-library-')); + t.after(() => rmSync(root, { recursive: true, force: true })); + const doc = JSON.parse(readFileSync(CASE1, 'utf8')); + const validate = () => validateBusinessDocument(doc, join(root, 'businesses/mosaic-stack.json'), { rolesDir: ROLES }); + return { doc, validate }; +} + +// Removing the library condition makes this successful Case 1 load fail. +test('row 285 amendment 1: no library loads with empty chief credentials', t => { + const { doc, validate } = fixture(t); + doc.roles.chief.credentials = {}; + const business = validate(); + assert.deepEqual(business.roles.chief.credentials, {}); + assert.deepEqual(business.roles.assistant.credentials, {}); +}); + +// Dropping the required-reference refusal makes the missing-reference assertion fail. +test('row 285 amendment 1: a library without chief gitea refuses by name', t => { + const { doc, validate } = fixture(t); + doc.projects.books = mappingEntry(); + assert.throws(validate, error => error instanceof BusinessError && error.exitCode === 2 && + /chief-library-gitea-required: .*roles\.chief\.credentials/.test(error.message)); + doc.roles.chief.credentials = structuredClone(GITEA); + assert.deepEqual(Object.keys(validate().roles.chief.credentials), ['gitea']); +}); + +// Letting the chief keep unused gitea, or weakening exact-match globally, breaks this refusal. +test('row 285 amendment 1: no library with chief gitea refuses the extra reference', t => { + const { doc, validate } = fixture(t); + doc.roles.chief.credentials = structuredClone(GITEA); + assert.throws(validate, error => error instanceof BusinessError && error.exitCode === 2 && + /roles\.chief\.credentials must reference exactly the services its role definition needs \(none; got gitea\)/.test(error.message)); + delete doc.roles.chief.credentials; + doc.roles.assistant.credentials = structuredClone(GITEA); + assert.throws(validate, error => error instanceof BusinessError && error.exitCode === 2 && + /roles\.assistant\.credentials must reference exactly the services its role definition needs \(none; got gitea\)/.test(error.message)); +}); diff --git a/packages/business/tests/chief-of-staff.test.mjs b/packages/business/tests/chief-of-staff.test.mjs index eeb549a58..9d772a54f 100644 --- a/packages/business/tests/chief-of-staff.test.mjs +++ b/packages/business/tests/chief-of-staff.test.mjs @@ -10,7 +10,7 @@ import { readFileSync } from "node:fs"; import { join } from "node:path"; import { ACTIONS, BusinessError, classify, loadBusiness, loadRole, resolveInstance } from "../src/index.mjs"; import { THREAD_IDLE_SECONDS } from "../src/business.mjs"; -import { businessDoc, FAR_DATE, launchDoc, REPO_ROLES, systemFor, tmp, writeJson } from "./helpers.mjs"; +import { businessDoc, launchDoc, REPO_ROLES, systemFor, tmp, writeJson } from "./helpers.mjs"; // Decision 104's list plus role.launch (decision 139) plus role.end and // organization.change (row 123, REQ-COS-1) and record.write (row 138), plus instance.name @@ -80,17 +80,13 @@ test("the shipped file is exactly the approved list", () => { }); test("the resolved record matches the approved list, so a widened file fails", () => { - const fixture = loadFixture(); - const record = resolved(fixture); + const record = resolved(loadFixture()); assert.deepEqual(record.limits, { tools: APPROVED.tools, network: APPROVED.network, authority: APPROVED.authority, }); - // Row 285 (mos-1330): the fixture's gitea reference, the chief's only one. - assert.deepEqual(record.credentials, { - gitea: { service: "gitea", file: join(fixture.root, "secrets", "chief-of-staff-gitea.token"), rotateBy: FAR_DATE }, - }); + assert.deepEqual(record.credentials, {}); }); test("the chief of staff holds role.launch, message.send, role.end, organization.change, record.write, instance.name, role.hire and role.fire; every other action is gated", () => { @@ -154,13 +150,12 @@ test("the contract names no duty to talk to the human and the pm contract no lau assert.match(pm, /You don't launch sessions/); }); -// Row 285 (mos-1330): the instance references exactly gitea, its definition's one service, and no tracker. -test("the instance takes only the gitea credential reference and no tracker", () => { +test("the instance takes no credential references and no tracker", () => { refuses( () => loadFixture((doc) => { - doc.roles[INSTANCE].credentials.vikunja = { file: "/x/token", expires: "2099-01-01" }; + doc.roles[INSTANCE].credentials = { gitea: { file: "/x/token", rotateBy: "2099-01-01" } }; }), - /must reference exactly the services its role definition needs \(gitea; got gitea, vikunja\)/, + /must reference exactly the services its role definition needs \(none; got gitea\)/, ); refuses( () => loadFixture((doc) => { diff --git a/packages/business/tests/helpers.mjs b/packages/business/tests/helpers.mjs index 71260a0d0..cca29ef94 100644 --- a/packages/business/tests/helpers.mjs +++ b/packages/business/tests/helpers.mjs @@ -68,10 +68,9 @@ export function businessDoc(root, id = "acme") { cto: role("cto", 4, { holder: "darkwing", vars: { harness: "claude-code" } }), coder: role("coder", 5, { vars: { harness: "pi", "limits.network": "none" } }), reviewer: role("reviewer", 6), - // The chief of staff launches (REQ-LAUNCH-1, decision 139); it has no - // tracker bot. Its one credential reference is gitea, for the library - // read grant (row 285, mos-1330). - chief: { definition: "chief-of-staff", credentials: { gitea: ref("chief-of-staff", "gitea") } }, + // The chief of staff launches (REQ-LAUNCH-1, decision 139); it holds no + // credential and no tracker bot. + chief: { definition: "chief-of-staff" }, }, launch: launchDoc(), }; diff --git a/packages/business/tests/resolve.test.mjs b/packages/business/tests/resolve.test.mjs index cc48aeb62..b1e50f349 100644 --- a/packages/business/tests/resolve.test.mjs +++ b/packages/business/tests/resolve.test.mjs @@ -4,7 +4,7 @@ import { join } from "node:path"; import { BusinessError, classify, projectFilePath, resolveInstance, systemVars, validateBusinessDocument, validateProjectDocument, } from "../src/index.mjs"; -import { businessDoc, FAR_DATE, REPO_ROLES, systemFor, tmp } from "./helpers.mjs"; +import { businessDoc, REPO_ROLES, systemFor, tmp } from "./helpers.mjs"; function refuses(fn, pattern) { assert.throws(fn, (error) => { @@ -114,7 +114,7 @@ test("role.launch stays within-role only for the instance the launch block names // A second chief-of-staff instance is the launcher, so the first one may not launch. const two = setup((d) => { - d.roles.chief2 = { definition: "chief-of-staff", credentials: { gitea: { store: true, rotateBy: FAR_DATE } } }; + d.roles.chief2 = { definition: "chief-of-staff" }; d.launch.by = "chief2"; }); assert.equal(classify(resolve(two, "chief"), "role.launch"), "gated");