Repository navigation
Description
Purpose
Issue #622 adds a second behavioral patch to the vendored ACPX 0.12.0 snapshot:
checkpointMeta, which carries the ACP PromptResponse._meta of a normally
completed turn out to the runtime's consumer.
ACPX 0.12.0 reads that response for its stop reason and its usage and drops the
rest — AcpRuntimeTurnResult has nowhere for the response's own metadata to go —
so a consumer cannot tell which turn a completion was, however carefully the
adapter names it.
Remove the patch when a released ACPX version carries the completing turn's own
response metadata out on its own. This is removal, not an ACPX upgrade bundled
with unrelated provider work.
This is the sibling of #566, which owns agentProcessEnv on the same snapshot.
The snapshot also carries first-turn materialization from #648. Each patch may
be removed independently; the snapshot goes only when all three contracts are
supplied without local patches.
Exit gate
A candidate released ACPX version replaces this patch only when all of these
pass on one exact revision:
- a normally completed turn's result carries the exact
PromptResponse._meta
the adapter sent, byte for byte, with no key added, renamed, dropped or
interpreted by the runtime; - simultaneous turns each carry their own response's metadata — a value read
from anything session-global crosses them, which is the defect the patch's
request-local shape exists to prevent; - a cancelled turn, a failed turn and the timeout/session-update fallback each
carry none: the fallback reconstructs a completion from session updates and
never read aPromptResponseat all; - a response that sent no
_metaproduces a result with the member absent
rather than present-and-empty; - Tier TC (
packages/acp/tests/acpx-checkpoint-meta.test.ts) passes unchanged
against the released runtime, including its real-child ACP cases; and - Tier AV, the Deno cached/no-node-modules build and release compile, the npm
package, the JSR dry run and the repository clean/composability verifier pass.
Removal
- drop the
checkpointMetaseam fromgenerated/live-checkpoint-ClPCSdrW.js
andgenerated/runtime.js, and the_metamember and itsCheckpointMeta
alias fromgenerated/runtime.d.ts; - remove the
checkpointMetaentry fromSEAMSin
scripts/tests/acpx-vendor.test.ts, leavingagentProcessEnvwhile Remove the vendored ACPX transient-environment patch after a released scoped seam passes continuity #566 is
open; - refresh
packages/acp/vendor/acpx/MANIFEST.jsonand remove the file from
behaviorallyPatchedif no other patch remains in it; and - update
packages/acp/vendor/acpx/PROVENANCE.md— the "Why the second patch
exists", "Behavioral patch:checkpointMeta", "Both patches, one snapshot"
and "Who owns this snapshot" sections.
packages/acp/src/checkpoint.ts does not change. Which _meta keys name a turn
is this repository's decision, not the runtime's, and the patch never made it
one.
Not this issue
- Which adapter emits a token. Retain provider checkpoint tokens for workflow Agent Prompts #622 owns the adapter response contract and
the exact version pins. This patch is transport only: it carries whatever the
adapter sent and recognizes nothing in it. - Upgrading ACPX. Per
PROVENANCE.md, upgrading the snapshot and patching
it are separate changes and are not done together.
Context
- Patch and rationale:
packages/acp/vendor/acpx/PROVENANCE.md - Seam regression:
scripts/tests/acpx-vendor.test.ts(AV3–AV5) - Behavior regression:
packages/acp/tests/acpx-checkpoint-meta.test.ts(TC1–TC4) - Sibling exit gate: Remove the vendored ACPX transient-environment patch after a released scoped seam passes continuity #566
Released-candidate assessment (2026-10-28)
Upstream ACPX 0.15.0 released opaque prompt-response metadata transport. The latest inspected candidate, 0.21.1, exposes _meta on its runtime result, carries the response's own metadata through runPromptTurn, and forwards it in runtime settlement.
This is a concrete candidate for retiring the local transport patch, but it does not pass the existing negative cases merely by exposing the field. Upstream also permits and forwards _meta on cancelled results. Its timeout recovery can retain metadata when the exact RPC response settles during the update-drain window; it does not synthesize that metadata from conversation updates. Classify that response-backed recovery separately from a fallback that never received a response. Run the existing cancellation, absence, request-isolation and real-child cases, preserving XMD's accepted checkpoint-retention behavior. Any required boundary adaptation must be explicit.
No XMD integration test or distributed build was run as part of this release/source assessment. Coordinate release adoption with #566, preserve the unresolved first-turn materialization contract from #648, and keep adapter retirement under #636 separate. Two newly released runtime capabilities do not establish that the entire three-patch snapshot can be deleted.
Activity
📝 Point the checkpoint-metadata patch at its own exit gate
✨ Retain which provider turn each workflow Prompt was (#628)