row329: finish pinned model proxy P1 and record final gate (#1827)

This commit is contained in:
jason.woltje committed 2026-10-24 18:30:11 -05:00
1 parent 94cde633e2
commit c65fb34ee6
314 files changed
+11847 -4

No files matched your search

+2
View File
@@ -5576,3 +5576,5 @@ claim. Receipts and limitations in agents/lena/work/queue-296/BUILD.md and run-r
2026-10-24T19:44:50Z | Sage | Row 328 (#1826, Vikunja 622, old T9 timer race, Fethry on Codex, Boyd and Dewey) LANDED 8bb5b3c73, pushed 19:40Z 10-24. Before: refactor at 5e77cdd09. After: Fethry's 8 commits cherry-picked onto 5e77cdd09 (same patches); T9's second start passes intervalMs 2147483647 (mos-1594), test-only. Under 8x50 concurrent loops M1 (50 ms back) gave 26 expected failures and the fix 400/400. Boyd APPROVE c31621 rev 4002, Dewey APPROVE c31622 rev 4003. Sage gate GREEN 19:38:54Z on 8bb5b3c73 itself, no drift: bus 1011/0, business 283/0, harness 176/0, cli 990/0 plus the allowed FED R7 skip, webui 458/0, every scripts/test-*.sh rc 0 (Dewey N1). Manifest 1e010468. #1826 closed c31625, Vikunja 622 done (comment 1071), note rev 4019, done rev 4020. Not re-pinned.
2026-10-24 — Magica row329 P1 (#1827, Vikunja237): beginning pinned model-proxy fetch/init/client/unit build at 7fe32d722, under mos-1600/1601. Acceptance uses only fresh temp roots and unshare -rn; live instance and host proxy excluded. Evidence agents/magica/work/queue-329/BUILD.md.
2026-10-24 — Magica row329 P1 (#1827): final builder checks green: model-proxy61/61, bus1018/1018, CLI999pass+1listed federation skip, pinned-copy10/10, config55/55 and federation runner1/1. Final unit-config fix verified by two new tests and all direct CLI readers. Original F7 red, Mos1604 diagnostic and Mos1605 unchanged rerun are preserved; cause unknown, landing independent. Q250 drops the panel forward; PIN8.0.42/panel1.26.7 unchanged. Evidence agents/magica/work/queue-329/BUILD.md.
+305
View File
@@ -263,3 +263,308 @@ Mos-1602: the /proxy/ panel forward remains pending P4/Jason's subdomain decisio
outside the required sandbox; it is no assertion of a working Console panel.
No CORS loosening, unsandboxed forward or panel JS on the Console origin ships.
The actual sandbox-negative assertions/evidence are unchanged.
Rebase WIP9edf45003 now has parent8bb5b3c73. Only BUILD-LOG.md and
SESSIONS.md conflicted; resolution preserved the entire8bb5 base byte prefix
and appended only the row329 additions from the WIP. No old test changed.
Offline root npm ci rc0 (128 packages), webui rc0 (2 packages), both nice19.
All seven new-file development runs passed on first execution: five model-proxy
package files, new bus file and new CLI file. No new-test placement needed.
First-run logs preserved under development-gate/ before the whole gate.
Review packet is REVIEW.md. Builder does not create a Console forward; P4's stop
condition remains an explicit pending dependency under mos-1602. Boyd independently
re-measures release bytes; Dewey reviews the landing candidate. No review request
or protected branch action has been performed here.
Whole gate progress: model-proxy59/59 and bus1018/1018, no failures, skips or
cancellations. CLI still running; no full-gate completion claim yet. New-only
first execution totaled76/76 across package59, bus8 and CLI9.
No product source has changed after these runs began.
One narrow acceptance follow-up is prepared for after the gate: directly verify
valid, empty-list and revoked /v1/messages through the stand-in (previous probes
measured auth on /v1/models and ClaudeCode timeouts), and exercise the P1
management client against the pinned binary's real v8 GET/PUT responses. It uses
the same fresh unshare wrapper in api-only mode, no browser or external upstream.
This resolves endpoint coverage without repeating the original sandbox evidence.
## First whole-gate result: STOP on old-test red
At19:49:13Z the serialized gate exited1. No rerun and no old test/source edit.
Sage notified magica-0023 and the slot returned. Sage-4245 holds the gate pending
Mos under mos-1592. The prepared api-only acceptance follow-up has not run.
Completed gate files:
- model-proxy whole:5 files,59 tests/pass,0fail/skip/cancel.
- bus whole:115 files,1018 tests/pass,0fail/skip/cancel (includes row328's
library-credential.test.mjs6/6 and new model-proxy.test.mjs8/8).
- CLI partial:5 files,124 tests,123pass,1fail,0skip/cancel. access-boot4/4,
access34/34, app30/30, boot-status3/3, case1-accept52pass/1fail.
- Remaining CLI, webui pinned-copy, test-config.sh and federation acceptance
were not run. No full-gate green claim or final candidate manifest.
Old test packages/cli/tests/case1-accept.test.mjs:503 failed at assertion507:
`row 195 accept: F3 fails on exit 0 with no reply line, and its evidence takes
talk's error`. ERR_ASSERTION, expected["F3"], actual["F3","F7"].
The test duration was2140.091658ms; the whole file252577.471202ms, driver252.61s.
Command: node --test <worktree>/packages/cli/tests/case1-accept.test.mjs,
under timeout-k10/1800; launch nice19; TMPDIR/mnt/storage/scratch/tmp/oEntjx.
Whole-file log: gate/cli-case1-accept.test.txt.
SHA256:6c528c893f55f259d7bfef319814ed0dd6f8b5437c2e9fdf4966b33b834e8f50.
Driver receipt: gate-progress.txt and gate/runs.jsonl, rc1.
### Requested exact F7 diagnostic is unavailable
Sage-4245 requested the exact `F7 pm-live FAIL` line to distinguish the branch.
It is not in the preserved Node log. The old test's assertion507 deepEqual has
no r.out diagnostic argument. run():213-227 holds the acceptance stdout only
in its returned in-memory object, not a file; host():158 uses tmp(t), whose
helpers.mjs:18-21 t.after deletes its entire fixture. case1-accept.sh removes
its WORK/capture files on EXIT too. The failed test process has ended.
No exact F7 line can be recovered from retained evidence. Sage notified
magica-0024. I will not invent its text, infer a timeout or rerun to obtain it.
### Static trace only
- case1-accept.sh:546-556 F7_JS reads the scratch business's launch.by,
spawnSyncs the scratch copy's mosaic with launches/list/--json, parses stdout
and checks exactly one live launch for the same business.
- The fixture's copy mosaic is a fake shell at case1-accept.test.mjs:129-140;
its launches branch cats HC/launches.json. The fixture populates exactly one
live pm and one dead pm at192-196; F3's sentonly fault changes talk-mode only.
- check_f7():557-563 runs through legacy_run pm-list10/12s and maps either a
nonzero capture status or a non-ok stdout line to F7. Missing r.out prevents
distinguishing which branch this run took. Duration alone is not diagnosis.
- No row329 model-proxy, sidecar or copy-closure code is imported on this fake
F7 path. git diff against8bb5b3c73 is empty for this old test, its helpers and
scripts/case1-accept.sh. No assertion was changed or loosened.
Current local WIP tip9edf45003 is the rebased draft, not a gate-approved build.
No push/review move occurred. Product source remained fixed through the run;
subsequent changes are acceptance follow-up preparation and these plain-text
receipts only. Hold until Sage passes Mos's ruling and any renewed CLEAR.
## Mos-1604 scratch-only diagnostic (sage-4248)
Approved diagnostic only; it contributes no gate credit. A separate detached
worktree of9edf45003 was created at /mnt/storage/scratch/tmp/sV85VX/checkout.
It ran its own offline npm ci --ignore-scripts --no-audit --no-fund at root
and packages/webui, both rc0, nice19; no canonical npm/rm and no linked dependency
directories. Every run used its own shell mktemp-d /mnt/storage/scratch/tmp/XXXXXX
TMPDIR, absolute nice19, and timeout-k10 (1800s per test-file run).
The original case1-accept.test.mjs was not edited. Its copy was at the same
packages/cli/tests depth, with the sole change at507:
```diff
- assert.deepEqual(failed(r), ["F3"]);
+ assert.deepEqual(failed(r), ["F3"], r.out);
```
Original source SHA256:685cf69c741540240c5b414e1907e624cbc59656541316f178d377472fad34a2.
Copy SHA256:608a423713d5803430c3f8735622a83d7e359a88e40d899b78c065ab1466e930.
Tracked git diff stayed empty; the only untracked checkout file was that copy.
Exact focused pattern:
```text
^row 195 accept: F3 fails on exit 0 with no reply line, and its evidence takes talk's error$
```
All20 focused runs passed1/1 with0fail/skip/cancel. Since none failed, all3
whole copied-file runs were performed: each53/53,0fail/skip/cancel. Total179
diagnostic tests passed. All23 test runs had rc0 and launch nice19. No failure
event and no F7 pm-live FAIL line occurred; no full-r.out failure block existed
to preserve. The original gate red remains recorded and unexplained by these
non-reproducing diagnostics; no timing/cause inference or shape/assertion fix.
UTC window:2026-10-24T19:56:21.256Z to2026-10-24T20:10:18.444Z.
Sampled start/end1-minute load range1.52..3.93. Every run has start/end UTC/load
in the table below and complete plain-text logs/JSON receipts in:
/mnt/storage/scratch/tmp/sV85VX/results.
The driver would record failure UTC/load at each not-ok event and retain the
full multiline r.out assertion message; none occurred.
| Run | UTC start | UTC end | load1 start/end | Pass/fail/skip/cancel | rc |
|---|---|---|---|---|---|
| focused-01 | 2026-10-24T19:56:21.256+00:00 | 2026-10-24T19:56:25.232+00:00 | 1.52/1.64 | 1/0/0/0 | 0 |
| focused-02 | 2026-10-24T19:56:25.234+00:00 | 2026-10-24T19:56:29.173+00:00 | 1.64/1.64 | 1/0/0/0 | 0 |
| focused-03 | 2026-10-24T19:56:29.175+00:00 | 2026-10-24T19:56:33.132+00:00 | 1.64/1.67 | 1/0/0/0 | 0 |
| focused-04 | 2026-10-24T19:56:33.133+00:00 | 2026-10-24T19:56:37.147+00:00 | 1.67/1.86 | 1/0/0/0 | 0 |
| focused-05 | 2026-10-24T19:56:37.148+00:00 | 2026-10-24T19:56:41.129+00:00 | 1.86/1.87 | 1/0/0/0 | 0 |
| focused-06 | 2026-10-24T19:56:41.130+00:00 | 2026-10-24T19:56:45.286+00:00 | 1.87/2.04 | 1/0/0/0 | 0 |
| focused-07 | 2026-10-24T19:56:45.287+00:00 | 2026-10-24T19:56:49.285+00:00 | 2.04/2.04 | 1/0/0/0 | 0 |
| focused-08 | 2026-10-24T19:56:49.286+00:00 | 2026-10-24T19:56:53.374+00:00 | 2.04/2.44 | 1/0/0/0 | 0 |
| focused-09 | 2026-10-24T19:56:53.376+00:00 | 2026-10-24T19:56:57.441+00:00 | 2.44/2.72 | 1/0/0/0 | 0 |
| focused-10 | 2026-10-24T19:56:57.442+00:00 | 2026-10-24T19:57:01.904+00:00 | 2.72/3.07 | 1/0/0/0 | 0 |
| focused-11 | 2026-10-24T19:57:01.906+00:00 | 2026-10-24T19:57:06.072+00:00 | 3.07/3.54 | 1/0/0/0 | 0 |
| focused-12 | 2026-10-24T19:57:06.074+00:00 | 2026-10-24T19:57:10.220+00:00 | 3.54/3.66 | 1/0/0/0 | 0 |
| focused-13 | 2026-10-24T19:57:10.221+00:00 | 2026-10-24T19:57:14.351+00:00 | 3.66/3.66 | 1/0/0/0 | 0 |
| focused-14 | 2026-10-24T19:57:14.353+00:00 | 2026-10-24T19:57:18.752+00:00 | 3.66/3.93 | 1/0/0/0 | 0 |
| focused-15 | 2026-10-24T19:57:18.753+00:00 | 2026-10-24T19:57:23.015+00:00 | 3.93/3.93 | 1/0/0/0 | 0 |
| focused-16 | 2026-10-24T19:57:23.017+00:00 | 2026-10-24T19:57:26.932+00:00 | 3.93/3.70 | 1/0/0/0 | 0 |
| focused-17 | 2026-10-24T19:57:26.934+00:00 | 2026-10-24T19:57:30.809+00:00 | 3.70/3.72 | 1/0/0/0 | 0 |
| focused-18 | 2026-10-24T19:57:30.811+00:00 | 2026-10-24T19:57:34.661+00:00 | 3.72/3.50 | 1/0/0/0 | 0 |
| focused-19 | 2026-10-24T19:57:34.663+00:00 | 2026-10-24T19:57:38.617+00:00 | 3.50/3.50 | 1/0/0/0 | 0 |
| focused-20 | 2026-10-24T19:57:38.618+00:00 | 2026-10-24T19:57:42.546+00:00 | 3.50/3.30 | 1/0/0/0 | 0 |
| whole-01 | 2026-10-24T19:57:42.548+00:00 | 2026-10-24T20:01:56.880+00:00 | 3.30/3.50 | 53/0/0/0 | 0 |
| whole-02 | 2026-10-24T20:01:56.882+00:00 | 2026-10-24T20:06:13.814+00:00 | 3.50/3.23 | 53/0/0/0 | 0 |
| whole-03 | 2026-10-24T20:06:13.816+00:00 | 2026-10-24T20:10:18.444+00:00 | 3.23/2.63 | 53/0/0/0 | 0 |
Whole-file seconds:254.333,256.932,244.628.
All25 command logs (including2 npm setups) were rehashed against runs.jsonl;
all matched. The scratch checkout was removed after completion; only external
plain-text evidence remains under /mnt/storage/scratch/tmp/sV85VX.
Evidence manifest /mnt/storage/scratch/tmp/sV85VX/diagnostic-files.sha256
SHA256:fcb72f317e7d56e1ada0ee6ebb7bf435c1dd033c958cf9463930c62c2e61537b.
No diagnostic copy, old-test edit or instrumentation was added to row329.
Only this BUILD.md result receipt changes in the row329 repository for this
diagnostic. Vikunja625 is Mos's separate follow-up, not a row329 change.
Diagnostic slot returned to Sage. Builder gate remains paused pending Mos's
ruling on an unchanged rerun; no gate resumed, commit, push or queue move.
## One unchanged gate rerun authorized (mos-1605 / sage-4250)
Sage-4250 CLEAR at20:12:20Z authorizes one unchanged whole-file rerun of the
original packages/cli/tests/case1-accept.test.mjs. Its SHA256 remains
685cf69c741540240c5b414e1907e624cbc59656541316f178d377472fad34a2,
byte-identical to8bb5b3c73. On pass, resume the rest of CLI, webui pinned-copy,
config and federation. On any red, stop before further rerun and report load.
No product or old-test change. F7 cause stays unknown; Vikunja625 is separate.
No diagnostic result counts toward the gate and landing must pass independently.
Runner resume-mos1605.py preserves the first red log, gives the one allowed
rerun its own filename, and records UTC/load at each observed failure event plus
one-second load samples. Each invocation gets a fresh shell-created short
TMPDIR, absolute nice19, timeout-k10, offline npm environment and the same
MOSAIC_REQUIRE_EDITOR_BUILD=1 as the initial gate. Earlier completed package,
bus and first four CLI files are not rerun. No further command follows a red.
## Final unit-rendering fix and remaining reader gate
The approved mos-1605 original-file rerun passed53/53 in242.3s; the remaining
planned CLI, pinned-copy, config and federation commands completed rc0. This
records a successful continuation, not a first-run green or an explanation of
F7. The original red and23-run diagnostic remain above; landing is independent.
Static P1 review found that the configured default proxy unit bound an explicit
MOSAIC_CONFIG but the default bus unit omitted it. Two additions to row329's new
config-unit.test.mjs reproduced the mismatch and unsafe-unit-path acceptance:
13pass/2expected-new-test-fail (unit-custom-config-red.txt). The fix is solely
bus-service.sh's proxy-configured/default-instance branch: validate that selected
config path can be carried by systemd and explicitly bind the bus to the same
file. No-proxy rendering retains its historical output. No old assertion changed.
After fix: whole model-proxy61/61, whole CLI stack-instances24/24 and
stack-copy18/18, whole webui pinned-copy10/10. Source never changed during an
active whole-file run. Sage notified magica-0026 and the prior slot returned.
Sage-4251 CLEAR now requires the remaining five direct bus-service readers on
this final tree: host, stack-release-external, stack-release, stack-upgrade and
verbs, all whole files. stack-release-fixture is their helper. Sage found no
bus-service SHA256 pin. No product change is planned during this gate. Each
reader uses fresh shell mktemp TMPDIR, absolute nice19, timeout-k10; a red stops
before any rerun and is sent to Sage. FINAL-COUNTS mapping will point at these
final-tree receipts when complete.
## Narrow API acceptance follow-up (after planned gate)
Command: acceptance.sh <download-root> api-only. Fresh unshare-rn scratch root,
nice19, rc0; no test slot used and no external request. It exercised the actual
P1 ManagementClient against the pinned binary's v8 API, then valid/wrong/revoked
and empty-list Messages requests through the stand-in. Full plain text:
```text
P1 isolated acceptance root /mnt/storage/scratch/tmp/KXZOfD nice 19
binary sha256 74661f8cf949977870231359e8bf4344e07946766a673c08fa25a3e5f72fc95e
P1 client receipt {"call":"GET /v8/management/config/access/api-keys","status":200,"keyIds":["48eead3cdecf"]}
P1 client real API GET count 1
P1 client receipt {"call":"PUT /v8/management/config/access/api-keys","status":200,"keyIds":["48eead3cdecf"]}
P1 client real API PUT {"ok":true}
pinned panel served 200 8c9c6b7d3fb311e6aad5d06e1993e53a2d28389e640448a1bc6304ed20b057b5
pinned login flags -claude-login | -codex-login | -no-browser
wrong/missing key models wrong {"status":401,"body":"{\"error\":\"Invalid API key\"}"}
wrong/missing key models missing {"status":401,"body":"{\"error\":\"Missing API key\"}"}
models local 200 upstream delta 0 body length 1739
valid messages {"status":200,"body":"{\"id\":\"msg_p1\",\"type\":\"message\",\"role\":\"assistant\",\"model\":\"claude-sonnet-5-5\",\"content\":[{\"type\":\"text\",\"text\":\"hello\"}],\"stop_reason\":\"end_turn\",\"usage\":{\"input_tokens\":1,\"output_tokens\":1}}"} upstream delta 1
wrong messages {"status":401,"body":"{\"error\":\"Invalid API key\"}"}
initial key list {"status":200,"body":"[\"p1-client\"]"}
set empty {"status":200,"body":"{\"config-version\":8,\"status\":\"ok\"}"}
empty list settled {"elapsedMs":105,"statuses":[401,200],"body":"[models]"}
empty list missing key status 200
empty list missing key messages {"status":200,"body":"{\"id\":\"msg_p1\",\"type\":\"message\",\"role\":\"assistant\",\"model\":\"claude-sonnet-5-5\",\"content\":[{\"type\":\"text\",\"text\":\"hello\"}],\"stop_reason\":\"end_turn\",\"usage\":{\"input_tokens\":1,\"output_tokens\":1}}"}
restore list {"status":200,"body":"{\"config-version\":8,\"status\":\"ok\"}"}
restored list settled wrong key {"elapsedMs":104,"statuses":[200,401],"body":"{\"error\":\"Invalid API key\"}"}
revoke client {"status":200,"body":"{\"config-version\":8,\"status\":\"ok\"}"}
revoked key settled {"elapsedMs":2,"statuses":[401],"body":"{\"error\":\"Invalid API key\"}"}
revoked key models {"status":401,"body":"{\"error\":\"Invalid API key\"}"}
revoked messages {"status":401,"body":"{\"error\":\"Invalid API key\"}"}
per-key model object attempt {"status":422,"body":"{\"error\":\"invalid_config\",\"message\":\"parse config payload: yaml: unmarshal errors:\\n line 12: cannot unmarshal !!map into string\"}"}
final restored list settled {"elapsedMs":2,"statuses":[401],"body":"{\"error\":\"Invalid API key\"}"}
v8 key list {"status":200,"body":"[\"p1-client\"]"}
oauth start anthropic {"status":200,"body":"{\"state\":\"208bd2a002a312d996f6c5a416ecc311\",\"status\":\"ok\",\"url\":\"https://claude.ai/oauth/authorize?client_id=9d1c250a-e61b-44d9-88ed-5944d1962f5e\\u0026code=true\\u0026code_challenge=BsWT1fuo1kBcP-EySiawhlK-cfN2B62ta6VKP8qvaIU\\u0026code_challenge_method=S256\\u0026redirect_uri=http%3A%2F%2Flocalhost%3A54545%2Fcallback\\u0026response_type=code\\u0026scope=user%3Aprofile+user%3Ainference+user%3Asessions%3Aclaude_code+user%3Amcp_servers+user%3Afile_upload\\u0026state=208bd2a002a312d996f6c5a416ecc311\"}"}
oauth start codex {"status":200,"body":"{\"state\":\"fffb20861e7b44a1d70c45a2de1f9b8c\",\"status\":\"ok\",\"url\":\"https://auth.openai.com/oauth/authorize?client_id=app_EMoamEEZ73f0CkXaXp7hrann\\u0026code_challenge=Swdf4fq2oLSpl2K6CQJYbeHw7aC50nby_h0l-O52kqc\\u0026code_challenge_method=S256\\u0026codex_cli_simplified_flow=true\\u0026id_token_add_organizations=true\\u0026prompt=login\\u0026redirect_uri=http%3A%2F%2Flocalhost%3A1455%2Fauth%2Fcallback\\u0026response_type=code\\u0026scope=openid+email+profile+offline_access\\u0026state=fffb20861e7b44a1d70c45a2de1f9b8c\"}"}
acceptance probes complete
```
Valid Messages returned200 with exactly one stand-in upstream call; wrong and
revoked Messages returned401 with the same flat error body. With an empty list,
a no-key Messages request returned200. P1 client GET/PUT returned200 and receipts
contained key IDs only. The measured update lag varies by request/run; no stronger
instant-enforcement claim is made. The prior105ms observation remains on P2.
## Scope amendment Q250 / mos-1606 (sage-4253)
Jason's Q46/Q47 decision replaces the upstream panel forward with the Console's
own proxy page (P4 brief docs/plans/2026-10-24_proxy-page-brief.md at696ea3a3a).
P1's two panel acceptance bullets and callback-through-/proxy/ question are no
longer required. All previously measured results above remain as recorded;
no new panel/sandbox/forward work is added. The pinned rows brief blobfd4325c0
is unchanged, as are packages/model-proxy/PIN and src/fetch.mjs.
Still required and already measured on pinned CLIProxyAPI8.0.42:
Claude OAuth start redirect_uri=http://localhost:54545/callback.
Codex OAuth start redirect_uri=http://localhost:1455/auth/callback.
These returned URLs were recorded without following an external OAuth URL;
completion is not claimed. Sent to Sage magica-0027 for the native P4 page.
Historical fallback login commands remain recorded, not executed. Current README
and review packet reflect Q250; no Console code or management routes ship in P1.
## Final builder verification and review candidate
All five final reader files per sage-4251 passed on the final source tree.
post-unit-fix-cli-host.test: {'tests': 43, 'pass': 43, 'fail': 0, 'skipped': 0, 'cancelled': 0}, rc0/nice19, 12.262s.
post-unit-fix-cli-stack-release-external.test: {'tests': 25, 'pass': 25, 'fail': 0, 'skipped': 0, 'cancelled': 0}, rc0/nice19, 83.766s.
post-unit-fix-cli-stack-release.test: {'tests': 224, 'pass': 224, 'fail': 0, 'skipped': 0, 'cancelled': 0}, rc0/nice19, 723.448s.
post-unit-fix-cli-stack-upgrade.test: {'tests': 21, 'pass': 21, 'fail': 0, 'skipped': 0, 'cancelled': 0}, rc0/nice19, 97.612s.
post-unit-fix-cli-verbs.test: {'tests': 9, 'pass': 9, 'fail': 0, 'skipped': 0, 'cancelled': 0}, rc0/nice19, 3.587s.
Final per-file mapping is gate/FINAL-COUNTS.json; summary:
```text
model-proxy: 5files 61tests 61pass 0fail 0skip 0cancel
bus: 115files 1018tests 1018pass 0fail 0skip 0cancel
cli: 69files 1000tests 999pass 0fail 1skip 0cancel
webui pinned-copy:10/10; config:55/55; federation runner:1/1 no skip.
CLI listed skip: packages/cli/tests/federation-acceptance.test.mjs, FED R7 scratch two-instance acceptance; covered by scripts/test-federation-acceptance.sh.
Initial old red and scratch diagnostic are preserved, not included in final pass totals.
One unchanged original rerun authorized by mos-1605 passed53/53; final unit-reader checks per sage-4251 all pass.
Sage landing gate must independently be green (mos-1583).
```
The CLI skip is the listed FED R7 wrapper at
packages/cli/tests/federation-acceptance.test.mjs, test name
"FED R7 scratch two-instance acceptance", runner scripts/test-federation-acceptance.sh.
That runner passed1/1 with0skips in this gate and verified cleanup. No other skip.
The original first red, diagnostic, unchanged rerun and final-unit-reader gate
are distinct facts. F7 cause remains unknown; Vikunja625 is separate. No old
test file/assertion was changed; landing must independently go green.
Additional read-only acceptance corroboration: the made-up acceptance root
3mOycq/auth/logs/main.log contains14 HTTP401 POST /v1/messages?beta=true receipts
during the two45s ClaudeCode attempts (7 per attempt by timestamp). Only those
status/path lines are retained in claude-401-receipts.txt, with no headers/bodies.
Thus the client did reach the proxy and retried while producing no output until
the timeout. The reason for that behavior/body-shape hypothesis remains unproven.
Manifest MANIFEST.sha256 covers every changed regular file against8bb5b3c73
except itself. It includes source, tests, all plain-text receipts and both
append-only logs. No executable/archive/panel asset is committed. The final
commit follows completed applicable green checks; WIP preservation was explicitly
authorized by Sage. No live instance, host proxy or protected branch was changed.
@@ -0,0 +1,350 @@
f34e093e8c711c5d568b1d5128d29b9162e5507be1172cc76429ab314cdb3e72 BUILD-LOG.md
cf07d29143e3ffeae5ae0c9156d30558e8d55c538c110960fe08848d465c2a9e agents/magica/work/queue-329/BUILD.md
1d6886ad5a44f7c9bdb8df9c263993f1edafd909aa195da11a7a11e566ae41ba agents/magica/work/queue-329/REVIEW.md
f5ceab9c8ddbc6474a088426b179074fc8076ef307f148ac17664b4d82774a20 agents/magica/work/queue-329/acceptance-api-only.txt
5c3e8d45fe644c442ffbd030c7c8b1d315368f1955fcc2ec2b8b9aba269b1ec3 agents/magica/work/queue-329/acceptance-final.txt
3ef44d7e6ab26ce1f7e8a9b31c0fc69f71d0f9331e860908e97ded398bd3216d agents/magica/work/queue-329/acceptance-probe-1.mjs
f24af6fa5fd4f3c89e4ce6da5d414e19f64d5c217d623e53610e8ed26c0b17b1 agents/magica/work/queue-329/acceptance-probe-1.txt
471579b1c51f20893a552f19f2d8689fc09410c16b195ef60b2970888d7f915f agents/magica/work/queue-329/acceptance-probe-2.txt
6ca780daad5962d783e50b94f47509fd0dc1f98d3abea0500e47ac1392826728 agents/magica/work/queue-329/acceptance-probe-3.txt
7973fb50698805fdda35d8604a7a2881f01b305608d7376bc216ff991ca9621d agents/magica/work/queue-329/acceptance-probe-4.txt
32e6ecd9199d5919121902ef02a9eca7ee881f980c5b5c5d48c133f5df85dbae agents/magica/work/queue-329/acceptance.mjs
15fc26371aae25c944bdbc264f6841549ceceb295b2981465d8edea3ecd3f1f6 agents/magica/work/queue-329/acceptance.sh
f94ec0fc73c13db93ef901bcb26fcd9bd5ae4009fe8fcc654ef3642b308a5e29 agents/magica/work/queue-329/claude-401-receipts.txt
ff23a1447800b8a238fe99a491d2dce47772fcdffc0b953bf870ee1dc55f3548 agents/magica/work/queue-329/development-gate/bus-model-proxy.test.txt
1aaf064ad2641963c5d1cdc8fb5b0c6a16a33b51d1dfc167c8e5efe31d2bcdd9 agents/magica/work/queue-329/development-gate/cli-model-proxy.test.txt
b6768b3834ab009109f114ae4ae1d82ed0804491afe08df649e3412bbda2b63c agents/magica/work/queue-329/development-gate/model-proxy-client.test.txt
a5815c185c59996085f979b8437e7309860153471f02bc75ee491d9d5e0bcf86 agents/magica/work/queue-329/development-gate/model-proxy-config-unit.test.txt
ab7e64e36d22c1e82fc65e93efc69194f595ee14971e0d5f9be58ca8b8725f18 agents/magica/work/queue-329/development-gate/model-proxy-fetch.test.txt
8fd3d91b04eb9d96df7b8a66bb072dd619c4f82bfba003a658a5b5f335ce5a6d agents/magica/work/queue-329/development-gate/model-proxy-runner.test.txt
12a1a8c9472bb8cda2b7582518325e396c3a31215caa41c0cdc8feba3d1563b8 agents/magica/work/queue-329/development-gate/model-proxy-settings.test.txt
ca054157c6bb36f40dc6c7a0942d4195fccdfc87b1a77062fb44f6db3fd84c2d agents/magica/work/queue-329/development-gate/npm-root.txt
66ac3eda1c48dd7eff9d87623cfd89ed91eddf8af2a53ea15c91ba9564036882 agents/magica/work/queue-329/development-gate/npm-webui.txt
1cae643fc1de823a04293ec68cfc5286903ab58bf8e16d6a63acbf4f34cac13e agents/magica/work/queue-329/development-gate/runs.jsonl
1e84defa58b9e975217a497720b6e5533effbb9cfe49d024c30031f5f8f4a5b6 agents/magica/work/queue-329/download-sha256.txt
46314ae67d564d2bb6cf9c7571bdde9481570c5467499e040b951c30d0ce6dc1 agents/magica/work/queue-329/final-counts.py
1c5ae4b57246985ba1dea30784481f0407877ae373d8e6e00f7a9317731835ff agents/magica/work/queue-329/final-reader-progress.txt
60a80c5f01c17605cf371fc4eacf851471109edf0b65e830e029b661d51fffcb agents/magica/work/queue-329/gate-progress.txt
3cf1a426d12e30b16356b6b754488d3e1f53004eb1757945f93401e3ef42630e agents/magica/work/queue-329/gate.py
92496b89026da562390bb124e3911df83084f0ce4e36382d32cc632f6bb6bbe6 agents/magica/work/queue-329/gate/FINAL-COUNTS.json
b79b1d1b5253de212b6419a8d80bace53ac2d8899fec9f5917e1dd17f515bd17 agents/magica/work/queue-329/gate/FINAL-COUNTS.txt
cd66b3817e5dfc02162b2126224581b52c8b6ca1c4377ed2615f013533df1682 agents/magica/work/queue-329/gate/STATUS.txt
b8eb4f8a9fc5bef1c7a753f6a3b1cd32889116590939532697d194cc9b6cf2ed agents/magica/work/queue-329/gate/bus-access-revoke.test.txt
caa2b941ab50c4c215d47d65fb64ffb8351347ccddbf110a7d6e1d83104fd7ef agents/magica/work/queue-329/gate/bus-account-migration.test.txt
810f315fac98018713c45992da26d7657220df53b5c4a3110f81e647ec5c11f0 agents/magica/work/queue-329/gate/bus-address.test.txt
972b18ca91d0e4612bfbbbdc6d2c5cb8029d1fb24c9937b8739d4773bac10d95 agents/magica/work/queue-329/gate/bus-agents.test.txt
92699e0e797ea976591082b055bcd1870eb27b61aa7cf32cfe2e532407433ed8 agents/magica/work/queue-329/gate/bus-approval-binding.test.txt
b961355e1c47cd6857ebfe08f3ed9e36f7650014b20f4e071c284565f86330f7 agents/magica/work/queue-329/gate/bus-broker.test.txt
90315764208c1d0ecb3931d2c548e8a127990937f30d226ffb159961f053bb10 agents/magica/work/queue-329/gate/bus-business.test.txt
b85c329304609b8c87601fa7f254821986aa12f40997ef2223319456211c4b3e agents/magica/work/queue-329/gate/bus-channel-proof.test.txt
4463268787aaa843d859c11e1f86d34d5ca1e520d209eeb2599d34c475f4692e agents/magica/work/queue-329/gate/bus-chief-of-staff.test.txt
2c1e88fa00384cc94010ba5d629f1cae3b21b4f24aab42896c9b010a0f801f1d agents/magica/work/queue-329/gate/bus-citation-availability.test.txt
00e27c6f2f2a5efab11183a461da0e611c733daab2e8a4d809132daa3cf1d7d3 agents/magica/work/queue-329/gate/bus-citation-guard.test.txt
88c56afb30bca8d23f09f2174c95d0fbc26bdd38a09d1b404ff31b2f58c4d608 agents/magica/work/queue-329/gate/bus-citation-runtime.test.txt
4fb9fdbbe7b4c5300c6f704faea3f6bcd99eb7061596b89b9baceb6c726ef873 agents/magica/work/queue-329/gate/bus-comment-cursors.test.txt
9b66c816f0c1775a10ee485d5009440ab1fdfea4843802c0e14d48ee00c73ee9 agents/magica/work/queue-329/gate/bus-comment-migration.test.txt
936e0171744f7a20009fcdbca104ad7a73a4eeb95fe9aa30ca9f1291670a9c51 agents/magica/work/queue-329/gate/bus-console-decide.test.txt
bbf9e325105a92de29a8b32fd1a9ef40d8b9f7ddf20244a635b5872ae595fd11 agents/magica/work/queue-329/gate/bus-creative.test.txt
38e4b9eddfb41392b718e8fd4aefb24502d97f764b55a7b7753a054632b59387 agents/magica/work/queue-329/gate/bus-credential-claim.test.txt
74eea762c96911ccc50bd08eec60b3ac51628f1172269ffc914f5b40fcdb17f5 agents/magica/work/queue-329/gate/bus-credential-status.test.txt
336de155d1e674920430d6f7e39d3b99ef4d52dbc7b8bd550be42243ce33c92b agents/magica/work/queue-329/gate/bus-credential-store.test.txt
3c7623569a045d8aa0b2f3dee0eea8ef324fd7765747c3d958bbe0b0945dc38b agents/magica/work/queue-329/gate/bus-credential-verbs.test.txt
c28299788b46783631b8722f25057f9f89914aacd642d741f20cea10f117aaef agents/magica/work/queue-329/gate/bus-credentials.test.txt
c8cee523b76eb075abc741e3aa7eb2e972a5b58d21e6d880144fa83864800ebe agents/magica/work/queue-329/gate/bus-csuite-messaging.test.txt
7c2d0c2ea48fe473ca89773d0ed7b7edd02ba539ff2dfd2674da3de81ecffedd agents/magica/work/queue-329/gate/bus-daily-quota-runtime.test.txt
ac0162cbceb71d9676e2216a4e4674b9e84a29c4764723902478aef75db6fd52 agents/magica/work/queue-329/gate/bus-decision-close.test.txt
d98db72bd9310a33fa9335929e7712456d367f389e2b1295de70c099628ca260 agents/magica/work/queue-329/gate/bus-decision-route.test.txt
e7784c44043f0c574de3b2c0355d77035942cb08ef5fbf8655d43f46d30f3b9d agents/magica/work/queue-329/gate/bus-decisions.test.txt
2ae8a88d8747d851430e1c559ef37748749ca0428cc6bf01f27a9e16b1dfe792 agents/magica/work/queue-329/gate/bus-end-launch.test.txt
863a428fc1863ce928d08cab75d06422b88161c0217827e0756535861b18af97 agents/magica/work/queue-329/gate/bus-fire-revokes-grants.test.txt
b22fd0196ec874ae6d56d3a75ddf136fe23aa7f978cf9afc2276e792a768d1fd agents/magica/work/queue-329/gate/bus-gitea-grant-docker.test.txt
9ad6e1266fc5fd7894783d6ab9bea4da63547f111e5f91abc48566251bd1e624 agents/magica/work/queue-329/gate/bus-gitea-grant.test.txt
347e2ce76520948c8d971ea7ed0e97f047199b7a1acfbbec40d0d0bbfdd32e98 agents/magica/work/queue-329/gate/bus-gitea-migration.test.txt
4f929c0078ce4051d913b17a297d701ee5b5ef23923e938683b98c906ead5009 agents/magica/work/queue-329/gate/bus-grant-enroll.test.txt
306dcbf7abfbb888532ae7fb6437b8237163b55ef8a4fa7ba9e70fdff66c9bae agents/magica/work/queue-329/gate/bus-grant-executor.test.txt
95aeb9842c41cfde79b219b3083551d739b2121bd7b561c0d6c80389a31fa057 agents/magica/work/queue-329/gate/bus-grant-host.test.txt
5739dfa566d9700f64bddaa6075b717669037f574078d859dae208875cbcd032 agents/magica/work/queue-329/gate/bus-grant-migration.test.txt
0ad89746be0cbbf5bbf89d9699405e4b747d3a632c035cb10a8964018e6c7622 agents/magica/work/queue-329/gate/bus-grant-scope-runtime.test.txt
dbe2f0058b93a30bfd41696fa0c81235caa39ae30c0553a31ca27c3b2233c6de agents/magica/work/queue-329/gate/bus-grant-scope.test.txt
f254c636671b4f1234de0875b2d56ea29334f0170ec491ff77a0f0f872a86a65 agents/magica/work/queue-329/gate/bus-hard-waits.test.txt
a6afaadc8d3ae900cb2ffb7fbccd86678663488f0243f9b59e44dd58fd70341d agents/magica/work/queue-329/gate/bus-host-run.test.txt
4fbd616efae71854ac6240f38c9ec7e5b817c040614828aed0727760688e7dc7 agents/magica/work/queue-329/gate/bus-host-tools.test.txt
838cb5a28b57be818d68899cd007bfebf3d5e16b451c9db1a791431f5ed269c7 agents/magica/work/queue-329/gate/bus-human.test.txt
bbc61d1c0fe8912862c1e6c4d497b96c827a9603c78763912c0933575c792da8 agents/magica/work/queue-329/gate/bus-instances-verb.test.txt
31ea0720b080af1d1d46b0f7c6ce619fbb2ce707d212432d237d04e24de0cff0 agents/magica/work/queue-329/gate/bus-interpreter.test.txt
7551cdb800728fd62d4f7e8ef93343dd2b8fe39712fe9b9a0d646a8e02310cd1 agents/magica/work/queue-329/gate/bus-land.test.txt
1d3e7da6d80f2d0859086d01194f2d3c552d082dc9be0acebcf287822433534d agents/magica/work/queue-329/gate/bus-launch-notice.test.txt
325aff3f6f015b18fd70f3531ff4e187c95f0250ace89d97aa0cd4a68bf8bbf6 agents/magica/work/queue-329/gate/bus-launcher-released.test.txt
26a76acd54739c47fe8e0a2a13dec00a5bc9daedb9c0462bc1a91361f4af52fc agents/magica/work/queue-329/gate/bus-library-credential.test.txt
9e9db829573d4562a8a29a3cc8b12aa5f65ef0784f076ea71c1467ffad22458a agents/magica/work/queue-329/gate/bus-library-lookups.test.txt
68c2d9828981359e7cd5fc1aba9fe1fa287d513b39ceaaa54cc5cc6a5450fd7c agents/magica/work/queue-329/gate/bus-library-sync.test.txt
54e5795aae4962c37fdd3fec5f7c81432160f416c5b9aa7a07bf256735d60649 agents/magica/work/queue-329/gate/bus-library.test.txt
97cd8f9efd99f0147664462e90e587896f7a418e32293933251c0062e7f929a7 agents/magica/work/queue-329/gate/bus-lifecycle-revoke.test.txt
cd5c6bb7c4a794267b36b8c42c89d10f033c7f6fd4b8e14771afeec484201e93 agents/magica/work/queue-329/gate/bus-lifecycle-verbs.test.txt
b3bc88d80f58d9d06ab97712cd26e8490d868033d295d0869c8fc298c6927287 agents/magica/work/queue-329/gate/bus-limit-checks.test.txt
613b7b658c9d3f7eb1fe07323b5c8b19ad3a691417d4835c8bc4490b2b976bf9 agents/magica/work/queue-329/gate/bus-limit-stop.test.txt
29d028c5bde519510b301c55a0162e80d9ef6f9e72aa4e6e7703b1020a38477c agents/magica/work/queue-329/gate/bus-limits-runtime.test.txt
fbf52753b382219a343634678f87c5d4fad11ad99c4f9a01930a21d9df0029f2 agents/magica/work/queue-329/gate/bus-limits.test.txt
bfa4f0e430c6c80eac6b610a7f15c3979e4f3e3b346853e2f377d56e683d3d96 agents/magica/work/queue-329/gate/bus-message-citation.test.txt
e51f9a5d77ddb25c739a6fde5f47b98db037aa6c225dd815d299975f1fc3c2fa agents/magica/work/queue-329/gate/bus-message-filter.test.txt
727383abc09c395557ed3c0f38b8f900f2e6ab73a192b7c11fd6ff00f378df20 agents/magica/work/queue-329/gate/bus-messages.test.txt
8b4f7d3b7fba2f7ad0770480824d9176aa570343be103fc8befaf9409a835f8a agents/magica/work/queue-329/gate/bus-messaging.test.txt
9350046b3138d978c84aae9df759f2696535ff78820d60302820e13cd8429b96 agents/magica/work/queue-329/gate/bus-model-proxy.test.txt
71c12ae86c0e0ce3b0f052b2e16c14518440d221abeae42748feb8d18142e4ad agents/magica/work/queue-329/gate/bus-name-migration.test.txt
29831e8069447bf17b94301f67d4a2536a45dfe1c5bb0107a3b0d85cdfe16db3 agents/magica/work/queue-329/gate/bus-names.test.txt
dd325088a465a4e21ffcb3234a9ae706b6396b2752a1b3302ab1ceeeb12fb2d4 agents/magica/work/queue-329/gate/bus-peer-transport.test.txt
62aa57f946a5e2053bcb35914d4f1e3c1fe388f4c23b7f293454a2f7a2cc749e agents/magica/work/queue-329/gate/bus-peercred.test.txt
70a8337fcbb9c5900367cf664ea1a70a14ba8f9e4bc2582a0c1cdcc162a478bd agents/magica/work/queue-329/gate/bus-plugins-verb.test.txt
11d1cf556f8ea4211e1da686e8db7701a88128a579e63468bc1e09a6d3623496 agents/magica/work/queue-329/gate/bus-principal.test.txt
fb6429d41db8dc9fcd05739837654eeca4d522a3c8cd5d3c9ffa79f618334ccb agents/magica/work/queue-329/gate/bus-process.test.txt
a78e6f75ba41afeeb5131a930ad125a12082aa37e1eb66d4cd6f11d6c0a6eb54 agents/magica/work/queue-329/gate/bus-processing-runtime.test.txt
3e3c5a28b36d6e1faaa9d0be44eabd959b315f711e69ff9c54fd747f29a109f3 agents/magica/work/queue-329/gate/bus-processing-timeout.test.txt
bddb9973338df6181c23607c79e9274a4b601799f8bafe0948434d05a0f08655 agents/magica/work/queue-329/gate/bus-processing-web.test.txt
3d773fcf857c0de5d0fda431d6526eaadc2a89d7c68236c27920d08df33000ca agents/magica/work/queue-329/gate/bus-processing.test.txt
44951a2c880532e466038c580d8ef3490a9c1207b848a90a26f7a32031e38238 agents/magica/work/queue-329/gate/bus-project-await.test.txt
829bd4c633e4c5e6d56f1c6dc89202683791380083d569acc86094fe8f787e6a agents/magica/work/queue-329/gate/bus-project-files.test.txt
b87218c25abf74733ba7b28f9d940dee1829c23f067b6647ad148d5e0bd9ed48 agents/magica/work/queue-329/gate/bus-project-runtime.test.txt
415dbf4c8c5d041adae04db089c8a2923606ca3e040330bdd46bf3209d3dd650 agents/magica/work/queue-329/gate/bus-publish.test.txt
76c8365b8e37b6716b4d943434af5c4bd725ed4d3fae27ebbf32339352541bfd agents/magica/work/queue-329/gate/bus-reload.test.txt
34a83a35be74c51f5b0196321176aab65d43e63a6516f8fe839c122963b5142f agents/magica/work/queue-329/gate/bus-replies.test.txt
77b45c8db75e239e2b80161e97a5c7a98ea1def514ac9ddedbcdf5a90a2a4c09 agents/magica/work/queue-329/gate/bus-requirements.test.txt
511ecbe0711be2f17de772f9f2f9e096995143ad20f5b5c667a51ddfe398a77a agents/magica/work/queue-329/gate/bus-review.test.txt
530dddca74de5a173e1630215e7aa7b7ffa457c69d7737b57d055bd30585d79d agents/magica/work/queue-329/gate/bus-revoke-window.test.txt
faa26fb718d95282aa3e7f770a363374fdad6e356d4746126ed6b4b51dd32a1c agents/magica/work/queue-329/gate/bus-room-check.test.txt
f79ed2c136e662e3a19b4dd74542bdbd00507c8cfc23557fee82c9a01a073af3 agents/magica/work/queue-329/gate/bus-rooms.test.txt
bd75978eee4d6020275c7c13f160b8c3c094d623ceac002e0e200f9050a28094 agents/magica/work/queue-329/gate/bus-routes-verb.test.txt
40e87c31458d01e74a37af359c3687b8ab094e719e05ef374d3123534b513634 agents/magica/work/queue-329/gate/bus-schema.test.txt
9b1a6d9e77566fb8003211d27962a177c9a142fddfa90e41d836721ae4855012 agents/magica/work/queue-329/gate/bus-session-clear.test.txt
9a2aaaf282938a7204c9a498ca65d63a3940c54c0b6c71553c4333ff5dc9c563 agents/magica/work/queue-329/gate/bus-session-compactions.test.txt
1a2c1b8baca95d3f48f0acd57ae1afee1429b8cc60d7698ccacebbed024fc8d2 agents/magica/work/queue-329/gate/bus-sessions.test.txt
2f7148a583306bac2d379ebabd2cad2beed23d2711f4f9d412052d7f11c295a9 agents/magica/work/queue-329/gate/bus-single-use.test.txt
f5ed62ffe475b60ba77ba269795fb929f144842642adadfd3a2f180bbb352da4 agents/magica/work/queue-329/gate/bus-spec-migration.test.txt
56eabf5e66c1360a9435b5b65338bbb7a898971cc3ec82e4506dd713edc65ee2 agents/magica/work/queue-329/gate/bus-spec-review.test.txt
803aadb4b3bf5f7d9c1e7cb8caf44ecf937535784e2b0afdcc85491fa8b84edb agents/magica/work/queue-329/gate/bus-spec-socket.test.txt
4ebdb1b883a9ca690b7ad554acdbcc609f5e237490344ec33876c2936cf773f7 agents/magica/work/queue-329/gate/bus-spec.test.txt
1c3f7ac8c175550d5d2118abb7edb6e667df164b533115679f2916d5cf46ab2b agents/magica/work/queue-329/gate/bus-staff-request.test.txt
df45bd55dfbbaa4aadd743da6fcb4466c948b615894241302764b7a39c7bd35b agents/magica/work/queue-329/gate/bus-state.test.txt
d56a3ec03670cbbb54b89374cacff875f01b7db52080d8a824e13c522620ca7f agents/magica/work/queue-329/gate/bus-store.test.txt
c7f95b6145d9c568ae2b90dc5186f6c68da304623c63bbf85f94dca6fecda77a agents/magica/work/queue-329/gate/bus-task-page.test.txt
c2e84f7d7da2de232e675d6f3e7d79f889b291186d8300b23473a56e92b29283 agents/magica/work/queue-329/gate/bus-task-read.test.txt
85ca4c7be8e2881dc29ab6a13971f7500befd648b2cc9441060375c8b7731234 agents/magica/work/queue-329/gate/bus-tasks.test.txt
989ef8ece1692263619072136970df050607b8bdba83ebc37b1e94996e97de9c agents/magica/work/queue-329/gate/bus-tester-threads.test.txt
d9545891373696ac9ab0d01b4d00d5f383c9299e8219ba83cd392afb799b118f agents/magica/work/queue-329/gate/bus-tester-writes.test.txt
41b33e178e135d4b07a30570c814d224f5d594782d18acb56900481075665c28 agents/magica/work/queue-329/gate/bus-tester.test.txt
4b946e966b3d3b5f836f312ec59a2e060014d2686b09aff8af6ec9bd270901ce agents/magica/work/queue-329/gate/bus-thread-claims.test.txt
9f0526b32047d5cbe0af049c84cd7ea5cf5115e98306baca552eaa4404da6a3d agents/magica/work/queue-329/gate/bus-thread-migration.test.txt
0be44f74aa5381030bb381a49cefc2c5201cc5fa193375b984c443af518b1158 agents/magica/work/queue-329/gate/bus-thread-shares.test.txt
a0444775133a71a46e40dca4a508459f29a1a1c15b45ac82f53f4f2f20db339b agents/magica/work/queue-329/gate/bus-threads.test.txt
d53db05e384b8e2043d64bce9f92f2a6804a37d61e3184bca74f3954d2eb9a07 agents/magica/work/queue-329/gate/bus-transport.test.txt
d24accc9a22d772e2b18177c8def973502c32cc7fab7367dd086f0b84583cf97 agents/magica/work/queue-329/gate/bus-usage-broker.test.txt
0c87989b3402d0d6071101af6b0377e32de2bac94e1cb31d78f2bef8f384c243 agents/magica/work/queue-329/gate/bus-usage-migration.test.txt
871fdbe8521fed8bc85da01b6aecc02900c4189c223108e5b46f3f1fa740dcde agents/magica/work/queue-329/gate/bus-usage-runtime.test.txt
59e5d28d16fbf6e37257f9981147605902e6717dec29bd5a7f83496033f1c79b agents/magica/work/queue-329/gate/bus-usage.test.txt
5f292b62abd5d2cd0c8e6b6d0ad706320a3885037bf6e0a292ec96379bed982f agents/magica/work/queue-329/gate/bus-user-principal.test.txt
df442eff8279ed35406b16a79f48ee42aed881ad1b0b73286a715bf39fdcf4b8 agents/magica/work/queue-329/gate/bus-viewer.test.txt
3bb98e51f6dc0a611563526ab3f7b2abc8e065dc12ac450ea066684839f56d24 agents/magica/work/queue-329/gate/bus-web.test.txt
f73a9e49f401b2bbcffff087490b02262658f31ea5c2210f27df76afb37a4535 agents/magica/work/queue-329/gate/bus-workflow-roles.test.txt
3d2459b32774ca992238dd0d836f7200dc12d8c968f72d558b9050cdb6f22d4b agents/magica/work/queue-329/gate/cli-access-boot.test.txt
5d1ccc36176c02666bb5a51e3af9f539c7e7d60078415f79fc6249d8839928b0 agents/magica/work/queue-329/gate/cli-access.test.txt
db2f9aa84aeac6896febebd2fdfc00d4607d672791c66099ba3f0e2ce0b33ea9 agents/magica/work/queue-329/gate/cli-app.test.txt
643c87cebcf40a268ddd0205b921e1207f2a96ec33530739b3e434cafb596ebe agents/magica/work/queue-329/gate/cli-boot-status.test.txt
a28a12b5721aff2b9e07e1d269f876ea8d9b23a794237f696eaf5076edb6d54f agents/magica/work/queue-329/gate/cli-case1-accept.rerun-mos1605.load.jsonl
f6c23ffe30284ccc9f7fe03f37033f3e9c117f68be584f2ad7e9a40b372f0fee agents/magica/work/queue-329/gate/cli-case1-accept.rerun-mos1605.txt
6c528c893f55f259d7bfef319814ed0dd6f8b5437c2e9fdf4966b33b834e8f50 agents/magica/work/queue-329/gate/cli-case1-accept.test.txt
1ccb0b9e65c9e27803737f37b64dd35e50a055a741e858c3203d117c9bb76d8c agents/magica/work/queue-329/gate/cli-case1-hostcheck.test.load.jsonl
ea4c54b35ecf063535750936b16da1e3d5e95e9a4f9bcb8252a3f3bf203c9963 agents/magica/work/queue-329/gate/cli-case1-hostcheck.test.txt
69c9f2ea3a14d93ad241f6d93665e4c0641c3cc51f7ef643d390c40b008b3246 agents/magica/work/queue-329/gate/cli-case2-install.test.load.jsonl
84046cfa41f3f6c66549769028eb693dfaf951ce20b675db8c8ad437582bf972 agents/magica/work/queue-329/gate/cli-case2-install.test.txt
ef4cebbd09d14e1770779ace5bd9074ff67fa99c300f95239643fae68fff318f agents/magica/work/queue-329/gate/cli-case2-persona-import.test.load.jsonl
4aaed88f6867cdf7174b2e0cdd2382383d9ff98909c71368882ebaa1ebcb3e25 agents/magica/work/queue-329/gate/cli-case2-persona-import.test.txt
ac2ba0ca7437d56ec8ad4865e5a87897cb61b5570ff8c4f175ee7d9f62353f76 agents/magica/work/queue-329/gate/cli-case2-unit.test.load.jsonl
8a5e7df37d9775b8db45c0df347b5bd9e7c5959dd24dd15d6124cf28d9e13709 agents/magica/work/queue-329/gate/cli-case2-unit.test.txt
d07ab08401042c01c8677f1218c7a49bcf2e367f461aa5022634e52e8c0f9d0b agents/magica/work/queue-329/gate/cli-channel-cli.test.load.jsonl
31aaafd0d40b6cfd8dbb0caee3720c7397ec580d06a0d4743142ddcc42fc2d7e agents/magica/work/queue-329/gate/cli-channel-cli.test.txt
62edb4ed33b35c17528f279e45f5efcf82a7880fc42010cabb94910bf8a0d9b7 agents/magica/work/queue-329/gate/cli-channel-recovery.test.load.jsonl
bea9c87767a343e1a27afbe51ef932bd8f6510849b09228345c2244244505302 agents/magica/work/queue-329/gate/cli-channel-recovery.test.txt
db3446348539871248e53f1bfcebd35a4496224255743d690228e3447577f215 agents/magica/work/queue-329/gate/cli-cli.test.load.jsonl
c1fa513515849d848111d528643a6a7a1ebcc487528bf8632b63c50f6b552f21 agents/magica/work/queue-329/gate/cli-cli.test.txt
db76cc5316176707ec787a0ee9cca89a4c02a3f1e10fb50c02700f931a217261 agents/magica/work/queue-329/gate/cli-compactions-launch.test.load.jsonl
124c15ceeb37cf038271662c490494c7ab0f9606347eefb34691f4466a6061c5 agents/magica/work/queue-329/gate/cli-compactions-launch.test.txt
f61dd35ac07bee8387b79ca354a07184cbacac52513b6eb61e4b01ca86bfb84f agents/magica/work/queue-329/gate/cli-config.test.load.jsonl
548d8e036261d3fdac06c9ca24475d7debe4153bd71ea4a8348b7d9211b9eb53 agents/magica/work/queue-329/gate/cli-config.test.txt
3c83a92ddf1c32362e25bcd3bfc7ecc36528e09e921b3d2055119241e5dbf26a agents/magica/work/queue-329/gate/cli-credentials.test.load.jsonl
c15de39567eba58f484c34a97accb1c453ab1f3794de4ed0216f3a81d3d1d2bf agents/magica/work/queue-329/gate/cli-credentials.test.txt
b08d01cd4bfc8364969cbe7a4be997126d0d01012eaf11b25367a20f99fa2237 agents/magica/work/queue-329/gate/cli-federation-acceptance.test.load.jsonl
4900425c57bbfb0e67b37864f9f693ff904bbd38c856e068d517f80124e680b4 agents/magica/work/queue-329/gate/cli-federation-acceptance.test.txt
1534ac5da32a67b8ffe079d60e1a63f3d82dcee95209548eff809a30ea99a4f3 agents/magica/work/queue-329/gate/cli-follow.test.load.jsonl
6051d17bf3d5dca2752d1c10479dac068c92a64da19943205193e549708d192a agents/magica/work/queue-329/gate/cli-follow.test.txt
44efe4849113a323350830a5e5ac5d6e832896c4aa4dd02edaca50b96b72db58 agents/magica/work/queue-329/gate/cli-format.test.load.jsonl
8e99983328b58a016c7dd051928d020ed7d2884c48f12b2801e455d072e25749 agents/magica/work/queue-329/gate/cli-format.test.txt
9d148dbbfc8889c788926291dc9cdb3efdf8aca301977e8e875d1eae0637db24 agents/magica/work/queue-329/gate/cli-gate-lane-auth.test.load.jsonl
b2b18d99126e93a6c6bb073d386ebfef3deb841c44957b2ea6040b50dc1de0ba agents/magica/work/queue-329/gate/cli-gate-lane-auth.test.txt
7173dbf8bbf16879d0c884686f1df0990087f3329348e9821506acc01a615024 agents/magica/work/queue-329/gate/cli-gate-lane-fixtures.test.load.jsonl
69ed25eeaa7be7d32820e0cd3d3e8671f7330d40b65aa15759e12d2ae4390209 agents/magica/work/queue-329/gate/cli-gate-lane-fixtures.test.txt
138211126f6dfb1b00312f93aa89a050413666f02c22e9a8b37ee613df03689b agents/magica/work/queue-329/gate/cli-gate-lane-image.test.load.jsonl
c97129de02f5b2d044ae181077d6449af8705e73fb168f8e78123c36eb62299f agents/magica/work/queue-329/gate/cli-gate-lane-image.test.txt
1188d8fe8253760b288a9a6d7a1d79e85d9ca3312ebaf8d2d52272c7d30dc16a agents/magica/work/queue-329/gate/cli-gate-lane-state.test.load.jsonl
80945660b44e84b98bad431097c92f22e60cd4fd9162429182967f7455c5b74f agents/magica/work/queue-329/gate/cli-gate-lane-state.test.txt
6779fbe0c1546ac89bae7e7f93cb8db964b1b224dfc90104f7148ccb5e5ec936 agents/magica/work/queue-329/gate/cli-gate-lane.test.load.jsonl
a6d33ab80d1e932b91f2f920277a46be00601af8d4f70b45eae61f978acb712f agents/magica/work/queue-329/gate/cli-gate-lane.test.txt
43f39357447b8c009e5d168a07570cada702fbcdd4fae18946812d88e3a111c5 agents/magica/work/queue-329/gate/cli-git-socket.test.load.jsonl
ed57db2eb019740e0f79667d41716dd54223fc58854963178fc1b3eeba652e5d agents/magica/work/queue-329/gate/cli-git-socket.test.txt
fb02271bc17987afc1a6b96c6439549addeaf6c50f492af6a600f7a344376ebb agents/magica/work/queue-329/gate/cli-grants-scope.test.load.jsonl
88d4ff60021e957c4234be67452a92793877774bd7738cf2544d16b159d57c8c agents/magica/work/queue-329/gate/cli-grants-scope.test.txt
6a8be9e61d750687dfd84a1df96f6d96b3c31d6abfac312fc6b65f1900b4a9f2 agents/magica/work/queue-329/gate/cli-grants.test.load.jsonl
06201797ff0b2092ebc45c46a189112943b24ee37700df42092d913762abd9ca agents/magica/work/queue-329/gate/cli-grants.test.txt
a08e8194db0c5c99863b2cd6d17a973295274c94bd5911c9a86e7be9196ccbca agents/magica/work/queue-329/gate/cli-host.test.load.jsonl
dd8a669b10b62edaa62f7740b99bed09f5a4f0515762e265c072e3d243be98a1 agents/magica/work/queue-329/gate/cli-host.test.txt
0d17cc40b6562321f204f7eb6f418a2b8adcdc907b7064838b1fd3c42b28f79c agents/magica/work/queue-329/gate/cli-hosts.test.load.jsonl
af2f013109d62a7c0829099bec417fbfddae128a853bc9e09c5bbbcfd4cdc7c9 agents/magica/work/queue-329/gate/cli-hosts.test.txt
2d02ce6d0c6eb9d1d81bdb95dd988e74834456323325f96154ce76402b40ef7d agents/magica/work/queue-329/gate/cli-idle-stop-race.test.load.jsonl
c9cf01eed62d6e5fa4e648c62e4c4dc55ca4f25f8fcb6b5dc00e2ae3e4a0bfa9 agents/magica/work/queue-329/gate/cli-idle-stop-race.test.txt
1414c17e59185a5287cf2345786a36e6463c7aca6419ba69de369f0b21079d4d agents/magica/work/queue-329/gate/cli-instances.test.load.jsonl
99dbc498d2db065afcd8f647c0343c44d68acbd7f79076603a874c4beb47430c agents/magica/work/queue-329/gate/cli-instances.test.txt
53016472444342a174dd427d0f64e54afb8f37517cf395e86e32e02d03081e7c agents/magica/work/queue-329/gate/cli-launch-account.test.load.jsonl
a8c89d5267e3d675cdb8dc921d9d319ae905f24ee02ff0e83ab5ba9784ca01b0 agents/magica/work/queue-329/gate/cli-launch-account.test.txt
1cf409576830bce991f0ed2e7d2fa0549c1717797b6cc3f3c85a44235478b756 agents/magica/work/queue-329/gate/cli-launch-limit-checks.test.load.jsonl
cff5c939e7c8b076424e4463dee4579c92ee86a826bcaf8e680fccc7bb4d827d agents/magica/work/queue-329/gate/cli-launch-limit-checks.test.txt
00fe1959c75253c0ef5cabad1d36c58c43cf0c30b2f32831baf9cad32276be6a agents/magica/work/queue-329/gate/cli-launch-limits.test.load.jsonl
4e023e3ff8f9114aca54f9bac9af4426e0153ad2e51034db8bef1ad28d4487a5 agents/magica/work/queue-329/gate/cli-launch-limits.test.txt
a203318b6dde32d53de1f886b7a63f685a7fb3211a02a164a9baad08ceb9e77c agents/magica/work/queue-329/gate/cli-launch-routes.test.load.jsonl
8ae736af66f78f971cbb5b20b928a2d024e5d94321d226d647953e3ef49e7547 agents/magica/work/queue-329/gate/cli-launch-routes.test.txt
3f907dd749672ebabc7ef1f6b0784b793c9671932edf3b70cc04006076118aec agents/magica/work/queue-329/gate/cli-launcher.test.load.jsonl
045baf86e618b48397df03c05e3b11e2c552aa2420c81344f6ca0d93046211e3 agents/magica/work/queue-329/gate/cli-launcher.test.txt
b05038c5dde19b3b05d4ffa9e2c42db4031c10c7187b134f2c71d2c051a6e28e agents/magica/work/queue-329/gate/cli-lifecycle.test.load.jsonl
69b5e8029d3ab819661ecbd24744159c4d9f191051e23aa6ed53107fdc5a89dd agents/magica/work/queue-329/gate/cli-lifecycle.test.txt
10efab4ef7ddbb7bf2466754f3d86d21802791d60dc82709e12b5e7214d5cd8c agents/magica/work/queue-329/gate/cli-limits-tokens.test.load.jsonl
ae6cde9dce4f7c68d77c37fbf882e7c1d10524ebe3d8c78b0b1af3c5c915143a agents/magica/work/queue-329/gate/cli-limits-tokens.test.txt
89fa02463b5ae597027e9057f7659003de03a3c3af9a75848992685e257e9466 agents/magica/work/queue-329/gate/cli-limits.test.load.jsonl
b6b9be5a54140a531e56d200b59d64e5a1a4719db047c506cd846c1a2ebcc17b agents/magica/work/queue-329/gate/cli-limits.test.txt
92a266aa154f14c1e322035aaefc2316abf040acbd7951747937baddee1f37ff agents/magica/work/queue-329/gate/cli-mark-read.test.load.jsonl
0a7ca2abfb72638b2192711db0518bb1f63bb0a3fe61d7c2ca36309cf983897f agents/magica/work/queue-329/gate/cli-mark-read.test.txt
c020f16fa803aee328c0e6deceb0c78c5eb9a23b6816ce2f6425770c3111295f agents/magica/work/queue-329/gate/cli-model-proxy.test.load.jsonl
f65f7cb67b074b27a444cab847eb49f9106add2c8e0e6b6f672319796864b951 agents/magica/work/queue-329/gate/cli-model-proxy.test.txt
ee5cf201426e844de608d4e058a5a09051620a8ab1bac662665dba6075f7d330 agents/magica/work/queue-329/gate/cli-names.test.load.jsonl
3b71310f518914e7b921b55ff852b78491ddfb46986be43a6999a27835f45e5d agents/magica/work/queue-329/gate/cli-names.test.txt
71b4edfa31d7d160869b9c7fe2f57cf7dbfc322eb487e6b534a1d08885cc981f agents/magica/work/queue-329/gate/cli-notifier.test.load.jsonl
fcbb417df5d21d4a05d850a41a6899fe6b26079fa6678ca905d8ba2c7369d563 agents/magica/work/queue-329/gate/cli-notifier.test.txt
6d27545f33d7e46248d79a5eca8bbd77180a00ca352ad96bc3b2748af2e1defb agents/magica/work/queue-329/gate/cli-optional-tracker.test.load.jsonl
48d1a93820b7c0b362ad6d716c6b98f94df152e4a157cff76dce0a01ae33e6e9 agents/magica/work/queue-329/gate/cli-optional-tracker.test.txt
f97e04814208d8938247678cdd45ce6316c2c18f10bcd8433a9efc72f0aa64b2 agents/magica/work/queue-329/gate/cli-other-tree.test.load.jsonl
3d95af03f3633b53c8d6d8f102ad3b78f4765c900d3f105757f59bfcc43e4a3f agents/magica/work/queue-329/gate/cli-other-tree.test.txt
b8f0620113e69e5e735cc6a3fad53d7fd6889a5dfa4db4a202eba9cb94bbb604 agents/magica/work/queue-329/gate/cli-processing-cli.test.load.jsonl
bdabc4c428a177a213bda1a53550ca81a4808d92bdc8020df2c9c658c3fdf472 agents/magica/work/queue-329/gate/cli-processing-cli.test.txt
e3611e5a98d7dbeea0ed5bea03e035d845f2ac4131c036163805e0312482d10c agents/magica/work/queue-329/gate/cli-project-name-repo.test.load.jsonl
ad14f6db01fd3857279f2b4a0cbee41d4a78b0c6dc37e751017dbc6673fab144 agents/magica/work/queue-329/gate/cli-project-name-repo.test.txt
a646b05c06df57b6cec5c7cba3d2aad83662fe30d3287c4d19bcf14d670264b5 agents/magica/work/queue-329/gate/cli-project.test.load.jsonl
67cec3d3a39a15fc8228d570d9021060c645e3601a2a3b240955afd1fae29010 agents/magica/work/queue-329/gate/cli-project.test.txt
dba5336581c8d7a67905fd51f381cbbbbf825b94734cdfb85146ddb78c354ecd agents/magica/work/queue-329/gate/cli-publish-socket.test.load.jsonl
96228ccad31137a17142e5d87684d65bead04e27d61098b766539ce38ca1bb81 agents/magica/work/queue-329/gate/cli-publish-socket.test.txt
abba725bb3098df387207af04d20acd4266917cbcd8aadf3f567c904801cb310 agents/magica/work/queue-329/gate/cli-reply-limits.test.load.jsonl
9e100b9bedb25b90e1bbb708dd4da28208e97209faff9ddc297006d5006bd216 agents/magica/work/queue-329/gate/cli-reply-limits.test.txt
893e7e94364034bf0269cd8cac7b1dbb55dbdeffc1a078a7d79cd7b23d40aac2 agents/magica/work/queue-329/gate/cli-revoke-window.test.load.jsonl
9843b1c155e9a90eebb908ba484fdc6ca26be15f50495bd9606cecfbf2d70c52 agents/magica/work/queue-329/gate/cli-revoke-window.test.txt
602896213eda73b15c6626f82036dc7aca89be17379ccc4fca0496738c57672c agents/magica/work/queue-329/gate/cli-session-clear.test.load.jsonl
71a87f76a2cd60d51dc4f36afe5ab05249111f95af79a780ebc2870304a3e5b9 agents/magica/work/queue-329/gate/cli-session-clear.test.txt
3d777d0499f140a660d1570c22df224734407a618a37ec090cdfac8caaf49e3c agents/magica/work/queue-329/gate/cli-session-cli.test.load.jsonl
3c11262872ecb88754a183179dda398a90e8e8f471174889f4850856868661af agents/magica/work/queue-329/gate/cli-session-cli.test.txt
d98a7094c7e290833cd7d7f4ed7dc67471a00154e85e8726f12bb042d9c70e54 agents/magica/work/queue-329/gate/cli-session-launch.test.load.jsonl
8145036eb8893d1802195317f003beaa4fd3b42bc8ac33b2e89b29ceb1e94a4e agents/magica/work/queue-329/gate/cli-session-launch.test.txt
933c12567cc912906677eff0ff22e8462e9515638a074a3762e2dddb8cc0b3ce agents/magica/work/queue-329/gate/cli-stack-copy.test.load.jsonl
a889e8360f88697ce376fc747836d776fe6e446435d0ea752b3ff00487edaf40 agents/magica/work/queue-329/gate/cli-stack-copy.test.txt
b1f4401da8d8bac46b6705d40ca2fb3202c6ac228d6f15871b3b72d9a1f8dbc9 agents/magica/work/queue-329/gate/cli-stack-instances.test.load.jsonl
509f688aea4ebd8d2881952b3f8edf7b2641d56e12036b0b50b36db19a174653 agents/magica/work/queue-329/gate/cli-stack-instances.test.txt
819f4ea6dabc13c1369d3a28467eff51b80a9d3632e2dcc391a9caf22d24a108 agents/magica/work/queue-329/gate/cli-stack-release-external.test.load.jsonl
2d163018ed6b9f3588944e11ed487cd3cb25b95f35cc614399a595bdeaaf1a3d agents/magica/work/queue-329/gate/cli-stack-release-external.test.txt
058a150be5ea09633dbb001cacf2abc34a030fa437f88840d41ec5dd2a6d1a22 agents/magica/work/queue-329/gate/cli-stack-release.test.load.jsonl
5262abaa192b44f29b4263e0a19f79298c87d0fcad272afdbd7d4e9871033eb7 agents/magica/work/queue-329/gate/cli-stack-release.test.txt
35c11b5ab699a3c717ebef8e49191ebb6e70aadde5c98be8a0cb61db5335d75e agents/magica/work/queue-329/gate/cli-stack-upgrade.test.load.jsonl
38955376895c743b4b22a071a08136667bed659d6f1dc581b2dd1cfd834a664e agents/magica/work/queue-329/gate/cli-stack-upgrade.test.txt
fb1fbb9822512168f6fab0cda02ea2be2b67c6aaab42b0be17d4edb6324de0d0 agents/magica/work/queue-329/gate/cli-tester-http.test.load.jsonl
fd200c1068974a19eb17c4d8106711adbcc13ec4e5c737a2ec7592db45c1fd9f agents/magica/work/queue-329/gate/cli-tester-http.test.txt
82ddfd9276e9184f6015c169cbb50474fa85a16083ef7297051b703ed7d4a899 agents/magica/work/queue-329/gate/cli-tester-reads.test.load.jsonl
27a94718c39ec6bf3506d6d899e206d61c2bed5956db8588486a9d0bd720ceee agents/magica/work/queue-329/gate/cli-tester-reads.test.txt
869000218198a46e7f4de5a07259f76f72c24b8a429f521d3c50de627b9f338a agents/magica/work/queue-329/gate/cli-tester-threads.test.load.jsonl
c6c6468ffdaa1de4ec7d6742d8f2ddbdf0689979ec4ed24bb9533da5c7c475c4 agents/magica/work/queue-329/gate/cli-tester-threads.test.txt
1c266379aeaf97296b5da638943ef11a3ea51efc650f048e26c166d2ea2fa113 agents/magica/work/queue-329/gate/cli-tester.test.load.jsonl
723c913422c971613fc7a73b8e370100b1d2fa55e46dffa823fd4b62559d6f15 agents/magica/work/queue-329/gate/cli-tester.test.txt
5de22f85a59260a6b31733257d9d49820b72057f9c88c4e6596aa3d8f71c8618 agents/magica/work/queue-329/gate/cli-thread-cli.test.load.jsonl
d62c7534909205b239111000fb92a6d47ee3fca96aeb33387162743c9cd2c19b agents/magica/work/queue-329/gate/cli-thread-cli.test.txt
9da08a8a07fe855c2ab1a095666597995d54b9856d733d6ff63bc1bf0fab0c34 agents/magica/work/queue-329/gate/cli-thread-launch.test.load.jsonl
43bb9c5f7bcfd3739345662206acec794ff76d3b4d501b0d8e47367eb9f47a01 agents/magica/work/queue-329/gate/cli-thread-launch.test.txt
e1377c9f503af3d4c660406b1600e7b34ce31b24133c02602eef1eae906924e2 agents/magica/work/queue-329/gate/cli-thread-revoke.test.load.jsonl
f1831b82c8e8e8e3fa097ce1c1f5a921b2cd9b0b6ebbb97f62d14a17f6aa1f37 agents/magica/work/queue-329/gate/cli-thread-revoke.test.txt
7a5c582e4e58d0200d64e5801afbe39c0f70356ce70ab06c74d11f8cd3a3e75d agents/magica/work/queue-329/gate/cli-trackers-boot.test.load.jsonl
2a4580ddf6d31deaad6e9adc8032fa423e7dcbf30da3465f27d8f64c21b5cab3 agents/magica/work/queue-329/gate/cli-trackers-boot.test.txt
38aa222d53c4ae719c622c2ee512e6d07418331832724d82e86393b87b2d894b agents/magica/work/queue-329/gate/cli-transport.test.load.jsonl
a62e0ea70fcf35378c7f00001bf96435cb3684c23f5cbd6017719b2438474405 agents/magica/work/queue-329/gate/cli-transport.test.txt
9fe759634f4d47870e1df709603281b779d2f05c5f0c26d77d43fdaa218bb593 agents/magica/work/queue-329/gate/cli-usage.test.load.jsonl
1c4e599c381fad900dae7ff9bba00214a8075f05b82a05bd34726b86e1b02ebe agents/magica/work/queue-329/gate/cli-usage.test.txt
3b5b858f1822cce5fe19659868f96e69d1fed53c2e4b1297e0a473b88c4042a9 agents/magica/work/queue-329/gate/cli-verbs.test.load.jsonl
693f19a8f0c93c7a33000bd7a86c5af54edbbdfba53631fb892dacbd8173806f agents/magica/work/queue-329/gate/cli-verbs.test.txt
4c2531e802ac826df1324345bfc2da9ec18d3531ed67ce2b406f49014a83dba4 agents/magica/work/queue-329/gate/model-proxy-client.test.txt
832ec82ece9657a7769e2ff3eed69afa38c53a056a402ad6ea388f6808a0282c agents/magica/work/queue-329/gate/model-proxy-config-unit.test.txt
f2dcc1e42876b8446f16466718ee889a4d0801d15b8d1c7c85377d97c2f7c501 agents/magica/work/queue-329/gate/model-proxy-fetch.test.txt
471640a8f91144226a4b2b990acb6c9e89c9af545e942bc21b8f507fefda38cb agents/magica/work/queue-329/gate/model-proxy-runner.test.txt
356d37019d693ef6e6e2616ab308f66265c599fc579bac9d5984d676c5d75e8c agents/magica/work/queue-329/gate/model-proxy-settings.test.txt
ca054157c6bb36f40dc6c7a0942d4195fccdfc87b1a77062fb44f6db3fd84c2d agents/magica/work/queue-329/gate/npm-root.txt
66ac3eda1c48dd7eff9d87623cfd89ed91eddf8af2a53ea15c91ba9564036882 agents/magica/work/queue-329/gate/npm-webui.txt
6addfaa9d1ec3476ab8cae77bc47790778085305c97e73e3e06bda8e4e11ca1c agents/magica/work/queue-329/gate/post-unit-fix-cli-host.test.load.jsonl
4279f8849f31257c754b770cf943c0f4b6bed6106191baa78774d6c17181f957 agents/magica/work/queue-329/gate/post-unit-fix-cli-host.test.txt
3f1c6de8792aad1fdb5e3a6979b88d46c7147da162ab040bbc3008e4f77a3160 agents/magica/work/queue-329/gate/post-unit-fix-cli-stack-copy.test.txt
f94305b2b9848c18bfdb2be0acf36fa70f9cf1483b084ea916a2335ab4b8a1f9 agents/magica/work/queue-329/gate/post-unit-fix-cli-stack-instances.test.txt
2e5e67fa37641602a49b10e3f491d345cd9be86056fd74618a7cba15ae562a5c agents/magica/work/queue-329/gate/post-unit-fix-cli-stack-release-external.test.load.jsonl
779c414e2894e42cf59cd320a23998a787e0a16d7878214231eac9fadbd31d6f agents/magica/work/queue-329/gate/post-unit-fix-cli-stack-release-external.test.txt
0d3bd523369a665bf464bc442767023ec0144d5e6fe134564cf02a6423c93aeb agents/magica/work/queue-329/gate/post-unit-fix-cli-stack-release.test.load.jsonl
c58635b7c238415a30f1a4b7c1f257d7ab90dd320e38da1f44b75813feb2d759 agents/magica/work/queue-329/gate/post-unit-fix-cli-stack-release.test.txt
ed297ed67e9c4257004d0b1caab5b854592e4f710146f0e13bf4af52bc70d74c agents/magica/work/queue-329/gate/post-unit-fix-cli-stack-upgrade.test.load.jsonl
6bba10f23320b07f43f9f9bb66546b9ade9cf6cb2bfc2447cc1562feceb51fe3 agents/magica/work/queue-329/gate/post-unit-fix-cli-stack-upgrade.test.txt
6010d37970747988a35e3971455ef06613e6da0a771d65b131cea97dac90da7b agents/magica/work/queue-329/gate/post-unit-fix-cli-verbs.test.load.jsonl
648c3a58103f7bc9d6201b9557c0dd1329713d8b7e171f54b2e3ca7fb3097a81 agents/magica/work/queue-329/gate/post-unit-fix-cli-verbs.test.txt
a71091aae2d606745235b527ff6405bfa0933f91e943deea71509512bdd824a7 agents/magica/work/queue-329/gate/post-unit-fix-model-proxy-client.test.txt
9935d0cb31e6ea8a268d8737de7e0d1a4694222cca8fd8a1a6fb85b25ca7f584 agents/magica/work/queue-329/gate/post-unit-fix-model-proxy-config-unit.test.txt
9a8ca7e1b530a5e20159113efabb7c29afd057de42670c5bee1eef8e224fdaf7 agents/magica/work/queue-329/gate/post-unit-fix-model-proxy-fetch.test.txt
f90198940d77683e83a567815bff27a7d3eda3818d83d2e6db98cceccba72dd3 agents/magica/work/queue-329/gate/post-unit-fix-model-proxy-runner.test.txt
1d903940b3029921495bf7374cb2f292c217f5305e5e891783427b193a586347 agents/magica/work/queue-329/gate/post-unit-fix-model-proxy-settings.test.txt
6f8a696f90f0f3afcaebbd5b13e82d5bc7e40e46c88fef63faa1be16ae321de8 agents/magica/work/queue-329/gate/post-unit-fix-webui-pinned-copy.test.txt
21d8ca6d4a6530380a2b94e94872eb6d2bb7aa63c866ee70ff7798b9219c1b2f agents/magica/work/queue-329/gate/resume-mos1605-runs.jsonl
5e6ce55ef8a1cb4506384530f4ad8b8af93be6b41411cbcb7d53b5f61bc5379d agents/magica/work/queue-329/gate/runs.jsonl
cd473a832391e2588c98d4a4085ece27f3132435f5ddb0fb2977b15f2db9debc agents/magica/work/queue-329/gate/test-config.sh.load.jsonl
2dc3ff347b7359af1b729b97405e167f43a66a71a49324d8e902e26e4447b6e6 agents/magica/work/queue-329/gate/test-config.sh.txt
a07aeb995eba36fd6bdeb76abdd101d1126fc7188826e7bdd3fee487efe644f0 agents/magica/work/queue-329/gate/test-federation-acceptance.sh.load.jsonl
284dee983d7346a0c03fafd917299a135f05efed7989fc1b59883ae3232d602f agents/magica/work/queue-329/gate/test-federation-acceptance.sh.txt
40904a9a2b69b15b61e09aa9f1fa5ea79d63e17cd888c532eae19d1679a40d9c agents/magica/work/queue-329/gate/unit-custom-config-red.txt
84bf8ea621c5d580953a89a22afc7a30d6001e8aaaa01b31d161c33f230e1a4d agents/magica/work/queue-329/gate/webui-pinned-copy.test.load.jsonl
24192013fcf0f1a63402ee0c8e5a00da5ef7fd0c5e87370c2e38c9be1dbbb8b7 agents/magica/work/queue-329/gate/webui-pinned-copy.test.txt
e7fa0ff14ca8087fa1733a69e932169099e3a16e5077557ee836f7aa354bc9fb agents/magica/work/queue-329/readers.txt
b8a80e488e85953ce9ef815cbe4e0bf4009012c8121ba659074fb8873cca856d agents/magica/work/queue-329/refusal-inventory.txt
12c5a63a1cca1f89168ae93eec981888ed2126a2a7abefe65751df66b67686cf agents/magica/work/queue-329/resume-mos1605-progress.txt
5de7f8433dfc2ffc0c4496b4fc1ee957ec24e83baecbb7347633b7f5e8d62e65 agents/magica/work/queue-329/resume-mos1605.py
05e38853b4e49870bd6b44c246c8e9fbd41f98c2389e0e3ca7b87cc9c143c686 agents/magica/work/queue-329/scratch-root.txt
48791faf9e423860bc5a8cefa224256f836f18f803ce8c872c97d033826bb274 docs/SESSIONS.md
24620d450b9e2defd2ed738596e440364a2a06fd84712ad154d9da970985e61d packages/bus/src/broker.mjs
6688c153b13a401d475212fb7dce9727d78431ab6840550482847f47889e84a6 packages/bus/src/runtime.mjs
b88932524302e2f7a7bdfbd4daffc1f5b05ae578b51e2dc2f3f74280fc0de398 packages/bus/src/server.mjs
0d6cb865a5b41928708f29795c7bd1011bd568955ddad5289e658ab61b24a00f packages/bus/tests/model-proxy.test.mjs
1850d16736322da024d52321e9975ba6f27e2079a59e7da5592e4f9aaf59533c packages/cli/src/cli.mjs
d960c2a9df3f7c84deff22dad1f0ab120f95ee365984e390de98eba7292b65a1 packages/cli/src/config.mjs
d706a43ed01df1daf15b2ade6132783aff4913f901f80761b319d231e0d279f4 packages/cli/src/model-proxy.mjs
16c31f119d064a836794d167d57a6a1b765303005d93d1feba3e07e4b9288bd2 packages/cli/systemd/mosaic-proxy.service.in
3031a514f5eb1e911ae5220ee8819ba5d409737a8809bb5922650bbe4f95edfc packages/cli/tests/model-proxy.test.mjs
889ac9589fadf7654d4dbb914f968cbafe4255ed215bd6a9ff3f331757c9017b packages/model-proxy/PIN
24745f244aba0789245af21d275e3cc2fed8c07342369caa68369b73d8d1d3f6 packages/model-proxy/README.md
8fbfb3d1562e9ea824a1bd399b17cb2048c92b125e7699ccf27abdcc6e31e40b packages/model-proxy/package.json
c1e835580f2c33d8ce1e75af4e5c99e0425d1a88b50f25bf514a4f90f7134932 packages/model-proxy/src/client.mjs
e214c152ce8fa2df867bdc28194aedb53dbba601c248a606dc5d7bcd0735c189 packages/model-proxy/src/common.mjs
00378d2ea95ac4945899696462f8ff4c70dc020cc58d93663d731d2f2f333783 packages/model-proxy/src/fetch.mjs
919e9b7edac981881d9b39fda3709a11db39b9c3eb138eff1c3ba8d2b55395aa packages/model-proxy/src/run.mjs
c9a8783b272c434bb36697d0763e7fd93db8be208d6cf3da97262dd8f5b0ab10 packages/model-proxy/src/runner.mjs
1a5690a27d2b192151328b194d96cedd60d0a291cfc8e99431680c3b24ddea29 packages/model-proxy/src/settings.mjs
790c6a50ec030a8b27a28fac7fd129bd9eabe79774adf11d6620c00df9b6ae86 packages/model-proxy/tests/client.test.mjs
5f9d35c45322b1a843058514e7e2bdb870168195cb7522ad43c13ee4e3899da4 packages/model-proxy/tests/config-unit.test.mjs
87065f2ce53f6a793e17c2a7feff1c9e3cf93f5ef61ade4a35ffd2afb2cb17cb packages/model-proxy/tests/fetch.test.mjs
21c93b87f8145eb584255bc2a126236ee482e4718b6973e6cce2d8e785c77bf4 packages/model-proxy/tests/runner.test.mjs
4e496fb3faf639713c2dd2a12f34d6add962a50c520bcd3590f0590d0563b9b7 packages/model-proxy/tests/settings.test.mjs
c2c8ab246ecb5e73faa39b98fbbced5740e7c1abf352d8865ff2028ff7c36e3a scripts/bus-service.sh
1aaf56914ea0ba3793f96cace9a774f2076065296603d6baad653fa36c4c90c2 scripts/instance.sh
96dfe299b3b9041b42ef27fa6a37d444e735fcefffcb5eefcb1bb390d077e46e scripts/mosaic
98a86764925182c2487932257431770053efe758a87dedaf494ccc8d2473b4e3 scripts/mosaic-config.mjs
e1d9fd91e3a6eedb3b16ad3145d01ec4f583880f943054b8384ddba6b5ed31ba scripts/proxy-service.sh
b96b2f662d2b63e3360bfbd26e453e9fe74953a15d29b2f2beac6deb5a18cf22 scripts/stack-copy.sh
+81
View File
@@ -0,0 +1,81 @@
# Row 329 P1 review packet — #1827, Vikunja237
Branch magica/row329, required base8bb5b3c73. Boyd first Codex review,
Dewey landing review. BUILD.md carries rulings, acceptance output and gate receipts.
This is P1 only; P2-P7 do not ship here.
## Review focus
- PIN chain: archive SHA256, extracted executable SHA256 and pinned panel SHA256;
manual release-host redirect checks, bounded downloads, no archive path extraction
to disk, failed install cleanup, refusal to overwrite a differing target.
- Config invariant2: proxy.json is an exclusive sidecar; config.json is never
changed. Strict port/path/field validation. A missing sidecar preserves no-proxy
behavior; a present invalid/symlink sidecar refuses. Historical no-proxy copies
do not import the new package; new pinned copies include its source and PIN.
- Human boundary: CLI no-echo double prompt, agent/tester refusal, path-bound
human-cli transport, broker #human fence before key handling, async server path.
The bus writes private key/config/directories once, with rollback for failures.
Public answer is exactly port/binary; neither input nor result key is logged.
- Management client: bus holds it after Store's per-root writer lock; no process
IPC/verb returns it. node:http addresses numeric loopback directly, never follows
redirects, sends management key only as Authorization. GET/PUT v8 list only;
receipts contain call/status/12-hex SHA256 key IDs, never values or list bodies.
- Unit: default/named names, conditional bus Wants/After only when configured,
optional pinned stack copy, hash validation before execution, fixed panel dir,
local catalog and no ambient provider/management credentials in child env.
- Backward behavior: all old test files and assertions remain byte-identical to
base8bb5b3c73. Broad bus/CLI runs and pinned-copy regression are the builder checks;
Sage's landing gate covers every other package except queue and all shell suites.
## Release measurements and acceptance limits
CLIProxyAPI8.0.42, not8.0.27; panel1.26.7.
Archive: 1e10566fe0042ed5a9b80306cf296bf86a83de590cd967a8b177988b896c8d31
Executable: 74661f8cf949977870231359e8bf4344e07946766a673c08fa25a3e5f72fc95e
Panel: 8c9c6b7d3fb311e6aad5d06e1993e53a2d28389e640448a1bc6304ed20b057b5
Boyd independently downloads the exact release assets and re-measures them.
Acceptance only uses fresh scratch roots and unshare-rn, nice19. No host proxy,
real management key, real proxy data, real credentials or external upstream call.
Full plain text appears in BUILD.md and acceptance-final.txt. Original probe1
and its source are retained separately as requested by Sage.
Empty list is open; models is local; invalid key gets401 with a flat error body.
Removed key enforcement had a100ms-scale lag after a successful PUT. ClaudeCode
wrong/revoked keys produced no output and timed out45s; no causal claim/shape fix.
Per-key model objects get422; no v8 per-client model restrictions found.
OAuth start returns separate localhost callbacks; no external OAuth was completed.
Panel works with explicit /proxy Custom Connection URL and prefix strip in the
unsandboxed diagnostic. With the required CSP sandbox it fails localStorage and
login; an explicit opaque-origin fetch loses the SameSite=Lax cookie. Those are historical negative acceptance findings, not a working Console
forward. Q250 / mos-1606 supersedes the forward: P4 builds the Console's own
proxy page. P1's panel/sub-path/sandbox and callback-forward questions are no
longer required, and the existing results stay recorded. PIN/fetch are unchanged.
Still-required OAuth start redirects are Claude http://localhost:54545/callback
and Codex http://localhost:1455/auth/callback. No CORS loosening, unsandboxed
forward or panel JS on the Console origin ships. No external OAuth was completed.
## Gate
Final source checked with whole model-proxy61/61, bus1018/1018, CLI999pass
plus1listed FED R7 skip, webui pinned-copy10/10, config55/55, and the dedicated
federation runner1/1 with0skip and cleanup verified. Own offline npm ci ran at
root/webui, ignore-scripts. Every test launch used nice19, short shell-created
TMPDIR and timeout-k10. gate/FINAL-COUNTS.json maps every test file to its receipt.
An initial old case1-accept F3 assertion got an extra F7. Mos1604's separate
20focused+3whole scratch diagnostics passed179/179 without gate credit. Mos1605
allowed one unchanged original rerun; it passed53/53, then the remaining gate
completed. F7 remains unexplained (Vikunja625); no old assertion was changed.
Sage's landing gate must pass independently.
A final P1-only fix binds both default units to an explicit MOSAIC_CONFIG when
proxy-configured, instead of the proxy using that config and the bus dropping it.
Two new P1 tests failed first, then passed; the full package and all seven direct
CLI unit-reader test files were run whole on the final tree per sage4251. They
all passed. No-proxy rendering stays unchanged. The helper runs through readers.
MANIFEST.sha256 covers every changed file versus8bb5b3c73 except itself. Release
binaries and panel stay outside Git; independent asset measurements are Boyd's.
@@ -0,0 +1,30 @@
P1 isolated acceptance root /mnt/storage/scratch/tmp/KXZOfD nice 19
binary sha256 74661f8cf949977870231359e8bf4344e07946766a673c08fa25a3e5f72fc95e
P1 client receipt {"call":"GET /v8/management/config/access/api-keys","status":200,"keyIds":["48eead3cdecf"]}
P1 client real API GET count 1
P1 client receipt {"call":"PUT /v8/management/config/access/api-keys","status":200,"keyIds":["48eead3cdecf"]}
P1 client real API PUT {"ok":true}
pinned panel served 200 8c9c6b7d3fb311e6aad5d06e1993e53a2d28389e640448a1bc6304ed20b057b5
pinned login flags -claude-login | -codex-login | -no-browser
wrong/missing key models wrong {"status":401,"body":"{\"error\":\"Invalid API key\"}"}
wrong/missing key models missing {"status":401,"body":"{\"error\":\"Missing API key\"}"}
models local 200 upstream delta 0 body length 1739
valid messages {"status":200,"body":"{\"id\":\"msg_p1\",\"type\":\"message\",\"role\":\"assistant\",\"model\":\"claude-sonnet-5-5\",\"content\":[{\"type\":\"text\",\"text\":\"hello\"}],\"stop_reason\":\"end_turn\",\"usage\":{\"input_tokens\":1,\"output_tokens\":1}}"} upstream delta 1
wrong messages {"status":401,"body":"{\"error\":\"Invalid API key\"}"}
initial key list {"status":200,"body":"[\"p1-client\"]"}
set empty {"status":200,"body":"{\"config-version\":8,\"status\":\"ok\"}"}
empty list settled {"elapsedMs":105,"statuses":[401,200],"body":"[models]"}
empty list missing key status 200
empty list missing key messages {"status":200,"body":"{\"id\":\"msg_p1\",\"type\":\"message\",\"role\":\"assistant\",\"model\":\"claude-sonnet-5-5\",\"content\":[{\"type\":\"text\",\"text\":\"hello\"}],\"stop_reason\":\"end_turn\",\"usage\":{\"input_tokens\":1,\"output_tokens\":1}}"}
restore list {"status":200,"body":"{\"config-version\":8,\"status\":\"ok\"}"}
restored list settled wrong key {"elapsedMs":104,"statuses":[200,401],"body":"{\"error\":\"Invalid API key\"}"}
revoke client {"status":200,"body":"{\"config-version\":8,\"status\":\"ok\"}"}
revoked key settled {"elapsedMs":2,"statuses":[401],"body":"{\"error\":\"Invalid API key\"}"}
revoked key models {"status":401,"body":"{\"error\":\"Invalid API key\"}"}
revoked messages {"status":401,"body":"{\"error\":\"Invalid API key\"}"}
per-key model object attempt {"status":422,"body":"{\"error\":\"invalid_config\",\"message\":\"parse config payload: yaml: unmarshal errors:\\n line 12: cannot unmarshal !!map into string\"}"}
final restored list settled {"elapsedMs":2,"statuses":[401],"body":"{\"error\":\"Invalid API key\"}"}
v8 key list {"status":200,"body":"[\"p1-client\"]"}
oauth start anthropic {"status":200,"body":"{\"state\":\"208bd2a002a312d996f6c5a416ecc311\",\"status\":\"ok\",\"url\":\"https://claude.ai/oauth/authorize?client_id=9d1c250a-e61b-44d9-88ed-5944d1962f5e\\u0026code=true\\u0026code_challenge=BsWT1fuo1kBcP-EySiawhlK-cfN2B62ta6VKP8qvaIU\\u0026code_challenge_method=S256\\u0026redirect_uri=http%3A%2F%2Flocalhost%3A54545%2Fcallback\\u0026response_type=code\\u0026scope=user%3Aprofile+user%3Ainference+user%3Asessions%3Aclaude_code+user%3Amcp_servers+user%3Afile_upload\\u0026state=208bd2a002a312d996f6c5a416ecc311\"}"}
oauth start codex {"status":200,"body":"{\"state\":\"fffb20861e7b44a1d70c45a2de1f9b8c\",\"status\":\"ok\",\"url\":\"https://auth.openai.com/oauth/authorize?client_id=app_EMoamEEZ73f0CkXaXp7hrann\\u0026code_challenge=Swdf4fq2oLSpl2K6CQJYbeHw7aC50nby_h0l-O52kqc\\u0026code_challenge_method=S256\\u0026codex_cli_simplified_flow=true\\u0026id_token_add_organizations=true\\u0026prompt=login\\u0026redirect_uri=http%3A%2F%2Flocalhost%3A1455%2Fauth%2Fcallback\\u0026response_type=code\\u0026scope=openid+email+profile+offline_access\\u0026state=fffb20861e7b44a1d70c45a2de1f9b8c\"}"}
acceptance probes complete
@@ -5,6 +5,7 @@ import http from 'node:http';
import { spawn, execFileSync } from 'node:child_process';
import { createHash } from 'node:crypto';
import { initialConfig } from '../../../../packages/model-proxy/src/settings.mjs';
import { ManagementClient } from '../../../../packages/model-proxy/src/client.mjs';
const root = process.argv[2], assets = process.argv[3];
if (!root?.startsWith('/mnt/storage/scratch/tmp/') || process.env.P1_ISOLATED !== 'yes') throw Error('acceptance requires wrapper');
const children=[], servers=[];
@@ -33,24 +34,32 @@ try{
console.log('binary sha256',createHash('sha256').update(fs.readFileSync(path.join(assets,'release','cli-proxy-api'))).digest('hex'));
await serve((q,s)=>{upstreamCalls++;s.setHeader('Content-Type','application/json');s.end(JSON.stringify({id:'msg_p1',type:'message',role:'assistant',model:'claude-sonnet-5-5',content:[{type:'text',text:'hello'}],stop_reason:'end_turn',usage:{input_tokens:1,output_tokens:1}}));},18401);
launch(path.join(assets,'release','cli-proxy-api'),['-config',path.join(root,'config.yaml'),'-local-model'],{env:{...env,MANAGEMENT_STATIC_PATH:path.join(root,'static')}});await wait(port);
const management=new ManagementClient({baseUrl:`http://127.0.0.1:${port}`,key:'p1-management',receipt:entry=>console.log('P1 client receipt',JSON.stringify(entry))});
console.log('P1 client real API GET count',(await management.getKeys()).length);console.log('P1 client real API PUT',JSON.stringify(await management.putKeys(['p1-client'])));
const panelResponse=await request('/management.html',{key:null});console.log('pinned panel served',panelResponse.status,createHash('sha256').update(panelResponse.body).digest('hex'));
const cliHelp=launch(path.join(assets,'release','cli-proxy-api'),['-help']);await new Promise(r=>cliHelp.on('close',r));console.log('pinned login flags',fs.readFileSync(path.join(root,`${children.length-1}.stdout`),'utf8').split('\n').filter((l,i,a)=>/-(claude|codex)-login|-no-browser/.test(l)).join(' | '));
for(const key of ['wrong',null])console.log('wrong/missing key models',key===null?'missing':'wrong',JSON.stringify(await request('/v1/models',{key})));
const before=upstreamCalls;const models=await request('/v1/models');console.log('models local',models.status,'upstream delta',upstreamCalls-before,'body length',models.body.length);
const message={model:'claude-sonnet-5-5',max_tokens:32,messages:[{role:'user',content:'hello'}]};
const inferenceBefore=upstreamCalls;console.log('valid messages',JSON.stringify(await request('/v1/messages',{method:'POST',body:message})),'upstream delta',upstreamCalls-inferenceBefore);
console.log('wrong messages',JSON.stringify(await request('/v1/messages',{method:'POST',key:'wrong',body:message})));
console.log('initial key list',JSON.stringify(await request('/v8/management/config/access/api-keys',{key:'p1-management'})));
console.log('set empty',JSON.stringify(await request('/v8/management/config/access/api-keys',{method:'PUT',key:'p1-management',body:[]})));
await enforce('empty list settled',null,200);
console.log('empty list missing key status',(await request('/v1/models',{key:null})).status);
console.log('empty list missing key messages',JSON.stringify(await request('/v1/messages',{method:'POST',key:null,body:message})));
console.log('restore list',JSON.stringify(await request('/v8/management/config/access/api-keys',{method:'PUT',key:'p1-management',body:['p1-client']})));
await enforce('restored list settled wrong key','wrong',401);
console.log('revoke client',JSON.stringify(await request('/v8/management/config/access/api-keys',{method:'PUT',key:'p1-management',body:['p1-sentinel']})));
await enforce('revoked key settled','p1-client',401);
console.log('revoked key models',JSON.stringify(await request('/v1/models',{key:'p1-client'})));
console.log('revoked messages',JSON.stringify(await request('/v1/messages',{method:'POST',key:'p1-client',body:message})));
console.log('per-key model object attempt',JSON.stringify(await request('/v8/management/config/access/api-keys',{method:'PUT',key:'p1-management',body:[{key:'p1-limited',models:['claude-sonnet-5-5']}]})));
await request('/v8/management/config/access/api-keys',{method:'PUT',key:'p1-management',body:['p1-client']});
await enforce('final restored list settled','wrong',401);
console.log('v8 key list',JSON.stringify(await request('/v8/management/config/access/api-keys',{key:'p1-management'})));
for(const provider of ['anthropic','codex'])console.log('oauth start',provider,JSON.stringify(await request(`/v0/management/${provider}-auth-url?is_webui=true`,{key:'p1-management'})));
if(process.argv[4]!=='api-only'){
await serve((q,s)=>{
forwarded.push({method:q.method,path:q.url,origin:q.headers.origin??null,cookie:!!q.headers.cookie});
if(sandbox)s.setHeader('Content-Security-Policy','sandbox allow-scripts allow-forms');
@@ -89,5 +98,6 @@ try{
const c=launch('/usr/bin/timeout',['-k','2','45','/home/jwoltje/.local/bin/claude','-p','Reply hello.','--model','claude-sonnet-5-5','--output-format','text','--restricted','--tools','','--permission-mode','dontAsk','--settings',settings,'--strict-mcp-config','--mcp-config',mcp,'--disable-slash-commands'],{env:{...env,HOME:chome,ANTHROPIC_BASE_URL:`http://127.0.0.1:${port}`,ANTHROPIC_AUTH_TOKEN:key,CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC:'1'}});
const index=children.length-1;const result=await new Promise(r=>c.on('close',(code,signal)=>r({code,signal})));console.log('Claude Code wrong/revoked key',key,JSON.stringify(result),'output',JSON.stringify(fs.readFileSync(path.join(root,`${index}.stdout`),'utf8').slice(0,2000)));
}
}
console.log('acceptance probes complete');
}finally{for(const child of children)child.kill('SIGTERM');for(const s of servers)s.closeAllConnections?.();for(const s of servers)s.close();}
+3 -2
View File
@@ -3,10 +3,11 @@
set -euo pipefail
HERE=$(cd "$(dirname "$0")" && pwd)
ASSETS=${1:?download root required}
MODE=${2:-full}
export TMPDIR=$(mktemp -d /mnt/storage/scratch/tmp/XXXXXX)
timeout -k 10 240 nice -n $((19 - $(nice))) unshare -rn bash -c '
set -e
ip link set lo up
export P1_ISOLATED=yes
exec node "$1/acceptance.mjs" "$TMPDIR" "$2"
' bash "$HERE" "$ASSETS"
exec node "$1/acceptance.mjs" "$TMPDIR" "$2" "$3"
' bash "$HERE" "$ASSETS" "$MODE"
@@ -0,0 +1,14 @@
[2026-10-24 14:25:55] [0c57327f] [warn ] [gin_logger.go:111] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
[2026-10-24 14:25:56] [f8b1d5d3] [warn ] [gin_logger.go:111] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
[2026-10-24 14:25:57] [b6b42520] [warn ] [gin_logger.go:111] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
[2026-10-24 14:25:59] [fdef34a5] [warn ] [gin_logger.go:111] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
[2026-10-24 14:26:04] [7dfebc40] [warn ] [gin_logger.go:111] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
[2026-10-24 14:26:12] [ef0c1281] [warn ] [gin_logger.go:111] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
[2026-10-24 14:26:29] [a57da9d8] [warn ] [gin_logger.go:111] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
[2026-10-24 14:26:40] [4573e4c4] [warn ] [gin_logger.go:111] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
[2026-10-24 14:26:41] [4c48fe38] [warn ] [gin_logger.go:111] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
[2026-10-24 14:26:42] [e28d6dac] [warn ] [gin_logger.go:111] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
[2026-10-24 14:26:44] [30d5a01e] [warn ] [gin_logger.go:111] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
[2026-10-24 14:26:48] [8ad4b4b7] [warn ] [gin_logger.go:111] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
[2026-10-24 14:26:57] [11396dd0] [warn ] [gin_logger.go:111] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
[2026-10-24 14:27:14] [1cdba68c] [warn ] [gin_logger.go:111] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
@@ -0,0 +1,19 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/model-proxy.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/bTrsYr
launch nice: 19
✔ proxy.init only accepts path-bound outside-agent human; refuses agent/tester/reader (22.001114ms)
✔ proxy.init proxy-key-invalid (12.495581ms)
✔ proxy.init proxy-config-invalid (12.799141ms)
✔ proxy.init invalid-request (12.031243ms)
✔ proxy.init not-configured (11.470404ms)
✔ proxy.init callback error redacts key and maps outcome to named refusal (11.928112ms)
✔ socket awaits proxy.init and does not return a Promise object or retain human cap (34.01592ms)
✔ proxy-init-failed: extra callback fields cannot return a management key (13.259736ms)
ℹ tests 8
ℹ suites 0
ℹ pass 8
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 223.366823
@@ -0,0 +1,20 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/cli/tests/model-proxy.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/bTrsYr
launch nice: 19
✔ proxy init agent and tester refuse before prompting or transport (1.292032ms)
✔ proxy init prompts twice through no-echo seam and sends key only through human transport (1.131391ms)
✔ proxy-key-mismatch: confirmation refuses without bus call (0.393465ms)
✔ proxy-terminal-required: stdin redirection refuses (0.331981ms)
✔ proxy-usage: invalid verb and repeated flags refuse (0.565751ms)
✔ proxy-config-invalid: port 8317 refuses before prompting (0.347143ms)
✔ proxy-key-invalid: empty prompt refuses without printing input (0.381729ms)
✔ real no-echo prompt restores terminal state and never writes the key (0.910677ms)
✔ real no-echo prompt ctrl-C refuses and restores echo (0.419524ms)
ℹ tests 9
ℹ suites 0
ℹ pass 9
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 161.669135
@@ -0,0 +1,27 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/model-proxy/tests/client.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/bTrsYr
launch nice: 19
✔ proxy-client-invalid: https://127.0.0.1:18318 (1.107341ms)
✔ proxy-client-invalid: http://example.com:18318 (0.130074ms)
✔ proxy-client-invalid: http://localhost:18318 (0.081768ms)
✔ proxy-client-invalid: http://127.0.0.1:8317 (0.083355ms)
✔ proxy-client-invalid: http://user:[email protected]:18318 (0.093861ms)
✔ proxy-client-invalid: http://127.0.0.1:18318/path (0.083517ms)
✔ client GET/PUT v8 only, Authorization header, receipt IDs without values or bodies (21.421201ms)
✔ proxy-client-refused (3.58892ms)
✔ proxy-client-response (2.46659ms)
✔ proxy-client-redirect (1.398621ms)
✔ proxy-client-down: transport errors redact details (1.169076ms)
✔ proxy-client-invalid: PUT rejects object key records and empty strings locally (0.209769ms)
✔ proxy-management-key-invalid: missing, symlink and public key file refuse without values (1.213052ms)
✔ bus management-key loader supplies a private fixture key without exposing it on the client (0.58163ms)
✔ proxy-client-response: truncated response remains a redacted named refusal (12.893923ms)
✔ management client ignores ambient fetch dispatchers (1.614034ms)
ℹ tests 16
ℹ suites 0
ℹ pass 16
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 119.49347
@@ -0,0 +1,24 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/model-proxy/tests/config-unit.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/bTrsYr
launch nice: 19
✔ loader proxy absent is byte-compatible; present validates sidecar and preserves config.json (86.134497ms)
✔ proxy-config-invalid: loader refuses an unknown sidecar key and binary outside pinned install (143.321377ms)
✔ proxy unit and bus dependency render default and named instance only when configured (276.591632ms)
✔ proxy-not-configured: runner and unit render refuse absent sidecar (104.640115ms)
✔ proxy-install-invalid: unit runner refuses tampered executable before spawning (100.758568ms)
✔ proxy-unit-usage (49.940866ms)
✔ proxy-unit-exists (52.610857ms)
✔ proxy-unit-dropin (53.983874ms)
✔ proxy-unit-path (59.327826ms)
✔ proxy-config-invalid: instance selection also refuses invalid present sidecar (52.506423ms)
✔ explicit unit install writes only a scratch user unit and refuses a repeat (107.271134ms)
✔ proxy-unit-copy: renderer refuses an unknown or unpinned stack copy (51.244228ms)
✔ historical no-proxy config loader works without new package dependency (25.55588ms)
ℹ tests 13
ℹ suites 0
ℹ pass 13
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 1244.732304
@@ -0,0 +1,19 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/model-proxy/tests/fetch.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/bTrsYr
launch nice: 19
✔ verified fetch installs binary and panel together; identical repeat is idempotent (19.691069ms)
✔ proxy-fetch-hash: either bad asset installs nothing (7.191229ms)
✔ proxy-fetch-existing: conflicting install remains byte-identical (8.884597ms)
✔ proxy-fetch-archive: missing executable in verified archive refuses without install (9.743912ms)
✔ proxy-fetch-url: production downloader permits pinned GitHub release URLs only (0.70142ms)
✔ local fake server covers redirect off allowlist and HTTP failure without external fetch (24.613441ms)
✔ proxy-fetch-existing: extra content in an existing install refuses (15.063909ms)
✔ local fake file server success and same-origin redirect return exact bytes (11.564505ms)
ℹ tests 8
ℹ suites 0
ℹ pass 8
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 177.170425
@@ -0,0 +1,14 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/model-proxy/tests/runner.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/bTrsYr
launch nice: 19
✔ runner verifies before spawning and supplies pinned panel and local model without ambient secrets (1.344665ms)
✔ proxy-start-failed: sync and async spawn failures report code only (0.539424ms)
✔ hash refusal prevents spawn and ordinary exit status is propagated (0.256786ms)
ℹ tests 3
ℹ suites 0
ℹ pass 3
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 73.721032
@@ -0,0 +1,30 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/model-proxy/tests/settings.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/bTrsYr
launch nice: 19
✔ absent proxy settings preserves no-proxy contract; present settings validate pinned path (1.846201ms)
✔ proxy-config-invalid: unknown (0.460617ms)
✔ proxy-config-invalid: missing (0.174041ms)
✔ proxy-config-invalid: low (0.65088ms)
✔ proxy-config-invalid: high (0.177839ms)
✔ proxy-config-invalid: host (0.162754ms)
✔ proxy-config-invalid: string (0.230744ms)
✔ proxy-config-invalid: binary (0.17845ms)
✔ proxy-config-invalid: null (0.168819ms)
✔ proxy-config-invalid: malformed or symlink settings refuse (0.67631ms)
✔ proxy-install-missing: init requires fetch before any state is written (0.767812ms)
✔ proxy-install-invalid: binary or panel mutation refuses (0.507922ms)
✔ proxy-key-invalid: empty, multiline and too-long key refuse before creation (0.893913ms)
✔ exclusive initialization writes private sentinel config, never rewrites config.json or exposes key (7.461291ms)
✔ proxy-port-in-use: init refuses occupied loopback without files (2.130005ms)
✔ proxy-init-busy: existing lock refuses without touching it (1.273547ms)
✔ proxy-init-failed: symlink or non-private secrets directory refuses without changing it (0.868646ms)
✔ proxy-already-initialized: each existing target is preserved and never followed (1.265115ms)
✔ proxy-install-invalid: modified panel also refuses (0.371958ms)
ℹ tests 19
ℹ suites 0
ℹ pass 19
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 94.08478
@@ -0,0 +1,6 @@
command: ["npm", "ci", "--offline", "--ignore-scripts", "--no-audit", "--no-fund"]
TMPDIR: /mnt/storage/scratch/tmp/OS9Bg5
launch nice: 19
npm warn deprecated [email protected]: Use your platform's native DOMException instead
added 128 packages in 2s
@@ -0,0 +1,5 @@
command: ["npm", "ci", "--offline", "--ignore-scripts", "--no-audit", "--no-fund"]
TMPDIR: /mnt/storage/scratch/tmp/OS9Bg5
launch nice: 19
added 2 packages in 222ms
@@ -0,0 +1,9 @@
{"label": "npm-root", "rc": 0, "nice": 19, "seconds": 1.76, "log": "agents/magica/work/queue-329/gate/npm-root.txt"}
{"label": "npm-webui", "rc": 0, "nice": 19, "seconds": 0.27, "log": "agents/magica/work/queue-329/gate/npm-webui.txt"}
{"label": "model-proxy-client.test", "rc": 0, "nice": 19, "seconds": 0.15, "log": "agents/magica/work/queue-329/gate/model-proxy-client.test.txt"}
{"label": "model-proxy-config-unit.test", "rc": 0, "nice": 19, "seconds": 1.29, "log": "agents/magica/work/queue-329/gate/model-proxy-config-unit.test.txt"}
{"label": "model-proxy-fetch.test", "rc": 0, "nice": 19, "seconds": 0.21, "log": "agents/magica/work/queue-329/gate/model-proxy-fetch.test.txt"}
{"label": "model-proxy-runner.test", "rc": 0, "nice": 19, "seconds": 0.11, "log": "agents/magica/work/queue-329/gate/model-proxy-runner.test.txt"}
{"label": "model-proxy-settings.test", "rc": 0, "nice": 19, "seconds": 0.12, "log": "agents/magica/work/queue-329/gate/model-proxy-settings.test.txt"}
{"label": "bus-model-proxy.test", "rc": 0, "nice": 19, "seconds": 0.25, "log": "agents/magica/work/queue-329/gate/bus-model-proxy.test.txt"}
{"label": "cli-model-proxy.test", "rc": 0, "nice": 19, "seconds": 0.19, "log": "agents/magica/work/queue-329/gate/cli-model-proxy.test.txt"}
@@ -0,0 +1,43 @@
# Reconcile final per-file evidence only; executes no tests.
from pathlib import Path
import json,re
BASE=Path(__file__).resolve().parent
REPO=BASE.parents[3]
OUT=BASE/'gate'
CLI_READERS={'host.test','stack-copy.test','stack-instances.test','stack-release-external.test','stack-release.test','stack-upgrade.test','verbs.test'}
all_receipts=[]
for file in [OUT/'runs.jsonl',OUT/'resume-mos1605-runs.jsonl']:
all_receipts += [json.loads(line) for line in file.read_text().splitlines()]
latest={r['label']:r for r in all_receipts}
def read(label):
r=latest[label];assert r['rc']==0 and r['nice']==19,r
text=(OUT/(label+'.txt')).read_text()
result={}
for key in ['tests','pass','fail','skipped','cancelled']:
m=re.search(r'^(?:ℹ |# )'+key+r' (\d+)',text,re.M);assert m,(label,key);result[key]=int(m.group(1))
assert result['fail']==0 and result['cancelled']==0,(label,result)
return {'label':label,'log':str((OUT/(label+'.txt')).relative_to(REPO)),'counts':result,'rc':r['rc'],'nice':r['nice']}
groups={}
for suite in ['model-proxy','bus','cli']:
total={k:0 for k in ['tests','pass','fail','skipped','cancelled']};mapping=[]
for file in sorted((REPO/f'packages/{suite}/tests').glob('*.test.mjs')):
label=f'{suite}-{file.stem}'
if suite=='model-proxy' or suite=='cli' and file.stem in CLI_READERS:label='post-unit-fix-'+label
if suite=='cli' and file.stem=='case1-accept.test':label='cli-case1-accept.rerun-mos1605'
row=read(label);row['file']=str(file.relative_to(REPO));mapping.append(row)
for k in total:total[k]+=row['counts'][k]
groups[suite]={'files':len(mapping),**total,'mapping':mapping}
assert total['skipped']==(1 if suite=='cli' else 0),(suite,total)
groups['webui-pinned-copy']=read('post-unit-fix-webui-pinned-copy.test')
groups['federation-runner']=read('test-federation-acceptance.sh')
assert groups['federation-runner']['counts']['pass']==1 and groups['federation-runner']['counts']['skipped']==0
assert latest['test-config.sh']['rc']==0 and 'selftest: 55 passed, 0 failed' in (OUT/'test-config.sh.txt').read_text()
groups['config-script']={'rc':0,'pass':55,'fail':0,'log':'agents/magica/work/queue-329/gate/test-config.sh.txt'}
groups['history']={'initialRed':'gate/cli-case1-accept.test.txt','diagnostic':'mos-1604:20focused+3whole,179pass,no gate credit','unchangedRerun':'mos-1605:53pass','cause':'F7 unknown; Vikunja625','landingGate':'Sage must independently pass'}
(OUT/'FINAL-COUNTS.json').write_text(json.dumps(groups,indent=2)+'\n')
lines=[]
for suite in ['model-proxy','bus','cli']:
g=groups[suite];lines.append(f"{suite}: {g['files']}files {g['tests']}tests {g['pass']}pass {g['fail']}fail {g['skipped']}skip {g['cancelled']}cancel")
lines += ['webui pinned-copy:10/10; config:55/55; federation runner:1/1 no skip.','CLI listed skip: packages/cli/tests/federation-acceptance.test.mjs, FED R7 scratch two-instance acceptance; covered by scripts/test-federation-acceptance.sh.','Initial old red and scratch diagnostic are preserved, not included in final pass totals.','One unchanged original rerun authorized by mos-1605 passed53/53; final unit-reader checks per sage-4251 all pass.','Sage landing gate must independently be green (mos-1583).']
(OUT/'FINAL-COUNTS.txt').write_text('\n'.join(lines)+'\n')
print('\n'.join(lines))
@@ -0,0 +1,6 @@
{"label": "post-unit-fix-cli-host.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T20:39:03.617+00:00", "load1": "2.07"}, "end": {"utc": "2026-10-24T20:39:15.879+00:00", "load1": "2.05"}, "seconds": 12.262, "counts": {"tests": 43, "pass": 43, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate/post-unit-fix-cli-host.test.txt"}
{"label": "post-unit-fix-cli-stack-release-external.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T20:39:15.880+00:00", "load1": "2.05"}, "end": {"utc": "2026-10-24T20:40:39.646+00:00", "load1": "3.19"}, "seconds": 83.766, "counts": {"tests": 25, "pass": 25, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate/post-unit-fix-cli-stack-release-external.test.txt"}
{"label": "post-unit-fix-cli-stack-release.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T20:40:39.648+00:00", "load1": "3.19"}, "end": {"utc": "2026-10-24T20:52:43.095+00:00", "load1": "6.67"}, "seconds": 723.448, "counts": {"tests": 224, "pass": 224, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate/post-unit-fix-cli-stack-release.test.txt"}
{"label": "post-unit-fix-cli-stack-upgrade.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T20:52:43.099+00:00", "load1": "6.67"}, "end": {"utc": "2026-10-24T20:54:20.710+00:00", "load1": "7.47"}, "seconds": 97.612, "counts": {"tests": 21, "pass": 21, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate/post-unit-fix-cli-stack-upgrade.test.txt"}
{"label": "post-unit-fix-cli-verbs.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T20:54:20.712+00:00", "load1": "7.47"}, "end": {"utc": "2026-10-24T20:54:24.299+00:00", "load1": "7.47"}, "seconds": 3.587, "counts": {"tests": 9, "pass": 9, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate/post-unit-fix-cli-verbs.test.txt"}
Final five reader files complete.
@@ -0,0 +1,125 @@
{"label": "model-proxy-client.test", "rc": 0, "nice": 19, "seconds": 0.15, "log": "agents/magica/work/queue-329/gate/model-proxy-client.test.txt"}
{"label": "model-proxy-config-unit.test", "rc": 0, "nice": 19, "seconds": 1.38, "log": "agents/magica/work/queue-329/gate/model-proxy-config-unit.test.txt"}
{"label": "model-proxy-fetch.test", "rc": 0, "nice": 19, "seconds": 0.25, "log": "agents/magica/work/queue-329/gate/model-proxy-fetch.test.txt"}
{"label": "model-proxy-runner.test", "rc": 0, "nice": 19, "seconds": 0.12, "log": "agents/magica/work/queue-329/gate/model-proxy-runner.test.txt"}
{"label": "model-proxy-settings.test", "rc": 0, "nice": 19, "seconds": 0.16, "log": "agents/magica/work/queue-329/gate/model-proxy-settings.test.txt"}
{"label": "bus-access-revoke.test", "rc": 0, "nice": 19, "seconds": 0.54, "log": "agents/magica/work/queue-329/gate/bus-access-revoke.test.txt"}
{"label": "bus-account-migration.test", "rc": 0, "nice": 19, "seconds": 0.44, "log": "agents/magica/work/queue-329/gate/bus-account-migration.test.txt"}
{"label": "bus-address.test", "rc": 0, "nice": 19, "seconds": 0.1, "log": "agents/magica/work/queue-329/gate/bus-address.test.txt"}
{"label": "bus-agents.test", "rc": 0, "nice": 19, "seconds": 0.48, "log": "agents/magica/work/queue-329/gate/bus-agents.test.txt"}
{"label": "bus-approval-binding.test", "rc": 0, "nice": 19, "seconds": 0.3, "log": "agents/magica/work/queue-329/gate/bus-approval-binding.test.txt"}
{"label": "bus-broker.test", "rc": 0, "nice": 19, "seconds": 0.49, "log": "agents/magica/work/queue-329/gate/bus-broker.test.txt"}
{"label": "bus-business.test", "rc": 0, "nice": 19, "seconds": 0.1, "log": "agents/magica/work/queue-329/gate/bus-business.test.txt"}
{"label": "bus-channel-proof.test", "rc": 0, "nice": 19, "seconds": 0.6, "log": "agents/magica/work/queue-329/gate/bus-channel-proof.test.txt"}
{"label": "bus-chief-of-staff.test", "rc": 0, "nice": 19, "seconds": 2.73, "log": "agents/magica/work/queue-329/gate/bus-chief-of-staff.test.txt"}
{"label": "bus-citation-availability.test", "rc": 0, "nice": 19, "seconds": 5.36, "log": "agents/magica/work/queue-329/gate/bus-citation-availability.test.txt"}
{"label": "bus-citation-guard.test", "rc": 0, "nice": 19, "seconds": 1.08, "log": "agents/magica/work/queue-329/gate/bus-citation-guard.test.txt"}
{"label": "bus-citation-runtime.test", "rc": 0, "nice": 19, "seconds": 0.31, "log": "agents/magica/work/queue-329/gate/bus-citation-runtime.test.txt"}
{"label": "bus-comment-cursors.test", "rc": 0, "nice": 19, "seconds": 0.15, "log": "agents/magica/work/queue-329/gate/bus-comment-cursors.test.txt"}
{"label": "bus-comment-migration.test", "rc": 0, "nice": 19, "seconds": 0.65, "log": "agents/magica/work/queue-329/gate/bus-comment-migration.test.txt"}
{"label": "bus-console-decide.test", "rc": 0, "nice": 19, "seconds": 0.87, "log": "agents/magica/work/queue-329/gate/bus-console-decide.test.txt"}
{"label": "bus-creative.test", "rc": 0, "nice": 19, "seconds": 0.41, "log": "agents/magica/work/queue-329/gate/bus-creative.test.txt"}
{"label": "bus-credential-claim.test", "rc": 0, "nice": 19, "seconds": 0.16, "log": "agents/magica/work/queue-329/gate/bus-credential-claim.test.txt"}
{"label": "bus-credential-status.test", "rc": 0, "nice": 19, "seconds": 0.37, "log": "agents/magica/work/queue-329/gate/bus-credential-status.test.txt"}
{"label": "bus-credential-store.test", "rc": 0, "nice": 19, "seconds": 0.17, "log": "agents/magica/work/queue-329/gate/bus-credential-store.test.txt"}
{"label": "bus-credential-verbs.test", "rc": 0, "nice": 19, "seconds": 0.34, "log": "agents/magica/work/queue-329/gate/bus-credential-verbs.test.txt"}
{"label": "bus-credentials.test", "rc": 0, "nice": 19, "seconds": 0.11, "log": "agents/magica/work/queue-329/gate/bus-credentials.test.txt"}
{"label": "bus-csuite-messaging.test", "rc": 0, "nice": 19, "seconds": 0.75, "log": "agents/magica/work/queue-329/gate/bus-csuite-messaging.test.txt"}
{"label": "bus-daily-quota-runtime.test", "rc": 0, "nice": 19, "seconds": 0.4, "log": "agents/magica/work/queue-329/gate/bus-daily-quota-runtime.test.txt"}
{"label": "bus-decision-close.test", "rc": 0, "nice": 19, "seconds": 0.39, "log": "agents/magica/work/queue-329/gate/bus-decision-close.test.txt"}
{"label": "bus-decision-route.test", "rc": 0, "nice": 19, "seconds": 0.3, "log": "agents/magica/work/queue-329/gate/bus-decision-route.test.txt"}
{"label": "bus-decisions.test", "rc": 0, "nice": 19, "seconds": 0.47, "log": "agents/magica/work/queue-329/gate/bus-decisions.test.txt"}
{"label": "bus-end-launch.test", "rc": 0, "nice": 19, "seconds": 0.4, "log": "agents/magica/work/queue-329/gate/bus-end-launch.test.txt"}
{"label": "bus-fire-revokes-grants.test", "rc": 0, "nice": 19, "seconds": 4.03, "log": "agents/magica/work/queue-329/gate/bus-fire-revokes-grants.test.txt"}
{"label": "bus-gitea-grant-docker.test", "rc": 0, "nice": 19, "seconds": 26.18, "log": "agents/magica/work/queue-329/gate/bus-gitea-grant-docker.test.txt"}
{"label": "bus-gitea-grant.test", "rc": 0, "nice": 19, "seconds": 11.98, "log": "agents/magica/work/queue-329/gate/bus-gitea-grant.test.txt"}
{"label": "bus-gitea-migration.test", "rc": 0, "nice": 19, "seconds": 0.44, "log": "agents/magica/work/queue-329/gate/bus-gitea-migration.test.txt"}
{"label": "bus-grant-enroll.test", "rc": 0, "nice": 19, "seconds": 1.81, "log": "agents/magica/work/queue-329/gate/bus-grant-enroll.test.txt"}
{"label": "bus-grant-executor.test", "rc": 0, "nice": 19, "seconds": 22.58, "log": "agents/magica/work/queue-329/gate/bus-grant-executor.test.txt"}
{"label": "bus-grant-host.test", "rc": 0, "nice": 19, "seconds": 0.46, "log": "agents/magica/work/queue-329/gate/bus-grant-host.test.txt"}
{"label": "bus-grant-migration.test", "rc": 0, "nice": 19, "seconds": 0.51, "log": "agents/magica/work/queue-329/gate/bus-grant-migration.test.txt"}
{"label": "bus-grant-scope-runtime.test", "rc": 0, "nice": 19, "seconds": 0.24, "log": "agents/magica/work/queue-329/gate/bus-grant-scope-runtime.test.txt"}
{"label": "bus-grant-scope.test", "rc": 0, "nice": 19, "seconds": 1.36, "log": "agents/magica/work/queue-329/gate/bus-grant-scope.test.txt"}
{"label": "bus-hard-waits.test", "rc": 0, "nice": 19, "seconds": 1.57, "log": "agents/magica/work/queue-329/gate/bus-hard-waits.test.txt"}
{"label": "bus-host-run.test", "rc": 0, "nice": 19, "seconds": 14.99, "log": "agents/magica/work/queue-329/gate/bus-host-run.test.txt"}
{"label": "bus-host-tools.test", "rc": 0, "nice": 19, "seconds": 3.94, "log": "agents/magica/work/queue-329/gate/bus-host-tools.test.txt"}
{"label": "bus-human.test", "rc": 0, "nice": 19, "seconds": 0.1, "log": "agents/magica/work/queue-329/gate/bus-human.test.txt"}
{"label": "bus-instances-verb.test", "rc": 0, "nice": 19, "seconds": 0.33, "log": "agents/magica/work/queue-329/gate/bus-instances-verb.test.txt"}
{"label": "bus-interpreter.test", "rc": 0, "nice": 19, "seconds": 0.15, "log": "agents/magica/work/queue-329/gate/bus-interpreter.test.txt"}
{"label": "bus-land.test", "rc": 0, "nice": 19, "seconds": 0.97, "log": "agents/magica/work/queue-329/gate/bus-land.test.txt"}
{"label": "bus-launch-notice.test", "rc": 0, "nice": 19, "seconds": 0.32, "log": "agents/magica/work/queue-329/gate/bus-launch-notice.test.txt"}
{"label": "bus-launcher-released.test", "rc": 0, "nice": 19, "seconds": 0.25, "log": "agents/magica/work/queue-329/gate/bus-launcher-released.test.txt"}
{"label": "bus-library-credential.test", "rc": 0, "nice": 19, "seconds": 1.48, "log": "agents/magica/work/queue-329/gate/bus-library-credential.test.txt"}
{"label": "bus-library-lookups.test", "rc": 0, "nice": 19, "seconds": 1.31, "log": "agents/magica/work/queue-329/gate/bus-library-lookups.test.txt"}
{"label": "bus-library-sync.test", "rc": 0, "nice": 19, "seconds": 6.95, "log": "agents/magica/work/queue-329/gate/bus-library-sync.test.txt"}
{"label": "bus-library.test", "rc": 0, "nice": 19, "seconds": 0.72, "log": "agents/magica/work/queue-329/gate/bus-library.test.txt"}
{"label": "bus-lifecycle-revoke.test", "rc": 0, "nice": 19, "seconds": 0.8, "log": "agents/magica/work/queue-329/gate/bus-lifecycle-revoke.test.txt"}
{"label": "bus-lifecycle-verbs.test", "rc": 0, "nice": 19, "seconds": 0.6, "log": "agents/magica/work/queue-329/gate/bus-lifecycle-verbs.test.txt"}
{"label": "bus-limit-checks.test", "rc": 0, "nice": 19, "seconds": 0.35, "log": "agents/magica/work/queue-329/gate/bus-limit-checks.test.txt"}
{"label": "bus-limit-stop.test", "rc": 0, "nice": 19, "seconds": 0.35, "log": "agents/magica/work/queue-329/gate/bus-limit-stop.test.txt"}
{"label": "bus-limits-runtime.test", "rc": 0, "nice": 19, "seconds": 0.52, "log": "agents/magica/work/queue-329/gate/bus-limits-runtime.test.txt"}
{"label": "bus-limits.test", "rc": 0, "nice": 19, "seconds": 0.36, "log": "agents/magica/work/queue-329/gate/bus-limits.test.txt"}
{"label": "bus-message-citation.test", "rc": 0, "nice": 19, "seconds": 0.21, "log": "agents/magica/work/queue-329/gate/bus-message-citation.test.txt"}
{"label": "bus-message-filter.test", "rc": 0, "nice": 19, "seconds": 0.61, "log": "agents/magica/work/queue-329/gate/bus-message-filter.test.txt"}
{"label": "bus-messages.test", "rc": 0, "nice": 19, "seconds": 0.56, "log": "agents/magica/work/queue-329/gate/bus-messages.test.txt"}
{"label": "bus-messaging.test", "rc": 0, "nice": 19, "seconds": 0.6, "log": "agents/magica/work/queue-329/gate/bus-messaging.test.txt"}
{"label": "bus-model-proxy.test", "rc": 0, "nice": 19, "seconds": 0.28, "log": "agents/magica/work/queue-329/gate/bus-model-proxy.test.txt"}
{"label": "bus-name-migration.test", "rc": 0, "nice": 19, "seconds": 0.21, "log": "agents/magica/work/queue-329/gate/bus-name-migration.test.txt"}
{"label": "bus-names.test", "rc": 0, "nice": 19, "seconds": 0.29, "log": "agents/magica/work/queue-329/gate/bus-names.test.txt"}
{"label": "bus-peer-transport.test", "rc": 0, "nice": 19, "seconds": 0.19, "log": "agents/magica/work/queue-329/gate/bus-peer-transport.test.txt"}
{"label": "bus-peercred.test", "rc": 0, "nice": 19, "seconds": 0.43, "log": "agents/magica/work/queue-329/gate/bus-peercred.test.txt"}
{"label": "bus-plugins-verb.test", "rc": 0, "nice": 19, "seconds": 0.3, "log": "agents/magica/work/queue-329/gate/bus-plugins-verb.test.txt"}
{"label": "bus-principal.test", "rc": 0, "nice": 19, "seconds": 0.09, "log": "agents/magica/work/queue-329/gate/bus-principal.test.txt"}
{"label": "bus-process.test", "rc": 0, "nice": 19, "seconds": 1.43, "log": "agents/magica/work/queue-329/gate/bus-process.test.txt"}
{"label": "bus-processing-runtime.test", "rc": 0, "nice": 19, "seconds": 0.41, "log": "agents/magica/work/queue-329/gate/bus-processing-runtime.test.txt"}
{"label": "bus-processing-timeout.test", "rc": 0, "nice": 19, "seconds": 0.28, "log": "agents/magica/work/queue-329/gate/bus-processing-timeout.test.txt"}
{"label": "bus-processing-web.test", "rc": 0, "nice": 19, "seconds": 0.14, "log": "agents/magica/work/queue-329/gate/bus-processing-web.test.txt"}
{"label": "bus-processing.test", "rc": 0, "nice": 19, "seconds": 0.39, "log": "agents/magica/work/queue-329/gate/bus-processing.test.txt"}
{"label": "bus-project-await.test", "rc": 0, "nice": 19, "seconds": 0.18, "log": "agents/magica/work/queue-329/gate/bus-project-await.test.txt"}
{"label": "bus-project-files.test", "rc": 0, "nice": 19, "seconds": 0.92, "log": "agents/magica/work/queue-329/gate/bus-project-files.test.txt"}
{"label": "bus-project-runtime.test", "rc": 0, "nice": 19, "seconds": 0.41, "log": "agents/magica/work/queue-329/gate/bus-project-runtime.test.txt"}
{"label": "bus-publish.test", "rc": 0, "nice": 19, "seconds": 0.8, "log": "agents/magica/work/queue-329/gate/bus-publish.test.txt"}
{"label": "bus-reload.test", "rc": 0, "nice": 19, "seconds": 1.04, "log": "agents/magica/work/queue-329/gate/bus-reload.test.txt"}
{"label": "bus-replies.test", "rc": 0, "nice": 19, "seconds": 0.35, "log": "agents/magica/work/queue-329/gate/bus-replies.test.txt"}
{"label": "bus-requirements.test", "rc": 0, "nice": 19, "seconds": 0.2, "log": "agents/magica/work/queue-329/gate/bus-requirements.test.txt"}
{"label": "bus-review.test", "rc": 0, "nice": 19, "seconds": 0.4, "log": "agents/magica/work/queue-329/gate/bus-review.test.txt"}
{"label": "bus-revoke-window.test", "rc": 0, "nice": 19, "seconds": 0.25, "log": "agents/magica/work/queue-329/gate/bus-revoke-window.test.txt"}
{"label": "bus-room-check.test", "rc": 0, "nice": 19, "seconds": 0.21, "log": "agents/magica/work/queue-329/gate/bus-room-check.test.txt"}
{"label": "bus-rooms.test", "rc": 0, "nice": 19, "seconds": 1.1, "log": "agents/magica/work/queue-329/gate/bus-rooms.test.txt"}
{"label": "bus-routes-verb.test", "rc": 0, "nice": 19, "seconds": 0.35, "log": "agents/magica/work/queue-329/gate/bus-routes-verb.test.txt"}
{"label": "bus-schema.test", "rc": 0, "nice": 19, "seconds": 0.17, "log": "agents/magica/work/queue-329/gate/bus-schema.test.txt"}
{"label": "bus-session-clear.test", "rc": 0, "nice": 19, "seconds": 0.87, "log": "agents/magica/work/queue-329/gate/bus-session-clear.test.txt"}
{"label": "bus-session-compactions.test", "rc": 0, "nice": 19, "seconds": 0.19, "log": "agents/magica/work/queue-329/gate/bus-session-compactions.test.txt"}
{"label": "bus-sessions.test", "rc": 0, "nice": 19, "seconds": 0.65, "log": "agents/magica/work/queue-329/gate/bus-sessions.test.txt"}
{"label": "bus-single-use.test", "rc": 0, "nice": 19, "seconds": 0.43, "log": "agents/magica/work/queue-329/gate/bus-single-use.test.txt"}
{"label": "bus-spec-migration.test", "rc": 0, "nice": 19, "seconds": 0.23, "log": "agents/magica/work/queue-329/gate/bus-spec-migration.test.txt"}
{"label": "bus-spec-review.test", "rc": 0, "nice": 19, "seconds": 1.26, "log": "agents/magica/work/queue-329/gate/bus-spec-review.test.txt"}
{"label": "bus-spec-socket.test", "rc": 0, "nice": 19, "seconds": 0.74, "log": "agents/magica/work/queue-329/gate/bus-spec-socket.test.txt"}
{"label": "bus-spec.test", "rc": 0, "nice": 19, "seconds": 0.46, "log": "agents/magica/work/queue-329/gate/bus-spec.test.txt"}
{"label": "bus-staff-request.test", "rc": 0, "nice": 19, "seconds": 0.46, "log": "agents/magica/work/queue-329/gate/bus-staff-request.test.txt"}
{"label": "bus-state.test", "rc": 0, "nice": 19, "seconds": 0.25, "log": "agents/magica/work/queue-329/gate/bus-state.test.txt"}
{"label": "bus-store.test", "rc": 0, "nice": 19, "seconds": 0.27, "log": "agents/magica/work/queue-329/gate/bus-store.test.txt"}
{"label": "bus-task-page.test", "rc": 0, "nice": 19, "seconds": 1.11, "log": "agents/magica/work/queue-329/gate/bus-task-page.test.txt"}
{"label": "bus-task-read.test", "rc": 0, "nice": 19, "seconds": 0.22, "log": "agents/magica/work/queue-329/gate/bus-task-read.test.txt"}
{"label": "bus-tasks.test", "rc": 0, "nice": 19, "seconds": 1.18, "log": "agents/magica/work/queue-329/gate/bus-tasks.test.txt"}
{"label": "bus-tester-threads.test", "rc": 0, "nice": 19, "seconds": 0.52, "log": "agents/magica/work/queue-329/gate/bus-tester-threads.test.txt"}
{"label": "bus-tester-writes.test", "rc": 0, "nice": 19, "seconds": 0.61, "log": "agents/magica/work/queue-329/gate/bus-tester-writes.test.txt"}
{"label": "bus-tester.test", "rc": 0, "nice": 19, "seconds": 1.8, "log": "agents/magica/work/queue-329/gate/bus-tester.test.txt"}
{"label": "bus-thread-claims.test", "rc": 0, "nice": 19, "seconds": 0.26, "log": "agents/magica/work/queue-329/gate/bus-thread-claims.test.txt"}
{"label": "bus-thread-migration.test", "rc": 0, "nice": 19, "seconds": 0.4, "log": "agents/magica/work/queue-329/gate/bus-thread-migration.test.txt"}
{"label": "bus-thread-shares.test", "rc": 0, "nice": 19, "seconds": 0.81, "log": "agents/magica/work/queue-329/gate/bus-thread-shares.test.txt"}
{"label": "bus-threads.test", "rc": 0, "nice": 19, "seconds": 1.41, "log": "agents/magica/work/queue-329/gate/bus-threads.test.txt"}
{"label": "bus-transport.test", "rc": 0, "nice": 19, "seconds": 0.28, "log": "agents/magica/work/queue-329/gate/bus-transport.test.txt"}
{"label": "bus-usage-broker.test", "rc": 0, "nice": 19, "seconds": 0.15, "log": "agents/magica/work/queue-329/gate/bus-usage-broker.test.txt"}
{"label": "bus-usage-migration.test", "rc": 0, "nice": 19, "seconds": 0.63, "log": "agents/magica/work/queue-329/gate/bus-usage-migration.test.txt"}
{"label": "bus-usage-runtime.test", "rc": 0, "nice": 19, "seconds": 0.26, "log": "agents/magica/work/queue-329/gate/bus-usage-runtime.test.txt"}
{"label": "bus-usage.test", "rc": 0, "nice": 19, "seconds": 0.38, "log": "agents/magica/work/queue-329/gate/bus-usage.test.txt"}
{"label": "bus-user-principal.test", "rc": 0, "nice": 19, "seconds": 1.01, "log": "agents/magica/work/queue-329/gate/bus-user-principal.test.txt"}
{"label": "bus-viewer.test", "rc": 0, "nice": 19, "seconds": 0.65, "log": "agents/magica/work/queue-329/gate/bus-viewer.test.txt"}
{"label": "bus-web.test", "rc": 0, "nice": 19, "seconds": 1.18, "log": "agents/magica/work/queue-329/gate/bus-web.test.txt"}
{"label": "bus-workflow-roles.test", "rc": 0, "nice": 19, "seconds": 0.24, "log": "agents/magica/work/queue-329/gate/bus-workflow-roles.test.txt"}
{"label": "cli-access-boot.test", "rc": 0, "nice": 19, "seconds": 0.5, "log": "agents/magica/work/queue-329/gate/cli-access-boot.test.txt"}
{"label": "cli-access.test", "rc": 0, "nice": 19, "seconds": 7.0, "log": "agents/magica/work/queue-329/gate/cli-access.test.txt"}
{"label": "cli-app.test", "rc": 0, "nice": 19, "seconds": 14.19, "log": "agents/magica/work/queue-329/gate/cli-app.test.txt"}
{"label": "cli-boot-status.test", "rc": 0, "nice": 19, "seconds": 1.35, "log": "agents/magica/work/queue-329/gate/cli-boot-status.test.txt"}
{"label": "cli-case1-accept.test", "rc": 1, "nice": 19, "seconds": 252.61, "log": "agents/magica/work/queue-329/gate/cli-case1-accept.test.txt"}
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,8 @@
model-proxy: 5files 61tests 61pass 0fail 0skip 0cancel
bus: 115files 1018tests 1018pass 0fail 0skip 0cancel
cli: 69files 1000tests 999pass 0fail 1skip 0cancel
webui pinned-copy:10/10; config:55/55; federation runner:1/1 no skip.
CLI listed skip: packages/cli/tests/federation-acceptance.test.mjs, FED R7 scratch two-instance acceptance; covered by scripts/test-federation-acceptance.sh.
Initial old red and scratch diagnostic are preserved, not included in final pass totals.
One unchanged original rerun authorized by mos-1605 passed53/53; final unit-reader checks per sage-4251 all pass.
Sage landing gate must independently be green (mos-1583).
@@ -0,0 +1,8 @@
STOP old-test red; no rerun. Sage notified magica-0023/0024; slot returned.
Base8bb5b3c73; local WIP9edf45003; no gate-approved tip or final manifest.
model-proxy whole:5files59tests59pass0fail0skip0cancel.
bus whole:115files1018tests1018pass0fail0skip0cancel.
CLI partial:5files124tests123pass1fail0skip0cancel.
Old failing file cli/case1-accept.test.mjs:503; assertion507 expected[F3], actual[F3,F7].
Exact F7 pm-live FAIL text not retained by the old assertion/fixture.
RemainingCLI, webui pinned-copy, config and federation runner NOT RUN.
@@ -0,0 +1,21 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/access-revoke.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ R4: the timer sweep after a hand edit ends only the lost user's run; its next call refuses thread-revoked (41.380152ms)
✔ R4: an expiry with no write and no request ends the run at the next timer sweep (31.645712ms)
✔ R4: a downgrade to viewer is a loss (27.86252ms)
✔ R4: another user's request after a hand edit ends the lost user's run, and its own run stays (27.857996ms)
✔ R4: a request reads the access file only when its stamp changed, once per change (26.541593ms)
✔ R4: access.reload ends the lost runs at once for the human; the tester, a reader, an agent and a user are refused (31.147796ms)
✔ R4: threadsState marks revoked: true on the lost user's thread only, a pending message included (21.870168ms)
✔ R4: threadsState after an expiry with no write and no sweep ends the claim before it marks the row revoked (26.348758ms)
✔ R4: a new run of a revoked thread refuses thread-revoked at bind and at claim; a rebind is allowed (21.621371ms)
✔ R4 runtime: a hand edit ends the run at the first timer period, intervalMs is checked, and close stops the timer (66.086813ms)
ℹ tests 10
ℹ suites 0
ℹ pass 10
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 486.559171
@@ -0,0 +1,14 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/account-migration.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ REQ-LIMIT-4 3h copy migrates to 3i: every row keeps its seq, the sequence carries over, and only the account CHECK changes (95.053304ms)
✔ REQ-LIMIT-4 a 3h→3i step that fails partway leaves the store at 3h with every row, the sequence and the schema intact (119.108829ms)
✔ REQ-LIMIT-4 the 3h engine refuses a migrated store, migrating or not, and leaves it as it was (100.026902ms)
ℹ tests 3
ℹ suites 0
ℹ pass 3
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 405.59395
@@ -0,0 +1,26 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/address.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ parseAddress: one (1.363093ms)
✔ parseAddress: many (0.145271ms)
✔ parseAddress: repeat (0.09284ms)
✔ parseAddress: plain (0.105676ms)
✔ parseAddress: stop (0.106561ms)
✔ parseAddress: EOF tag (0.08607ms)
✔ parseAddress: EOF last tag (0.090809ms)
✔ parseAddress: leading whitespace (0.111837ms)
✔ parseAddress: tags only (0.114344ms)
✔ parseAddress: empty (0.166059ms)
✔ parseAddress: whitespace (0.091288ms)
✔ parseAddress: bare at (0.058457ms)
✔ parseAddress: punctuation is a name (0.063035ms)
✔ parseAddress rejects non-text without coercion (0.364549ms)
✔ the mounted address parser has no import dependency (0.260639ms)
ℹ tests 15
ℹ suites 0
ℹ pass 15
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 65.98955
@@ -0,0 +1,22 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/agents.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ agents: a held role with nothing on the bus is idle; a role session gets the claim rows unchanged (25.614659ms)
✔ agents: working counts what the holder received and has not read; routed alone is not working (24.589808ms)
✔ agents: input needed is the role's open decisions routed to the human, gated first, then oldest (41.7694ms)
✔ agents: working wins over waiting, and Input needed still shows (19.359692ms)
✔ agents: a new holder doesn't inherit what the last one left unread; decisions stay with the role (20.995853ms)
✔ agents: state reads only its own business, even for a run name both use (19.57121ms)
✔ agents: a message the holder released unread is stranded; the next holder gets nothing and cannot read it (24.000886ms)
✔ agents: a message the holder read is not stranded; one the current holder has not read is not listed (20.170242ms)
✔ agents: stranded is oldest first and capped at 50 for a role (89.978335ms)
✔ agents: stranded is per role and per business (37.663031ms)
✔ agents: a message routed to a held role and not yet received is not stranded (14.590846ms)
ℹ tests 11
ℹ suites 0
ℹ pass 11
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 436.258985
@@ -0,0 +1,17 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/approval-binding.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ REQ-DEC an approval outlives its run and a broker restart; a new run of the instance consumes it once (41.710387ms)
✔ REQ-DEC another instance of the same definition cannot consume an approval, and its refusal consumes nothing (19.497718ms)
✔ REQ-DEC REQ-THREAD-1 a thread approval is consumed only by a run holding the same thread (27.383416ms)
✔ REQ-DEC a later run of the same instance supersedes an open decision; another instance cannot (25.024167ms)
✔ REQ-DEC REQ-THREAD-1 a thread decision is superseded only from the same thread (26.650605ms)
✔ REQ-DEC REQ-THREAD-1 a thread instance decision raised before row 121 is not consumed or superseded by any thread run (35.306844ms)
ℹ tests 6
ℹ suites 0
ℹ pass 6
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 263.821277
@@ -0,0 +1,27 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/broker.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ launch identity is stamped, payload identity is refused and stale holder cannot send (28.160527ms)
✔ decision classes route from policy; gated resolution is human-only, choice and target must match (24.775935ms)
✔ claim exclusion, holder release, gated revoke and rerouting to a new holder are atomic (25.967856ms)
✔ launch events require a human CLI capability; generic emit cannot forge authority events (16.499518ms)
✔ within-role decisions close atomically and invalid options or blocking omissions refuse (17.065443ms)
✔ a recommendation that is not exactly one option key refuses invalid-recommendation after the options (26.77801ms)
✔ observer capabilities read human inbox but cannot mutate or forge launch identity (17.522306ms)
✔ task action subjects and linked decision trail are complete and ordered (26.090635ms)
✔ launch binding is durable and reconnecting requires the identical trusted record (14.123369ms)
✔ business isolation includes inherited object names and cross-business message references (21.72964ms)
✔ authority never transfers between action, target, unresolved or replaced role holder; a later run of the instance keeps it (29.009561ms)
✔ task projection uses schema current view, skipping earlier and equal-start polls (16.831676ms)
✔ revocation permanently bars the old run from reclaiming first, including after broker restart (23.68242ms)
✔ empty message references refuse before storage; refusal-evidence failure stays a typed error (17.253198ms)
✔ both arbiters require human resolution when their cross-role route is themselves (24.127811ms)
✔ the shipped coder role raises task.reassign as gated to the human; task.scope.change stays cross-role (26.31891ms)
ℹ tests 16
ℹ suites 0
ℹ pass 16
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 454.983567
@@ -0,0 +1,12 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/business.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ S1 adapter takes resolved limits and refs, rejects mismatched instance, never mutates input (1.351264ms)
ℹ tests 1
ℹ suites 0
ℹ pass 1
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 66.536485
@@ -0,0 +1,13 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/channel-proof.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ channel conversion preserves the four proof/transport byte baselines and modules cannot import a proof caller (1.544982ms)
✔ channel recovery still requires the same shim path and rejects an absent or forged proof (447.427298ms)
ℹ tests 2
ℹ suites 0
ℹ pass 2
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 569.147411
@@ -0,0 +1,62 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/chief-of-staff.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
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"}
✔ REQ-COS-1, REQ-ROLE-2: the chief of staff ends a run with a reason and no decision, and the reason is logged (38.080512ms)
✔ REQ-ROLE-2: a role without role.end still needs a resolved decision to revoke (36.692059ms)
✔ REQ-ROLE-2: storage accepts a revoke with a reason or a decision and aborts one with neither (29.636755ms)
✔ REQ-ROLE-2: the chief of staff may still cite a decision, and a decision alone is the old path (28.889768ms)
✔ REQ-ROLE-2: a role without role.end still ends a run through a resolved decision, which is recorded and has no reason (24.899245ms)
✔ REQ-ROLE-2: a reason is required, bounded, and never sent with a decision (27.863549ms)
✔ REQ-COS-1: the chief of staff cannot end its own run; its end of the assistant stops the assistant's thread run (37.146698ms)
✔ REQ-LIMIT-1, REQ-COS-1: organization.set from the chief of staff reaches the shared writer, named as the actor (36.106056ms)
✔ REQ-LIMIT-1, REQ-COS-1: a refused organization.set logs action.refused and no action.allowed, like a refused limits.set (38.181414ms)
✔ REQ-LIMIT-1: organization.set is refused for every caller whose role file lacks organization.change (65.180504ms)
✔ REQ-LIMIT-1: the chief of staff is logged as allowed, and organization.set takes only the human's keys (62.933955ms)
✔ REQ-COS-1: organization.revision answers the revision alone to the chief of staff and spends nothing (45.920422ms)
✔ REQ-COS-1, REQ-LIMIT-1: organization.revision is refused for every caller whose role file lacks organization.change (43.86965ms)
✔ 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 (118.766757ms)
✔ REQ-COS-1: the chief of staff reads the revision, changes the file with it, and reads again after a stale one is refused (92.218132ms)
✔ Q169: the chief of staff's change of the assistant is validated, written and logged; a stale or protection-stripping one is refused (90.613694ms)
✔ row 65, Q169: the chief's change of the assistant's route runs the routing checks, and a valid one saves as the chief (62.299216ms)
✔ 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 (77.112545ms)
✔ row 194 T10: the chief's reason end of a kept instance refuses instance-kept, holds the claim and spends nothing (23.62617ms)
✔ row 194 T10 (Q2): a role.revoke citing a decision the human resolved still ends a kept run (24.400839ms)
✔ 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 (24.867445ms)
✔ row 194 T13: organization.set and limits.set refuse the launch, retired, keep and noHire keys before the writer (28.164387ms)
✔ row 194 T18 (D2.4): from a chief session veto.set and instances.set refuse, and nothing reaches the writer (28.202648ms)
✔ row 194 T8: the chief hires with a reason and no decision, the writer gets the reason as context, and the log names it (24.35139ms)
✔ row 194 T11: on a bus with two businesses, the chief of one hires and fires only in its own (21.513334ms)
✔ row 194 T8: hire and fire need a reason of 1 to 500 characters and refuse a decision key (33.968103ms)
✔ row 194 T8 (sage-1471): only the chief hires or fires; every other role refuses role-not-chief, even one granted the actions (30.960882ms)
✔ row 194 T8 (sage-1471): a chief whose authority lacks role.hire or role.fire refuses decision-required before the writer (50.013594ms)
✔ 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 (29.650277ms)
✔ 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 (899.737224ms)
✔ row 194 T8b: a hire without the role files configured refuses not-configured (22.718322ms)
✔ row 194 T9: a fire revokes the claim, cancels open requests, asks the launcher to kill the runs, then delists and logs (29.485778ms)
✔ 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 (32.00785ms)
✔ row 194 T9: fire refusals come before step A and leave the claim, the requests and the file alone (29.839679ms)
✔ row 194 T9c: a writer failure at B leaves the instance firing, and the repeat delists and logs once (30.109172ms)
✔ row 194 T9c: a failure at C leaves the fire unlogged and the instance firing, and the repeat logs it (31.6214ms)
✔ 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 (25.721903ms)
✔ row 194 T10: a hire or fire of a kept name refuses instance-kept before the writer (21.85392ms)
✔ row 194 T10: a fire the writer's check refuses from the file stops nothing and leaves the instance launchable (22.21371ms)
✔ row 194 T18: hire and fire take only their own keys, and a refused call writes nothing (30.277446ms)
✔ 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 (71.642071ms)
✔ row 194 W-N1: the launcher's take of a launch or regenerate of a firing instance closes it as instance-firing (25.505361ms)
ℹ tests 42
ℹ suites 0
ℹ pass 42
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 2698.094981
@@ -0,0 +1,14 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/citation-availability.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ C2-06 held library lock gives the agent citation-unavailable and its retry reason (5161.066421ms)
✔ C2-06 malformed sync state is availability failure, never a fabricated invalid cite (43.159906ms)
✔ C2-06 no mirror or freshly initialized empty mirror still means no served citation (40.582404ms)
ℹ tests 3
ℹ suites 0
ℹ pass 3
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 5333.128179
@@ -0,0 +1,24 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/citation-guard.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ C2-06 coder send_message guard covers every table refusal; inserts nothing (142.70473ms)
✔ C2-06 research send_message guard covers every table refusal; inserts nothing (108.841317ms)
✔ C2-06 stored check carries the file author trailer at an unrelated cited tip (70.054283ms)
✔ C2-06 supporting cite cannot state canon, including a folder also marked playground (50.896173ms)
✔ C2-06 supporting file stores supporting scope and its real agent trailer (65.45905ms)
✔ C2-06 check evidence and insert are atomic when storing evidence fails (52.236416ms)
✔ C2-06 live limits change both directions; unreadable file keeps checks and exact fixed texts (67.571916ms)
✔ C2-06 page store is session-local, caps 20 fetches and 200 KiB, drops at disconnect (92.413874ms)
✔ C2-06 transport passes safe capped guard reason; ordinary refusal envelope is byte-identical (69.702901ms)
✔ C2-06 non-library businesses retain role.claim shape and unguarded free sends (33.185358ms)
✔ C2-06 thread messages carry file/last evidence with one read per distinct path (107.640515ms)
✔ C2-06 guarded request snapshot cannot change between check and insert (33.406363ms)
✔ C2-06 library.limits.set is human-only and invalid settings leave file and receipts unchanged (50.958739ms)
ℹ tests 13
ℹ suites 0
ℹ pass 13
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 1048.766974
@@ -0,0 +1,12 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/citation-runtime.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ C2-06 runtime reads changed and unreadable reply limits without restarting (135.176261ms)
ℹ tests 1
ℹ suites 0
ℹ pass 1
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 276.707573
@@ -0,0 +1,13 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/comment-cursors.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ comment cursors isolate businesses, move only forward and remain append-only (19.085085ms)
✔ only trusted sync writes validated cursors; events and cursor share rollback (13.014178ms)
ℹ tests 2
ℹ suites 0
ℹ pass 2
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 119.198645
@@ -0,0 +1,16 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/comment-migration.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ explicit 3b copy migration preserves evidence and opens as 3g; normal startup never migrates (78.189707ms)
✔ migration refuses active writers and drifted legacy schemas, with no partial upgrade (106.503826ms)
✔ named migration registry chains 3b through 3g to a fixture-only future version in order (101.590215ms)
✔ migration refuses mismatched source metadata without changing schema or evidence (34.469523ms)
✔ offline command migrates only the supplied fixture root and reports usage errors (201.870639ms)
ℹ tests 5
ℹ suites 0
ℹ pass 5
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 615.678705
@@ -0,0 +1,23 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/console-decide.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ N4: the console verbs are exactly the preview and the console resolve, and decision.resolve is not one (1.201292ms)
✔ bindConsole takes only the business human and a three-string owner subject (32.910796ms)
✔ J1, Q188: only a console cap reaches the console verbs, and a console cap reaches nothing else (43.713243ms)
✔ preview: the two real answers, a grant summary and the digest, for an open grant request only (34.748721ms)
✔ J1, J2: a decision that is not an eligible grant request refuses both console verbs (39.309827ms)
✔ N2, J13: a Console approve records via console and the owner, before the executor starts, and the grant runs once (106.473264ms)
✔ J15: a Console deny closes with the other key and starts nothing (131.876204ms)
✔ J2: approve and deny come from approvalChoice and the options, not a fixed yes and no (154.99608ms)
✔ J11: a stale digest or a key outside the two refuses decision-stale and writes nothing (36.022167ms)
✔ J14: a via console close with no matching human.input approves nothing (41.435831ms)
✔ recordEvent keeps human.input reserved, so no agent forges a console answer (26.883906ms)
✔ J7: a console proof over the socket binds a cap for its one call and the reply releases it (93.329244ms)
ℹ tests 12
ℹ suites 0
ℹ pass 12
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 833.501753
@@ -0,0 +1,17 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/creative.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
organization: {"event":"reload-needs-restart","business":"demo"}
organization: {"event":"reload-needs-restart","business":"demo"}
✔ M6: a creative raise refuses decision-not-allowed, cited or not, and no decision row appears; the assistant still raises (40.939682ms)
✔ a creative instance sends only to the user and hears only from the user (47.519881ms)
✔ M10 through the broker: the chief and the tester are refused on bean, the human's limits.set of its models key works (84.60702ms)
✔ row 256 T6 the human deletes a creative instance through the broker; the chief and the tester are refused at the verb (66.904761ms)
ℹ tests 4
ℹ suites 0
ℹ pass 4
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 371.397544
@@ -0,0 +1,19 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/credential-claim.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ X4: register adds a store reference to the running bus, and issue then writes the key (16.993892ms)
✔ X4: register runs the constructor's reference checks (0.815119ms)
✔ X4: register reads no file, so a key file left at the path stays unused, and a live token refuses (10.542395ms)
✔ X3, X4: unregister drops an entry with no token and refuses one with a live token (9.498952ms)
✔ X5: a claim holds the slot, so a second claim and a host.run refuse host-busy until release (6.587637ms)
✔ X5: a claim made while a host.run is in flight refuses host-busy (5.981273ms)
✔ X5: a stale release leaves a later claim in place (0.464384ms)
✔ X5: abortClaim aborts a live claim and says pending, and revoke's abort reaches a claim too (6.565634ms)
ℹ tests 8
ℹ suites 0
ℹ pass 8
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 127.709805
@@ -0,0 +1,15 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/credential-status.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ credentials gives human and reader sessions service, account, role, date and state, and nothing else (22.270194ms)
✔ credentials refuses a role session and any argument (18.656241ms)
✔ credentials reads the status on each request, and a broker without one lists none (24.539998ms)
✔ the broker process answers credentials without a token, path or variable in its output, log or store (170.479276ms)
ℹ tests 4
ℹ suites 0
ℹ pass 4
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 332.670177
@@ -0,0 +1,23 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/credential-store.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ T1: a store reference with no file yet starts, and the agent is not-issued until issue (5.672615ms)
✔ T1: a store path the reference does not own, or no store root, refuses the reference (0.632856ms)
✔ T1: a wrong mode on the store root, a business dir, an agent dir or the file refuses start (1.919167ms)
✔ T1: a missing store root refuses start; a missing {file} reference still refuses start (0.655534ms)
✔ T1: a store file that is a directory or a symlink refuses start (0.833522ms)
✔ T2: useFor keys from the session only (1.593099ms)
✔ T5: issue, rotate, revoke and delete are live with no restart, and revoke holds across one (4.736513ms)
✔ T5: a failed commit leaves the token on disk but not in memory, and a bad token or date writes nothing (1.81929ms)
✔ T5: revoke drops the token from memory before the unlink, so a failed unlink still leaves it revoked (2.749193ms)
✔ T5: revoke of a {file} reference forgets the token and never unlinks the file (0.680647ms)
✔ T5: delete refuses an agent dir holding anything but tokens (1.692302ms)
✔ D5: every credentials use( call site is on the allowlist (39.49179ms)
ℹ tests 12
ℹ suites 0
ℹ pass 12
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 133.57155
@@ -0,0 +1,13 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/credential-verbs.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ row 199: the lifecycle verbs refuse every session but the human, and the tester revokes only (41.949103ms)
✔ T5: issue, rotate, revoke and delete are live, rewrite the business file and leave one receipt each, with no value anywhere (103.766589ms)
ℹ tests 2
ℹ suites 0
ℹ pass 2
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 299.97301
@@ -0,0 +1,16 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/credentials.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ only validated broker references load; returned data and exceptions cannot expose a known token (2.940582ms)
✔ bad file modes, symlinks, repository/data paths, malformed tokens and missing dates refuse (2.058631ms)
✔ expiry refuses use and env references never become client data (0.550077ms)
✔ S1 parsed service refs work, service mismatch refuses, Gitea rotation due is a warning state (1.284789ms)
✔ opaque tokens shorter than 16 characters refuse before use (0.331326ms)
ℹ tests 5
ℹ suites 0
ℹ pass 5
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 78.472569
@@ -0,0 +1,27 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/csuite-messaging.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ each C-suite role file carries the same two lists: human, chief-of-staff, pm, cto (1.591921ms)
✔ chief-executive-officer: messages to and from the user, chief of staff, pm and cto pass (53.272505ms)
✔ chief-executive-officer: a message to or from the coder, reviewer or assistant is refused and logged, and nothing is stored (40.751211ms)
✔ chief-executive-officer: another C-suite role isn't on the lists either (35.4154ms)
✔ chief-financial-officer: messages to and from the user, chief of staff, pm and cto pass (47.27251ms)
✔ chief-financial-officer: a message to or from the coder, reviewer or assistant is refused and logged, and nothing is stored (40.486184ms)
✔ chief-financial-officer: another C-suite role isn't on the lists either (33.258085ms)
✔ chief-information-officer: messages to and from the user, chief of staff, pm and cto pass (42.992279ms)
✔ chief-information-officer: a message to or from the coder, reviewer or assistant is refused and logged, and nothing is stored (41.016257ms)
✔ chief-information-officer: another C-suite role isn't on the lists either (37.416475ms)
✔ chief-information-security-officer: messages to and from the user, chief of staff, pm and cto pass (48.181514ms)
✔ chief-information-security-officer: a message to or from the coder, reviewer or assistant is refused and logged, and nothing is stored (44.261858ms)
✔ chief-information-security-officer: another C-suite role isn't on the lists either (34.776835ms)
✔ chief-marketing-officer: messages to and from the user, chief of staff, pm and cto pass (42.96077ms)
✔ chief-marketing-officer: a message to or from the coder, reviewer or assistant is refused and logged, and nothing is stored (39.743554ms)
✔ chief-marketing-officer: another C-suite role isn't on the lists either (34.733687ms)
ℹ tests 16
ℹ suites 0
ℹ pass 16
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 716.38874
@@ -0,0 +1,19 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/daily-quota-runtime.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
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":"bad680e3-a4d8-4813-87f3-f7d6ef8719b7","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":"79ee6047-da59-4fb6-a519-fb9890a0785e","source":"@none","code":"baseline-unknown"}
✔ REQ-LIMIT-2 runtime: limits counts the daily quota, and mayLaunch refuses only the account at it (142.624838ms)
✔ REQ-LIMIT-4 runtime: a run bound with the account writes it on its usage records and stops at the quota (60.460312ms)
✔ REQ-LIMIT-4 runtime: a run bound without an account records null and the daily quota never stops it (52.572376ms)
✔ REQ-LIMIT-4 bindLaunch keeps the account off session.launched, refuses one that is not an identifier, and takes null as none (14.958647ms)
ℹ tests 4
ℹ suites 0
ℹ pass 4
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 369.79641
@@ -0,0 +1,19 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/decision-close.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ a human resolve sends the raising role one message from the human, and its request is the answer (52.919698ms)
✔ a cross-role decision resolved by its arbiter comes from that role and run, with no request (25.148744ms)
✔ a human withdraw sends one message with the note (25.272173ms)
✔ a human seen before the close leaves the request on the close's answer, not the seen (29.207105ms)
✔ the raising run's withdraw, a supersede, a within-role raise and seen send nothing (29.590688ms)
✔ refused closes send nothing: invalid-choice, decision-closed, not-resolver (30.782472ms)
✔ a raising role nobody holds at the close gets the message on the next claim (26.821575ms)
✔ a human DECISION send keeps its own instruction as the request, not a close's answer (25.111102ms)
ℹ tests 8
ℹ suites 0
ℹ pass 8
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 356.88743
@@ -0,0 +1,16 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/decision-route.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ a cross-role raise whose arbiter the raiser does not hear from is refused and stores nothing (48.103495ms)
✔ a gated raise by a role that does not hear from the human is refused and stores nothing (29.549188ms)
✔ a route the raiser hears from is allowed, checked from the route to the raiser (35.714116ms)
✔ a refused supersede withdraws nothing (27.74836ms)
✔ the assistant's within-role and gated raises still work (30.604762ms)
ℹ tests 5
ℹ suites 0
ℹ pass 5
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 260.38115
@@ -0,0 +1,18 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/decisions.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ roles lists open decisions routed to a role, and never the human inbox (44.047879ms)
✔ recent lists closed decisions of every route, newest close first, with how each closed (33.908895ms)
✔ recent gives the closing event as closed when the decision was seen first (35.431976ms)
✔ recent stops at RECENT rows (95.459419ms)
✔ every row is what trail already gives the same session for that id (45.350189ms)
✔ a role session can't list decisions, so it can't read another role's open decisions (40.161217ms)
✔ decisions is a read: one business, strict arguments, nothing written (41.148056ms)
ℹ tests 7
ℹ suites 0
ℹ pass 7
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 432.158043
@@ -0,0 +1,18 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/end-launch.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ endLaunch writes session.ended, releases the run claim and kills its capabilities (35.061902ms)
✔ endLaunch refuses an unknown run, a second end and a rebind of the ended run (12.777791ms)
✔ a restarted broker refuses to rebind an ended run; a refused rebind leaves the run unbound (14.085369ms)
✔ endLaunch leaves a claim another run took alone (15.276669ms)
✔ refuse records action.refused against the caller with the code only (12.059244ms)
✔ launches off refuses role.launch with launch-revoked until launches on (17.958158ms)
✔ broker process: launch ops authorize role.launch, record refusals and end runs (185.717032ms)
ℹ tests 7
ℹ suites 0
ℹ pass 7
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 372.287347
@@ -0,0 +1,35 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/fire-revokes-grants.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ row 281 T2: a fire with host grants on two hosts and a Gitea grant answers with a job, then revokes all three (276.445299ms)
✔ row 281 T3 (sage-2575): a delete with grants takes two requests: the first starts the job, the next completes (257.607628ms)
✔ row 281 T3b (Q2): a delete whose job refuses on host B; the retry refuses grant-revoke-failed and revokes only B and Gitea (255.578943ms)
✔ row 281 T3b: B cleared by hand with hosts.revoke; the next delete starts a job for Gitea and the leftover line only (234.76404ms)
✔ row 281 T3c (sage-2575 condition 4): a delete of an instance with no grant completes in one request (66.588821ms)
✔ row 281 T4: host B unreachable in a fire: the job refuses, A stays revoked, B and Gitea untouched; a repeat completes (230.096179ms)
✔ row 281 T4b (Q1): a line a manual hosts.revoke left on C is removed by the fire, with its close (104.619417ms)
✔ row 281 T4b (Q1): with C unreachable, the fire completes and names the line in grantsLeft (104.701275ms)
✔ row 281 T5: Gitea's admin token can't be checked: the job refuses with the Gitea grant intact (204.441401ms)
✔ row 281 T5b (N1): a failed token DELETE refuses gitea-left; the repeat retries only this agent's entries (350.705899ms)
✔ row 281 T6 (sage-2574): a host decision approved before the fire and run after it ends revoked, with nothing applied (72.617176ms)
✔ row 281 T6b (sage-2574): a Gitea decision approved before the fire and run after it ends revoked before any Gitea write (91.236721ms)
✔ row 281 T6c: a host executor in flight aborts and ends revoked; a Gitea executor in flight is awaited and leaves no token (271.277812ms)
✔ row 281 T6d (B1): undecided host and Gitea decisions are in the set, and approved after the fire both end revoked (103.044896ms)
✔ 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 (120.748921ms)
✔ row 281 T7: an instance with no grant fires as today, synchronously, with the same events (64.160348ms)
✔ row 281 T9 (B3): one step G per agent; the manual verbs refuse while it runs, and sweep names it running (234.753132ms)
✔ row 281 T10 (B2): the fire and the delete answer while their jobs are held, and the broker answers other verbs (228.236439ms)
✔ row 281 T11 (C1): a fire's job completes after the chief's run ends and processing halts (106.75032ms)
✔ row 281 T12 (C1, N7): a step B refusal in the job is fire.failed, and the repeat runs B and C synchronously (82.443815ms)
✔ row 281 T13 (N4): a restart records each held job interrupted once, with one message each; an ended job gets none (157.436021ms)
✔ 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 (69.402176ms)
✔ 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 (103.872625ms)
✔ row 239 T4b: an unmarked step B refusal keeps its code, and the notice says nothing of the tokens (90.666822ms)
ℹ tests 24
ℹ suites 0
ℹ pass 24
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 3991.719131
@@ -0,0 +1,31 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/gitea-grant-docker.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ C2-21 F-A/F-B: admin collaborator grant on another owner and seat permission reach; F-C/F-D protection observations (13515.718506ms)
ℹ ✔ C2-21 F-A/F-B: admin collaborator grant on another owner and seat permission reach; F-C/F-D protection observations (13364.044244ms)
ℹ F-A creative write: PUT status 204
ℹ F-B creative: permissions {"admin":false,"push":true,"pull":true}
ℹ F-A chief read: PUT status 204
ℹ F-B chief: permissions {"admin":false,"push":false,"pull":true}
ℹ F-C protected Story/**: seat rc 1, owner rc 1; established false
ℹ F-D protected branch: normal rc 0, force rc 1; established true
ℹ minted 4, hits 0
ℹ tests 1
ℹ suites 0
ℹ pass 1
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 13474.455093
ℹ minted 4, hits 0 (complete TAP stdout/stderr)
✔ X-G3: on scratch 1.27.1, a grant makes the user, mints, forks, checks reach, writes the file, and revoke deletes the token (12516.996788ms)
ℹ tests 2
ℹ suites 0
ℹ pass 2
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 26150.518142
@@ -0,0 +1,77 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/gitea-grant.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ versionAtLeast compares numbers and refuses a prerelease of 1.27.0 (1.337509ms)
✔ X-G1: a raise that fails a check refuses and stores nothing (69.474121ms)
✔ X-G1: a creative role, a role without identity and a missing or due slot refuse at raise (219.306031ms)
✔ X-G1: the chief of staff refuses at raise, whatever its definition, identity and publish declare (47.225004ms)
✔ X-G2: admin set refuses each failed check and writes nothing, then writes the slot once (186.081005ms)
✔ X-G3 to X-G8: an approve makes the user, mints the token, forks, checks reach and writes the file, record and grant.applied (110.539296ms)
✔ X-G4: a user this stack did not make, an admin, a disabled user and a remade user each refuse (371.186116ms)
✔ X-G6 and X-G8: the user and mint steps are written before their calls, and each result after its call (109.564615ms)
✔ X-G4: a fork by the seat user of another repository than the project refuses fork-foreign (112.369931ms)
✔ X-G5: a failure after the mint deletes the token, unloads nothing it did not load and leaves no file (180.184063ms)
✔ X-G5: a token delete that fails is left at Gitea, shown by status and taken by sweep (143.352539ms)
✔ X-G5: a mint that fails deletes by name, and a refusal at step 0 leaves the decision unspent (194.638622ms)
✔ X-G5: an agent held for an unknown token is refused at step 0 with no Gitea call (76.106793ms)
✔ X-G5 and X-G9 (step 7): a rotation whose old-token delete fails stays applied with the old id left (215.848938ms)
✔ X-G10: in a rotation the store file holds the new token before the old one is deleted (177.375994ms)
✔ X-G6: a rotation cut before the rename settles back at once, and the old token stays live (181.893895ms)
✔ X-G6: a rotation whose step 8 write fails is settle-pending, and a restart settles it forward (221.633802ms)
✔ X-G6: a restart settles an open rotation back when the file still holds the old token (167.487154ms)
✔ X-G6: a restart settles an open rotation forward when the file holds the new token (149.45971ms)
✔ X-G6: a 401 on the file token loses the grant: both tokens go, the record goes and memory unloads (155.66033ms)
✔ X-G6: a 403, 404, 500, a hang and a dropped socket each leave the rotation settle-pending with nothing deleted (1110.210113ms)
✔ X-G6: a file token no grant minted is held; the next restart says so again; a revoke clears it and takes both ids (268.295466ms)
✔ N9: a revoke of an open rotation, then a restart: no settle, no Gitea call and no message (178.405385ms)
✔ N9: a 404 on a delete by id counts as done (146.429096ms)
✔ X-G6: a restart undoes each step a killed child left, and spends an approved unspent decision (524.171778ms)
✔ X-G6: a restart with no admin slot leaves the user an orphan and the token left (67.758264ms)
✔ X-G7: a change to the definition, identity, publish remotes or admin slot after the raise ends decision-mismatch (153.837914ms)
✔ X-G7 and X-G9: an admin rotate voids open decisions, and rotate --finish deletes what was left (134.830812ms)
✔ X-G9: a rotate whose name is taken refuses and writes nothing; remove takes the slot away (90.744501ms)
✔ X-G9: a slot past its rotate-by date refuses a run at step 0, leaving the decision unspent (61.202231ms)
✔ X-G11: run refuses every caller but the human, an unapproved, a spent and a busy decision (135.168498ms)
✔ kill switch (plan :16): while halted the chief still reads grants.status, and an agent grants.revoke refuses (126.150239ms)
✔ X-G11: a revoke while the executor runs aborts it and the grant ends revoked (149.826928ms)
✔ X-G11: a revoke unloads memory and removes the file before its Gitea delete (168.804063ms)
✔ X-G11: a revoke during a rotation step 7 ends it revoked, and step 8 writes no record back (208.918918ms)
✔ X-G11: a revoke while a sweep settles a rotation, forward or back, ends it revoked with no record (442.725196ms)
✔ X-G11: a revoke during a settle whoami that finds a foreign token ends it revoked, not held (206.420198ms)
✔ X-G11: a revoke during a settle whoami that gets a 401 ends it revoked, not lost (195.229789ms)
✔ X-G12: a token that reaches wider than its forks fails with the repository named (466.288235ms)
✔ X-G12: reach is paged by X-Total-Count and a count that does not add up refuses (295.755156ms)
✔ X-G13: an agent cannot record a grant event, and the trigger refuses one from any writer but the grant writer (45.365905ms)
✔ X-G14: credentials delete fires the user: tokens go, login is prohibited, and grant.revoke.closed records it (304.97995ms)
✔ X-G14: a fire whose token delete or login PATCH fails lands it in serviceLeft (153.818958ms)
✔ X-G14: a fire whose user is gone or remade skips the fire steps and says why (319.729996ms)
✔ X-G14: a sweep retries a fire only for the user it fired: a remade or gone user is skipped and named (393.442793ms)
✔ X-G14: a revoke Gitea cannot reach stays open, and a restart closes it (187.553966ms)
✔ 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 (143.475225ms)
✔ X-G15: look-alike commit steps outside the grant writer are ignored at start, by revoke and by status (142.663429ms)
✔ X-G15: a look-alike spend under another kind with the grant writer pair is not an open grant (56.780544ms)
✔ status lists the slot, users, grants and nothing secret, and every grants verb needs service gitea (123.456643ms)
✔ C2-21 L1/L2/L9: research gets write on her repository with declared scopes through raise and yes (139.889708ms)
✔ C2-21 L1/L2/L9: chief-of-staff gets read on her repository with declared scopes through raise and yes (140.222692ms)
✔ C2-21 L1/L2/L9: coder gets read on her repository with declared scopes through raise and yes (144.290003ms)
✔ C2-21 L7/L7b: research refuses non-library targets lib (53.068544ms)
✔ C2-21 L7/L7b: research refuses non-library targets app,lib (49.545745ms)
✔ C2-21 L7/L7b: chief-of-staff refuses non-library targets lib (47.459267ms)
✔ C2-21 L7/L7b: chief-of-staff refuses non-library targets app,lib (45.800088ms)
✔ C2-21 L4: read widened to write refuses gitea-reach-wider and deletes the minted token (113.47042ms)
✔ C2-21 L4: admin privilege refuses gitea-reach-wider and deletes the minted token (115.701394ms)
✔ C2-21 L4: missing pull refuses gitea-reach-wider and deletes the minted token (111.393534ms)
✔ C2-21 L4: missing permission object refuses gitea-reach-wider and deletes the minted token (112.867072ms)
✔ C2-21 L4: library fork refuses gitea-reach-wider and deletes the minted token (112.69746ms)
✔ C2-21 L8: untargeted library collaborator reach is disclosed and accepted publish-wide (114.413065ms)
✔ C2-21 L10: project kind or library level changing after raise refuses decision-mismatch (162.249108ms)
✔ C2-21 L4: creative write requires push true but ignores unrelated permission keys (226.653935ms)
✔ C2-21: a library grant with no declared scopes refuses gitea-not-declared at raise (51.582376ms)
ℹ tests 66
ℹ suites 0
ℹ pass 66
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 11944.93231
@@ -0,0 +1,16 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/gitea-migration.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ 3j copy migrates to 3k: every row kept, and sqlite_master gains only the two tables and their keys (93.571039ms)
✔ a 3j→3k step that fails partway leaves the store at 3j with every row and the schema intact (111.532457ms)
✔ the 3j engine refuses a migrated store, migrating or not, and leaves it as it was (91.980477ms)
✔ gitea_users: one user per business and agent, an id above 0, a 16-hex nonce and a real decision (11.362717ms)
✔ gitea_grants: one grant per agent, a projects array, a token id above 0, and only for a recorded user (12.796298ms)
ℹ tests 5
ℹ suites 0
ℹ pass 5
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 406.14076
@@ -0,0 +1,35 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/grant-enroll.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ G1, A1: only the chief raises a grant, and a refused raise stores nothing and runs no keyscan (46.645134ms)
✔ G1: grant goes only with credential.mint, row a takes only host-enroll, and E1 refuses each bad field (56.664466ms)
✔ G5, A5, A6: the scanned key set must equal the requested set, or host-key-mismatch and nothing stored (36.701202ms)
✔ G4 (host-enroll block, M1): the broker appends the keys, fingerprints and sudo line, and the cap counts the block (28.0911ms)
✔ G6, X1: the human's cli yes starts enrollment, which writes the record, the key file and the events in order (51.818404ms)
✔ A2, A4: a credential.mint without grant, and a no, start nothing (239.59713ms)
✔ A3, X1: a resolve by the tester or an agent starts nothing (236.514451ms)
✔ G6 (duckworth-0081 B3): a withdraw by the chief or the human, and an arbiter resolve, start nothing (236.673986ms)
✔ G10 (duckworth-0081 B1): a second start for a spent decision refuses decision-consumed, and an unresolved or agent-resolved one not-authorized (57.656722ms)
✔ A8, S1: two approved enrollments for one host: the second ends host-enrolled and the pin stays (78.14571ms)
✔ A9: the hosts primary key refuses a second record for (business, host) (28.890609ms)
✔ X3: a failure at step 2 deletes the record again and ends grant.failed, with no key file (51.353326ms)
✔ A10, X3: at start a resolved, unspent enrollment is spent and ends interrupted, and never runs late (32.999556ms)
✔ X3: at start an enrollment that stopped after its registry step loses its record and key file (54.85496ms)
✔ G24 first sentence, M2, A12: tags are mosaic- and 32 hex, and differ by business, agent and host (0.386375ms)
✔ E4: hosts.check sets the record ready and records grant.host.checked; a non-zero list leaves it pending (58.522726ms)
✔ G20 (duckworth-0081 B3): the human's hosts.check marks the host ready, and the reader refuses (55.395701ms)
✔ G18 (duckworth-0081 B2), broker half: a check refused host-key-mismatch leaves the host pending-install with no grant.host.checked (56.214661ms)
✔ E4: a check whose installer fingerprint differs from the record refuses host-changed (52.6934ms)
✔ E4, G21: hosts.remove is the human's or the tester's, deletes the key and the record, and records grant.host.removed (55.639523ms)
✔ G21, F1, F2, M4, A22: hosts.remove refuses host-line-left on a guarded hostLineLeft, and ignores look-alikes (59.528393ms)
✔ hosts.remove refuses host-in-use while a grant record names the host (51.634343ms)
✔ the grant writer refuses a body outside section 7's shape (27.061082ms)
✔ recordEvent refuses reserved-event for a grant.* action or operation (28.617014ms)
ℹ tests 24
ℹ suites 0
ℹ pass 24
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 1775.39436
@@ -0,0 +1,53 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/grant-executor.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ row 280: an occupied TCP port is attempted, refused, and retried with our sshd (94.660089ms)
✔ row 280: every injected picker sample is unprivileged and outside the ephemeral range (0.439198ms)
✔ G7: an Approve installs the tagged line, logs in with the new key, and writes the key file, record and grant.applied (722.294369ms)
✔ G7: a commands change on a live grant updates the record in one transaction and keeps the key and line (570.920159ms)
✔ G8: a failure at install or verify removes the line and leaves no record, key file or reference (1632.927961ms)
✔ G8: a failed remove adds hostLineLeft and tells the human to sweep (679.963259ms)
✔ G8: a failure in step 5 before commit unlinks the key file, drops the reference and removes the line (697.024716ms)
✔ G8: a store fault in the commit transaction ends host-failed with no record, key file, reference or line (676.24616ms)
✔ G8: a failed step 1 check spends the decision and runs nothing remote (84.485711ms)
✔ G9: a registry, definition or commands change between raise and Approve ends decision-mismatch before any remote step (511.605818ms)
✔ G9: an agent no longer a role or no longer declaring host ends with its code, spent (77.932403ms)
✔ G10: a second start refuses decision-consumed, and an unresolved or agent-resolved decision not-authorized, writing nothing (523.218075ms)
✔ G15: no event, message or decision holds the private key (509.831129ms)
✔ G23: a revoke during install ends grant.failed revoked with no key file, no grant and no line (531.598279ms)
✔ G23 (row 249): an add that writes after an abort's remove leaves hostLineLeft until the sweep (873.84519ms)
✔ G23 (row 249): an add that writes after a timed-out install's remove leaves hostLineLeft until the sweep (884.79913ms)
✔ G23: a revoke recorded after the raise and before the start ends step 1 revoked, and a held slot ends host-busy (517.63216ms)
✔ G24: names at 64 characters with . and _ give distinct tags of the fixed length (0.419062ms)
✔ G11: a restart after install removes the line, then ends interrupted with the tag, holding the slot until then (227.523711ms)
✔ G11: a restart after a new key's commit, with the key file written, ends with no key file, record, reference or line (237.225684ms)
✔ G11: a restart after a commands change's commit leaves the record as it was and asks nothing of the host (527.207749ms)
✔ G11 (B2): a restart before step 1, spent or not yet spent, ends interrupted and nothing runs later (75.518953ms)
✔ G11: a remote undo that fails ends interrupted with hostLineLeft and the sweep hint (294.822848ms)
✔ G11: a restart leaves a finished grant alone, and the reconcile adds nothing for it (541.14692ms)
✔ N1 (G27): the start sweep unlinks host.<id> files with no record in loaded businesses only, and refuses a store dir that is not private (7.118517ms)
✔ G12: the human's hosts.revoke deletes the record, the key file, the reference and the line, with a closed marker (683.669283ms)
✔ G12 (N4): a revoke with no record still removes the computed tag's line, with granted false; bad args refuse (219.881995ms)
✔ G13: a revoke during install aborts the executor, which ends revoked, and the line goes (568.768707ms)
✔ G26: the human, the assistant and the tester revoke; the chief and a pm refuse; sweep is the human's or the tester's (520.879686ms)
✔ row 281 T8: a tester hosts.revoke refuses tester-dev-only once bus.tester is off, and a human revoke writes no job records (661.726101ms)
✔ 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 (686.867621ms)
✔ G27: after step 2 with the host down, the restart closes the marker with hostLineLeft; a marker without a revoke id is not reopened (964.354003ms)
✔ G27: a key file a revoke could not unlink is reported left and goes at the next start (710.946832ms)
✔ G28: a commands change, then a revoke, then a restart leave no record, key, reference or line (733.327501ms)
✔ G24 (B4): hosts.sweep removes only this business's recorded tags no live grant holds, and records what it left (1035.423551ms)
✔ G12: the local steps finish before the host step, so a host that hangs leaves the agent no access (725.603675ms)
✔ G23 (X5): a revoke right after the spend reaches the executor's claim, so the grant ends revoked (223.136275ms)
✔ G23 (X5): a revoke that lands as verify returns ends revoked with no record, key file or line (687.260709ms)
✔ G13: a revoke whose host remove fails still drops the record and key, and reports the line left for a sweep (663.382118ms)
✔ G22: enroll, check, grant, host.run, a commands change the next host.run uses, and a revoke that kills a run in flight (1252.408539ms)
✔ mos-1163: a grant whose agent became a creative role after the raise ends host-creative-role at step 1, spent, with nothing remote (71.190184ms)
✔ 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 (523.043409ms)
ℹ tests 42
ℹ suites 0
ℹ pass 42
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 22539.529342
@@ -0,0 +1,21 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/grant-host.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ G1 (host): only the chief raises a host grant, a grant on any other action refuses, and nothing is stored (35.205899ms)
✔ G1, R4: the grant takes exactly method, agent, host, commands and rotateBy, and an unknown method refuses (42.625416ms)
✔ row 236 (#1742): a gitea grant on a broker with no Gitea path refuses gitea-not-configured, and nothing is stored (24.39352ms)
✔ G2: an agent whose definition lacks host refuses host-not-declared, and an unknown agent unknown-role (28.555042ms)
✔ mos-1163: a grant whose agent is a creative role refuses host-creative-role, even when its definition declares host (24.356146ms)
✔ G3: wildcard, shell, empty and other 210 D6 argv prefixes refuse invalid-request (46.601986ms)
✔ R4 rotateBy (sage-1782): a real calendar day after today UTC, or invalid-request (38.677278ms)
✔ G19: a grant naming a host that is pending-install refuses host-not-ready, and an unknown host host-unknown (30.343279ms)
✔ R4, G5: the raise routes to the human and its event body binds the eight fields with their hashes (24.878582ms)
✔ G4 (host block): the broker appends the host, each prefix, the rotate date and new key or change (36.752822ms)
ℹ tests 10
ℹ suites 0
ℹ pass 10
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 427.01057
@@ -0,0 +1,17 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/grant-migration.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ 3i copy migrates to 3j: every row kept, and sqlite_master gains only the two tables, their keys and the guard (88.711531ms)
✔ a 3i→3j step that fails partway leaves the store at 3i with every row and the schema intact (95.241037ms)
✔ the 3i engine refuses a migrated store, migrating or not, and leaves it as it was (88.785742ms)
✔ A22b, sage-1703: a session-written grant.* row from before the step survives it, and the grant readers ignore it (84.26533ms)
✔ the guard: a grant.* action or operation on action.allowed needs the (NULL, grant) actor (16.050945ms)
✔ hosts: one record per business and host, a ready host has its installer and check, grants need the host (12.776631ms)
ℹ tests 6
ℹ suites 0
ℹ pass 6
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 481.267969
@@ -0,0 +1,13 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/grant-scope-runtime.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
organization: {"event":"reload-needs-restart","business":"demo"}
✔ row 298 runtime: human scope approval writes the file and organization history at the supplied revision (90.465342ms)
ℹ tests 1
ℹ suites 0
ℹ pass 1
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 211.490685
@@ -0,0 +1,25 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/grant-scope.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ row 298 (Q3): only the human at the cli reads or sets the scope; agents, the tester, a reader and the Console refuse (87.128588ms)
✔ row 298 (Q1): organization.set and limits.set refuse a grantScope key, and nothing is written (56.91985ms)
✔ row 298 (Q3): the human verb writes the scope and a grant.scope record with the human proof and both sha256 (58.187056ms)
✔ row 298 (Q4): an in-scope Gitea grant is issued with no inbox item, logged with 236 records, and revocable (159.958254ms)
✔ row 298: an out-of-scope Gitea grant waits for the human, whose Approve still issues it (115.744827ms)
✔ row 298: with no scope, a bad scope or an unreadable file, an in-scope-looking grant waits (163.635851ms)
✔ row 298 (Q6): a chief-of-staff instance that is not launch.by never raises in scope (53.19945ms)
✔ row 298 (Q5): a scope narrowed between the raise and the spend ends the grant scope-changed (99.030881ms)
✔ row 298 (Q2): an in-scope host grant is spent with no Approve; ls never covers lsblk, nor a scope command extra arguments (83.052691ms)
✔ row 298 (Q5): a host scope narrowed before the spend ends scope-changed (75.149488ms)
✔ row 298 Q4: missing scope evidence or a bad scope digest cannot authorize execution (103.575082ms)
✔ row 298 T4/T8: an in-scope host grant issues, records and revokes through the existing executor (81.554137ms)
✔ row 298 T6: host enrollment stays open for human Approve even with both methods in scope (51.833627ms)
✔ row 298: scope without an organization revision never closes automatically (48.942907ms)
ℹ tests 14
ℹ suites 0
ℹ pass 14
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 1329.921435
@@ -0,0 +1,24 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/hard-waits.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ REQ-WAIT-1: the broker hard waits are exactly the list, and match the business vocabulary (1.171223ms)
✔ REQ-WAIT-2: a business granting a hard wait at either class is refused; the actions that left are grantable (32.164958ms)
✔ REQ-DEC-2: every hard wait goes to the human, cited or not, and the arbiter cannot resolve it (521.804202ms)
✔ REQ-DEC-2: a gated raise citing the current spec goes to the arbiter for its domain; uncited, to the human (233.811002ms)
✔ REQ-DEC-2: an arbiter-approved cited gated decision authorizes the raiser, and the human cannot resolve it (51.329546ms)
✔ REQ-DEC-2: a cited merge raised by merge-gate goes to the technical arbiter; a merge raised without the grant routes by citation (67.68312ms)
✔ REQ-DEC-2: a stale or unconfirmed citation refuses without a decision; an arbiter raising its own goes to the human (106.214134ms)
✔ Q169: the chief of staff's end of the assistant stops every thread run; its own run and another ender's are refused (50.387279ms)
✔ Q169: a revoke of the assistant the chief of staff raises goes to the human, cited or not, and no arbiter resolves it (126.730592ms)
✔ Q169: another role's cited revoke of the assistant, resolved by an arbiter, is refused (67.790151ms)
✔ Q169: a revoke of the assistant citing a decision the human resolved stops its thread run (57.966455ms)
✔ Q169: a cited revoke of a role not in END_PROTECTED still goes to the arbiter, and executes (53.043ms)
✔ Q169: a role granted role.revoke at either class still sends a revoke of the assistant to the human (70.026454ms)
ℹ tests 13
ℹ suites 0
ℹ pass 13
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 1538.012391
@@ -0,0 +1,37 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/host-run.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ row 280: an occupied TCP port is attempted, refused, and retried with our sshd (91.359013ms)
✔ row 280: every injected picker sample is unprivileged and outside the ephemeral range (0.402429ms)
✔ the executor tests need sshd, ssh, ssh-agent, ssh-add, ssh-keygen and setpriv: a missing one fails, never skips (0.114796ms)
✔ T3: organization.set, limits.set and instances.set refuse hosts, and the writer never runs (24.749073ms)
✔ T4: the value check takes one unencrypted ed25519 key and nothing else (186.403962ms)
✔ T5 to T8: registry, grant, argv shape and allowlist refusals (529.576558ms)
✔ T9: under 1.7 every call needs a decision bound to its host, argv and stdin, spent once (304.941719ms)
✔ T10, T11: argv reaches sudo unchanged after sudo -n -- (336.223417ms)
✔ T12, T13: exit code passes through, the timeout kills the group, output is capped (1526.035218ms)
✔ T14: a host key not in the registry refuses and nothing runs (190.407495ms)
✔ G18: hosts.check with a wrong pin refuses host-key-mismatch and runs nothing on the host (332.111395ms)
✔ N3: a remote exit 255 that prints the pin refusal text is the command result, and an ssh failure keeps its message (320.860467ms)
✔ T15: ssh reads no config file and no user known_hosts (285.960915ms)
✔ T16, T17: key material in output or stdin refuses credential-leak, and no event holds it (664.793841ms)
✔ T18, T19, T20: one call at a time, no key in any argv or env, and nothing left after (4676.060209ms)
✔ T21: revoke kills the call in flight, and the next call refuses (317.157657ms)
✔ T22: events carry host, address, user and argv in clear, and sizes and hashes only (288.225025ms)
✔ T24: no literal gitea and vikunja kind list outside vocabulary.mjs, and the credential use sites are known (21.830042ms)
✔ T25: no role definition lists host.sudo while it is a hard wait (0.557202ms)
✔ T27: the bus child dying takes ssh and ssh-agent with it (348.702638ms)
✔ T27: ssh-add -t drops the key from an agent the test keeps alive (3561.06465ms)
✔ N2: a hung ssh-add is killed at its limit or on abort, and nothing is left running (429.311091ms)
✔ T27: the start sweep keeps a live bus dir and kills only a matching live process (28.055229ms)
✔ T27: the bus start sweeps <configDir>/secrets/run before it listens, and a stray entry stops the start (66.255666ms)
✔ M3: host.run refuses host-not-granted unless the grant record has an approved, spent host grant (185.900047ms)
✔ M3: a host_grants record gives Credentials a store reference at start, and a restart reads its key (108.768545ms)
ℹ tests 26
ℹ suites 0
ℹ pass 26
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 14954.804799
@@ -0,0 +1,17 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/host-tools.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ G16: the writer refuses each user, tag and key the design names, before any key file (2354.057787ms)
✔ G16: from= comes from the host file, a privileged user skips the group and sudo checks, and the line is exact (641.681362ms)
✔ G16: list shows tagged lines only, and add and remove never touch a line outside the tag pattern (312.988539ms)
✔ G25: the writer refuses a symlinked dir or user file, a group-writable dir and an odd tmp, and writes 0644 (450.863186ms)
✔ G16: mosaic-keys passes the three requests to the writer through sudo and refuses anything else without it (87.33416ms)
✔ E3: the sudoers line and the sshd drop-in are the design lines and parse (15.418998ms)
ℹ tests 6
ℹ suites 0
ℹ pass 6
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 3913.268231
@@ -0,0 +1,15 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/human.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ human proof binds CLI entry, process start and nonce; agents and incomplete ancestry refuse (1.350593ms)
✔ process reader gets own kernel identity without exposing environment values (0.411753ms)
✔ EACCES ancestor environments skip only markers; commands and registered launches still refuse (0.545686ms)
✔ real pid 1 remains inspectable when its environment is protected (0.218231ms)
ℹ tests 4
ℹ suites 0
ℹ pass 4
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 66.071589
@@ -0,0 +1,16 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/instances-verb.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
organization: {"event":"reload-needs-restart","business":"demo"}
organization: {"event":"reload-needs-restart","business":"demo"}
✔ row 165: instances and instances.set refuse every non-human session but the tester, the chief of staff included, and pass the verified actor (38.443172ms)
✔ 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 (144.334449ms)
✔ 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 (27.04305ms)
ℹ tests 3
ℹ suites 0
ℹ pass 3
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 303.207159
@@ -0,0 +1,16 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/interpreter.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ system Python is a resolved root-owned ELF, never a shim or home interpreter (2.279597ms)
✔ real system interpreter is available and safely inspected (22.498516ms)
✔ restart receipt appends actual replacement identity and refuses unsafe files (3.868223ms)
✔ activation gate compares fresh startup receipt to the current interpreter identity (1.418072ms)
✔ non-regular startup receipt refuses promptly without waiting on a FIFO peer (36.737323ms)
ℹ tests 5
ℹ suites 0
ℹ pass 5
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 120.895908
@@ -0,0 +1,29 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/land.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ 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 (42.116778ms)
✔ checkLand refuses on the decision and the review (39.192806ms)
✔ REQ-LAND-1: a gated merge decision refuses not-authorized, cited and approved by the arbiter or uncited and approved by the human (97.041865ms)
✔ REQ-LAND-1: a within-role merge grant refuses not-authorized at the land (25.783942ms)
✔ a cross-role merge that routes to the human, because merge-gate is its own arbiter, lands on the human's CLI answer (26.348951ms)
✔ a merge option with no first line refuses no-subject, as land-work does (24.292282ms)
✔ checkLand refuses with land-work's codes past the authority check, and a decision raised for refactor never lands (65.77898ms)
✔ a ticket outlives the run that asked, and recordLand checks the task again (30.468791ms)
✔ two tickets on one decision: the first recordLand lands, the second refuses decision-consumed and records nothing (31.8988ms)
✔ landRefused files the code on the task, tells the role only with notify, and ends the ticket (34.281789ms)
✔ landHeld is true only for an approved, unspent cross-role merge decision this role raised for a task in this thread (42.003595ms)
✔ landHolders lists a merge decision exactly while landHeld is true for its non-thread instance, in decision order (47.122026ms)
✔ landHolders leaves out a thread instance's decision, even one raised before its role became one (26.839884ms)
✔ 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 (42.731787ms)
✔ a landing run started after the resolution passes checkLand for its held decision before any message.receive, and lands it (31.505683ms)
✔ the bus process answers landHolders and landRelease from their own lines, not as credentialStatus (170.382821ms)
✔ 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 (35.573784ms)
✔ no run may write the action.allowed for git.merge.protected itself (17.825151ms)
ℹ tests 18
ℹ suites 0
ℹ pass 18
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 923.100321
@@ -0,0 +1,19 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/launch-notice.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ a message to a stopped role sends launch.by one notice, and the result says so (32.255476ms)
✔ a message to a role outside launch.instances says so in its result and in the notice (18.258181ms)
✔ a message to a running role sends no notice and its result is unchanged (16.519528ms)
✔ a re-route at a claim, a release and claim, and a broker restart send no second notice (24.512114ms)
✔ a run launched but not yet claimed counts as no holder (14.859489ms)
✔ 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 (30.888147ms)
✔ a business with no launch block tells nobody and says there is no launcher (14.218399ms)
✔ the notice sender stays internal: no role is named _bus and no caller can send as it or to it (36.791821ms)
ℹ tests 8
ℹ suites 0
ℹ pass 8
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 288.144937
@@ -0,0 +1,14 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/launcher-released.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ row 302 a run threadIdle released answers launcher-released on receive, state, read and send, logs each, and claims nothing again (48.753352ms)
✔ row 302 with a run launcher-released, a run that lost its claim another way still answers not-holder (36.041114ms)
✔ row 302 a run landRelease released answers launcher-released, and claims nothing again (36.417076ms)
ℹ tests 3
ℹ suites 0
ℹ pass 3
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 210.153395
@@ -0,0 +1,17 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/library-credential.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ C2-03b T6: the slot before any chief evidence, then the listed chief's live grant (28.433906ms)
✔ C2-03b T7: a chief revoked through grants.revoke or fired through instance.fire refuses, and the fallback stays ended (321.503246ms)
✔ C2-03b T7 choice checks: delisted, a fire under way and held each refuse; a rehire lists the chief again (34.037175ms)
✔ C2-03b T8: a chief grant on another project ends the fallback, and two listed chiefs refuse library-fetch-no-grant (33.550891ms)
✔ C2-03b departure (sage-2928): with no chief entry, any Gitea grant evidence refuses (19.14349ms)
✔ C2-03b T9 runtime: the chief's store file and user, then a real revoke that runs no git with the slot at 0000 (872.931307ms)
ℹ tests 6
ℹ suites 0
ℹ pass 6
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 1447.67694
@@ -0,0 +1,22 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/library-lookups.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ all five agent verbs read the configured served commit through real queries (137.997898ms)
✔ each verb refuses missing universe and unknown keys before host work (75.842489ms)
✔ no library, missing host adapter and undeclared project refuse library-not-configured (159.428755ms)
✔ reads need the current holder on each call; human/tester/reader are not agents (92.228125ms)
✔ releasing a claim during an async lookup fences the response (50.952204ms)
✔ a business library removed during an async read cannot leak its result (44.780288ms)
✔ freshness boundary, unknown last fetch and failed fetch still use immutable served state (135.702947ms)
✔ an unreadable sync state fails closed; a busy sync keeps serving the existing pin (75.158136ms)
✔ a stale lookup sees the commit published by its sync, not the prior served commit (86.989494ms)
✔ real socket awaits lookup results and rechecks rejected query arguments (102.484989ms)
✔ runtime actually injects the lookup adapter, without exposing human library.file (156.865012ms)
ℹ tests 11
ℹ suites 0
ℹ pass 11
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 1273.752824
@@ -0,0 +1,17 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/library-sync.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ C2-03a library.sync: every agent, the tester and a reader are refused before the adapter runs (30.330167ms)
✔ C2-03a library.sync: the human fetches, accept passes through, and a held sync is a recorded refusal (19.255095ms)
✔ C2-03a library.sync: a LibraryError keeps its code and a host without sync is not configured (25.964892ms)
✔ C2-03a runtime: a librarySync from a boot config, with no function, is refused (1.335076ms)
✔ C2-03a runtime: the timer syncs each entry with a user at start and on each tick, logs codes only, and stops on close (595.316687ms)
✔ row 254 human-cli: library.sync outlasts the 5 s client default, and library.status does not (6097.963666ms)
ℹ tests 6
ℹ suites 0
ℹ pass 6
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 6913.249088
@@ -0,0 +1,17 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/library.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ C2-04 M4: both verbs reject every agent before arguments or adapter access (40.348648ms)
✔ C2-04 bus: human reads validate keys and return adapter results without path leakage (16.631544ms)
✔ C2-04 socket: each async library verb resolves its result rather than serializing {} (82.94035ms)
✔ C2-04 runtime: protectedRoots skips library but retains real code-root credential protection (122.332874ms)
✔ C2-04 runtime: unsafe existing mirror refuses boot and never publishes a socket (30.378693ms)
✔ C2-04 runtime: real library adapters reach the socket and lock waits leave other bus reads responsive (254.395845ms)
ℹ tests 6
ℹ suites 0
ℹ pass 6
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 685.769026
@@ -0,0 +1,20 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/lifecycle-revoke.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
organization: {"event":"reload-needs-restart","business":"demo"}
✔ 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 (123.71829ms)
✔ T20 fire: an instance already delisted still has its tokens revoked and the file is left alone (61.625067ms)
✔ T20 fire: with no entry in the running bus, a token on disk refuses and an empty store goes on (70.463008ms)
✔ T20 delete: a revoke that fails keeps the file; one that succeeds clears the store, deletes, and names the tracker bot (84.873087ms)
✔ T20 delete: with no entry in the running bus, a token file is cleared and the delete goes on; a file reference refuses (66.62316ms)
✔ T21 delete: a write between the raise and the take makes the delete refuse revision-conflict before it revokes anything (69.53016ms)
✔ row 281 T1 fire: a host.<id> or granted gitea file in the store refuses step B credential-revoke-failed, file unchanged (69.622521ms)
✔ row 281 T1 start: a host grant record whose key file is gone starts and reads not-issued (63.243764ms)
ℹ tests 8
ℹ suites 0
ℹ pass 8
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 766.948689
@@ -0,0 +1,24 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/lifecycle-verbs.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ 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 (43.457158ms)
✔ 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 (24.899895ms)
✔ row 194 D1.1 take: a request is taken once, closes once, and lifecycleRequests lists only what is not closed (19.646348ms)
✔ row 194 D1.1 take: a launch.revoke after the request closes it launch-revoked, and a request past 60 s closes request-expired (22.328861ms)
✔ 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 (31.705267ms)
✔ 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 (23.512176ms)
✔ row 194 V3 terminate: claims revoked, open requests cancelled, bound runs named, taken requests listed; nothing at all answers not-held (30.750976ms)
✔ row 194 V3 terminate of a thread instance: the human ends every thread, the tester only its own (24.744447ms)
✔ 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 (39.171838ms)
✔ row 194 V5: an open launch past its 60 s is not starting, as it can only close request-expired (13.773267ms)
✔ row 194 V5 after the take: lifecycleDelete re-checks running and starting, then commits through the writer with the human as actor (24.478799ms)
✔ row 194 V5 retry: a retired name deletes again only after workspace-rename-failed, and that request commits nothing (21.885622ms)
✔ 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 (152.476894ms)
ℹ tests 13
ℹ suites 0
ℹ pass 13
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 570.885604
@@ -0,0 +1,27 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/limit-checks.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ REQ-LIMIT-3 limitLeaves finds every limit object and skips the agent numbers (1.599844ms)
✔ REQ-LIMIT-3 limitLeaves takes token limits at schema depth only, whatever their names (0.276521ms)
✔ REQ-LIMIT-3 with no check switched on a launch is allowed, a turn never stops, and every limit is not enforced (17.011807ms)
✔ REQ-LIMIT-3 a fixture check that refuses refuses the launch and stops the turn, logged with the limit and the count (17.416467ms)
✔ REQ-LIMIT-3 a report that omits a limit shows it not enforced; a counted entry and a reason come through (16.441969ms)
✔ REQ-LIMIT-4 each check gets the business, a copy of the limits, the subject, the records and the time (18.792049ms)
✔ REQ-LIMIT-4 fail closed: a throw refuses, stops and fails the report, naming the check and the code (16.33115ms)
✔ REQ-LIMIT-4 fail closed: a malformed answer, a promise, a rejected promise, a non-boolean or a bad hit is malformed-answer (19.086468ms)
✔ REQ-LIMIT-4 fail closed: a check switched on but not loaded refuses, stops and fails every limit as not-loaded (16.202538ms)
✔ REQ-LIMIT-4 state(), never-loaded case: before any load the report shows not enforced, or not-loaded for a switched-on check (13.292711ms)
✔ REQ-LIMIT-4 state(), first-load-refused case: a check refused on its first load is not-loaded in mayLaunch, mustStop and report (14.281973ms)
✔ REQ-LIMIT-4 fail closed: an unreadable organization file refuses and stops with check null; the report throws (13.417783ms)
✔ REQ-LIMIT-4 fail closed: unreadable records refuse and stop with check null and fail the report (0.600481ms)
✔ REQ-LIMIT-3 the shipped token-limit, through the real loader, counts known records only since the limit was set (27.81642ms)
✔ REQ-LIMIT-3 a token limit for a provider named limit is counted and refuses, beside an agent limit of the same name (12.878814ms)
✔ REQ-LIMIT-3 core reaches limit checks only through the plug-in loader (1.395068ms)
ℹ tests 16
ℹ suites 0
ℹ pass 16
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 313.502834
@@ -0,0 +1,16 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/limit-stop.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ 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 (38.101082ms)
✔ REQ-LIMIT-4 the stop also lands on state; a run with no stop ends without a limit (34.908211ms)
✔ REQ-LIMIT-4 fail closed: a mustStop throw or a malformed answer stops the run, naming the bus and the code (95.380091ms)
✔ REQ-LIMIT-4 a thread run at its limit is released with the reason, and its end record names the limit (28.922384ms)
✔ REQ-LIMIT-4 a broker with no limit checks configured never stops a run (19.048342ms)
ℹ tests 5
ℹ suites 0
ℹ pass 5
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 305.238601
@@ -0,0 +1,22 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/limits-runtime.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
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":"18e16b92-0c3d-423f-8ce1-f4a68bf5b24d","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":"65bc80de-4f65-4c0c-b11f-5fabbb337df8","source":"@none","code":"baseline-unknown"}
organization: {"event":"reload-needs-restart","business":"demo"}
✔ REQ-LIMIT-3 REQ-LIMIT-4 runtime: limits carries the token count, mayLaunch refuses at the limit, a reset moves since (176.332892ms)
✔ REQ-LIMIT-3 runtime: with no limit check switched on, the limit shows not enforced and every launch is allowed (48.303381ms)
✔ 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 (64.384661ms)
✔ REQ-LIMIT-4 runtime: with no usage source a turn is unknown, counts zero and stops nothing under a limit of 1 (61.557366ms)
✔ REQ-LIMIT-3 runtime: switching a limit check on with plugins.set loads it without a launch or a turn (74.837608ms)
ℹ tests 5
ℹ suites 0
ℹ pass 5
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 483.732161
@@ -0,0 +1,16 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/limits.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
organization: {"event":"reload-needs-restart","business":"demo"}
organization: {"event":"reload-needs-restart","business":"demo"}
✔ limits binds actor from human proof and rejects role, reader, a tester set and forged actor (26.389357ms)
✔ runtime wires verified human settings to the actual shared file writer and actor receipt (131.326332ms)
✔ uncertain organization receipts leave bus startup and reads alone but refuse writes until reconciled (67.495935ms)
ℹ tests 3
ℹ suites 0
ℹ pass 3
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 329.367772
@@ -0,0 +1,14 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/message-citation.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ within-role sends cite an open gated launch decision without spending it or naming it in grants (33.786703ms)
✔ missing and foreign-business citations refuse and roll back message and grant (23.022036ms)
✔ cross-role sends still need a matching resolved decision and consume it once (26.823402ms)
ℹ tests 3
ℹ suites 0
ℹ pass 3
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 174.083319
@@ -0,0 +1,17 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/message-filter.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ trail on a hidden message id answers exactly as on an unknown id, for the owner, a reader and the tester (28.647197ms)
✔ replies on a hidden message id answers exactly as on an unknown id, for the owner, a reader and the tester (28.45137ms)
✔ trail on a decision keeps the decision and drops the user thread messages, their deliveries and their events (38.380375ms)
✔ replies leaves out other users thread messages and still fills a page (215.397939ms)
✔ messages in the business human and tester threads are not hidden (row 177 unchanged) (47.334765ms)
✔ governance pin: the owner sees decisions, inbox entries, claims, tasks and project files, but not the user messages (119.043011ms)
ℹ tests 6
ℹ suites 0
ℹ pass 6
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 576.557872
@@ -0,0 +1,15 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/messages.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ messages pages all human messages newest first without writes; read state is history (358.315594ms)
✔ messages refuses role callers, invalid paging and cursors outside this human feed (28.916097ms)
✔ views messages passes only its paging arguments through (0.333574ms)
✔ messages isolates businesses even with a valid foreign cursor (21.082789ms)
ℹ tests 4
ℹ suites 0
ℹ pass 4
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 521.375984
@@ -0,0 +1,24 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/messaging.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ the assistant sends to the user and to the chief of staff only (41.993409ms)
✔ an assistant send to any other role, or to the tester, is refused and logged (43.121841ms)
✔ only the user and the chief of staff may send to the assistant; the tester is refused by default (39.584296ms)
✔ REQ-ASSIST-2 REQ-THREAD-1 thread.send to an instance that does not hear from the user is refused and stores nothing (31.285133ms)
✔ a sender-side list alone refuses a send to a role that has no list (34.479897ms)
✔ a target-side list alone refuses a send from a role that has no list (35.130953ms)
✔ the sender list is checked before the target list (31.657428ms)
✔ roles without the field behave exactly as before (45.092982ms)
✔ a business with no role definitions at all is unlimited (40.831591ms)
✔ a malformed messaging field refuses at boot (15.511551ms)
✔ the assistant's review.request to a reviewer is refused and logged, even with an approved decision (38.211668ms)
✔ a review.verdict to the assistant from a role outside its receiveFrom is refused and logged (43.53497ms)
✔ review requests and verdicts between roles without the field are unchanged (33.169693ms)
ℹ tests 13
ℹ suites 0
ℹ pass 13
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 564.335441
@@ -0,0 +1,19 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/model-proxy.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ proxy.init only accepts path-bound outside-agent human; refuses agent/tester/reader (30.158664ms)
✔ proxy.init proxy-key-invalid (15.434067ms)
✔ proxy.init proxy-config-invalid (15.208282ms)
✔ proxy.init invalid-request (14.948605ms)
✔ proxy.init not-configured (14.582576ms)
✔ proxy.init callback error redacts key and maps outcome to named refusal (16.400417ms)
✔ socket awaits proxy.init and does not return a Promise object or retain human cap (37.025958ms)
✔ proxy-init-failed: extra callback fields cannot return a management key (13.28496ms)
ℹ tests 8
ℹ suites 0
ℹ pass 8
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 251.574261
@@ -0,0 +1,12 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/name-migration.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ 3f copy migrates to 3g preserving every old column/row, with an empty instance_names and null to_name (97.212932ms)
ℹ tests 1
ℹ suites 0
ℹ pass 1
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 178.367219
@@ -0,0 +1,18 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/names.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ REQ-MSG-2: the chief of staff names an instance under its within-role grant, and the write is logged (26.603404ms)
✔ REQ-MSG-2: the human names an instance through the CLI (21.775782ms)
✔ REQ-MSG-2: a role without the grant, or holding it cross-role, is refused not-authorized (23.707657ms)
✔ REQ-MSG-2: a name is unique in the business and is never an instance key or a role name (36.97022ms)
✔ REQ-MSG-2: a send by name reaches the instance and records both; a send by instance key is unchanged (29.552227ms)
✔ REQ-MSG-2: an instance key beats a name that equals it, as when a later instance takes the key (19.980379ms)
✔ REQ-MSG-2: a role name beats a name that equals it, as when a later definition takes the word (sage-0590) (22.045582ms)
ℹ tests 7
ℹ suites 0
ℹ pass 7
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 263.705437
@@ -0,0 +1,15 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/peer-transport.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ proof receives actual peer, cap traffic never invokes helper and transient cap disconnects (7.391813ms)
✔ proof helper error and disconnect during verification never dispatch or bind (1.6363ms)
✔ Client receives explicit proof refusal codes without dispatch, not outcome-unknown (45.806916ms)
✔ asynchronous proof calls release their transient session on success, failure and timeout (28.94349ms)
ℹ tests 4
ℹ suites 0
ℹ pass 4
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 158.274426
@@ -0,0 +1,16 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/peercred.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ T2 eight proof callers and a racing copier bind the exact accepted socket, which survives helper exit (264.734028ms)
✔ helper output and failures fail closed including unsafe gid (1.991771ms)
✔ helper timeout, capacity and shutdown refuse without leaving children (26.416564ms)
✔ missing or non-regular peer helper refuses at construction before opening the bus (0.302794ms)
✔ shutdown waits for killed helper close before returning (5.884003ms)
ℹ tests 5
ℹ suites 0
ℹ pass 5
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 393.032086
@@ -0,0 +1,18 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/plugins-verb.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
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"}
✔ plugins and plugins.set refuse every non-human session and a forged actor, and pass only the patch with the verified actor (23.305821ms)
✔ 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 (114.427291ms)
✔ vikunja:19/309 through the broker, a patch switches the kinds it names and keeps the rest; null removes one kind and is trailed (54.319684ms)
ℹ tests 3
ℹ suites 0
ℹ pass 3
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 274.109423
@@ -0,0 +1,16 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/principal.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ principal binds kernel peer PID and uid, maps owner, and never takes identity or role from body (1.597129ms)
✔ user requires its own nonce and full walk plus immediate same-tree Console parent (0.446685ms)
✔ tester deliberately admits agent parents but rejects managed runs and another nonce (0.281855ms)
✔ human leaf identity is reread after walking the parents (0.158735ms)
✔ console requires its own wrapper, nonce and serve parent, and a configured owner from the spawn env (1.310643ms)
ℹ tests 5
ℹ suites 0
ℹ pass 5
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 61.161518
@@ -0,0 +1,19 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/process.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ broker process binds trusted launches, offers reader capabilities, refuses human mutation, closes cleanly (176.34163ms)
✔ startup token refusal returns safe code without value or partial listening broker (117.135133ms)
✔ loaded fixture token is absent from socket replies and SQLite, including refusal evidence (165.840622ms)
✔ killed broker leaves an explicit stale lock; another process cannot silently reclaim it (266.442758ms)
✔ trusted host registers later launches; socket clients never have a registration verb (167.486697ms)
✔ REQ-LIMIT-4 the broker process answers the launcher's mayLaunch op with the limits' awaited decision (158.123215ms)
✔ runtime excludes declared project roots even when host supplies no repoRoots (134.98126ms)
✔ a refused launch binding leaves the broker and existing capabilities alive; bad protocol stops it (160.164087ms)
ℹ tests 8
ℹ suites 0
ℹ pass 8
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 1399.583687
@@ -0,0 +1,13 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/processing-runtime.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ real runtime injects the coordinator, stops its workload and mirrors stable stop events across restart (177.61402ms)
✔ invalid state still starts the control bus and human halt then resume repairs it (70.885289ms)
ℹ tests 2
ℹ suites 0
ℹ pass 2
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 377.053675
@@ -0,0 +1,12 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/processing-timeout.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ processing halt and resume extend only the socket timeout while ordinary status retains the explicit timeout (183.251346ms)
ℹ tests 1
ℹ suites 0
ℹ pass 1
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 245.11661
@@ -0,0 +1,12 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/processing-web.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ a root halt aborts the active search-source signal before the normal web deadline (34.356084ms)
ℹ tests 1
ℹ suites 0
ℹ pass 1
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 110.065633
@@ -0,0 +1,25 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/processing.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ processing.halt refuses agent reader and tester before any transition (26.688109ms)
✔ processing.resume refuses agent reader and tester before any transition (18.052576ms)
✔ human halt and clear each have one event with verified actor; launch.restore cannot clear (19.981011ms)
✔ all ordinary work verbs refuse before dispatch while pure reads remain available (33.169443ms)
✔ task web authorization and bind paths refuse before external work (17.981298ms)
✔ recordEvent cannot forge processing.halt (12.885391ms)
✔ recordEvent cannot forge processing.resume (13.079871ms)
✔ recordEvent cannot forge processing.stop (12.184807ms)
✔ recordTask poll cannot forge a processing action through its kinds filter (12.683197ms)
✔ recordTask self cannot forge a processing action through its kinds filter (12.420363ms)
✔ spec read remains a read but cannot release new write work after an await (16.346502ms)
✔ the real socket awaits halt and resume beyond the ordinary idle deadline (55.104253ms)
✔ a malformed processing reader never silently admits agent work (17.84528ms)
✔ halt refuses the newly landed host executor path before credentials or effects (14.811212ms)
ℹ tests 14
ℹ suites 0
ℹ pass 14
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 365.550852
@@ -0,0 +1,15 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/project-await.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ D1: committed write with a failed receipt refuses outcome-unknown without action.allowed (29.428454ms)
✔ D2: spec.read refuses without content if its role is released during the read (15.624206ms)
✔ D3: spec.read secret check refuses flagged content without content (13.588254ms)
✔ D3: spec.read secret check refuses flagged subject without content (13.205698ms)
ℹ tests 4
ℹ suites 0
ℹ pass 4
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 151.450243
@@ -0,0 +1,19 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/project-files.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ a human lists, opens and saves; the save is one commit by the business human (132.105444ms)
✔ an agent and a reader refuse every file verb and nothing is written (48.207025ms)
✔ a stale base refuses stale-base and writes nothing (74.378502ms)
✔ paths outside the spec and docs refuse, as do unknown projects, missing files and odd arguments (63.254446ms)
✔ without a project adapter the file verbs refuse project-not-configured (28.927136ms)
✔ on the socket a save may carry 1 MiB of text; every other request keeps the 64 KiB limit (254.632578ms)
✔ a request that names the save verb first and another verb last is refused at 64 KiB (63.401327ms)
✔ two saves racing for one repository make one commit (141.008168ms)
ℹ tests 8
ℹ suites 0
ℹ pass 8
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 892.633687
@@ -0,0 +1,14 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/project-runtime.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ Broker keeps the sandbox client import closure: only the listed imports, no lazy project import (1.932022ms)
✔ without a trusted project adapter all three async paths refuse project-not-configured (51.548381ms)
✔ real startBroker injects the project adapter for socket reads and bound-author record writes (207.73414ms)
ℹ tests 3
ℹ suites 0
ℹ pass 3
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 380.527542
@@ -0,0 +1,24 @@
command: ["node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/publish.test.mjs"]
TMPDIR: /mnt/storage/scratch/tmp/oEntjx
launch nice: 19
✔ a raise with no recorded push refuses no-push; a raise binds the latest push and shows it (41.555988ms)
✔ happy path: the fork is the upstream repo under the agent's own user, the destination is host-built (24.331189ms)
✔ a hard wait: no decision refuses, and a decision for another task refuses (23.035101ms)
✔ r4 B4: approve while the latest push is A, push B, publish refuses decision-mismatch (48.316791ms)
✔ grant and fork refusals (45.720037ms)
✔ remote-not-fork, compared without case, and remote-host-mismatch, at push (87.581486ms)
✔ two agents granted one project each get their own fork (42.93137ms)
✔ the request cannot name the fork, the user or the destination (20.753ms)
✔ one decision, one open publish: a second ticket refuses publish-busy, whatever its branch (49.437518ms)
✔ publishRefused files the code on the task's trail and drops the ticket (24.313389ms)
✔ git.push.remote is in neither ROUTED list and no shipped role grants it (0.86571ms)
✔ runtime: withGitea keys from the open ticket only, and the store root is the organization dir (104.414086ms)
✔ the bus process answers the publish ops from their own lines, not launch-op-refused (174.395717ms)
ℹ tests 13
ℹ suites 0
ℹ pass 13
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 767.321648
Loaded 100 of 314 files, more files were not shown because too many files have changed in this diff. Show more