{
  "project": "HIGH LVL Clipper (video-studio)",
  "updated": "2026-07-12",
  "note": "One source of truth. Statuses: done | in_progress | planned | blocked. Change a status only with Verification Evidence in progress.md.",
  "features": [
    {
      "id": "F01",
      "name": "Transcript-first clip engine",
      "status": "done",
      "dependencies": [],
      "done_criteria": "A phone upload renders a titled 9:16 clip that starts and ends on full thoughts.",
      "description": "Upload/record → local whisper transcript → topic-chip moment finding → sentence-snapped cuts (/api/snap) → house-cut renders (legacy/box/center/card) via /api/render."
    },
    {
      "id": "F02",
      "name": "Dashboard PWA",
      "status": "done",
      "dependencies": [
        "F01"
      ],
      "done_criteria": "Library of 100+ items renders <200ms with posters on any device incl. iOS Low Power Mode.",
      "description": "Single-file black+gold UI: Clip/Auto-Clips/Library/Upload/Inspiration + Back Office tabs, mobile bottom nav, installable PWA, record with live self-view, lazy poster-backed gallery."
    },
    {
      "id": "F03",
      "name": "Repost styles (static)",
      "status": "done",
      "dependencies": [
        "F01"
      ],
      "done_criteria": "Editor click-to-edit/drag renders exactly what was placed.",
      "description": "5 WYSIWYG overlay styles (revolt/editorial/culture/tweet/source) via styles/template.html + tools/style_render.py."
    },
    {
      "id": "F04",
      "name": "Motion comps (Remotion)",
      "status": "done",
      "dependencies": [
        "F01"
      ],
      "done_criteria": "59.94fps source renders at 59.94; comp fields (caption, word, ghost…) reach props.",
      "description": "KineticCaptions, VoxEditorial, AudioWaveform, TalkCollage, EditorialCollage; source-fps/resolution preserved via probe + --scale (no forced 1080@30)."
    },
    {
      "id": "F05",
      "name": "Two-engine router (Remotion + HyperFrames)",
      "status": "done",
      "dependencies": [
        "F04"
      ],
      "done_criteria": "A director pick dispatches to the correct engine and produces a verified file.",
      "description": "HyperFrames kinetic comp + tools/hyperframes_render.py; director.route_engine encodes rules (beat/alpha/4K60/batch → HF; live-FFT → Remotion); /api/director/dispatch one-tap render."
    },
    {
      "id": "F06",
      "name": "Luxury grades v1 (pure/quiet/cinematic)",
      "status": "done",
      "dependencies": [
        "F01"
      ],
      "done_criteria": "All 5 modes render; LUT actually applied (chroma differs from source).",
      "description": "Real .cube LUTs (cool/warm/natural) + zoompan push-in + halation + grain; captioned quiet/cinematic with Didot."
    },
    {
      "id": "F07",
      "name": "Masked luxury v2 (colorist subject/background separation)",
      "status": "done",
      "dependencies": [
        "F06"
      ],
      "done_criteria": "Proof frames show subject warmer/brighter than background with no visible mask edge.",
      "description": "lux2-* (LUT + split-tone + power window + skin-protected sat, pure ffmpeg) and luxury-masked-* (Apple Vision person matte → dual grade: subject gold-warm, world cool) + matte-preview QC; matte cached; fallback ladder masked→lux2."
    },
    {
      "id": "F08",
      "name": "Inspiration (video → rebuild blueprint)",
      "status": "done",
      "dependencies": [
        "F02"
      ],
      "done_criteria": "A URL produces sheets+transcript; Break-it-down yields the blueprint JSON.",
      "known_blocker": "Auto-breakdown needs owner `claude login` on this Mac (nested CLI auth is stale).",
      "description": "Drop any URL → yt-dlp → dense hook contact sheets + body frames → local whisper → Claude CLI breakdown → 'Use as blueprint' pins structure to Clip page. SHARED_MODE blocks all inspo POSTs."
    },
    {
      "id": "F09",
      "name": "Public studio (permanent branded link)",
      "status": "done",
      "dependencies": [
        "F02"
      ],
      "done_criteria": "200 with token / 401 without from the public internet; lockdown returns 403 on account mutations.",
      "description": "Mac Mini + cloudflared named tunnel → https://clipper.highlvl.ai, token-gated, SHARED_MODE lockdown (no real posting/deletes, 400MB cap), reboot-proof LaunchAgents."
    },
    {
      "id": "F10",
      "name": "Ops layer",
      "status": "done",
      "dependencies": [
        "F09"
      ],
      "done_criteria": "Kill-server-mid-render yields 'interrupted' not 404; deploy + rollback both green; monitor message received in Telegram.",
      "description": "Uptime monitor (5min, self-heal, Telegram on state change), job persistence (.jobs.json, 'interrupted' on restart), versioned health-gated deploy with auto-rollback (ops/deploy-mini.sh), library sync laptop→Mini (10min)."
    },
    {
      "id": "F11",
      "name": "Real posting for all Connections platforms",
      "status": "blocked",
      "dependencies": [
        "F02"
      ],
      "blocker": "OWNER: paste 4 X keys + TWITTER_ENABLED=true into content-os/config/.env (needs paid X Basic tier); IG/TikTok/YouTube OAuth app setups.",
      "description": "Telegram live; X code-ready via tweepy chunked video upload. IG/TikTok/YouTube need OAuth apps + audits."
    },
    {
      "id": "F12",
      "name": "Clipper handoff queue (engine → Neo)",
      "status": "planned",
      "dependencies": [
        "F05"
      ],
      "done_criteria": "An approved clip lands in the queue and Neo posts it (dry-run proof first).",
      "description": "Append-only queue the Mini's Neo/OpenClaw drains to auto-post approved clips on cadence (tasks #18/#20 in the long-running list)."
    },
    {
      "id": "F13",
      "name": "Automated tests (real done-gate)",
      "status": "planned",
      "dependencies": [],
      "done_criteria": "init.sh runs the suite; a regression in snap/router logic fails the gate.",
      "description": "Pytest suite for the pure functions (snap_clip, span_title, route_engine, library, dispatch_pick) + a smoke render behind a flag; wire into init.sh."
    },
    {
      "id": "F14",
      "name": "Masked grades native on the Mini",
      "status": "blocked",
      "dependencies": [
        "F07"
      ],
      "blocker": "OWNER: install Xcode Command Line Tools on the Mini (`xcode-select --install`), then rm tools/personmatte so it recompiles.",
      "description": "luxury-masked-* currently falls back to lux2-* on the Mini (no swiftc)."
    },
    {
      "id": "F15",
      "name": "TRIBE v2 scoring (virality + brain activation)",
      "status": "done",
      "dependencies": [
        "F01"
      ],
      "done_criteria": "A library clip scores through the TRIBE bridge and the UI shows engagement + which brain networks light up; multiple E2E runs pass on desktop and phone viewport.",
      "description": "TIER A DONE (2026-07-12, verified E2E desktop+phone): dashboard/tribe.py + POST/GET /api/tribe + a 🧠 Score button and 6-network activation panel on Library clip cards. Real whisper transcript -> heuristic bridge (content-os/layer_10_simulation/tribev2_bridge.py) -> virality 0-100 + brain networks, stamped mode='heuristic-estimate'. TIER B (real tri-modal V-JEPA2+Wav2Vec-BERT+LLaMA-3.2 fMRI parcels) is WIRED but GATED: measured infeasible tonight (encoders not in HF cache; LLaMA-3.2 is a gated multi-GB download). tribe.deep_available() is a no-download preflight; deep:true degrades honestly and never downloads on the request path. Owner action to unlock TIER B: warm the 3 encoders offline. Not yet deployed to the Mini."
    },
    {
      "id": "F16",
      "name": "Custom fonts in all layouts/formats",
      "status": "done",
      "dependencies": [
        "F03",
        "F06"
      ],
      "done_criteria": "A render with a custom family (e.g. F25 Bank Printer) visibly uses that font in extracted frames (no silent Helvetica fallback); picker groups House presets vs Custom.",
      "description": "Owner's downloaded collection (Akira Expanded, Alte Haas Grotesk, F25 Bank Printer, JMH Typewriter, VCR OSD Mono, OptimusPrinceps, Alycidon Condensed, hand styles…) registered in fonts.json and wired through ASS captions, luxury captions, style templates, hyperframes comp + UI pickers. No AI-cliché fonts (house ban)."
    },
    {
      "id": "F17",
      "name": "Mobile perf: overnight research-and-improve loop",
      "status": "in_progress",
      "dependencies": [
        "F02",
        "F09"
      ],
      "done_criteria": "Hourly loop ran overnight: E2E phone-viewport tests on the public link each cycle + web research + applied safe improvements, all logged with before/after timings in ops/overnight-log.md.",
      "description": "Standing owner directive (2026-07-12 overnight): verify phone loading E2E repeatedly, search the web for mobile web-app loading improvements each cycle, apply low-risk wins, log findings for the morning report."
    }
  ]
}