Private
Public Access
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
232 lines
14 KiB
JSON
232 lines
14 KiB
JSON
{
|
||
"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"}
|
||
]
|
||
}
|