Repository navigation
test(peer): check the vault refusal error envelope - #566
Conversation
|
What: Opus 5.5 MEDIUM approves the whole test-only #566 component at e0bbbe5, with no required findings. Requirements and who asked: User-approved #379 requires repaired inherited CI, meaningful vault proof and both independent exact-candidate reviews. Unchanged Opus round-1 report#566 component review, round 1, Opus 5.5 MEDIUMVerdict: APPROVE (whole component)
Required findingsNone. Contract check (production, unchanged)
Test strength
Proof binding
Optional (non-blocking)
Unread / not done
No source, index, ref, or external writes. Only scratch writes: |
|
What: Both independent families approve the whole test-only #566 component at e0bbbe5, with no required findings. Requirements and who asked: The user requires both exact-candidate independent reviews and green CI before internal integration and final delivery. Unchanged Sol round-1 whole-component reportWHOLE COMPONENT APPROVEWhat: Independent whole-component review found no required correction in PR #566's one-file test repair. Reviewer: GPT-6.1 Sol, Codex harness, MEDIUM, round 1. Separate reviewer, no authorship and no earlier component findings reused.
FindingsRequired: none. Optional: none. No supported reachable issue requiring a trigger/caller/location/effect finding was identified in the whole component. Elon recordRequirements and who asked: User/parent requested independent whole review of the existing #379 compatibility microfix, preserving exact safe origin-mismatch meaning, privacy, no credential read/fill and audit behavior, with retained real isolated Chromium proof. Contract and consumer reviewThe exercised path is Production source examined:
Relevant unchanged test consumers inspected include McpHttpServer.test.ts's exact JSON capability-denial assertion and public HTTP result parsing, preview/tools.test.ts's public schemas, and preview/handlers.test.ts's registered credential/end-login completed, unresolved and legacy cases. Their receipt boundaries depend on the modern registration, so reverting production to plain-text failure mode would be inappropriate. Decoder strictnessThis conclusion is source-verified against installed Effect 4.0.5, not assumed from the option name:
Therefore the candidate rejects empty/additional content blocks, wrong content kind, excess block fields, plain text or invalid JSON, non-object JSON, missing/non-string message, and extra parsed message fields. Whole-object equality then enforces the exact canonical originMismatch message. Raw sentinel exclusion still checks the original complete responses, and undefined structuredContent excludes a second payload channel. The added vault call sequence distinguishes the earlier successful password fill from the refusal's URI-only lookup, and a real Chromium input read checks the username stayed empty. Existing audit contents, key set and 0600 assertions remain intact. No decoder mutation experiment or test was executed by this reviewer, as instructed. Duplicate JSON object keys are ordinary JSON.parse semantics and are not a new claimed protocol prohibition; no finding is manufactured from that unrelated generality. Evidence and exact-byte bindingEvidence root:
The missing full compiler is not essential component proof for this test-only schema/assertion change: installed API signatures and actual runtime execution cover the new code, no production interface/type changed, and targeted static checks passed. This conclusion does not replace any required current integration CI or complete #379 gate. Scope, authority and unread ledgerRead live PR #566 body and exact base/head plus canonical decision comment 6287355811 and authority comment 6287385562 in full. Their scope agrees with this test-only component. It supports #379's existing cross-machine capability work without selecting a new feature or durable direction. No map/version change is needed for this pure test maintenance. No source/index/ref changes, tests, installs, child agents, providers, services, browser/device sessions, live SQL, merge or deployment were performed. Only this report was written to the authorized scratch directory. The runtime-required PR thread link was registered and the list verified; no GitHub comment, review or commit-status write was performed. Parent owns publishing this unchanged report and the paired conjunction status. Unread/unverified: remaining unrelated McpHttpServer/toolkit cases and complete broker internals were not exhaustively reviewed; no claim of whole-repository review, live ServerBrowser/vault behavior, current complete CI, Opus approval, #563 review or final #379 acceptance is made. Upstream searches were not repeated because this review ports no code and the decisive inherited source is local. No essential requested component path remains unread; no component blocker is outstanding. Both exact-head independent component verdicts remain required as a conjunction, followed by the parent's remaining repairs, final exact-head reviews and current green CI. Fleet rollout, deployment, installed restart and live userdata remain outside authority. |
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: unavailable · PR result: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
* feat(peer): preserve authority and native returns across environments (#391) * feat(peer): return notices and delegate onward within durable authority * fix(peer): retain authority through queued execution and recovery * fix(peer): preserve active run authority across native operations * fix(peer): retain authority for every accepted run input * fix(peer): check every contributor against the actual target * fix(peer): validate joint work against its actual resource * docs(peer): inventory retained consent seams * fix(peer): remove unused authority helper re-export * fix(peer): bound private output by effective caller modes * fix(ci): weight the measured peer authority workflow * fix(peer): retain effective caller modes during task cancellation * feat(peer): continue remote delegated jobs and stop later work (#392) * feat(peer): retain remote delegated job lifecycle and durable Stop * docs(map): link remote lifecycle component PR * fix(peer): preserve Stop replay and source task navigation * fix(peer): reconcile accepted attachment and bound session expiry * fix(server): bind delegated lifecycle routes to production runtime * fix(peer): preserve attachment bytes and native request acceptance (#410) * fix(peer): preserve attachment bytes and native request acceptance * docs(peer): link request recovery component review * docs(peer): register attachment recovery review provenance * fix(peer): declare device receipt owner in fork inventory * fix(server): preserve scoped retries and scheduler acceptance * fix(peer): preserve authorized manual admission and saved snapshot replay * fix(peer): preserve native preview capability refusal * fix(attachments): recover exact native discard acceptance * fix(attachments): retain bytes after keyed discard acceptance * fix(preview): reconcile native recording claims before replay * feat(peer): answer remote descendant requests from the source (#416) **What**: Exact #369 candidate42051c passed real source-only web and Codex peer request acceptance, including committed replay after both full CLI servers restarted. **Why**: Independent tests cannot establish that the production composition, real provider callback and source-only client work together. **So what**: The planner accepts this bounded internal component for integration into #379 after a fresh head/base/gate check; combined multi-machine/client acceptance and final shipment remain pending. Requirements and who asked: User #379 mandates native delegated lifecycle and all permitted tools with two MEDIUM reviewers and real isolated client/provider proof. Deleted: No fake provider, direct SQL mutation, injected browser RPC, capability expansion, alternate harness or duplicate callback. Bottleneck: Current candidate integration; #383 shared device authority/discovery and #384/#385/#386 remain outstanding. Checked myself: Primary planner drove actual source A browser, inspected native B events/provider results, restarted both CLI products, replayed exact original request, and reopened the same source-only result. Identity: HEAD42051c47813c354682b80677009b199d86fef1a0, treef9efef2d7df1b8b91ac64b09018386e79ccc1d45, baseab1bf53640e2a6541a2ba9f316839cedf81d4f46. Clean author workspace /Users/rocky/.t3/worktrees/chromeria/feat-369-remote-pending-requests. Both full production servers ran that source, with meaningful copied task-owned history in NEW /tmp/chromeria-369-acceptance-a and -b; old382 homes/evidence remained untouched. Node24.18, A server14247/web7663, B14248, source incognito Browser connected ONLY to A950a38f2-e2a5-4242-9171-c17e0cb8412c. Actual B is ef047b58-1edf-4ad6-a1ba-44320188325c. No live userdata write, new grant, physical device or standalone worker server. Human source-only flow: A actual Codex gpt-6.1-sol/MEDIUM delegated real async B task369-parent-native-question-v1 in existing B project/root. B actual Codex asked request_user_input_async, persisted pending at B sequence288. Primary opened source task viewer from transcript; browser URL stayed A, no B profile. The actual card displayed369 REAL REMOTE QUESTION, ACCEPT_369/DECLINE_369 and disabled Send answer until selection. Primary selected ACCEPT_369 and sent once. B durable request resolved at sequence290, command mcp:request:385bcb2f7e0a7415a3c0d1cda8a0cabb0b7204f83949b505a9f4fe4cb6482210:0, 2026-10-18T10:10:47.347Z. Real provider consumed the answer and completed369_REMOTE_ANSWER=ACCEPT_369. Source returned exact original result and zero pending requests. Not inferred from dispatch acceptance. Agent tool flow: Separate deliberate B task369-parent-native-agent-answer-v1, same explicit Color. Native delegate mode wait returned on real pending question with waitTimedOut:false, requestCount1, actual qualified target/revision334. Source local list{} correctly returned[]; explicit remote descendant list returned its actual request. Native qualified read returned real369 REAL AGENT QUESTION/options/revision334. Source called t3_pending_request_respond with original target/route/expectedRevision334, answers{0:AGENT_ACCEPT_369}, stable key369-parent-agent-response-v1. Initial AND exact retry both returned sequence340. B request has exactly one pending334 and one resolved336 event; real provider completed369_AGENT_RESULT=AGENT_ACCEPT_369. Two B tasks intentionally created, each ordinal1 completed, no duplicate B run. Restart proof: Read-only query found zero preparing/queued/starting/running/waiting runs in A/B. Primary stopped only captured own sessions47643/49402 (exit130), restarted same source and same NEW homes in sessions86505/9639. A actual Codex ordinal34 called ONLY the exact original respond input/key after reconstruction: sequence340 again. Postrestart B has no additional request resolution or provider run. Source previous-agent viewer reopened after both restarts with original human result, real accepted answer and zero pending requests. Actual client screenshot inspected before upload. Evidence: local immutable/raw read-only oracles /tmp/chromeria-369-parent-actual-question-proof.json, /tmp/chromeria-369-parent-native-agent-tool-proof.json, /tmp/chromeria-369-parent-postrestart-proof.json. Full CLI logs /tmp/chromeria-369-acceptance-{a,b}-server.log and -restart.log retained. Native Browser screenshots in existing UNPUBLISHED draft evidence-379, never a public release:   Both fresh exact-candidate independent MEDIUM reviews APPROVE: Sol #416 (comment) and installed Grok4.7 #416 (comment). Full aggregate #369 (comment). Current420 CI39116640008, Fork39116640150 and final fingerprint39116844636 SUCCESS; original canceled fingerprint retained separately. Authenticated newest review/independent SUCCESS by lukemaj. Neither review substitutes for the actual proof above. Full author/R1/R2 packet #369 (comment). Limits: These are TWO isolated Rocky environments, web/source-only browser and actual Codex provider. No physical cross-machine/tunnel/mobile/native desktop/all-provider/real live approval, durable-dismiss or secret acceptance claim. Registered native tests retain their own broader and S1/S2 race/empty-choice proof. Earlier native initialization404 remains UNKNOWN; later tests/CI/actual positives do not diagnose it. Operational verification earlier used invalid exact=true locator syntax and a stale assumed web port; corrected to supported selectors/actual dev-runner7663 without alternate browser or product changes. Cost supported publish #416 (comment) is partial task379 coverage, not complete cost; old unplaced/unpriced usage remains unknown. Background supported sync still pending at this record, not presumed complete. States: implemented YES; current focused/native tests YES under their exact records; BOTH reviewed YES; current CI YES; bounded primary product proof YES; internal integration NOT YET at this record; main merged/build/shipped/activated/live combined acceptance NO. No package bump. All rollback/evidence/workspaces retained under explicit #379 instruction until final acceptance. * fix(client): clarify remote requests and count pending work once * fix(client): make remote request choices readable and accessible * docs(peer): track the remote request client repair * fix(peer): count initial remote work once in sparse shells * feat(device): add typed remote device execution core (#421) * feat(device): execute typed commands across peer links * docs(map): link the typed device core component * fix(device): preserve native authority and typed command semantics * fix(device): recheck authority before native shutdown * wip: preserve native contexts and purpose metadata after main alignment * fix(peer): preserve current-main request answering policy (#539) * fix(peer): preserve current-main request answering policy * fix(compat): restore inherited CI consumers Reuse baseline-only repairs from the preserved #383 checkpoint d892050cb97854e08ca1ca427fc762caebbd69f7 under the #379 ownership transfer. Adapt the two web test fixtures for actual Chromium collection without changing production web behavior. * test(prism): absorb native recovery observer fixture Transfer the exact test blob authored in cdd4780 and preserved by PR537 at fcd3162. Await the native observer marker before measuring the live batch; preserve the duplicate assertion and production source. * fix(client): hide remote children from default navigation (#546) * wip: hide remote children from default navigation * wip: register destination navigation component PR * wip: retain user forks with remote provenance * wip: cover phone and alternate sidebar navigation * wip: declare phone and legacy carried upstream edits * feat(peer): keep destination automations authorized offline (#555) * feat(peer): retain destination automation authority offline * docs(peer): link destination authority component PR * wip: repair destination authority recovery and acceptance findings * wip: fence schedule acceptance and preserve live birth permissions * wip: preserve birth permission purpose and split native proof * wip: preserve recovery routes and birth dependency lifetime * wip: retain paired recovery routes through repeated unlink * wip: wake exact automation disable recovery at known expiry * feat(remote): view and control qualified browser and device resources (#534) * wip: combine qualified resources with destination automation * wip: bound mobile returned-resource row height * wip: respect native top safe area for tool resources * wip: preserve current-main cross-machine compatibility checkpoint * wip: preserve linked research and tool policy identity across main alignment * wip: repair vault authority and keyed MCP configuration replay * test(server): validate credential refusal error envelopes (#566) * fix(peer): render HTML from idle destination contexts (#563) * fix(server): prepare HTML in idle peer resource contexts * docs(map): track the open idle HTML component * fix(orchestration): wake parents for remote pending requests (#531) * fix(orchestration): wake parents for remote pending requests * fix(orchestration): deliver held remote requests when parent waits end * fix(peer): wait for request content before notifying parents * fix(orchestration): catch up requests after remote original completion * test(web): isolate panel keyboard tests from inherited pointer (#575) * fix(peer): attribute remote follow-ups to the completing run (#582) * fix(peer): attribute remote follow-ups to the completing run * docs(map): link remote completion provenance repair * fix(peer): use observed purpose for first remote completion * fix(scheduled-tasks): record refused keyed manual runs as terminal failures A keyed run_scheduled_task_now whose dispatch failed with a typed error and left no native receipt returned outcome_unknown and kept the schedule marked running forever. Record it as the request's failed outcome, release the running reservation, and replay the same failure for the same key. Interrupted or defective dispatches stay outcome_unknown. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(orchestration): accept blank optional answers in remote request admission Remote pending-request answers with expectedRevision rejected a blank or omitted optional choice-only question as an unoffered option. Skip blank optional answers before validating options, matching the message-response path. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * chore(fork): keep one owner for server shard weights #581 registered shardWeights.json under run-groups while the integration already owns it under fork-maintenance; fork-features requires one owner. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * test(server): weight typed peer effects by their CI time PeerAuthority.typedEffects.workflow.test.ts takes about 197s in a CI shard but was weighted 46.4s, so Test Server 8 exceeded its 10-minute limit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(peer): reopened parents follow their remote tasks again Archiving a parent ended its remote follower, and nothing restarted it on unarchive, so the reopened parent missed later remote results until a server restart. The follower now stays registered and waits for the parent's unarchive or deletion instead of exiting, so reopening resumes observation without a new entry point or a duplicate follower. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(peer): threads read and answer their own questions again The replacement pending-request service refused every "own" answerer, so a thread reading or answering its own user-input question, or an ordinary full-access MCP client doing so, got capability_denied. Own access is restored for local, non-linked callers on threads not delegated from another environment. Own approvals, dismiss, linked clients and remote delegated children keep their existing refusals. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(web,mobile): remote request cards keep multiline editor answers Remote pending-request cards rendered every custom answer as a single-line field, so a multiline editor prefill displayed and was stored flattened. Editor questions (those with an initialAnswer) now use the Textarea on web and a multiline, newline-submitting field on mobile, as the local paths do. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(scheduled-tasks): keyed pause and resume replay their receipt A keyed update_scheduled_task carries clientRequestId on its input, so the enable-only shortcut never matched: a keyed pause or resume fell through to the full definition update and was refused without a purposeIntent. The shortcut now ignores routing fields, and setEnabled records and replays the keyed mutation receipt like create, update and delete. A retried keyed pause after a later resume replays instead of retiring the newer automation certificate. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(scheduled-tasks): post-admission recheck refusals release keyed manual runs A typed refusal from the recheck after admission, or after the dispatch claim, now records the key as failed and frees the schedule instead of leaving it running. The stage-guarded claim keeps uncertain dispatches outcome_unknown. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(childThreads): stop-disposed remote children stay pending background work A parent interrupt disposes a delegated completion with disposedBy "stop" without stopping the remote child. The sparse SQL remote arm dropped that row while the local arm and pendingDelegatedChildTasks kept it, so shells, auto-settlement and storage cleanup treated the parent as idle. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(scheduled-tasks): final recheck refusals no longer fail a concurrent same-key dispatch The final live recheck ran after the prepared -> dispatching claim and terminalized a refusal from the dispatching stage. For an existing-thread schedule a same-key retry can read dispatching and send concurrently, so the refusal failed the request and freed the schedule while that send was accepted. The final recheck now precedes the claim, so a refusal is only recorded through the prepared-stage compare-and-set. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(peer): finished remote jobs no longer hold back live Stops A lifecycle-v1 follower keeps long-polling its job there after the result, so a later Stop or follow-up is still observed. Each poll held one of the eight shared peer permits for up to 20 s, so more than eight finished jobs starved Stops and live observations of other jobs. Followers whose job has nothing left to do there (result available, no queued runs, questions or recovery wait, or a confirmed Stop) now wait on their own semaphore. Stops, unconfirmed and acknowledged stops, live jobs and follow-ups seen as working keep the existing eight permits. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(peer): stopped remote jobs with new work there keep live permits A confirmed Stop counted a job as settled whatever its latest snapshot said, so fresh direct input on the destination child after the Stop left its follower queued behind idle settled long-polls, also after a restart. A job is now settled only while its latest snapshot is quiet (result available, no queued runs, questions or recovery wait); a confirmed Stop also needs that quiet snapshot. Anything showing activity uses the shared network permits. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
What: The CredentialFill MCP test now checks the exact refusal in the registered JSON error envelope.
Why: Its inherited plain-text assertion fails against the fork's existing safe error serializer, despite the same origin-mismatch message and correct no-fill behavior.
So what: This test-only #379 component targets the integration branch; both independent reviews and CI must pass before internal merge and #563 revalidation.
Related #379. Fixes the inherited failure seen in #563 Test Server 7: https://github.com/toolboxmd/chromeria/actions/runs/39396196252/job/118539645232. No closing linkage and no production change. The existing safe wire serializer remains authoritative; the test parses one text block containing a JSON object, compares its complete message to the exact originMismatch error, rejects excess fields, and retains sentinel and audit checks. It additionally proves that refusal reads only item URIs and leaves the real page input empty.
Requirements and who asked: The user requires inherited integration CI repairs without weakening vault refusal, privacy or audit behavior.
Deleted: Production/error-contract changes, substring-only assertions, browser skips and unrelated HTML changes.
Bottleneck: The stale public-envelope assertion in its owning test.
Checked myself: Full one-file diff, actual serializer and real Chromium red/green logs; the committed file matches the final passing test/lint/format inputs.
Proof, pinned Node 24.13.1 / pnpm 11.10.0, with task-private Playwright Chromium headless shell revision 1223:
vp test run apps/server/src/preview/CredentialFill.test.ts: all 25 pass, zero skips.Base e7a11a8; head e0bbbe5; tree 6e5d60ba26612d66a21411b91880cf4aaf701e9c. Exact committed test SHA256 d4a1487499e415ee45e76ee37572aa39f4c4f525b43defa62f712608bb09af40. Upstream search found no CredentialFill or equivalent serializer fix; no upstream code was ported. This test-only maintenance changes no shipped feature part or map topology.
User authorization now permits the final #379 main merge only after all final acceptance, exact-final-head independent reviews and current green CI. No rollout, deploy or restart is authorized by this component.
Implementation: GPT-6.1 Sol, Codex, MEDIUM. Integration driver: GPT-6.1 Sol, Codex, MEDIUM.