Repository navigation
Support standard ACP agents with explicit session guarantees - #1085
Conversation
PR #1085: Support standard ACP agents with explicit session guarantees36 files, +1227 / -214 Scope🔴 PR has 1441 lines changed. Split into focused PRs. 🟡 1441 lines changed. PRs under 400 receive more thorough review. 🟡 36 files changed. Are all changes related? 🟡 Changes span 9 directories. StructuralOxlint structural signals:
Slop✅ Slop indicators look low. Static AnalysisOxlint: 57 diagnostics across 6 files (12 rules) consistent-function-scoping (15): packages/acp/src/provider.ts CorrectnessFILE: packages/acp/src/provider.ts, PATTERN: no-unused-vars, CONCERN: Unused variables in test setup, QUESTION: Are these variables required for test execution or can they be removed? |
|
Independent Fable review of
Both observations are integrated locally in signed commit This records the completed full review and its dispositions. CI has demonstrated additional Plan/REPL fixture and Bun cancellation failures; those remain under repair. A focused independent closeout must cover the final corrected commit. This is not a merge-readiness claim. |
|
Independent Fable affected-source closeout: PASS, exact signed
Architect/Planner feedback and focused Deno/Bun/Node evidence are retained. The corrected head is pushed to this PR; new CI is pending. The cancellation readiness race and first failures are tracked in #1087. Neither a merge nor readiness is claimed here; #1079 remains a separate predecessor delivery. |
|
Final exact-head Fable closeout: PASS at signed Prior review dispositions and the nonblocking coverage note remain as posted. The final head is pushed; required CI remains pending. #1079 is still a separate predecessor; no merge is claimed. |
|
Final affected-source Fable closeout: PASS, signed
The original Planner also passed affected acceptance on this exact head. Prior nonblocking coverage/runtime notes remain recorded. The approved fourth correction is complete; new exact-head CI run2375 is pending. #1087 and #1089 retain first failure/regression evidence. No merge or CI pass is claimed here. |
Why
An ordinary ACP peer can return text and
end_turnwhile XMD rejects its first turn for lacking XMD's private acceptance marker. Standard ACPv1 agents need to work without claiming stronger session evidence.Closes #1081. Fixes #1087. Fixes #1089. Predecessor #1079 is merged at
bd17b463. The #1081 implementation range isbd17b463..2dde263a; its original frozen base has the identical file tree. A signed ancestry merge preserves the entire tested source tree.What changes
Before, every new ACP-first session required the private marker, and workflow mapping required a native identity. After, ordinary peers can stream and complete turns; declared-strong Codex/Claude adapters retain their acceptance barrier. Qualification reports basic interaction, acceptance, native identity, durability and cleanup separately.
Workflows retain the ACP loading target under the distinct
acpx.acpSessionIdkind when no native identity exists. Reattachment compares kind and value. A used held conversation whose provider storage disappeared refuses before creating a replacement.How it works
The existing adapter descriptor declares strength. The existing provider, workflow mapping and private Core request/setup owners enforce the distinction. No new registry, storage format or generic recovery framework is added.
Review guide
Start with
packages/acp/src/native-launch.tsandprovider.ts, then retained identity projection insession-store.tsand workflow mapping inpackages/cli/src/workflow-agent.ts. Review the private continuation requirement in Core's conversation/request/setup modules and the qualification report consumers.Look carefully at pending strong records supplying no retained assertion, ACP IDs never becoming native IDs, and refusal before replacement when used history survives storage loss.
What must stay true
-32603fallback stays.How to verify it
Focused Deno groups passed on the final candidate: F 21 tests / 99 steps, A 21 / 126, B 17 / 143. Documentation validation passed. The tests cover standard first/sequential turns, strong refusal/promotion, permissions and cancellation, replay, exact loading and failed reopening, lost provider storage, workflow identity precedence/kind mismatch, and independent qualification evidence. Vendor/native-launch checks pass.
The Architect and Planner passed the feature and both original Fable findings; the independent reviewer passed
1e2edbfd. Both observations are fixed: failed partial output prevents conversation replacement, and identity selection uses ordinary narrowing. The original Planner and Fable reviewer both passed the affected journal-observation correction and integration proof on exact2dde263a. The full Fable review was not repeated. Required CI run2375 passes on this exact head. The delivery workflow also verifies successful CI for main’s exact current commit after #1079’s merge. The human marked the PR ready. Its separate merge decision remains. The first CI attempt hit the existing adapter-confirmation flake #1088; its first output and unchanged-boundary evidence are recorded there. That cause is not fixed by this PR, and the issue remains open after the one failed-CI retry.The five files affected by the earlier CI fixture repair pass locally: Deno 36 suites / 141 steps, Bun 1.4.0 141 tests, and Node 22 141 tests, with final R2 reruns bound separately. The target-compatible fixture lookup passes the exact Node typecheck and four focused IN5 cases.
The J2 live-journal observer now parses only newline-terminated records while a writer is active. A deterministic split-append regression fails before the correction and passes after; a malformed complete record still fails. Focused Node J2/TL10, journal controls, strict retained-history refusal and typecheck pass at signed
68c905ce; the integrated2dde263ahas exactly the same source tree. This changes one test file and preserves the three-retained-prompt assertion. No deadline increases, runtime exclusions or production lifecycle changes are introduced by these CI repairs. No additional live Kimi/Codex qualification was run.Scope
Included: standard ACP interaction, truthful capability evidence, existing-owner continuation protection, affected regressions and current specifications. ACP remains on v1. Native CLI handoff still requires asserted native identity; a peer without loading support cannot reopen a retained conversation.
Generated or mechanical changes
The required
PROVENANCE.mdwording edit updates only its SHA-256 entry in the vendor manifest. Runtime/adapter bytes, other entries and integrity assertions remain unchanged.Scope confirmation