* test(amr): verify prerelease runtime identity and Vela contracts * docs(amr): bind continuation evidence to final upstream commit * docs(amr): track host cancellation integration dependency * docs(amr): record final Write test-only dependency head
10 KiB
AMR prerelease runtime contract validation
This is the regression entry point for OPEND-2886. It distinguishes package identity, the Vela/ACP bridge contract, and actual OpenCode execution. Passing one does not establish the others.
Evidence boundaries
| Check | Real component | Synthetic component | What it establishes |
|---|---|---|---|
tools-pack verify-runtime |
Selected package's Vela and OpenCode executables | None | Exact versions, byte hashes, app/version/platform agreement with the supplied release manifest |
E2E tests/amr/vela-contract.test.ts |
Pinned Vela binary and current daemon ACP consumer | OpenCode HTTP/SSE server, Link model catalog | Complete/incomplete handling, unknown-tool evidence, cancellation, conservative failure |
scripts/vela-contract.ts |
Explicitly selected Vela binary | Same local HTTP/SSE fixtures | Cross-version error/capability/continuation and Write abort ordering |
| Full package acceptance | Installed app, Vela, OpenCode, daemon, provider | Only deliberate fault injection | Actual compaction, durable session state, side effects, UI/CLI, telemetry and release behavior |
The bridge fixtures never call a model provider. The reported model context
budget is 128,000 because Vela 0.0.35 rejects smaller catalog budgets. Synthetic
SSE compaction events are not evidence of forcing the real compaction loop.
Reports set realCompactionRuns: 0 and packageAcceptance: not-performed.
The POSIX fixture launcher runs on macOS/Linux; Windows bridge acceptance is
still pending. The identity command supports matching macOS, Windows and Linux
release manifests, but only macOS arm64 has been exercised against a real package.
Verify package identity
Obtain the immutable platform manifest and payload/installer from the selected release. Verify the archive against its published SHA-256 before extraction or installation. Select the actual package's Resources directory, not a source checkout or a developer CLI path. Daemon data directory handling follows the root contract.
corepack pnpm tools-pack verify-runtime \
--resources "$PACKAGE_RESOURCES" \
--manifest "$RELEASE_PLATFORM_MANIFEST" \
--expected-vela "$REVIEWED_VELA_VERSION" \
--expected-opencode "$REVIEWED_OPENCODE_VERSION" \
--json
The command reads open-design-config.json, then executes only the Vela and
OpenCode paths below open-design/bin. Missing companions, paths escaping the
package, version/platform mismatches and binaries changing during verification
fail the command. No PATH fallback is used. Expected binary versions must come
from the reviewed Vela package pin and its published runtime provenance and
expected self-reported OpenCode version, independently of the binary being checked. Current release manifests do not contain those
binary versions/hashes; the command records them alongside the manifest hash,
not as values purportedly supplied by that manifest.
Run bridge contracts
The normal E2E suite resolves the exact optional dependency owned by
tools/pack/package.json, without using a developer PATH binary:
corepack pnpm --filter @open-design/e2e test tests/amr/vela-contract.test.ts
Both ci.yml's e2e_vitest lane and release-prerelease-tests.yml already run
the full E2E Vitest suite. The planner selects e2e_vitest for a Vela dependency
bump touching tools/pack/package.json and pnpm-lock.yaml; no routing omission
or new workflow is introduced. The legacy error assertion intentionally names
the current 0.0.35 contract: a changed protocol requires a reviewed update.
Use the standalone entry point to compare package bytes with a candidate build:
corepack pnpm -C e2e exec tsx scripts/vela-contract.ts \
--binary "$EXACT_VELA_BINARY" \
--expected-version "$EXACT_VELA_VERSION" \
--out "$CONTRACT_REPORT_DIR" \
--require-write-abort --require-continuation
The two target flags are independent while OPEND-2884 and OPEND-2885 are separate branches. Omit a flag only when recording a baseline or testing the other isolated fix; the report records which requirements were enabled. For the combined candidate, enable both. Do not publish a dependency bump based on a baseline-only pass.
Each scenario records the raw ACP transcript and a local OpenCode request/response
ledger. --require-write-abort requires exactly one abort response to finish
before the ACP terminal response (monotonic timestamps), not cleanup after the
fact. Both the outstanding Write and completed-Write/missing-terminal scenarios
must remain unsuccessful and must submit only one prompt.
--require-continuation requires the negotiated
com.open-design.nativeSessionContinue v1 capability and structured
OPENCODE_COMPACTION_CONTINUATION_INCOMPLETE error, with explicit committed-tool
evidence. It starts a fresh Vela process, loads the same durable session ID and
uses _session/continue with the original cursor. There must be no new session
or prompt replay, one continue request and one terminal response. A parallel
outstanding tool must report toolResultsCommitted: false. These are bridge
contract checks; the fixture does not prove OpenCode's persisted cursor validation
or real tool execution. OPEND-2884 owns those production tests and the host's
cancellation/attempt-limit policy.
Verified baseline, 2026-09-09
Host: macOS Darwin 24.6.0, arm64, Node 24.16.0. OpenDesign test source baseline:
d54f5cf07d35261dce3c8c2e7fc187c6cc9efb86.
The immutable 0.22.1-prerelease.13 macOS manifest
identifies app commit ee76e93c75c5235bbb7a3464e832cff987d80c91. Its downloaded
payload passed the published archive checksum. Selected executables were
extracted from that verified payload; the full app was not installed/launched.
| Artifact | Version | SHA-256 |
|---|---|---|
| macOS arm64 payload | 0.22.1-prerelease.13 | 6b6e0ac16e4f3ed4c54011ea771f73f81305c7a51d24b808dde6aa8732a9bdb7 |
| Package Vela | 0.0.35 | 5a2449f368b95cb15b29694906b4abd1abf7fe4afd71bde75f05db48708a323c |
| Package OpenCode | 0.0.0--202609020336 | 30fc9f9f687460db9cb340df183b926973df554fb7f98aea6a43b5e6e765d704 |
The Vela 0.0.35 runtime manifest
records powerformer/opencode@powerformer-v1.18.1, commit
595fa8ec01bdec67546c3c0f79744dce598f85cf. Its darwin-arm64 member hash
c1dec4a2f722191c0e5c31c0414c348e3ef4d9a68e844194a549ca536d148f9e
matches the npm companion exactly. The app package re-signs that companion.
After removing signatures from copies only, the npm and package binaries
have identical bytes except the Mach-O __LINKEDIT.vmsize field. Normalizing
that field makes them byte-identical. The repository's fallback OpenCode lock
(anomalyco/opencode 1.15.10) is therefore not the provenance of this release.
The fork tag and self-reported --version string are separate identifiers.
- Package Vela: complete continuation, incomplete protection, cancellation and unknown-error checks passed. Both Write failure/abort requirements failed, the native continuation capability is absent, and the new structured unknown-tool evidence requirement fails. This is an expected RED against the target contract, not a passed package acceptance.
- Vela PR #1951, commit
43f35e29e50dad790d2c697f127c9c137ce05abd: locally built0.0.1-test, SHA-2566cf45efc55509138bd415cc6ad818532bc713ec1c5a58c3e1fc931aee33c0ca3, passed all seven baseline/Write scenarios, including both Write abort-order checks. This is an unpublished development build, not an upgrade target. The final PR head28b5733f5d1b558d8966e76a094b65b74ef95e7eadds only ACP timeout/cancellation fixture tests; production source is unchanged from the measured commit above. The seven-scenario result remains tied to that measured binary, rather than claiming a new combined-package validation. The host cancellation notification companion is OpenDesign #7959, commit65fa5dced1; it has not been included in this PR's combined-package acceptance. - Vela PR #1952, commit
1acdf79feaf88837763eb3afeb291421603ab76f: locally built0.0.1-test, SHA-256487a9cb1882aa0cc9badb170a51ecf7a86f14c40e0de19694ac57e665cf95cc1, passed all eight continuation-profile scenarios. Related production changes are OpenDesign #7958 and OpenCode #16. This is still an unpublished, separate candidate; a combined version needs verification.
Remaining release acceptance
The foundation does not finish OPEND-2886. Record each remaining item separately:
- Review and integrate the final OPEND-2884/2885 PRs, publish through the normal authorized release process, and pin the actual published Vela/OpenCode versions. Run both target flags against the same candidate and update the daemon consumer tests for the negotiated protocol. Do not invent an unreleased npm version.
- Build/install the real prerelease app and repeat identity verification. Run actual compaction 100 consecutive times at a fixed, recorded provider/context configuration. Retain machine, app/Vela/OpenCode versions, run IDs, final model steps, durable-session identity, actual tool side-effect counts, cancellation, unknown-state rejection and continuation attempt-limit evidence.
- Separately test Write completion, stall, missing completion, cancellation and daemon reconnect. Establish process quiescence and absence of duplicate writes; bridge error return alone is insufficient.
- Reconcile the real run cohort against existing PostHog project 420348
run_created,run_finished,run_retry_finishedand recovery fields. Filter prerelease by app version/channel:env=productiondoes not mean stable. Keep the run denominator and mature unfinished-run policy unchanged. Synthetic contract invocations are not product runs and have no PostHog run IDs. - Inspect current prerelease alert coverage and sample real runs after release.
Neither alert inspection nor post-release sampling has been performed by these
local contracts. The four original incident run IDs remain evidence, not new
acceptance runs:
6aa26b33-968a-4d5e-846a-2dbad009a3dc,9ff005b6-f1d1-489f-b102-ac8af75fc078,a5a5afc5-c37d-400d-a402-a68026a8718b, and500540ac-6b4d-4c5f-83b8-23e41e27a17b.