feat: derive a forced-narrative track from other languages' forced tracks #18

Open
claude wants to merge 1 commit from feat/derive-forced-from-dubs into main
Collaborator

Streaming services publish forced-narrative tracks per language and the set is
rarely complete. Pluribus S01 is the case that prompted this: forced tracks exist
for German and for both Spanish variants, and none for English — even though
English viewers are precisely the ones who cannot follow its Quechua, French and
Spanish dialogue. The omission is structural rather than accidental. Those tracks
exist largely to translate on-screen text, and this programme's signage is already
in English.

The judgement is still recoverable. A forced track's timings record where its
audience could not follow the audio, so the tracks that were published can select
cues from the target language's own SDH. Nothing is translated or composed: every
delivered line is the service's own English, and the foreign tracks decide
selection only.

Why two kinds of marking track

No single dub maps onto another language's need, so the script takes two roles:

  • --forced — a dub in a language the programme does not use (German here). It
    marks what that dub left un-dubbed. But a dub may render some foreign dialogue
    into its own language, and what it translated it does not mark: this one covers
    the French and Quechua well and barely touches E09's Spanish.
  • --contrast — a dub in a language the programme does use (Spanish here). It
    omits that language's dialogue entirely, and marks instead the target-language
    lines preserved inside those bilingual scenes.

A cue marked by a contrast track but not a forced one is a target-language line and
is dropped. A cue marked by both is foreign to every audience and is kept. The
disagreement between the two is the signal.

Why the SDH is still required

Timing intersection alone sweeps in everything other audiences need and this one
does not. In Pluribus E01 that is all of it — BARNES & NOBLE BUCHHÄNDLER,
MILITÄRPOLIZEI, DAS WEISSE HAUS — signage translated for German viewers because
the props are in English. A television playing Golden Girls in E03 and R.E.M.
lyrics in E07 behave identically.

So a scene is accepted only where the target SDH carries a language marker inside
it. The SDH is the only track that speaks for the target viewer.

Verification

ast.parse and the --help gate pass across lib/*.py. Run against all nine
episodes of Pluribus S01:

Result
E01, E05 0 cues negative controls — no foreign dialogue
E03 0 lone Sanskrit word, no translation published in any track
E02 8 montage untranslated by design
E04 2
E06 43 French casino, read against the video
E07 44 Spanish, R.E.M. lyrics excluded
E08 25 Spanish hospital scene
E09 55 Quechua opening and Carol's Spanish, read line by line

The negative controls are the load-bearing test. Two plausible-looking earlier
versions returned three and six cues against them.

One case is worth recording because it is the one most likely to be got wrong: in
E09 a Spanish-speaking character delivers three rehearsed English lines. The
Spanish tracks mark them, the German does not, and they are correctly excluded.
Assigning cues by who is speaking rather than by what is spoken inverts it.

Four hazard entries added to the README, each with the counter-example that fools
it, per AGENTS.md.

🤖 Generated with Claude Code

Streaming services publish forced-narrative tracks per language and the set is rarely complete. Pluribus S01 is the case that prompted this: forced tracks exist for German and for both Spanish variants, and **none for English** — even though English viewers are precisely the ones who cannot follow its Quechua, French and Spanish dialogue. The omission is structural rather than accidental. Those tracks exist largely to translate on-screen text, and this programme's signage is already in English. The judgement is still recoverable. A forced track's **timings** record where its audience could not follow the audio, so the tracks that were published can select cues from the target language's own SDH. Nothing is translated or composed: every delivered line is the service's own English, and the foreign tracks decide selection only. ## Why two kinds of marking track No single dub maps onto another language's need, so the script takes two roles: - `--forced` — a dub in a language the programme does **not** use (German here). It marks what that dub left un-dubbed. But a dub may render some foreign dialogue into its own language, and what it translated it does not mark: this one covers the French and Quechua well and barely touches E09's Spanish. - `--contrast` — a dub in a language the programme **does** use (Spanish here). It omits that language's dialogue entirely, and marks instead the *target-language* lines preserved inside those bilingual scenes. A cue marked by a contrast track but not a forced one is a target-language line and is dropped. A cue marked by both is foreign to every audience and is kept. The disagreement between the two is the signal. ## Why the SDH is still required Timing intersection alone sweeps in everything other audiences need and this one does not. In Pluribus E01 that is **all** of it — `BARNES & NOBLE BUCHHÄNDLER`, `MILITÄRPOLIZEI`, `DAS WEISSE HAUS` — signage translated for German viewers because the props are in English. A television playing Golden Girls in E03 and R.E.M. lyrics in E07 behave identically. So a scene is accepted only where the target SDH carries a language marker inside it. The SDH is the only track that speaks for the target viewer. ## Verification `ast.parse` and the `--help` gate pass across `lib/*.py`. Run against all nine episodes of Pluribus S01: | | Result | | |---|---|---| | E01, E05 | **0 cues** | negative controls — no foreign dialogue | | E03 | 0 | lone Sanskrit word, no translation published in any track | | E02 | 8 | montage untranslated by design | | E04 | 2 | | | E06 | 43 | French casino, read against the video | | E07 | 44 | Spanish, R.E.M. lyrics excluded | | E08 | 25 | Spanish hospital scene | | E09 | 55 | Quechua opening and Carol's Spanish, read line by line | The negative controls are the load-bearing test. Two plausible-looking earlier versions returned three and six cues against them. One case is worth recording because it is the one most likely to be got wrong: in E09 a Spanish-speaking character delivers three rehearsed **English** lines. The Spanish tracks mark them, the German does not, and they are correctly excluded. Assigning cues by who is speaking rather than by what is spoken inverts it. Four hazard entries added to the README, each with the counter-example that fools it, per `AGENTS.md`. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Services publish forced-narrative tracks per language and the set is
rarely complete. A programme whose on-screen text is already in English
gets forced tracks for German and Spanish -- largely to translate that
signage -- and none for English, though English viewers are the ones who
cannot follow its Quechua, French and Spanish dialogue.

The judgement survives in the tracks that were published, because a
forced track's timings record where its audience could not follow the
audio. Read those timings, select from the target language's own SDH,
and the missing track can be reconstructed without translating or
composing a single line.

Two kinds of marking track are needed because no one dub maps onto
another language's need. --forced takes a dub in a language the
programme does not use; it marks what that dub left alone, but not what
it translated away. --contrast takes a dub in a language the programme
does use; it omits that language's dialogue while marking the
target-language lines preserved inside those scenes. A cue marked by a
contrast track but not a forced one is a target-language line and is
dropped.

Scene location alone would also sweep in material other audiences need
and this one does not -- signage, a broadcast inside a scene, song
lyrics -- so a scene is accepted only where the target SDH carries a
language marker, that being the only track speaking for the target
viewer.

Verified against Pluribus S01, nine episodes: the two episodes with no
foreign dialogue return empty, and the seven with it reproduce a result
checked line by line against the video.
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin feat/derive-forced-from-dubs:feat/derive-forced-from-dubs
git switch feat/derive-forced-from-dubs

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch main
git merge --no-ff feat/derive-forced-from-dubs
git switch feat/derive-forced-from-dubs
git rebase main
git switch main
git merge --ff-only feat/derive-forced-from-dubs
git switch feat/derive-forced-from-dubs
git rebase main
git switch main
git merge --no-ff feat/derive-forced-from-dubs
git switch main
git merge --squash feat/derive-forced-from-dubs
git switch main
git merge --ff-only feat/derive-forced-from-dubs
git switch main
git merge feat/derive-forced-from-dubs
git push origin main
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
nugget/media-import-tooling!18
No description provided.