Repository navigation
CONTRACT: keep interactive tool rosters stable across turns - #2073
Conversation
|
Historical failing-first and mutation receipts for #2048. These are diagnostic history, not current-head merge proof.
|
|
Historical green execution receipt; rejected stale candidate, not merge authorization. Confirmation 38896175604, attempt 1, head All 13 selected execution jobs pass: strict types, packaging, 4 units, 2 browser shards, 2 layout shards, native runtime, capture verification and endurance. Hosted units pass 13,516 cases; all 962 independently discovered files execute exactly once. The 24 live-provider opt-ins remain excluded from keyless proof, and four skipped inverse-capability placeholder cases belong to the vector-present lane rather than a missing sqlite-vec runtime. The actual vector tests pass. All corrected native lock/approval controls and the real Pi autonomous checkpoint control pass. Browser: 8808 passes, with exactly ten approved conditional fine-pointer keyboard cells. Both raw case diagnostics exit 1 only for those ten cells; each exact file/case identity has passing coarse and mixed counterparts (20 actual positives), with no other ownership/error issue. Matrix/checker source is unchanged from approved #1862. Independent current discovery and installed partition reconcile 297 project/file instances (219/78). Layout: 56 files exactly once, 1098 passes, both raw diagnostics pass. Endurance: one case and raw diagnostic pass. Every execution checkout log, immutable commit evidence and retained artifact identity matches the candidate above. Retention ledger is empty. The aggregate correctly refuses at 12:14 UTC because external #2062 advanced main to |
|
Historical passing execution, rejected stale candidate: run 38902174935, attempt 1, head All 13 execution jobs passed. Units: 13543 passes across all 963 independently discovered files exactly once (partitions 231/243/243/246); 24 paid live-provider opt-ins and four inverse-capability placeholders retain their intended exclusions. Pi's actual autonomous permission checkpoint passes. Browser: 8808 passes; ten exact approved fine-pointer keyboard nonapplicable cases each have passing coarse/mixed counterparts, 20 actual positive controls. Raw case diagnostics retain their exit 1 for those ten cells only; ownership reconciles. Matrix/case/checker sources are unchanged from approved #1862. Layout: 56 files exactly once, 1098 passes (450/648 under the current cost partition), both raw diagnostics pass. Endurance's sole case and raw diagnostic pass. Captures, strict verification, packaging and native runtime pass. The runtime's deliberately retained index-namespace negative case is independently verified as expected; all four healthy cells and cleanup qualify. Every selected job's actual checkout log and all artifacts match the identity above, independently reconciled with immutable GitHub commit evidence and the fetched local Git object. No retained domain was substituted. Aggregate job 116987587971 correctly rejects the changed live base at 13:07:24 UTC after external #2132 advanced main to |
|
Current exact candidate is fully passing: confirmation 38905724827, attempt 1, head All selected checkout logs, artifacts, immutable GitHub commit evidence and the fetched local object reconcile. Units: 13544 passes across all 963 discovered files (231/243/243/246); the explicit isolated external-speech child re-executes its own fixture by design and does not duplicate partition assignment. Twenty-four paid provider opt-ins and four inverse-capability placeholders retain their intended exclusions. The actual Pi autonomous permission checkpoint passes. Browser: 8808 passes and exactly the ten approved fine-pointer keyboard nonapplicable cases, with 20 actual passing coarse/mixed counterparts and unchanged approved case/matrix/checker sources. Raw diagnostics preserve exit 1 only for those ten cases; ownership reconciles. Layout: 1098 passes across all 56 files, both raw diagnostics pass. Endurance: its case and raw diagnostic pass. Native runtime verifies all four healthy cells, the intentional retained-index negative case and owned cleanup. Captures, strict verification and packaging pass. Current head-only contract run 38905976088 passes separately. PR/issue milestone 0.44.0 is verified; no review finding is outstanding. Earlier cancelled draft-push checks belong to superseded run 38905618732. Earlier stale candidates retain their original identities and are not reused as current proof. Final matching-head merge and integrated-main reconciliation follow separately. |
Closes #2048
What changed
Ordinary PR completing #2048. Dependent context work remains in draft #2072 and will be reconstructed against delivered main after this change lands.
Interactive Claude and Pi sessions offer a complete, deterministic first-party tool roster across posture changes, strict fallback, no-grant surfaces and temporary handler loss. Unavailable calls refuse before permission cards, write locks or privileged handlers. Voice-first sessions retain later typed tools; independently available inbox handlers remain usable. Claude native Write/Edit/NotebookEdit stay registered while strict/voice execution refuses.
A trusted, session-stable
StartTurnRequest.applicationAuthority: "server"declaration preserves hosted legacy-project MCP shadowing through temporary handler loss. Unhosted consumers retain their legacy writers. Autonomous membership/permission checkpoint behavior and Pi production voice refusal are preserved.Why this shape
Implements selected A: registration is a stable deployment fact; current authority is enforced at call time. Mandatory Claude hooks/canUseTool checks and Pi gates/tool bodies preserve exclusions even through settings auto-allows. Governed typed stale-read/write-lock controls remain intact; #2022 retains its separate native auto-allow work. Authoritative MCP/package contracts, SDK API report and historical voice/governed decision records are updated. Minor changesets cover both backends, SDK and server.
Proof
364194c01375a0285c809d1b7e5224cf66acd1fdincludes base626a03af4a9db064751230a84732755b8afa961e. Current-base preflight: 864 pass / 5541 assertions, lint/leakage/env/changeset gates clean. Changed measurement/shard harness controls: 32 pass / 60 assertions. Bun 1.4.2.bwrap --unshare-netwith local fake Messages/Responses endpoints and fictional credentials. Claude typed→voice→strict and voice-first→typed→missing-handler→no-grant→partial-handler requests retain byte-identical tools. A real project stdio MCP is configured; separate resumed unhosted controls retain all legacy writers and execute an allowed brain_add call. Per-tool voice/strict/missing-handler refusals survive settings/project allows, without cards, handlers or file changes. NotebookEdit is read first so its denial reaches the mandatory hook.2315753c3268872a5bb8bf7245b91794413f50e7, parents[626a03af4a9db064751230a84732755b8afa961e, 364194c01375a0285c809d1b7e5224cf66acd1fd], treea4044809e1ec71cf3b262047a29b3f1ac9b61793; every selected job log/artifact and immutable API/local Git object match. Retention is empty. Units pass 13544 cases across all 963 independently discovered files; browser passes 8808, layout 1098 and endurance 1. Browser raw diagnostics preserve exactly ten approved fine-pointer nonapplicable keyboard cases, each with actual passing coarse/mixed counterparts; no other case/ownership discrepancy. Layout/endurance raw diagnostics pass. Current head-only contract run 38905976088 passes. Prior cancelled draft-push checks belong to superseded run 38905618732, not this confirmation.Checklist
Anything left open
Current-candidate hosted proof remains pending. Pi declares no production voice posture and rejects it before session acquisition; its real worker no-grant/missing-handler requests, voice assembly/gate controls and dispatch-refusal control state that proof limit honestly. Offline requests prove assembly and effective refusal, not first-party provider cache hits, subscription eligibility or savings. No paid provider calls were made.
Ordinary integration recovery
Native grouping #2136 was removed after #2141 reproduced incompatible native CI event/checkout semantics. Dependent PRs remain drafts and will be reconstructed with only their own changes after each actual parent lands. Current ordinary head is
364194c01375a0285c809d1b7e5224cf66acd1fd, incorporating live main626a03af4a9db064751230a84732755b8afa961e; local preflight passes 864 tests / 5541 assertions. Only the upstream continuity test and process guidance changed; product roster/enforcement sources are unchanged from the preceding implementation.Prior run 38902174935 passed all 13 execution jobs, including 13543 unit cases across all 963 independently discovered files, 8808 browser cases, 1098 layout cases, captures, native runtime and endurance. Its aggregate correctly rejected the external main advance from
3fc6fea5e22304df2810348074c32b1983fbea46to626a03af4a9db064751230a84732755b8afa961e. The original headc40f533e5f2277b961acb1d48b7b3742dd7ac11c, checkoutff8cecd806cf17987c1fea05ce084c9cf8b8fbef, tree125491a2dc2407dbc042bc36975b94ed1621467cand artifacts retain that historical identity. No stale execution result authorizes merge. Current-candidate confirmation now passes as recorded above; eventual integrated-main verification remains required.Merge reconciliation
Merged as
8822aedeeac8b824bafe120c20a9b58c4cd1f4e6, an ancestor of fetched main. Actual parent626a03af4a9db064751230a84732755b8afa961eand treea4044809e1ec71cf3b262047a29b3f1ac9b61793exactly match the fully passing candidate. Issue #2048 closed automatically; both release milestones remain 0.44.0. Automatic main-push CI 38909289786 is running on the actual squash; its result is pending and separately monitored. No post-merge branch push will occur.