fix(proxy): normalize absent provider GET after regression RED and pinned acceptance

This commit is contained in:
jason.woltje committed 2026-10-25 02:50:29 -05:00
1 parent e7438743ff
commit b47ee2c0ef
51 files changed
+2057

No files matched your search

+2
View File
@@ -5591,3 +5591,5 @@ claim. Receipts and limitations in agents/lena/work/queue-296/BUILD.md and run-r
2026-10-25 Poe — row330 / #1828 focused block: first account RED6pass/4expected; source-only fixes; eight new files88/88 green, no skips. Offline PIN8.0.42 acceptance then exited1 before initial-account checkpoint and reported nice16 despite19 wrapper. Stopped at first unexpected red, returned slot to Sage, no rerun or mutants. Root cause unresolved; no full-gate or landing claim. Evidence: agents/poe/work/queue-330/BUILD.md and green-*.txt / upgrade-8.0.42.txt. 2026-10-25 Poe — row330 / #1828 focused block: first account RED6pass/4expected; source-only fixes; eight new files88/88 green, no skips. Offline PIN8.0.42 acceptance then exited1 before initial-account checkpoint and reported nice16 despite19 wrapper. Stopped at first unexpected red, returned slot to Sage, no rerun or mutants. Root cause unresolved; no full-gate or landing claim. Evidence: agents/poe/work/queue-330/BUILD.md and green-*.txt / upgrade-8.0.42.txt.
2026-10-25 Poe — row330 focused retry per sage-4446: all8 files88/88 green again; uptime per step retained. After Store fixture correction, offline PIN8.0.42 acceptance reached broker-bound but refused proxy-down at initial-accounts (load5.98/15.98/16.44). Stopped, returned slot, no rerun or mutants. See agents/poe/work/queue-330/block2-* and BUILD.md. No full-gate or completion claim. 2026-10-25 Poe — row330 focused retry per sage-4446: all8 files88/88 green again; uptime per step retained. After Store fixture correction, offline PIN8.0.42 acceptance reached broker-bound but refused proxy-down at initial-accounts (load5.98/15.98/16.44). Stopped, returned slot, no rerun or mutants. See agents/poe/work/queue-330/block2-* and BUILD.md. No full-gate or completion claim.
2026-10-25 Poe — row330 sage-4469 block: approved fixed GET provider404 normalization after exact RED2fail/9pass; GREEN10whole files99/99, pinned8.0.42 offline acceptance passed (both priority read-backs), four named mutants killed/restored with all controls green. No retries, old assertions or timeout changes. Slot returned. Evidence agents/poe/work/queue-330/404-* and BUILD.md. P2 integration/full global gate/Q246 reviews still pending; no landing claim.
@@ -0,0 +1,2 @@
2026-10-25T07:47:01Z
02:47:01 up 11 days, 18:06, 2 users, load average: 13.77, 14.23, 20.51
@@ -0,0 +1,2 @@
2026-10-25T07:46:54Z
02:46:54 up 11 days, 18:06, 2 users, load average: 13.49, 14.18, 20.53
@@ -0,0 +1,20 @@
P4 offline upgrade version=8.0.42 nice=16
P4 diagnostic {"stage":"binary-start","nodePriority":16,"childPriority":16,"lastClientErrorCode":null,"nodeSchedulingPolicy":5,"childSchedulingPolicy":5,"childExitCode":null,"childSignal":null}
P4 diagnostic {"stage":"management-ready","nodePriority":16,"childPriority":16,"lastClientErrorCode":"proxy-client-down","nodeSchedulingPolicy":5,"childSchedulingPolicy":5,"childExitCode":null,"childSignal":null}
P4 diagnostic {"stage":"store-open","nodePriority":16,"childPriority":16,"lastClientErrorCode":"proxy-client-down","nodeSchedulingPolicy":5,"childSchedulingPolicy":5,"childExitCode":null,"childSignal":null}
P4 diagnostic {"stage":"broker-bound","nodePriority":16,"childPriority":16,"lastClientErrorCode":"proxy-client-down","nodeSchedulingPolicy":5,"childSchedulingPolicy":5,"childExitCode":null,"childSignal":null}
P4 diagnostic {"stage":"initial-accounts","nodePriority":16,"childPriority":16,"lastClientErrorCode":"proxy-client-down","nodeSchedulingPolicy":5,"childSchedulingPolicy":5,"childExitCode":null,"childSignal":null}
P4 empty-provider diagnostic {"httpStatus":404,"type":"object","isArray":true,"count":0}
proxy.accounts initial empty; GET /credentials + GET /config/api-keys/claude
proxy.login.start claude GET /oauth/auth-url; fields=url,state only
proxy.login.submit POST /oauth/callback; fake code never ok; GET /oauth/status=wait
proxy.login.cancel DELETE /oauth/session confirmed
proxy.login.start codex GET /oauth/auth-url; fields=url,state only
proxy.login.submit POST /oauth/callback; fake code never ok; GET /oauth/status=wait
proxy.login.cancel DELETE /oauth/session confirmed
proxy.apikey.add PUT /config/api-keys/claude; account fields=accountId,provider,displayName,status,priority; id from auth_index
proxy.priority.set API-key PUT /config/api-keys/claude; priority read-back=7
proxy.keys GET /config/access/api-keys; fields=keyId,management,agent,issuedAt,state; sentinel labelled; values absent
proxy.priority.set OAuth PATCH /credentials/fields body={name,priority}; priority read-back=8
PASS offline native-page bus contract and secret-free receipts
P4 diagnostic {"stage":"initial-accounts","nodePriority":16,"childPriority":null,"lastClientErrorCode":"proxy-client-down","nodeSchedulingPolicy":5,"childSchedulingPolicy":null,"childExitCode":0,"childSignal":null}
@@ -0,0 +1,19 @@
nice=19 TMPDIR=/mnt/storage/scratch/tmp/ICE0YV
✔ accounts have exactly the allowlisted public fields, id from credential identifier (28.859027ms)
✔ token-like data in every upstream field never reaches public accounts (5.070752ms)
✔ API key account is derived from proxy auth_index, never api-key, and can set priority (12.225188ms)
✔ OAuth priority uses top-level name/priority and confirms it through list (4.580885ms)
✔ priority-unconfirmed: accepted API-key write with unchanged read-back refuses (5.588673ms)
✔ priority-write-refused: OAuth PATCH status 201 (3.491938ms)
✔ priority-write-refused: OAuth PATCH status 400 (4.410853ms)
✔ priority-invalid: unknown account refuses before any write (2.983779ms)
✔ proxy-down: a closed management listener refuses once (1.996951ms)
✔ client keys return ids, sentinel/foreign labels and only scoped record metadata (3.672515ms)
ℹ tests 10
ℹ suites 0
ℹ pass 10
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 183.915712
@@ -0,0 +1,2 @@
2026-10-25T07:46:24Z
02:46:24 up 11 days, 18:06, 2 users, load average: 13.22, 14.25, 20.76
@@ -0,0 +1,2 @@
2026-10-25T07:46:24Z
02:46:24 up 11 days, 18:06, 2 users, load average: 13.22, 14.25, 20.76
@@ -0,0 +1,12 @@
nice=19 TMPDIR=/mnt/storage/scratch/tmp/WlQ8bY
✔ fresh404 yields no accounts, then adds the first key once with no value leakage (32.08173ms)
✔ malformed200 null remains proxy-down, no retry or write (7.8998ms)
✔ malformed200 object remains proxy-down, no retry or write (3.878116ms)
ℹ tests 3
ℹ suites 0
ℹ pass 3
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 147.324337
@@ -0,0 +1,2 @@
2026-10-25T07:46:23Z
02:46:23 up 11 days, 18:06, 2 users, load average: 13.22, 14.25, 20.76
@@ -0,0 +1,2 @@
2026-10-25T07:46:22Z
02:46:22 up 11 days, 18:06, 2 users, load average: 13.76, 14.37, 20.83
@@ -0,0 +1,26 @@
nice=19 TMPDIR=/mnt/storage/scratch/tmp/zFmWGh
✔ proxy.login.start: provider-not-allowed (32.675653ms)
✔ proxy.apikey.add: provider-not-allowed (0.468026ms)
✔ apikey-invalid empty (0.345583ms)
✔ apikey-invalid too long (0.330348ms)
✔ apikey-invalid charset (0.281139ms)
✔ callback-url-invalid not URL (1.581908ms)
✔ callback-url-invalid oversize (0.382376ms)
✔ callback-url-invalid repeated state (0.344928ms)
✔ login-state-unknown callback never reaches proxy (0.456109ms)
✔ login state is scoped to the human and business (0.514738ms)
✔ accepted callback wait is pending; only a status ok completes and retires state (0.915716ms)
✔ expiry reports login-timeout once with no management call and retires state (0.306001ms)
✔ cancel calls DELETE and retires state (0.39506ms)
✔ upstream OAuth error body never crosses bus response (0.266204ms)
✔ priority-invalid {"accountId":"bad","priority":1} (0.216492ms)
✔ priority-invalid {"accountId":"aaaaaaaaaaaa","priority":1.5} (0.206751ms)
✔ priority-invalid {"accountId":"aaaaaaaaaaaa","priority":1001} (0.245944ms)
ℹ tests 17
ℹ suites 0
ℹ pass 17
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 107.671923
@@ -0,0 +1,2 @@
2026-10-25T07:46:24Z
02:46:24 up 11 days, 18:06, 2 users, load average: 13.22, 14.25, 20.76
@@ -0,0 +1,2 @@
2026-10-25T07:46:24Z
02:46:24 up 11 days, 18:06, 2 users, load average: 13.22, 14.25, 20.76
@@ -0,0 +1,50 @@
nice=19 TMPDIR=/mnt/storage/scratch/tmp/WXpqyV
✔ proxy.accounts: owner calls page once with business/human scope (26.116796ms)
✔ proxy.accounts: tester human-required (20.297319ms)
✔ proxy.accounts: agent human-required (16.822485ms)
✔ proxy.accounts: user human-required (17.662186ms)
✔ proxy.accounts: not-configured (23.121015ms)
✔ proxy.login.start: owner calls page once with business/human scope (17.138825ms)
✔ proxy.login.start: tester human-required (17.581147ms)
✔ proxy.login.start: agent human-required (20.879742ms)
✔ proxy.login.start: user human-required (24.234711ms)
✔ proxy.login.start: not-configured (19.75879ms)
✔ proxy.login.submit: owner calls page once with business/human scope (22.157242ms)
✔ proxy.login.submit: tester human-required (25.380596ms)
✔ proxy.login.submit: agent human-required (21.217295ms)
✔ proxy.login.submit: user human-required (23.521967ms)
✔ proxy.login.submit: not-configured (24.585017ms)
✔ proxy.login.status: owner calls page once with business/human scope (22.913517ms)
✔ proxy.login.status: tester human-required (21.7594ms)
✔ proxy.login.status: agent human-required (28.198167ms)
✔ proxy.login.status: user human-required (18.344285ms)
✔ proxy.login.status: not-configured (20.030294ms)
✔ proxy.login.cancel: owner calls page once with business/human scope (16.420549ms)
✔ proxy.login.cancel: tester human-required (20.486195ms)
✔ proxy.login.cancel: agent human-required (17.871874ms)
✔ proxy.login.cancel: user human-required (20.801042ms)
✔ proxy.login.cancel: not-configured (24.049445ms)
✔ proxy.apikey.add: owner calls page once with business/human scope (20.743633ms)
✔ proxy.apikey.add: tester human-required (20.590224ms)
✔ proxy.apikey.add: agent human-required (20.621701ms)
✔ proxy.apikey.add: user human-required (23.304327ms)
✔ proxy.apikey.add: not-configured (26.176447ms)
✔ proxy.priority.set: owner calls page once with business/human scope (18.750335ms)
✔ proxy.priority.set: tester human-required (19.039252ms)
✔ proxy.priority.set: agent human-required (18.745218ms)
✔ proxy.priority.set: user human-required (17.214992ms)
✔ proxy.priority.set: not-configured (17.152828ms)
✔ proxy.keys: owner calls page once with business/human scope (18.060003ms)
✔ proxy.keys: tester human-required (17.424731ms)
✔ proxy.keys: agent human-required (14.943668ms)
✔ proxy.keys: user human-required (16.025103ms)
✔ proxy.keys: not-configured (16.373436ms)
✔ API-key canary never enters broker events or unknown error output (15.813479ms)
ℹ tests 41
ℹ suites 0
ℹ pass 41
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 994.095736
@@ -0,0 +1,2 @@
2026-10-25T07:46:24Z
02:46:24 up 11 days, 18:06, 2 users, load average: 13.22, 14.25, 20.76
@@ -0,0 +1,2 @@
2026-10-25T07:46:23Z
02:46:23 up 11 days, 18:06, 2 users, load average: 13.22, 14.25, 20.76
@@ -0,0 +1,17 @@
nice=19 TMPDIR=/mnt/storage/scratch/tmp/qBvaqm
✔ empty provider GET404 yields empty array, discards body and receipts actual404 once (23.337829ms)
✔ provider GET401 remains proxy-client-refused, no retry (5.03975ms)
✔ provider GET403 remains proxy-client-refused, no retry (2.874184ms)
✔ provider GET500 remains proxy-client-refused, no retry (2.839998ms)
✔ getCredentials404 remains proxy-client-refused, no retry (3.031846ms)
✔ getKeys404 remains proxy-client-refused, no retry (2.739596ms)
✔ provider PUT404 remains proxy-client-refused, never treated as empty GET (1.681292ms)
✔ provider GET200 array passes through, with receipt and no retry (1.893456ms)
ℹ tests 8
ℹ suites 0
ℹ pass 8
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 148.993332
@@ -0,0 +1,2 @@
2026-10-25T07:46:22Z
02:46:22 up 11 days, 18:06, 2 users, load average: 13.76, 14.37, 20.83
@@ -0,0 +1,2 @@
2026-10-25T07:46:22Z
02:46:22 up 11 days, 18:06, 2 users, load average: 13.76, 14.37, 20.83
@@ -0,0 +1,12 @@
nice=19 TMPDIR=/mnt/storage/scratch/tmp/NaZhtr
✔ OAuth management calls keep URL and state out of receipts (25.417454ms)
✔ upstream key goes only in request body and upstream refusal body is discarded (5.332331ms)
✔ redirected management calls are not followed or retried (2.562305ms)
ℹ tests 3
ℹ suites 0
ℹ pass 3
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 139.356091
@@ -0,0 +1,2 @@
2026-10-25T07:46:23Z
02:46:23 up 11 days, 18:06, 2 users, load average: 13.22, 14.25, 20.76
@@ -0,0 +1,2 @@
2026-10-25T07:46:23Z
02:46:23 up 11 days, 18:06, 2 users, load average: 13.22, 14.25, 20.76
@@ -0,0 +1,10 @@
nice=19 TMPDIR=/mnt/storage/scratch/tmp/UVkG6Q
✔ Console production module graph cannot import the model-proxy client (93.862563ms)
ℹ tests 1
ℹ suites 0
ℹ pass 1
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 177.142216
@@ -0,0 +1,2 @@
2026-10-25T07:46:30Z
02:46:30 up 11 days, 18:06, 2 users, load average: 12.40, 14.06, 20.66
@@ -0,0 +1,2 @@
2026-10-25T07:46:29Z
02:46:29 up 11 days, 18:06, 2 users, load average: 12.40, 14.06, 20.66
@@ -0,0 +1,12 @@
nice=19 TMPDIR=/mnt/storage/scratch/tmp/HkzUFL
✔ proxy browser clears write-only key immediately, sends once and renders data as text (923.252097ms)
✔ proxy browser OAuth opens safely, callback wait stays pending, status ok completes (2763.533016ms)
✔ proxy browser read-only disables account changes (662.846864ms)
ℹ tests 3
ℹ suites 0
ℹ pass 3
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 4447.991189
@@ -0,0 +1,2 @@
2026-10-25T07:46:29Z
02:46:29 up 11 days, 18:06, 2 users, load average: 12.40, 14.06, 20.66
@@ -0,0 +1,2 @@
2026-10-25T07:46:25Z
02:46:25 up 11 days, 18:06, 2 users, load average: 13.22, 14.25, 20.76
@@ -0,0 +1,11 @@
nice=19 TMPDIR=/mnt/storage/scratch/tmp/MVzxL3
✔ API-key canary reaches fake once and zero responses/logs/receipts/store files (49.859682ms)
✔ OAuth URLs, state and code stay out of broker records and management receipts (21.222227ms)
ℹ tests 2
ℹ suites 0
ℹ pass 2
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 266.31653
@@ -0,0 +1,2 @@
2026-10-25T07:46:25Z
02:46:25 up 11 days, 18:06, 2 users, load average: 13.22, 14.25, 20.76
@@ -0,0 +1,2 @@
2026-10-25T07:46:25Z
02:46:25 up 11 days, 18:06, 2 users, load average: 13.22, 14.25, 20.76
@@ -0,0 +1,20 @@
nice=19 TMPDIR=/mnt/storage/scratch/tmp/pooz0I
✔ owner proxy routes each make exactly one allowlisted call (30.857128ms)
✔ proxy write refuses signed-out (3.336504ms)
✔ proxy write refuses loopback (2.704228ms)
✔ proxy write refuses cross-origin (1.698264ms)
✔ proxy write refuses missing Fetch Metadata (1.705732ms)
✔ all proxy writes are read-only without --send (4.69854ms)
✔ granted user never reaches owner page or any proxy route (7.577808ms)
✔ native page offers write-only key input and no panel script (2.379451ms)
✔ Console caller rejects every non-proxy verb (1.337229ms)
✔ tester socket refuses proxy page, reads and writes before any owner call (8.577124ms)
✔ malformed API-key JSON never appears in errors or logs (1.827938ms)
ℹ tests 11
ℹ suites 0
ℹ pass 11
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 255.783124
@@ -0,0 +1,2 @@
2026-10-25T07:46:25Z
02:46:25 up 11 days, 18:06, 2 users, load average: 13.22, 14.25, 20.76
@@ -0,0 +1,2 @@
2026-10-25T07:46:24Z
02:46:24 up 11 days, 18:06, 2 users, load average: 13.22, 14.25, 20.76
@@ -0,0 +1,10 @@
packages/model-proxy/tests/empty-provider.test.mjs
packages/bus/tests/proxy-page-empty-provider.test.mjs
packages/model-proxy/tests/page-client.test.mjs
packages/bus/tests/proxy-page.test.mjs
packages/bus/tests/proxy-page-state.test.mjs
packages/bus/tests/proxy-page-accounts.test.mjs
packages/webui/tests/proxy-page.test.mjs
packages/webui/tests/proxy-canary.test.mjs
packages/webui/tests/proxy-browser.test.mjs
packages/webui/tests/proxy-architecture.test.mjs
@@ -0,0 +1,2 @@
2026-10-25T07:47:52Z
02:47:52 up 11 days, 18:07, 2 users, load average: 9.43, 13.06, 19.79
@@ -0,0 +1,2 @@
2026-10-25T07:47:50Z
02:47:50 up 11 days, 18:07, 2 users, load average: 9.43, 13.06, 19.79
@@ -0,0 +1,8 @@
{"mutant":"accounts-unfiltered-field","test":"packages/bus/tests/proxy-page-accounts.test.mjs","exit":1,"nice":19,"failures":2,"passes":8,"failingTests":["accounts have exactly the allowlisted public fields, id from credential identifier","token-like data in every upstream field never reaches public accounts"],"killed":true,"restored":true,"originalSha256":"14acdb4d3fdaabad508eec7378740b13c175d4bdd0c6e707a673138eff82365b"}
{"mutant":"accounts-unfiltered-field","positiveControl":true,"test":"packages/bus/tests/proxy-page-accounts.test.mjs","exit":0,"nice":19,"failures":0,"passes":10,"failingTests":[],"positive":true}
{"mutant":"callback-skips-state","test":"packages/bus/tests/proxy-page-state.test.mjs","exit":1,"nice":19,"failures":2,"passes":15,"failingTests":["login-state-unknown callback never reaches proxy","accepted callback wait is pending; only a status ok completes and retires state"],"killed":true,"restored":true,"originalSha256":"14acdb4d3fdaabad508eec7378740b13c175d4bdd0c6e707a673138eff82365b"}
{"mutant":"callback-skips-state","positiveControl":true,"test":"packages/bus/tests/proxy-page-state.test.mjs","exit":0,"nice":19,"failures":0,"passes":17,"failingTests":[],"positive":true}
{"mutant":"proxy-route-accepts-granted-user","test":"packages/webui/tests/proxy-page.test.mjs","exit":1,"nice":19,"failures":1,"passes":10,"failingTests":["granted user never reaches owner page or any proxy route"],"killed":true,"restored":true,"originalSha256":"7b7bee91604b7bd973027b177de83205db9aed366e694072fc6343b46465b5ba"}
{"mutant":"proxy-route-accepts-granted-user","positiveControl":true,"test":"packages/webui/tests/proxy-page.test.mjs","exit":0,"nice":19,"failures":0,"passes":11,"failingTests":[],"positive":true}
{"mutant":"apikey-logged","test":"packages/webui/tests/proxy-canary.test.mjs","exit":1,"nice":19,"failures":1,"passes":1,"failingTests":["API-key canary reaches fake once and zero responses/logs/receipts/store files"],"killed":true,"restored":true,"originalSha256":"14acdb4d3fdaabad508eec7378740b13c175d4bdd0c6e707a673138eff82365b"}
{"mutant":"apikey-logged","positiveControl":true,"test":"packages/webui/tests/proxy-canary.test.mjs","exit":0,"nice":19,"failures":0,"passes":2,"failingTests":[],"positive":true}
@@ -0,0 +1,26 @@
nice=19 TMPDIR=/mnt/storage/scratch/tmp/zwP2zD
✖ fresh404 yields no accounts, then adds the first key once with no value leakage (31.629717ms)
✔ malformed200 null remains proxy-down, no retry or write (10.121658ms)
✔ malformed200 object remains proxy-down, no retry or write (5.73007ms)
ℹ tests 3
ℹ suites 0
ℹ pass 2
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 218.324391
✖ failing tests:
test at packages/bus/tests/proxy-page-empty-provider.test.mjs:7:1
✖ fresh404 yields no accounts, then adds the first key once with no value leakage (31.629717ms)
Error [ProxyError]: proxy-down
at refuse (file:///home/jwoltje/.t3/worktrees/mosaic-stack/poe-row330/packages/model-proxy/src/common.mjs:8:39)
at ProxyPage.request (file:///home/jwoltje/.t3/worktrees/mosaic-stack/poe-row330/packages/bus/src/proxy-page.mjs:80:7)
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
at async TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/poe-row330/packages/bus/tests/proxy-page-empty-provider.test.mjs:10:17)
at async Test.run (node:internal/test_runner/test:1409:7)
at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) {
code: 'proxy-down'
}
@@ -0,0 +1,2 @@
2026-10-25T07:46:06Z
02:46:06 up 11 days, 18:05, 2 users, load average: 15.17, 14.64, 21.02
@@ -0,0 +1,2 @@
2026-10-25T07:46:06Z
02:46:06 up 11 days, 18:05, 2 users, load average: 15.17, 14.64, 21.02
@@ -0,0 +1,35 @@
nice=19 TMPDIR=/mnt/storage/scratch/tmp/gJcxnP
✖ empty provider GET404 yields empty array, discards body and receipts actual404 once (30.718928ms)
✔ provider GET401 remains proxy-client-refused, no retry (8.324236ms)
✔ provider GET403 remains proxy-client-refused, no retry (2.996504ms)
✔ provider GET500 remains proxy-client-refused, no retry (2.838583ms)
✔ getCredentials404 remains proxy-client-refused, no retry (3.923009ms)
✔ getKeys404 remains proxy-client-refused, no retry (4.502681ms)
✔ provider PUT404 remains proxy-client-refused, never treated as empty GET (2.271108ms)
✔ provider GET200 array passes through, with receipt and no retry (2.585158ms)
ℹ tests 8
ℹ suites 0
ℹ pass 7
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 192.563954
✖ failing tests:
test at packages/model-proxy/tests/empty-provider.test.mjs:35:1
✖ empty provider GET404 yields empty array, discards body and receipts actual404 once (30.718928ms)
Error [ProxyError]: proxy-client-refused
at ClientRequest.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/poe-row330/packages/model-proxy/src/client.mjs:30:49)
at ClientRequest.wrapper (node:events:639:12)
at ClientRequest.emit (node:events:514:20)
at HTTPParser.parserOnIncomingClient (node:_http_client:973:27)
at HTTPParser.parserOnHeadersComplete (node:_http_common:125:17)
at Socket.socketOnData (node:_http_client:808:22)
at Socket.emit (node:events:514:20)
at addChunk (node:internal/streams/readable:575:12)
at readableAddChunkPushByteMode (node:internal/streams/readable:526:3)
at Readable.push (node:internal/streams/readable:406:5) {
code: 'proxy-client-refused'
}
@@ -0,0 +1,2 @@
2026-10-25T07:46:06Z
02:46:06 up 11 days, 18:05, 2 users, load average: 15.17, 14.64, 21.02
@@ -0,0 +1,2 @@
2026-10-25T07:46:05Z
02:46:05 up 11 days, 18:05, 2 users, load average: 15.17, 14.64, 21.02
+63
View File
@@ -523,3 +523,66 @@ Required later GREEN should include both new whole files and the8 focused whole
files because the helper is shared; full gate and P2 key-join still wait their files because the helper is shared; full gate and P2 key-join still wait their
separate authorized stage. No Node syntax check, test, acceptance, mutant or separate authorized stage. No Node syntax check, test, acceptance, mutant or
proxy process ran during preparation. Slot remains with Magica331r4. proxy process ran during preparation. Slot remains with Magica331r4.
## Test-first404 block — sage-4469 CLEAR
2026-10-25T07:46Z–07:47Z. On prepared e7438743f, unchanged product RED was
exactly the two intended failures: model-proxy empty-provider8cases7pass/1fail
(proxy-client-refused rather than[]), bus empty-provider3cases2pass/1fail
(proxy-down on fresh accounts). Negative controls all passed; no skipped,
cancelled or timed-out case. Receipts404-red-*.txt plus per-file uptime.start/.end.
Applied ONLY the approved proposed-empty-provider.patch: three lines in the
client's #page catch normalize404 only for the fixed GET provider-config path.
Actual404 receipt remains; error body was discarded by #request. No assertion,
timeout, scheduling, public schema, other product file or refusal code changed.
GREEN: both new files and the existing8focused files whole, serialized,99/99
passes,0skip/cancel. Fresh short TMPDIR per file; shell wrappers requested and
recorded nice19. No automatic retry. Receipts404-green-*.txt and each file's
UTC/uptime start/end. Idle scheduling is accepted under mos-1678/sage-4446.
Pinned8.0.42 acceptance rc0,07:46:54Z–07:47:01Z. Load13.49/14.18/20.53 ->
13.77/14.23/20.51. Node and its fixture child observed nice16/policy5. Exact
safe output is copied below from404-acceptance.txt; private namespace/temp-root
cleanup completed with childexit0. No real provider credential or external
upstream request; the made-up OAuth codes never complete sign-in.
P4 offline upgrade version=8.0.42 nice=16
P4 diagnostic {"stage":"binary-start","nodePriority":16,"childPriority":16,"lastClientErrorCode":null,"nodeSchedulingPolicy":5,"childSchedulingPolicy":5,"childExitCode":null,"childSignal":null}
P4 diagnostic {"stage":"management-ready","nodePriority":16,"childPriority":16,"lastClientErrorCode":"proxy-client-down","nodeSchedulingPolicy":5,"childSchedulingPolicy":5,"childExitCode":null,"childSignal":null}
P4 diagnostic {"stage":"store-open","nodePriority":16,"childPriority":16,"lastClientErrorCode":"proxy-client-down","nodeSchedulingPolicy":5,"childSchedulingPolicy":5,"childExitCode":null,"childSignal":null}
P4 diagnostic {"stage":"broker-bound","nodePriority":16,"childPriority":16,"lastClientErrorCode":"proxy-client-down","nodeSchedulingPolicy":5,"childSchedulingPolicy":5,"childExitCode":null,"childSignal":null}
P4 diagnostic {"stage":"initial-accounts","nodePriority":16,"childPriority":16,"lastClientErrorCode":"proxy-client-down","nodeSchedulingPolicy":5,"childSchedulingPolicy":5,"childExitCode":null,"childSignal":null}
P4 empty-provider diagnostic {"httpStatus":404,"type":"object","isArray":true,"count":0}
proxy.accounts initial empty; GET /credentials + GET /config/api-keys/claude
proxy.login.start claude GET /oauth/auth-url; fields=url,state only
proxy.login.submit POST /oauth/callback; fake code never ok; GET /oauth/status=wait
proxy.login.cancel DELETE /oauth/session confirmed
proxy.login.start codex GET /oauth/auth-url; fields=url,state only
proxy.login.submit POST /oauth/callback; fake code never ok; GET /oauth/status=wait
proxy.login.cancel DELETE /oauth/session confirmed
proxy.apikey.add PUT /config/api-keys/claude; account fields=accountId,provider,displayName,status,priority; id from auth_index
proxy.priority.set API-key PUT /config/api-keys/claude; priority read-back=7
proxy.keys GET /config/access/api-keys; fields=keyId,management,agent,issuedAt,state; sentinel labelled; values absent
proxy.priority.set OAuth PATCH /credentials/fields body={name,priority}; priority read-back=8
PASS offline native-page bus contract and secret-free receipts
P4 diagnostic {"stage":"initial-accounts","nodePriority":16,"childPriority":null,"lastClientErrorCode":"proxy-client-down","nodeSchedulingPolicy":5,"childSchedulingPolicy":null,"childExitCode":0,"childSignal":null}
Named mutants rc0 overall,07:47:50Z–07:47:52Z, load9.43/13.06/19.79 at both
endpoints. Each mutated whole file ran once, was restored byte-for-byte, then
its restored positive control ran once before the next mutant:
- accounts-unfiltered-field:2fail, restored control10pass;
- callback-skips-state:2fail, restored control17pass;
- proxy-route-accepts-granted-user:1fail, restored control11pass;
- apikey-logged:1fail, restored control2pass.
Runner records nice19 launch observations and original source SHA256s. All4
killed, all4 restored, all4 controls green. No raw mutant output/key values
were written; canary captures process output. Receipt404-mutants.txt/.start/.end.
SLOT BACK reported to Sage as poe-330-0030. No unexpected result in this block,
no retry, no old assertion or timeout edits, no protected action. This is scoped
99-test/upgrade/mutant evidence, NOT the full package/global landing gate. P2
landing/rebase/key-record join and Q246 independent review remain outstanding.
Final product/test diff and manifest prepared for independent review; no landing
or refactor push authorized. No further test/process run after returning slot.
+49
View File
@@ -0,0 +1,49 @@
# Row330 / P4 review packet — #1828
Owner Poe; first independent Codex review Gladstone; landing review Filbert.
Brief docs/plans/2026-10-24_proxy-page-brief.md (heading17, blob4c005dc4936c).
Original base78b69e1e6. Candidate branch poe/row330. No landing authority.
## Review scope and evidence
review-product-test.diff is the complete changed packages/ source/test/docs diff
from78b69e1e6. review-404-normalization.diff is the exact latest three-line product
fix against prepared e7438743f; its tests/helper were committed first there.
review-MANIFEST.sha256 pins every changed package file and the current offline
acceptance/mutant scripts, diff artifacts, run list and successful scoped receipts.
BUILD.md preserves all earlier failures and corrections append-only.
Current scoped verification: exact intended RED2fail/9pass, then99/99 focused
GREEN, pinned8.0.42 offline bus acceptance, four named mutants killed with four
restored positive controls (10/17/11/2passes). Whole-file receipts and uptime
are404-*.txt/.start/.end. Actual idle scheduling is reported, not overwritten.
No test reruns after an unexpected outcome. Earlier fixture-root and missing
provider404 findings are separate commits; product normalization is exactly
GET /v8/management/config/api-keys/claude HTTP404 ->[], with original404 receipt.
Every other endpoint/method/status still refuses, malformed200 null/object still
refuses proxy-down; no new refusal code, assertion weakening or timeout change.
## Security focus
- Owner human-only broker gate before generic user/tester handling; all8verbs.
- Native /proxy and /api/proxy routes through fixed Console caller allowlist;
writes require signed-in owner, named host, --send, own Origin and Fetch
Metadata. Granted/tester/loopback callers refuse. No webui management client.
- API-key input is write-only, promptly cleared, no browser storage; management
header only numeric loopback. OAuth pending-state ownership/expiry/finish
guards, no wait-to-success shortcut. Unknown errors are sanitized.
- Accounts project exactly5public fields. Stable generated display names avoid
arbitrary upstream credential strings; ids derive from proxy identifiers,
never token/key values. Client keys return ids and management labels only.
- Canary checks HTTP responses, structured logs/receipts, captured process output
and bus files; fake receives first key once. No real host proxy/credential access.
## Explicit outstanding work / review limits
P2 has not yet been rebased/joined into this branch. Runtime key-status projection
is provisional until the actual P2 metadata contract lands. Broad package suites
(model-proxy/bus/webui, webui requiring editor build), collateral import-derived
files and Sage's global landing gate still need authorized execution after that
integration. The prior broader inventory is not a current post-P2 manifest.
Independent Q246 first/landing verdicts are not claimed. Do not treat this packet
or the scoped checks as approval to land, push refactor, deploy or cut over.
@@ -0,0 +1,14 @@
diff --git a/packages/model-proxy/src/client.mjs b/packages/model-proxy/src/client.mjs
index 7440bc3c7..c7d72f234 100644
--- a/packages/model-proxy/src/client.mjs
+++ b/packages/model-proxy/src/client.mjs
@@ -70,6 +70,9 @@ export class ManagementClient {
const answer = await this.#request(method, endpoint, payload, value => { status = value; });
if (expectedStatus !== null && status !== expectedStatus) refuse('proxy-client-refused');
return answer;
+ } catch (error) {
+ if (method === 'GET' && endpoint === '/v8/management/config/api-keys/claude' && status === 404) return [];
+ throw error;
}
finally { this.#receipt({ call: `${method} ${endpoint.split('?')[0]}`, status, keyIds: [] }); }
}
@@ -0,0 +1,74 @@
72d5b9c800ab62f0daad197730bdb483f86d8d30b7b229a4c5060e1c726e0736 agents/poe/work/queue-330/404-acceptance.end
93869f4c4ba709250785294c766ba35c5e566611979b5f1c1168eb1ac38b2187 agents/poe/work/queue-330/404-acceptance.start
37ee6bf7ff69f1eb2043237ee4d6901d0fa511081fbb43ce4aebea146f1d6b56 agents/poe/work/queue-330/404-acceptance.txt
cccd9c46429681a225a717b330626fdcb3fa4b4c2c316c848dc3ddd6dacdbbc6 agents/poe/work/queue-330/404-green-packages-bus-tests-proxy-page-accounts.test.mjs.txt
9424865d186040e600adea91450379376c9affac71b6536f5738cf40152cca69 agents/poe/work/queue-330/404-green-packages-bus-tests-proxy-page-accounts.test.mjs.txt.end
9424865d186040e600adea91450379376c9affac71b6536f5738cf40152cca69 agents/poe/work/queue-330/404-green-packages-bus-tests-proxy-page-accounts.test.mjs.txt.start
21cf4b7b5a66151595ecadb079a4a8456a10fa6c7bd1d3bc5c4f7ddf1f9f57a9 agents/poe/work/queue-330/404-green-packages-bus-tests-proxy-page-empty-provider.test.mjs.txt
1b7488b852dbd23785233f9feeb33e40bd60cf5613bbc501ca6e87dd93ef3884 agents/poe/work/queue-330/404-green-packages-bus-tests-proxy-page-empty-provider.test.mjs.txt.end
7c47a8b1c9ab3a67a1ee8f0efacfb1123ec4a93aa37b7838d5c68781c8a31138 agents/poe/work/queue-330/404-green-packages-bus-tests-proxy-page-empty-provider.test.mjs.txt.start
dfe6cf20ace7c20c62080617ce9599c8918ecb63867ffc3f02cff111c873bd56 agents/poe/work/queue-330/404-green-packages-bus-tests-proxy-page-state.test.mjs.txt
9424865d186040e600adea91450379376c9affac71b6536f5738cf40152cca69 agents/poe/work/queue-330/404-green-packages-bus-tests-proxy-page-state.test.mjs.txt.end
9424865d186040e600adea91450379376c9affac71b6536f5738cf40152cca69 agents/poe/work/queue-330/404-green-packages-bus-tests-proxy-page-state.test.mjs.txt.start
53e4f011864d90b97a53d76f5c2408661bc6a8ecd6cf02eafbefe5a2c853e348 agents/poe/work/queue-330/404-green-packages-bus-tests-proxy-page.test.mjs.txt
9424865d186040e600adea91450379376c9affac71b6536f5738cf40152cca69 agents/poe/work/queue-330/404-green-packages-bus-tests-proxy-page.test.mjs.txt.end
1b7488b852dbd23785233f9feeb33e40bd60cf5613bbc501ca6e87dd93ef3884 agents/poe/work/queue-330/404-green-packages-bus-tests-proxy-page.test.mjs.txt.start
0ccd15e17c34462dafbd66ef356d1db30bc7ac4b835822be8395fde34721126f agents/poe/work/queue-330/404-green-packages-model-proxy-tests-empty-provider.test.mjs.txt
7c47a8b1c9ab3a67a1ee8f0efacfb1123ec4a93aa37b7838d5c68781c8a31138 agents/poe/work/queue-330/404-green-packages-model-proxy-tests-empty-provider.test.mjs.txt.end
7c47a8b1c9ab3a67a1ee8f0efacfb1123ec4a93aa37b7838d5c68781c8a31138 agents/poe/work/queue-330/404-green-packages-model-proxy-tests-empty-provider.test.mjs.txt.start
14e6b2f1bc3970b52286ab170d37797f69dc9a3c02a1f231d63e5da8fda669c0 agents/poe/work/queue-330/404-green-packages-model-proxy-tests-page-client.test.mjs.txt
1b7488b852dbd23785233f9feeb33e40bd60cf5613bbc501ca6e87dd93ef3884 agents/poe/work/queue-330/404-green-packages-model-proxy-tests-page-client.test.mjs.txt.end
1b7488b852dbd23785233f9feeb33e40bd60cf5613bbc501ca6e87dd93ef3884 agents/poe/work/queue-330/404-green-packages-model-proxy-tests-page-client.test.mjs.txt.start
9a85972389ed133138a47e956ceb982f8ec15a9b7138474513e358b241150866 agents/poe/work/queue-330/404-green-packages-webui-tests-proxy-architecture.test.mjs.txt
2f565840aadf7b1303e5b35902d4674d913adae865bbd91c038aa4a0fca7656c agents/poe/work/queue-330/404-green-packages-webui-tests-proxy-architecture.test.mjs.txt.end
f47cf83581a4d837d58aaa34ace54d8d2e4fd53e218250167994f37be39ffaa2 agents/poe/work/queue-330/404-green-packages-webui-tests-proxy-architecture.test.mjs.txt.start
e3e45bae3306be1fdb166950163bcf1ffad0f65bc641a39eb4b94a0b146dcf3f agents/poe/work/queue-330/404-green-packages-webui-tests-proxy-browser.test.mjs.txt
f47cf83581a4d837d58aaa34ace54d8d2e4fd53e218250167994f37be39ffaa2 agents/poe/work/queue-330/404-green-packages-webui-tests-proxy-browser.test.mjs.txt.end
61c9f069944fd925380cb181020a80fa249fa14f1875271dc99a8cddd52568b6 agents/poe/work/queue-330/404-green-packages-webui-tests-proxy-browser.test.mjs.txt.start
cb90be4c02955ca66c193a24b9c26e80b7aacb50adb8750a8be11b603154f1f4 agents/poe/work/queue-330/404-green-packages-webui-tests-proxy-canary.test.mjs.txt
61c9f069944fd925380cb181020a80fa249fa14f1875271dc99a8cddd52568b6 agents/poe/work/queue-330/404-green-packages-webui-tests-proxy-canary.test.mjs.txt.end
61c9f069944fd925380cb181020a80fa249fa14f1875271dc99a8cddd52568b6 agents/poe/work/queue-330/404-green-packages-webui-tests-proxy-canary.test.mjs.txt.start
afcf804d388ff9cbc648812908b2ac44ca3eedb18796afa77e05a15b3e355f32 agents/poe/work/queue-330/404-green-packages-webui-tests-proxy-page.test.mjs.txt
61c9f069944fd925380cb181020a80fa249fa14f1875271dc99a8cddd52568b6 agents/poe/work/queue-330/404-green-packages-webui-tests-proxy-page.test.mjs.txt.end
9424865d186040e600adea91450379376c9affac71b6536f5738cf40152cca69 agents/poe/work/queue-330/404-green-packages-webui-tests-proxy-page.test.mjs.txt.start
afcfb1f9624449cf6cd609ceb1f23ebd5a797fb45a71f7be9b2b41ac05b9ed98 agents/poe/work/queue-330/404-green-run-list.txt
576a8f1e6f9f58bca449ed432eeb9ee8c5d6b457d0178225f8330bdc1e077cc8 agents/poe/work/queue-330/404-mutants.end
ccfb1b4d9585dfc89ec7fd98111d7e97f08135d7c09fd52c6c0c6837184fe282 agents/poe/work/queue-330/404-mutants.start
1e3943a96d33275d83ff25e6ea8589c008b34d9141696f700fb55a05c053bd54 agents/poe/work/queue-330/404-mutants.txt
b2580eb45cb4fea2703d090c6c2e13fa7e368b025450506db06504ca9e705b57 agents/poe/work/queue-330/404-red-packages-bus-tests-proxy-page-empty-provider.test.mjs.txt
89792291111ce2df8233a33007188fa8a7b1f83e6088e0f16f9b9d7521b7189d agents/poe/work/queue-330/404-red-packages-bus-tests-proxy-page-empty-provider.test.mjs.txt.end
89792291111ce2df8233a33007188fa8a7b1f83e6088e0f16f9b9d7521b7189d agents/poe/work/queue-330/404-red-packages-bus-tests-proxy-page-empty-provider.test.mjs.txt.start
6d773572f0ccb74c434eba04733552b6b534cff557398305e41e4da9f9d4802b agents/poe/work/queue-330/404-red-packages-model-proxy-tests-empty-provider.test.mjs.txt
89792291111ce2df8233a33007188fa8a7b1f83e6088e0f16f9b9d7521b7189d agents/poe/work/queue-330/404-red-packages-model-proxy-tests-empty-provider.test.mjs.txt.end
51fa70c90e470656e97e2c0536ed9c5b412d929e48f6671cf9587f46464e5d4c agents/poe/work/queue-330/404-red-packages-model-proxy-tests-empty-provider.test.mjs.txt.start
722e211acc48aa319a378c01ccf3e0174aef958c5570ce69962896811888d8fb agents/poe/work/queue-330/REVIEW.md
e55807f718375b0914bcd6448e2a420611c25d37061fd9237986b1484acf1f30 agents/poe/work/queue-330/acceptance.mjs
8aa1007a19e70b6be1696896160e7ffdf4ba9afd9fb2d35a996f4a41515b8564 agents/poe/work/queue-330/acceptance.sh
ea7584f8935251baa9c32bf675343e8c8cbe19a45c4e7dc48675e14b4409bb1c agents/poe/work/queue-330/empty-provider-prepared-imports.json
335e8b1ec268cab5fe7fe644d635cf78e727b2f257eef5b3dc1bf89fb4f7aa5b agents/poe/work/queue-330/mutants.mjs
ebd56413e48604ad7e0d0ce135fcae851f529a020bd1b2dba50afffb2e275bb6 agents/poe/work/queue-330/review-404-normalization.diff
75bedb29f3e48c148e7a5047a6c2282f198db00cea02ad92e59a60f1e37cc656 agents/poe/work/queue-330/review-product-test.diff
ef197f4b52cba6e45fb6aa283a8432b408864bd3ebda14e3d21e7a9245ced62e packages/bus/src/broker.mjs
14acdb4d3fdaabad508eec7378740b13c175d4bdd0c6e707a673138eff82365b packages/bus/src/proxy-page.mjs
e759c5de92ff4ccb10bf9404f2f0532ea218ef0617cec7a039b9a15101a74642 packages/bus/src/runtime.mjs
6c3dce2fed1402ff30331deeaa7524fdaae2a3a16516538a4f74c917b20cdd77 packages/bus/tests/proxy-page-accounts.test.mjs
c55cc0bb47cd7716a2c31c665cd2dd426e2c54ab7b629637bdc12089dfeb40ce packages/bus/tests/proxy-page-empty-provider.test.mjs
01c18d8d09dac72bed45ce302a88cea449ed22ffde374529cf784bad38adbd72 packages/bus/tests/proxy-page-fixture.mjs
1f68f6a0847adaf4ac0ab35f17353c520fae1f29af36b8588b5f1d01097304f8 packages/bus/tests/proxy-page-state.test.mjs
4d57069c95339b8208d8f4595497352c386da9aea433b00873ab4f4e7b2986e6 packages/bus/tests/proxy-page.test.mjs
3315613da3d2153b7916090bf7ef6168c5fc7fac562d4a20e86c87a1f5b58df4 packages/model-proxy/README.md
8e4143c3adb5e00338dadc5db71f440ea846828c2a446e1c944a7ea15f2c24f2 packages/model-proxy/src/client.mjs
ed5dfcda6db77921f90f1eb587fb0044d6472fb613ecaa98445ed42bc04d5d46 packages/model-proxy/tests/empty-provider.test.mjs
f24e1d121a340cbcaa3f6cd6390eeb7d4b05f778dd498d76ba099cba5a719dea packages/model-proxy/tests/page-client.test.mjs
c87158fa73697df244d615c7145d46d06aa4f83c8fb38489008f7e6ac66ecac5 packages/webui/README.md
76c4e0a2f964de91483fee3671140ffaa52c35e91d00fd775db047db61718a27 packages/webui/src/cli.mjs
6a67c23114fe1d6fed7d496aec46a096f9c0279ce7d02b976e99cce0f03de8ec packages/webui/src/console-bus.mjs
a09028cd5ca57367f597d0681e84926ca871fd4626769e9947927d949c2b6ab7 packages/webui/src/proxy-http.mjs
34ea24817c8288f7bbb1e7eb2a73290cc0f022594ac0872d5ce4710d55b2d61c packages/webui/src/public/index.html
028fdb21b5f6bc7f3a81f53e950d3c867280cec08be3d17a8efc9b0f17d70a0e packages/webui/src/public/proxy.html
c329b1ea690e656d89fa0e2b9ad853e18a3209bc56cc47ba778c7bcd56897796 packages/webui/src/public/proxy.js
7b7bee91604b7bd973027b177de83205db9aed366e694072fc6343b46465b5ba packages/webui/src/serve.mjs
037e4df1ed928570f49d4862d13bd6fbf74169b683a382d789744099104ee71c packages/webui/tests/proxy-architecture.test.mjs
866e28ac5aaf73b54dd1a0bd3ad2f404449f94e03f2198b1e1af694c5e6de4b7 packages/webui/tests/proxy-browser.test.mjs
add80427295f0756f456e8d578c123b2fc0209104a297649eb44eb791ebd6e2f packages/webui/tests/proxy-canary.test.mjs
efa01078110be6021e14a2eda09e549a4e17d4b62f15c4e1d609b5f4d1c7c1a2 packages/webui/tests/proxy-page.test.mjs
File diff suppressed because it is too large. Load diff
+1
View File
@@ -1696,3 +1696,4 @@ are never rewritten or removed; corrections are new entries.
2026-10-25 | Sage 1ef1e4f8 | row284 landing #1789 | Gate GREEN 00:09:04Z unchanged, landed ce0b6ed41 pushed 00:09:52Z; #1789 closed c31655; queue note 4071, done 4072 (7c8dc2033); DEFERRED Webby N1 to the next library read-path row; row 332 PROXY_CODEX_API ruled openai-responses (sage-4331), P3 holds for row 331. 2026-10-25 | Sage 1ef1e4f8 | row284 landing #1789 | Gate GREEN 00:09:04Z unchanged, landed ce0b6ed41 pushed 00:09:52Z; #1789 closed c31655; queue note 4071, done 4072 (7c8dc2033); DEFERRED Webby N1 to the next library read-path row; row 332 PROXY_CODEX_API ruled openai-responses (sage-4331), P3 holds for row 331.
2026-10-24 | poe | row 330 / #1828 Console proxy page, base 78b69e1e6 | Started requirements recovery and design; test slot held pending Sage CLEAR. 2026-10-24 | poe | row 330 / #1828 Console proxy page, base 78b69e1e6 | Started requirements recovery and design; test slot held pending Sage CLEAR.
2026-10-25 | poe | row330 / #1828 authorized focused block | 88 focused tests green after expected account RED; offline acceptance failed before first account checkpoint, nice16 observed; stopped and returned slot to Sage, no rerun or mutants. 2026-10-25 | poe | row330 / #1828 authorized focused block | 88 focused tests green after expected account RED; offline acceptance failed before first account checkpoint, nice16 observed; stopped and returned slot to Sage, no rerun or mutants.
2026-10-25 | poe | row330 / #1828 approved test-first404 block | Intended RED observed, exact GET404 catch applied,99 focused passes, pinned acceptance and4mutants/controls passed; slot returned, review packet prepared, P2/full gate pending.
+3
View File
@@ -70,6 +70,9 @@ export class ManagementClient {
const answer = await this.#request(method, endpoint, payload, value => { status = value; }); const answer = await this.#request(method, endpoint, payload, value => { status = value; });
if (expectedStatus !== null && status !== expectedStatus) refuse('proxy-client-refused'); if (expectedStatus !== null && status !== expectedStatus) refuse('proxy-client-refused');
return answer; return answer;
} catch (error) {
if (method === 'GET' && endpoint === '/v8/management/config/api-keys/claude' && status === 404) return [];
throw error;
} }
finally { this.#receipt({ call: `${method} ${endpoint.split('?')[0]}`, status, keyIds: [] }); } finally { this.#receipt({ call: `${method} ${endpoint.split('?')[0]}`, status, keyIds: [] }); }
} }