Compare commits
4
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
86cb5c221d | ||
|
|
5f2ef9647d | ||
|
|
7f68eb4044 | ||
|
|
9edf45003d |
No files matched your search
@@ -5566,3 +5566,11 @@ claim. Receipts and limitations in agents/lena/work/queue-296/BUILD.md and run-r
|
||||
2026-10-24 | Fethry | Row328 sage4205 stress stopped at required no-reproduction boundary. M1-50 passed50/50; fallbackM1-1 passed50/50, zero library-sync-busy assertions, no skips/cancels. Fixed50 and whole-file NOT RUN. Absolute19 initial priority then host drift recorded. All100 fresh shell gXXX TMPDIRs29bytes; both mutants restore exact test hash and empty diff/stat+porcelain. No test/assertion/product changes. Receipts/nice/load/plain-text BUILD pushed; slot returned fethry0043. Await Sage/Mos ruling; no in-review/acceptance claim.
|
||||
|
||||
2026-10-24 | Fethry | Row328 sage4214/Mos1599 option A GREEN on06c57a7db:8x50 M1-50 produced374 passes/26 expected library-sync-busy assertion failures, exact restore/full diff+porcelain clean, same8x50 fixed400/400, whole library-credential6/6, no skips/cancels or unexpected errors/reruns. Node nice16/19 observed after absolute19; loads and801 receipts retained. Old test staysapproved+4/-3, assertions/product unchanged. Own process sweep empty. Evidence push/slot return and owner review move next; Boyd/Dewey then Sage full bus/scripts gate pending.
|
||||
|
||||
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.
|
||||
|
||||
2026-10-24 — Magica row329 round2 (#1827): Boyd B1 tightens management keys to printable non-space ASCII before init creates state; new whole-tree refusal cases first reproduced the defect. Header check retained, no old assertions edited. N1 outer Docker count correction, N3 stale-lock recovery and N4 34-code coverage docs included. Cleared dependency-reader gate running; two stand-in over-selections disclosed and removed from the plan per sage-4277, F7 cause unknown. Evidence agents/magica/work/queue-329/BUILD.md.
|
||||
|
||||
2026-10-24 — Magica row329 R2 (#1827): B1 ASCII-only management key fix verified with complete-tree refusals and positive auth control; package66/66,30bus readers261/261,49CLI readers726/726,config55/55, no required skip/failure. N1 corrects R1 bus total to1019; N3 stale-lock guidance and N4 34-code inventory corrected. Two over-selected file runs are recorded separately, with no F7 inference; cause unknown/Vikunja625. Old502 test/helper files byte-identical, slot returned to Sage. Evidence agents/magica/work/queue-329/BUILD.md.
|
||||
@@ -0,0 +1,770 @@
|
||||
# Row 329 P1 model proxy — Magica
|
||||
|
||||
Base: 7fe32d722637418268c763fac9220827e9a1d812; branch magica/row329.
|
||||
Authority: sage-4229; P1 brief at docs/plans/2026-10-24_model-proxy-rows.md,
|
||||
mos-1600 and mos-1601. The brief overrides the design. Boyd first review,
|
||||
Dewey landing review. No live proxy/config/key reads or changes.
|
||||
|
||||
## Plan and boundaries
|
||||
|
||||
1. Measure the latest GitHub release assets and run the pinned binary and panel
|
||||
against stand-ins under unshare -rn. Send sub-path/sandbox answers to Sage
|
||||
immediately, including failures; no unsandboxed Console implementation.
|
||||
2. Build packages/model-proxy: pinned verified fetch, strict settings validation,
|
||||
exclusive initialization/template, loopback-only management client, verified
|
||||
unit runner. Keep network injection in tests local and unavailable in CLI.
|
||||
3. Wire proxy.json loading beside config.json; wire the human-only CLI and
|
||||
path-bound bus transport; render proxy unit and conditional bus dependencies.
|
||||
4. Add tests for each refusal code and acceptance conditions. Ask Sage for CLEAR
|
||||
before any test run; fresh short TMPDIR, absolute nice 19, own dependencies.
|
||||
5. Run the approved gate, record counts/refusals, prepare review receipts.
|
||||
Commit only after applicable checks pass; no push/queue review until authorized.
|
||||
|
||||
No config.json writes. Proxy.json and initial secret/config use exclusive create.
|
||||
No host proxy or real instance reads, stats, probes or calls. Acceptance differs
|
||||
from row96's wrapper: no host guard introspection at all. Every runtime file is
|
||||
under a fresh shell mktemp -d /mnt/storage/scratch/tmp/XXXXXX.
|
||||
|
||||
## Start receipts
|
||||
|
||||
New worktree /home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329.
|
||||
queue next magica identified row329 (view-unknown warning reported by queue).
|
||||
Requested queue start refused exit4: unknown verb start. Sage notified magica-0017;
|
||||
no substitute queue mutation performed pending lead correction.
|
||||
GitHub latest release redirects: CLIProxyAPI v8.0.42, panel v1.26.7.
|
||||
Download hashes in download-sha256.txt (release bytes measured immediately).
|
||||
Acceptance pending; these are candidates, not yet a passing PIN.
|
||||
|
||||
## Acceptance findings (first complete probe)
|
||||
|
||||
Measured CLIProxyAPI 8.0.42, not row96's 8.0.27; panel 1.26.7.
|
||||
Both latest release tags were discovered through github.com/releases/latest
|
||||
redirects, then explicit release asset URLs were fetched. No GitHub API token,
|
||||
source clone, package registry or other external service used.
|
||||
|
||||
- Empty access.api-keys opens /v1/models to a request with no key (200).
|
||||
Sentinel is mandatory; P2 must refuse when it is missing.
|
||||
- GET /v1/models with fixture client key returned 200, upstream call delta 0.
|
||||
- Wrong key: 401 body {"error":"Invalid API key"}; missing key: 401 body
|
||||
{"error":"Missing API key"}. A removed client key with a sentinel remaining
|
||||
gets the same wrong-key refusal. No response-shape transformation.
|
||||
- Claude Code with wrong and revoked fixture keys each timed out at45s,
|
||||
rc124, empty stdout/stderr. This records the observation only; it does not
|
||||
establish the response body as the cause.
|
||||
- v8 api-key list is an array of strings. A PUT of per-key model objects is
|
||||
refused (400), so no per-client-key model restriction through this API.
|
||||
- Panel's default API base ignores /proxy. With Custom Connection URL set to
|
||||
http://127.0.0.1:<forward>/proxy, prefix strip works; management/model requests
|
||||
stay under /proxy. Plain-mode dashboard signs in and displays state.
|
||||
- With CSP sandbox allow-scripts allow-forms, no allow-same-origin, localStorage
|
||||
throws SecurityError in migratePlaintextKeys/restoreSession. Login fails with
|
||||
no management request. This is P4's stop condition, sent to Sage as magica-0018
|
||||
and0019. P1 ships no Console forward and proposes no sandbox weakening.
|
||||
- OAuth starts produce Claude redirect_uri http://localhost:54545/callback and
|
||||
Codex http://localhost:1455/auth/callback, not a /proxy/ URL. No external OAuth
|
||||
URL was followed. CLI login fallback in Jason's own shell is recorded below
|
||||
after checking the pinned binary's help.
|
||||
|
||||
Plain text complete output is acceptance-probe-3.txt (all runtime paths under
|
||||
fresh /mnt/storage/scratch/tmp, nice19). acceptance-probe-1/2 preserve the
|
||||
initial baseline and corrected prefix-only forward. T3 preview status/open
|
||||
explicitly reported no automation host; headless Chromium ran inside unshare
|
||||
instead. No live proxy introspection from row96's wrapper was reused.
|
||||
|
||||
## Implementation choices
|
||||
|
||||
JSON is used as YAML-compatible initial config to avoid interpolation of key
|
||||
values. Model catalog uses -local-model at unit start. Pinned panel is supplied
|
||||
via MANAGEMENT_STATIC_PATH. Init holds an exclusive per-config lock and a
|
||||
loopback port reservation while creating files. Reentry refuses, no secret is
|
||||
returned. The source definition of proxy is strictly proxy.json; config.json
|
||||
schema and bytes remain unchanged. New tests were written before source; their
|
||||
first execution waits for Sage's slot CLEAR, which overrides normal per-step
|
||||
TDD timing. No tests have run as of this entry.
|
||||
|
||||
### Acceptance correction (probe4; append-only clarification)
|
||||
|
||||
Probe3's immediate revoked-key request was 200, not401; its per-key-object PUT
|
||||
was422, not400. The earlier summary above overstated both. Probe4 measures the
|
||||
propagation explicitly: after PUT([sentinel]) the removed key got200 then401 at
|
||||
105ms (100ms poll). A later request is401 {"error":"Invalid API key"}. GET list
|
||||
alone is not proof of enforcement at that instant. Sent to Sage as magica-0020
|
||||
for P2. Empty-list200 and initial wrong/missing401 observations stand.
|
||||
|
||||
The sandbox's explicit fetch issues OPTIONS with Origin:null and no SameSite=Lax
|
||||
cookie, then fails. This is an additional obstacle beyond the panel's own
|
||||
storage failure; it does not weaken the P4 stop condition. Through the prefix
|
||||
forward, /proxy/callback with a dummy code gives400 and
|
||||
/proxy/auth/callback gives404. The OAuth start URLs advertise the separate
|
||||
localhost54545/1455 listeners. This acceptance does not complete external OAuth
|
||||
or claim the forwarded400 is a completed Claude login.
|
||||
|
||||
Sage-4233 corrected queue start to queue move329 in-progress using the same op.
|
||||
The authorized move is running without a timeout. Row328 holds the test slot;
|
||||
all test execution remains paused. Sage requires rebase onto5e77cdd09 before
|
||||
the builder gate; static rebase will preserve these worktree changes.
|
||||
|
||||
## Rebase receipt
|
||||
|
||||
Before any test run, saved all tracked/untracked row329 changes to a dedicated
|
||||
Git stash, rebased the empty branch onto5e77cdd09, reapplied and dropped only that
|
||||
stash. Git auto-merged broker.mjs and runtime.mjs; no conflict or source was
|
||||
lost. Base is now5e77cdd09. No row329 commit yet (applicable tests await CLEAR).
|
||||
Queue receipt: ok magica-329-start-0001 rev4014 row329 briefed->in-progress.
|
||||
|
||||
The bus constructs the management client only after Store's per-data-root writer
|
||||
lock is held. Its private key never enters process IPC, a CLI return, a broker
|
||||
answer or a session. P2 may consume runtime.modelProxy inside the bus. Init's
|
||||
returned contract is only port/binary. Without proxy.json existing boot options
|
||||
and unit renders retain the base behavior.
|
||||
|
||||
The original probe1 source is retained as acceptance-probe-1.mjs, matching the
|
||||
initial baseline tool invocation; the current acceptance.mjs includes the
|
||||
explicit sub-path interaction, enforcement-timing and Claude Code follow-ups.
|
||||
Probe1's output remains unchanged. This preserves Sage-4233's stop evidence.
|
||||
|
||||
Static syntax checks (node --check on new package source/tests, new CLI/bus files,
|
||||
touched bus source and loader; bash -n on wrapper/unit/instance scripts) passed.
|
||||
These are syntax-only, no module execution or test run. No npm has run yet.
|
||||
|
||||
## Final acceptance plain-text output
|
||||
|
||||
The command was `bash agents/magica/work/queue-329/acceptance.sh <download-root>`;
|
||||
wrapper fresh TMPDIR and unshare-rn; no test slot used. Actual output follows.
|
||||
|
||||
```text
|
||||
P1 isolated acceptance root /mnt/storage/scratch/tmp/3mOycq nice 19
|
||||
binary sha256 74661f8cf949977870231359e8bf4344e07946766a673c08fa25a3e5f72fc95e
|
||||
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
|
||||
initial key list {"status":200,"body":"[\"p1-client\"]"}
|
||||
set empty {"status":200,"body":"{\"config-version\":8,\"status\":\"ok\"}"}
|
||||
empty list settled {"elapsedMs":3,"statuses":[200],"body":"[models]"}
|
||||
empty list missing key status 200
|
||||
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":103,"statuses":[200,401],"body":"{\"error\":\"Invalid API key\"}"}
|
||||
revoked key models {"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\":\"778dec0d73991fed459dc3fdbdd2c6ae\",\"status\":\"ok\",\"url\":\"https://claude.ai/oauth/authorize?client_id=9d1c250a-e61b-44d9-88ed-5944d1962f5e\\u0026code=true\\u0026code_challenge=0K5PIZjU0CLqYa5fwIBFgBU3UsyX9pcOh_FQMCKAaKI\\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=778dec0d73991fed459dc3fdbdd2c6ae\"}"}
|
||||
oauth start codex {"status":200,"body":"{\"state\":\"4855489df4fa7e17b77d780492a4225e\",\"status\":\"ok\",\"url\":\"https://auth.openai.com/oauth/authorize?client_id=app_EMoamEEZ73f0CkXaXp7hrann\\u0026code_challenge=dHQyyXv-Wf89z_v1sy1ts4cnFwrKNBHw2BphTLjBBd4\\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=4855489df4fa7e17b77d780492a4225e\"}"}
|
||||
panel plain initial {"result":{"type":"object","value":{"text":"CLI\nPROXY\nAPI\nCLI Proxy API Management Center\nEnglish\nConnect to CLI Proxy API v8 or later\nCurrent URL\nhttp://127.0.0.1:18319\nThe system will automatically use the current URL for connection\nCustom Connection URL:\nManagement Key:\nRemember password\nLogin","inputs":[{"type":"checkbox","placeholder":"","value":"on"},{"type":"password","placeholder":"Enter the management key","value":""},{"type":"checkbox","placeholder":"","value":"on"}],"buttons":["English","","Login"]}}}
|
||||
panel plain storage {"result":{"type":"object","value":{"available":true}}}
|
||||
panel plain login interaction {"result":{"type":"object","value":[{"type":"checkbox","value":"on"},{"type":"text","value":"http://127.0.0.1:18319/proxy"},{"type":"password","value":"[fixture]"},{"type":"checkbox","value":"on"}]}}
|
||||
panel plain after login {"result":{"type":"string","value":"Success:\nConnected\nCPAMC\nCLI Proxy API Console\nOPERATE\nDashboard\nQuick Start\nGATEWAY\nAI Providers\nAuth Files\nAuthentication files: 0\nOAuth Login\nOBSERVE\nQuota Management\nLogs Viewer\nCONTROL\nConfig Panel\nPlugins\nPlugin Store\nManagement Center Info\nQuiet for now.\n\nv8.0.42 · Connected\n\nManage providers\nInspect logs\n→\nREQUESTS HANDLED\nLIVE\n0\nRolling 3h 20m window · 10-minute buckets\nSuccess\n0\nFailure\n0\nSuccess rate\n—\nAcross 0 requests in the window\nCredentials\n0\n0 active · 0 not serving\nProvider keys\n1\nAPI keys configured across all brands\nModels\n19\nServed through the proxy endpoint\nLIVE TRAFFIC\nThroughput, ten minutes at a time\n\nSuccess and failure counts per 10-minute bucket across the last 3h 20m. Hover a column for its exact split.\n\nSuccess\n0\nFailure\n0\n4\n3\n2\n1\n0\n\nNo requests\n\n11:10\n12:40\n14:20\nData table\nFLEET\nEvery provider, side by side\n\nVolume and success rate per provider over the same window.\n\n01\nClaude\nCredentials: 1\n0\nrequests\n—\nHEALTH\nCredential status\n\nNo credential files found.\n\nRUNTIME\nConfiguration at a glance\nRouting strategy\nfill-first (prioritize)\nRequest retry\n0\nManagement keys\n1\nServer version\n8.0.42\nBuild date\n10/24/2026\nUpstream proxy\n—\nDebug\nNo\nFile logging\nYes\nRequest log\nNo\nWebSocket auth\nYes\nModel prefix\nNo\nEdit configuration →\nNEXT\nWhere to go from here\nAI Providers\nAdd API keys, set priorities, and test brands.\n→\nAuth Files\nUpload, refresh, and disable OAuth credentials.\n→\nConfig Panel\nTune routing, retries, logging, and access.\n→\nQuota Management\nCheck remaining quota per credential.\n→\nLogs Viewer\nTail requests and download error reports.\n→\nManagement Center Info\nVersion details and management center info.\n→"}}
|
||||
panel plain requests [{"method":"GET","path":"/proxy/management.html","origin":null,"cookie":false},{"method":"GET","path":"/proxy/v8/management/config","origin":null,"cookie":true},{"method":"GET","path":"/proxy/v1/models","origin":null,"cookie":true},{"method":"GET","path":"/proxy/v8/management/observability/usage/api-keys","origin":null,"cookie":true},{"method":"GET","path":"/proxy/v8/management/credentials","origin":null,"cookie":true},{"method":"GET","path":"/proxy/v8/management/plugins","origin":null,"cookie":true},{"method":"GET","path":"/proxy/v8/management/credentials","origin":null,"cookie":true}]
|
||||
panel plain exceptions []
|
||||
panel sandbox initial {"result":{"type":"object","value":{"text":"CLI\nPROXY\nAPI\nCLI Proxy API Management Center\nEnglish\nConnect to CLI Proxy API v8 or later\nCurrent URL\nhttp://127.0.0.1:18319\nThe system will automatically use the current URL for connection\nCustom Connection URL:\nManagement Key:\nRemember password\nLogin","inputs":[{"type":"checkbox","placeholder":"","value":"on"},{"type":"password","placeholder":"Enter the management key","value":""},{"type":"checkbox","placeholder":"","value":"on"}],"buttons":["English","","Login"]}}}
|
||||
panel sandbox storage {"result":{"type":"object","value":{"error":"SecurityError","message":"Failed to read the 'localStorage' property from 'Window': The document is sandboxed and lacks the 'allow-same-origin' flag."}}}
|
||||
panel sandbox login interaction {"result":{"type":"object","value":[{"type":"checkbox","value":"on"},{"type":"text","value":"http://127.0.0.1:18319/proxy"},{"type":"password","value":"[fixture]"},{"type":"checkbox","value":"on"}]}}
|
||||
panel sandbox after login {"result":{"type":"string","value":"Error:\nLogin failed: Connection failed, please check the server address, Management API, and management key\nCLI\nPROXY\nAPI\nCLI Proxy API Management Center\nEnglish\nConnect to CLI Proxy API v8 or later\nCurrent URL\nhttp://127.0.0.1:18319/proxy\nThe system will automatically use the current URL for connection\nCustom Connection URL:\nCustom Connection URL:\nBy default the current URL is used. Override it here if needed.\nManagement Key:\nRemember password\nLogin\nConnection failed, please check the server address, Management API, and management key"}}
|
||||
panel sandbox requests [{"method":"GET","path":"/proxy/management.html","origin":null,"cookie":true}]
|
||||
panel sandbox exceptions ["Uncaught (in promise) SecurityError: Failed to read the 'localStorage' property from 'Window': The document is sandboxed and lacks the 'allow-same-origin' flag.\n at Array.forEach (<anonymous>)\n at Object.migratePlaintextKeys (http://127.0.0.1:18319/proxy/management.html:20:667941)\n at http://127.0.0.1:18319/proxy/management.html:28:32103\n at restoreSession (http://127.0.0.1:18319/proxy/management.html:28:32640)\n at http://127.0.0.1:18319/proxy/management.html:28:38065\n at http://127.0.0.1:18319/proxy/management.html:28:38198\n at Uc (http://127.0.0.1:18319/proxy/management.html:16:92011)\n at kl (http://127.0.0.1:18319/proxy/management.html:16:107191)\n at Ol (http://127.0.0.1:18319/proxy/management.html:16:107075)\n at kl (http://127.0.0.1:18319/proxy/management.html:16:107956)"]
|
||||
sandbox explicit null-origin fetch {"result":{"type":"object","value":{"error":"TypeError","message":"Failed to fetch"}}}
|
||||
sandbox explicit requests [{"method":"GET","path":"/proxy/management.html","origin":null,"cookie":true},{"method":"OPTIONS","path":"/proxy/v8/management/config/access/api-keys","origin":"null","cookie":false}]
|
||||
forward callback /proxy/callback?code=fixture 400
|
||||
forward callback /proxy/auth/callback?code=fixture 404
|
||||
Claude Code wrong/revoked key wrong {"code":124,"signal":null} output ""
|
||||
```
|
||||
|
||||
The pinned help confirms `-claude-login`, `-codex-login`, `-no-browser`.
|
||||
For Jason alone, in his own shell at cutover:
|
||||
|
||||
```text
|
||||
<proxy.binary> -config <dataRoot>/proxy/config.yaml -claude-login -no-browser
|
||||
<proxy.binary> -config <dataRoot>/proxy/config.yaml -codex-login -no-browser
|
||||
```
|
||||
|
||||
Neither command was run here. External OAuth completion remains unmeasured.
|
||||
The latest release8.0.42 passed the stand-in questions with the recorded negative
|
||||
panel-sandbox and revocation-lag answers; PIN selects8.0.42, not8.0.27.
|
||||
|
||||
Final acceptance completed rc0. The captured output above was copied just before
|
||||
its last child finished; the remaining final lines are:
|
||||
|
||||
```text
|
||||
Claude Code wrong/revoked key p1-revoked {"code":124,"signal":null} output ""
|
||||
acceptance probes complete
|
||||
```
|
||||
|
||||
Final acceptance also confirms /management.html returns200 with the exact panel
|
||||
SHA256 from PIN when MANAGEMENT_STATIC_PATH points at the pinned static directory.
|
||||
All runtime files remain in the fresh acceptance root; no binaries are in Git.
|
||||
|
||||
## Planned builder gate (awaiting CLEAR)
|
||||
|
||||
Own offline npm ci --ignore-scripts --no-audit --no-fund at root and packages/webui
|
||||
(no registry network; only the authorized pinned GitHub fetch used network).
|
||||
New model-proxy package whole; bus and CLI suites whole because their trusted
|
||||
transport/boot code changes; scripts/test-config.sh. Every test file is run
|
||||
whole, serialized, with a fresh shell mktemp short TMPDIR and absolute nice19.
|
||||
Every scripts/test-*.sh invocation uses timeout-k10. Stop on any old test red
|
||||
before rerun, even if likely timing. Refusal inventory is refusal-inventory.txt.
|
||||
The landing gate still belongs to Sage and covers every package but queue and
|
||||
every scripts/test-*.sh.
|
||||
|
||||
No old test has been edited. New tests are only model-proxy/tests/* and
|
||||
bus/tests/model-proxy.test.mjs and cli/tests/model-proxy.test.mjs.
|
||||
|
||||
Static closure scan found two integration requirements before testing:
|
||||
- stack-copy.sh now includes model-proxy/src and PIN, since CLI/runtime import
|
||||
them. No new scripts are added to COPY_PATHS, preserving the pinned-copy
|
||||
scripts-list assertion. The proxy unit renderer accepts the same optional
|
||||
--copy/--copies concept as bus-service, and its runner then comes from that copy.
|
||||
- historical stack-release fixture copies intentionally hold the current loader
|
||||
without every current package. The loader imports model-proxy only if an
|
||||
actual sidecar lstat succeeds. Absence needs no new dependency; malformed,
|
||||
broken-symlink or unreadable present sidecar still refuses. New regression
|
||||
covers this using a scratch historical loader with no model-proxy package.
|
||||
No old fixture or assertion was edited for either requirement.
|
||||
|
||||
The builder gate includes webui/tests/pinned-copy.test.mjs whole for the
|
||||
stack-copy closure change, and test-federation-acceptance.sh for the CLI suite's
|
||||
listed script-only skip. No webui full-suite run is requested by P1; Sage's
|
||||
landing gate covers it. Gate driver is gate.py, inert until invoked after CLEAR.
|
||||
It forces npm offline throughout, per-child nice19, per-command timeout-k10,
|
||||
records rc/nice/elapsed/log and stops on any red. Its first invocation has not
|
||||
occurred. Initial development runs will be the new files only; a new-file failure
|
||||
is placed/fixed in its new source, never by weakening an old assertion.
|
||||
|
||||
The management client uses node:http to the fixed numeric127.0.0.1 address,
|
||||
not an ambient fetch dispatcher; HTTP_PROXY or a global fetch override cannot
|
||||
redirect its Authorization header. A new regression replaces global fetch with
|
||||
a throwing function while the real local management exchange remains successful.
|
||||
The downloader's separate manual redirect handling enforces GitHub release hosts.
|
||||
|
||||
Static pre-gate review complete; source/test syntax and git diff--check clean.
|
||||
Key validation includes HTTP Authorization-header validity before initial files
|
||||
are created, so a key the HTTP client cannot send never leaves partial init state.
|
||||
This adds no new refusal code (proxy-key-invalid / proxy-client-invalid).
|
||||
All34 covered refusal codes (30 proxy-prefixed and4 reused bus codes) have named coverage in new tests; execution was pending at this entry.
|
||||
No old tests changed; no npm/test runs; no commit/push yet. At this point the
|
||||
remaining work is the slot-gated execution and any justified fixes/review handoff.
|
||||
|
||||
## Gate authorization and final-base rebase
|
||||
|
||||
Sage-4240 CLEAR at19:40:22Z: whole model-proxy, bus and CLI suites,
|
||||
webui pinned-copy, test-config.sh and federation acceptance. Rebase onto8bb5b3c73
|
||||
first; row328 changed bus/tests/library-credential.test.mjs. WIP commit explicitly
|
||||
authorized for this preservation/rebase despite the ordinary green-before-commit
|
||||
rule. No stash used for this rebase. Earlier stash had already been auto-dropped
|
||||
by stash pop: subject On magica/row329: magica-row329-rebase-static, object
|
||||
4e0e3137ef17453ddbbcb8a472b20906d1435eb4. Sage notified magica-0022; no other
|
||||
stash touched and no subsequent stash operations.
|
||||
|
||||
Mos-1602: the /proxy/ panel forward remains pending P4/Jason's subdomain decision
|
||||
(Vikunja624). The acceptance baseline only demonstrates explicit prefix routing
|
||||
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.
|
||||
|
||||
## Final receipt whitespace normalization
|
||||
|
||||
The final code/receipt commit passed LOG_OK, FF_OK, NO_BINARY, SECRETS_CLEAN,
|
||||
NO_ATTRIBUTION and PUSH_READY. A separate full-range diff check identified
|
||||
trailing whitespace in the original-red copy, new-unit expected-red copy and
|
||||
static reader inventory. Those three committed text copies now have trailing
|
||||
spaces/tabs stripped only; no content, code or assertion changed. Exact raw
|
||||
bytes were preserved first under /mnt/storage/scratch/tmp/rDZk8i, with a raw MANIFEST.sha256.
|
||||
The earlier recorded original-red hash refers to those raw bytes; the candidate
|
||||
manifest identifies the normalized review copies. Raw hashes:
|
||||
|
||||
```text
|
||||
6c528c893f55f259d7bfef319814ed0dd6f8b5437c2e9fdf4966b33b834e8f50 gate/cli-case1-accept.test.txt
|
||||
40904a9a2b69b15b61e09aa9f1fa5ea79d63e17cd888c532eae19d1679a40d9c gate/unit-custom-config-red.txt
|
||||
e7fa0ff14ca8087fa1733a69e932169099e3a16e5077557ee836f7aa354bc9fb readers.txt
|
||||
```
|
||||
|
||||
This metadata-only correction needs no suite rerun. Panel acceptance records
|
||||
and every product/test source remain unchanged. The final manifest is regenerated
|
||||
after this correction, and final push checks run against the resulting tip.
|
||||
|
||||
## Round2: B1, N1 and Dewey documentation notes
|
||||
|
||||
Sage-4274/4276 authorizes only printable non-space ASCII with retained header
|
||||
validation, full-tree refusal evidence, ASCII control, corrected counts and safe
|
||||
stale-lock docs. Dewey round1 approval does not remove Boyd B1; round2 is required.
|
||||
No bind experiment (P7), fetch human guard (out of scope), PIN/fetch or D6 change.
|
||||
|
||||
Move first: initial attempt refused Dewey review-record lock. Retried the exact
|
||||
same op without unlock/timeout; magica-329-r2-start-0001 succeeded rev4031,
|
||||
in-review to in-progress. No product/test edit preceded the successful move.
|
||||
|
||||
New file management-key-encoding.test.mjs exercised initializeProxy against
|
||||
installed fixtures with whole config/data inventories (all paths, types, inode/
|
||||
device identity, modes, owner/group, mtime/ctime and file sizes/SHA256; atime
|
||||
excluded because observing files can change it). Each invalid case asserts the
|
||||
named proxy-key-invalid refusal and complete inventory equality. Latin-1, leading,
|
||||
trailing and internal-space cases each have their own test. ASCII control verifies
|
||||
existing files and expected new paths, then authenticates through real loopback
|
||||
HTTP with ManagementClient. Every supplied key is under24characters.
|
||||
|
||||
Before source fix, whole new file:1positive pass,4expected refusal/inventory
|
||||
failures,0skip/cancel (gate-r2/B1-red.txt). Then common.mjs alone changed the
|
||||
acceptance predicate to /^[\x21-\x7e]{1,4096}$/; header validation remains.
|
||||
|
||||
N1: final-counts.py now selects the last/outer summary for every count. Existing
|
||||
Docker log remains unchanged; its outer2/2 replaces nested1/1, correcting the
|
||||
round1 bus sum to1019/1019. No Docker rerun for this documentation correction.
|
||||
N4: coverage is34codes =30proxy-prefixed +4reused bus codes; B1 adds cases under
|
||||
existing proxy-key-invalid, so adds0new code names. refusal-inventory.txt lists
|
||||
all34 explicitly. N3: README gives the human-only stale-lock preconditions and
|
||||
removal command, retaining partial/completed state and failing closed if unsure.
|
||||
|
||||
R2 reader selection (same settings, whole files only) follows actual runtime,
|
||||
CLI/main/config/host and loader imports/reads, including joined/full paths and
|
||||
stack-release helper consumers; literal stand-in WebUI CLI paths do not qualify.
|
||||
Full matching lines are r2-readers.txt. Selected81files:
|
||||
|
||||
```text
|
||||
packages/bus/tests/access-revoke.test.mjs
|
||||
packages/bus/tests/chief-of-staff.test.mjs
|
||||
packages/bus/tests/citation-runtime.test.mjs
|
||||
packages/bus/tests/creative.test.mjs
|
||||
packages/bus/tests/credential-verbs.test.mjs
|
||||
packages/bus/tests/daily-quota-runtime.test.mjs
|
||||
packages/bus/tests/grant-scope-runtime.test.mjs
|
||||
packages/bus/tests/host-run.test.mjs
|
||||
packages/bus/tests/instances-verb.test.mjs
|
||||
packages/bus/tests/library-credential.test.mjs
|
||||
packages/bus/tests/library-lookups.test.mjs
|
||||
packages/bus/tests/library-sync.test.mjs
|
||||
packages/bus/tests/library.test.mjs
|
||||
packages/bus/tests/lifecycle-revoke.test.mjs
|
||||
packages/bus/tests/lifecycle-verbs.test.mjs
|
||||
packages/bus/tests/limit-checks.test.mjs
|
||||
packages/bus/tests/limits-runtime.test.mjs
|
||||
packages/bus/tests/limits.test.mjs
|
||||
packages/bus/tests/model-proxy.test.mjs
|
||||
packages/bus/tests/plugins-verb.test.mjs
|
||||
packages/bus/tests/processing-runtime.test.mjs
|
||||
packages/bus/tests/project-runtime.test.mjs
|
||||
packages/bus/tests/publish.test.mjs
|
||||
packages/bus/tests/reload.test.mjs
|
||||
packages/bus/tests/routes-verb.test.mjs
|
||||
packages/bus/tests/tasks.test.mjs
|
||||
packages/bus/tests/tester-writes.test.mjs
|
||||
packages/bus/tests/tester.test.mjs
|
||||
packages/bus/tests/usage-runtime.test.mjs
|
||||
packages/bus/tests/web.test.mjs
|
||||
packages/cli/tests/access-boot.test.mjs
|
||||
packages/cli/tests/access.test.mjs
|
||||
packages/cli/tests/app.test.mjs
|
||||
packages/cli/tests/boot-status.test.mjs
|
||||
packages/cli/tests/case1-accept.test.mjs
|
||||
packages/cli/tests/case2-unit.test.mjs
|
||||
packages/cli/tests/channel-cli.test.mjs
|
||||
packages/cli/tests/cli.test.mjs
|
||||
packages/cli/tests/compactions-launch.test.mjs
|
||||
packages/cli/tests/config.test.mjs
|
||||
packages/cli/tests/credentials.test.mjs
|
||||
packages/cli/tests/federation-acceptance.test.mjs
|
||||
packages/cli/tests/follow.test.mjs
|
||||
packages/cli/tests/git-socket.test.mjs
|
||||
packages/cli/tests/grants-scope.test.mjs
|
||||
packages/cli/tests/grants.test.mjs
|
||||
packages/cli/tests/host.test.mjs
|
||||
packages/cli/tests/hosts.test.mjs
|
||||
packages/cli/tests/idle-stop-race.test.mjs
|
||||
packages/cli/tests/instances.test.mjs
|
||||
packages/cli/tests/launcher.test.mjs
|
||||
packages/cli/tests/lifecycle.test.mjs
|
||||
packages/cli/tests/limits-tokens.test.mjs
|
||||
packages/cli/tests/limits.test.mjs
|
||||
packages/cli/tests/mark-read.test.mjs
|
||||
packages/cli/tests/model-proxy.test.mjs
|
||||
packages/cli/tests/names.test.mjs
|
||||
packages/cli/tests/optional-tracker.test.mjs
|
||||
packages/cli/tests/other-tree.test.mjs
|
||||
packages/cli/tests/processing-cli.test.mjs
|
||||
packages/cli/tests/project-name-repo.test.mjs
|
||||
packages/cli/tests/project.test.mjs
|
||||
packages/cli/tests/publish-socket.test.mjs
|
||||
packages/cli/tests/revoke-window.test.mjs
|
||||
packages/cli/tests/session-clear.test.mjs
|
||||
packages/cli/tests/session-cli.test.mjs
|
||||
packages/cli/tests/session-launch.test.mjs
|
||||
packages/cli/tests/stack-copy.test.mjs
|
||||
packages/cli/tests/stack-instances.test.mjs
|
||||
packages/cli/tests/stack-release-external.test.mjs
|
||||
packages/cli/tests/stack-release.test.mjs
|
||||
packages/cli/tests/stack-upgrade.test.mjs
|
||||
packages/cli/tests/tester-reads.test.mjs
|
||||
packages/cli/tests/tester-threads.test.mjs
|
||||
packages/cli/tests/tester.test.mjs
|
||||
packages/cli/tests/thread-cli.test.mjs
|
||||
packages/cli/tests/thread-launch.test.mjs
|
||||
packages/cli/tests/thread-revoke.test.mjs
|
||||
packages/cli/tests/trackers-boot.test.mjs
|
||||
packages/cli/tests/usage.test.mjs
|
||||
packages/cli/tests/verbs.test.mjs
|
||||
```
|
||||
|
||||
### Reader-selector correction during R2
|
||||
|
||||
The81-file list itself was explicit, but its exclusion prose was wrong: a full
|
||||
CLI/config-path match also selected case1-accept and case2-unit fixture writes.
|
||||
case1-accept ran once and passed53/53 in247.863s; case2-unit was already running
|
||||
when identified. This is over-selection, not a new F7 diagnostic or a cause
|
||||
finding. No old test/source/assertion changed. The two stand-in false positives
|
||||
are marked in r2-readers.txt; their actual receipts remain in the execution
|
||||
inventory. Sage notified magica-0031. No repeat of either is planned.
|
||||
|
||||
Sage-4277: let the already-running case2-unit finish to avoid orphaning its
|
||||
children, then no more stand-in false positives. It completed {'tests': 47, 'pass': 47, 'fail': 0, 'skipped': 0, 'cancelled': 0} in71.829s, rc0.
|
||||
The remainder of the81-file list is explicitly cleared. The execution snapshot
|
||||
is r2-reader-files.executed.json; the current planned list r2-reader-files.json
|
||||
drops those two and has79files. Neither will be repeated.
|
||||
|
||||
Exact Case1 fact: R2 case1-accept53/53 in247.863s, through over-selection, not
|
||||
as an F7 diagnostic. This pass is not presented as evidence about F7 either
|
||||
way. F7 cause stays unknown (Vikunja625); the one approved unchanged rerun was
|
||||
mos-1605, recorded separately. Sage is informing Mos about the over-selection.
|
||||
|
||||
R2 B1 first-red stdout raw retained at /mnt/storage/scratch/tmp/YtB1cu/B1-red.txt, SHA256 f678679f9df80fbc0704b4401647b9b750388af366b15b4eaf926eca1310c00d. Repository B1-red.txt strips trailing whitespace only; result remains 5 tests,1pass,4fail. Each other R2 receipt records its own raw path/hash and the same review-copy normalization.
|
||||
|
||||
Static R2 preservation check: all502 files under packages/*/tests present at base8bb5b3c73 were compared as raw bytes with git show; zero differences. The R2 test addition is management-key-encoding.test.mjs. Product source diff since5f2ef9647 is only common.mjs validManagementKey predicate; validateHeaderValue remains. PIN and fetch are unchanged.
|
||||
|
||||
## Round2 final verification and slot return
|
||||
|
||||
Gate completed 2026-10-24T21:54:29.245Z, started21:31:10.938Z. All88 actual
|
||||
commands rc0/nice19; each launch used a fresh shell mktemp TMPDIR under
|
||||
/mnt/storage/scratch/tmp, MOSAIC_REQUIRE_EDITOR_BUILD=1 and timeout-k10.
|
||||
There were86 required commands:6 whole model-proxy files,79 whole dependency
|
||||
readers (30bus,49cli) and config. The2 over-selection runs remain separate.
|
||||
|
||||
Required R2 results:
|
||||
- model-proxy:6files,66/66,0fail/skip/cancel.
|
||||
- bus readers:30files,261/261,0fail/skip/cancel.
|
||||
- CLI readers:49files,726/726,0fail/skip/cancel. This includes the official
|
||||
federation acceptance runner1/1 with cleanup, rather than its skipped wrapper.
|
||||
- test-config.sh:55/55.
|
||||
|
||||
No old-test red or rerun occurred. B1 first-red1pass/4fail is preserved separately
|
||||
from these fixed results. The over-selected case1-accept53/53 in247.863s and
|
||||
case2-unit47/47 in71.829s are facts only; the case1 pass is not an F7 diagnostic
|
||||
or evidence about F7 either way. F7 cause unknown, Vikunja625. No repeats.
|
||||
|
||||
FINAL-COUNTS.json now explicitly distinguishes R1 whole-suite results (bus
|
||||
corrected1019/1019; CLI999pass+1listed skip) from R2 targeted coverage. Model-proxy
|
||||
is current66/66, with R1's61/61 preserved separately. R2 runs.jsonl maps every
|
||||
command to its count summary, raw log/hash, review copy/hash, timing and priority.
|
||||
The R1 Docker receipt selects outer2/2, not nested1/1. No new whole bus/CLI run
|
||||
is claimed; those remain Sage's landing gate, which must independently pass.
|
||||
|
||||
Slot returned to Sage in magica-0032. No further tests run. R2 addresses Boyd B1,
|
||||
N1 and Dewey N3/N4 only. The pinned release/panel/fetch remain unchanged. Old
|
||||
assertions and all502 existing base test/helper files remain byte-identical.
|
||||
R2 manifest is regenerated over every changed regular file against8bb5b3c73,
|
||||
except MANIFEST.sha256 itself; review source and plain-text receipts are included.
|
||||
@@ -0,0 +1,534 @@
|
||||
0906c6ffb3fb61a4af50babe2a299862e5276ccac839610ea9c432c9cf1f9245 BUILD-LOG.md
|
||||
cce90a2e3458fe17383a19a26b340201196d4dc0d58248032521847af424efe2 agents/magica/work/queue-329/BUILD.md
|
||||
4eacff93480cc340d38bce151f93897567ca8fcd95e660ca81cc5d2d35a5351a 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
|
||||
602bd0c5171d35aa0f7462a77459d2d16de72e201119feef5437cb956486d707 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
|
||||
509302f982d6b7446902553d01d5760a4eb865e206d84d86674bc7bc8f851f72 agents/magica/work/queue-329/gate-r2-progress.txt
|
||||
c92037ede5c10bbc966c0751e5a1c4219074d1cbc97b7c92c3e81cd4d95569c6 agents/magica/work/queue-329/gate-r2.py
|
||||
a6b58ccf9435b288676bfc7d3a153be19292708aa474268be8b8f1d08ee2554b agents/magica/work/queue-329/gate-r2/B1-red.txt
|
||||
35b36a325aca1bb4a62010904efb65d624079c0c82167ae0f4624862e5280ff0 agents/magica/work/queue-329/gate-r2/bus-access-revoke.test.load.jsonl
|
||||
1e4692e57d2a0381a9c05ad6a6f136c63d149263d52f4bf0cf194adfb5c3a28f agents/magica/work/queue-329/gate-r2/bus-access-revoke.test.txt
|
||||
eb5b96b3a55fedcb7edfa7c29258e36c684615cf2edcb46c6b69ecb96d1ef6c0 agents/magica/work/queue-329/gate-r2/bus-chief-of-staff.test.load.jsonl
|
||||
ac5e9121ff899160842f8196969356b5af2b1d8305bc14a4a05f0c8e7472a55b agents/magica/work/queue-329/gate-r2/bus-chief-of-staff.test.txt
|
||||
f38389ac61ac74907417f44884d5f21cf4029d5a67726ef523d5cfac09564065 agents/magica/work/queue-329/gate-r2/bus-citation-runtime.test.load.jsonl
|
||||
906f79dcd35767db18fcc9cc58ff354fd04c76fb8f4442a36840dbe6c1ec4687 agents/magica/work/queue-329/gate-r2/bus-citation-runtime.test.txt
|
||||
c4f99a960960200156c3c2010a875aecf3d00021bee45786814496ca60dcd43f agents/magica/work/queue-329/gate-r2/bus-creative.test.load.jsonl
|
||||
a69dc69088b07e7e1763feffce69ef032df334557505f2afcefdfb58c0d1c17d agents/magica/work/queue-329/gate-r2/bus-creative.test.txt
|
||||
b3533e3d1a52a11991d34fb0719a6c11e0847277c58ee862548e4ba1363422c5 agents/magica/work/queue-329/gate-r2/bus-credential-verbs.test.load.jsonl
|
||||
5357a7f0eec86a68c8491d1af16547457d7fe0ebd72fc5c6a509007c7f7d4030 agents/magica/work/queue-329/gate-r2/bus-credential-verbs.test.txt
|
||||
8eb083b718bba95854fd14d1bd1cc9b81874cb35825feda04fee25003ddd64d6 agents/magica/work/queue-329/gate-r2/bus-daily-quota-runtime.test.load.jsonl
|
||||
fe12a7dd9d274386f7416db0858082dd77af1c0df6344d2460fca5a13a94b924 agents/magica/work/queue-329/gate-r2/bus-daily-quota-runtime.test.txt
|
||||
4688d8b719fd2c45f6c40e7e40cab50b3996390a5972e6c0e02b9d4a1b98f913 agents/magica/work/queue-329/gate-r2/bus-grant-scope-runtime.test.load.jsonl
|
||||
d314d364cc6b84672a92151c8c601dad438414a49ec27f15e94594ab730ac3f6 agents/magica/work/queue-329/gate-r2/bus-grant-scope-runtime.test.txt
|
||||
86e9148ce2a2194656d1f3102b6827718b4682ce71fb440af157c4638f54b8e1 agents/magica/work/queue-329/gate-r2/bus-host-run.test.load.jsonl
|
||||
186da42dee80fa074f0ddbb05fe78eb680dbe7177e63111928768b71f6248743 agents/magica/work/queue-329/gate-r2/bus-host-run.test.txt
|
||||
aab757cebf12c84c6146668c28282b3977d0634d189efbf0b9ce409892957c27 agents/magica/work/queue-329/gate-r2/bus-instances-verb.test.load.jsonl
|
||||
a29fe9471a3034501c9765289f77e5a6fc08702c7cc02035d67745b01064e6f7 agents/magica/work/queue-329/gate-r2/bus-instances-verb.test.txt
|
||||
1737c1565c1c99a88f341d8ce494d6596bf9a42e9c6118cf34e39a8c7804cccc agents/magica/work/queue-329/gate-r2/bus-library-credential.test.load.jsonl
|
||||
5a8db75c9e3a8c5fc526a83db2eecb1dce370c09b191d76a4b6e5e5b2bc49269 agents/magica/work/queue-329/gate-r2/bus-library-credential.test.txt
|
||||
4ffb85b49e2128bb296464943234e79187eda6f576ddd68235546983e77abcc6 agents/magica/work/queue-329/gate-r2/bus-library-lookups.test.load.jsonl
|
||||
f983094b8f5934fb1390cb41a7f93fb67e3bf640ccefe7c22901fef471178341 agents/magica/work/queue-329/gate-r2/bus-library-lookups.test.txt
|
||||
fbfb96b24da5c1ef4d0599d57338a7b6448878bc03ebfc0e6b16f4061206fafe agents/magica/work/queue-329/gate-r2/bus-library-sync.test.load.jsonl
|
||||
ce03b3b0bd0a7dab40cbe07b65708e9c8083b2ea2292a585105257d63b346041 agents/magica/work/queue-329/gate-r2/bus-library-sync.test.txt
|
||||
2138ffc3c1a9fd020df95dbaf2abdb3750b8c969d1c496e4de4f7a5cb9f560df agents/magica/work/queue-329/gate-r2/bus-library.test.load.jsonl
|
||||
f7056b0990446ba4ca02439d888840100197cf721af7cb83366e1845ebedb181 agents/magica/work/queue-329/gate-r2/bus-library.test.txt
|
||||
dbbc3244162687c59f8352a43eb6c83721a71e769fcf465baeb2d3d4c1c289a7 agents/magica/work/queue-329/gate-r2/bus-lifecycle-revoke.test.load.jsonl
|
||||
8164855a74fffbe3ae62e45b0d921571b34e29d87109a62fdedcaa5f5cf91a03 agents/magica/work/queue-329/gate-r2/bus-lifecycle-revoke.test.txt
|
||||
2c249feb0a02ff43d6661c17bb77ca2ecf7cac0871b17a88436539d2d1bbc6ec agents/magica/work/queue-329/gate-r2/bus-lifecycle-verbs.test.load.jsonl
|
||||
d2f5a7993c5d8e31bbf8572651f67fded8ed83cbaddfa5ccba7bad2d61994da0 agents/magica/work/queue-329/gate-r2/bus-lifecycle-verbs.test.txt
|
||||
313901ddf0bc1e123d899d6997e667bffe4e83f4e592678f09c387b58a71e42d agents/magica/work/queue-329/gate-r2/bus-limit-checks.test.load.jsonl
|
||||
04d0337574e4af52414e3bfd63b95d15e2cbbc22c49bfaae5eb8baf4df0ce387 agents/magica/work/queue-329/gate-r2/bus-limit-checks.test.txt
|
||||
a9c0c4c67208df91a0b2049bcc0d5ff2a524cc309777f95716aa1905f236dd08 agents/magica/work/queue-329/gate-r2/bus-limits-runtime.test.load.jsonl
|
||||
aae4e8b12a87bd5679afcd9f4319839c6554fac365723ada9808af9aa9e1c859 agents/magica/work/queue-329/gate-r2/bus-limits-runtime.test.txt
|
||||
b99e18744eab4e71563e103ad54aef46d050b310ae62608c1bf4cebb8f99bf8e agents/magica/work/queue-329/gate-r2/bus-limits.test.load.jsonl
|
||||
df23b3a8e13e0f29c5c81cf067e4a859b2c19fc7b7e0a72cab222444d84eb20d agents/magica/work/queue-329/gate-r2/bus-limits.test.txt
|
||||
b5db0838d9caa08d70138ad688ebd8e83787cefc6cc338a40c4b98b5c9b2cdb9 agents/magica/work/queue-329/gate-r2/bus-model-proxy.test.load.jsonl
|
||||
bfb1b52f8dc03290185ea6b9f1c2a5336b0c8b4959a0b1254a8ff6e86c4d0f6e agents/magica/work/queue-329/gate-r2/bus-model-proxy.test.txt
|
||||
dc1087323e28b29c19c31f4c0bc3d12698bdec83a462fb5130e36eade30e8e31 agents/magica/work/queue-329/gate-r2/bus-plugins-verb.test.load.jsonl
|
||||
a06ab305be09ba71ffad2221d8db9979cd7c9db8cfee9e7a75347620a4f68646 agents/magica/work/queue-329/gate-r2/bus-plugins-verb.test.txt
|
||||
364eb5a8a53e90f2d1e727230cf6f7e9953647d5bb1bf6ea5a7c755e78028d48 agents/magica/work/queue-329/gate-r2/bus-processing-runtime.test.load.jsonl
|
||||
05aeb457bd29666c0fd601f14e81a917935483c483ae29952ba07c168f316a3f agents/magica/work/queue-329/gate-r2/bus-processing-runtime.test.txt
|
||||
356f6ce7929fd3c4f3358fe65d32f59ea3dc456c14202887925f6861fdd9306f agents/magica/work/queue-329/gate-r2/bus-project-runtime.test.load.jsonl
|
||||
a78ffe5c3ce1a213eca5eeae5637eabe03ea564df7fa947a72f85a0d94c3ccb0 agents/magica/work/queue-329/gate-r2/bus-project-runtime.test.txt
|
||||
a93f4fbadc1bf52a8227841b52e03f2bc99e305ea6c65d55904015c025b85074 agents/magica/work/queue-329/gate-r2/bus-publish.test.load.jsonl
|
||||
1f2796d06abac7de85d9658f8c2a53b2934aea7ab518bab1f53479048feb2139 agents/magica/work/queue-329/gate-r2/bus-publish.test.txt
|
||||
17501c06a7d337a49c070f15725d8e839e76a1eeca82e9685521a823991ee8ff agents/magica/work/queue-329/gate-r2/bus-reload.test.load.jsonl
|
||||
192282d8e14ec7ba3314ae1de327646cc6f7deb390472d64781529d4f2a87ae5 agents/magica/work/queue-329/gate-r2/bus-reload.test.txt
|
||||
46ae0cde305c62f0e93e2fb45b5044460605b8eaf31a5dacd4445549f31fcb6c agents/magica/work/queue-329/gate-r2/bus-routes-verb.test.load.jsonl
|
||||
9f33241111d569ae58c4e67f3afe685a537a2dcbfedaa40de89bdee3f17b14b4 agents/magica/work/queue-329/gate-r2/bus-routes-verb.test.txt
|
||||
4efd408702af8abcd8f7b8da1f9cabe6325b48f9becc118223edab2e39a7be2b agents/magica/work/queue-329/gate-r2/bus-tasks.test.load.jsonl
|
||||
14d2238fe88a863d5535217b8a832fc7a23d6662a38787385fa5c7792902cece agents/magica/work/queue-329/gate-r2/bus-tasks.test.txt
|
||||
15383d2e003e4b59393dbfd858124d1103da2d996a75da55fbcb0191fcd152b2 agents/magica/work/queue-329/gate-r2/bus-tester-writes.test.load.jsonl
|
||||
9be764569450aede17b0aeb194933978c07f551ff835543b9c5a171599aec855 agents/magica/work/queue-329/gate-r2/bus-tester-writes.test.txt
|
||||
a81215e5126dbba710dbcdada1f85fa36629b6c3ab76130af7bda91f6f19e1f0 agents/magica/work/queue-329/gate-r2/bus-tester.test.load.jsonl
|
||||
1071a9d1720fc8cb3a81bb4e649480b9ffb70f44cc27df7cd1bdfe5b4b73c832 agents/magica/work/queue-329/gate-r2/bus-tester.test.txt
|
||||
573110378591ba4e8007209cf79e93a2d321268e310a4c18101f2827d64cb4e1 agents/magica/work/queue-329/gate-r2/bus-usage-runtime.test.load.jsonl
|
||||
164803cec01d1a4defd02eb7bada2334406e55ddca88a3f959f34b1fe959c61d agents/magica/work/queue-329/gate-r2/bus-usage-runtime.test.txt
|
||||
ffddbc2d27c3122cbf6472c844d6e28b979bf1c535bdeb5c59dab0184b08e48e agents/magica/work/queue-329/gate-r2/bus-web.test.load.jsonl
|
||||
fc077bfb6f2fdf43f2949741daa6d7d998be5540a2c24935cf41dd37a9168701 agents/magica/work/queue-329/gate-r2/bus-web.test.txt
|
||||
05dc486c84fbbf496f2b2f881ceac1b1bd8fcd864ed0890fbb2ac72bf9a0e9cd agents/magica/work/queue-329/gate-r2/cli-access-boot.test.load.jsonl
|
||||
3744b90a84c5fed8391ec462765c84016f800480aba1866394fda7b8e073334f agents/magica/work/queue-329/gate-r2/cli-access-boot.test.txt
|
||||
dba8a371c2eb7c4f17c77cc37f0a9db6903390440905a206dcadea8aac8a0b10 agents/magica/work/queue-329/gate-r2/cli-access.test.load.jsonl
|
||||
26846bafb2cad7e1ef1eb22c4be6b45be15a5ba8dcb9ac74e676526215264f61 agents/magica/work/queue-329/gate-r2/cli-access.test.txt
|
||||
5e3805442854de1ae0943764761f382b9f86662f74c3a64f5c3d96b1c3a54675 agents/magica/work/queue-329/gate-r2/cli-app.test.load.jsonl
|
||||
a5e98008eccbd4c970eb1177cd2a02149a11a983a3b52bcc6e395911cf3ad650 agents/magica/work/queue-329/gate-r2/cli-app.test.txt
|
||||
add6521dc4b2bb56a60145be7bbc5a1a5538203c2d60888f3159a87da90c5893 agents/magica/work/queue-329/gate-r2/cli-boot-status.test.load.jsonl
|
||||
bb44c42c15a70c24211f9145aa199dee9aa35794bfc360f792ed71a142b8fed1 agents/magica/work/queue-329/gate-r2/cli-boot-status.test.txt
|
||||
05fa77b28a9dd2eae141a272e7e1e7d8ea2ea697241e18d95d1b2a3eac8fb5bf agents/magica/work/queue-329/gate-r2/cli-case1-accept.test.load.jsonl
|
||||
fe812a4c0d8506883c16e9458d888f89298b8d7cf8817eb57defd108fb268aef agents/magica/work/queue-329/gate-r2/cli-case1-accept.test.txt
|
||||
d589b74061c3a05a07949506c34db90511aeb950d80b0815baebfaa03e02fe77 agents/magica/work/queue-329/gate-r2/cli-case2-unit.test.load.jsonl
|
||||
d85ab5112c0e6b4395e318abbd81393e3c533af83f5625ea2470ee641a7cbafe agents/magica/work/queue-329/gate-r2/cli-case2-unit.test.txt
|
||||
6c19f7a21950842ad7910dada9c2ca03a68e36dc0ff565040aa147086086cf25 agents/magica/work/queue-329/gate-r2/cli-channel-cli.test.load.jsonl
|
||||
b58d9c1ceadc06bfb5ba894106b9a8fae2b8cf5b5ee793024247e3ca6c12cb57 agents/magica/work/queue-329/gate-r2/cli-channel-cli.test.txt
|
||||
bb82c1a6039f0ffd3fdd9cf4492236c35417abf097b9a1419e5321f6d5b41c34 agents/magica/work/queue-329/gate-r2/cli-cli.test.load.jsonl
|
||||
f31972c375775c7d8395ddbb8ec50c278842c94938ac38b42cc34adddd26343b agents/magica/work/queue-329/gate-r2/cli-cli.test.txt
|
||||
e2754177db78912a17e2a727d500cfc38c70c63cf2f41707eec77f3bf90b76f2 agents/magica/work/queue-329/gate-r2/cli-compactions-launch.test.load.jsonl
|
||||
076452351ffccf6341b3be24798aa3e3d9ff239079dfff86338cc5c5c553a6c5 agents/magica/work/queue-329/gate-r2/cli-compactions-launch.test.txt
|
||||
0a24b3ee89454858beeddf7086e1f477e72f7ebfa8ff0bf0be0b57397e725845 agents/magica/work/queue-329/gate-r2/cli-config.test.load.jsonl
|
||||
fb64c74ee91d26ce5d9e696d38e6aa53190a123e6e700d6235839f211071ff7c agents/magica/work/queue-329/gate-r2/cli-config.test.txt
|
||||
d25177067b8c27acab71d63f0d4b50be880f43fb53be57811c40bb7db71bc25e agents/magica/work/queue-329/gate-r2/cli-credentials.test.load.jsonl
|
||||
de17d72ef2f432a264f915ee6d0eeecebdb47509b701efeb39cb6e3a623c7889 agents/magica/work/queue-329/gate-r2/cli-credentials.test.txt
|
||||
191f3a3f232dee7e05778ac92ec9aa3f72e7ac42e64525e0710096744a0a478c agents/magica/work/queue-329/gate-r2/cli-federation-acceptance-runner.load.jsonl
|
||||
9159c6b69df64f55608fd6a56ef312fb17c15501f6d2b022010ce4a79d3a66df agents/magica/work/queue-329/gate-r2/cli-federation-acceptance-runner.txt
|
||||
18767504e005105414151a46820e99d4ccb03b213ee6dee02811255095d3697d agents/magica/work/queue-329/gate-r2/cli-follow.test.load.jsonl
|
||||
ed9f7a562321d6097724af8b3863ba9afbf740b27ef704212ea560e691d36431 agents/magica/work/queue-329/gate-r2/cli-follow.test.txt
|
||||
f90bffb351668599119ccb76f894b08ec04d8191ab82c58de408f5f98df3dc88 agents/magica/work/queue-329/gate-r2/cli-git-socket.test.load.jsonl
|
||||
473cedadef1e0ad23ad614f2a33b10e159133d3cda7eef53ac6bb69872185b3c agents/magica/work/queue-329/gate-r2/cli-git-socket.test.txt
|
||||
4ad7d14c33d65b046ef521664910968f4f6bdc35c4fc9cfafe74097793be0fdb agents/magica/work/queue-329/gate-r2/cli-grants-scope.test.load.jsonl
|
||||
5e6efa8110a444bac7d74da8328b6d826de680b84f56ebd19a0285cc9adf0a62 agents/magica/work/queue-329/gate-r2/cli-grants-scope.test.txt
|
||||
fa9ff068d1c9efa881d6a924b328b6617d0aed1c1dbe614647d03bf5330d626e agents/magica/work/queue-329/gate-r2/cli-grants.test.load.jsonl
|
||||
a7efd78270e4e7ef26be72180eb458aff9de84c73b5b3ec8d83838f862184c4b agents/magica/work/queue-329/gate-r2/cli-grants.test.txt
|
||||
544ed664fa34aa456faca31ee7fb8b5d4fde1ef886dc6f9cf512a2ad44d682f4 agents/magica/work/queue-329/gate-r2/cli-host.test.load.jsonl
|
||||
4b234f94e96838fde5714477d37e06af648d20c68775b47c7c81443dfc0cb2ca agents/magica/work/queue-329/gate-r2/cli-host.test.txt
|
||||
f7f4deb64134e3bcc125747ef5a501460d70bb43785997e824def3a367f34032 agents/magica/work/queue-329/gate-r2/cli-hosts.test.load.jsonl
|
||||
5483bf8ada33ee623bd1078e1fd9284280a32619c51f36d56b65006bef63f185 agents/magica/work/queue-329/gate-r2/cli-hosts.test.txt
|
||||
68daa97fbcfa1bc4fd45f2cb6c5aa7b62407d378d1173baf344d28e5e5e5ed66 agents/magica/work/queue-329/gate-r2/cli-idle-stop-race.test.load.jsonl
|
||||
8fd38cefed41f05af3c4bab68edfa9bdcb137d05177fdca9f51382ce875c870c agents/magica/work/queue-329/gate-r2/cli-idle-stop-race.test.txt
|
||||
11f319e8112696c881aa38cfe247054acab3a366186ab316ed8c2b3f592b7bf3 agents/magica/work/queue-329/gate-r2/cli-instances.test.load.jsonl
|
||||
ea156f123f60723867b2d7c8c83b4649dfc4e0fee50735384ba034078ee46bfe agents/magica/work/queue-329/gate-r2/cli-instances.test.txt
|
||||
c6c47e682aa476429aef3599f9a429ab895b14b6b75c52673a192bc9a1045ffa agents/magica/work/queue-329/gate-r2/cli-launcher.test.load.jsonl
|
||||
a50e012f0fd76f2df61c30c99e8b9284a426b96ed432b213bbbd8c4f30b6c54e agents/magica/work/queue-329/gate-r2/cli-launcher.test.txt
|
||||
6973b3f1711bdf28114b4556b927c9baa1f873200642f3e4dc251dee5e25ecf6 agents/magica/work/queue-329/gate-r2/cli-lifecycle.test.load.jsonl
|
||||
095e17f532d679fe513c32c2e03518d4cf2437baf5769faf97a28cf95774503a agents/magica/work/queue-329/gate-r2/cli-lifecycle.test.txt
|
||||
7841e1e007d6201621d829be730f9dc1e00288891196eec525ccd37ed4ea623b agents/magica/work/queue-329/gate-r2/cli-limits-tokens.test.load.jsonl
|
||||
9988657dfa758b51bfcf96e950aee97f8bd4ab55586ff987102e4a4d0ed1d70c agents/magica/work/queue-329/gate-r2/cli-limits-tokens.test.txt
|
||||
6edc85bd823e4efd5ab1c1bd39b34a3e37934b148869a0e842f9d1b919fe0841 agents/magica/work/queue-329/gate-r2/cli-limits.test.load.jsonl
|
||||
216591e5eac252a04cfd8d5cb80dd8bfce95e6888be4cecc37ce42848c007e58 agents/magica/work/queue-329/gate-r2/cli-limits.test.txt
|
||||
99cb5f9b6e0e7ff7485ea9fd02c10d687e04ea503db4a5df6ce7cd6b1ea84159 agents/magica/work/queue-329/gate-r2/cli-mark-read.test.load.jsonl
|
||||
752895e1b4be7f8a158ac216e3e2b00789340dcada3c7f16764b8d0c7f82e45b agents/magica/work/queue-329/gate-r2/cli-mark-read.test.txt
|
||||
f61b719571255757e5d0f8c90267688440023acc7fbf073b2f06f1fb31743397 agents/magica/work/queue-329/gate-r2/cli-model-proxy.test.load.jsonl
|
||||
1860f6a85d3d37ff21333d379a31b081e5ef3b8371c33945c4a477c30cb8b90b agents/magica/work/queue-329/gate-r2/cli-model-proxy.test.txt
|
||||
f8e906a4f4c05ed63917a288416a294fc0ecd2e3480cca9c911261413302160a agents/magica/work/queue-329/gate-r2/cli-names.test.load.jsonl
|
||||
3fb040411ad19c4fa194485f8059de0eb39cad55641c9631d18e8bc426b51f0d agents/magica/work/queue-329/gate-r2/cli-names.test.txt
|
||||
910e8df8f5c2f92b641a06938ba666b931461b77a273b46ebda4683de236a04a agents/magica/work/queue-329/gate-r2/cli-optional-tracker.test.load.jsonl
|
||||
266aea732bdc9378ea736d2fb9f9bf323977aeceab84344b425b1413315be4bf agents/magica/work/queue-329/gate-r2/cli-optional-tracker.test.txt
|
||||
b91deee70af79927792012c48f286ce9cd4229826f42cf51b3c318900cc2cbe8 agents/magica/work/queue-329/gate-r2/cli-other-tree.test.load.jsonl
|
||||
ff27aac13153d0e13eed59d219b3b65f5324e96e7cd23b8249caf8900dccf551 agents/magica/work/queue-329/gate-r2/cli-other-tree.test.txt
|
||||
fcb7e4eb970a21f4d06f99e08812fa85b31f8a30d0ad367a3f38acc7770c1891 agents/magica/work/queue-329/gate-r2/cli-processing-cli.test.load.jsonl
|
||||
ba2208b51786a0d4b536f76d840e4d3f86cd26a81c7989fc5ca06e13ac392c16 agents/magica/work/queue-329/gate-r2/cli-processing-cli.test.txt
|
||||
a8a82bd497e3fc97f944794fbe26bfe401b9c0ea6f99f9bc11a5616e068a9326 agents/magica/work/queue-329/gate-r2/cli-project-name-repo.test.load.jsonl
|
||||
2ab5c5589a967a49af9a48b6fe9d8b070c83fb4ddafa701cb314ee8eacf58803 agents/magica/work/queue-329/gate-r2/cli-project-name-repo.test.txt
|
||||
b9c00382e63a2add2176051d01a997e23b02edd8a536cc6c21fa760375cc7cd3 agents/magica/work/queue-329/gate-r2/cli-project.test.load.jsonl
|
||||
eeb05c7bbb900111114536562271a0561961366d800d10dc9a523427c9d948d4 agents/magica/work/queue-329/gate-r2/cli-project.test.txt
|
||||
6eb050a014a3437db3421e09b40315e623572c4914387a38703f54b71daad20a agents/magica/work/queue-329/gate-r2/cli-publish-socket.test.load.jsonl
|
||||
5f37bd01ad735a22847e23288eb74de145fc7d9409212ce7f750a1f5537e589b agents/magica/work/queue-329/gate-r2/cli-publish-socket.test.txt
|
||||
fc050edb9fc8186c39ca20e1bd634d0928f857d32fc77b4d3857195ffed6dc49 agents/magica/work/queue-329/gate-r2/cli-revoke-window.test.load.jsonl
|
||||
11fe687feb95434d03dfb29bbb6b29daa8eded4ed9ef57c1205439952505bab7 agents/magica/work/queue-329/gate-r2/cli-revoke-window.test.txt
|
||||
5b8aa2675836da160c7283fb06e01b4a168954b35da76c9f349a56a2bfe8e638 agents/magica/work/queue-329/gate-r2/cli-session-clear.test.load.jsonl
|
||||
6eb2f7df1081685a59a0ce69efc1b8fe35ac155c6f4222d9b79d4953079f2560 agents/magica/work/queue-329/gate-r2/cli-session-clear.test.txt
|
||||
817912d22084b2381040115d1e1077e5d9a2415bc0d74ead572e083ae2831429 agents/magica/work/queue-329/gate-r2/cli-session-cli.test.load.jsonl
|
||||
a6cf001371e3d37548209e27a96790aeab1658f9834ad3aad0079bb848f798f9 agents/magica/work/queue-329/gate-r2/cli-session-cli.test.txt
|
||||
58a08c9d662e4b7f30c94055b2edf3be9ccbe3a19d8e42367f717862df06b6e6 agents/magica/work/queue-329/gate-r2/cli-session-launch.test.load.jsonl
|
||||
4bce7c2a9c9f3c067de4c9b517f3163f7ad011ab8b8fd270b253f197beddc87e agents/magica/work/queue-329/gate-r2/cli-session-launch.test.txt
|
||||
a39b1720a6455df90ade340af8eed7d9d4d19c994480a6bda36ada86694c8e89 agents/magica/work/queue-329/gate-r2/cli-stack-copy.test.load.jsonl
|
||||
cbca0eec372ce64f9f79b44b223edfa4cb6e36192aa3b2c9f34524a581d792ce agents/magica/work/queue-329/gate-r2/cli-stack-copy.test.txt
|
||||
09207def72c045841e0645988ed4c38087f304bf61aab75c705251cb5622f0c2 agents/magica/work/queue-329/gate-r2/cli-stack-instances.test.load.jsonl
|
||||
29cbaca8d32ed51cc4352005e7c8ed5b2218eaa68c0d5848dd65454394637070 agents/magica/work/queue-329/gate-r2/cli-stack-instances.test.txt
|
||||
0174359bac7048f9dc8be60d928bc24b671777e4866e1d13260dd0ad629bb2fb agents/magica/work/queue-329/gate-r2/cli-stack-release-external.test.load.jsonl
|
||||
978b39a672d14aacc0158096c98da23e8b1384145005181156be191705498790 agents/magica/work/queue-329/gate-r2/cli-stack-release-external.test.txt
|
||||
3ca0db5fd7cc8dac3701114f3b30fae094ac421b6703019b6d182f8e413df5dc agents/magica/work/queue-329/gate-r2/cli-stack-release.test.load.jsonl
|
||||
727fc9c272f2b677f495e644f1f25fd25d2f6771f892f0cdc4eddcc486c8ffed agents/magica/work/queue-329/gate-r2/cli-stack-release.test.txt
|
||||
80df1beaa8981958adb58cd48d1da315c5c82ffed1e4b43e32b4dde2e01449ee agents/magica/work/queue-329/gate-r2/cli-stack-upgrade.test.load.jsonl
|
||||
5bc6c98d28d0efaaf8e22a7424c14490a002d2f4309d3cff5560fb6cc81005a8 agents/magica/work/queue-329/gate-r2/cli-stack-upgrade.test.txt
|
||||
aa95c723c9d12d700d5bde10348a1ece07eec6766ba315d5e18be19f03f9fd76 agents/magica/work/queue-329/gate-r2/cli-tester-reads.test.load.jsonl
|
||||
5f5857a678ee71288a830f46ebdfe2906fdbfaf9ca05c45bc24f8733fc85e72a agents/magica/work/queue-329/gate-r2/cli-tester-reads.test.txt
|
||||
e4ed630a26a59ea587fa8c6e43a81e93fdcc7b943ff2357f92959e5e17bcbc1b agents/magica/work/queue-329/gate-r2/cli-tester-threads.test.load.jsonl
|
||||
2345321de50437a397787c460a5e1b1b8e23333c1079738cb29586d0a073ca17 agents/magica/work/queue-329/gate-r2/cli-tester-threads.test.txt
|
||||
e4e71634c9bdebda698f227fcfcb074f53cfab0f69598b10fd94c9c1b3c1e1da agents/magica/work/queue-329/gate-r2/cli-tester.test.load.jsonl
|
||||
08e86197474154f56a7145f675e8dda2706e7836815e200fd0cb1d878df08c2e agents/magica/work/queue-329/gate-r2/cli-tester.test.txt
|
||||
03b13a1f94a6db21d8193c87b264050cf158ed6d3da73517f92d7916afba534c agents/magica/work/queue-329/gate-r2/cli-thread-cli.test.load.jsonl
|
||||
140c3a7e88ffdf1201cbb19ebb2090c53b1ee85a8c38e36e384bdf799c53ba36 agents/magica/work/queue-329/gate-r2/cli-thread-cli.test.txt
|
||||
fcde48f88c68ce48d9b01237868751efd90fe778a492c13f881aa4d29b342713 agents/magica/work/queue-329/gate-r2/cli-thread-launch.test.load.jsonl
|
||||
87cf64e2c72f38a70e92299bcc53ef89b4d7285233ce6142d7d68804eaf6a4eb agents/magica/work/queue-329/gate-r2/cli-thread-launch.test.txt
|
||||
4c17ae77c0607a685028a80ddbfa69ad73ca01a720b6374838a6329c4ad6da42 agents/magica/work/queue-329/gate-r2/cli-thread-revoke.test.load.jsonl
|
||||
c01ea3664cf8797d3c6c9af41134654b96b01ee79cd2355881866bf88d2fb225 agents/magica/work/queue-329/gate-r2/cli-thread-revoke.test.txt
|
||||
9b0d28f0e66162038cf6c41a963ef718ec7545b3ee6adebf6124eca1e43c0eca agents/magica/work/queue-329/gate-r2/cli-trackers-boot.test.load.jsonl
|
||||
596819d78167fcf2a65dd93a52de1b0cf9340b1eac7035cecfec9f672ae223b5 agents/magica/work/queue-329/gate-r2/cli-trackers-boot.test.txt
|
||||
0c45741de6cfb4ffb781d25f63997576403c8065fa13766bd30c6688c6c3afd6 agents/magica/work/queue-329/gate-r2/cli-usage.test.load.jsonl
|
||||
87d39eb6922fb37a6d220efd2418e3576437da52427cf3d48e59f27cedc7b23b agents/magica/work/queue-329/gate-r2/cli-usage.test.txt
|
||||
9fc7a0ee1813ff9b72feddcf458423eae147eba632e3c2c66a039fa567ccee1a agents/magica/work/queue-329/gate-r2/cli-verbs.test.load.jsonl
|
||||
4a5915b363f0e34ec6ee66f70e7844800ddcc2e6b8a37fc6d3a951ef9185c1ce agents/magica/work/queue-329/gate-r2/cli-verbs.test.txt
|
||||
1263918a851d0ccc317d3c841e6c05480e399ae5fd3171c0ff76a8d9c9a0dc89 agents/magica/work/queue-329/gate-r2/model-proxy-client.test.load.jsonl
|
||||
72526df68832b7029d66bc1d583880044263c223429f4b4e4a56ef00d42a593b agents/magica/work/queue-329/gate-r2/model-proxy-client.test.txt
|
||||
6e1bdccb316e94e2173246e3435177d5e5c6af873cded5ad017c5a5e8a746294 agents/magica/work/queue-329/gate-r2/model-proxy-config-unit.test.load.jsonl
|
||||
7e1b45f0f7f56e881dfd81f2e16e5076684f1e5a94a51972af2f01ff40700a86 agents/magica/work/queue-329/gate-r2/model-proxy-config-unit.test.txt
|
||||
88233d58ea18e4437e10223b7d11b9c59ccd23d79ebda7dbb7afd10264440074 agents/magica/work/queue-329/gate-r2/model-proxy-fetch.test.load.jsonl
|
||||
f9443ad4efc40865e4710339f2802ad59fa9fe247c3f7ce715bd522cb57df0a4 agents/magica/work/queue-329/gate-r2/model-proxy-fetch.test.txt
|
||||
8dc5284896ffd28db9f865ce6c73cf09922084ef107119775079a8752a6dd4ca agents/magica/work/queue-329/gate-r2/model-proxy-management-key-encoding.test.load.jsonl
|
||||
fc0ebedc2bae56913e2055a0772f741f76c7b4659ca4c020f95c5207fadaa245 agents/magica/work/queue-329/gate-r2/model-proxy-management-key-encoding.test.txt
|
||||
6b37bb71f927dd2cbe170ff8ef5ffb945a03f21606456c3c8a5d1dc4e5e162e0 agents/magica/work/queue-329/gate-r2/model-proxy-runner.test.load.jsonl
|
||||
4e4fac75caddcc0ec797e5cbd0c096af2c0b9c6f5cdbb2740e1419e6b900912e agents/magica/work/queue-329/gate-r2/model-proxy-runner.test.txt
|
||||
6376959609eb30566ca2314dd39bb586fb56de5d60165ddab9ad645301fab833 agents/magica/work/queue-329/gate-r2/model-proxy-settings.test.load.jsonl
|
||||
c552a50d05b680f46cccca044134bc9531ab40fb3cb3d7823884f1c10a214b92 agents/magica/work/queue-329/gate-r2/model-proxy-settings.test.txt
|
||||
5f4ac561cc71e5b52f8f6c7bf1479203da8e34def26553bc7084c63ec91a25e9 agents/magica/work/queue-329/gate-r2/runs.jsonl
|
||||
f1dd90e6cbd03106e2350071d1eea8dfe1614909340dd67ef810c5747d1f9d7c agents/magica/work/queue-329/gate-r2/test-config.sh.load.jsonl
|
||||
21d65fae2201534dd0c14771fa2d387d643ca698aa550faaa60fdc2a509e53dc agents/magica/work/queue-329/gate-r2/test-config.sh.txt
|
||||
3cf1a426d12e30b16356b6b754488d3e1f53004eb1757945f93401e3ef42630e agents/magica/work/queue-329/gate.py
|
||||
460197dbf22ffd137dfcce84dc3964ab7e07176cfa48a6deb4d510ec25aacdde agents/magica/work/queue-329/gate/FINAL-COUNTS.json
|
||||
f8b5ad0f2783cd922914efa0b8c4faae058770ac44891498f7a6f45c6b653e07 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
|
||||
de71055d018bcf7e0a5d82758ace1544bb12f9006d440e119fb6bc55bc6a8fc5 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
|
||||
20651f5f20563016f657c9d8206054a73dbddc20e0f411f426f3d02b9f157fe4 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
|
||||
1422d8f9ba5dc74fc365ef3d85e141b69d8c455e271f5bd9668cf76e8e03a2e8 agents/magica/work/queue-329/r2-reader-files.executed.json
|
||||
f8cba07da013ec124fafb235468e0c94e556194ce8fcf0385cc814bfe9da93b2 agents/magica/work/queue-329/r2-reader-files.json
|
||||
fd4eb03eb9052b78535990e38d206a99e5126719a5623a7be03e02b989963285 agents/magica/work/queue-329/r2-readers.txt
|
||||
885836d6311753b1939920c76915a7df4789d7c07f5235655d508a73cb09b987 agents/magica/work/queue-329/readers.txt
|
||||
df311757c57f7fc0695bd5555da329fb5862c938733a718eb9b1580f140fbc53 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
|
||||
b18f24ac5d143df6eaea6838022bb1db6cf860da3999f3529a280b0f1d7ae7ae 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
|
||||
56ff6856ca85eff0705d16240b112b5276ef815b92aa31705abb4b21488d296a packages/model-proxy/README.md
|
||||
8fbfb3d1562e9ea824a1bd399b17cb2048c92b125e7699ccf27abdcc6e31e40b packages/model-proxy/package.json
|
||||
c1e835580f2c33d8ce1e75af4e5c99e0425d1a88b50f25bf514a4f90f7134932 packages/model-proxy/src/client.mjs
|
||||
7fe0fcc7e88b7af631ff6a7a6f7d6a02d8b390ff32561c53b003c3c97f193ea6 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
|
||||
95e39a519f7ac8b9592876e6157191169f9b14d002163867a6ff6ab808e42c14 packages/model-proxy/tests/management-key-encoding.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
|
||||
@@ -0,0 +1,113 @@
|
||||
# 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
|
||||
|
||||
Round1 source checked with whole model-proxy61/61, bus1019/1019, 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.
|
||||
|
||||
## Round 2 — Boyd B1 and doc notes
|
||||
|
||||
Boyd CHANGES comment31638/rev4029 found that Latin-1 management keys pass Node's
|
||||
header check but do not authenticate after UTF-8 persistence against pinned8.0.42.
|
||||
The shared validator now requires exactly printable non-space ASCII, 1–4096
|
||||
characters, and retains header validation. No other product source changes in R2.
|
||||
|
||||
management-key-encoding.test.mjs adds separate Latin-1, leading-space,
|
||||
trailing-space and internal-space refusals under proxy-key-invalid. Each compares
|
||||
complete recursive config/data inventories including directories, metadata,
|
||||
contents and lock absence. The positive short ASCII fixture initializes and
|
||||
performs an authenticated local management call. First execution reproduced all
|
||||
four invalid-key failures; the fixed whole package passes66/66.
|
||||
|
||||
N1 maps Docker's outer2/2 (not nested1/1), correcting the R1 bus total to1019.
|
||||
N3 documents human-only stale init-lock recovery and partial-state precautions.
|
||||
N4 records34 covered refusal names, including4 reused bus names; B1 adds cases,
|
||||
not a new code. N1 bind observation is deferred to P7; proxy-fetch guard stays out.
|
||||
|
||||
R2's cleared dependency readers are listed in r2-readers.txt and the79-file plan.
|
||||
The whole package and targeted bus/CLI files run whole, with the official
|
||||
federation acceptance runner replacing its skipped wrapper, plus test-config.sh.
|
||||
FINAL-COUNTS distinguishes R1 whole suites from these R2 reruns.
|
||||
|
||||
Two stand-in fixture files were over-selected before detection: case1-accept
|
||||
passed53/53 in247.863s, and already-running case2-unit completed47/47 in71.829s
|
||||
per sage-4277. They are recorded separately from required reader coverage and
|
||||
will not repeat. The case1 pass is not an F7 diagnostic or evidence about F7
|
||||
either way. F7 cause remains unknown (Vikunja625). Old tests/assertions unchanged.
|
||||
|
||||
R2 final: model-proxy66/66,30bus readers261/261,49CLI readers726/726,config55/55; all required commands0fail/skip/cancel. Slot returned. Full bus/CLI suites remain landing work. FINAL-COUNTS.json and gate-r2/runs.jsonl contain the mapping and raw-hash receipts.
|
||||
@@ -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
|
||||
@@ -0,0 +1,40 @@
|
||||
P1 isolated acceptance root /mnt/storage/scratch/tmp/3mOycq nice 19
|
||||
binary sha256 74661f8cf949977870231359e8bf4344e07946766a673c08fa25a3e5f72fc95e
|
||||
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
|
||||
initial key list {"status":200,"body":"[\"p1-client\"]"}
|
||||
set empty {"status":200,"body":"{\"config-version\":8,\"status\":\"ok\"}"}
|
||||
empty list settled {"elapsedMs":3,"statuses":[200],"body":"[models]"}
|
||||
empty list missing key status 200
|
||||
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":103,"statuses":[200,401],"body":"{\"error\":\"Invalid API key\"}"}
|
||||
revoked key models {"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\":\"778dec0d73991fed459dc3fdbdd2c6ae\",\"status\":\"ok\",\"url\":\"https://claude.ai/oauth/authorize?client_id=9d1c250a-e61b-44d9-88ed-5944d1962f5e\\u0026code=true\\u0026code_challenge=0K5PIZjU0CLqYa5fwIBFgBU3UsyX9pcOh_FQMCKAaKI\\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=778dec0d73991fed459dc3fdbdd2c6ae\"}"}
|
||||
oauth start codex {"status":200,"body":"{\"state\":\"4855489df4fa7e17b77d780492a4225e\",\"status\":\"ok\",\"url\":\"https://auth.openai.com/oauth/authorize?client_id=app_EMoamEEZ73f0CkXaXp7hrann\\u0026code_challenge=dHQyyXv-Wf89z_v1sy1ts4cnFwrKNBHw2BphTLjBBd4\\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=4855489df4fa7e17b77d780492a4225e\"}"}
|
||||
panel plain initial {"result":{"type":"object","value":{"text":"CLI\nPROXY\nAPI\nCLI Proxy API Management Center\nEnglish\nConnect to CLI Proxy API v8 or later\nCurrent URL\nhttp://127.0.0.1:18319\nThe system will automatically use the current URL for connection\nCustom Connection URL:\nManagement Key:\nRemember password\nLogin","inputs":[{"type":"checkbox","placeholder":"","value":"on"},{"type":"password","placeholder":"Enter the management key","value":""},{"type":"checkbox","placeholder":"","value":"on"}],"buttons":["English","","Login"]}}}
|
||||
panel plain storage {"result":{"type":"object","value":{"available":true}}}
|
||||
panel plain login interaction {"result":{"type":"object","value":[{"type":"checkbox","value":"on"},{"type":"text","value":"http://127.0.0.1:18319/proxy"},{"type":"password","value":"[fixture]"},{"type":"checkbox","value":"on"}]}}
|
||||
panel plain after login {"result":{"type":"string","value":"Success:\nConnected\nCPAMC\nCLI Proxy API Console\nOPERATE\nDashboard\nQuick Start\nGATEWAY\nAI Providers\nAuth Files\nAuthentication files: 0\nOAuth Login\nOBSERVE\nQuota Management\nLogs Viewer\nCONTROL\nConfig Panel\nPlugins\nPlugin Store\nManagement Center Info\nQuiet for now.\n\nv8.0.42 · Connected\n\nManage providers\nInspect logs\n→\nREQUESTS HANDLED\nLIVE\n0\nRolling 3h 20m window · 10-minute buckets\nSuccess\n0\nFailure\n0\nSuccess rate\n—\nAcross 0 requests in the window\nCredentials\n0\n0 active · 0 not serving\nProvider keys\n1\nAPI keys configured across all brands\nModels\n19\nServed through the proxy endpoint\nLIVE TRAFFIC\nThroughput, ten minutes at a time\n\nSuccess and failure counts per 10-minute bucket across the last 3h 20m. Hover a column for its exact split.\n\nSuccess\n0\nFailure\n0\n4\n3\n2\n1\n0\n\nNo requests\n\n11:10\n12:40\n14:20\nData table\nFLEET\nEvery provider, side by side\n\nVolume and success rate per provider over the same window.\n\n01\nClaude\nCredentials: 1\n0\nrequests\n—\nHEALTH\nCredential status\n\nNo credential files found.\n\nRUNTIME\nConfiguration at a glance\nRouting strategy\nfill-first (prioritize)\nRequest retry\n0\nManagement keys\n1\nServer version\n8.0.42\nBuild date\n10/24/2026\nUpstream proxy\n—\nDebug\nNo\nFile logging\nYes\nRequest log\nNo\nWebSocket auth\nYes\nModel prefix\nNo\nEdit configuration →\nNEXT\nWhere to go from here\nAI Providers\nAdd API keys, set priorities, and test brands.\n→\nAuth Files\nUpload, refresh, and disable OAuth credentials.\n→\nConfig Panel\nTune routing, retries, logging, and access.\n→\nQuota Management\nCheck remaining quota per credential.\n→\nLogs Viewer\nTail requests and download error reports.\n→\nManagement Center Info\nVersion details and management center info.\n→"}}
|
||||
panel plain requests [{"method":"GET","path":"/proxy/management.html","origin":null,"cookie":false},{"method":"GET","path":"/proxy/v8/management/config","origin":null,"cookie":true},{"method":"GET","path":"/proxy/v1/models","origin":null,"cookie":true},{"method":"GET","path":"/proxy/v8/management/observability/usage/api-keys","origin":null,"cookie":true},{"method":"GET","path":"/proxy/v8/management/credentials","origin":null,"cookie":true},{"method":"GET","path":"/proxy/v8/management/plugins","origin":null,"cookie":true},{"method":"GET","path":"/proxy/v8/management/credentials","origin":null,"cookie":true}]
|
||||
panel plain exceptions []
|
||||
panel sandbox initial {"result":{"type":"object","value":{"text":"CLI\nPROXY\nAPI\nCLI Proxy API Management Center\nEnglish\nConnect to CLI Proxy API v8 or later\nCurrent URL\nhttp://127.0.0.1:18319\nThe system will automatically use the current URL for connection\nCustom Connection URL:\nManagement Key:\nRemember password\nLogin","inputs":[{"type":"checkbox","placeholder":"","value":"on"},{"type":"password","placeholder":"Enter the management key","value":""},{"type":"checkbox","placeholder":"","value":"on"}],"buttons":["English","","Login"]}}}
|
||||
panel sandbox storage {"result":{"type":"object","value":{"error":"SecurityError","message":"Failed to read the 'localStorage' property from 'Window': The document is sandboxed and lacks the 'allow-same-origin' flag."}}}
|
||||
panel sandbox login interaction {"result":{"type":"object","value":[{"type":"checkbox","value":"on"},{"type":"text","value":"http://127.0.0.1:18319/proxy"},{"type":"password","value":"[fixture]"},{"type":"checkbox","value":"on"}]}}
|
||||
panel sandbox after login {"result":{"type":"string","value":"Error:\nLogin failed: Connection failed, please check the server address, Management API, and management key\nCLI\nPROXY\nAPI\nCLI Proxy API Management Center\nEnglish\nConnect to CLI Proxy API v8 or later\nCurrent URL\nhttp://127.0.0.1:18319/proxy\nThe system will automatically use the current URL for connection\nCustom Connection URL:\nCustom Connection URL:\nBy default the current URL is used. Override it here if needed.\nManagement Key:\nRemember password\nLogin\nConnection failed, please check the server address, Management API, and management key"}}
|
||||
panel sandbox requests [{"method":"GET","path":"/proxy/management.html","origin":null,"cookie":true}]
|
||||
panel sandbox exceptions ["Uncaught (in promise) SecurityError: Failed to read the 'localStorage' property from 'Window': The document is sandboxed and lacks the 'allow-same-origin' flag.\n at Array.forEach (<anonymous>)\n at Object.migratePlaintextKeys (http://127.0.0.1:18319/proxy/management.html:20:667941)\n at http://127.0.0.1:18319/proxy/management.html:28:32103\n at restoreSession (http://127.0.0.1:18319/proxy/management.html:28:32640)\n at http://127.0.0.1:18319/proxy/management.html:28:38065\n at http://127.0.0.1:18319/proxy/management.html:28:38198\n at Uc (http://127.0.0.1:18319/proxy/management.html:16:92011)\n at kl (http://127.0.0.1:18319/proxy/management.html:16:107191)\n at Ol (http://127.0.0.1:18319/proxy/management.html:16:107075)\n at kl (http://127.0.0.1:18319/proxy/management.html:16:107956)"]
|
||||
sandbox explicit null-origin fetch {"result":{"type":"object","value":{"error":"TypeError","message":"Failed to fetch"}}}
|
||||
sandbox explicit requests [{"method":"GET","path":"/proxy/management.html","origin":null,"cookie":true},{"method":"OPTIONS","path":"/proxy/v8/management/config/access/api-keys","origin":"null","cookie":false}]
|
||||
forward callback /proxy/callback?code=fixture 400
|
||||
forward callback /proxy/auth/callback?code=fixture 404
|
||||
Claude Code wrong/revoked key wrong {"code":124,"signal":null} output ""
|
||||
Claude Code wrong/revoked key p1-revoked {"code":124,"signal":null} output ""
|
||||
acceptance probes complete
|
||||
@@ -0,0 +1,74 @@
|
||||
// P1 acceptance only: run via acceptance.sh in a fresh private user/network namespace.
|
||||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
import http from 'node:http';
|
||||
import { spawn, execFileSync } from 'node:child_process';
|
||||
import { createHash } from 'node:crypto';
|
||||
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=[];
|
||||
const delay=ms=>new Promise(r=>setTimeout(r,ms));
|
||||
const home=path.join(root,'home');fs.mkdirSync(home,{recursive:true});
|
||||
const env={HOME:home,PATH:'/usr/bin:/bin',LANG:'C.UTF-8'};
|
||||
const port=18318, forwardPort=18319;
|
||||
let upstreamCalls=0; const forwarded=[];
|
||||
async function serve(handler, p){const s=http.createServer(handler);await new Promise(r=>s.listen(p,'127.0.0.1',r));servers.push(s);return s;}
|
||||
async function request(route,{method='GET',key='p1-client',body,management=false}={}){
|
||||
const r=await fetch(`http://127.0.0.1:${port}${route}`,{method,headers:{...(key?{Authorization:`Bearer ${key}`} : {}),...(body?{'Content-Type':'application/json'}:{})},body:body?JSON.stringify(body):undefined,signal:AbortSignal.timeout(5000)});
|
||||
const text=await r.text();return {status:r.status,body:text};
|
||||
}
|
||||
function launch(command,args,extra={}){const out=fs.openSync(path.join(root,`${children.length}.stdout`),'w');const c=spawn(command,args,{cwd:root,env,stdio:['ignore',out,out],...extra});fs.closeSync(out);children.push(c);return c;}
|
||||
async function wait(p){for(let i=0;i<100;i++){try{await fetch(`http://127.0.0.1:${p}`,{signal:AbortSignal.timeout(300)});return;}catch{}await delay(100);}throw Error(`listener ${p} absent`);}
|
||||
const config={
|
||||
'config-version':8,server:{host:'127.0.0.1',port},
|
||||
management:{'allow-remote':false,'secret-key':'p1-management','disable-control-panel':false,'disable-auto-update-panel':true},
|
||||
access:{'api-keys':['p1-client']},routing:{strategy:'fill-first',retry:{'request-retry':0},'session-affinity':true,'session-affinity-rebind-on':'quota'},
|
||||
oauth:{'auth-dir':path.join(root,'auth')},
|
||||
'api-keys':{claude:[{name:'standin','base-url':'http://127.0.0.1:18401',keys:[{'api-key':'p1-upstream'}]}]},
|
||||
};
|
||||
fs.mkdirSync(path.join(root,'auth'),{mode:0o700});fs.mkdirSync(path.join(root,'static'));
|
||||
fs.copyFileSync(path.join(assets,'management.html'),path.join(root,'static','management.html'));
|
||||
fs.writeFileSync(path.join(root,'config.yaml'),JSON.stringify(config),{mode:0o600});
|
||||
let sandbox=false;
|
||||
try{
|
||||
console.log('P1 isolated acceptance root',root,'nice',execFileSync('nice',{encoding:'utf8'}).trim());
|
||||
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']);await wait(port);
|
||||
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);
|
||||
console.log('set empty',JSON.stringify(await request('/v8/management/config/access/api-keys',{method:'PUT',key:'p1-management',body:[]})));
|
||||
console.log('empty list missing key',JSON.stringify(await request('/v1/models',{key:null})).slice(0,400));
|
||||
console.log('restore list',JSON.stringify(await request('/v8/management/config/access/api-keys',{method:'PUT',key:'p1-management',body:['p1-client']})));
|
||||
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'})));
|
||||
await serve((q,s)=>{
|
||||
forwarded.push({method:q.method,path:q.url,origin:q.headers.origin??null});
|
||||
if(sandbox)s.setHeader('Content-Security-Policy','sandbox allow-scripts allow-forms');
|
||||
// Minimal /proxy/ prefix strip. Cookies stay host-only SameSite=Lax for browser checks.
|
||||
s.setHeader('Set-Cookie','p1-session=owner; HttpOnly; SameSite=Lax; Path=/');
|
||||
const upstream=http.request({hostname:'127.0.0.1',port,path:q.url.replace(/^\/proxy\//,'/'),method:q.method,headers:{...q.headers,host:`127.0.0.1:${port}`}},r=>{s.statusCode=r.statusCode;for(const [k,v]of Object.entries(r.headers))if(!['content-security-policy','set-cookie','transfer-encoding'].includes(k))s.setHeader(k,v);r.pipe(s);});
|
||||
upstream.on('error',()=>{s.statusCode=502;s.end();});q.pipe(upstream);
|
||||
},forwardPort);
|
||||
const chrome=launch('/usr/bin/chromium',['--headless','--no-sandbox','--disable-dev-shm-usage','--disable-background-networking','--no-first-run','--remote-allow-origins=*','--remote-debugging-port=19222',`--user-data-dir=${root}/chromium`,'about:blank']);await wait(19222);
|
||||
const targets=await (await fetch('http://127.0.0.1:19222/json')).json();
|
||||
const ws=new WebSocket(targets.find(t=>t.type==='page').webSocketDebuggerUrl);await new Promise((r,j)=>{ws.onopen=r;ws.onerror=j;});
|
||||
let serial=0;const pending=new Map(),exceptions=[];
|
||||
ws.onmessage=e=>{const m=JSON.parse(e.data);if(m.id){const p=pending.get(m.id);pending.delete(m.id);m.error?p.reject(Error(JSON.stringify(m.error))):p.resolve(m.result);}else if(m.method==='Runtime.exceptionThrown')exceptions.push(m.params.exceptionDetails.text+' '+(m.params.exceptionDetails.exception?.description??''));};
|
||||
const call=(method,params={})=>new Promise((resolve,reject)=>{const id=++serial;pending.set(id,{resolve,reject});ws.send(JSON.stringify({id,method,params}));});
|
||||
const evaluate=async expression=>(await call('Runtime.evaluate',{expression,returnByValue:true,awaitPromise:true}));
|
||||
await call('Runtime.enable');await call('Page.enable');
|
||||
for(const mode of ['plain','sandbox']){
|
||||
sandbox=mode==='sandbox';exceptions.length=0;forwarded.length=0;
|
||||
await call('Page.navigate',{url:`http://127.0.0.1:${forwardPort}/proxy/management.html`});await delay(2500);
|
||||
console.log('panel',mode,'initial',JSON.stringify(await evaluate(`({text:document.body.innerText.slice(0,1800),inputs:[...document.querySelectorAll('input')].map(x=>({type:x.type,placeholder:x.placeholder,value:x.value})),buttons:[...document.querySelectorAll('button')].map(x=>x.innerText)})`)));
|
||||
console.log('panel',mode,'storage',JSON.stringify(await evaluate(`(()=>{try{return {available:!!localStorage}}catch(e){return {error:e.name,message:e.message}}})()`)));
|
||||
// React input setter; same panel base URL explicitly includes the forward prefix.
|
||||
console.log('panel',mode,'login interaction',JSON.stringify(await evaluate(`(()=>{const inputs=[...document.querySelectorAll('input')];const setter=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value').set;const base=inputs.find(x=>x.type!=='password'&&x.type!=='checkbox');if(base){setter.call(base,'http://127.0.0.1:${forwardPort}/proxy');base.dispatchEvent(new Event('input',{bubbles:true}));}const pass=inputs.find(x=>x.type==='password');if(pass){setter.call(pass,'p1-management');pass.dispatchEvent(new Event('input',{bubbles:true}));}return inputs.map(x=>({type:x.type,value:x.type==='password'?'[fixture]':x.value}));})()`)));
|
||||
await delay(300);await evaluate(`(()=>{const b=[...document.querySelectorAll('button')].find(x=>/connect|login|登录|连接/i.test(x.innerText));b?.click();return b?.innerText})()`);await delay(2500);
|
||||
console.log('panel',mode,'after login',JSON.stringify(await evaluate(`document.body.innerText.slice(0,2000)`)));
|
||||
console.log('panel',mode,'requests',JSON.stringify(forwarded));console.log('panel',mode,'exceptions',JSON.stringify(exceptions));
|
||||
}
|
||||
ws.close();chrome.kill('SIGTERM');
|
||||
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();}
|
||||
@@ -0,0 +1,24 @@
|
||||
P1 isolated acceptance root /mnt/storage/scratch/tmp/8ISEhA nice 19
|
||||
binary sha256 74661f8cf949977870231359e8bf4344e07946766a673c08fa25a3e5f72fc95e
|
||||
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
|
||||
set empty {"status":200,"body":"{\"config-version\":8,\"status\":\"ok\"}"}
|
||||
empty list missing key {"status":200,"body":"{\"data\":[{\"created\":1790035200,\"id\":\"claude-opus-5-5\",\"object\":\"model\",\"owned_by\":\"anthropic\"},{\"created\":1790553600,\"id\":\"claude-sonnet-5-5\",\"object\":\"model\",\"owned_by\":\"anthropic\"},{\"created\":1771372800,\"id\":\"claude-sonnet-4-6\",\"object\":\"model\",\"owned_by\":\"anthropic\"},{\"created\":1761955200,\"id\":\"claude-opus-4-5-20251101\",\"o
|
||||
restore list {"status":200,"body":"{\"config-version\":8,\"status\":\"ok\"}"}
|
||||
v8 key list {"status":200,"body":"[\"p1-client\"]"}
|
||||
oauth start anthropic {"status":200,"body":"{\"state\":\"af67f8526eb8f4792176cc993e075918\",\"status\":\"ok\",\"url\":\"https://claude.ai/oauth/authorize?client_id=9d1c250a-e61b-44d9-88ed-5944d1962f5e\\u0026code=true\\u0026code_challenge=wGjdwRiW53ZfqkGcLHH1Zsw1uFd52D7Xa0SV3adjrrY\\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=af67f8526eb8f4792176cc993e075918\"}"}
|
||||
oauth start codex {"status":200,"body":"{\"state\":\"7e5a897426689fed007f2e9c23690c96\",\"status\":\"ok\",\"url\":\"https://auth.openai.com/oauth/authorize?client_id=app_EMoamEEZ73f0CkXaXp7hrann\\u0026code_challenge=CEFWFTzNF-gcf0IClzK7lZBoJmRqf5X49ZTczY86QTQ\\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=7e5a897426689fed007f2e9c23690c96\"}"}
|
||||
panel plain initial {"result":{"type":"object","value":{"text":"CLI\nPROXY\nAPI\nCLI Proxy API Management Center\nEnglish\nConnect to CLI Proxy API v8 or later\nCurrent URL\nhttp://127.0.0.1:18319\nThe system will automatically use the current URL for connection\nCustom Connection URL:\nManagement Key:\nRemember password\nLogin","inputs":[{"type":"checkbox","placeholder":"","value":"on"},{"type":"password","placeholder":"Enter the management key","value":""},{"type":"checkbox","placeholder":"","value":"on"}],"buttons":["English","","Login"]}}}
|
||||
panel plain storage {"result":{"type":"object","value":{"available":true}}}
|
||||
panel plain login interaction {"result":{"type":"object","value":[{"type":"checkbox","value":"on"},{"type":"password","value":"[fixture]"},{"type":"checkbox","value":"on"}]}}
|
||||
panel plain after login {"result":{"type":"string","value":"Success:\nConnected\nCPAMC\nCLI Proxy API Console\nOPERATE\nDashboard\nQuick Start\nGATEWAY\nAI Providers\nAuth Files\nAuthentication files: 0\nOAuth Login\nOBSERVE\nQuota Management\nLogs Viewer\nCONTROL\nConfig Panel\nPlugins\nPlugin Store\nManagement Center Info\nQuiet for now.\n\nv8.0.42 · Connected\n\nManage providers\nInspect logs\n→\nREQUESTS HANDLED\nLIVE\n0\nRolling 3h 20m window · 10-minute buckets\nSuccess\n0\nFailure\n0\nSuccess rate\n—\nAcross 0 requests in the window\nCredentials\n0\n0 active · 0 not serving\nProvider keys\n1\nAPI keys configured across all brands\nModels\n19\nServed through the proxy endpoint\nLIVE TRAFFIC\nThroughput, ten minutes at a time\n\nSuccess and failure counts per 10-minute bucket across the last 3h 20m. Hover a column for its exact split.\n\nSuccess\n0\nFailure\n0\n4\n3\n2\n1\n0\n\nNo requests\n\n11:00\n12:30\n14:10\nData table\nFLEET\nEvery provider, side by side\n\nVolume and success rate per provider over the same window.\n\n01\nClaude\nCredentials: 1\n0\nrequests\n—\nHEALTH\nCredential status\n\nNo credential files found.\n\nRUNTIME\nConfiguration at a glance\nRouting strategy\nfill-first (prioritize)\nRequest retry\n0\nManagement keys\n1\nServer version\n8.0.42\nBuild date\n10/24/2026\nUpstream proxy\n—\nDebug\nNo\nFile logging\nNo\nRequest log\nNo\nWebSocket auth\nYes\nModel prefix\nNo\nEdit configuration →\nNEXT\nWhere to go from here\nAI Providers\nAdd API keys, set priorities, and test brands.\n→\nAuth Files\nUpload, refresh, and disable OAuth credentials.\n→\nConfig Panel\nTune routing, retries, logging, and access.\n→\nQuota Management\nCheck remaining quota per credential.\n→\nLogs Viewer\nTail requests and download error reports.\n→\nManagement Center Info\nVersion details and management center info.\n→"}}
|
||||
panel plain requests [{"method":"GET","path":"/proxy/management.html","origin":null},{"method":"GET","path":"/v8/management/config","origin":null},{"method":"GET","path":"/v1/models","origin":null},{"method":"GET","path":"/v8/management/observability/usage/api-keys","origin":null},{"method":"GET","path":"/v8/management/credentials","origin":null},{"method":"GET","path":"/v8/management/plugins","origin":null},{"method":"GET","path":"/v8/management/credentials","origin":null}]
|
||||
panel plain exceptions []
|
||||
panel sandbox initial {"result":{"type":"object","value":{"text":"CLI\nPROXY\nAPI\nCLI Proxy API Management Center\nEnglish\nConnect to CLI Proxy API v8 or later\nCurrent URL\nhttp://127.0.0.1:18319\nThe system will automatically use the current URL for connection\nCustom Connection URL:\nManagement Key:\nRemember password\nLogin","inputs":[{"type":"checkbox","placeholder":"","value":"on"},{"type":"password","placeholder":"Enter the management key","value":""},{"type":"checkbox","placeholder":"","value":"on"}],"buttons":["English","","Login"]}}}
|
||||
panel sandbox storage {"result":{"type":"object","value":{"error":"SecurityError","message":"Failed to read the 'localStorage' property from 'Window': The document is sandboxed and lacks the 'allow-same-origin' flag."}}}
|
||||
panel sandbox login interaction {"result":{"type":"object","value":[{"type":"checkbox","value":"on"},{"type":"password","value":"[fixture]"},{"type":"checkbox","value":"on"}]}}
|
||||
panel sandbox after login {"result":{"type":"string","value":"Error:\nLogin failed: Connection failed, please check the server address, Management API, and management key\nCLI\nPROXY\nAPI\nCLI Proxy API Management Center\nEnglish\nConnect to CLI Proxy API v8 or later\nCurrent URL\nhttp://127.0.0.1:18319\nThe system will automatically use the current URL for connection\nCustom Connection URL:\nManagement Key:\nRemember password\nLogin\nConnection failed, please check the server address, Management API, and management key"}}
|
||||
panel sandbox requests [{"method":"GET","path":"/proxy/management.html","origin":null}]
|
||||
panel sandbox exceptions ["Uncaught (in promise) SecurityError: Failed to read the 'localStorage' property from 'Window': The document is sandboxed and lacks the 'allow-same-origin' flag.\n at Array.forEach (<anonymous>)\n at Object.migratePlaintextKeys (http://127.0.0.1:18319/proxy/management.html:20:667941)\n at http://127.0.0.1:18319/proxy/management.html:28:32103\n at restoreSession (http://127.0.0.1:18319/proxy/management.html:28:32640)\n at http://127.0.0.1:18319/proxy/management.html:28:38065\n at http://127.0.0.1:18319/proxy/management.html:28:38198\n at Uc (http://127.0.0.1:18319/proxy/management.html:16:92011)\n at kl (http://127.0.0.1:18319/proxy/management.html:16:107191)\n at Ol (http://127.0.0.1:18319/proxy/management.html:16:107075)\n at kl (http://127.0.0.1:18319/proxy/management.html:16:107956)"]
|
||||
acceptance probes complete
|
||||
@@ -0,0 +1,24 @@
|
||||
P1 isolated acceptance root /mnt/storage/scratch/tmp/6vQIwX nice 19
|
||||
binary sha256 74661f8cf949977870231359e8bf4344e07946766a673c08fa25a3e5f72fc95e
|
||||
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
|
||||
set empty {"status":200,"body":"{\"config-version\":8,\"status\":\"ok\"}"}
|
||||
empty list missing key {"status":200,"body":"{\"data\":[{\"created\":1784038800,\"id\":\"claude-opus-5\",\"object\":\"model\",\"owned_by\":\"anthropic\"},{\"created\":1788220800,\"id\":\"claude-fable-5-1\",\"object\":\"model\",\"owned_by\":\"anthropic\"},{\"created\":1790035200,\"id\":\"claude-opus-5-5\",\"object\":\"model\",\"owned_by\":\"anthropic\"},{\"created\":1722945600,\"id\":\"claude-opus-4-1-20250805\",\"object
|
||||
restore list {"status":200,"body":"{\"config-version\":8,\"status\":\"ok\"}"}
|
||||
v8 key list {"status":200,"body":"[\"p1-client\"]"}
|
||||
oauth start anthropic {"status":200,"body":"{\"state\":\"ebd42dd044fe6d4e323d3bdd811c218a\",\"status\":\"ok\",\"url\":\"https://claude.ai/oauth/authorize?client_id=9d1c250a-e61b-44d9-88ed-5944d1962f5e\\u0026code=true\\u0026code_challenge=wafpAcg4CdRK7vCe7ACV9v1KVSQCfcOeXufSGYILEAo\\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=ebd42dd044fe6d4e323d3bdd811c218a\"}"}
|
||||
oauth start codex {"status":200,"body":"{\"state\":\"72fee3ade3eea92eee1bcad0eb81f3ef\",\"status\":\"ok\",\"url\":\"https://auth.openai.com/oauth/authorize?client_id=app_EMoamEEZ73f0CkXaXp7hrann\\u0026code_challenge=9nJBzjGru1PmMjvatWfktJ6Y2OTGuEl7KgRlyMw9OA8\\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=72fee3ade3eea92eee1bcad0eb81f3ef\"}"}
|
||||
panel plain initial {"result":{"type":"object","value":{"text":"CLI\nPROXY\nAPI\nCLI Proxy API Management Center\nEnglish\nConnect to CLI Proxy API v8 or later\nCurrent URL\nhttp://127.0.0.1:18319\nThe system will automatically use the current URL for connection\nCustom Connection URL:\nManagement Key:\nRemember password\nLogin","inputs":[{"type":"checkbox","placeholder":"","value":"on"},{"type":"password","placeholder":"Enter the management key","value":""},{"type":"checkbox","placeholder":"","value":"on"}],"buttons":["English","","Login"]}}}
|
||||
panel plain storage {"result":{"type":"object","value":{"available":true}}}
|
||||
panel plain login interaction {"result":{"type":"object","value":[{"type":"checkbox","value":"on"},{"type":"text","value":"http://127.0.0.1:18319/proxy"},{"type":"password","value":"[fixture]"},{"type":"checkbox","value":"on"}]}}
|
||||
panel plain after login {"result":{"type":"string","value":"Success:\nConnected\nCPAMC\nCLI Proxy API Console\nOPERATE\nDashboard\nQuick Start\nGATEWAY\nAI Providers\nAuth Files\nAuthentication files: 0\nOAuth Login\nOBSERVE\nQuota Management\nLogs Viewer\nCONTROL\nConfig Panel\nPlugins\nPlugin Store\nManagement Center Info\nQuiet for now.\n\nv8.0.42 · Connected\n\nManage providers\nInspect logs\n→\nREQUESTS HANDLED\nLIVE\n0\nRolling 3h 20m window · 10-minute buckets\nSuccess\n0\nFailure\n0\nSuccess rate\n—\nAcross 0 requests in the window\nCredentials\n0\n0 active · 0 not serving\nProvider keys\n1\nAPI keys configured across all brands\nModels\n19\nServed through the proxy endpoint\nLIVE TRAFFIC\nThroughput, ten minutes at a time\n\nSuccess and failure counts per 10-minute bucket across the last 3h 20m. Hover a column for its exact split.\n\nSuccess\n0\nFailure\n0\n4\n3\n2\n1\n0\n\nNo requests\n\n11:00\n12:30\n14:10\nData table\nFLEET\nEvery provider, side by side\n\nVolume and success rate per provider over the same window.\n\n01\nClaude\nCredentials: 1\n0\nrequests\n—\nHEALTH\nCredential status\n\nNo credential files found.\n\nRUNTIME\nConfiguration at a glance\nRouting strategy\nfill-first (prioritize)\nRequest retry\n0\nManagement keys\n1\nServer version\n8.0.42\nBuild date\n10/24/2026\nUpstream proxy\n—\nDebug\nNo\nFile logging\nNo\nRequest log\nNo\nWebSocket auth\nYes\nModel prefix\nNo\nEdit configuration →\nNEXT\nWhere to go from here\nAI Providers\nAdd API keys, set priorities, and test brands.\n→\nAuth Files\nUpload, refresh, and disable OAuth credentials.\n→\nConfig Panel\nTune routing, retries, logging, and access.\n→\nQuota Management\nCheck remaining quota per credential.\n→\nLogs Viewer\nTail requests and download error reports.\n→\nManagement Center Info\nVersion details and management center info.\n→"}}
|
||||
panel plain requests [{"method":"GET","path":"/proxy/management.html","origin":null,"cookie":false},{"method":"GET","path":"/proxy/v8/management/config","origin":null,"cookie":true},{"method":"GET","path":"/proxy/v1/models","origin":null,"cookie":true},{"method":"GET","path":"/proxy/v8/management/observability/usage/api-keys","origin":null,"cookie":true},{"method":"GET","path":"/proxy/v8/management/credentials","origin":null,"cookie":true},{"method":"GET","path":"/proxy/v8/management/plugins","origin":null,"cookie":true},{"method":"GET","path":"/proxy/v8/management/credentials","origin":null,"cookie":true}]
|
||||
panel plain exceptions []
|
||||
panel sandbox initial {"result":{"type":"object","value":{"text":"CLI\nPROXY\nAPI\nCLI Proxy API Management Center\nEnglish\nConnect to CLI Proxy API v8 or later\nCurrent URL\nhttp://127.0.0.1:18319\nThe system will automatically use the current URL for connection\nCustom Connection URL:\nManagement Key:\nRemember password\nLogin","inputs":[{"type":"checkbox","placeholder":"","value":"on"},{"type":"password","placeholder":"Enter the management key","value":""},{"type":"checkbox","placeholder":"","value":"on"}],"buttons":["English","","Login"]}}}
|
||||
panel sandbox storage {"result":{"type":"object","value":{"error":"SecurityError","message":"Failed to read the 'localStorage' property from 'Window': The document is sandboxed and lacks the 'allow-same-origin' flag."}}}
|
||||
panel sandbox login interaction {"result":{"type":"object","value":[{"type":"checkbox","value":"on"},{"type":"text","value":"http://127.0.0.1:18319/proxy"},{"type":"password","value":"[fixture]"},{"type":"checkbox","value":"on"}]}}
|
||||
panel sandbox after login {"result":{"type":"string","value":"Error:\nLogin failed: Connection failed, please check the server address, Management API, and management key\nCLI\nPROXY\nAPI\nCLI Proxy API Management Center\nEnglish\nConnect to CLI Proxy API v8 or later\nCurrent URL\nhttp://127.0.0.1:18319/proxy\nThe system will automatically use the current URL for connection\nCustom Connection URL:\nCustom Connection URL:\nBy default the current URL is used. Override it here if needed.\nManagement Key:\nRemember password\nLogin\nConnection failed, please check the server address, Management API, and management key"}}
|
||||
panel sandbox requests [{"method":"GET","path":"/proxy/management.html","origin":null,"cookie":true}]
|
||||
panel sandbox exceptions ["Uncaught (in promise) SecurityError: Failed to read the 'localStorage' property from 'Window': The document is sandboxed and lacks the 'allow-same-origin' flag.\n at Array.forEach (<anonymous>)\n at Object.migratePlaintextKeys (http://127.0.0.1:18319/proxy/management.html:20:667941)\n at http://127.0.0.1:18319/proxy/management.html:28:32103\n at restoreSession (http://127.0.0.1:18319/proxy/management.html:28:32640)\n at http://127.0.0.1:18319/proxy/management.html:28:38065\n at http://127.0.0.1:18319/proxy/management.html:28:38198\n at Uc (http://127.0.0.1:18319/proxy/management.html:16:92011)\n at kl (http://127.0.0.1:18319/proxy/management.html:16:107191)\n at Ol (http://127.0.0.1:18319/proxy/management.html:16:107075)\n at kl (http://127.0.0.1:18319/proxy/management.html:16:107956)"]
|
||||
acceptance probes complete
|
||||
@@ -0,0 +1,29 @@
|
||||
P1 isolated acceptance root /mnt/storage/scratch/tmp/lL0kGM nice 19
|
||||
binary sha256 74661f8cf949977870231359e8bf4344e07946766a673c08fa25a3e5f72fc95e
|
||||
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
|
||||
set empty {"status":200,"body":"{\"config-version\":8,\"status\":\"ok\"}"}
|
||||
empty list missing key {"status":401,"body":"{\"error\":\"Missing API key\"}"}
|
||||
restore list {"status":200,"body":"{\"config-version\":8,\"status\":\"ok\"}"}
|
||||
revoke client {"status":200,"body":"{\"config-version\":8,\"status\":\"ok\"}"}
|
||||
revoked key models {"status":200,"body":"{\"data\":[{\"created\":1770318000,\"id\":\"claude-opus-4-6\",\"object\":\"model\",\"owned_by\":\"anthropic\"},{\"created\":1779984000,\"id\":\"claude-opus-4-8\",\"object\":\"model\",\"owned_by\":\"anthropic\"},{\"created\":1782777600,\"id\":\"claude-sonnet-5\",\"object\":\"model\",\"owned_by\":\"anthropic\"},{\"created\":1715644800,\"id\":\"claude-sonnet-4-20250514\",\"object\":\"model\",\"owned_by\":\"anthropic\"},{\"created\":1781049600,\"id\":\"claude-fable-5\",\"object\":\"model\",\"owned_by\":\"anthropic\"},{\"created\":1708300800,\"id\":\"claude-3-7-sonnet-20250219\",\"object\":\"model\",\"owned_by\":\"anthropic\"},{\"created\":1790553600,\"id\":\"claude-haiku-5-5\",\"object\":\"model\",\"owned_by\":\"anthropic\"},{\"created\":1759276800,\"id\":\"claude-haiku-4-5-20251001\",\"object\":\"model\",\"owned_by\":\"anthropic\"},{\"created\":1759104000,\"id\":\"claude-sonnet-4-5-20250929\",\"object\":\"model\",\"owned_by\":\"anthropic\"},{\"created\":1776297600,\"id\":\"claude-opus-4-7\",\"object\":\"model\",\"owned_by\":\"anthropic\"},{\"created\":1788220800,\"id\":\"claude-fable-5-1\",\"object\":\"model\",\"owned_by\":\"anthropic\"},{\"created\":1722945600,\"id\":\"claude-opus-4-1-20250805\",\"object\":\"model\",\"owned_by\":\"anthropic\"},{\"created\":1729555200,\"id\":\"claude-3-5-haiku-20241022\",\"object\":\"model\",\"owned_by\":\"anthropic\"},{\"created\":1784038800,\"id\":\"claude-opus-5\",\"object\":\"model\",\"owned_by\":\"anthropic\"},{\"created\":1790553600,\"id\":\"claude-sonnet-5-5\",\"object\":\"model\",\"owned_by\":\"anthropic\"},{\"created\":1761955200,\"id\":\"claude-opus-4-5-20251101\",\"object\":\"model\",\"owned_by\":\"anthropic\"},{\"created\":1715644800,\"id\":\"claude-opus-4-20250514\",\"object\":\"model\",\"owned_by\":\"anthropic\"},{\"created\":1790035200,\"id\":\"claude-opus-5-5\",\"object\":\"model\",\"owned_by\":\"anthropic\"},{\"created\":1771372800,\"id\":\"claude-sonnet-4-6\",\"object\":\"model\",\"owned_by\":\"anthropic\"}],\"object\":\"list\"}"}
|
||||
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\"}"}
|
||||
v8 key list {"status":200,"body":"[\"p1-client\"]"}
|
||||
oauth start anthropic {"status":200,"body":"{\"state\":\"a0cd187b9b9942d03edb297157bfa916\",\"status\":\"ok\",\"url\":\"https://claude.ai/oauth/authorize?client_id=9d1c250a-e61b-44d9-88ed-5944d1962f5e\\u0026code=true\\u0026code_challenge=6XydCnDQEdejS9qEqjWNITiWM13vmW36zA4Ac8MPWrw\\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=a0cd187b9b9942d03edb297157bfa916\"}"}
|
||||
oauth start codex {"status":200,"body":"{\"state\":\"52ca455a3a19b8a3fa63fd60f0ffa057\",\"status\":\"ok\",\"url\":\"https://auth.openai.com/oauth/authorize?client_id=app_EMoamEEZ73f0CkXaXp7hrann\\u0026code_challenge=MQ7OWiP34eI38fQS06R495Sq-C-I-Fekol-vfUtbMpc\\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=52ca455a3a19b8a3fa63fd60f0ffa057\"}"}
|
||||
panel plain initial {"result":{"type":"object","value":{"text":"CLI\nPROXY\nAPI\nCLI Proxy API Management Center\nEnglish\nConnect to CLI Proxy API v8 or later\nCurrent URL\nhttp://127.0.0.1:18319\nThe system will automatically use the current URL for connection\nCustom Connection URL:\nManagement Key:\nRemember password\nLogin","inputs":[{"type":"checkbox","placeholder":"","value":"on"},{"type":"password","placeholder":"Enter the management key","value":""},{"type":"checkbox","placeholder":"","value":"on"}],"buttons":["English","","Login"]}}}
|
||||
panel plain storage {"result":{"type":"object","value":{"available":true}}}
|
||||
panel plain login interaction {"result":{"type":"object","value":[{"type":"checkbox","value":"on"},{"type":"text","value":"http://127.0.0.1:18319/proxy"},{"type":"password","value":"[fixture]"},{"type":"checkbox","value":"on"}]}}
|
||||
panel plain after login {"result":{"type":"string","value":"Success:\nConnected\nCPAMC\nCLI Proxy API Console\nOPERATE\nDashboard\nQuick Start\nGATEWAY\nAI Providers\nAuth Files\nAuthentication files: 0\nOAuth Login\nOBSERVE\nQuota Management\nLogs Viewer\nCONTROL\nConfig Panel\nPlugins\nPlugin Store\nManagement Center Info\nQuiet for now.\n\nv8.0.42 · Connected\n\nManage providers\nInspect logs\n→\nREQUESTS HANDLED\nLIVE\n0\nRolling 3h 20m window · 10-minute buckets\nSuccess\n0\nFailure\n0\nSuccess rate\n—\nAcross 0 requests in the window\nCredentials\n0\n0 active · 0 not serving\nProvider keys\n1\nAPI keys configured across all brands\nModels\n19\nServed through the proxy endpoint\nLIVE TRAFFIC\nThroughput, ten minutes at a time\n\nSuccess and failure counts per 10-minute bucket across the last 3h 20m. Hover a column for its exact split.\n\nSuccess\n0\nFailure\n0\n4\n3\n2\n1\n0\n\nNo requests\n\n11:00\n12:30\n14:10\nData table\nFLEET\nEvery provider, side by side\n\nVolume and success rate per provider over the same window.\n\n01\nClaude\nCredentials: 1\n0\nrequests\n—\nHEALTH\nCredential status\n\nNo credential files found.\n\nRUNTIME\nConfiguration at a glance\nRouting strategy\nfill-first (prioritize)\nRequest retry\n0\nManagement keys\n1\nServer version\n8.0.42\nBuild date\n10/24/2026\nUpstream proxy\n—\nDebug\nNo\nFile logging\nNo\nRequest log\nNo\nWebSocket auth\nYes\nModel prefix\nNo\nEdit configuration →\nNEXT\nWhere to go from here\nAI Providers\nAdd API keys, set priorities, and test brands.\n→\nAuth Files\nUpload, refresh, and disable OAuth credentials.\n→\nConfig Panel\nTune routing, retries, logging, and access.\n→\nQuota Management\nCheck remaining quota per credential.\n→\nLogs Viewer\nTail requests and download error reports.\n→\nManagement Center Info\nVersion details and management center info.\n→"}}
|
||||
panel plain requests [{"method":"GET","path":"/proxy/management.html","origin":null,"cookie":false},{"method":"GET","path":"/proxy/v8/management/config","origin":null,"cookie":true},{"method":"GET","path":"/proxy/v1/models","origin":null,"cookie":true},{"method":"GET","path":"/proxy/v8/management/observability/usage/api-keys","origin":null,"cookie":true},{"method":"GET","path":"/proxy/v8/management/credentials","origin":null,"cookie":true},{"method":"GET","path":"/proxy/v8/management/plugins","origin":null,"cookie":true},{"method":"GET","path":"/proxy/v8/management/credentials","origin":null,"cookie":true}]
|
||||
panel plain exceptions []
|
||||
panel sandbox initial {"result":{"type":"object","value":{"text":"CLI\nPROXY\nAPI\nCLI Proxy API Management Center\nEnglish\nConnect to CLI Proxy API v8 or later\nCurrent URL\nhttp://127.0.0.1:18319\nThe system will automatically use the current URL for connection\nCustom Connection URL:\nManagement Key:\nRemember password\nLogin","inputs":[{"type":"checkbox","placeholder":"","value":"on"},{"type":"password","placeholder":"Enter the management key","value":""},{"type":"checkbox","placeholder":"","value":"on"}],"buttons":["English","","Login"]}}}
|
||||
panel sandbox storage {"result":{"type":"object","value":{"error":"SecurityError","message":"Failed to read the 'localStorage' property from 'Window': The document is sandboxed and lacks the 'allow-same-origin' flag."}}}
|
||||
panel sandbox login interaction {"result":{"type":"object","value":[{"type":"checkbox","value":"on"},{"type":"text","value":"http://127.0.0.1:18319/proxy"},{"type":"password","value":"[fixture]"},{"type":"checkbox","value":"on"}]}}
|
||||
panel sandbox after login {"result":{"type":"string","value":"Error:\nLogin failed: Connection failed, please check the server address, Management API, and management key\nCLI\nPROXY\nAPI\nCLI Proxy API Management Center\nEnglish\nConnect to CLI Proxy API v8 or later\nCurrent URL\nhttp://127.0.0.1:18319/proxy\nThe system will automatically use the current URL for connection\nCustom Connection URL:\nCustom Connection URL:\nBy default the current URL is used. Override it here if needed.\nManagement Key:\nRemember password\nLogin\nConnection failed, please check the server address, Management API, and management key"}}
|
||||
panel sandbox requests [{"method":"GET","path":"/proxy/management.html","origin":null,"cookie":true}]
|
||||
panel sandbox exceptions ["Uncaught (in promise) SecurityError: Failed to read the 'localStorage' property from 'Window': The document is sandboxed and lacks the 'allow-same-origin' flag.\n at Array.forEach (<anonymous>)\n at Object.migratePlaintextKeys (http://127.0.0.1:18319/proxy/management.html:20:667941)\n at http://127.0.0.1:18319/proxy/management.html:28:32103\n at restoreSession (http://127.0.0.1:18319/proxy/management.html:28:32640)\n at http://127.0.0.1:18319/proxy/management.html:28:38065\n at http://127.0.0.1:18319/proxy/management.html:28:38198\n at Uc (http://127.0.0.1:18319/proxy/management.html:16:92011)\n at kl (http://127.0.0.1:18319/proxy/management.html:16:107191)\n at Ol (http://127.0.0.1:18319/proxy/management.html:16:107075)\n at kl (http://127.0.0.1:18319/proxy/management.html:16:107956)"]
|
||||
Claude Code wrong/revoked key wrong {"code":124,"signal":null} output ""
|
||||
Claude Code wrong/revoked key p1-revoked {"code":124,"signal":null} output ""
|
||||
acceptance probes complete
|
||||
@@ -0,0 +1,38 @@
|
||||
P1 isolated acceptance root /mnt/storage/scratch/tmp/BHI4SH nice 19
|
||||
binary sha256 74661f8cf949977870231359e8bf4344e07946766a673c08fa25a3e5f72fc95e
|
||||
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
|
||||
initial key list {"status":200,"body":"[\"p1-client\"]"}
|
||||
set empty {"status":200,"body":"{\"config-version\":8,\"status\":\"ok\"}"}
|
||||
empty list settled {"elapsedMs":3,"statuses":[200],"body":"[models]"}
|
||||
empty list missing key {"status":200,"body":"{\"data\":[{\"created\":1781049600,\"id\":\"claude-fable-5\",\"object\":\"model\",\"owned_by\":\"anthropic\"},{\"created\":1790553600,\"id\":\"claude-sonnet-5-5\",\"object\":\"model\",\"owned_by\":\"anthropic\"},{\"created\":1790553600,\"id\":\"claude-haiku-5-5\",\"object\":\"model\",\"owned_by\":\"anthropic\"},{\"created\":1761955200,\"id\":\"claude-opus-4-5-20251101\",\"obj
|
||||
restore list {"status":200,"body":"{\"config-version\":8,\"status\":\"ok\"}"}
|
||||
restored list settled wrong key {"elapsedMs":2,"statuses":[401],"body":"{\"error\":\"Invalid API key\"}"}
|
||||
revoke client {"status":200,"body":"{\"config-version\":8,\"status\":\"ok\"}"}
|
||||
revoked key settled {"elapsedMs":105,"statuses":[200,401],"body":"{\"error\":\"Invalid API key\"}"}
|
||||
revoked key models {"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\":\"9fbd1cc6e8fb1dfe7ef26eeaac10b5a3\",\"status\":\"ok\",\"url\":\"https://claude.ai/oauth/authorize?client_id=9d1c250a-e61b-44d9-88ed-5944d1962f5e\\u0026code=true\\u0026code_challenge=yuyxfaZNMNV8yaScQpPVAoQHZ7x57Nplm4RILV_bcvo\\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=9fbd1cc6e8fb1dfe7ef26eeaac10b5a3\"}"}
|
||||
oauth start codex {"status":200,"body":"{\"state\":\"d025c2006ff67ef05723a546f752157c\",\"status\":\"ok\",\"url\":\"https://auth.openai.com/oauth/authorize?client_id=app_EMoamEEZ73f0CkXaXp7hrann\\u0026code_challenge=RZa2vkdSvNJgTuMi11Vn2b7uisoOimt7XdjjFClY1AE\\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=d025c2006ff67ef05723a546f752157c\"}"}
|
||||
panel plain initial {"result":{"type":"object","value":{"text":"CLI\nPROXY\nAPI\nCLI Proxy API Management Center\nEnglish\nConnect to CLI Proxy API v8 or later\nCurrent URL\nhttp://127.0.0.1:18319\nThe system will automatically use the current URL for connection\nCustom Connection URL:\nManagement Key:\nRemember password\nLogin","inputs":[{"type":"checkbox","placeholder":"","value":"on"},{"type":"password","placeholder":"Enter the management key","value":""},{"type":"checkbox","placeholder":"","value":"on"}],"buttons":["English","","Login"]}}}
|
||||
panel plain storage {"result":{"type":"object","value":{"available":true}}}
|
||||
panel plain login interaction {"result":{"type":"object","value":[{"type":"checkbox","value":"on"},{"type":"text","value":"http://127.0.0.1:18319/proxy"},{"type":"password","value":"[fixture]"},{"type":"checkbox","value":"on"}]}}
|
||||
panel plain after login {"result":{"type":"string","value":"Success:\nConnected\nCPAMC\nCLI Proxy API Console\nOPERATE\nDashboard\nQuick Start\nGATEWAY\nAI Providers\nAuth Files\nAuthentication files: 0\nOAuth Login\nOBSERVE\nQuota Management\nLogs Viewer\nCONTROL\nConfig Panel\nPlugins\nPlugin Store\nManagement Center Info\nQuiet for now.\n\nv8.0.42 · Connected\n\nManage providers\nInspect logs\n→\nREQUESTS HANDLED\nLIVE\n0\nRolling 3h 20m window · 10-minute buckets\nSuccess\n0\nFailure\n0\nSuccess rate\n—\nAcross 0 requests in the window\nCredentials\n0\n0 active · 0 not serving\nProvider keys\n1\nAPI keys configured across all brands\nModels\n19\nServed through the proxy endpoint\nLIVE TRAFFIC\nThroughput, ten minutes at a time\n\nSuccess and failure counts per 10-minute bucket across the last 3h 20m. Hover a column for its exact split.\n\nSuccess\n0\nFailure\n0\n4\n3\n2\n1\n0\n\nNo requests\n\n11:10\n12:40\n14:20\nData table\nFLEET\nEvery provider, side by side\n\nVolume and success rate per provider over the same window.\n\n01\nClaude\nCredentials: 1\n0\nrequests\n—\nHEALTH\nCredential status\n\nNo credential files found.\n\nRUNTIME\nConfiguration at a glance\nRouting strategy\nfill-first (prioritize)\nRequest retry\n0\nManagement keys\n1\nServer version\n8.0.42\nBuild date\n10/24/2026\nUpstream proxy\n—\nDebug\nNo\nFile logging\nNo\nRequest log\nNo\nWebSocket auth\nYes\nModel prefix\nNo\nEdit configuration →\nNEXT\nWhere to go from here\nAI Providers\nAdd API keys, set priorities, and test brands.\n→\nAuth Files\nUpload, refresh, and disable OAuth credentials.\n→\nConfig Panel\nTune routing, retries, logging, and access.\n→\nQuota Management\nCheck remaining quota per credential.\n→\nLogs Viewer\nTail requests and download error reports.\n→\nManagement Center Info\nVersion details and management center info.\n→"}}
|
||||
panel plain requests [{"method":"GET","path":"/proxy/management.html","origin":null,"cookie":false},{"method":"GET","path":"/proxy/v8/management/config","origin":null,"cookie":true},{"method":"GET","path":"/proxy/v1/models","origin":null,"cookie":true},{"method":"GET","path":"/proxy/v8/management/observability/usage/api-keys","origin":null,"cookie":true},{"method":"GET","path":"/proxy/v8/management/credentials","origin":null,"cookie":true},{"method":"GET","path":"/proxy/v8/management/plugins","origin":null,"cookie":true},{"method":"GET","path":"/proxy/v8/management/credentials","origin":null,"cookie":true}]
|
||||
panel plain exceptions []
|
||||
panel sandbox initial {"result":{"type":"object","value":{"text":"CLI\nPROXY\nAPI\nCLI Proxy API Management Center\nEnglish\nConnect to CLI Proxy API v8 or later\nCurrent URL\nhttp://127.0.0.1:18319\nThe system will automatically use the current URL for connection\nCustom Connection URL:\nManagement Key:\nRemember password\nLogin","inputs":[{"type":"checkbox","placeholder":"","value":"on"},{"type":"password","placeholder":"Enter the management key","value":""},{"type":"checkbox","placeholder":"","value":"on"}],"buttons":["English","","Login"]}}}
|
||||
panel sandbox storage {"result":{"type":"object","value":{"error":"SecurityError","message":"Failed to read the 'localStorage' property from 'Window': The document is sandboxed and lacks the 'allow-same-origin' flag."}}}
|
||||
panel sandbox login interaction {"result":{"type":"object","value":[{"type":"checkbox","value":"on"},{"type":"text","value":"http://127.0.0.1:18319/proxy"},{"type":"password","value":"[fixture]"},{"type":"checkbox","value":"on"}]}}
|
||||
panel sandbox after login {"result":{"type":"string","value":"Error:\nLogin failed: Connection failed, please check the server address, Management API, and management key\nCLI\nPROXY\nAPI\nCLI Proxy API Management Center\nEnglish\nConnect to CLI Proxy API v8 or later\nCurrent URL\nhttp://127.0.0.1:18319/proxy\nThe system will automatically use the current URL for connection\nCustom Connection URL:\nCustom Connection URL:\nBy default the current URL is used. Override it here if needed.\nManagement Key:\nRemember password\nLogin\nConnection failed, please check the server address, Management API, and management key"}}
|
||||
panel sandbox requests [{"method":"GET","path":"/proxy/management.html","origin":null,"cookie":true}]
|
||||
panel sandbox exceptions ["Uncaught (in promise) SecurityError: Failed to read the 'localStorage' property from 'Window': The document is sandboxed and lacks the 'allow-same-origin' flag.\n at Array.forEach (<anonymous>)\n at Object.migratePlaintextKeys (http://127.0.0.1:18319/proxy/management.html:20:667941)\n at http://127.0.0.1:18319/proxy/management.html:28:32103\n at restoreSession (http://127.0.0.1:18319/proxy/management.html:28:32640)\n at http://127.0.0.1:18319/proxy/management.html:28:38065\n at http://127.0.0.1:18319/proxy/management.html:28:38198\n at Uc (http://127.0.0.1:18319/proxy/management.html:16:92011)\n at kl (http://127.0.0.1:18319/proxy/management.html:16:107191)\n at Ol (http://127.0.0.1:18319/proxy/management.html:16:107075)\n at kl (http://127.0.0.1:18319/proxy/management.html:16:107956)"]
|
||||
sandbox explicit null-origin fetch {"result":{"type":"object","value":{"error":"TypeError","message":"Failed to fetch"}}}
|
||||
sandbox explicit requests [{"method":"GET","path":"/proxy/management.html","origin":null,"cookie":true},{"method":"OPTIONS","path":"/proxy/v8/management/config/access/api-keys","origin":"null","cookie":false}]
|
||||
forward callback /proxy/callback?code=fixture 400
|
||||
forward callback /proxy/auth/callback?code=fixture 404
|
||||
Claude Code wrong/revoked key wrong {"code":124,"signal":null} output ""
|
||||
Claude Code wrong/revoked key p1-revoked {"code":124,"signal":null} output ""
|
||||
acceptance probes complete
|
||||
@@ -0,0 +1,103 @@
|
||||
// P1 acceptance only: run via acceptance.sh in a fresh private user/network namespace.
|
||||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
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=[];
|
||||
const delay=ms=>new Promise(r=>setTimeout(r,ms));
|
||||
const home=path.join(root,'home');fs.mkdirSync(home,{recursive:true});
|
||||
const env={HOME:home,PATH:'/usr/bin:/bin',LANG:'C.UTF-8'};
|
||||
const port=18318, forwardPort=18319;
|
||||
let upstreamCalls=0; const forwarded=[];
|
||||
const enforce=async(label,key,wanted)=>{const started=Date.now(),statuses=[];for(let i=0;i<50;i++){const r=await request('/v1/models',{key});statuses.push(r.status);if(r.status===wanted){console.log(label,JSON.stringify({elapsedMs:Date.now()-started,statuses,body:wanted===401?r.body:'[models]'}));return;}await delay(100);}throw Error(label+' enforcement absent '+JSON.stringify(statuses));};
|
||||
async function serve(handler, p){const s=http.createServer(handler);await new Promise(r=>s.listen(p,'127.0.0.1',r));servers.push(s);return s;}
|
||||
async function request(route,{method='GET',key='p1-client',body,management=false}={}){
|
||||
const r=await fetch(`http://127.0.0.1:${port}${route}`,{method,headers:{...(key?{Authorization:`Bearer ${key}`} : {}),...(body?{'Content-Type':'application/json'}:{})},body:body?JSON.stringify(body):undefined,signal:AbortSignal.timeout(5000)});
|
||||
const text=await r.text();return {status:r.status,body:text};
|
||||
}
|
||||
function launch(command,args,extra={}){const out=fs.openSync(path.join(root,`${children.length}.stdout`),'w');const c=spawn(command,args,{cwd:root,env,stdio:['ignore',out,out],...extra});fs.closeSync(out);children.push(c);return c;}
|
||||
async function wait(p){for(let i=0;i<100;i++){try{await fetch(`http://127.0.0.1:${p}`,{signal:AbortSignal.timeout(300)});return;}catch{}await delay(100);}throw Error(`listener ${p} absent`);}
|
||||
const config=initialConfig({dataRoot:root,port,key:'p1-management',sentinel:'p1-client'});
|
||||
config['api-keys']={claude:[{name:'standin','base-url':'http://127.0.0.1:18401',keys:[{'api-key':'p1-upstream'}]}]};
|
||||
config.oauth['auth-dir']=path.join(root,'auth');
|
||||
fs.mkdirSync(path.join(root,'auth'),{mode:0o700});fs.mkdirSync(path.join(root,'static'));
|
||||
fs.copyFileSync(path.join(assets,'management.html'),path.join(root,'static','management.html'));
|
||||
fs.writeFileSync(path.join(root,'config.yaml'),JSON.stringify(config),{mode:0o600});
|
||||
let sandbox=false;
|
||||
try{
|
||||
console.log('P1 isolated acceptance root',root,'nice',execFileSync('nice',{encoding:'utf8'}).trim());
|
||||
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');
|
||||
// Minimal /proxy/ prefix strip. Cookies stay host-only SameSite=Lax for browser checks.
|
||||
s.setHeader('Set-Cookie','p1-session=owner; HttpOnly; SameSite=Lax; Path=/');
|
||||
if(!q.url.startsWith('/proxy/')){s.statusCode=404;s.end('outside prefix');return;}
|
||||
const upstream=http.request({hostname:'127.0.0.1',port,path:q.url.replace(/^\/proxy\//,'/'),method:q.method,headers:{...q.headers,host:`127.0.0.1:${port}`}},r=>{s.statusCode=r.statusCode;for(const [k,v]of Object.entries(r.headers))if(!['content-security-policy','set-cookie','transfer-encoding'].includes(k))s.setHeader(k,v);r.pipe(s);});
|
||||
upstream.on('error',()=>{s.statusCode=502;s.end();});q.pipe(upstream);
|
||||
},forwardPort);
|
||||
const chrome=launch('/usr/bin/chromium',['--headless','--no-sandbox','--disable-dev-shm-usage','--disable-background-networking','--no-first-run','--remote-allow-origins=*','--remote-debugging-port=19222',`--user-data-dir=${root}/chromium`,'about:blank']);await wait(19222);
|
||||
const targets=await (await fetch('http://127.0.0.1:19222/json')).json();
|
||||
const ws=new WebSocket(targets.find(t=>t.type==='page').webSocketDebuggerUrl);await new Promise((r,j)=>{ws.onopen=r;ws.onerror=j;});
|
||||
let serial=0;const pending=new Map(),exceptions=[];
|
||||
ws.onmessage=e=>{const m=JSON.parse(e.data);if(m.id){const p=pending.get(m.id);pending.delete(m.id);m.error?p.reject(Error(JSON.stringify(m.error))):p.resolve(m.result);}else if(m.method==='Runtime.exceptionThrown')exceptions.push(m.params.exceptionDetails.text+' '+(m.params.exceptionDetails.exception?.description??''));};
|
||||
const call=(method,params={})=>new Promise((resolve,reject)=>{const id=++serial;pending.set(id,{resolve,reject});ws.send(JSON.stringify({id,method,params}));});
|
||||
const evaluate=async expression=>(await call('Runtime.evaluate',{expression,returnByValue:true,awaitPromise:true}));
|
||||
await call('Runtime.enable');await call('Page.enable');
|
||||
for(const mode of ['plain','sandbox']){
|
||||
sandbox=mode==='sandbox';exceptions.length=0;forwarded.length=0;
|
||||
await call('Page.navigate',{url:`http://127.0.0.1:${forwardPort}/proxy/management.html`});await delay(2500);
|
||||
console.log('panel',mode,'initial',JSON.stringify(await evaluate(`({text:document.body.innerText.slice(0,1800),inputs:[...document.querySelectorAll('input')].map(x=>({type:x.type,placeholder:x.placeholder,value:x.value})),buttons:[...document.querySelectorAll('button')].map(x=>x.innerText)})`)));
|
||||
console.log('panel',mode,'storage',JSON.stringify(await evaluate(`(()=>{try{return {available:!!localStorage}}catch(e){return {error:e.name,message:e.message}}})()`)));
|
||||
await evaluate(`document.querySelector('input[type=checkbox]')?.click()`);await delay(300);
|
||||
// React input setter; same panel base URL explicitly includes the forward prefix.
|
||||
console.log('panel',mode,'login interaction',JSON.stringify(await evaluate(`(()=>{const inputs=[...document.querySelectorAll('input')];const setter=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value').set;const base=inputs.find(x=>x.type!=='password'&&x.type!=='checkbox');if(base){setter.call(base,'http://127.0.0.1:${forwardPort}/proxy');base.dispatchEvent(new Event('input',{bubbles:true}));}const pass=inputs.find(x=>x.type==='password');if(pass){setter.call(pass,'p1-management');pass.dispatchEvent(new Event('input',{bubbles:true}));}return inputs.map(x=>({type:x.type,value:x.type==='password'?'[fixture]':x.value}));})()`)));
|
||||
await delay(300);await evaluate(`(()=>{const b=[...document.querySelectorAll('button')].find(x=>/connect|login|登录|连接/i.test(x.innerText));b?.click();return b?.innerText})()`);await delay(2500);
|
||||
console.log('panel',mode,'after login',JSON.stringify(await evaluate(`document.body.innerText.slice(0,2000)`)));
|
||||
console.log('panel',mode,'requests',JSON.stringify(forwarded));console.log('panel',mode,'exceptions',JSON.stringify(exceptions));
|
||||
}
|
||||
console.log('sandbox explicit null-origin fetch',JSON.stringify(await evaluate(`fetch('http://127.0.0.1:${forwardPort}/proxy/v8/management/config/access/api-keys',{headers:{Authorization:'Bearer p1-management'},credentials:'include'}).then(async r=>({status:r.status,body:await r.text()})).catch(e=>({error:e.name,message:e.message}))`)));console.log('sandbox explicit requests',JSON.stringify(forwarded));
|
||||
for(const callback of ['/proxy/callback?code=fixture','/proxy/auth/callback?code=fixture']){const r=await fetch(`http://127.0.0.1:${forwardPort}${callback}`);console.log('forward callback',callback,r.status);}
|
||||
ws.close();chrome.kill('SIGTERM');
|
||||
const settings=path.join(root,'claude-settings.json'),mcp=path.join(root,'mcp.json');fs.writeFileSync(settings,'{}');fs.writeFileSync(mcp,JSON.stringify({mcpServers:{}}));
|
||||
for(const key of ['wrong','p1-revoked']){
|
||||
const chome=path.join(root,`claude-${key}`);fs.mkdirSync(chome);
|
||||
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();}
|
||||
@@ -0,0 +1,13 @@
|
||||
#!/usr/bin/env bash
|
||||
# Explicit acceptance, never part of scripts/test-*.sh; no host proxy introspection.
|
||||
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" "$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,3 @@
|
||||
1e10566fe0042ed5a9b80306cf296bf86a83de590cd967a8b177988b896c8d31 /mnt/storage/scratch/tmp/muoz5Z/CLIProxyAPI_8.0.42_linux_amd64.tar.gz
|
||||
8c9c6b7d3fb311e6aad5d06e1993e53a2d28389e640448a1bc6304ed20b057b5 /mnt/storage/scratch/tmp/muoz5Z/management.html
|
||||
74661f8cf949977870231359e8bf4344e07946766a673c08fa25a3e5f72fc95e /mnt/storage/scratch/tmp/muoz5Z/release/cli-proxy-api
|
||||
@@ -0,0 +1,84 @@
|
||||
# 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']:
|
||||
matches=re.findall(r'^(?:ℹ |# )'+key+r' (\d+)',text,re.M);assert matches,(label,key);result[key]=int(matches[-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')):
|
||||
if suite=='model-proxy' and file.stem=='management-key-encoding.test':continue # introduced in R2, mapped below
|
||||
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'}
|
||||
# R1 whole-suite history stays distinct from the R2 targeted reruns.
|
||||
groups['round1-model-proxy']=groups['model-proxy']
|
||||
r2=[json.loads(line) for line in (BASE/'gate-r2/runs.jsonl').read_text().splitlines()]
|
||||
by_label={row['label']:row for row in r2}
|
||||
assert len(by_label)==len(r2), 'no repeated R2 invocations'
|
||||
def r2row(label):
|
||||
row=by_label[label]
|
||||
assert row['rc']==0 and row['nice']==19,row
|
||||
if label!='test-config.sh':
|
||||
assert row['counts']['fail']==row['counts']['cancelled']==row['counts']['skipped']==0,row
|
||||
return row
|
||||
def aggregate(rows):
|
||||
return {'files':len(rows),**{k:sum(row['counts'][k] for row in rows) for k in ['tests','pass','fail','skipped','cancelled']},'mapping':rows}
|
||||
models=[]
|
||||
for file in sorted((REPO/'packages/model-proxy/tests').glob('*.test.mjs')):
|
||||
row=dict(r2row('model-proxy-'+file.stem));row['file']=str(file.relative_to(REPO));models.append(row)
|
||||
groups['model-proxy']=aggregate(models)
|
||||
readers=[]
|
||||
for name in json.loads((BASE/'r2-reader-files.json').read_text()):
|
||||
file=Path(name)
|
||||
label='cli-federation-acceptance-runner' if file.name=='federation-acceptance.test.mjs' else file.parts[1]+'-'+file.stem
|
||||
row=dict(r2row(label));row['file']=name;readers.append(row)
|
||||
config=r2row('test-config.sh')
|
||||
assert 'selftest: 55 passed, 0 failed' in (REPO/config['log']).read_text()
|
||||
extras=[r2row('cli-case1-accept.test'),r2row('cli-case2-unit.test')]
|
||||
assert len(r2)==len(models)+len(readers)+len(extras)+1
|
||||
round2={'model-proxy':groups['model-proxy'],'readers':aggregate(readers),
|
||||
'bus-readers':aggregate([row for row in readers if row['file'].startswith('packages/bus/')]),
|
||||
'cli-readers':aggregate([row for row in readers if row['file'].startswith('packages/cli/')]),
|
||||
'config-script':{**config,'pass':55,'fail':0},'over-selected-extra-runs':extras,
|
||||
'extra-run-note':'case1-accept 53/53 in 247.863 s through over-selection, not an F7 diagnostic or evidence about F7 either way. F7 cause unknown; Vikunja 625. case2-unit completed per sage-4277. Neither repeated.'}
|
||||
groups['round2']=round2
|
||||
(OUT/'FINAL-COUNTS.json').write_text(json.dumps(groups,indent=2)+'\n')
|
||||
lines=[]
|
||||
for suite in ['model-proxy','bus','cli']:
|
||||
g=groups[suite];prefix='R2 current package' if suite=='model-proxy' else 'R1 whole suite (not rerun whole in R2)'
|
||||
lines.append(f"{prefix} {suite}: {g['files']}files {g['tests']}tests {g['pass']}pass {g['fail']}fail {g['skipped']}skip {g['cancelled']}cancel")
|
||||
for suite in ['bus-readers','cli-readers']:
|
||||
g=round2[suite];lines.append(f"R2 {suite}: {g['files']}files {g['tests']}tests {g['pass']}pass {g['fail']}fail {g['skipped']}skip")
|
||||
lines += ['R2 config:55/55; federation official runner included in CLI readers:1/1 no skip.',
|
||||
'R1 webui pinned-copy:10/10; config:55/55; federation runner:1/1 no skip.',
|
||||
'R1 CLI listed skip: packages/cli/tests/federation-acceptance.test.mjs, FED R7; covered by the official acceptance runner.',
|
||||
'R2 over-selection extras: case1-accept53/53 in247.863s; case2-unit47/47 in71.829s. Not required reader coverage.',
|
||||
'The over-selected case1-accept run is not an F7 diagnostic or evidence about F7 either way. F7 cause unknown; Vikunja625.',
|
||||
'Initial old red and scratch diagnostic remain separate; mos-1605 unchanged original rerun53/53. Sage landing gate must independently pass.']
|
||||
(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"}
|
||||
@@ -0,0 +1,89 @@
|
||||
{"label": "model-proxy-client.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:10.938+00:00", "load1": "2.97"}, "end": {"utc": "2026-10-24T21:31:11.088+00:00", "load1": "2.97"}, "seconds": 0.15, "counts": {"tests": 16, "pass": 16, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/model-proxy-client.test.txt", "raw": "/mnt/storage/scratch/tmp/zDL42S/stdout.txt", "raw_sha256": "72526df68832b7029d66bc1d583880044263c223429f4b4e4a56ef00d42a593b", "review_sha256": "72526df68832b7029d66bc1d583880044263c223429f4b4e4a56ef00d42a593b", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "model-proxy-config-unit.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:11.090+00:00", "load1": "2.97"}, "end": {"utc": "2026-10-24T21:31:12.582+00:00", "load1": "2.97"}, "seconds": 1.493, "counts": {"tests": 15, "pass": 15, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/model-proxy-config-unit.test.txt", "raw": "/mnt/storage/scratch/tmp/nJS9pb/stdout.txt", "raw_sha256": "7e1b45f0f7f56e881dfd81f2e16e5076684f1e5a94a51972af2f01ff40700a86", "review_sha256": "7e1b45f0f7f56e881dfd81f2e16e5076684f1e5a94a51972af2f01ff40700a86", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "model-proxy-fetch.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:12.584+00:00", "load1": "2.97"}, "end": {"utc": "2026-10-24T21:31:12.790+00:00", "load1": "2.97"}, "seconds": 0.206, "counts": {"tests": 8, "pass": 8, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/model-proxy-fetch.test.txt", "raw": "/mnt/storage/scratch/tmp/7oJ2lQ/stdout.txt", "raw_sha256": "f9443ad4efc40865e4710339f2802ad59fa9fe247c3f7ce715bd522cb57df0a4", "review_sha256": "f9443ad4efc40865e4710339f2802ad59fa9fe247c3f7ce715bd522cb57df0a4", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "model-proxy-management-key-encoding.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:12.791+00:00", "load1": "2.97"}, "end": {"utc": "2026-10-24T21:31:12.914+00:00", "load1": "2.97"}, "seconds": 0.122, "counts": {"tests": 5, "pass": 5, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/model-proxy-management-key-encoding.test.txt", "raw": "/mnt/storage/scratch/tmp/zS3BC0/stdout.txt", "raw_sha256": "fc0ebedc2bae56913e2055a0772f741f76c7b4659ca4c020f95c5207fadaa245", "review_sha256": "fc0ebedc2bae56913e2055a0772f741f76c7b4659ca4c020f95c5207fadaa245", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "model-proxy-runner.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:12.915+00:00", "load1": "2.97"}, "end": {"utc": "2026-10-24T21:31:13.016+00:00", "load1": "2.97"}, "seconds": 0.1, "counts": {"tests": 3, "pass": 3, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/model-proxy-runner.test.txt", "raw": "/mnt/storage/scratch/tmp/AudX5t/stdout.txt", "raw_sha256": "4e4fac75caddcc0ec797e5cbd0c096af2c0b9c6f5cdbb2740e1419e6b900912e", "review_sha256": "4e4fac75caddcc0ec797e5cbd0c096af2c0b9c6f5cdbb2740e1419e6b900912e", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "model-proxy-settings.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:13.017+00:00", "load1": "2.97"}, "end": {"utc": "2026-10-24T21:31:13.133+00:00", "load1": "2.97"}, "seconds": 0.116, "counts": {"tests": 19, "pass": 19, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/model-proxy-settings.test.txt", "raw": "/mnt/storage/scratch/tmp/5hNMfK/stdout.txt", "raw_sha256": "c552a50d05b680f46cccca044134bc9531ab40fb3cb3d7823884f1c10a214b92", "review_sha256": "c552a50d05b680f46cccca044134bc9531ab40fb3cb3d7823884f1c10a214b92", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "bus-access-revoke.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:13.135+00:00", "load1": "2.97"}, "end": {"utc": "2026-10-24T21:31:13.593+00:00", "load1": "2.97"}, "seconds": 0.458, "counts": {"tests": 10, "pass": 10, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/bus-access-revoke.test.txt", "raw": "/mnt/storage/scratch/tmp/GHeQEZ/stdout.txt", "raw_sha256": "1e4692e57d2a0381a9c05ad6a6f136c63d149263d52f4bf0cf194adfb5c3a28f", "review_sha256": "1e4692e57d2a0381a9c05ad6a6f136c63d149263d52f4bf0cf194adfb5c3a28f", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "bus-chief-of-staff.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:13.594+00:00", "load1": "2.97"}, "end": {"utc": "2026-10-24T21:31:15.864+00:00", "load1": "3.13"}, "seconds": 2.27, "counts": {"tests": 42, "pass": 42, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/bus-chief-of-staff.test.txt", "raw": "/mnt/storage/scratch/tmp/70lNbE/stdout.txt", "raw_sha256": "ac5e9121ff899160842f8196969356b5af2b1d8305bc14a4a05f0c8e7472a55b", "review_sha256": "ac5e9121ff899160842f8196969356b5af2b1d8305bc14a4a05f0c8e7472a55b", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "bus-citation-runtime.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:15.866+00:00", "load1": "3.13"}, "end": {"utc": "2026-10-24T21:31:16.155+00:00", "load1": "3.13"}, "seconds": 0.289, "counts": {"tests": 1, "pass": 1, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/bus-citation-runtime.test.txt", "raw": "/mnt/storage/scratch/tmp/d7EDzc/stdout.txt", "raw_sha256": "906f79dcd35767db18fcc9cc58ff354fd04c76fb8f4442a36840dbe6c1ec4687", "review_sha256": "906f79dcd35767db18fcc9cc58ff354fd04c76fb8f4442a36840dbe6c1ec4687", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "bus-creative.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:16.156+00:00", "load1": "3.13"}, "end": {"utc": "2026-10-24T21:31:16.541+00:00", "load1": "3.13"}, "seconds": 0.384, "counts": {"tests": 4, "pass": 4, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/bus-creative.test.txt", "raw": "/mnt/storage/scratch/tmp/pn1E2D/stdout.txt", "raw_sha256": "a69dc69088b07e7e1763feffce69ef032df334557505f2afcefdfb58c0d1c17d", "review_sha256": "a69dc69088b07e7e1763feffce69ef032df334557505f2afcefdfb58c0d1c17d", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "bus-credential-verbs.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:16.542+00:00", "load1": "3.13"}, "end": {"utc": "2026-10-24T21:31:16.833+00:00", "load1": "3.13"}, "seconds": 0.291, "counts": {"tests": 2, "pass": 2, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/bus-credential-verbs.test.txt", "raw": "/mnt/storage/scratch/tmp/9f3var/stdout.txt", "raw_sha256": "5357a7f0eec86a68c8491d1af16547457d7fe0ebd72fc5c6a509007c7f7d4030", "review_sha256": "5357a7f0eec86a68c8491d1af16547457d7fe0ebd72fc5c6a509007c7f7d4030", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "bus-daily-quota-runtime.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:16.834+00:00", "load1": "3.13"}, "end": {"utc": "2026-10-24T21:31:17.191+00:00", "load1": "3.13"}, "seconds": 0.356, "counts": {"tests": 4, "pass": 4, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/bus-daily-quota-runtime.test.txt", "raw": "/mnt/storage/scratch/tmp/qkIeTC/stdout.txt", "raw_sha256": "fe12a7dd9d274386f7416db0858082dd77af1c0df6344d2460fca5a13a94b924", "review_sha256": "fe12a7dd9d274386f7416db0858082dd77af1c0df6344d2460fca5a13a94b924", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "bus-grant-scope-runtime.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:17.192+00:00", "load1": "3.13"}, "end": {"utc": "2026-10-24T21:31:17.416+00:00", "load1": "3.13"}, "seconds": 0.224, "counts": {"tests": 1, "pass": 1, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/bus-grant-scope-runtime.test.txt", "raw": "/mnt/storage/scratch/tmp/vvhrW2/stdout.txt", "raw_sha256": "d314d364cc6b84672a92151c8c601dad438414a49ec27f15e94594ab730ac3f6", "review_sha256": "d314d364cc6b84672a92151c8c601dad438414a49ec27f15e94594ab730ac3f6", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "bus-host-run.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:17.417+00:00", "load1": "3.13"}, "end": {"utc": "2026-10-24T21:31:32.104+00:00", "load1": "2.80"}, "seconds": 14.686, "counts": {"tests": 26, "pass": 26, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/bus-host-run.test.txt", "raw": "/mnt/storage/scratch/tmp/BU48EX/stdout.txt", "raw_sha256": "186da42dee80fa074f0ddbb05fe78eb680dbe7177e63111928768b71f6248743", "review_sha256": "186da42dee80fa074f0ddbb05fe78eb680dbe7177e63111928768b71f6248743", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "bus-instances-verb.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:32.105+00:00", "load1": "2.80"}, "end": {"utc": "2026-10-24T21:31:32.406+00:00", "load1": "2.80"}, "seconds": 0.301, "counts": {"tests": 3, "pass": 3, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/bus-instances-verb.test.txt", "raw": "/mnt/storage/scratch/tmp/XknzTf/stdout.txt", "raw_sha256": "a29fe9471a3034501c9765289f77e5a6fc08702c7cc02035d67745b01064e6f7", "review_sha256": "a29fe9471a3034501c9765289f77e5a6fc08702c7cc02035d67745b01064e6f7", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "bus-library-credential.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:32.407+00:00", "load1": "2.80"}, "end": {"utc": "2026-10-24T21:31:33.807+00:00", "load1": "2.80"}, "seconds": 1.4, "counts": {"tests": 6, "pass": 6, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/bus-library-credential.test.txt", "raw": "/mnt/storage/scratch/tmp/HpiYQK/stdout.txt", "raw_sha256": "5a8db75c9e3a8c5fc526a83db2eecb1dce370c09b191d76a4b6e5e5b2bc49269", "review_sha256": "5a8db75c9e3a8c5fc526a83db2eecb1dce370c09b191d76a4b6e5e5b2bc49269", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "bus-library-lookups.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:33.808+00:00", "load1": "2.80"}, "end": {"utc": "2026-10-24T21:31:34.972+00:00", "load1": "2.80"}, "seconds": 1.163, "counts": {"tests": 11, "pass": 11, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/bus-library-lookups.test.txt", "raw": "/mnt/storage/scratch/tmp/PQlDGA/stdout.txt", "raw_sha256": "f983094b8f5934fb1390cb41a7f93fb67e3bf640ccefe7c22901fef471178341", "review_sha256": "f983094b8f5934fb1390cb41a7f93fb67e3bf640ccefe7c22901fef471178341", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "bus-library-sync.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:34.973+00:00", "load1": "2.80"}, "end": {"utc": "2026-10-24T21:31:41.870+00:00", "load1": "2.75"}, "seconds": 6.897, "counts": {"tests": 6, "pass": 6, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/bus-library-sync.test.txt", "raw": "/mnt/storage/scratch/tmp/eFLzOZ/stdout.txt", "raw_sha256": "ce03b3b0bd0a7dab40cbe07b65708e9c8083b2ea2292a585105257d63b346041", "review_sha256": "ce03b3b0bd0a7dab40cbe07b65708e9c8083b2ea2292a585105257d63b346041", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "bus-library.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:41.871+00:00", "load1": "2.75"}, "end": {"utc": "2026-10-24T21:31:42.508+00:00", "load1": "2.75"}, "seconds": 0.637, "counts": {"tests": 6, "pass": 6, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/bus-library.test.txt", "raw": "/mnt/storage/scratch/tmp/kPxN9l/stdout.txt", "raw_sha256": "f7056b0990446ba4ca02439d888840100197cf721af7cb83366e1845ebedb181", "review_sha256": "f7056b0990446ba4ca02439d888840100197cf721af7cb83366e1845ebedb181", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "bus-lifecycle-revoke.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:42.510+00:00", "load1": "2.75"}, "end": {"utc": "2026-10-24T21:31:43.201+00:00", "load1": "2.75"}, "seconds": 0.691, "counts": {"tests": 8, "pass": 8, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/bus-lifecycle-revoke.test.txt", "raw": "/mnt/storage/scratch/tmp/hvc49a/stdout.txt", "raw_sha256": "8164855a74fffbe3ae62e45b0d921571b34e29d87109a62fdedcaa5f5cf91a03", "review_sha256": "8164855a74fffbe3ae62e45b0d921571b34e29d87109a62fdedcaa5f5cf91a03", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "bus-lifecycle-verbs.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:43.202+00:00", "load1": "2.75"}, "end": {"utc": "2026-10-24T21:31:43.730+00:00", "load1": "2.75"}, "seconds": 0.527, "counts": {"tests": 13, "pass": 13, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/bus-lifecycle-verbs.test.txt", "raw": "/mnt/storage/scratch/tmp/Ab3xx3/stdout.txt", "raw_sha256": "d2f5a7993c5d8e31bbf8572651f67fded8ed83cbaddfa5ccba7bad2d61994da0", "review_sha256": "d2f5a7993c5d8e31bbf8572651f67fded8ed83cbaddfa5ccba7bad2d61994da0", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "bus-limit-checks.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:43.731+00:00", "load1": "2.75"}, "end": {"utc": "2026-10-24T21:31:44.005+00:00", "load1": "2.75"}, "seconds": 0.273, "counts": {"tests": 16, "pass": 16, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/bus-limit-checks.test.txt", "raw": "/mnt/storage/scratch/tmp/ktbbpy/stdout.txt", "raw_sha256": "04d0337574e4af52414e3bfd63b95d15e2cbbc22c49bfaae5eb8baf4df0ce387", "review_sha256": "04d0337574e4af52414e3bfd63b95d15e2cbbc22c49bfaae5eb8baf4df0ce387", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "bus-limits-runtime.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:44.006+00:00", "load1": "2.75"}, "end": {"utc": "2026-10-24T21:31:44.427+00:00", "load1": "2.75"}, "seconds": 0.421, "counts": {"tests": 5, "pass": 5, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/bus-limits-runtime.test.txt", "raw": "/mnt/storage/scratch/tmp/OgZo41/stdout.txt", "raw_sha256": "aae4e8b12a87bd5679afcd9f4319839c6554fac365723ada9808af9aa9e1c859", "review_sha256": "aae4e8b12a87bd5679afcd9f4319839c6554fac365723ada9808af9aa9e1c859", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "bus-limits.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:44.428+00:00", "load1": "2.75"}, "end": {"utc": "2026-10-24T21:31:44.729+00:00", "load1": "2.75"}, "seconds": 0.301, "counts": {"tests": 3, "pass": 3, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/bus-limits.test.txt", "raw": "/mnt/storage/scratch/tmp/ZE3dMq/stdout.txt", "raw_sha256": "df23b3a8e13e0f29c5c81cf067e4a859b2c19fc7b7e0a72cab222444d84eb20d", "review_sha256": "df23b3a8e13e0f29c5c81cf067e4a859b2c19fc7b7e0a72cab222444d84eb20d", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "bus-model-proxy.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:44.731+00:00", "load1": "2.75"}, "end": {"utc": "2026-10-24T21:31:44.954+00:00", "load1": "2.75"}, "seconds": 0.223, "counts": {"tests": 8, "pass": 8, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/bus-model-proxy.test.txt", "raw": "/mnt/storage/scratch/tmp/760xBV/stdout.txt", "raw_sha256": "bfb1b52f8dc03290185ea6b9f1c2a5336b0c8b4959a0b1254a8ff6e86c4d0f6e", "review_sha256": "bfb1b52f8dc03290185ea6b9f1c2a5336b0c8b4959a0b1254a8ff6e86c4d0f6e", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "bus-plugins-verb.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:44.956+00:00", "load1": "2.75"}, "end": {"utc": "2026-10-24T21:31:45.257+00:00", "load1": "2.75"}, "seconds": 0.301, "counts": {"tests": 3, "pass": 3, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/bus-plugins-verb.test.txt", "raw": "/mnt/storage/scratch/tmp/mpe9C4/stdout.txt", "raw_sha256": "a06ab305be09ba71ffad2221d8db9979cd7c9db8cfee9e7a75347620a4f68646", "review_sha256": "a06ab305be09ba71ffad2221d8db9979cd7c9db8cfee9e7a75347620a4f68646", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "bus-processing-runtime.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:45.258+00:00", "load1": "2.75"}, "end": {"utc": "2026-10-24T21:31:45.642+00:00", "load1": "2.75"}, "seconds": 0.384, "counts": {"tests": 2, "pass": 2, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/bus-processing-runtime.test.txt", "raw": "/mnt/storage/scratch/tmp/t8w0GP/stdout.txt", "raw_sha256": "05aeb457bd29666c0fd601f14e81a917935483c483ae29952ba07c168f316a3f", "review_sha256": "05aeb457bd29666c0fd601f14e81a917935483c483ae29952ba07c168f316a3f", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "bus-project-runtime.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:45.644+00:00", "load1": "2.75"}, "end": {"utc": "2026-10-24T21:31:46.048+00:00", "load1": "3.01"}, "seconds": 0.404, "counts": {"tests": 3, "pass": 3, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/bus-project-runtime.test.txt", "raw": "/mnt/storage/scratch/tmp/9wld3a/stdout.txt", "raw_sha256": "a78ffe5c3ce1a213eca5eeae5637eabe03ea564df7fa947a72f85a0d94c3ccb0", "review_sha256": "a78ffe5c3ce1a213eca5eeae5637eabe03ea564df7fa947a72f85a0d94c3ccb0", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "bus-publish.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:46.049+00:00", "load1": "3.01"}, "end": {"utc": "2026-10-24T21:31:46.833+00:00", "load1": "3.01"}, "seconds": 0.784, "counts": {"tests": 13, "pass": 13, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/bus-publish.test.txt", "raw": "/mnt/storage/scratch/tmp/zvt8PG/stdout.txt", "raw_sha256": "1f2796d06abac7de85d9658f8c2a53b2934aea7ab518bab1f53479048feb2139", "review_sha256": "1f2796d06abac7de85d9658f8c2a53b2934aea7ab518bab1f53479048feb2139", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "bus-reload.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:46.835+00:00", "load1": "3.01"}, "end": {"utc": "2026-10-24T21:31:47.760+00:00", "load1": "3.01"}, "seconds": 0.925, "counts": {"tests": 10, "pass": 10, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/bus-reload.test.txt", "raw": "/mnt/storage/scratch/tmp/aU0j0Y/stdout.txt", "raw_sha256": "192282d8e14ec7ba3314ae1de327646cc6f7deb390472d64781529d4f2a87ae5", "review_sha256": "192282d8e14ec7ba3314ae1de327646cc6f7deb390472d64781529d4f2a87ae5", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "bus-routes-verb.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:47.762+00:00", "load1": "3.01"}, "end": {"utc": "2026-10-24T21:31:48.060+00:00", "load1": "3.01"}, "seconds": 0.299, "counts": {"tests": 4, "pass": 4, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/bus-routes-verb.test.txt", "raw": "/mnt/storage/scratch/tmp/P5dNVU/stdout.txt", "raw_sha256": "9f33241111d569ae58c4e67f3afe685a537a2dcbfedaa40de89bdee3f17b14b4", "review_sha256": "9f33241111d569ae58c4e67f3afe685a537a2dcbfedaa40de89bdee3f17b14b4", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "bus-tasks.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:48.062+00:00", "load1": "3.01"}, "end": {"utc": "2026-10-24T21:31:48.992+00:00", "load1": "3.01"}, "seconds": 0.93, "counts": {"tests": 9, "pass": 9, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/bus-tasks.test.txt", "raw": "/mnt/storage/scratch/tmp/doktEQ/stdout.txt", "raw_sha256": "14d2238fe88a863d5535217b8a832fc7a23d6662a38787385fa5c7792902cece", "review_sha256": "14d2238fe88a863d5535217b8a832fc7a23d6662a38787385fa5c7792902cece", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "bus-tester-writes.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:48.994+00:00", "load1": "3.01"}, "end": {"utc": "2026-10-24T21:31:49.498+00:00", "load1": "3.01"}, "seconds": 0.504, "counts": {"tests": 8, "pass": 8, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/bus-tester-writes.test.txt", "raw": "/mnt/storage/scratch/tmp/1vStHK/stdout.txt", "raw_sha256": "9be764569450aede17b0aeb194933978c07f551ff835543b9c5a171599aec855", "review_sha256": "9be764569450aede17b0aeb194933978c07f551ff835543b9c5a171599aec855", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "bus-tester.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:49.499+00:00", "load1": "3.01"}, "end": {"utc": "2026-10-24T21:31:51.058+00:00", "load1": "2.77"}, "seconds": 1.559, "counts": {"tests": 14, "pass": 14, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/bus-tester.test.txt", "raw": "/mnt/storage/scratch/tmp/lFZZCF/stdout.txt", "raw_sha256": "1071a9d1720fc8cb3a81bb4e649480b9ffb70f44cc27df7cd1bdfe5b4b73c832", "review_sha256": "1071a9d1720fc8cb3a81bb4e649480b9ffb70f44cc27df7cd1bdfe5b4b73c832", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "bus-usage-runtime.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:51.060+00:00", "load1": "2.77"}, "end": {"utc": "2026-10-24T21:31:51.278+00:00", "load1": "2.77"}, "seconds": 0.218, "counts": {"tests": 1, "pass": 1, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/bus-usage-runtime.test.txt", "raw": "/mnt/storage/scratch/tmp/1VEYZH/stdout.txt", "raw_sha256": "164803cec01d1a4defd02eb7bada2334406e55ddca88a3f959f34b1fe959c61d", "review_sha256": "164803cec01d1a4defd02eb7bada2334406e55ddca88a3f959f34b1fe959c61d", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "bus-web.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:51.279+00:00", "load1": "2.77"}, "end": {"utc": "2026-10-24T21:31:52.352+00:00", "load1": "2.77"}, "seconds": 1.073, "counts": {"tests": 19, "pass": 19, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/bus-web.test.txt", "raw": "/mnt/storage/scratch/tmp/BWvWeH/stdout.txt", "raw_sha256": "fc077bfb6f2fdf43f2949741daa6d7d998be5540a2c24935cf41dd37a9168701", "review_sha256": "fc077bfb6f2fdf43f2949741daa6d7d998be5540a2c24935cf41dd37a9168701", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-access-boot.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:52.353+00:00", "load1": "2.77"}, "end": {"utc": "2026-10-24T21:31:52.858+00:00", "load1": "2.77"}, "seconds": 0.505, "counts": {"tests": 4, "pass": 4, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-access-boot.test.txt", "raw": "/mnt/storage/scratch/tmp/N0QlMo/stdout.txt", "raw_sha256": "3744b90a84c5fed8391ec462765c84016f800480aba1866394fda7b8e073334f", "review_sha256": "3744b90a84c5fed8391ec462765c84016f800480aba1866394fda7b8e073334f", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-access.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:52.859+00:00", "load1": "2.77"}, "end": {"utc": "2026-10-24T21:31:59.768+00:00", "load1": "2.71"}, "seconds": 6.908, "counts": {"tests": 34, "pass": 34, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-access.test.txt", "raw": "/mnt/storage/scratch/tmp/s4G6iY/stdout.txt", "raw_sha256": "26846bafb2cad7e1ef1eb22c4be6b45be15a5ba8dcb9ac74e676526215264f61", "review_sha256": "26846bafb2cad7e1ef1eb22c4be6b45be15a5ba8dcb9ac74e676526215264f61", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-app.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:31:59.769+00:00", "load1": "2.71"}, "end": {"utc": "2026-10-24T21:32:12.799+00:00", "load1": "2.80"}, "seconds": 13.03, "counts": {"tests": 30, "pass": 30, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-app.test.txt", "raw": "/mnt/storage/scratch/tmp/U6qOPP/stdout.txt", "raw_sha256": "a5e98008eccbd4c970eb1177cd2a02149a11a983a3b52bcc6e395911cf3ad650", "review_sha256": "a5e98008eccbd4c970eb1177cd2a02149a11a983a3b52bcc6e395911cf3ad650", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-boot-status.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:32:12.800+00:00", "load1": "2.80"}, "end": {"utc": "2026-10-24T21:32:14.148+00:00", "load1": "2.80"}, "seconds": 1.348, "counts": {"tests": 3, "pass": 3, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-boot-status.test.txt", "raw": "/mnt/storage/scratch/tmp/6FraTr/stdout.txt", "raw_sha256": "bb44c42c15a70c24211f9145aa199dee9aa35794bfc360f792ed71a142b8fed1", "review_sha256": "bb44c42c15a70c24211f9145aa199dee9aa35794bfc360f792ed71a142b8fed1", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-case1-accept.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:32:14.150+00:00", "load1": "2.80"}, "end": {"utc": "2026-10-24T21:36:22.013+00:00", "load1": "2.61"}, "seconds": 247.863, "counts": {"tests": 53, "pass": 53, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-case1-accept.test.txt", "raw": "/mnt/storage/scratch/tmp/4hkmqC/stdout.txt", "raw_sha256": "fe812a4c0d8506883c16e9458d888f89298b8d7cf8817eb57defd108fb268aef", "review_sha256": "fe812a4c0d8506883c16e9458d888f89298b8d7cf8817eb57defd108fb268aef", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-case2-unit.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:36:22.014+00:00", "load1": "2.61"}, "end": {"utc": "2026-10-24T21:37:33.843+00:00", "load1": "1.99"}, "seconds": 71.829, "counts": {"tests": 47, "pass": 47, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-case2-unit.test.txt", "raw": "/mnt/storage/scratch/tmp/gR7UqU/stdout.txt", "raw_sha256": "d85ab5112c0e6b4395e318abbd81393e3c533af83f5625ea2470ee641a7cbafe", "review_sha256": "d85ab5112c0e6b4395e318abbd81393e3c533af83f5625ea2470ee641a7cbafe", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-channel-cli.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:37:33.844+00:00", "load1": "1.99"}, "end": {"utc": "2026-10-24T21:37:34.019+00:00", "load1": "1.99"}, "seconds": 0.175, "counts": {"tests": 2, "pass": 2, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-channel-cli.test.txt", "raw": "/mnt/storage/scratch/tmp/CVVva9/stdout.txt", "raw_sha256": "b58d9c1ceadc06bfb5ba894106b9a8fae2b8cf5b5ee793024247e3ca6c12cb57", "review_sha256": "b58d9c1ceadc06bfb5ba894106b9a8fae2b8cf5b5ee793024247e3ca6c12cb57", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-cli.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:37:34.021+00:00", "load1": "1.99"}, "end": {"utc": "2026-10-24T21:37:34.366+00:00", "load1": "1.99"}, "seconds": 0.346, "counts": {"tests": 12, "pass": 12, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-cli.test.txt", "raw": "/mnt/storage/scratch/tmp/w29Ytc/stdout.txt", "raw_sha256": "f31972c375775c7d8395ddbb8ec50c278842c94938ac38b42cc34adddd26343b", "review_sha256": "f31972c375775c7d8395ddbb8ec50c278842c94938ac38b42cc34adddd26343b", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-compactions-launch.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:37:34.367+00:00", "load1": "1.99"}, "end": {"utc": "2026-10-24T21:37:49.048+00:00", "load1": "2.07"}, "seconds": 14.681, "counts": {"tests": 5, "pass": 5, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-compactions-launch.test.txt", "raw": "/mnt/storage/scratch/tmp/a02guB/stdout.txt", "raw_sha256": "076452351ffccf6341b3be24798aa3e3d9ff239079dfff86338cc5c5c553a6c5", "review_sha256": "076452351ffccf6341b3be24798aa3e3d9ff239079dfff86338cc5c5c553a6c5", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-config.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:37:49.050+00:00", "load1": "2.07"}, "end": {"utc": "2026-10-24T21:37:49.463+00:00", "load1": "2.07"}, "seconds": 0.413, "counts": {"tests": 7, "pass": 7, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-config.test.txt", "raw": "/mnt/storage/scratch/tmp/AhpJsG/stdout.txt", "raw_sha256": "fb64c74ee91d26ce5d9e696d38e6aa53190a123e6e700d6235839f211071ff7c", "review_sha256": "fb64c74ee91d26ce5d9e696d38e6aa53190a123e6e700d6235839f211071ff7c", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-credentials.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:37:49.465+00:00", "load1": "2.07"}, "end": {"utc": "2026-10-24T21:37:49.730+00:00", "load1": "2.07"}, "seconds": 0.265, "counts": {"tests": 5, "pass": 5, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-credentials.test.txt", "raw": "/mnt/storage/scratch/tmp/QKugz7/stdout.txt", "raw_sha256": "de17d72ef2f432a264f915ee6d0eeecebdb47509b701efeb39cb6e3a623c7889", "review_sha256": "de17d72ef2f432a264f915ee6d0eeecebdb47509b701efeb39cb6e3a623c7889", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-federation-acceptance-runner", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:37:49.731+00:00", "load1": "2.07"}, "end": {"utc": "2026-10-24T21:37:53.728+00:00", "load1": "1.98"}, "seconds": 3.997, "counts": {"tests": 1, "pass": 1, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-federation-acceptance-runner.txt", "raw": "/mnt/storage/scratch/tmp/AgdZo8/stdout.txt", "raw_sha256": "9159c6b69df64f55608fd6a56ef312fb17c15501f6d2b022010ce4a79d3a66df", "review_sha256": "9159c6b69df64f55608fd6a56ef312fb17c15501f6d2b022010ce4a79d3a66df", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-follow.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:37:53.730+00:00", "load1": "1.98"}, "end": {"utc": "2026-10-24T21:37:54.316+00:00", "load1": "1.98"}, "seconds": 0.586, "counts": {"tests": 6, "pass": 6, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-follow.test.txt", "raw": "/mnt/storage/scratch/tmp/LGEnHH/stdout.txt", "raw_sha256": "ed9f7a562321d6097724af8b3863ba9afbf740b27ef704212ea560e691d36431", "review_sha256": "ed9f7a562321d6097724af8b3863ba9afbf740b27ef704212ea560e691d36431", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-git-socket.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:37:54.317+00:00", "load1": "1.98"}, "end": {"utc": "2026-10-24T21:38:09.557+00:00", "load1": "2.32"}, "seconds": 15.24, "counts": {"tests": 24, "pass": 24, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-git-socket.test.txt", "raw": "/mnt/storage/scratch/tmp/iFrMGb/stdout.txt", "raw_sha256": "473cedadef1e0ad23ad614f2a33b10e159133d3cda7eef53ac6bb69872185b3c", "review_sha256": "473cedadef1e0ad23ad614f2a33b10e159133d3cda7eef53ac6bb69872185b3c", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-grants-scope.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:38:09.558+00:00", "load1": "2.32"}, "end": {"utc": "2026-10-24T21:38:09.726+00:00", "load1": "2.32"}, "seconds": 0.168, "counts": {"tests": 4, "pass": 4, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-grants-scope.test.txt", "raw": "/mnt/storage/scratch/tmp/hH0rQA/stdout.txt", "raw_sha256": "5e6efa8110a444bac7d74da8328b6d826de680b84f56ebd19a0285cc9adf0a62", "review_sha256": "5e6efa8110a444bac7d74da8328b6d826de680b84f56ebd19a0285cc9adf0a62", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-grants.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:38:09.727+00:00", "load1": "2.32"}, "end": {"utc": "2026-10-24T21:38:09.997+00:00", "load1": "2.32"}, "seconds": 0.27, "counts": {"tests": 6, "pass": 6, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-grants.test.txt", "raw": "/mnt/storage/scratch/tmp/kKFjXU/stdout.txt", "raw_sha256": "a7efd78270e4e7ef26be72180eb458aff9de84c73b5b3ec8d83838f862184c4b", "review_sha256": "a7efd78270e4e7ef26be72180eb458aff9de84c73b5b3ec8d83838f862184c4b", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-host.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:38:09.999+00:00", "load1": "2.32"}, "end": {"utc": "2026-10-24T21:38:22.058+00:00", "load1": "1.96"}, "seconds": 12.06, "counts": {"tests": 43, "pass": 43, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-host.test.txt", "raw": "/mnt/storage/scratch/tmp/txcqPa/stdout.txt", "raw_sha256": "4b234f94e96838fde5714477d37e06af648d20c68775b47c7c81443dfc0cb2ca", "review_sha256": "4b234f94e96838fde5714477d37e06af648d20c68775b47c7c81443dfc0cb2ca", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-hosts.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:38:22.060+00:00", "load1": "1.96"}, "end": {"utc": "2026-10-24T21:38:22.317+00:00", "load1": "1.96"}, "seconds": 0.258, "counts": {"tests": 8, "pass": 8, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-hosts.test.txt", "raw": "/mnt/storage/scratch/tmp/sQO7c1/stdout.txt", "raw_sha256": "5483bf8ada33ee623bd1078e1fd9284280a32619c51f36d56b65006bef63f185", "review_sha256": "5483bf8ada33ee623bd1078e1fd9284280a32619c51f36d56b65006bef63f185", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-idle-stop-race.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:38:22.319+00:00", "load1": "1.96"}, "end": {"utc": "2026-10-24T21:38:24.093+00:00", "load1": "1.96"}, "seconds": 1.774, "counts": {"tests": 1, "pass": 1, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-idle-stop-race.test.txt", "raw": "/mnt/storage/scratch/tmp/2TzkDV/stdout.txt", "raw_sha256": "8fd38cefed41f05af3c4bab68edfa9bdcb137d05177fdca9f51382ce875c870c", "review_sha256": "8fd38cefed41f05af3c4bab68edfa9bdcb137d05177fdca9f51382ce875c870c", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-instances.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:38:24.095+00:00", "load1": "1.96"}, "end": {"utc": "2026-10-24T21:38:26.837+00:00", "load1": "1.80"}, "seconds": 2.742, "counts": {"tests": 15, "pass": 15, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-instances.test.txt", "raw": "/mnt/storage/scratch/tmp/bcheNJ/stdout.txt", "raw_sha256": "ea156f123f60723867b2d7c8c83b4649dfc4e0fee50735384ba034078ee46bfe", "review_sha256": "ea156f123f60723867b2d7c8c83b4649dfc4e0fee50735384ba034078ee46bfe", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-launcher.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:38:26.839+00:00", "load1": "1.80"}, "end": {"utc": "2026-10-24T21:38:54.716+00:00", "load1": "1.99"}, "seconds": 27.877, "counts": {"tests": 34, "pass": 34, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-launcher.test.txt", "raw": "/mnt/storage/scratch/tmp/V5Okpd/stdout.txt", "raw_sha256": "a50e012f0fd76f2df61c30c99e8b9284a426b96ed432b213bbbd8c4f30b6c54e", "review_sha256": "a50e012f0fd76f2df61c30c99e8b9284a426b96ed432b213bbbd8c4f30b6c54e", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-lifecycle.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:38:54.717+00:00", "load1": "1.99"}, "end": {"utc": "2026-10-24T21:39:08.536+00:00", "load1": "2.14"}, "seconds": 13.819, "counts": {"tests": 24, "pass": 24, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-lifecycle.test.txt", "raw": "/mnt/storage/scratch/tmp/sAlkoc/stdout.txt", "raw_sha256": "095e17f532d679fe513c32c2e03518d4cf2437baf5769faf97a28cf95774503a", "review_sha256": "095e17f532d679fe513c32c2e03518d4cf2437baf5769faf97a28cf95774503a", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-limits-tokens.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:39:08.537+00:00", "load1": "2.14"}, "end": {"utc": "2026-10-24T21:39:08.721+00:00", "load1": "2.14"}, "seconds": 0.183, "counts": {"tests": 5, "pass": 5, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-limits-tokens.test.txt", "raw": "/mnt/storage/scratch/tmp/n6VAUo/stdout.txt", "raw_sha256": "9988657dfa758b51bfcf96e950aee97f8bd4ab55586ff987102e4a4d0ed1d70c", "review_sha256": "9988657dfa758b51bfcf96e950aee97f8bd4ab55586ff987102e4a4d0ed1d70c", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-limits.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:39:08.722+00:00", "load1": "2.14"}, "end": {"utc": "2026-10-24T21:39:09.096+00:00", "load1": "2.14"}, "seconds": 0.374, "counts": {"tests": 5, "pass": 5, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-limits.test.txt", "raw": "/mnt/storage/scratch/tmp/wc6Eoy/stdout.txt", "raw_sha256": "216591e5eac252a04cfd8d5cb80dd8bfce95e6888be4cecc37ce42848c007e58", "review_sha256": "216591e5eac252a04cfd8d5cb80dd8bfce95e6888be4cecc37ce42848c007e58", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-mark-read.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:39:09.098+00:00", "load1": "2.14"}, "end": {"utc": "2026-10-24T21:39:10.140+00:00", "load1": "2.14"}, "seconds": 1.042, "counts": {"tests": 6, "pass": 6, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-mark-read.test.txt", "raw": "/mnt/storage/scratch/tmp/CcBu1p/stdout.txt", "raw_sha256": "752895e1b4be7f8a158ac216e3e2b00789340dcada3c7f16764b8d0c7f82e45b", "review_sha256": "752895e1b4be7f8a158ac216e3e2b00789340dcada3c7f16764b8d0c7f82e45b", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-model-proxy.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:39:10.141+00:00", "load1": "2.14"}, "end": {"utc": "2026-10-24T21:39:10.319+00:00", "load1": "2.14"}, "seconds": 0.178, "counts": {"tests": 9, "pass": 9, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-model-proxy.test.txt", "raw": "/mnt/storage/scratch/tmp/e0u3Hh/stdout.txt", "raw_sha256": "1860f6a85d3d37ff21333d379a31b081e5ef3b8371c33945c4a477c30cb8b90b", "review_sha256": "1860f6a85d3d37ff21333d379a31b081e5ef3b8371c33945c4a477c30cb8b90b", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-names.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:39:10.321+00:00", "load1": "2.14"}, "end": {"utc": "2026-10-24T21:39:10.528+00:00", "load1": "2.14"}, "seconds": 0.208, "counts": {"tests": 2, "pass": 2, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-names.test.txt", "raw": "/mnt/storage/scratch/tmp/amSBet/stdout.txt", "raw_sha256": "3fb040411ad19c4fa194485f8059de0eb39cad55641c9631d18e8bc426b51f0d", "review_sha256": "3fb040411ad19c4fa194485f8059de0eb39cad55641c9631d18e8bc426b51f0d", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-optional-tracker.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:39:10.530+00:00", "load1": "2.14"}, "end": {"utc": "2026-10-24T21:39:10.786+00:00", "load1": "2.13"}, "seconds": 0.256, "counts": {"tests": 4, "pass": 4, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-optional-tracker.test.txt", "raw": "/mnt/storage/scratch/tmp/9IGea0/stdout.txt", "raw_sha256": "266aea732bdc9378ea736d2fb9f9bf323977aeceab84344b425b1413315be4bf", "review_sha256": "266aea732bdc9378ea736d2fb9f9bf323977aeceab84344b425b1413315be4bf", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-other-tree.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:39:10.787+00:00", "load1": "2.13"}, "end": {"utc": "2026-10-24T21:39:10.959+00:00", "load1": "2.13"}, "seconds": 0.171, "counts": {"tests": 4, "pass": 4, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-other-tree.test.txt", "raw": "/mnt/storage/scratch/tmp/Oy7nTk/stdout.txt", "raw_sha256": "ff27aac13153d0e13eed59d219b3b65f5324e96e7cd23b8249caf8900dccf551", "review_sha256": "ff27aac13153d0e13eed59d219b3b65f5324e96e7cd23b8249caf8900dccf551", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-processing-cli.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:39:10.960+00:00", "load1": "2.13"}, "end": {"utc": "2026-10-24T21:39:11.187+00:00", "load1": "2.13"}, "seconds": 0.227, "counts": {"tests": 4, "pass": 4, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-processing-cli.test.txt", "raw": "/mnt/storage/scratch/tmp/2bnmQA/stdout.txt", "raw_sha256": "ba2208b51786a0d4b536f76d840e4d3f86cd26a81c7989fc5ca06e13ac392c16", "review_sha256": "ba2208b51786a0d4b536f76d840e4d3f86cd26a81c7989fc5ca06e13ac392c16", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-project-name-repo.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:39:11.189+00:00", "load1": "2.13"}, "end": {"utc": "2026-10-24T21:39:11.428+00:00", "load1": "2.13"}, "seconds": 0.239, "counts": {"tests": 2, "pass": 2, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-project-name-repo.test.txt", "raw": "/mnt/storage/scratch/tmp/taUr0g/stdout.txt", "raw_sha256": "2ab5c5589a967a49af9a48b6fe9d8b070c83fb4ddafa701cb314ee8eacf58803", "review_sha256": "2ab5c5589a967a49af9a48b6fe9d8b070c83fb4ddafa701cb314ee8eacf58803", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-project.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:39:11.429+00:00", "load1": "2.13"}, "end": {"utc": "2026-10-24T21:39:11.904+00:00", "load1": "2.13"}, "seconds": 0.475, "counts": {"tests": 4, "pass": 4, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-project.test.txt", "raw": "/mnt/storage/scratch/tmp/Tn0793/stdout.txt", "raw_sha256": "eeb05c7bbb900111114536562271a0561961366d800d10dc9a523427c9d948d4", "review_sha256": "eeb05c7bbb900111114536562271a0561961366d800d10dc9a523427c9d948d4", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-publish-socket.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:39:11.906+00:00", "load1": "2.13"}, "end": {"utc": "2026-10-24T21:39:18.473+00:00", "load1": "2.36"}, "seconds": 6.568, "counts": {"tests": 9, "pass": 9, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-publish-socket.test.txt", "raw": "/mnt/storage/scratch/tmp/r2vBrV/stdout.txt", "raw_sha256": "5f37bd01ad735a22847e23288eb74de145fc7d9409212ce7f750a1f5537e589b", "review_sha256": "5f37bd01ad735a22847e23288eb74de145fc7d9409212ce7f750a1f5537e589b", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-revoke-window.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:39:18.475+00:00", "load1": "2.36"}, "end": {"utc": "2026-10-24T21:39:19.442+00:00", "load1": "2.36"}, "seconds": 0.967, "counts": {"tests": 1, "pass": 1, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-revoke-window.test.txt", "raw": "/mnt/storage/scratch/tmp/VS66YH/stdout.txt", "raw_sha256": "11fe687feb95434d03dfb29bbb6b29daa8eded4ed9ef57c1205439952505bab7", "review_sha256": "11fe687feb95434d03dfb29bbb6b29daa8eded4ed9ef57c1205439952505bab7", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-session-clear.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:39:19.445+00:00", "load1": "2.36"}, "end": {"utc": "2026-10-24T21:39:31.363+00:00", "load1": "2.97"}, "seconds": 11.919, "counts": {"tests": 5, "pass": 5, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-session-clear.test.txt", "raw": "/mnt/storage/scratch/tmp/QUDudM/stdout.txt", "raw_sha256": "6eb2f7df1081685a59a0ce69efc1b8fe35ac155c6f4222d9b79d4953079f2560", "review_sha256": "6eb2f7df1081685a59a0ce69efc1b8fe35ac155c6f4222d9b79d4953079f2560", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-session-cli.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:39:31.367+00:00", "load1": "2.97"}, "end": {"utc": "2026-10-24T21:39:31.606+00:00", "load1": "2.97"}, "seconds": 0.239, "counts": {"tests": 14, "pass": 14, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-session-cli.test.txt", "raw": "/mnt/storage/scratch/tmp/lbbeOc/stdout.txt", "raw_sha256": "a6cf001371e3d37548209e27a96790aeab1658f9834ad3aad0079bb848f798f9", "review_sha256": "a6cf001371e3d37548209e27a96790aeab1658f9834ad3aad0079bb848f798f9", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-session-launch.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:39:31.607+00:00", "load1": "2.97"}, "end": {"utc": "2026-10-24T21:39:42.518+00:00", "load1": "3.19"}, "seconds": 10.911, "counts": {"tests": 8, "pass": 8, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-session-launch.test.txt", "raw": "/mnt/storage/scratch/tmp/aqnzkf/stdout.txt", "raw_sha256": "4bce7c2a9c9f3c067de4c9b517f3163f7ad011ab8b8fd270b253f197beddc87e", "review_sha256": "4bce7c2a9c9f3c067de4c9b517f3163f7ad011ab8b8fd270b253f197beddc87e", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-stack-copy.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:39:42.520+00:00", "load1": "3.19"}, "end": {"utc": "2026-10-24T21:39:59.726+00:00", "load1": "2.93"}, "seconds": 17.206, "counts": {"tests": 18, "pass": 18, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-stack-copy.test.txt", "raw": "/mnt/storage/scratch/tmp/Lf8Ohc/stdout.txt", "raw_sha256": "cbca0eec372ce64f9f79b44b223edfa4cb6e36192aa3b2c9f34524a581d792ce", "review_sha256": "cbca0eec372ce64f9f79b44b223edfa4cb6e36192aa3b2c9f34524a581d792ce", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-stack-instances.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:39:59.728+00:00", "load1": "2.93"}, "end": {"utc": "2026-10-24T21:40:03.541+00:00", "load1": "3.25"}, "seconds": 3.813, "counts": {"tests": 24, "pass": 24, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-stack-instances.test.txt", "raw": "/mnt/storage/scratch/tmp/UtkF7t/stdout.txt", "raw_sha256": "29cbaca8d32ed51cc4352005e7c8ed5b2218eaa68c0d5848dd65454394637070", "review_sha256": "29cbaca8d32ed51cc4352005e7c8ed5b2218eaa68c0d5848dd65454394637070", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-stack-release-external.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:40:03.542+00:00", "load1": "3.25"}, "end": {"utc": "2026-10-24T21:41:28.659+00:00", "load1": "4.26"}, "seconds": 85.117, "counts": {"tests": 25, "pass": 25, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-stack-release-external.test.txt", "raw": "/mnt/storage/scratch/tmp/jCTyLN/stdout.txt", "raw_sha256": "978b39a672d14aacc0158096c98da23e8b1384145005181156be191705498790", "review_sha256": "978b39a672d14aacc0158096c98da23e8b1384145005181156be191705498790", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-stack-release.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:41:28.660+00:00", "load1": "4.26"}, "end": {"utc": "2026-10-24T21:52:33.444+00:00", "load1": "4.54"}, "seconds": 664.784, "counts": {"tests": 224, "pass": 224, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-stack-release.test.txt", "raw": "/mnt/storage/scratch/tmp/j7fVCe/stdout.txt", "raw_sha256": "727fc9c272f2b677f495e644f1f25fd25d2f6771f892f0cdc4eddcc486c8ffed", "review_sha256": "727fc9c272f2b677f495e644f1f25fd25d2f6771f892f0cdc4eddcc486c8ffed", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-stack-upgrade.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:52:33.450+00:00", "load1": "4.54"}, "end": {"utc": "2026-10-24T21:53:53.223+00:00", "load1": "5.53"}, "seconds": 79.773, "counts": {"tests": 21, "pass": 21, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-stack-upgrade.test.txt", "raw": "/mnt/storage/scratch/tmp/oSQDBM/stdout.txt", "raw_sha256": "5bc6c98d28d0efaaf8e22a7424c14490a002d2f4309d3cff5560fb6cc81005a8", "review_sha256": "5bc6c98d28d0efaaf8e22a7424c14490a002d2f4309d3cff5560fb6cc81005a8", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-tester-reads.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:53:53.225+00:00", "load1": "5.53"}, "end": {"utc": "2026-10-24T21:53:56.317+00:00", "load1": "5.33"}, "seconds": 3.092, "counts": {"tests": 6, "pass": 6, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-tester-reads.test.txt", "raw": "/mnt/storage/scratch/tmp/rTd0c8/stdout.txt", "raw_sha256": "5f5857a678ee71288a830f46ebdfe2906fdbfaf9ca05c45bc24f8733fc85e72a", "review_sha256": "5f5857a678ee71288a830f46ebdfe2906fdbfaf9ca05c45bc24f8733fc85e72a", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-tester-threads.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:53:56.319+00:00", "load1": "5.33"}, "end": {"utc": "2026-10-24T21:53:59.324+00:00", "load1": "5.33"}, "seconds": 3.005, "counts": {"tests": 5, "pass": 5, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-tester-threads.test.txt", "raw": "/mnt/storage/scratch/tmp/f2GP8b/stdout.txt", "raw_sha256": "2345321de50437a397787c460a5e1b1b8e23333c1079738cb29586d0a073ca17", "review_sha256": "2345321de50437a397787c460a5e1b1b8e23333c1079738cb29586d0a073ca17", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-tester.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:53:59.326+00:00", "load1": "5.33"}, "end": {"utc": "2026-10-24T21:53:59.659+00:00", "load1": "5.33"}, "seconds": 0.332, "counts": {"tests": 11, "pass": 11, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-tester.test.txt", "raw": "/mnt/storage/scratch/tmp/DiGfBC/stdout.txt", "raw_sha256": "08e86197474154f56a7145f675e8dda2706e7836815e200fd0cb1d878df08c2e", "review_sha256": "08e86197474154f56a7145f675e8dda2706e7836815e200fd0cb1d878df08c2e", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-thread-cli.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:53:59.660+00:00", "load1": "5.33"}, "end": {"utc": "2026-10-24T21:54:01.569+00:00", "load1": "6.50"}, "seconds": 1.909, "counts": {"tests": 11, "pass": 11, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-thread-cli.test.txt", "raw": "/mnt/storage/scratch/tmp/SCT6IZ/stdout.txt", "raw_sha256": "140c3a7e88ffdf1201cbb19ebb2090c53b1ee85a8c38e36e384bdf799c53ba36", "review_sha256": "140c3a7e88ffdf1201cbb19ebb2090c53b1ee85a8c38e36e384bdf799c53ba36", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-thread-launch.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:54:01.570+00:00", "load1": "6.50"}, "end": {"utc": "2026-10-24T21:54:21.043+00:00", "load1": "5.72"}, "seconds": 19.472, "counts": {"tests": 15, "pass": 15, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-thread-launch.test.txt", "raw": "/mnt/storage/scratch/tmp/TwM9x5/stdout.txt", "raw_sha256": "87cf64e2c72f38a70e92299bcc53ef89b4d7285233ce6142d7d68804eaf6a4eb", "review_sha256": "87cf64e2c72f38a70e92299bcc53ef89b4d7285233ce6142d7d68804eaf6a4eb", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-thread-revoke.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:54:21.044+00:00", "load1": "5.72"}, "end": {"utc": "2026-10-24T21:54:21.928+00:00", "load1": "5.72"}, "seconds": 0.884, "counts": {"tests": 3, "pass": 3, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-thread-revoke.test.txt", "raw": "/mnt/storage/scratch/tmp/8Ic4S9/stdout.txt", "raw_sha256": "c01ea3664cf8797d3c6c9af41134654b96b01ee79cd2355881866bf88d2fb225", "review_sha256": "c01ea3664cf8797d3c6c9af41134654b96b01ee79cd2355881866bf88d2fb225", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-trackers-boot.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:54:21.930+00:00", "load1": "5.72"}, "end": {"utc": "2026-10-24T21:54:22.798+00:00", "load1": "5.72"}, "seconds": 0.868, "counts": {"tests": 2, "pass": 2, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-trackers-boot.test.txt", "raw": "/mnt/storage/scratch/tmp/vZgXMl/stdout.txt", "raw_sha256": "596819d78167fcf2a65dd93a52de1b0cf9340b1eac7035cecfec9f672ae223b5", "review_sha256": "596819d78167fcf2a65dd93a52de1b0cf9340b1eac7035cecfec9f672ae223b5", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-usage.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:54:22.800+00:00", "load1": "5.72"}, "end": {"utc": "2026-10-24T21:54:23.194+00:00", "load1": "5.72"}, "seconds": 0.395, "counts": {"tests": 2, "pass": 2, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-usage.test.txt", "raw": "/mnt/storage/scratch/tmp/oGiavl/stdout.txt", "raw_sha256": "87d39eb6922fb37a6d220efd2418e3576437da52427cf3d48e59f27cedc7b23b", "review_sha256": "87d39eb6922fb37a6d220efd2418e3576437da52427cf3d48e59f27cedc7b23b", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "cli-verbs.test", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:54:23.197+00:00", "load1": "5.72"}, "end": {"utc": "2026-10-24T21:54:26.666+00:00", "load1": "6.39"}, "seconds": 3.47, "counts": {"tests": 9, "pass": 9, "fail": 0, "skipped": 0, "cancelled": 0}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/cli-verbs.test.txt", "raw": "/mnt/storage/scratch/tmp/iUz5gn/stdout.txt", "raw_sha256": "4a5915b363f0e34ec6ee66f70e7844800ddcc2e6b8a37fc6d3a951ef9185c1ce", "review_sha256": "4a5915b363f0e34ec6ee66f70e7844800ddcc2e6b8a37fc6d3a951ef9185c1ce", "normalization": "trailing whitespace only; raw retained"}
|
||||
{"label": "test-config.sh", "rc": 0, "nice": 19, "begin": {"utc": "2026-10-24T21:54:26.668+00:00", "load1": "6.39"}, "end": {"utc": "2026-10-24T21:54:29.245+00:00", "load1": "6.39"}, "seconds": 2.577, "counts": {"tests": null, "pass": null, "fail": null, "skipped": null, "cancelled": null}, "failure_events": [], "log": "agents/magica/work/queue-329/gate-r2/test-config.sh.txt", "raw": "/mnt/storage/scratch/tmp/vCSq24/stdout.txt", "raw_sha256": "21d65fae2201534dd0c14771fa2d387d643ca698aa550faaa60fdc2a509e53dc", "review_sha256": "21d65fae2201534dd0c14771fa2d387d643ca698aa550faaa60fdc2a509e53dc", "normalization": "trailing whitespace only; raw retained"}
|
||||
Round2 gate complete.
|
||||
@@ -0,0 +1,46 @@
|
||||
# Sage4274/4276 cleared whole-file gate. Product source is fixed before invocation.
|
||||
import datetime,hashlib,json,os,pathlib,re,subprocess,threading,time
|
||||
REPO=pathlib.Path(__file__).resolve().parents[4]
|
||||
BASE=REPO/'agents/magica/work/queue-329'
|
||||
OUT=BASE/'gate-r2'
|
||||
def utc():return datetime.datetime.now(datetime.timezone.utc).isoformat(timespec='milliseconds')
|
||||
def load():return pathlib.Path('/proc/loadavg').read_text().split()[0]
|
||||
def nice19():os.setpriority(os.PRIO_PROCESS,0,19)
|
||||
def run(label,cmd,seconds=1800):
|
||||
scratch=subprocess.check_output(['mktemp','-d','/mnt/storage/scratch/tmp/XXXXXX'],text=True).strip()
|
||||
env=dict(os.environ,TMPDIR=scratch,npm_config_offline='true',MOSAIC_REQUIRE_EDITOR_BUILD='1')
|
||||
raw=pathlib.Path(scratch)/'stdout.txt';log=OUT/(label+'.txt');begin={'utc':utc(),'load1':load()};started=time.monotonic();events=[]
|
||||
stop=threading.Event()
|
||||
def sample():
|
||||
with (OUT/(label+'.load.jsonl')).open('w') as f:
|
||||
while not stop.is_set():f.write(json.dumps({'utc':utc(),'load1':load()})+'\n');f.flush();stop.wait(1)
|
||||
thread=threading.Thread(target=sample);thread.start()
|
||||
try:
|
||||
with raw.open('w') as f:
|
||||
f.write('command: '+json.dumps(['timeout','-k','10',str(seconds),*cmd])+'\nTMPDIR: '+scratch+'\nbegin: '+json.dumps(begin)+'\n');f.flush()
|
||||
p=subprocess.Popen(['timeout','-k','10',str(seconds),*cmd],cwd=REPO,env=env,stdout=subprocess.PIPE,stderr=subprocess.STDOUT,text=True,preexec_fn=nice19)
|
||||
priority=os.getpriority(os.PRIO_PROCESS,p.pid);f.write('launch nice: '+str(priority)+'\n');f.flush()
|
||||
for line in p.stdout:
|
||||
f.write(line);f.flush()
|
||||
if re.match(r'^\s*(✖|not ok )',line):events.append({'utc':utc(),'load1':load(),'event':line.rstrip()})
|
||||
rc=p.wait()
|
||||
finally:stop.set();thread.join()
|
||||
text=raw.read_text();log.write_text(''.join(line.rstrip()+'\n' for line in text.splitlines()))
|
||||
counts={}
|
||||
for k in ['tests','pass','fail','skipped','cancelled']:
|
||||
matches=re.findall(r'^(?:ℹ |# )'+k+r' (\d+)',text,re.M);counts[k]=int(matches[-1]) if matches else None
|
||||
receipt={'label':label,'rc':rc,'nice':priority,'begin':begin,'end':{'utc':utc(),'load1':load()},'seconds':round(time.monotonic()-started,3),'counts':counts,'failure_events':events,'log':str(log.relative_to(REPO)),'raw':str(raw),'raw_sha256':hashlib.sha256(raw.read_bytes()).hexdigest(),'review_sha256':hashlib.sha256(log.read_bytes()).hexdigest(),'normalization':'trailing whitespace only; raw retained'}
|
||||
with (OUT/'runs.jsonl').open('a') as f:f.write(json.dumps(receipt)+'\n')
|
||||
print(json.dumps(receipt),flush=True)
|
||||
return rc
|
||||
for file in sorted((REPO/'packages/model-proxy/tests').glob('*.test.mjs')):
|
||||
if run('model-proxy-'+file.stem,['node','--test',str(file)]):raise SystemExit(1)
|
||||
readers=json.loads((BASE/'r2-reader-files.json').read_text())
|
||||
for name in readers:
|
||||
if name.endswith('/federation-acceptance.test.mjs'):
|
||||
if run('cli-federation-acceptance-runner',['bash',str(REPO/'scripts/test-federation-acceptance.sh')],600):raise SystemExit(1)
|
||||
else:
|
||||
f=pathlib.Path(name)
|
||||
if run(f.parts[1]+'-'+f.stem,['node','--test',str(REPO/f)]):raise SystemExit(1)
|
||||
if run('test-config.sh',['bash',str(REPO/'scripts/test-config.sh')],600):raise SystemExit(1)
|
||||
print('Round2 gate complete.',flush=True)
|
||||
@@ -0,0 +1,622 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/model-proxy/tests/management-key-encoding.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/wfREQX
|
||||
nice: 19
|
||||
✖ proxy-key-invalid: Latin-1 leaves complete config/data inventories unchanged (17.65513ms)
|
||||
✖ proxy-key-invalid: leading space leaves complete config/data inventories unchanged (4.343871ms)
|
||||
✖ proxy-key-invalid: trailing space leaves complete config/data inventories unchanged (2.557103ms)
|
||||
✖ proxy-key-invalid: internal space leaves complete config/data inventories unchanged (3.2301ms)
|
||||
✔ printable non-space ASCII control initializes and authenticates with unchanged existing files (10.212034ms)
|
||||
ℹ tests 5
|
||||
ℹ suites 0
|
||||
ℹ pass 1
|
||||
ℹ fail 4
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 106.39976
|
||||
|
||||
✖ failing tests:
|
||||
|
||||
test at packages/model-proxy/tests/management-key-encoding.test.mjs:53:3
|
||||
✖ proxy-key-invalid: Latin-1 leaves complete config/data inventories unchanged (17.65513ms)
|
||||
AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal:
|
||||
+ actual - expected
|
||||
... Skipped lines
|
||||
|
||||
{
|
||||
+ refusal: null,
|
||||
- refusal: 'proxy-key-invalid',
|
||||
trees: {
|
||||
config: [
|
||||
{
|
||||
+ changed: '1792877317880267062',
|
||||
- changed: '1792877317869266954',
|
||||
device: '66305',
|
||||
gid: '1000',
|
||||
inode: '35585306',
|
||||
kind: 'directory',
|
||||
mode: '700',
|
||||
+ modified: '1792877317880267062',
|
||||
- modified: '1792877317869266954',
|
||||
path: '.',
|
||||
uid: '1000'
|
||||
},
|
||||
{
|
||||
changed: '1792877317869266954',
|
||||
...
|
||||
{
|
||||
+ changed: '1792877317879267052',
|
||||
- changed: '1792877317869266954',
|
||||
device: '66305',
|
||||
gid: '1000',
|
||||
+ inode: '35585385',
|
||||
+ kind: 'file',
|
||||
+ mode: '600',
|
||||
+ modified: '1792877317879267052',
|
||||
+ path: 'proxy.json',
|
||||
+ sha256: 'eae788102d628764ed2632c51a0c7aa190a7170cdfd163fec91a19f3b54d18b2',
|
||||
+ size: '128',
|
||||
+ uid: '1000'
|
||||
+ },
|
||||
+ {
|
||||
+ changed: '1792877317879267052',
|
||||
+ device: '66305',
|
||||
+ gid: '1000',
|
||||
inode: '35854617',
|
||||
kind: 'directory',
|
||||
mode: '700',
|
||||
+ modified: '1792877317879267052',
|
||||
- modified: '1792877317869266954',
|
||||
path: 'secrets',
|
||||
uid: '1000'
|
||||
},
|
||||
{
|
||||
changed: '1792877317869266954',
|
||||
...
|
||||
},
|
||||
+ {
|
||||
+ changed: '1792877317879267052',
|
||||
+ device: '66305',
|
||||
+ gid: '1000',
|
||||
+ inode: '35854619',
|
||||
+ kind: 'file',
|
||||
+ mode: '600',
|
||||
+ modified: '1792877317879267052',
|
||||
+ path: 'secrets/proxy-management.key',
|
||||
+ sha256: '361442f92cff70a5a8a7516c5f7fcf00c41f8dd603b1a68e35705762ed0c5204',
|
||||
+ size: '11',
|
||||
+ uid: '1000'
|
||||
+ }
|
||||
],
|
||||
data: [
|
||||
{
|
||||
+ changed: '1792877317878267042',
|
||||
- changed: '1792877317869266954',
|
||||
device: '66305',
|
||||
gid: '1000',
|
||||
inode: '35985487',
|
||||
kind: 'directory',
|
||||
mode: '700',
|
||||
+ modified: '1792877317878267042',
|
||||
- modified: '1792877317869266954',
|
||||
path: '.',
|
||||
uid: '1000'
|
||||
},
|
||||
{
|
||||
changed: '1792877317869266954',
|
||||
...
|
||||
},
|
||||
+ {
|
||||
+ changed: '1792877317879267052',
|
||||
+ device: '66305',
|
||||
+ gid: '1000',
|
||||
+ inode: '37276524',
|
||||
+ kind: 'directory',
|
||||
+ mode: '700',
|
||||
+ modified: '1792877317879267052',
|
||||
+ path: 'proxy',
|
||||
+ uid: '1000'
|
||||
+ },
|
||||
+ {
|
||||
+ changed: '1792877317878267042',
|
||||
+ device: '66305',
|
||||
+ gid: '1000',
|
||||
+ inode: '37406254',
|
||||
+ kind: 'directory',
|
||||
+ mode: '700',
|
||||
+ modified: '1792877317878267042',
|
||||
+ path: 'proxy/auth',
|
||||
+ uid: '1000'
|
||||
+ },
|
||||
+ {
|
||||
+ changed: '1792877317879267052',
|
||||
+ device: '66305',
|
||||
+ gid: '1000',
|
||||
+ inode: '37276525',
|
||||
+ kind: 'file',
|
||||
+ mode: '600',
|
||||
+ modified: '1792877317879267052',
|
||||
+ path: 'proxy/config.yaml',
|
||||
+ sha256: '913357d615bc20d3e116cc86e1bc9121d422193eb59d6b53e3460a905089a0c2',
|
||||
+ size: '714',
|
||||
+ uid: '1000'
|
||||
+ },
|
||||
+ {
|
||||
+ changed: '1792877317879267052',
|
||||
+ device: '66305',
|
||||
+ gid: '1000',
|
||||
+ inode: '37558552',
|
||||
+ kind: 'directory',
|
||||
+ mode: '700',
|
||||
+ modified: '1792877317879267052',
|
||||
+ path: 'proxy/logs',
|
||||
+ uid: '1000'
|
||||
+ }
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
at TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/model-proxy/tests/management-key-encoding.test.mjs:56:12)
|
||||
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) {
|
||||
generatedMessage: true,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: { refusal: null, trees: { config: [Array], data: [Array] } },
|
||||
expected: { refusal: 'proxy-key-invalid', trees: { config: [Array], data: [Array] } },
|
||||
operator: 'deepStrictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
|
||||
test at packages/model-proxy/tests/management-key-encoding.test.mjs:53:3
|
||||
✖ proxy-key-invalid: leading space leaves complete config/data inventories unchanged (4.343871ms)
|
||||
AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal:
|
||||
+ actual - expected
|
||||
... Skipped lines
|
||||
|
||||
{
|
||||
+ refusal: null,
|
||||
- refusal: 'proxy-key-invalid',
|
||||
trees: {
|
||||
config: [
|
||||
{
|
||||
+ changed: '1792877317887267130',
|
||||
- changed: '1792877317885267111',
|
||||
device: '66305',
|
||||
gid: '1000',
|
||||
inode: '35585306',
|
||||
kind: 'directory',
|
||||
mode: '700',
|
||||
+ modified: '1792877317887267130',
|
||||
- modified: '1792877317885267111',
|
||||
path: '.',
|
||||
uid: '1000'
|
||||
},
|
||||
{
|
||||
changed: '1792877317885267111',
|
||||
...
|
||||
{
|
||||
+ changed: '1792877317887267130',
|
||||
- changed: '1792877317885267111',
|
||||
device: '66305',
|
||||
gid: '1000',
|
||||
+ inode: '35585385',
|
||||
+ kind: 'file',
|
||||
+ mode: '600',
|
||||
+ modified: '1792877317887267130',
|
||||
+ path: 'proxy.json',
|
||||
+ sha256: '44fd676f556fbb60af0a2d2c08bbc19d652401d89004a01b8c1fd6ab699d3069',
|
||||
+ size: '128',
|
||||
+ uid: '1000'
|
||||
+ },
|
||||
+ {
|
||||
+ changed: '1792877317886267120',
|
||||
+ device: '66305',
|
||||
+ gid: '1000',
|
||||
inode: '35854617',
|
||||
kind: 'directory',
|
||||
mode: '700',
|
||||
+ modified: '1792877317886267120',
|
||||
- modified: '1792877317885267111',
|
||||
path: 'secrets',
|
||||
uid: '1000'
|
||||
},
|
||||
{
|
||||
changed: '1792877317885267111',
|
||||
...
|
||||
},
|
||||
+ {
|
||||
+ changed: '1792877317886267120',
|
||||
+ device: '66305',
|
||||
+ gid: '1000',
|
||||
+ inode: '35854619',
|
||||
+ kind: 'file',
|
||||
+ mode: '600',
|
||||
+ modified: '1792877317886267120',
|
||||
+ path: 'secrets/proxy-management.key',
|
||||
+ sha256: '12f158329015f5fa117a4be5b3380d6e989bd9d1e699af4b1555284e6c53811e',
|
||||
+ size: '12',
|
||||
+ uid: '1000'
|
||||
+ }
|
||||
],
|
||||
data: [
|
||||
{
|
||||
+ changed: '1792877317886267120',
|
||||
- changed: '1792877317885267111',
|
||||
device: '66305',
|
||||
gid: '1000',
|
||||
inode: '35985487',
|
||||
kind: 'directory',
|
||||
mode: '700',
|
||||
+ modified: '1792877317886267120',
|
||||
- modified: '1792877317885267111',
|
||||
path: '.',
|
||||
uid: '1000'
|
||||
},
|
||||
{
|
||||
changed: '1792877317885267111',
|
||||
...
|
||||
},
|
||||
+ {
|
||||
+ changed: '1792877317886267120',
|
||||
+ device: '66305',
|
||||
+ gid: '1000',
|
||||
+ inode: '37276524',
|
||||
+ kind: 'directory',
|
||||
+ mode: '700',
|
||||
+ modified: '1792877317886267120',
|
||||
+ path: 'proxy',
|
||||
+ uid: '1000'
|
||||
+ },
|
||||
+ {
|
||||
+ changed: '1792877317886267120',
|
||||
+ device: '66305',
|
||||
+ gid: '1000',
|
||||
+ inode: '37406254',
|
||||
+ kind: 'directory',
|
||||
+ mode: '700',
|
||||
+ modified: '1792877317886267120',
|
||||
+ path: 'proxy/auth',
|
||||
+ uid: '1000'
|
||||
+ },
|
||||
+ {
|
||||
+ changed: '1792877317886267120',
|
||||
+ device: '66305',
|
||||
+ gid: '1000',
|
||||
+ inode: '37276525',
|
||||
+ kind: 'file',
|
||||
+ mode: '600',
|
||||
+ modified: '1792877317886267120',
|
||||
+ path: 'proxy/config.yaml',
|
||||
+ sha256: '0056450ab396dc65c0b35b3e62c38909d3f5ae88ae3e1557edf0d36aeae57ab4',
|
||||
+ size: '715',
|
||||
+ uid: '1000'
|
||||
+ },
|
||||
+ {
|
||||
+ changed: '1792877317886267120',
|
||||
+ device: '66305',
|
||||
+ gid: '1000',
|
||||
+ inode: '37558552',
|
||||
+ kind: 'directory',
|
||||
+ mode: '700',
|
||||
+ modified: '1792877317886267120',
|
||||
+ path: 'proxy/logs',
|
||||
+ uid: '1000'
|
||||
+ }
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
at TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/model-proxy/tests/management-key-encoding.test.mjs:56:12)
|
||||
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
|
||||
generatedMessage: true,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: { refusal: null, trees: { config: [Array], data: [Array] } },
|
||||
expected: { refusal: 'proxy-key-invalid', trees: { config: [Array], data: [Array] } },
|
||||
operator: 'deepStrictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
|
||||
test at packages/model-proxy/tests/management-key-encoding.test.mjs:53:3
|
||||
✖ proxy-key-invalid: trailing space leaves complete config/data inventories unchanged (2.557103ms)
|
||||
AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal:
|
||||
+ actual - expected
|
||||
... Skipped lines
|
||||
|
||||
{
|
||||
+ refusal: null,
|
||||
- refusal: 'proxy-key-invalid',
|
||||
trees: {
|
||||
config: [
|
||||
{
|
||||
+ changed: '1792877317890267159',
|
||||
- changed: '1792877317889388572',
|
||||
device: '66305',
|
||||
gid: '1000',
|
||||
inode: '35585306',
|
||||
kind: 'directory',
|
||||
mode: '700',
|
||||
+ modified: '1792877317890267159',
|
||||
- modified: '1792877317889388572',
|
||||
path: '.',
|
||||
uid: '1000'
|
||||
},
|
||||
{
|
||||
changed: '1792877317889388572',
|
||||
...
|
||||
{
|
||||
+ changed: '1792877317890267159',
|
||||
- changed: '1792877317889388572',
|
||||
device: '66305',
|
||||
gid: '1000',
|
||||
+ inode: '35585385',
|
||||
+ kind: 'file',
|
||||
+ mode: '600',
|
||||
+ modified: '1792877317890267159',
|
||||
+ path: 'proxy.json',
|
||||
+ sha256: '5a88bb4a05eeb2dccabc528085d552425331f947f7a310876018b8f4d98c1f4c',
|
||||
+ size: '128',
|
||||
+ uid: '1000'
|
||||
+ },
|
||||
+ {
|
||||
+ changed: '1792877317890267159',
|
||||
+ device: '66305',
|
||||
+ gid: '1000',
|
||||
inode: '35854617',
|
||||
kind: 'directory',
|
||||
mode: '700',
|
||||
+ modified: '1792877317890267159',
|
||||
- modified: '1792877317889388572',
|
||||
path: 'secrets',
|
||||
uid: '1000'
|
||||
},
|
||||
{
|
||||
changed: '1792877317889388572',
|
||||
...
|
||||
},
|
||||
+ {
|
||||
+ changed: '1792877317890267159',
|
||||
+ device: '66305',
|
||||
+ gid: '1000',
|
||||
+ inode: '35854619',
|
||||
+ kind: 'file',
|
||||
+ mode: '600',
|
||||
+ modified: '1792877317890267159',
|
||||
+ path: 'secrets/proxy-management.key',
|
||||
+ sha256: '679ceb45ea1307ef138dec7d9b8f1dbe01928a486cd451cc03f9387118486fb8',
|
||||
+ size: '12',
|
||||
+ uid: '1000'
|
||||
+ }
|
||||
],
|
||||
data: [
|
||||
{
|
||||
+ changed: '1792877317890267159',
|
||||
- changed: '1792877317889388572',
|
||||
device: '66305',
|
||||
gid: '1000',
|
||||
inode: '35985487',
|
||||
kind: 'directory',
|
||||
mode: '700',
|
||||
+ modified: '1792877317890267159',
|
||||
- modified: '1792877317889388572',
|
||||
path: '.',
|
||||
uid: '1000'
|
||||
},
|
||||
{
|
||||
changed: '1792877317889388572',
|
||||
...
|
||||
},
|
||||
+ {
|
||||
+ changed: '1792877317890267159',
|
||||
+ device: '66305',
|
||||
+ gid: '1000',
|
||||
+ inode: '37276524',
|
||||
+ kind: 'directory',
|
||||
+ mode: '700',
|
||||
+ modified: '1792877317890267159',
|
||||
+ path: 'proxy',
|
||||
+ uid: '1000'
|
||||
+ },
|
||||
+ {
|
||||
+ changed: '1792877317890267159',
|
||||
+ device: '66305',
|
||||
+ gid: '1000',
|
||||
+ inode: '37406254',
|
||||
+ kind: 'directory',
|
||||
+ mode: '700',
|
||||
+ modified: '1792877317890267159',
|
||||
+ path: 'proxy/auth',
|
||||
+ uid: '1000'
|
||||
+ },
|
||||
+ {
|
||||
+ changed: '1792877317890267159',
|
||||
+ device: '66305',
|
||||
+ gid: '1000',
|
||||
+ inode: '37276525',
|
||||
+ kind: 'file',
|
||||
+ mode: '600',
|
||||
+ modified: '1792877317890267159',
|
||||
+ path: 'proxy/config.yaml',
|
||||
+ sha256: '74995e5bd516dfa85c4d9d1e94a9bd6f456caf9670cb15afc159e394191caf3e',
|
||||
+ size: '715',
|
||||
+ uid: '1000'
|
||||
+ },
|
||||
+ {
|
||||
+ changed: '1792877317890267159',
|
||||
+ device: '66305',
|
||||
+ gid: '1000',
|
||||
+ inode: '37558552',
|
||||
+ kind: 'directory',
|
||||
+ mode: '700',
|
||||
+ modified: '1792877317890267159',
|
||||
+ path: 'proxy/logs',
|
||||
+ uid: '1000'
|
||||
+ }
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
at TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/model-proxy/tests/management-key-encoding.test.mjs:56:12)
|
||||
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
|
||||
generatedMessage: true,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: { refusal: null, trees: { config: [Array], data: [Array] } },
|
||||
expected: { refusal: 'proxy-key-invalid', trees: { config: [Array], data: [Array] } },
|
||||
operator: 'deepStrictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
|
||||
test at packages/model-proxy/tests/management-key-encoding.test.mjs:53:3
|
||||
✖ proxy-key-invalid: internal space leaves complete config/data inventories unchanged (3.2301ms)
|
||||
AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal:
|
||||
+ actual - expected
|
||||
... Skipped lines
|
||||
|
||||
{
|
||||
+ refusal: null,
|
||||
- refusal: 'proxy-key-invalid',
|
||||
trees: {
|
||||
config: [
|
||||
{
|
||||
+ changed: '1792877317893267189',
|
||||
- changed: '1792877317892267179',
|
||||
device: '66305',
|
||||
gid: '1000',
|
||||
inode: '35585306',
|
||||
kind: 'directory',
|
||||
mode: '700',
|
||||
+ modified: '1792877317893267189',
|
||||
- modified: '1792877317892267179',
|
||||
path: '.',
|
||||
uid: '1000'
|
||||
},
|
||||
{
|
||||
changed: '1792877317892267179',
|
||||
...
|
||||
{
|
||||
+ changed: '1792877317893210462',
|
||||
- changed: '1792877317892267179',
|
||||
device: '66305',
|
||||
gid: '1000',
|
||||
+ inode: '35585385',
|
||||
+ kind: 'file',
|
||||
+ mode: '600',
|
||||
+ modified: '1792877317893210462',
|
||||
+ path: 'proxy.json',
|
||||
+ sha256: '835d57f852a1f6534d8e8c3ba4b9e0e9dbc959fd52dd0b3ab37e665ff71a7919',
|
||||
+ size: '128',
|
||||
+ uid: '1000'
|
||||
+ },
|
||||
+ {
|
||||
+ changed: '1792877317892893590',
|
||||
+ device: '66305',
|
||||
+ gid: '1000',
|
||||
inode: '35854617',
|
||||
kind: 'directory',
|
||||
mode: '700',
|
||||
+ modified: '1792877317892893590',
|
||||
- modified: '1792877317892267179',
|
||||
path: 'secrets',
|
||||
uid: '1000'
|
||||
},
|
||||
{
|
||||
changed: '1792877317892267179',
|
||||
...
|
||||
},
|
||||
+ {
|
||||
+ changed: '1792877317892893590',
|
||||
+ device: '66305',
|
||||
+ gid: '1000',
|
||||
+ inode: '35854619',
|
||||
+ kind: 'file',
|
||||
+ mode: '600',
|
||||
+ modified: '1792877317892893590',
|
||||
+ path: 'secrets/proxy-management.key',
|
||||
+ sha256: '387f480c5b52b6bfdd2b37db75106545b5d3bbbc68a840949f37d99f5bf75c46',
|
||||
+ size: '11',
|
||||
+ uid: '1000'
|
||||
+ }
|
||||
],
|
||||
data: [
|
||||
{
|
||||
+ changed: '1792877317892893590',
|
||||
- changed: '1792877317892267179',
|
||||
device: '66305',
|
||||
gid: '1000',
|
||||
inode: '35985487',
|
||||
kind: 'directory',
|
||||
mode: '700',
|
||||
+ modified: '1792877317892893590',
|
||||
- modified: '1792877317892267179',
|
||||
path: '.',
|
||||
uid: '1000'
|
||||
},
|
||||
{
|
||||
changed: '1792877317892267179',
|
||||
...
|
||||
},
|
||||
+ {
|
||||
+ changed: '1792877317892893590',
|
||||
+ device: '66305',
|
||||
+ gid: '1000',
|
||||
+ inode: '37276524',
|
||||
+ kind: 'directory',
|
||||
+ mode: '700',
|
||||
+ modified: '1792877317892893590',
|
||||
+ path: 'proxy',
|
||||
+ uid: '1000'
|
||||
+ },
|
||||
+ {
|
||||
+ changed: '1792877317892893590',
|
||||
+ device: '66305',
|
||||
+ gid: '1000',
|
||||
+ inode: '37406254',
|
||||
+ kind: 'directory',
|
||||
+ mode: '700',
|
||||
+ modified: '1792877317892893590',
|
||||
+ path: 'proxy/auth',
|
||||
+ uid: '1000'
|
||||
+ },
|
||||
+ {
|
||||
+ changed: '1792877317892893590',
|
||||
+ device: '66305',
|
||||
+ gid: '1000',
|
||||
+ inode: '37276525',
|
||||
+ kind: 'file',
|
||||
+ mode: '600',
|
||||
+ modified: '1792877317892893590',
|
||||
+ path: 'proxy/config.yaml',
|
||||
+ sha256: 'cffd56c62767ae2470f81322c1f201e4b77d078801cbebaab264669b643a7920',
|
||||
+ size: '714',
|
||||
+ uid: '1000'
|
||||
+ },
|
||||
+ {
|
||||
+ changed: '1792877317892893590',
|
||||
+ device: '66305',
|
||||
+ gid: '1000',
|
||||
+ inode: '37558552',
|
||||
+ kind: 'directory',
|
||||
+ mode: '700',
|
||||
+ modified: '1792877317892893590',
|
||||
+ path: 'proxy/logs',
|
||||
+ uid: '1000'
|
||||
+ }
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
at TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/model-proxy/tests/management-key-encoding.test.mjs:56:12)
|
||||
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
|
||||
generatedMessage: true,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: { refusal: null, trees: { config: [Array], data: [Array] } },
|
||||
expected: { refusal: 'proxy-key-invalid', trees: { config: [Array], data: [Array] } },
|
||||
operator: 'deepStrictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{"utc": "2026-10-24T21:31:13.135+00:00", "load1": "2.97"}
|
||||
@@ -0,0 +1,22 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/access-revoke.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/GHeQEZ
|
||||
begin: {"utc": "2026-10-24T21:31:13.135+00:00", "load1": "2.97"}
|
||||
launch nice: 19
|
||||
✔ R4: the timer sweep after a hand edit ends only the lost user's run; its next call refuses thread-revoked (34.547237ms)
|
||||
✔ R4: an expiry with no write and no request ends the run at the next timer sweep (24.609266ms)
|
||||
✔ R4: a downgrade to viewer is a loss (22.279316ms)
|
||||
✔ R4: another user's request after a hand edit ends the lost user's run, and its own run stays (24.741291ms)
|
||||
✔ R4: a request reads the access file only when its stamp changed, once per change (22.355965ms)
|
||||
✔ R4: access.reload ends the lost runs at once for the human; the tester, a reader, an agent and a user are refused (27.346334ms)
|
||||
✔ R4: threadsState marks revoked: true on the lost user's thread only, a pending message included (18.726202ms)
|
||||
✔ R4: threadsState after an expiry with no write and no sweep ends the claim before it marks the row revoked (23.973845ms)
|
||||
✔ R4: a new run of a revoked thread refuses thread-revoked at bind and at claim; a rebind is allowed (20.679959ms)
|
||||
✔ R4 runtime: a hand edit ends the run at the first timer period, intervalMs is checked, and close stops the timer (60.782175ms)
|
||||
ℹ tests 10
|
||||
ℹ suites 0
|
||||
ℹ pass 10
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 428.488475
|
||||
@@ -0,0 +1,3 @@
|
||||
{"utc": "2026-10-24T21:31:13.595+00:00", "load1": "2.97"}
|
||||
{"utc": "2026-10-24T21:31:14.595+00:00", "load1": "2.97"}
|
||||
{"utc": "2026-10-24T21:31:15.595+00:00", "load1": "2.97"}
|
||||
@@ -0,0 +1,63 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/chief-of-staff.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/70lNbE
|
||||
begin: {"utc": "2026-10-24T21:31:13.594+00:00", "load1": "2.97"}
|
||||
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 (32.021419ms)
|
||||
✔ REQ-ROLE-2: a role without role.end still needs a resolved decision to revoke (29.430214ms)
|
||||
✔ REQ-ROLE-2: storage accepts a revoke with a reason or a decision and aborts one with neither (22.167041ms)
|
||||
✔ REQ-ROLE-2: the chief of staff may still cite a decision, and a decision alone is the old path (20.510415ms)
|
||||
✔ REQ-ROLE-2: a role without role.end still ends a run through a resolved decision, which is recorded and has no reason (23.797427ms)
|
||||
✔ REQ-ROLE-2: a reason is required, bounded, and never sent with a decision (24.437699ms)
|
||||
✔ REQ-COS-1: the chief of staff cannot end its own run; its end of the assistant stops the assistant's thread run (25.396808ms)
|
||||
✔ REQ-LIMIT-1, REQ-COS-1: organization.set from the chief of staff reaches the shared writer, named as the actor (21.135644ms)
|
||||
✔ REQ-LIMIT-1, REQ-COS-1: a refused organization.set logs action.refused and no action.allowed, like a refused limits.set (27.488015ms)
|
||||
✔ REQ-LIMIT-1: organization.set is refused for every caller whose role file lacks organization.change (29.388334ms)
|
||||
✔ REQ-LIMIT-1: the chief of staff is logged as allowed, and organization.set takes only the human's keys (31.937354ms)
|
||||
✔ REQ-COS-1: organization.revision answers the revision alone to the chief of staff and spends nothing (25.437066ms)
|
||||
✔ REQ-COS-1, REQ-LIMIT-1: organization.revision is refused for every caller whose role file lacks organization.change (28.407913ms)
|
||||
✔ 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 (92.275578ms)
|
||||
✔ REQ-COS-1: the chief of staff reads the revision, changes the file with it, and reads again after a stale one is refused (74.273995ms)
|
||||
✔ Q169: the chief of staff's change of the assistant is validated, written and logged; a stale or protection-stripping one is refused (77.219759ms)
|
||||
✔ row 65, Q169: the chief's change of the assistant's route runs the routing checks, and a valid one saves as the chief (55.095178ms)
|
||||
✔ 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 (78.434398ms)
|
||||
✔ row 194 T10: the chief's reason end of a kept instance refuses instance-kept, holds the claim and spends nothing (20.449537ms)
|
||||
✔ row 194 T10 (Q2): a role.revoke citing a decision the human resolved still ends a kept run (21.621577ms)
|
||||
✔ 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 (21.57776ms)
|
||||
✔ row 194 T13: organization.set and limits.set refuse the launch, retired, keep and noHire keys before the writer (25.01784ms)
|
||||
✔ row 194 T18 (D2.4): from a chief session veto.set and instances.set refuse, and nothing reaches the writer (25.455708ms)
|
||||
✔ row 194 T8: the chief hires with a reason and no decision, the writer gets the reason as context, and the log names it (21.549484ms)
|
||||
✔ row 194 T11: on a bus with two businesses, the chief of one hires and fires only in its own (18.659657ms)
|
||||
✔ row 194 T8: hire and fire need a reason of 1 to 500 characters and refuse a decision key (29.724146ms)
|
||||
✔ row 194 T8 (sage-1471): only the chief hires or fires; every other role refuses role-not-chief, even one granted the actions (28.129345ms)
|
||||
✔ row 194 T8 (sage-1471): a chief whose authority lacks role.hire or role.fire refuses decision-required before the writer (45.085341ms)
|
||||
✔ 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 (24.800287ms)
|
||||
✔ 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 (726.025645ms)
|
||||
✔ row 194 T8b: a hire without the role files configured refuses not-configured (21.67094ms)
|
||||
✔ row 194 T9: a fire revokes the claim, cancels open requests, asks the launcher to kill the runs, then delists and logs (26.357778ms)
|
||||
✔ 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 (27.528345ms)
|
||||
✔ row 194 T9: fire refusals come before step A and leave the claim, the requests and the file alone (24.445362ms)
|
||||
✔ row 194 T9c: a writer failure at B leaves the instance firing, and the repeat delists and logs once (27.637943ms)
|
||||
✔ row 194 T9c: a failure at C leaves the fire unlogged and the instance firing, and the repeat logs it (27.876778ms)
|
||||
✔ 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 (24.108346ms)
|
||||
✔ row 194 T10: a hire or fire of a kept name refuses instance-kept before the writer (21.547644ms)
|
||||
✔ row 194 T10: a fire the writer's check refuses from the file stops nothing and leaves the instance launchable (22.276176ms)
|
||||
✔ row 194 T18: hire and fire take only their own keys, and a refused call writes nothing (29.326917ms)
|
||||
✔ 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 (81.364182ms)
|
||||
✔ row 194 W-N1: the launcher's take of a launch or regenerate of a firing instance closes it as instance-firing (33.602482ms)
|
||||
ℹ tests 42
|
||||
ℹ suites 0
|
||||
ℹ pass 42
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 2242.04646
|
||||
@@ -0,0 +1 @@
|
||||
{"utc": "2026-10-24T21:31:15.866+00:00", "load1": "3.13"}
|
||||
@@ -0,0 +1,13 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/citation-runtime.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/d7EDzc
|
||||
begin: {"utc": "2026-10-24T21:31:15.866+00:00", "load1": "3.13"}
|
||||
launch nice: 19
|
||||
✔ C2-06 runtime reads changed and unreadable reply limits without restarting (134.953106ms)
|
||||
ℹ tests 1
|
||||
ℹ suites 0
|
||||
ℹ pass 1
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 259.04482
|
||||
@@ -0,0 +1 @@
|
||||
{"utc": "2026-10-24T21:31:16.156+00:00", "load1": "3.13"}
|
||||
@@ -0,0 +1,18 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/creative.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/pn1E2D
|
||||
begin: {"utc": "2026-10-24T21:31:16.156+00:00", "load1": "3.13"}
|
||||
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 (46.048691ms)
|
||||
✔ a creative instance sends only to the user and hears only from the user (45.129155ms)
|
||||
✔ M10 through the broker: the chief and the tester are refused on bean, the human's limits.set of its models key works (80.733759ms)
|
||||
✔ row 256 T6 the human deletes a creative instance through the broker; the chief and the tester are refused at the verb (61.471711ms)
|
||||
ℹ tests 4
|
||||
ℹ suites 0
|
||||
ℹ pass 4
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 352.789199
|
||||
@@ -0,0 +1 @@
|
||||
{"utc": "2026-10-24T21:31:16.542+00:00", "load1": "3.13"}
|
||||
@@ -0,0 +1,14 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/credential-verbs.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/9f3var
|
||||
begin: {"utc": "2026-10-24T21:31:16.542+00:00", "load1": "3.13"}
|
||||
launch nice: 19
|
||||
✔ row 199: the lifecycle verbs refuse every session but the human, and the tester revokes only (45.718129ms)
|
||||
✔ T5: issue, rotate, revoke and delete are live, rewrite the business file and leave one receipt each, with no value anywhere (88.032128ms)
|
||||
ℹ tests 2
|
||||
ℹ suites 0
|
||||
ℹ pass 2
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 260.103045
|
||||
@@ -0,0 +1 @@
|
||||
{"utc": "2026-10-24T21:31:16.834+00:00", "load1": "3.13"}
|
||||
@@ -0,0 +1,20 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/daily-quota-runtime.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/qkIeTC
|
||||
begin: {"utc": "2026-10-24T21:31:16.834+00:00", "load1": "3.13"}
|
||||
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":"3ae70253-ee58-4761-9325-6571fc8fdf45","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":"23bd6b9e-8fdd-4ca9-8920-100618a0b70c","source":"@none","code":"baseline-unknown"}
|
||||
✔ REQ-LIMIT-2 runtime: limits counts the daily quota, and mayLaunch refuses only the account at it (134.844885ms)
|
||||
✔ REQ-LIMIT-4 runtime: a run bound with the account writes it on its usage records and stops at the quota (51.014958ms)
|
||||
✔ REQ-LIMIT-4 runtime: a run bound without an account records null and the daily quota never stops it (45.081133ms)
|
||||
✔ REQ-LIMIT-4 bindLaunch keeps the account off session.launched, refuses one that is not an identifier, and takes null as none (13.457066ms)
|
||||
ℹ tests 4
|
||||
ℹ suites 0
|
||||
ℹ pass 4
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 326.259933
|
||||
@@ -0,0 +1 @@
|
||||
{"utc": "2026-10-24T21:31:17.192+00:00", "load1": "3.13"}
|
||||
@@ -0,0 +1,14 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/grant-scope-runtime.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/vvhrW2
|
||||
begin: {"utc": "2026-10-24T21:31:17.192+00:00", "load1": "3.13"}
|
||||
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 (71.674696ms)
|
||||
ℹ tests 1
|
||||
ℹ suites 0
|
||||
ℹ pass 1
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 196.005015
|
||||
@@ -0,0 +1,15 @@
|
||||
{"utc": "2026-10-24T21:31:17.418+00:00", "load1": "3.13"}
|
||||
{"utc": "2026-10-24T21:31:18.418+00:00", "load1": "3.13"}
|
||||
{"utc": "2026-10-24T21:31:19.418+00:00", "load1": "3.13"}
|
||||
{"utc": "2026-10-24T21:31:20.419+00:00", "load1": "3.13"}
|
||||
{"utc": "2026-10-24T21:31:21.419+00:00", "load1": "3.04"}
|
||||
{"utc": "2026-10-24T21:31:22.419+00:00", "load1": "3.04"}
|
||||
{"utc": "2026-10-24T21:31:23.419+00:00", "load1": "3.04"}
|
||||
{"utc": "2026-10-24T21:31:24.420+00:00", "load1": "3.04"}
|
||||
{"utc": "2026-10-24T21:31:25.420+00:00", "load1": "3.04"}
|
||||
{"utc": "2026-10-24T21:31:26.420+00:00", "load1": "2.96"}
|
||||
{"utc": "2026-10-24T21:31:27.421+00:00", "load1": "2.96"}
|
||||
{"utc": "2026-10-24T21:31:28.421+00:00", "load1": "2.96"}
|
||||
{"utc": "2026-10-24T21:31:29.421+00:00", "load1": "2.96"}
|
||||
{"utc": "2026-10-24T21:31:30.421+00:00", "load1": "2.96"}
|
||||
{"utc": "2026-10-24T21:31:31.422+00:00", "load1": "2.80"}
|
||||
@@ -0,0 +1,38 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/host-run.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/BU48EX
|
||||
begin: {"utc": "2026-10-24T21:31:17.417+00:00", "load1": "3.13"}
|
||||
launch nice: 19
|
||||
✔ row 280: an occupied TCP port is attempted, refused, and retried with our sshd (89.115057ms)
|
||||
✔ row 280: every injected picker sample is unprivileged and outside the ephemeral range (0.359153ms)
|
||||
✔ the executor tests need sshd, ssh, ssh-agent, ssh-add, ssh-keygen and setpriv: a missing one fails, never skips (0.105538ms)
|
||||
✔ T3: organization.set, limits.set and instances.set refuse hosts, and the writer never runs (24.679622ms)
|
||||
✔ T4: the value check takes one unencrypted ed25519 key and nothing else (201.007963ms)
|
||||
✔ T5 to T8: registry, grant, argv shape and allowlist refusals (516.394575ms)
|
||||
✔ T9: under 1.7 every call needs a decision bound to its host, argv and stdin, spent once (294.797122ms)
|
||||
✔ T10, T11: argv reaches sudo unchanged after sudo -n -- (274.701348ms)
|
||||
✔ T12, T13: exit code passes through, the timeout kills the group, output is capped (1499.581177ms)
|
||||
✔ T14: a host key not in the registry refuses and nothing runs (174.485366ms)
|
||||
✔ G18: hosts.check with a wrong pin refuses host-key-mismatch and runs nothing on the host (317.456396ms)
|
||||
✔ N3: a remote exit 255 that prints the pin refusal text is the command result, and an ssh failure keeps its message (303.375045ms)
|
||||
✔ T15: ssh reads no config file and no user known_hosts (270.405711ms)
|
||||
✔ T16, T17: key material in output or stdin refuses credential-leak, and no event holds it (655.718535ms)
|
||||
✔ T18, T19, T20: one call at a time, no key in any argv or env, and nothing left after (4652.92337ms)
|
||||
✔ T21: revoke kills the call in flight, and the next call refuses (305.97951ms)
|
||||
✔ T22: events carry host, address, user and argv in clear, and sizes and hashes only (261.929802ms)
|
||||
✔ T24: no literal gitea and vikunja kind list outside vocabulary.mjs, and the credential use sites are known (41.423166ms)
|
||||
✔ T25: no role definition lists host.sudo while it is a hard wait (0.5194ms)
|
||||
✔ T27: the bus child dying takes ssh and ssh-agent with it (316.803066ms)
|
||||
✔ T27: ssh-add -t drops the key from an agent the test keeps alive (3556.902707ms)
|
||||
✔ N2: a hung ssh-add is killed at its limit or on abort, and nothing is left running (429.649056ms)
|
||||
✔ T27: the start sweep keeps a live bus dir and kills only a matching live process (26.892106ms)
|
||||
✔ T27: the bus start sweeps <configDir>/secrets/run before it listens, and a stray entry stops the start (52.911346ms)
|
||||
✔ M3: host.run refuses host-not-granted unless the grant record has an approved, spent host grant (149.417261ms)
|
||||
✔ M3: a host_grants record gives Credentials a store reference at start, and a restart reads its key (112.967845ms)
|
||||
ℹ tests 26
|
||||
ℹ suites 0
|
||||
ℹ pass 26
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 14657.505831
|
||||
@@ -0,0 +1 @@
|
||||
{"utc": "2026-10-24T21:31:32.106+00:00", "load1": "2.80"}
|
||||
@@ -0,0 +1,17 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/instances-verb.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/XknzTf
|
||||
begin: {"utc": "2026-10-24T21:31:32.105+00:00", "load1": "2.80"}
|
||||
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 (34.201963ms)
|
||||
✔ 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 (127.501097ms)
|
||||
✔ 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 (23.409986ms)
|
||||
ℹ tests 3
|
||||
ℹ suites 0
|
||||
ℹ pass 3
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 270.80968
|
||||
@@ -0,0 +1,2 @@
|
||||
{"utc": "2026-10-24T21:31:32.408+00:00", "load1": "2.80"}
|
||||
{"utc": "2026-10-24T21:31:33.408+00:00", "load1": "2.80"}
|
||||
@@ -0,0 +1,18 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/library-credential.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/HpiYQK
|
||||
begin: {"utc": "2026-10-24T21:31:32.407+00:00", "load1": "2.80"}
|
||||
launch nice: 19
|
||||
✔ C2-03b T6: the slot before any chief evidence, then the listed chief's live grant (28.054219ms)
|
||||
✔ C2-03b T7: a chief revoked through grants.revoke or fired through instance.fire refuses, and the fallback stays ended (307.68609ms)
|
||||
✔ C2-03b T7 choice checks: delisted, a fire under way and held each refuse; a rehire lists the chief again (34.476977ms)
|
||||
✔ C2-03b T8: a chief grant on another project ends the fallback, and two listed chiefs refuse library-fetch-no-grant (31.887252ms)
|
||||
✔ C2-03b departure (sage-2928): with no chief entry, any Gitea grant evidence refuses (15.585277ms)
|
||||
✔ C2-03b T9 runtime: the chief's store file and user, then a real revoke that runs no git with the slot at 0000 (820.372398ms)
|
||||
ℹ tests 6
|
||||
ℹ suites 0
|
||||
ℹ pass 6
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 1371.218558
|
||||
@@ -0,0 +1,2 @@
|
||||
{"utc": "2026-10-24T21:31:33.809+00:00", "load1": "2.80"}
|
||||
{"utc": "2026-10-24T21:31:34.809+00:00", "load1": "2.80"}
|
||||
@@ -0,0 +1,23 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/library-lookups.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/PQlDGA
|
||||
begin: {"utc": "2026-10-24T21:31:33.808+00:00", "load1": "2.80"}
|
||||
launch nice: 19
|
||||
✔ all five agent verbs read the configured served commit through real queries (125.157994ms)
|
||||
✔ each verb refuses missing universe and unknown keys before host work (70.852251ms)
|
||||
✔ no library, missing host adapter and undeclared project refuse library-not-configured (141.630635ms)
|
||||
✔ reads need the current holder on each call; human/tester/reader are not agents (79.13119ms)
|
||||
✔ releasing a claim during an async lookup fences the response (41.255849ms)
|
||||
✔ a business library removed during an async read cannot leak its result (41.789212ms)
|
||||
✔ freshness boundary, unknown last fetch and failed fetch still use immutable served state (120.61006ms)
|
||||
✔ an unreadable sync state fails closed; a busy sync keeps serving the existing pin (78.195399ms)
|
||||
✔ a stale lookup sees the commit published by its sync, not the prior served commit (83.110874ms)
|
||||
✔ real socket awaits lookup results and rechecks rejected query arguments (91.960122ms)
|
||||
✔ runtime actually injects the lookup adapter, without exposing human library.file (128.599922ms)
|
||||
ℹ tests 11
|
||||
ℹ suites 0
|
||||
ℹ pass 11
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 1134.147984
|
||||
@@ -0,0 +1,7 @@
|
||||
{"utc": "2026-10-24T21:31:34.973+00:00", "load1": "2.80"}
|
||||
{"utc": "2026-10-24T21:31:35.973+00:00", "load1": "2.82"}
|
||||
{"utc": "2026-10-24T21:31:36.974+00:00", "load1": "2.82"}
|
||||
{"utc": "2026-10-24T21:31:37.974+00:00", "load1": "2.82"}
|
||||
{"utc": "2026-10-24T21:31:38.974+00:00", "load1": "2.82"}
|
||||
{"utc": "2026-10-24T21:31:39.975+00:00", "load1": "2.82"}
|
||||
{"utc": "2026-10-24T21:31:40.975+00:00", "load1": "2.75"}
|
||||
@@ -0,0 +1,18 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/library-sync.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/eFLzOZ
|
||||
begin: {"utc": "2026-10-24T21:31:34.973+00:00", "load1": "2.80"}
|
||||
launch nice: 19
|
||||
✔ C2-03a library.sync: every agent, the tester and a reader are refused before the adapter runs (20.247501ms)
|
||||
✔ C2-03a library.sync: the human fetches, accept passes through, and a held sync is a recorded refusal (17.293576ms)
|
||||
✔ C2-03a library.sync: a LibraryError keeps its code and a host without sync is not configured (24.911909ms)
|
||||
✔ C2-03a runtime: a librarySync from a boot config, with no function, is refused (1.434915ms)
|
||||
✔ C2-03a runtime: the timer syncs each entry with a user at start and on each tick, logs codes only, and stops on close (588.887085ms)
|
||||
✔ row 254 human-cli: library.sync outlasts the 5 s client default, and library.status does not (6085.908124ms)
|
||||
ℹ tests 6
|
||||
ℹ suites 0
|
||||
ℹ pass 6
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 6865.274376
|
||||
@@ -0,0 +1 @@
|
||||
{"utc": "2026-10-24T21:31:41.872+00:00", "load1": "2.75"}
|
||||
@@ -0,0 +1,18 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/library.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/kPxN9l
|
||||
begin: {"utc": "2026-10-24T21:31:41.871+00:00", "load1": "2.75"}
|
||||
launch nice: 19
|
||||
✔ C2-04 M4: both verbs reject every agent before arguments or adapter access (36.647527ms)
|
||||
✔ C2-04 bus: human reads validate keys and return adapter results without path leakage (14.843231ms)
|
||||
✔ C2-04 socket: each async library verb resolves its result rather than serializing {} (86.740094ms)
|
||||
✔ C2-04 runtime: protectedRoots skips library but retains real code-root credential protection (109.591766ms)
|
||||
✔ C2-04 runtime: unsafe existing mirror refuses boot and never publishes a socket (25.806937ms)
|
||||
✔ C2-04 runtime: real library adapters reach the socket and lock waits leave other bus reads responsive (216.451154ms)
|
||||
ℹ tests 6
|
||||
ℹ suites 0
|
||||
ℹ pass 6
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 609.203457
|
||||
@@ -0,0 +1 @@
|
||||
{"utc": "2026-10-24T21:31:42.510+00:00", "load1": "2.75"}
|
||||
@@ -0,0 +1,21 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/lifecycle-revoke.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/hvc49a
|
||||
begin: {"utc": "2026-10-24T21:31:42.510+00:00", "load1": "2.75"}
|
||||
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 (90.451286ms)
|
||||
✔ T20 fire: an instance already delisted still has its tokens revoked and the file is left alone (53.068194ms)
|
||||
✔ T20 fire: with no entry in the running bus, a token on disk refuses and an empty store goes on (59.543932ms)
|
||||
✔ T20 delete: a revoke that fails keeps the file; one that succeeds clears the store, deletes, and names the tracker bot (67.413534ms)
|
||||
✔ T20 delete: with no entry in the running bus, a token file is cleared and the delete goes on; a file reference refuses (68.957837ms)
|
||||
✔ T21 delete: a write between the raise and the take makes the delete refuse revision-conflict before it revokes anything (70.80302ms)
|
||||
✔ row 281 T1 fire: a host.<id> or granted gitea file in the store refuses step B credential-revoke-failed, file unchanged (67.163664ms)
|
||||
✔ row 281 T1 start: a host grant record whose key file is gone starts and reads not-issued (54.306204ms)
|
||||
ℹ tests 8
|
||||
ℹ suites 0
|
||||
ℹ pass 8
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 659.873199
|
||||
@@ -0,0 +1 @@
|
||||
{"utc": "2026-10-24T21:31:43.202+00:00", "load1": "2.75"}
|
||||
@@ -0,0 +1,25 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/lifecycle-verbs.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/Ab3xx3
|
||||
begin: {"utc": "2026-10-24T21:31:43.202+00:00", "load1": "2.75"}
|
||||
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 (41.086566ms)
|
||||
✔ 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 (20.977879ms)
|
||||
✔ row 194 D1.1 take: a request is taken once, closes once, and lifecycleRequests lists only what is not closed (15.147322ms)
|
||||
✔ row 194 D1.1 take: a launch.revoke after the request closes it launch-revoked, and a request past 60 s closes request-expired (18.334348ms)
|
||||
✔ 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 (27.882799ms)
|
||||
✔ 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 (22.12436ms)
|
||||
✔ row 194 V3 terminate: claims revoked, open requests cancelled, bound runs named, taken requests listed; nothing at all answers not-held (28.710526ms)
|
||||
✔ row 194 V3 terminate of a thread instance: the human ends every thread, the tester only its own (21.663071ms)
|
||||
✔ 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 (32.552ms)
|
||||
✔ row 194 V5: an open launch past its 60 s is not starting, as it can only close request-expired (12.399681ms)
|
||||
✔ row 194 V5 after the take: lifecycleDelete re-checks running and starting, then commits through the writer with the human as actor (21.272711ms)
|
||||
✔ row 194 V5 retry: a retired name deletes again only after workspace-rename-failed, and that request commits nothing (19.587509ms)
|
||||
✔ 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 (134.310711ms)
|
||||
ℹ tests 13
|
||||
ℹ suites 0
|
||||
ℹ pass 13
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 498.238226
|
||||
@@ -0,0 +1 @@
|
||||
{"utc": "2026-10-24T21:31:43.731+00:00", "load1": "2.75"}
|
||||
@@ -0,0 +1,28 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/limit-checks.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/ktbbpy
|
||||
begin: {"utc": "2026-10-24T21:31:43.731+00:00", "load1": "2.75"}
|
||||
launch nice: 19
|
||||
✔ REQ-LIMIT-3 limitLeaves finds every limit object and skips the agent numbers (1.227604ms)
|
||||
✔ REQ-LIMIT-3 limitLeaves takes token limits at schema depth only, whatever their names (0.203119ms)
|
||||
✔ REQ-LIMIT-3 with no check switched on a launch is allowed, a turn never stops, and every limit is not enforced (15.274045ms)
|
||||
✔ REQ-LIMIT-3 a fixture check that refuses refuses the launch and stops the turn, logged with the limit and the count (16.142197ms)
|
||||
✔ REQ-LIMIT-3 a report that omits a limit shows it not enforced; a counted entry and a reason come through (12.350569ms)
|
||||
✔ REQ-LIMIT-4 each check gets the business, a copy of the limits, the subject, the records and the time (14.448872ms)
|
||||
✔ REQ-LIMIT-4 fail closed: a throw refuses, stops and fails the report, naming the check and the code (12.504145ms)
|
||||
✔ REQ-LIMIT-4 fail closed: a malformed answer, a promise, a rejected promise, a non-boolean or a bad hit is malformed-answer (15.749577ms)
|
||||
✔ REQ-LIMIT-4 fail closed: a check switched on but not loaded refuses, stops and fails every limit as not-loaded (11.742781ms)
|
||||
✔ REQ-LIMIT-4 state(), never-loaded case: before any load the report shows not enforced, or not-loaded for a switched-on check (9.845775ms)
|
||||
✔ REQ-LIMIT-4 state(), first-load-refused case: a check refused on its first load is not-loaded in mayLaunch, mustStop and report (10.825798ms)
|
||||
✔ REQ-LIMIT-4 fail closed: an unreadable organization file refuses and stops with check null; the report throws (11.336846ms)
|
||||
✔ REQ-LIMIT-4 fail closed: unreadable records refuse and stop with check null and fail the report (0.471683ms)
|
||||
✔ REQ-LIMIT-3 the shipped token-limit, through the real loader, counts known records only since the limit was set (16.868788ms)
|
||||
✔ REQ-LIMIT-3 a token limit for a provider named limit is counted and refuses, beside an agent limit of the same name (10.047416ms)
|
||||
✔ REQ-LIMIT-3 core reaches limit checks only through the plug-in loader (1.124657ms)
|
||||
ℹ tests 16
|
||||
ℹ suites 0
|
||||
ℹ pass 16
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 245.243109
|
||||
@@ -0,0 +1 @@
|
||||
{"utc": "2026-10-24T21:31:44.006+00:00", "load1": "2.75"}
|
||||
@@ -0,0 +1,23 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/limits-runtime.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/OgZo41
|
||||
begin: {"utc": "2026-10-24T21:31:44.006+00:00", "load1": "2.75"}
|
||||
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":"818eea2a-0f09-4cb7-b7a2-2d1f8b8c3b25","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":"4faae581-280f-452b-9504-d8341a7db84b","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 (141.15311ms)
|
||||
✔ REQ-LIMIT-3 runtime: with no limit check switched on, the limit shows not enforced and every launch is allowed (37.022098ms)
|
||||
✔ 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 (50.145968ms)
|
||||
✔ REQ-LIMIT-4 runtime: with no usage source a turn is unknown, counts zero and stops nothing under a limit of 1 (48.51093ms)
|
||||
✔ REQ-LIMIT-3 runtime: switching a limit check on with plugins.set loads it without a launch or a turn (66.483892ms)
|
||||
ℹ tests 5
|
||||
ℹ suites 0
|
||||
ℹ pass 5
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 388.497466
|
||||
@@ -0,0 +1 @@
|
||||
{"utc": "2026-10-24T21:31:44.429+00:00", "load1": "2.75"}
|
||||
@@ -0,0 +1,17 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/limits.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/ZE3dMq
|
||||
begin: {"utc": "2026-10-24T21:31:44.428+00:00", "load1": "2.75"}
|
||||
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 (23.316925ms)
|
||||
✔ runtime wires verified human settings to the actual shared file writer and actor receipt (103.246822ms)
|
||||
✔ uncertain organization receipts leave bus startup and reads alone but refuse writes until reconciled (54.340151ms)
|
||||
ℹ tests 3
|
||||
ℹ suites 0
|
||||
ℹ pass 3
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 268.397954
|
||||
@@ -0,0 +1 @@
|
||||
{"utc": "2026-10-24T21:31:44.731+00:00", "load1": "2.75"}
|
||||
@@ -0,0 +1,20 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/model-proxy.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/760xBV
|
||||
begin: {"utc": "2026-10-24T21:31:44.731+00:00", "load1": "2.75"}
|
||||
launch nice: 19
|
||||
✔ proxy.init only accepts path-bound outside-agent human; refuses agent/tester/reader (19.800473ms)
|
||||
✔ proxy.init proxy-key-invalid (11.627925ms)
|
||||
✔ proxy.init proxy-config-invalid (11.729362ms)
|
||||
✔ proxy.init invalid-request (11.484904ms)
|
||||
✔ proxy.init not-configured (11.155878ms)
|
||||
✔ proxy.init callback error redacts key and maps outcome to named refusal (11.150132ms)
|
||||
✔ socket awaits proxy.init and does not return a Promise object or retain human cap (30.330962ms)
|
||||
✔ proxy-init-failed: extra callback fields cannot return a management key (11.376302ms)
|
||||
ℹ tests 8
|
||||
ℹ suites 0
|
||||
ℹ pass 8
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 194.169461
|
||||
@@ -0,0 +1 @@
|
||||
{"utc": "2026-10-24T21:31:44.956+00:00", "load1": "2.75"}
|
||||
@@ -0,0 +1,19 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/plugins-verb.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/mpe9C4
|
||||
begin: {"utc": "2026-10-24T21:31:44.956+00:00", "load1": "2.75"}
|
||||
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 (24.151474ms)
|
||||
✔ 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 (112.999458ms)
|
||||
✔ vikunja:19/309 through the broker, a patch switches the kinds it names and keeps the rest; null removes one kind and is trailed (51.178757ms)
|
||||
ℹ tests 3
|
||||
ℹ suites 0
|
||||
ℹ pass 3
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 271.351814
|
||||
@@ -0,0 +1 @@
|
||||
{"utc": "2026-10-24T21:31:45.258+00:00", "load1": "2.75"}
|
||||
@@ -0,0 +1,14 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/processing-runtime.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/t8w0GP
|
||||
begin: {"utc": "2026-10-24T21:31:45.258+00:00", "load1": "2.75"}
|
||||
launch nice: 19
|
||||
✔ real runtime injects the coordinator, stops its workload and mirrors stable stop events across restart (166.197323ms)
|
||||
✔ invalid state still starts the control bus and human halt then resume repairs it (68.762038ms)
|
||||
ℹ tests 2
|
||||
ℹ suites 0
|
||||
ℹ pass 2
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 354.939079
|
||||
@@ -0,0 +1 @@
|
||||
{"utc": "2026-10-24T21:31:45.644+00:00", "load1": "2.75"}
|
||||
@@ -0,0 +1,15 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/project-runtime.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/9wld3a
|
||||
begin: {"utc": "2026-10-24T21:31:45.644+00:00", "load1": "2.75"}
|
||||
launch nice: 19
|
||||
✔ Broker keeps the sandbox client import closure: only the listed imports, no lazy project import (2.320439ms)
|
||||
✔ without a trusted project adapter all three async paths refuse project-not-configured (41.769061ms)
|
||||
✔ real startBroker injects the project adapter for socket reads and bound-author record writes (209.297382ms)
|
||||
ℹ tests 3
|
||||
ℹ suites 0
|
||||
ℹ pass 3
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 374.13406
|
||||
@@ -0,0 +1 @@
|
||||
{"utc": "2026-10-24T21:31:46.050+00:00", "load1": "3.01"}
|
||||
@@ -0,0 +1,25 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/publish.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/zvt8PG
|
||||
begin: {"utc": "2026-10-24T21:31:46.049+00:00", "load1": "3.01"}
|
||||
launch nice: 19
|
||||
✔ a raise with no recorded push refuses no-push; a raise binds the latest push and shows it (39.954889ms)
|
||||
✔ happy path: the fork is the upstream repo under the agent's own user, the destination is host-built (24.465558ms)
|
||||
✔ a hard wait: no decision refuses, and a decision for another task refuses (22.323233ms)
|
||||
✔ r4 B4: approve while the latest push is A, push B, publish refuses decision-mismatch (47.890439ms)
|
||||
✔ grant and fork refusals (45.239458ms)
|
||||
✔ remote-not-fork, compared without case, and remote-host-mismatch, at push (84.933944ms)
|
||||
✔ two agents granted one project each get their own fork (43.980907ms)
|
||||
✔ the request cannot name the fork, the user or the destination (21.038529ms)
|
||||
✔ one decision, one open publish: a second ticket refuses publish-busy, whatever its branch (50.040628ms)
|
||||
✔ publishRefused files the code on the task's trail and drops the ticket (21.106502ms)
|
||||
✔ git.push.remote is in neither ROUTED list and no shipped role grants it (0.703397ms)
|
||||
✔ runtime: withGitea keys from the open ticket only, and the store root is the organization dir (102.132736ms)
|
||||
✔ the bus process answers the publish ops from their own lines, not launch-op-refused (158.414563ms)
|
||||
ℹ tests 13
|
||||
ℹ suites 0
|
||||
ℹ pass 13
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 755.676522
|
||||
@@ -0,0 +1 @@
|
||||
{"utc": "2026-10-24T21:31:46.835+00:00", "load1": "3.01"}
|
||||
@@ -0,0 +1,31 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/reload.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/aU0j0Y
|
||||
begin: {"utc": "2026-10-24T21:31:46.835+00:00", "load1": "3.01"}
|
||||
launch nice: 19
|
||||
organization: {"event":"reload-needs-restart","business":"demo"}
|
||||
organization: {"event":"reload-needs-restart","business":"demo"}
|
||||
✔ T14 a create goes live with no restart: the new instance binds at once and the answer says restart false (82.481371ms)
|
||||
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"}
|
||||
✔ T14 every committed verb reloads once, limits.set, routes.set, plugins.set and veto.set included, and a refused one does not (83.757771ms)
|
||||
✔ T14 a definition change on a running instance refuses instance-running; a vars change still goes live (63.590141ms)
|
||||
✔ T14 a file whose credential references differ from the boot copy is not reloaded and the write answers restart true (46.393843ms)
|
||||
✔ T14 a date-only change to a credential reference still reloads: row 199 issue rewrites the date outside the reload (44.909934ms)
|
||||
✔ T19 a credentialed create answers restart true; issue works only after a restart, and a later vars change goes live (101.304479ms)
|
||||
✔ T14 after a refused reload veto.set, instance.hire and instance.fire answer restart true, and a fire of a name kept since refuses before step A (102.926844ms)
|
||||
✔ T14 a file whose project root differs from the boot copy is not reloaded, because the Credentials store protects the boot roots (44.678556ms)
|
||||
organization: {"event":"reload-needs-restart","business":"demo"}
|
||||
✔ T14 a file whose library mapping differs from the boot copy is not reloaded, because the mirror is ensured at start (195.348573ms)
|
||||
✔ T14 reloadBusiness refuses an unknown business, a changed human and a document the boot check refuses (10.201371ms)
|
||||
ℹ tests 10
|
||||
ℹ suites 0
|
||||
ℹ pass 10
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 894.882982
|
||||
@@ -0,0 +1 @@
|
||||
{"utc": "2026-10-24T21:31:47.762+00:00", "load1": "3.01"}
|
||||
@@ -0,0 +1,17 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/routes-verb.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/P5dNVU
|
||||
begin: {"utc": "2026-10-24T21:31:47.762+00:00", "load1": "3.01"}
|
||||
launch nice: 19
|
||||
organization: {"event":"reload-needs-restart","business":"demo"}
|
||||
✔ row 65: routes and routes.set refuse every non-human session, the chief of staff included, the tester may read and set, and each passes the verified actor (41.28339ms)
|
||||
✔ row 65: a new launch binds only on a switched-on harness with a module name, and a run an earlier broker bound binds again after its harness is switched off (22.333596ms)
|
||||
✔ row 65 runtime: harnessLevels answers each module in the tree, and null for a name with no module (42.976423ms)
|
||||
✔ row 65 runtime: routes and routes.set reach the organization file with the human as actor, a new bind reads plugins.harness, and each refusal keeps the bytes and logs nothing (82.367379ms)
|
||||
ℹ tests 4
|
||||
ℹ suites 0
|
||||
ℹ pass 4
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 269.840758
|
||||
@@ -0,0 +1 @@
|
||||
{"utc": "2026-10-24T21:31:48.062+00:00", "load1": "3.01"}
|
||||
@@ -0,0 +1,21 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/tasks.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/doktEQ
|
||||
begin: {"utc": "2026-10-24T21:31:48.062+00:00", "load1": "3.01"}
|
||||
launch nice: 19
|
||||
✔ recordTask keeps sync reads and a role write apart (37.162839ms)
|
||||
✔ read_at must be one canonical UTC format, so the projection compares strings safely (10.13001ms)
|
||||
✔ a bad entry refuses the whole record (10.028908ms)
|
||||
✔ taskView reads the projection for one business (12.612171ms)
|
||||
✔ requestTask hands only a holder and a task verb to the handler, and records refusals (21.951896ms)
|
||||
✔ the server sends task verbs to the adapter with its own timeout; other verbs stay synchronous (304.584857ms)
|
||||
✔ without an adapter the server refuses every task verb (41.415383ms)
|
||||
✔ the runtime refuses an invalid adapter and closes a valid one (55.013588ms)
|
||||
✔ the process loads the S3 adapter from plain-data trackers (294.887599ms)
|
||||
ℹ tests 9
|
||||
ℹ suites 0
|
||||
ℹ pass 9
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 901.467179
|
||||
@@ -0,0 +1 @@
|
||||
{"utc": "2026-10-24T21:31:48.994+00:00", "load1": "3.01"}
|
||||
@@ -0,0 +1,25 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/tester-writes.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/1vStHK
|
||||
begin: {"utc": "2026-10-24T21:31:48.994+00:00", "load1": "3.01"}
|
||||
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"}
|
||||
✔ row 175: TESTER_VERBS and the organization branch tester set are pinned (1.017466ms)
|
||||
✔ row 175: each of the six reads as the tester deep-equals the human read (80.79752ms)
|
||||
✔ row 175: W1-W3 as the tester land with receipt actor tester; the human still logs the human (69.467976ms)
|
||||
✔ row 175: W2 as the tester refuses credentials, protected definitions, human, tester and bus.tester, and changes nothing (61.482015ms)
|
||||
✔ row 175: the human-only actions refuse a tester tester-refused, and the file and store stay as they were (59.878967ms)
|
||||
✔ row 175: W4 as the tester writes by tester and keeps every name check (18.111019ms)
|
||||
✔ row 175: W6 as the tester records created_by tester; the human records the human (13.376818ms)
|
||||
✔ row 175: with bus.tester unset or not exactly true no tester binds, so no read or write runs (49.180862ms)
|
||||
ℹ tests 8
|
||||
ℹ suites 0
|
||||
ℹ pass 8
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 473.7727
|
||||
@@ -0,0 +1,2 @@
|
||||
{"utc": "2026-10-24T21:31:49.499+00:00", "load1": "3.01"}
|
||||
{"utc": "2026-10-24T21:31:50.500+00:00", "load1": "3.01"}
|
||||
@@ -0,0 +1,26 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/tester.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/lFZZCF
|
||||
begin: {"utc": "2026-10-24T21:31:49.499+00:00", "load1": "3.01"}
|
||||
launch nice: 19
|
||||
✔ the tester binds only when the business sets bus.tester to exactly true (88.757294ms)
|
||||
✔ a business may not name a role tester, so the tester address is never a role (23.769068ms)
|
||||
✔ every verb outside the tester list refuses tester-refused and is recorded against the tester (41.483976ms)
|
||||
✔ a tester message is from tester, needs no prefix, and writes no human.input or authority (18.827772ms)
|
||||
✔ a tester message to a role no run holds refuses tester-target-not-running and stores nothing (12.713865ms)
|
||||
✔ a tester message is refused while the run is only launched, and routes once it claims (16.183489ms)
|
||||
✔ a human message to a role no run holds still waits and tells launch.by (13.743888ms)
|
||||
✔ a role answers a tester only in reply to a tester message, and the answer never reaches the human (24.830137ms)
|
||||
✔ the tester reads the human views a reader reads (28.289052ms)
|
||||
✔ tester proof binds its own CLI, start time and nonce, refuses a managed run and allows an agent (1.13514ms)
|
||||
✔ neither CLI's nonce proves the other: each proof is bound to its own CLI and nonce variable (0.339972ms)
|
||||
✔ testerNonce reads only the tester's variable and gives null on any read error (0.179056ms)
|
||||
✔ an envelope carries exactly one of cap, human and tester; no tester authenticator refuses (93.221215ms)
|
||||
✔ tester-cli.mjs binds through the runtime when the switch is on, and refuses off or under a run marker (1045.993666ms)
|
||||
ℹ tests 14
|
||||
ℹ suites 0
|
||||
ℹ pass 14
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 1530.19706
|
||||
@@ -0,0 +1 @@
|
||||
{"utc": "2026-10-24T21:31:51.060+00:00", "load1": "2.77"}
|
||||
@@ -0,0 +1,13 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/usage-runtime.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/1VEYZH
|
||||
begin: {"utc": "2026-10-24T21:31:51.060+00:00", "load1": "2.77"}
|
||||
launch nice: 19
|
||||
✔ REQ-PLUG-1 runtime reaches transcript only through loader, over the real bus socket (69.113179ms)
|
||||
ℹ tests 1
|
||||
ℹ suites 0
|
||||
ℹ pass 1
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 188.443021
|
||||
@@ -0,0 +1,2 @@
|
||||
{"utc": "2026-10-24T21:31:51.279+00:00", "load1": "2.77"}
|
||||
{"utc": "2026-10-24T21:31:52.280+00:00", "load1": "2.77"}
|
||||
@@ -0,0 +1,31 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/bus/tests/web.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/BWvWeH
|
||||
begin: {"utc": "2026-10-24T21:31:51.279+00:00", "load1": "2.77"}
|
||||
launch nice: 19
|
||||
✔ web.search: a granted role gets labelled results, and the call is trailed with role, run, verb and query (22.397513ms)
|
||||
✔ web.fetch: a granted role gets the page as labelled text, and the call is trailed with the url (28.030362ms)
|
||||
✔ a role without the grant is refused, the refusal is logged with the verb, and nothing is fetched (19.857784ms)
|
||||
✔ a broker with no web service refuses a granted role (14.84118ms)
|
||||
✔ bad requests are refused: unknown verb, extra or missing argument, not a string, a human or reader session (18.067065ms)
|
||||
✔ a session that is not the role holder is refused (13.023035ms)
|
||||
✔ web.mjs's fences hold on the broker side: refusals are normal results with the fixed reason (39.913102ms)
|
||||
✔ web.search with no search source configured is a refused result, not an error (14.422159ms)
|
||||
✔ a search source that fails with its own refusal, or that throws, is handled (18.276761ms)
|
||||
✔ a slow search source ends in a refusal at the deadline (65.055292ms)
|
||||
✔ a secret in the arguments is refused before anything is trailed or fetched (13.916963ms)
|
||||
✔ over the socket: the server routes web verbs to the service; other roles are refused; no service is web-not-configured (69.694453ms)
|
||||
✔ busBusiness: the web grant comes from "web" in the resolved tool limit (0.282283ms)
|
||||
✔ webServices: the business's search-source plug-in and web.searxng var make web.search work; without either it is refused as not configured (55.50822ms)
|
||||
✔ an ungranted call is refused at once: no admission, no wait, nothing touched (17.707781ms)
|
||||
✔ over the socket an ungranted caller is dropped by the server timeout and a granted one gets the longer wait (339.602135ms)
|
||||
✔ a search that never answers is aborted at the deadline, the module sees the signal, and the call is trailed as refused (timeout) (74.739872ms)
|
||||
✔ a fetch that stalls is cut off at the deadline: the request is destroyed, not left running (97.228728ms)
|
||||
✔ one query limit: over SEARCH_MAX_QUERY_CHARS or empty is refused with the same reason before any backend, and the tool schema carries the same number (19.007701ms)
|
||||
ℹ tests 19
|
||||
ℹ suites 0
|
||||
ℹ pass 19
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 1042.857687
|
||||
@@ -0,0 +1 @@
|
||||
{"utc": "2026-10-24T21:31:52.353+00:00", "load1": "2.77"}
|
||||
@@ -0,0 +1,16 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/cli/tests/access-boot.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/N0QlMo
|
||||
begin: {"utc": "2026-10-24T21:31:52.353+00:00", "load1": "2.77"}
|
||||
launch nice: 19
|
||||
✔ R6 a configured peer id validates as a user's home and an unconfigured one refuses (13.025604ms)
|
||||
✔ R6 B1 a boot with access.json binds a granted user, whose home is a configured peer (75.092362ms)
|
||||
✔ R6 B2 a boot without access.json has no access and binds no user (63.980667ms)
|
||||
✔ R6 B3 a boot with a file R1's loader refuses still boots, binds no user and says so once (188.774406ms)
|
||||
ℹ tests 4
|
||||
ℹ suites 0
|
||||
ℹ pass 4
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 473.694186
|
||||
@@ -0,0 +1,7 @@
|
||||
{"utc": "2026-10-24T21:31:52.860+00:00", "load1": "2.77"}
|
||||
{"utc": "2026-10-24T21:31:53.860+00:00", "load1": "2.77"}
|
||||
{"utc": "2026-10-24T21:31:54.860+00:00", "load1": "2.77"}
|
||||
{"utc": "2026-10-24T21:31:55.860+00:00", "load1": "2.71"}
|
||||
{"utc": "2026-10-24T21:31:56.861+00:00", "load1": "2.71"}
|
||||
{"utc": "2026-10-24T21:31:57.861+00:00", "load1": "2.71"}
|
||||
{"utc": "2026-10-24T21:31:58.861+00:00", "load1": "2.71"}
|
||||
@@ -0,0 +1,46 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/cli/tests/access.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/s4G6iY
|
||||
begin: {"utc": "2026-10-24T21:31:52.859+00:00", "load1": "2.77"}
|
||||
launch nice: 19
|
||||
✔ list prints the revision and the users (30.884889ms)
|
||||
✔ grant writes one revision up, a receipt line, and the id in the file (53.432378ms)
|
||||
✔ a viewer grant writes the viewer level, one revision up (49.096379ms)
|
||||
✔ a second write appends a second receipt and leaves the first intact (101.603945ms)
|
||||
✔ a stale revision refuses with revision-conflict and writes nothing (83.940791ms)
|
||||
✔ a live holder's lock refuses and leaves the file and the lock alone (26.646541ms)
|
||||
✔ an empty or unreadable lock refuses, since its holder may still be writing (48.38942ms)
|
||||
✔ a lock left by a dead pid refuses, names the pid, and is not reclaimed (44.806221ms)
|
||||
✔ a failed rename leaves the old bytes, removes the temp file, and writes no receipt (27.622276ms)
|
||||
✔ a group-writable access file refuses with exit 3, names the file, and changes nothing (25.675821ms)
|
||||
✔ an agent or tester caller is refused before the context or the access file is read (1.123585ms)
|
||||
✔ the lock is mode 0600 while held and removed after a refused write (25.901843ms)
|
||||
✔ a grant naming an unknown instance is refused before any write (28.872833ms)
|
||||
✔ a project name resolves to its id at grant time (70.593649ms)
|
||||
✔ an unknown project name refuses before any write (27.132406ms)
|
||||
✔ revoke removes the user's grants and leaves a revision behind (102.987012ms)
|
||||
✔ revoke of a user with no grant refuses and writes nothing (26.453788ms)
|
||||
✔ an agent caller is refused before the bus is asked (0.841163ms)
|
||||
✔ --tester is refused on every verb before the bus is asked (0.974632ms)
|
||||
✔ a bus that refuses the human proof blocks the write (29.972291ms)
|
||||
✔ the context reads console.sso subjects and the business files, and peers stay empty (7.670929ms)
|
||||
✔ the real human-cli, run from agent ancestry, refuses and writes nothing (5144.734757ms)
|
||||
✔ T1 user add writes the user one revision up, prints it and appends a user.add receipt (30.211574ms)
|
||||
✔ T2 a bad user add refuses before any write (330.199967ms)
|
||||
✔ T3 user remove of a user with no grant drops them one revision up, with a user.remove receipt (25.778981ms)
|
||||
✔ T4 user remove refuses with user-has-grants while the user holds a grant, and writes nothing (75.914593ms)
|
||||
✔ T5 user remove of an id not in the file refuses and writes nothing (24.019065ms)
|
||||
✔ T6 a stale revision refuses both user verbs with revision-conflict (50.984347ms)
|
||||
✔ T7 --tester and an agent caller are refused on both user verbs before the bus is asked (1.193819ms)
|
||||
✔ T8 a user verb of the wrong shape prints the help (0.907517ms)
|
||||
✔ T9 a bus that refuses the human proof blocks both user verbs (51.964775ms)
|
||||
✔ R4 grant and revoke call access.reload after the write, and nothing else does (149.163477ms)
|
||||
✔ R4 a refused access.reload after a good write exits 0, stdout reports the write, stderr names the code and the 30 s timer (49.394655ms)
|
||||
✔ R4 the help keeps the provider-removal order and says what a refused reload means (0.831348ms)
|
||||
ℹ tests 34
|
||||
ℹ suites 0
|
||||
ℹ pass 34
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 6879.396434
|
||||
@@ -0,0 +1,14 @@
|
||||
{"utc": "2026-10-24T21:31:59.769+00:00", "load1": "2.71"}
|
||||
{"utc": "2026-10-24T21:32:00.769+00:00", "load1": "2.65"}
|
||||
{"utc": "2026-10-24T21:32:01.770+00:00", "load1": "2.65"}
|
||||
{"utc": "2026-10-24T21:32:02.770+00:00", "load1": "2.65"}
|
||||
{"utc": "2026-10-24T21:32:03.770+00:00", "load1": "2.65"}
|
||||
{"utc": "2026-10-24T21:32:04.771+00:00", "load1": "2.65"}
|
||||
{"utc": "2026-10-24T21:32:05.771+00:00", "load1": "2.52"}
|
||||
{"utc": "2026-10-24T21:32:06.771+00:00", "load1": "2.52"}
|
||||
{"utc": "2026-10-24T21:32:07.772+00:00", "load1": "2.52"}
|
||||
{"utc": "2026-10-24T21:32:08.772+00:00", "load1": "2.52"}
|
||||
{"utc": "2026-10-24T21:32:09.772+00:00", "load1": "2.52"}
|
||||
{"utc": "2026-10-24T21:32:10.772+00:00", "load1": "2.80"}
|
||||
{"utc": "2026-10-24T21:32:11.773+00:00", "load1": "2.80"}
|
||||
{"utc": "2026-10-24T21:32:12.773+00:00", "load1": "2.80"}
|
||||
@@ -0,0 +1,42 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/cli/tests/app.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/U6qOPP
|
||||
begin: {"utc": "2026-10-24T21:31:59.769+00:00", "load1": "2.71"}
|
||||
launch nice: 19
|
||||
✔ every screen and overlay fits 120x36, 80x24 and the narrow layout, row for row (1224.912228ms)
|
||||
✔ width counts terminal cells: wide CJK and emoji 2, U+FE0F after a one-cell base 1, marks 0 (73.876093ms)
|
||||
✔ broker text is shown, never interpreted: no raw control character or bidi override reaches the terminal (167.944667ms)
|
||||
✔ NO_COLOR: no escape codes, except reverse video on the selected row (241.262125ms)
|
||||
✔ 1-9 shows the decide flow's own lines and question; only y resolves (62.873408ms)
|
||||
✔ the app shows the same decide text as mosaic decide (26.093158ms)
|
||||
✔ any key but y or Y at the question answers No; nothing is sent (240.102338ms)
|
||||
✔ below 40x10 the question is hidden, so every key answers it No, y included (Filbert R3) (82.118908ms)
|
||||
✔ under 40 columns a tall terminal shows the too-small screen even where the decide box would fit; y sends nothing (Filbert N10) (300.553917ms)
|
||||
✔ a hidden decide box names the way out, and the status line under it does not promise y (Filbert N12) (39.00805ms)
|
||||
✔ a throw while answering the question goes to crash, sends nothing and leaves no job pending (25.873787ms)
|
||||
✔ type-ahead never answers the question: a paste, keys typed before it is drawn, keys inside askMs (420.085983ms)
|
||||
✔ quitting at the question answers No and sends nothing, armed or not (41.123021ms)
|
||||
✔ a timer tick reads nothing under an overlay, never answers the question, and keeps a resolved status (34.803698ms)
|
||||
✔ a long question is cut inside the question; the action, target, choice and prompt stay (Dewey B1) (51.229868ms)
|
||||
✔ a decide box too big for the terminal says so, and every key answers it No, y included (Dewey B1, round 3) (323.780942ms)
|
||||
✔ at every size the decide box shows each line y depends on, or says it is hidden (8904.284861ms)
|
||||
✔ outcome unknown: the CLI's sentence, no retry, then the trail or a re-read (81.601431ms)
|
||||
✔ refused and failed reads keep the last list, marked stale; a refused decide says refused (43.391107ms)
|
||||
✔ help or a detail box cut to fit keeps its last line, Esc included (Dewey) (23.34607ms)
|
||||
✔ keys: views, moving, trail of a selection, the command line, help and quit (112.096983ms)
|
||||
✔ one option: the status line says Press 1, not 1-1 (30.684776ms)
|
||||
✔ no business: the app says so and :business picks one (16.471692ms)
|
||||
✔ mosaic with no argument: exit 3 in an agent run, exit 4 with the usage off a terminal, the app on one (2.33531ms)
|
||||
✔ scripts/mosaic with no argument reaches the app entry; the seat usage it printed before has not drifted (256.7972ms)
|
||||
✔ strings to keep exactly live once, in the decide flow and the transport; the app does not restate them (0.474305ms)
|
||||
✔ decide with --note still asks; a No sends nothing (16.390037ms)
|
||||
✔ the app's business comes from a live bus host only (1.067195ms)
|
||||
✔ runApp leaves the terminal as it found it on q, end of input, SIGTERM, SIGINT, SIGHUP and an error, the first frame's included (9.300013ms)
|
||||
✔ draw is pure: same state, same frame (0.832206ms)
|
||||
ℹ tests 30
|
||||
ℹ suites 0
|
||||
ℹ pass 30
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 12998.139292
|
||||
@@ -0,0 +1,2 @@
|
||||
{"utc": "2026-10-24T21:32:12.801+00:00", "load1": "2.80"}
|
||||
{"utc": "2026-10-24T21:32:13.801+00:00", "load1": "2.80"}
|
||||
@@ -0,0 +1,15 @@
|
||||
command: ["timeout", "-k", "10", "1800", "node", "--test", "/home/jwoltje/.t3/worktrees/mosaic-stack/magica-row329/packages/cli/tests/boot-status.test.mjs"]
|
||||
TMPDIR: /mnt/storage/scratch/tmp/6FraTr
|
||||
begin: {"utc": "2026-10-24T21:32:12.800+00:00", "load1": "2.80"}
|
||||
launch nice: 19
|
||||
✔ recordBootRefused keeps the last good load across refusals; recordBootOk clears the refusal (3.133345ms)
|
||||
✔ an unknown key and a JSON syntax error each leave the bus down with the reason and path in the status (704.520106ms)
|
||||
✔ a missing file is recorded too, and a valid file clears the status on the next start (494.63809ms)
|
||||
ℹ tests 3
|
||||
ℹ suites 0
|
||||
ℹ pass 3
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 1315.733167
|
||||
@@ -0,0 +1,248 @@
|
||||
{"utc": "2026-10-24T21:32:14.150+00:00", "load1": "2.80"}
|
||||
{"utc": "2026-10-24T21:32:15.150+00:00", "load1": "2.80"}
|
||||
{"utc": "2026-10-24T21:32:16.151+00:00", "load1": "2.89"}
|
||||
{"utc": "2026-10-24T21:32:17.151+00:00", "load1": "2.89"}
|
||||
{"utc": "2026-10-24T21:32:18.151+00:00", "load1": "2.89"}
|
||||
{"utc": "2026-10-24T21:32:19.151+00:00", "load1": "2.89"}
|
||||
{"utc": "2026-10-24T21:32:20.152+00:00", "load1": "2.89"}
|
||||
{"utc": "2026-10-24T21:32:21.152+00:00", "load1": "2.74"}
|
||||
{"utc": "2026-10-24T21:32:22.152+00:00", "load1": "2.74"}
|
||||
{"utc": "2026-10-24T21:32:23.153+00:00", "load1": "2.74"}
|
||||
{"utc": "2026-10-24T21:32:24.153+00:00", "load1": "2.74"}
|
||||
{"utc": "2026-10-24T21:32:25.153+00:00", "load1": "2.74"}
|
||||
{"utc": "2026-10-24T21:32:26.153+00:00", "load1": "3.32"}
|
||||
{"utc": "2026-10-24T21:32:27.154+00:00", "load1": "3.32"}
|
||||
{"utc": "2026-10-24T21:32:28.154+00:00", "load1": "3.32"}
|
||||
{"utc": "2026-10-24T21:32:29.154+00:00", "load1": "3.32"}
|
||||
{"utc": "2026-10-24T21:32:30.154+00:00", "load1": "3.32"}
|
||||
{"utc": "2026-10-24T21:32:31.155+00:00", "load1": "3.54"}
|
||||
{"utc": "2026-10-24T21:32:32.155+00:00", "load1": "3.54"}
|
||||
{"utc": "2026-10-24T21:32:33.156+00:00", "load1": "3.54"}
|
||||
{"utc": "2026-10-24T21:32:34.156+00:00", "load1": "3.54"}
|
||||
{"utc": "2026-10-24T21:32:35.156+00:00", "load1": "3.54"}
|
||||
{"utc": "2026-10-24T21:32:36.156+00:00", "load1": "3.42"}
|
||||
{"utc": "2026-10-24T21:32:37.157+00:00", "load1": "3.42"}
|
||||
{"utc": "2026-10-24T21:32:38.157+00:00", "load1": "3.42"}
|
||||
{"utc": "2026-10-24T21:32:39.157+00:00", "load1": "3.42"}
|
||||
{"utc": "2026-10-24T21:32:40.158+00:00", "load1": "3.42"}
|
||||
{"utc": "2026-10-24T21:32:41.158+00:00", "load1": "3.54"}
|
||||
{"utc": "2026-10-24T21:32:42.158+00:00", "load1": "3.54"}
|
||||
{"utc": "2026-10-24T21:32:43.158+00:00", "load1": "3.54"}
|
||||
{"utc": "2026-10-24T21:32:44.159+00:00", "load1": "3.54"}
|
||||
{"utc": "2026-10-24T21:32:45.159+00:00", "load1": "3.54"}
|
||||
{"utc": "2026-10-24T21:32:46.159+00:00", "load1": "3.58"}
|
||||
{"utc": "2026-10-24T21:32:47.159+00:00", "load1": "3.58"}
|
||||
{"utc": "2026-10-24T21:32:48.160+00:00", "load1": "3.58"}
|
||||
{"utc": "2026-10-24T21:32:49.160+00:00", "load1": "3.58"}
|
||||
{"utc": "2026-10-24T21:32:50.160+00:00", "load1": "3.58"}
|
||||
{"utc": "2026-10-24T21:32:51.161+00:00", "load1": "3.45"}
|
||||
{"utc": "2026-10-24T21:32:52.161+00:00", "load1": "3.45"}
|
||||
{"utc": "2026-10-24T21:32:53.161+00:00", "load1": "3.45"}
|
||||
{"utc": "2026-10-24T21:32:54.161+00:00", "load1": "3.45"}
|
||||
{"utc": "2026-10-24T21:32:55.162+00:00", "load1": "3.45"}
|
||||
{"utc": "2026-10-24T21:32:56.162+00:00", "load1": "3.50"}
|
||||
{"utc": "2026-10-24T21:32:57.162+00:00", "load1": "3.50"}
|
||||
{"utc": "2026-10-24T21:32:58.162+00:00", "load1": "3.50"}
|
||||
{"utc": "2026-10-24T21:32:59.163+00:00", "load1": "3.50"}
|
||||
{"utc": "2026-10-24T21:33:00.163+00:00", "load1": "3.50"}
|
||||
{"utc": "2026-10-24T21:33:01.163+00:00", "load1": "3.30"}
|
||||
{"utc": "2026-10-24T21:33:02.164+00:00", "load1": "3.30"}
|
||||
{"utc": "2026-10-24T21:33:03.164+00:00", "load1": "3.30"}
|
||||
{"utc": "2026-10-24T21:33:04.164+00:00", "load1": "3.30"}
|
||||
{"utc": "2026-10-24T21:33:05.164+00:00", "load1": "3.30"}
|
||||
{"utc": "2026-10-24T21:33:06.165+00:00", "load1": "3.03"}
|
||||
{"utc": "2026-10-24T21:33:07.165+00:00", "load1": "3.03"}
|
||||
{"utc": "2026-10-24T21:33:08.165+00:00", "load1": "3.03"}
|
||||
{"utc": "2026-10-24T21:33:09.166+00:00", "load1": "3.03"}
|
||||
{"utc": "2026-10-24T21:33:10.166+00:00", "load1": "3.03"}
|
||||
{"utc": "2026-10-24T21:33:11.166+00:00", "load1": "2.87"}
|
||||
{"utc": "2026-10-24T21:33:12.167+00:00", "load1": "2.87"}
|
||||
{"utc": "2026-10-24T21:33:13.167+00:00", "load1": "2.87"}
|
||||
{"utc": "2026-10-24T21:33:14.167+00:00", "load1": "2.87"}
|
||||
{"utc": "2026-10-24T21:33:15.167+00:00", "load1": "2.87"}
|
||||
{"utc": "2026-10-24T21:33:16.168+00:00", "load1": "2.72"}
|
||||
{"utc": "2026-10-24T21:33:17.168+00:00", "load1": "2.72"}
|
||||
{"utc": "2026-10-24T21:33:18.168+00:00", "load1": "2.72"}
|
||||
{"utc": "2026-10-24T21:33:19.169+00:00", "load1": "2.72"}
|
||||
{"utc": "2026-10-24T21:33:20.169+00:00", "load1": "2.72"}
|
||||
{"utc": "2026-10-24T21:33:21.169+00:00", "load1": "2.50"}
|
||||
{"utc": "2026-10-24T21:33:22.169+00:00", "load1": "2.50"}
|
||||
{"utc": "2026-10-24T21:33:23.170+00:00", "load1": "2.50"}
|
||||
{"utc": "2026-10-24T21:33:24.170+00:00", "load1": "2.50"}
|
||||
{"utc": "2026-10-24T21:33:25.170+00:00", "load1": "2.50"}
|
||||
{"utc": "2026-10-24T21:33:26.170+00:00", "load1": "2.70"}
|
||||
{"utc": "2026-10-24T21:33:27.171+00:00", "load1": "2.70"}
|
||||
{"utc": "2026-10-24T21:33:28.171+00:00", "load1": "2.70"}
|
||||
{"utc": "2026-10-24T21:33:29.171+00:00", "load1": "2.70"}
|
||||
{"utc": "2026-10-24T21:33:30.172+00:00", "load1": "2.70"}
|
||||
{"utc": "2026-10-24T21:33:31.172+00:00", "load1": "2.48"}
|
||||
{"utc": "2026-10-24T21:33:32.172+00:00", "load1": "2.48"}
|
||||
{"utc": "2026-10-24T21:33:33.172+00:00", "load1": "2.48"}
|
||||
{"utc": "2026-10-24T21:33:34.173+00:00", "load1": "2.48"}
|
||||
{"utc": "2026-10-24T21:33:35.173+00:00", "load1": "2.48"}
|
||||
{"utc": "2026-10-24T21:33:36.173+00:00", "load1": "2.45"}
|
||||
{"utc": "2026-10-24T21:33:37.174+00:00", "load1": "2.45"}
|
||||
{"utc": "2026-10-24T21:33:38.174+00:00", "load1": "2.45"}
|
||||
{"utc": "2026-10-24T21:33:39.174+00:00", "load1": "2.45"}
|
||||
{"utc": "2026-10-24T21:33:40.174+00:00", "load1": "2.45"}
|
||||
{"utc": "2026-10-24T21:33:41.175+00:00", "load1": "2.25"}
|
||||
{"utc": "2026-10-24T21:33:42.175+00:00", "load1": "2.25"}
|
||||
{"utc": "2026-10-24T21:33:43.175+00:00", "load1": "2.25"}
|
||||
{"utc": "2026-10-24T21:33:44.176+00:00", "load1": "2.25"}
|
||||
{"utc": "2026-10-24T21:33:45.176+00:00", "load1": "2.25"}
|
||||
{"utc": "2026-10-24T21:33:46.176+00:00", "load1": "2.47"}
|
||||
{"utc": "2026-10-24T21:33:47.177+00:00", "load1": "2.47"}
|
||||
{"utc": "2026-10-24T21:33:48.177+00:00", "load1": "2.47"}
|
||||
{"utc": "2026-10-24T21:33:49.177+00:00", "load1": "2.47"}
|
||||
{"utc": "2026-10-24T21:33:50.177+00:00", "load1": "2.47"}
|
||||
{"utc": "2026-10-24T21:33:51.178+00:00", "load1": "2.43"}
|
||||
{"utc": "2026-10-24T21:33:52.178+00:00", "load1": "2.43"}
|
||||
{"utc": "2026-10-24T21:33:53.178+00:00", "load1": "2.43"}
|
||||
{"utc": "2026-10-24T21:33:54.178+00:00", "load1": "2.43"}
|
||||
{"utc": "2026-10-24T21:33:55.179+00:00", "load1": "2.43"}
|
||||
{"utc": "2026-10-24T21:33:56.179+00:00", "load1": "2.56"}
|
||||
{"utc": "2026-10-24T21:33:57.179+00:00", "load1": "2.56"}
|
||||
{"utc": "2026-10-24T21:33:58.180+00:00", "load1": "2.56"}
|
||||
{"utc": "2026-10-24T21:33:59.180+00:00", "load1": "2.56"}
|
||||
{"utc": "2026-10-24T21:34:00.180+00:00", "load1": "2.56"}
|
||||
{"utc": "2026-10-24T21:34:01.181+00:00", "load1": "2.59"}
|
||||
{"utc": "2026-10-24T21:34:02.181+00:00", "load1": "2.59"}
|
||||
{"utc": "2026-10-24T21:34:03.181+00:00", "load1": "2.59"}
|
||||
{"utc": "2026-10-24T21:34:04.181+00:00", "load1": "2.59"}
|
||||
{"utc": "2026-10-24T21:34:05.182+00:00", "load1": "2.59"}
|
||||
{"utc": "2026-10-24T21:34:06.182+00:00", "load1": "2.63"}
|
||||
{"utc": "2026-10-24T21:34:07.182+00:00", "load1": "2.63"}
|
||||
{"utc": "2026-10-24T21:34:08.183+00:00", "load1": "2.63"}
|
||||
{"utc": "2026-10-24T21:34:09.183+00:00", "load1": "2.63"}
|
||||
{"utc": "2026-10-24T21:34:10.183+00:00", "load1": "2.63"}
|
||||
{"utc": "2026-10-24T21:34:11.183+00:00", "load1": "2.58"}
|
||||
{"utc": "2026-10-24T21:34:12.184+00:00", "load1": "2.58"}
|
||||
{"utc": "2026-10-24T21:34:13.184+00:00", "load1": "2.58"}
|
||||
{"utc": "2026-10-24T21:34:14.184+00:00", "load1": "2.58"}
|
||||
{"utc": "2026-10-24T21:34:15.185+00:00", "load1": "2.58"}
|
||||
{"utc": "2026-10-24T21:34:16.185+00:00", "load1": "2.69"}
|
||||
{"utc": "2026-10-24T21:34:17.185+00:00", "load1": "2.69"}
|
||||
{"utc": "2026-10-24T21:34:18.185+00:00", "load1": "2.69"}
|
||||
{"utc": "2026-10-24T21:34:19.186+00:00", "load1": "2.69"}
|
||||
{"utc": "2026-10-24T21:34:20.186+00:00", "load1": "2.69"}
|
||||
{"utc": "2026-10-24T21:34:21.186+00:00", "load1": "2.72"}
|
||||
{"utc": "2026-10-24T21:34:22.186+00:00", "load1": "2.72"}
|
||||
{"utc": "2026-10-24T21:34:23.187+00:00", "load1": "2.72"}
|
||||
{"utc": "2026-10-24T21:34:24.187+00:00", "load1": "2.72"}
|
||||
{"utc": "2026-10-24T21:34:25.187+00:00", "load1": "2.72"}
|
||||
{"utc": "2026-10-24T21:34:26.188+00:00", "load1": "2.58"}
|
||||
{"utc": "2026-10-24T21:34:27.188+00:00", "load1": "2.58"}
|
||||
{"utc": "2026-10-24T21:34:28.188+00:00", "load1": "2.58"}
|
||||
{"utc": "2026-10-24T21:34:29.188+00:00", "load1": "2.58"}
|
||||
{"utc": "2026-10-24T21:34:30.189+00:00", "load1": "2.58"}
|
||||
{"utc": "2026-10-24T21:34:31.189+00:00", "load1": "2.45"}
|
||||
{"utc": "2026-10-24T21:34:32.189+00:00", "load1": "2.45"}
|
||||
{"utc": "2026-10-24T21:34:33.189+00:00", "load1": "2.45"}
|
||||
{"utc": "2026-10-24T21:34:34.190+00:00", "load1": "2.45"}
|
||||
{"utc": "2026-10-24T21:34:35.190+00:00", "load1": "2.45"}
|
||||
{"utc": "2026-10-24T21:34:36.190+00:00", "load1": "2.41"}
|
||||
{"utc": "2026-10-24T21:34:37.191+00:00", "load1": "2.41"}
|
||||
{"utc": "2026-10-24T21:34:38.191+00:00", "load1": "2.41"}
|
||||
{"utc": "2026-10-24T21:34:39.191+00:00", "load1": "2.41"}
|
||||
{"utc": "2026-10-24T21:34:40.191+00:00", "load1": "2.41"}
|
||||
{"utc": "2026-10-24T21:34:41.192+00:00", "load1": "2.54"}
|
||||
{"utc": "2026-10-24T21:34:42.192+00:00", "load1": "2.54"}
|
||||
{"utc": "2026-10-24T21:34:43.192+00:00", "load1": "2.54"}
|
||||
{"utc": "2026-10-24T21:34:44.193+00:00", "load1": "2.54"}
|
||||
{"utc": "2026-10-24T21:34:45.193+00:00", "load1": "2.54"}
|
||||
{"utc": "2026-10-24T21:34:46.193+00:00", "load1": "2.42"}
|
||||
{"utc": "2026-10-24T21:34:47.193+00:00", "load1": "2.42"}
|
||||
{"utc": "2026-10-24T21:34:48.194+00:00", "load1": "2.42"}
|
||||
{"utc": "2026-10-24T21:34:49.194+00:00", "load1": "2.42"}
|
||||
{"utc": "2026-10-24T21:34:50.194+00:00", "load1": "2.42"}
|
||||
{"utc": "2026-10-24T21:34:51.195+00:00", "load1": "2.30"}
|
||||
{"utc": "2026-10-24T21:34:52.195+00:00", "load1": "2.30"}
|
||||
{"utc": "2026-10-24T21:34:53.195+00:00", "load1": "2.30"}
|
||||
{"utc": "2026-10-24T21:34:54.195+00:00", "load1": "2.30"}
|
||||
{"utc": "2026-10-24T21:34:55.196+00:00", "load1": "2.30"}
|
||||
{"utc": "2026-10-24T21:34:56.196+00:00", "load1": "2.36"}
|
||||
{"utc": "2026-10-24T21:34:57.196+00:00", "load1": "2.36"}
|
||||
{"utc": "2026-10-24T21:34:58.196+00:00", "load1": "2.36"}
|
||||
{"utc": "2026-10-24T21:34:59.197+00:00", "load1": "2.36"}
|
||||
{"utc": "2026-10-24T21:35:00.197+00:00", "load1": "2.36"}
|
||||
{"utc": "2026-10-24T21:35:01.197+00:00", "load1": "2.33"}
|
||||
{"utc": "2026-10-24T21:35:02.197+00:00", "load1": "2.33"}
|
||||
{"utc": "2026-10-24T21:35:03.198+00:00", "load1": "2.33"}
|
||||
{"utc": "2026-10-24T21:35:04.198+00:00", "load1": "2.33"}
|
||||
{"utc": "2026-10-24T21:35:05.198+00:00", "load1": "2.33"}
|
||||
{"utc": "2026-10-24T21:35:06.199+00:00", "load1": "2.55"}
|
||||
{"utc": "2026-10-24T21:35:07.199+00:00", "load1": "2.55"}
|
||||
{"utc": "2026-10-24T21:35:08.199+00:00", "load1": "2.55"}
|
||||
{"utc": "2026-10-24T21:35:09.200+00:00", "load1": "2.55"}
|
||||
{"utc": "2026-10-24T21:35:10.200+00:00", "load1": "2.55"}
|
||||
{"utc": "2026-10-24T21:35:11.200+00:00", "load1": "2.58"}
|
||||
{"utc": "2026-10-24T21:35:12.200+00:00", "load1": "2.58"}
|
||||
{"utc": "2026-10-24T21:35:13.201+00:00", "load1": "2.58"}
|
||||
{"utc": "2026-10-24T21:35:14.201+00:00", "load1": "2.58"}
|
||||
{"utc": "2026-10-24T21:35:15.201+00:00", "load1": "2.58"}
|
||||
{"utc": "2026-10-24T21:35:16.202+00:00", "load1": "2.62"}
|
||||
{"utc": "2026-10-24T21:35:17.202+00:00", "load1": "2.62"}
|
||||
{"utc": "2026-10-24T21:35:18.202+00:00", "load1": "2.62"}
|
||||
{"utc": "2026-10-24T21:35:19.202+00:00", "load1": "2.62"}
|
||||
{"utc": "2026-10-24T21:35:20.203+00:00", "load1": "2.62"}
|
||||
{"utc": "2026-10-24T21:35:21.203+00:00", "load1": "2.49"}
|
||||
{"utc": "2026-10-24T21:35:22.203+00:00", "load1": "2.49"}
|
||||
{"utc": "2026-10-24T21:35:23.203+00:00", "load1": "2.49"}
|
||||
{"utc": "2026-10-24T21:35:24.204+00:00", "load1": "2.49"}
|
||||
{"utc": "2026-10-24T21:35:25.204+00:00", "load1": "2.49"}
|
||||
{"utc": "2026-10-24T21:35:26.204+00:00", "load1": "2.45"}
|
||||
{"utc": "2026-10-24T21:35:27.205+00:00", "load1": "2.45"}
|
||||
{"utc": "2026-10-24T21:35:28.205+00:00", "load1": "2.45"}
|
||||
{"utc": "2026-10-24T21:35:29.205+00:00", "load1": "2.45"}
|
||||
{"utc": "2026-10-24T21:35:30.205+00:00", "load1": "2.45"}
|
||||
{"utc": "2026-10-24T21:35:31.206+00:00", "load1": "2.33"}
|
||||
{"utc": "2026-10-24T21:35:32.206+00:00", "load1": "2.33"}
|
||||
{"utc": "2026-10-24T21:35:33.206+00:00", "load1": "2.33"}
|
||||
{"utc": "2026-10-24T21:35:34.207+00:00", "load1": "2.33"}
|
||||
{"utc": "2026-10-24T21:35:35.207+00:00", "load1": "2.33"}
|
||||
{"utc": "2026-10-24T21:35:36.207+00:00", "load1": "2.38"}
|
||||
{"utc": "2026-10-24T21:35:37.207+00:00", "load1": "2.38"}
|
||||
{"utc": "2026-10-24T21:35:38.208+00:00", "load1": "2.38"}
|
||||
{"utc": "2026-10-24T21:35:39.208+00:00", "load1": "2.38"}
|
||||
{"utc": "2026-10-24T21:35:40.208+00:00", "load1": "2.38"}
|
||||
{"utc": "2026-10-24T21:35:41.208+00:00", "load1": "2.51"}
|
||||
{"utc": "2026-10-24T21:35:42.209+00:00", "load1": "2.51"}
|
||||
{"utc": "2026-10-24T21:35:43.209+00:00", "load1": "2.51"}
|
||||
{"utc": "2026-10-24T21:35:44.209+00:00", "load1": "2.51"}
|
||||
{"utc": "2026-10-24T21:35:45.210+00:00", "load1": "2.51"}
|
||||
{"utc": "2026-10-24T21:35:46.210+00:00", "load1": "2.55"}
|
||||
{"utc": "2026-10-24T21:35:47.210+00:00", "load1": "2.55"}
|
||||
{"utc": "2026-10-24T21:35:48.210+00:00", "load1": "2.55"}
|
||||
{"utc": "2026-10-24T21:35:49.211+00:00", "load1": "2.55"}
|
||||
{"utc": "2026-10-24T21:35:50.211+00:00", "load1": "2.55"}
|
||||
{"utc": "2026-10-24T21:35:51.211+00:00", "load1": "2.43"}
|
||||
{"utc": "2026-10-24T21:35:52.211+00:00", "load1": "2.43"}
|
||||
{"utc": "2026-10-24T21:35:53.212+00:00", "load1": "2.43"}
|
||||
{"utc": "2026-10-24T21:35:54.212+00:00", "load1": "2.43"}
|
||||
{"utc": "2026-10-24T21:35:55.212+00:00", "load1": "2.43"}
|
||||
{"utc": "2026-10-24T21:35:56.213+00:00", "load1": "2.63"}
|
||||
{"utc": "2026-10-24T21:35:57.213+00:00", "load1": "2.63"}
|
||||
{"utc": "2026-10-24T21:35:58.213+00:00", "load1": "2.63"}
|
||||
{"utc": "2026-10-24T21:35:59.213+00:00", "load1": "2.63"}
|
||||
{"utc": "2026-10-24T21:36:00.214+00:00", "load1": "2.63"}
|
||||
{"utc": "2026-10-24T21:36:01.214+00:00", "load1": "2.74"}
|
||||
{"utc": "2026-10-24T21:36:02.214+00:00", "load1": "2.74"}
|
||||
{"utc": "2026-10-24T21:36:03.214+00:00", "load1": "2.74"}
|
||||
{"utc": "2026-10-24T21:36:04.215+00:00", "load1": "2.74"}
|
||||
{"utc": "2026-10-24T21:36:05.215+00:00", "load1": "2.74"}
|
||||
{"utc": "2026-10-24T21:36:06.215+00:00", "load1": "2.68"}
|
||||
{"utc": "2026-10-24T21:36:07.215+00:00", "load1": "2.68"}
|
||||
{"utc": "2026-10-24T21:36:08.216+00:00", "load1": "2.68"}
|
||||
{"utc": "2026-10-24T21:36:09.216+00:00", "load1": "2.68"}
|
||||
{"utc": "2026-10-24T21:36:10.216+00:00", "load1": "2.68"}
|
||||
{"utc": "2026-10-24T21:36:11.216+00:00", "load1": "2.71"}
|
||||
{"utc": "2026-10-24T21:36:12.217+00:00", "load1": "2.71"}
|
||||
{"utc": "2026-10-24T21:36:13.217+00:00", "load1": "2.71"}
|
||||
{"utc": "2026-10-24T21:36:14.217+00:00", "load1": "2.71"}
|
||||
{"utc": "2026-10-24T21:36:15.217+00:00", "load1": "2.71"}
|
||||
{"utc": "2026-10-24T21:36:16.218+00:00", "load1": "2.57"}
|
||||
{"utc": "2026-10-24T21:36:17.218+00:00", "load1": "2.57"}
|
||||
{"utc": "2026-10-24T21:36:18.218+00:00", "load1": "2.57"}
|
||||
{"utc": "2026-10-24T21:36:19.218+00:00", "load1": "2.57"}
|
||||
{"utc": "2026-10-24T21:36:20.219+00:00", "load1": "2.57"}
|
||||
{"utc": "2026-10-24T21:36:21.219+00:00", "load1": "2.61"}
|
||||
Loaded 100 of 535 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user