Skip to content

Generated study media in the Library (council-gated video MVI) - #3

Merged
zengdaniel7 merged 3 commits into
mainfrom
feature/generated-media-library
Aug 13, 2026
Merged

Generated study media in the Library (council-gated video MVI)#3
zengdaniel7 merged 3 commits into
mainfrom
feature/generated-media-library

Conversation

@zengdaniel7

Copy link
Copy Markdown
Owner

What this is

The first council-approved slice of NotebookLM media integration: a new AI aids tab on the Library page, fed by a tracked generated-media.json manifest, with the 9:24 whole-course video overview as the first item.

Council architecture (2026-08-12 Frontier run)

  • Binaries never enter git. Video/audio live in a local media folder (CCA_STUDIO_MEDIA_DIR, default ~/ccaf-media); the repo tracks only text: manifest, transcript, VTT captions, thumbnail, notice.
  • Transcript is a hard gate. The video ships reviewState: pending — the backend refuses to serve it and the UI shows an honest 'Review pending' card until the learner's listen-through confirms the transcript. Whisper transcript + captions are already in and lint-clean (all three known corrections are taught correctly in the recording).
  • Only manifest-known ids are servable, with SHA-256 verification (cached by mtime+size) — a missing or corrupt file degrades to a placeholder, never a crash.
  • Truth labeling everywhere: 'AI-generated study aid… if it conflicts with the lesson notes, the notes win.' Exam facts stay 'reported'.
  • Media is explicitly excluded from the MIT grant (GENERATED-MEDIA-NOTICE.md); no public redistribution of binaries until a documented rights check.

Tests

  • 10 new studio-server tests (serve/deny matrix, checksum, token, SPA shadowing, manifest↔assets agreement)
  • Library page test: labels, no player for unreviewed items, transcript readable without media
  • Full local runs: 65 pytest + 9 unittest green; frontend/tsc validated by CI (no local node)

Out of scope (council stop-line)

22:41 audio deep-dive, flashcard promotion (50 cards verified separately: 26 pass / 21 rewrite / 3 reject), mind-map UI, slide decks, per-unit media.

🤖 Generated with Claude Code

D Z and others added 3 commits August 12, 2026 23:39
NotebookLM-generated study aids join the Study Studio behind the
2026-08-12 council architecture: a manifest-driven 'AI aids' Library tab,
binaries kept outside git in a local media folder, and a hard transcript
gate before anything plays.

- studio/src/content/generated-media.json: tracked manifest (id, sha256,
  source commit 890b294, reviewState) — the only source of servable ids
- backend: GET /api/media/status (presence + checksum state) and
  GET /media/{id}, which serves only manifest-known, reviewed,
  checksum-clean files from the local media dir (CCA_STUDIO_MEDIA_DIR,
  default ~/ccaf-media); SPA catch-all now excludes media/
- Library: third tab with provenance notice, truth label ('the notes
  win'), review-pending and media-not-installed states, captions track,
  and an always-readable transcript
- assets: thumbnail, WebVTT captions, and a hand-corrected Whisper
  transcript for the 9:24 video overview (reviewState stays 'pending'
  until the learner's first listen-through confirms it)
- GENERATED-MEDIA-NOTICE.md: provenance + license exclusion (media is
  not covered by the MIT grant; no public redistribution until a
  documented rights check)
- tests: 10 new server tests (unknown id, pending, missing, corrupt,
  token, SPA shadowing, manifest-asset agreement); Library test covers
  the honest labels and never-play-unreviewed rule

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- manifest items without a full 64-hex sha256 are rejected outright
  (fail closed instead of skipping verification)
- resolved media paths must stay inside the media directory (symlink
  confinement), and the checksum TOCTOU trust boundary is documented
- pending-state copy now says what actually happens: the player is off
  and the transcript is shown precisely so human review can happen
- GENERATED-MEDIA-NOTICE points at the real manifest path
- lint-exam-facts now also scans .vtt captions and generated-media.json
- provenance text capped at 65ch per the dyslexia reading standard

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@zengdaniel7
zengdaniel7 merged commit a3559dd into main Aug 13, 2026
2 checks passed
@zengdaniel7
zengdaniel7 deleted the feature/generated-media-library branch August 13, 2026 06:53
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