Skip to content

fix(playback): join stream failures to their release and request - #236

Merged
drondeseries merged 4 commits into
mainfrom
fix/playback-stream-failure-correlation
Oct 6, 2026
Merged

drondeseries merged 4 commits into
mainfrom
fix/playback-stream-failure-correlation

Conversation

@drondeseries

Copy link
Copy Markdown
Collaborator

Problem

Related issue: N/A
Validation tasks: none

When a virtual direct-play stream fails, the failure names the session but not the release. The virtual resolve timing line carries no request id, so it cannot join to its start or its provider fetch; the terminal virtual_stream_unavailable names the pinned candidate even after a heal or rotation served a sibling. Diagnosing a slow or failed first play takes timestamp forensics across three unjoined sources.

Approach

Thread the start's edge request id into the resolve-timing line and log pinned vs delivered candidate identity on the proxy verdict and the terminal transport failure. Recovery behavior is unchanged: dispositions are log values only and no branch conditions moved. The delivered identity is passed explicitly (empty when nothing was served) because the catalog row still names the pin after a rotation.

Validation

  • go build ./... passes.
  • gofmt -l internal/ cmd/ prints nothing; git diff --check clean.
  • go vet on touched packages passes; make lint-changed reports 0 issues.
  • Focused go test on the touched package passes (failure/cancel logging, proxy disposition and verdict, resolve timing, virtual direct-play serve).
  • Full internal/api/handlers suite not run to completion (exceeds local timeout; pre-existing large package).
  • Web pnpm run lint passes with pre-existing warnings only; pnpm run format:check passes.
  • Pre-push gate passed on push.
  • Adversarial review by oracle: one blocking finding (pinned vs delivered attribution) fixed with regression coverage; re-review READY.

Risks

Logs only. One extra WARN per failed first proxy attempt even when a later heal or rotation recovers, so verdict warnings must not be counted as final playback failures. Client-canceled paths stay at DEBUG and remain invisible at the default opslog capture level.

Checklist

  • I read and can explain the complete diff.
  • This pull request addresses one concern.

AI Disclosure

  • Harness: OpenCode
  • Tool(s): OpenCode
  • Model(s): Workhorse (Gemini 3.8+ Tiered with Failover) via omniroute
  • Involvement: AI-assisted
  • Adversarial review: oracle production-readiness review of the branch; one blocking finding on pinned-vs-delivered candidate attribution, fixed with A-to-B rotation regression plus narrowed disposition and verdict comments; re-review returned READY

@drondeseries
drondeseries merged commit 306b35e into main Oct 6, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant