test(server): specify OpenCode lifecycle reconciliation - #1
Closed
teamleaderleo wants to merge 28 commits into
Closed
test(server): specify OpenCode lifecycle reconciliation#1teamleaderleo wants to merge 28 commits into
teamleaderleo wants to merge 28 commits into
Conversation
Owner
Author
Legacy test-carrier closeoutState: Exact test-only head: Fieldwork review pingdotgg#234 has completed with this disposition:
Branch-specific V2 receipts:
This PR remains valuable as historical regression evidence and has no product merge path. Close after evidence transfer. Public upstream interaction: none. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Purpose
Provide executable, test-only contracts for the T3/OpenCode lifecycle boundaries identified by Fieldwork campaign
teamleaderleo/fieldwork#71.Canonical dossier:
teamleaderleo/fieldwork#75Completed independent disposition:
teamleaderleo/fieldwork#178Current actual review queue:
teamleaderleo/fieldwork#213Current scope
This branch remains test-only. Current head:
cae5d869f3ca441b4117197e34796a7d8b9466afNo production implementation is committed here.
The branch contains deterministic controls for:
stopSessionoverlap while cancellation owns a turn;MessageAbortedErrorordering;skillapproval;Independent disposition
A — local interrupt ownership
Accepted only with a generation fence. Any production slice must key cancellation ownership to:
It must emit exactly one canonical
turn.completedwithstate: interrupted, because the current ingestion path does not close persisted lifecycle state fromturn.abortedalone.B — pending interactive requests
May proceed separately after truthful expiry semantics. Interruption or teardown must not be represented as a user decline or empty submitted answer. Expiry needs machine-readable origin/reason data that downstream projection can distinguish from user-authored input.
C — restart and delayed-event correlation
Held. Session status and timing do not prove exact old-run outcome. Do not invent caller-generated OpenCode message IDs or infer affinity from busy/idle timing.
D — reaper ordering
Held. A second read is not atomic authorization for an external provider stop. A real serialization, lease/revision, or conditional-stop boundary is required.
Execution state
The unpatched exact-head Fieldwork workflow executed and failed on the intended current assertions, including session-generation replacement and canonical interrupted settlement.
The first candidate A/B/composed workflows did not reach tests: their stored patch carriers had malformed hunk metadata and stopped at
git apply. Those runs are harness failures, not candidate behavior evidence.Fieldwork has repaired the three carriers and added integrity validation with negative controls so malformed unified diffs fail before target jobs. Repaired exact runs are queued. No candidate green claim is made.
Focused test surfaces
vp test run \ apps/server/src/provider/Layers/OpenCodeAdapter.restart.test.ts \ apps/server/src/provider/Layers/OpenCodeAdapter.interrupt.test.ts \ apps/server/src/provider/Layers/OpenCodeAdapter.interrupt-projection.test.ts \ apps/server/src/provider/Layers/OpenCodeAdapter.interrupt-generation.test.ts \ apps/server/src/provider/Layers/OpenCodeAdapter.interrupt-error.test.ts \ apps/server/src/provider/Layers/OpenCodeAdapter.interrupt-error-ordering.test.ts \ apps/server/src/provider/Layers/OpenCodeAdapter.interrupt-owner-cancellation.test.ts \ apps/server/src/provider/Layers/OpenCodeAdapter.pending-request.test.ts \ apps/server/src/provider/Layers/OpenCodeAdapter.pending-request-stop.test.ts \ apps/server/src/provider/Layers/OpenCodeAdapter.pending-request-completion.test.ts \ apps/server/src/provider/Layers/ProviderSessionReaper.race.test.tsCandidate gates additionally include the existing OpenCode adapter suite, ProviderRuntimeIngestion compatibility, server typecheck, and complete-diff review.
Boundaries
Prepared under Fieldwork campaign pingdotgg#71.