7.1 KiB
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.