Skip to content

Raw/derived transcript tooling + private/unlisted transcription policy#17

Merged
hollygrimm merged 2 commits into
mainfrom
transcript-raw-derived
Jul 18, 2026
Merged

Raw/derived transcript tooling + private/unlisted transcription policy#17
hollygrimm merged 2 commits into
mainfrom
transcript-raw-derived

Conversation

@hollygrimm

Copy link
Copy Markdown
Collaborator

Tooling side of ActiveInferenceJournal#15 (raw vs derived transcript design), plus the private/unlisted policy.

Changes

apply_speaker_names.py rewritten — derives transcript.txt from the immutable raw transcript.json + parts[].speakers instead of substituting labels in-place:

  • raw json is never touched; names live only in metadata, so mappings stay reversible (two labels mapped to the same person remain distinguishable)
  • idempotent; dry-run by default; unmapped labels stay SPEAKER_NN and are reported
  • caption/prose text without speaker structure is salvaged to captions/youtube_captions.txt before replacement
  • legacy AssemblyAI-shaped jsons are skipped (frozen)
  • rendering is byte-compatible with TranscriptionService.output_text (verified against pre-reorg .simple.txt outputs)

recover_whisperx.py (new) — audits/extracts pre-reorg WhisperX outputs from journal git history (commit 9da9266, 590 whole-video pairs). Its audit showed the current journal tree already carries the raw jsons, so extraction is a backstop; kept for verification.

Private/unlisted policytranscribe_worklist.py / transcription_status.py never queue private/unlisted content: ids in private_videos.json are dropped, items with no public video report as excluded, not pending.

JOURNAL_SCHEMA.md — documents the raw-vs-derived design and provenance-by-file-shape (mirrored to the journal's SCHEMA.md in the journal PR).

Tests

24 script tests pass (new rendering/salvage/immutability coverage replaces the old in-place-API test file). Full suite: 466 passed; the 3 RAG real extractor integration failures are pre-existing (verified by stashing).

🤖 Generated with Claude Code

https://claude.ai/code/session_01UoVcFP7bBu92mK6RqM5nPG

hollygrimm and others added 2 commits July 18, 2026 12:16
Policy: private/unlisted content gets no transcription. Video ids
registered in the journal's private_videos.json are dropped from the
worklist, items left with no public video are reported as excluded
(not pending), and transcription_status buckets them separately from
genuinely missing transcripts.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UoVcFP7bBu92mK6RqM5nPG
apply_speaker_names.py rewritten: instead of substituting labels
in-place, it derives transcript.txt from the immutable raw
transcript.json + parts[].speakers (idempotent, remappable; caption
text salvaged to captions/youtube_captions.txt before replacement;
legacy AssemblyAI-shaped jsons skipped). Byte-compatible with
TranscriptionService.output_text. The old-API test file is replaced
by tests for the new rendering/salvage behavior.

recover_whisperx.py: audit/extraction tool for pre-reorg WhisperX
outputs in journal git history (dry-run default) — verification
showed the current tree already carries the raw jsons, so its apply
path is a backstop.

JOURNAL_SCHEMA.md: document the raw-vs-derived transcript design and
provenance-by-file-shape (mirrored to the journal's SCHEMA.md).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UoVcFP7bBu92mK6RqM5nPG
@hollygrimm
hollygrimm merged commit 4a80702 into main Jul 18, 2026
0 of 2 checks passed
hollygrimm added a commit that referenced this pull request Jul 18, 2026
Meant to land with #17: the file tests apply_to_item, removed in the
apply_speaker_names.py rewrite, so its import breaks collection.
Equivalent coverage lives in test_apply_speaker_names.py.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UoVcFP7bBu92mK6RqM5nPG
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