conductor(video_analysis_campaign): Initialize umbrella track + 12 child + 1 synthesis scaffold

Pass 1 of 3 user research campaign (12 videos, 5 clusters).
- Umbrella: spec.md (full design), plan.md, metadata.json, state.toml, README.md
- Multi-pass framing (Pass 2 de-obfuscation, Pass 3 projection)
- Lossless preservation directive (1000-10000 LOC per video report target)
- Tooling prerequisites: yt-dlp, cv2, imagehash install in repo venv
- 5 reusable scripts to live in scripts/video_analysis/ (TDD)
- 12 children + 1 synthesis = 14 folders total
This commit is contained in:
ed
2026-06-21 15:02:44 -04:00
parent aca84b881b
commit b184250b78
5 changed files with 881 additions and 0 deletions
@@ -0,0 +1,231 @@
{
"track_id": "video_analysis_campaign_20260621",
"name": "Video Analysis Campaign (12 videos, 5 clusters, 3 passes)",
"created": "2026-06-21",
"status": "spec_approved",
"blocked_by": [],
"blocks": [
"video_analysis_synthesis_20260621"
],
"priority": "A",
"rationale": "User-blocking research campaign to extract foundational knowledge from 12 curated YouTube videos on AI inference, ML, biological learning, and neuro-compute. The artifacts feed future Pass 2 (de-obfuscation via user's math encoding) and Pass 3 (projection to applied domain). Lossless preservation is the design priority. Research-only — no src/ changes, no new pyproject deps (all tools via subprocess or existing venv).",
"type": "multi-track research campaign (1 umbrella + 12 child tracks + 1 synthesis = 14 folders total)",
"domain": "meta-tooling (research artifacts; no manual_slop src/ changes)",
"scope": {
"new_folders": [
"conductor/tracks/video_analysis_campaign_20260621/",
"conductor/tracks/video_analysis_cs229_building_llms_20260621/",
"conductor/tracks/video_analysis_probability_logic_20260621/",
"conductor/tracks/video_analysis_entropy_epiplexity_20260621/",
"conductor/tracks/video_analysis_score_dynamics_giorgini_20260621/",
"conductor/tracks/video_analysis_platonic_intelligence_kumar_20260621/",
"conductor/tracks/video_analysis_free_lunches_levin_20260621/",
"conductor/tracks/video_analysis_generic_systems_fields_20260621/",
"conductor/tracks/video_analysis_brain_counterintuitive_20260621/",
"conductor/tracks/video_analysis_neural_dynamics_miller_20260621/",
"conductor/tracks/video_analysis_multiscale_hoffman_20260621/",
"conductor/tracks/video_analysis_cs336_architectures_20260621/",
"conductor/tracks/video_analysis_creikey_dl_cv_20260621/",
"conductor/tracks/video_analysis_synthesis_20260621/"
],
"new_files_per_child": [
"spec.md (lightweight)",
"artifacts/transcript.json",
"artifacts/ocr.md",
"artifacts/frames/<scene>_<ts>.jpg (deduplicated)",
"artifacts/extraction_meta.json",
"report.md (1000-10000 LOC target)",
"summary.md (200-400 words)"
],
"new_files_scripts": [
"scripts/video_analysis/download_video.py",
"scripts/video_analysis/extract_transcript.py",
"scripts/video_analysis/extract_keyframes.py",
"scripts/video_analysis/ocr_frames.py",
"scripts/video_analysis/synthesize_report.py"
],
"new_files_tests": [
"tests/test_video_analysis_download_video.py",
"tests/test_video_analysis_extract_transcript.py",
"tests/test_video_analysis_extract_keyframes.py",
"tests/test_video_analysis_ocr_frames.py",
"tests/test_video_analysis_synthesize_report.py"
],
"new_files_synthesis": [
"conductor/tracks/video_analysis_synthesis_20260621/spec.md",
"conductor/tracks/video_analysis_synthesis_20260621/per_video_summary.md",
"conductor/tracks/video_analysis_synthesis_20260621/report.md"
],
"modified_files": [],
"deleted_files": [],
"gitignored_patterns": [
"*.mp4 (video files - too large for git)",
"artifacts/frames/*.jpg if >500KB each",
"tests/artifacts/<slug>/ (per AGENTS.md artifact isolation)"
]
},
"estimated_effort": {
"method": "scope (per conductor/workflow.md Tier 1 Track Initialization Rules). NO day estimates.",
"phase_0": "4 tasks: tooling prerequisites (yt-dlp, cv2, imagehash, OCR backend decision)",
"phase_1": "10 tasks: 5 reusable scripts with TDD (red + green per script)",
"phase_2": "12 child tracks × 5 phases each = 60 child track execution tasks (tracked in child plans, not this umbrella)",
"phase_3": "1 synthesis track (blocked by all 12 children)",
"phase_4": "4 tasks: campaign closeout (README update, end-of-track report, archive move, chronology update)",
"summary": "14 track folders (1 umbrella + 12 children + 1 synthesis), 5 reusable scripts, ~40-60 unit tests, 12 reports (1000-10000 LOC each), 12 summaries, 1 cross-cutting synthesis report. No day estimates per project convention."
},
"verification_criteria": [
"yt-dlp installed and importable in this repo's venv",
"cv2, imagehash, PIL installed in this repo's venv",
"OCR backend chosen (winsdk or tesseract) and working",
"All 5 scripts in scripts/video_analysis/ have passing TDD tests",
"All 12 child tracks shipped: each has transcript.json, frames/, ocr.md, report.md (1000-10000 LOC), summary.md",
"Synthesis track shipped: per_video_summary.md + report.md",
"Umbrella README.md shows all 12 children + synthesis as shipped",
"End-of-track report at docs/reports/TRACK_COMPLETION_video_analysis_campaign_20260621.md",
"All artifacts preserved losslessly (JSON for transcripts, raw images for frames, plain text for OCR)",
"No src/*.py files created or modified (per AGENTS.md File Size and Naming Convention)",
"No new pyproject.toml dependencies (all tools via subprocess or existing venv)",
"Future-pass hooks (§11 of spec.md) intact and documented for Pass 2/3"
],
"risk_register": [
{
"id": "R1",
"title": "yt-dlp not installed locally",
"likelihood": "high",
"scope_impact": "First child track blocked until installed",
"mitigation": "Install via pip install yt-dlp in this repo's venv (single one-time task in Phase 0)"
},
{
"id": "R2",
"title": "OCR quality insufficient for technical content",
"likelihood": "medium",
"scope_impact": "Some frames may have illegible text",
"mitigation": "Spot-check OCR per frame; manually transcribe critical frames in the report.md section"
},
{
"id": "R3",
"title": "Report exceeds 10000 LOC target",
"likelihood": "low",
"scope_impact": "User may want to split",
"mitigation": "Pass 2 can split; Pass 1 should not artificially cap"
},
{
"id": "R4",
"title": "Video mp4 files exceed disk space",
"likelihood": "medium",
"scope_impact": "Could hit quota",
"mitigation": "Delete mp4 after frame extraction (extract_keyframes.py should do this)"
},
{
"id": "R5",
"title": "Two videos failed oEmbed fetch",
"likelihood": "confirmed for 9vM4p9NN0Ts and lVynu4bo1rY",
"scope_impact": "Unknown until track execution",
"mitigation": "User confirmed identities. yt-dlp may still work (different from oEmbed). Verify in Phase 1 of each track."
},
{
"id": "R6",
"title": "User's math encoding notation (Pass 2) lost",
"likelihood": "medium",
"scope_impact": "Blocks Pass 2",
"mitigation": "User action item: rediscover/redefine encoding before Pass 2 starts. Recorded in spec.md §11.1."
},
{
"id": "R7",
"title": "Pass 1 over-summarization loses signal for Pass 2",
"likelihood": "medium (if not enforced)",
"scope_impact": "Cascades to Pass 2/3",
"mitigation": "The 1000-10000 LOC target + spec.md §0 explicit warning + per-section completeness check in verification"
},
{
"id": "R8",
"title": "Tier 2 capacity for 12+ child tracks",
"likelihood": "medium",
"scope_impact": "Tracks ship in sequence",
"mitigation": "Each child is independently shippable; the campaign is async"
},
{
"id": "R9",
"title": "Transcript API rate-limiting",
"likelihood": "low",
"scope_impact": "Some videos may fail on first fetch",
"mitigation": "Retry with backoff in extract_transcript.py"
},
{
"id": "R10",
"title": "cv2 / imagehash not in this repo's venv",
"likelihood": "high (verified - exist only in foreign venvs)",
"scope_impact": "Blocks keyframe extraction",
"mitigation": "Install via pip install opencv-python imagehash pillow in this repo's venv (single one-time task in Phase 0)"
}
],
"architecture_reference": {
"primary_documents": [
"conductor/workflow.md (track convention, per-task commits, git notes, verification protocol)",
"conductor/code_styleguides/python.md (1-space indent, type hints, no comments)",
"conductor/code_styleguides/error_handling.md (Result[T] pattern for new scripts)",
"AGENTS.md (artifact isolation, file naming, no new src/<thing>.py)",
"conductor/chronology.md (after campaign ships, 14 new rows added here)"
],
"related_tracks": [
"conductor/tracks/intent_dsl_survey_20260612/ (Pass 2 may build on this)",
"conductor/tracks/nagent_review_20260608/ (precedent for deep-dive report format)",
"conductor/tracks/fable_review_20260617/ (precedent for synthesis report format)",
"conductor/tracks/chronology_20260619/ (precedent for spec/plan/metadata/state schema)"
],
"external_references": [
"C:/projects/forth/bootslop/download_videos.py (yt-dlp usage reference)",
"C:/projects/forth/bootslop/extract_frames.py (imagehash + cv2 keyframe extraction reference)",
"C:/projects/forth/bootslop/process_visuals.py (winsdk OCR + visual analysis reference)",
"C:/projects/forth/bootslop/ocr_interaction.py (standalone OCR reference)",
"https://pypi.org/project/youtube-transcript-api/",
"C:/projects/kasa/venv/Lib/site-packages/cv2/opencv_videoio_ffmpeg481_64.dll (proves cv2/ffmpeg installs on this machine)"
],
"styleguides_applied": [
"data_oriented_design.md (referenced by Pass 3, not directly by Pass 1)",
"python.md (1-space indent for all new scripts)",
"error_handling.md (Result[T] for all new scripts)",
"feature_flags.md (scripts are file-presence, no config flags needed)",
"workspace_paths.md (test artifacts in tests/artifacts/)"
]
},
"deferred_to_followup_tracks": [
{
"title": "Pass 2: De-obfuscation via user's math encoding notation",
"description": "Apply the user's custom math encoding/compression notation to reduce DSL + niche math notation/verbiage into something the user can understand. Consumes all Pass 1 artifacts.",
"track_status": "not started - blocked by this track",
"blocker_action_item": "User must rediscover/redefine their 'compress/decompress math info' encoding notation before Pass 2 starts. See spec.md §11.1."
},
{
"title": "Pass 3: Projection to user's applied domain",
"description": "Apply Pass 2 outputs to user's preferred code style. Influences: handmade/data-oriented/GPGPU community (Lottes, Onat, Jebrim) + user's own caveats.",
"track_status": "not started - blocked by Pass 2",
"blocker_action_item": "User must articulate 'own caveats' before Pass 3 starts. See spec.md §11.2."
}
],
"regressions_and_pre_existing_failures": [],
"pre_existing_failures_remaining": [],
"user_directives": [
"Order confirmed (12-video sequence, 2026-06-21)",
"Report target: minimum 1000 LOC, maximum 10000 LOC markdown per video (2026-06-21)",
"Multi-pass framing: Pass 1 = information extraction (this track), Pass 2 = de-obfuscation, Pass 3 = projection (2026-06-21)",
"Pass 1 artifacts must be lossless - over-summarization is data loss for Pass 2 (2026-06-21)",
"Stanford CS229 = 9vM4p9NN0Ts, Stanford CS336 Lecture 3 = lVynu4bo1rY (user-confirmed mapping, 2026-06-21)",
"Future-pass hooks must be explicit in spec.md so the next agent / future-self can pick up the thread (2026-06-21)",
"No day estimates per conductor/workflow.md Tier 1 Track Initialization Rules (added 2026-06-16). Scope measured in files/sites only."
],
"videos": [
{"order": 1, "slug": "cs229_building_llms", "cluster": "E", "title": "Stanford CS229 - Building Large Language Models (LLMs)", "youtube_id": "9vM4p9NN0Ts", "author": "Stanford CS229"},
{"order": 2, "slug": "probability_logic", "cluster": "A", "title": "Probability Theory is an Extension of Logic", "youtube_id": "0yF9TvMeAzM", "author": null},
{"order": 3, "slug": "entropy_epiplexity", "cluster": "A", "title": "From Entropy to Epiplexity", "youtube_id": "_U8AwUq_aJQ", "author": "Andrew Wilson and Marc Finzi"},
{"order": 4, "slug": "score_dynamics_giorgini", "cluster": "A", "title": "Learning Dynamics from Statistics: a score-based approach", "youtube_id": "P75iVMmbqQk", "author": "Ludovico Giorgini"},
{"order": 5, "slug": "platonic_intelligence_kumar", "cluster": "B", "title": "Towards a Platonic Intelligence with Unified Factored Representations", "youtube_id": "1mXUFweWOug", "author": "Akarsh Kumar"},
{"order": 6, "slug": "free_lunches_levin", "cluster": "B", "title": "Free Lunches: Model Systems for Studying the Agential Gifts from the Platonic Space", "youtube_id": "K8BmMU1Tm-I", "author": "Michael Levin"},
{"order": 7, "slug": "generic_systems_fields", "cluster": "C", "title": "Interesting Behavior by Generic Systems", "youtube_id": "QeMajYvhEbI", "author": "Chris Fields"},
{"order": 8, "slug": "brain_counterintuitive", "cluster": "C", "title": "The Most Counterintuitive Way to Build a Brain", "youtube_id": "cDxtFtoQVNc", "author": null},
{"order": 9, "slug": "neural_dynamics_miller", "cluster": "C", "title": "Cognition Emerges from Neural Dynamics", "youtube_id": "0BS-BzEFTXA", "author": "Earl Miller"},
{"order": 10, "slug": "multiscale_hoffman", "cluster": "C", "title": "A Multiscale Logic of Collective Intelligence", "youtube_id": "YnfaT5APPB0", "author": "Donald Hoffman and Chetan Prakash"},
{"order": 11, "slug": "cs336_architectures", "cluster": "E", "title": "Stanford CS336 Lecture 3: Architectures", "youtube_id": "lVynu4bo1rY", "author": "Stanford CS336 Spring 2026"},
{"order": 12, "slug": "creikey_dl_cv", "cluster": "D", "title": "Creikey - Deep Learning and Computer Vision for Game Developers (BSC 2025)", "youtube_id": "yxkUvXs-hoQ", "author": "Creikey"}
]
}