Skip to content

subtitle-resolution: expose the retained contiguous determination span (or a first-successor proof) under the active seek generation #276

Description

@cmcpherson274

What should the engine do?

Add a same-generation positive claim about retained subtitle determination — either

  1. a field on the existing [SubtitleResolution] line (e.g. retainedFrom=) reporting an upper bound on the session store's contiguous determined-from point after the store and the post-seek drainer have been reconciled — i.e. a value that may legitimately stay ≤ 0 across a seek when the store genuinely retains the from-start run; or
  2. an equivalent first-successor proof: a fenced statement that the earliest undecoded display set at-or-after the covered floor sits at PTS X (for our fixture, 88.380), with the floor itself reported.

Either form would ride the same emit-on-transition philosophy the statement already follows (a line when the reconciled floor changes, plus the existing tick). The fence semantics you shipped in #250 (stamped post-reposition, requesting generation) are exactly right as-is — this is purely an additional claim, not a change to coveredFrom. For our gate's purposes, renaming or clamping coveredFrom, or inferring from packet-store lifetime, wouldn't help: the emitted statement itself has to carry the claim.

Motivating media or use case

The #250 subtitle-resolution statement has been running in our combined seek-stopwatch harness since 6.0.2, and one truth class turns out to be structurally unprovable from the current fields: "empty because nothing was ever authored before this point."

On a PGS track whose first display set sits at 88.380 s, a seek to 30 s renders (correctly) nothing. To adjudicate that as determined emptiness rather than a dead pipeline, our gate needs coverage reaching back to track start — the earliest point that could change the answer. The statement's coveredFrom reports the post-reset drain window (≈ target − 15 after any far seek), and per your close it is an unclamped upper bound on where the contiguous decoded run begins — so a post-seek value of ~15 can neither affirm nor refute track-start coverage. The pre-seek line (coveredFrom=-15.00 at load) does carry the needed bound, but under the previous seekGen — and cross-generation combination is exactly what the fence exists to forbid.

Net: the state is rendered correctly, the pipeline is live (fenced via=prefetch lines resolve through the evaluated time), and the claim we need is one the statement cannot currently make. Our adjudicator has to score the target "apparatus-inexpressible" rather than pass or fail it.

Area

Other

Host app / integration context

(tvOS Jellyfin client) — external QA/conformance harness, same integration as #240/#250. tvOS 26.5, Apple TV 4K 3rd gen, wired.

Would you be willing to open a PR?

Maybe, with guidance

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions