Goal
Make local cancellation boundaries explicit in nested LLM stream diagnostics so #721-class local aborts can be distinguished from unknown iterator failures when abort provenance exists.
Scope
In scope:
- Add a stream diagnostic hook such as
recordAbortState / abort provenance capture.
- Merge existing assistant abort diagnostics or interrupt metadata into
llm_trace.stream.abort.
- Classify
local_abort as high confidence only when the abort signal is aborted and provenance is present.
- Preserve watchdog precedence when watchdog and abort evidence overlap.
Out of scope:
- Changing retry behavior.
- Changing user-facing abort copy.
- Treating a bare aborted signal as local abort without provenance.
Relevant files or context
Related work:
Likely files:
packages/opencode/src/session/llm.ts
packages/opencode/src/session/processor.ts
packages/opencode/src/session/llm-trace/types.ts
packages/opencode/src/session/llm-trace/recorder.ts
packages/opencode/src/session/llm-trace/stream-diagnostics.ts
packages/opencode/test/session/llm-trace.test.ts
packages/opencode/test/session/llm.test.ts
Current gap verified during PR #771 review: recordIteratorError passes abortProvenancePresent: false, while the classifier already supports local_abort when provenance is present.
Verification
- Add local abort + iterator error coverage: provenance present =>
boundary: \"local_abort\", confidence: \"high\".
- Add watchdog/abort overlap coverage: watchdog evidence still wins.
- Add missing provenance coverage: aborted signal + iterator error + no provenance remains
unknown / low.
- Run targeted session trace tests and typecheck.
Execution mode
Investigate and propose a plan first — the agent must post the plan as an issue comment and wait for an explicit "approved" comment before writing code or opening a PR.
Goal
Make local cancellation boundaries explicit in nested LLM stream diagnostics so #721-class local aborts can be distinguished from unknown iterator failures when abort provenance exists.
Scope
In scope:
recordAbortState/ abort provenance capture.llm_trace.stream.abort.local_abortas high confidence only when the abort signal is aborted and provenance is present.Out of scope:
Relevant files or context
Related work:
Likely files:
packages/opencode/src/session/llm.tspackages/opencode/src/session/processor.tspackages/opencode/src/session/llm-trace/types.tspackages/opencode/src/session/llm-trace/recorder.tspackages/opencode/src/session/llm-trace/stream-diagnostics.tspackages/opencode/test/session/llm-trace.test.tspackages/opencode/test/session/llm.test.tsCurrent gap verified during PR #771 review:
recordIteratorErrorpassesabortProvenancePresent: false, while the classifier already supportslocal_abortwhen provenance is present.Verification
boundary: \"local_abort\",confidence: \"high\".unknown/low.Execution mode
Investigate and propose a plan first — the agent must post the plan as an issue comment and wait for an explicit "approved" comment before writing code or opening a PR.