JWVR AI Video Pipeline, Phase 1 Decide-in-5¶
URL: https://mkdocs.justinsforge.com/memory/investigations/jwvr-pipeline-prep-2026-05-04/
Date: 2026-05-04 Source handoff: justinwieb-vr-ai-video-pipeline-2026-04-29 Goal: Lock the 6 open Phase 1 questions so a worker can start building without blockers.
TL;DR (the 6 calls, one line each)¶
| # | Question | Recommendation |
|---|---|---|
| 1 | Whisper inference target | Finn GPU via faster-whisper if a usable iGPU/discrete card is present; else Console CPU large-v3 overnight + medium.en for hot-path |
| 2 | Proxy spec | DNxHR LB .mov 1080p (Premiere-on-Windows native, fast, small) |
| 3 | Notion-to-folder script sync | Pull, forge polls a tagged "Ready to shoot" Notion view every 5 min |
| 4 | Folder location | Finn NFS canonical, Sol/Vector mount as network drive; no local-first sync mess |
| 5 | Existing Windows scaffold script | Have Justin paste it into a Telegram capture, port to forge_video_scaffold.py (single source) |
| 6 | Sample project for Phase 1 test | Justin picks the next real upcoming VR video, must be a talking-head + game-footage piece |
Q1: Whisper inference target¶
Options:
- A. Finn GPU (local) — faster-whisper large-v3 on CUDA. 5-10x realtime if Finn has a real GPU. Zero cloud cost, footage never leaves the LAN (matches "don't put cloud LLMs in the hot path for raw footage").
- B. Console CPU — faster-whisper medium.en int8. ~1x realtime. No GPU required. Fine for overnight batch, painful for hot-path interactivity.
- C. Cloud API — OpenAI Whisper API or Groq Distil-Whisper. Fastest wallclock (15s for 10min). $0.006/min. Violates the "footage stays local" doctrine for raw clips.
Recommendation: A if Finn has a usable GPU, otherwise hybrid B: medium.en on Console for the immediate ingest pass (good enough for cuts.json), then schedule large-v3 overnight to refine captions. Cloud is the fallback only.
Info Justin still needs: confirm what GPU is in Finn. SSH to finn from Console refused this session (192.168.86.67:22 connection refused at 16:11 CDT, 2026-05-04, possibly post-BIOS-trip residue). Justin: run lspci | grep -iE 'vga|3d' on Finn directly, or check Proxmox host hardware page. If Finn has the iGPU only (Intel UHD/xe), faster-whisper won't accelerate; treat as option B.
Q2: Proxy spec¶
Options: - A. DNxHR LB .mov, 1080p — Avid codec, native fast in Premiere on Windows, ~36 Mbps, small files. Justin's primary edit machine is Vector (Win11) or Sol (mac); both handle DNxHR fine. - B. ProRes Proxy .mov, 1080p — Apple codec, butter-smooth on Sol, slightly heavier on Windows decode. ~45 Mbps. - C. H.264 mp4, 1080p, 8 Mbps — tiny files, weak scrub performance, Premiere chokes on long-GOP for editing.
Recommendation: A. DNxHR LB. Premiere docs explicitly recommend it on Windows; ffmpeg encodes it fast (-c:v dnxhd -profile:v dnxhr_lb). Files 4-5x smaller than ProRes Proxy, scrubs identically in Premiere.
Info Justin still needs: which machine does the editing? If primarily Sol/macOS, switch to ProRes Proxy. If Vector/Windows, DNxHR LB. (Handoff implies Premiere lives on Windows PC scaffold flow.)
Q3: Notion-to-folder script sync¶
Options:
- A. Pull (forge polls) — Cron every 5 min hits a tagged Notion DB view ("Status = Ready to shoot"). Forge creates the folder + copies script.md. Idempotent, simple, follows existing forge patterns (Hevy poller, Garmin poller).
- B. Push (Notion webhook → forge) — Notion automation hits a forge endpoint when a row flips status. Faster, but Notion automations are paid-tier and webhooks are flaky on free.
- C. Manual /new-video only — Justin types a Telegram command; no Notion coupling. Simpler but loses script-already-written-in-Notion link.
Recommendation: A + C combined. Pull pattern as the default automatic path (matches how every other forge poller works); /new-video <name> Telegram command as the manual override when there's no Notion row yet.
Info Justin still needs: which Notion DB holds scripts? Confirm the property he wants to use as the trigger (e.g., a "Pipeline Status" select with "Ready to shoot"). Likely lives in JWVR Projects DB from the Notion scaffold handoff, needs verification.
Q4: Folder location¶
Options:
- A. Finn NFS, canonical — /mnt/storage/justinwieb-vr/ on Finn, NFS-exported to Sol/Vector. Single source of truth. Watch-folder service runs on Finn. Edit machines mount it as a network share. A7iv files are heavy; Finn 24TB HDD is the right home.
- B. Local-first on Sol with Finn backup — Sol holds working copies, rsync to Finn nightly. Faster local I/O on Sol's NVMe, but creates two-way sync hell, watch-folder triggers fragment.
- C. Google Drive — already there for cross-device. Way too slow for raw A7iv ingest, syncs choke.
Recommendation: A. Finn NFS canonical. This is exactly the storage policy: active video work on Finn 8TB NVMe (or HDD for cold), edit machines mount over NFS. Watch-folder lives on Finn. Premiere over NFS is fine for proxies; high-bitrate originals only get touched at export.
Info Justin still needs: confirm NFS export already exists for this path or whether we need to create one. Vector/Sol need SMB or NFS client wired. Existing Plex / arr stacks already NFS-mount Finn so the pattern is proven.
Q5: Existing Windows scaffold script¶
Options:
- A. Port it directly — Justin pastes the .ps1/.bat into a Telegram message; we translate to forge_video_scaffold.py. Preserves the exact subfolder layout he's used to.
- B. Reinvent from the reference structure — Use the 2026-04-07_Quest-Ad-3-Traitors example layout in the handoff. Simpler if his old script is gone or messy.
- C. Both, for now — Keep the Windows script as-is for Vector workflows; add forge /new-video for Telegram/Console. Risks drift.
Recommendation: A. Port it. Single source of truth (Section 9.5 of doctrine, no two scripts doing the same thing). Once forge_video_scaffold.py exists, retire the Windows script. Mobile-first via Telegram becomes the default; Vector calls the same Python via SSH or a wrapper .bat.
Info Justin still needs: Justin to either paste the script content here or confirm "use the reference layout, don't bother porting." If he can't find the old one, default to B with the layout block from the handoff (lines 184-199).
Q6: Sample project for Phase 1 test¶
Recommendation: The next real upcoming VR video. Synthetic test footage hides edge cases (false starts, varied audio levels, multi-camera mixing, game-capture overlays). Pick something with: - Talking-head A7iv via OBS (the 80% case) - A written script in Notion or Drive (so Q3 sync gets exercised) - At least one game-footage section (so layout-cue detection has signal) - Total duration 5 to 15 min (long enough for filler-word pass to be meaningful, short enough to iterate fast)
Info Justin still needs: pick the project. Reference example is 2026-04-07_Quest-Ad-3-Traitors; what's the next analogue?
Environment audit (live as of 2026-05-04 16:11 CDT)¶
| Check | Result | Notes |
|---|---|---|
| Windows scaffold script discoverable from Console | No | No file under forge/scripts/ matching *scaffold*video* or *new_video*. Lives on Vector only; needs paste-port. |
brands/justinwieb-vr/ on forge |
Empty (only README.md per git status) |
Phase 1 will populate this. |
JustinWieb-VR/ content folder |
Not on Console | Justin's actual project tree lives on Finn / Sol / Vector. Console is dev VM only, won't host footage. |
| Finn GPU verification | Unknown, SSH refused | ssh finn (192.168.86.67:22) connection refused at 16:11. Could be transient; possibly post-2026-04-30 BIOS trip aftereffect. Justin: verify Finn is up + SSH listening. |
| Sol disk space | Unknown, SSH timed out | ssh sol timed out from Console. Sol may be off the tailnet or asleep. Justin: confirm Sol awake + tailscale up if planning Sol-side proxies. |
| Forge primitives ready | Yes | Notion API client, dispatcher, cron, /save-to-drive, Telegram bots, forge_text_sanitize, /recall all present per MEMORY.md. |
| ffmpeg on Console | Likely yes (used by /watchyoutube) | Confirm ffmpeg -version before Phase 1 build. |
| Whisper / faster-whisper installed | Not yet | New build, will go in forge/scripts/integrations/.venv/. |
What unblocks the build session¶
Justin answers these 6 in chat (a single paragraph is enough):
- Finn GPU model + is SSH reachable right now?
- Edit machine: Vector (Windows) or Sol (Mac)?
- Notion DB id + status property name for the script trigger
- NFS path on Finn for
JustinWieb-VR/(or "create it fresh at/mnt/storage/justinwieb-vr/") - Paste the old Windows scaffold script, or say "use the reference layout"
- Project slug for the live Phase 1 test
Once those land, the build worker can ship forge_video_scaffold.py + watch-folder + proxy + transcription + alignment + XML in a single focused session.