Skip to content

JustinWieb-VR Brand Ops: Travel Editing Architecture

Handoff. Author: Claude Code (Opus 4.7). Date: 2026-04-21. Scope: design a travel-first editing workflow for JWVR when Vector is home and Justin is on Sol (MBP M3 Max) + Venus (iPhone 15 Pro Max). Based on direct survey of /mnt/workspace/JustinWieb-VR/ and the fleet, not speculation.


1. JWVR Pipeline Snapshot

Cadence (2026 YTD)

Date Project Size Type
2026-01-04 CES-Day-1-Unveil 8.9 GB Event short
2026-01-04 CES-Master-2026 99 GB Flagship multi-cam doc
2026-01-13 Blues-Videos-CES2026 29 GB CES compilation
2026-01-15 Dread-Meridian 6.5 GB Game showcase
2026-02-09 Quest-Ads 7.5 GB Meta sponsored ad
2026-02-12 Electrical-Work-On-Home 11 GB Vlog (non-VR)
2026-02-26 FMO-Office-Tour 3.5 GB Nova cross-promo
2026-03-02 Rayneo-Unboxing 2.6 GB Glasses review
2026-03-12 Rayneo-Air-4-Pro-Batman 6.2 GB Glasses + reference film
2026-03-30 Meta-Raybans-New-FCC-Filing 4.3 GB News/analysis
2026-04-07 Quest-Ad-3-Traitors 5.2 GB Meta sponsored ad

Cadence: ~1 project every 7–10 days; one flagship per quarter (CES Jan, Meta Connect Sep). Median project: 5 GB. Flagship outlier: 99 GB. 604 video files across 2026 projects so far.

Canonical project layout (newest projects like Quest-Ad-3-Traitors)

YYYY-MM-DD_Project-Name/
├── Footage/      ← A7IV raw clips (C####.MP4) + .XML sidecars
├── Assets/       ← stock reference video, iPhone captures, Quest/Rayneo mkv, B-roll
├── Audio/        ← Epidemic Sound mp3s (ES_Title-Artist.mp3)
├── Project/      ← .prproj, .aep, .prin, Masks/, Adobe Auto-Save/, Audio Previews/
├── Exports/      ← rendered outputs (h264 mp4)
└── Docs/         ← scripts, beat sheets

Inconsistency note: older projects use Assets/ for raw footage (all of CES-Master-2026/Assets is 250 C####.MP4 A7IV clips). Final/ vs Exports/, Docs/ vs Documents/ vs Scripts/ are interchangeable. Recommendation: formalize the Quest-Ad-3 layout as the JWVR standard going forward, makes proxy scripts possible without a rename game.

Observed codecs (ffprobe verified)

Source Resolution FPS Codec Bitrate Notes
A7IV premium (CES-Master) 3840×2160 59.94 H.264 10-bit 4:2:2 ~200 Mbps XAVC-S, yuv422p10le, ~170 MB per 6-sec clip
A7IV standard (Quest-Ad-3) 3840×2160 29.97 H.264 8-bit 4:2:0 ~60 Mbps yuv420p, 1.78 GB for 3:49
Quest/Rayneo capture 2160×3840 (portrait) 60 H.264 ~29 Mbps MKV, already compressed
iPhone 4K .mov 3840×2160 30 H.264 ~46 Mbps .mov, with metadata sidedata
Audio (A7IV) , , PCM 16-bit BE 1.5 Mbps uncompressed
Stock music , , MP3 ~320 kbps Epidemic Sound

Takeaway: A7IV is the bandwidth killer. Quest/Rayneo/iPhone captures are already low-enough bitrate to pull raw over Tailscale if needed. CES-style 4K60p 4:2:2 is what forces a proxy workflow.

Tooling in use (observed on-disk)

  • Editor: Adobe Premiere Pro + Premiere Pro Beta, cross-project (.prproj, .PRV audio previews, Auto-Save dirs everywhere)
  • Motion/FX: After Effects (Bend-Template.aep, Screen Effect.aep in Quest-Ad-3)
  • Capture: Sony A7IV (C####.MP4 XAVC-S), iPhone (IMG_####.mov), Quest/Rayneo (.mkv from headset screen record), OBS (.mkv occasional)
  • Stock: Epidemic Sound (ES_*.mp3 prefix)
  • Project tracker: Google-Drive/Business/JustinWieb-VR/2026/JustinWiebVR-Projects.xlsx and .csv, a project log
  • Brand-Assets: Google-Drive/Business/JustinWieb-VR/Brand-Assets/ (509 MB), logos (SVG/PSD/PNG, Black/White/Yellow variants), Headshots, Media Kit, Meta-Quest-Brand-Assets.zip, Channel-Script.docx, Creator-Reel.mp4, Virtual Friends thumbnails
  • Records: Google-Drive/Business/JustinWieb-VR/Records/ (832 MB, 2022–2026), organized by year with _Business/_Contracts/_Content/_Meetings/_Finances/_Strategy subfolders

Platforms (observed/implied)

  • Primary: YouTube (JustinWieb channel), this is what longform exports are cut for
  • Shorts: the Rayneo-Air-4-Pro-Batman/Assets/ mkv files are portrait 2160×3840 @ 60p, confirms Justin already shoots glasses content in a vertical-first way for Shorts/Reels/TikTok
  • No upload automation detected. No n8n workflow references YouTube, no TikTok/IG credentials anywhere on disk, no Buffer config. Posting is currently manual from Vector.

2. Travel Editing Architecture

Target diagram

            ┌────────────────────────── HOME LAN (10.0.0.x / 192.168.86.x) ──────────────────────────┐
            │                                                                                        │
            │    ┌──────────────────┐    NFS       ┌──────────────────────────┐                      │
            │    │  Finn (MS-01)    │◄─────────────┤  UDev (.50) + dispatcher │                      │
            │    │  7.3 TB NVMe     │              │  • proxy-gen scripts     │                      │
            │    │  Workspace/      │              │  • pre-trip bundler      │                      │
            │    │  JustinWieb-VR/  │              │  • n8n triggers ingest   │                      │
            │    │  (source of     │              │  • rclone gdrive:        │                      │
            │    │   truth — raws) │              └────────┬─────────────────┘                      │
            │    └─────┬────────────┘                       │                                         │
            │          │ SMB (Vector 10 Gbps SFP+)          │ rclone sync                            │
            │    ┌─────▼───────────────┐                    │                                         │
            │    │ Vector (Win 11)      │                    │                                         │
            │    │ • Premiere full res  │                    │                                         │
            │    │ • RTX 5070, 64GB     │                    │                                         │
            │    └──────────────────────┘                    │                                         │
            │                                                │                                         │
            └────────────────────────────────────────────────┼─────────────────────────────────────────┘
                                        ┌────────────────────┼────────────────────┐
                                        │                    │                    │
                           ┌────────────▼─────┐   ┌───────────▼───────┐   ┌────────▼─────────┐
                           │  Google Drive    │   │  Tailscale mesh   │   │ Backblaze B2     │
                           │  (gdrive: remote)│   │  (finn 100.112.   │   │ (NEW — cheap     │
                           │  — project       │   │   22.2 exit node) │   │   proxy bucket)  │
                           │    bundles       │   │  — direct SMB     │   │  — cold archive  │
                           │  — brand assets  │   │    over WAN       │   │    proxies       │
                           └────────┬─────────┘   └──────────┬────────┘   └────────┬─────────┘
                                    │                        │                     │
                          ┌─────────▼────────────────────────▼─────────────────────▼─────────┐
                          │                    TRAVEL TIER (away from home)                   │
                          │                                                                    │
                          │   ┌──────────────────────┐          ┌─────────────────────────┐   │
                          │   │ Sol (MBP M3 Max)     │          │ Venus (iPhone 15 PM)    │   │
                          │   │  • Premiere Pro      │          │  • LumaFusion (shorts)  │   │
                          │   │    (proxies only)    │          │  • CapCut (social cuts) │   │
                          │   │  • Frame.io or       │          │  • native camera roll   │   │
                          │   │    local workspace   │          │  • Files → Google Drive │   │
                          │   │  • saves project     │          │  • direct post to IG/   │   │
                          │   │    back to cloud     │          │    TikTok/X            │   │
                          │   └──────────────────────┘          └─────────────────────────┘   │
                          └────────────────────────────────────────────────────────────────────┘
                                               Return to home → UDev reconciles:
                                               • Pull updated .prproj from cloud
                                               • Re-link to full-res raws on NFS
                                               • Commit final exports + thumbnails

Core invariants

  1. Source of truth never leaves Workspace NVMe. Raw A7IV XAVC-S clips don't travel. Ever.
  2. Proxies travel. 1080p H.264 @ 10 Mbps (1/20 of the raw) is what Sol sees and edits against.
  3. Project file is tiny. .prproj for Quest-Ad-3 is 44 MB total incl. all masks/auto-saves; the actual .prproj is under 1 MB. Syncs in seconds.
  4. Re-link on return. Premiere's "Make Offline/Online" + relative proxy paths lets the home session swap proxies back to raws for finishing and export.
  5. Shorts pipeline is separate. Venus does not touch proxies, it posts direct captures or short cuts delivered from Sol.

Layer Choice Why Rejected
Editor on Sol Adobe Premiere Pro (already on CC sub) Opens .prproj from Vector 1:1; no cross-NLE conversion drama; Sol M3 Max + 64 GB RAM handles 4K proxies effortlessly DaVinci Resolve Studio, better mobile performance but forces a parallel project format, means Vector↔Sol round-trips become conversion headaches. Final Cut Pro, excellent on Mac but same problem: no Premiere interop.
Proxy format H.264 1080p @ 10 Mbps, .mp4, -preset veryfast via ffmpeg Universal, small (~1/20 raw), Premiere proxy-workflow native. Sol can hit >10× playback speed on M3 Max. ProRes Proxy, better quality but 3–4× larger; unnecessary for cuts-only editing. DNxHR LB: Premiere-compat but Mac fewer tools. H.265, smaller but CPU-heavier on decode, not worth it vs extra bandwidth.
Cloud sync Google Drive (already paid, already mounted) for project bundles under ~50 GB. Backblaze B2 for bigger archives / cold proxy storage (~$6/TB/mo). No new service for 90% of cases. B2 is the escape valve when Drive quota pressure hits. Frame.io: Adobe-native, 500 GB free with CC, but workflow lock-in + still bandwidth-bound by upload speed. Keep in reserve for a client-review use case, not primary travel storage. Dropbox Smart Sync, another $12/mo subscription; redundant with Drive.
Transport rclone copy/bisync (UDev ↔ gdrive ↔ Sol) for bundles. Tailscale SMB to Finn as a live option when on good wifi. rclone is already configured, works over any uplink, handles interruptions. Tailscale gives a fallback "grab this one clip I forgot" without re-bundling. syncthing, continuous sync risks blowing up cellular caps if Justin forgets to pause. iCloud: Sol-only, no Vector interop.
Mobile tool LumaFusion on Venus for vertical edits. CapCut for speed cuts with auto-captions. LumaFusion reads Files-app Drive mounts; exports 4K60 portrait natively. CapCut's auto-subtitle is faster than anything else for Shorts. Adobe Rush, underpowered and Premiere team is de-emphasizing it.
Posting glue n8n handles scheduled posts when Justin marks an export "ready". YouTube still manual (OAuth hardening needed first). Keep creds in n8n encrypted DB. TikTok/IG/X allow scheduled posts via webhook; YouTube OAuth is the one Justin explicitly said Decorator Crab owns when greenlit, don't touch. Buffer, $15/mo for the same thing n8n already does free.

4. Concrete Automations to Build

4.1 Auto-proxy on ingest (UDev cron or n8n-triggered)

Script skeleton: /home/justinwieb/forge/scripts/jwvr/generate-proxies.sh

#!/usr/bin/env bash
# Scans JustinWieb-VR/YYYY/* for new/changed Footage/ + Assets/ clips,
# generates 1080p H.264 proxies into a sibling Proxies/ folder.
#
# Premiere proxy convention: proxy file has same stem + "_proxy.mp4" suffix
# in a Proxies/ sibling directory — Premiere's "Attach Proxies" maps that.

set -euo pipefail

ROOT="/mnt/workspace/JustinWieb-VR"
LOG="/home/justinwieb/forge/logs/jwvr-proxy.log"
PROXY_CRF="${PROXY_CRF:-23}"            # quality knob
PROXY_BITRATE="${PROXY_BITRATE:-10M}"   # 10 Mbps target
PROXY_SCALE="${PROXY_SCALE:-1920:-2}"   # 1080p, keep aspect

find "$ROOT" -type d \( -name Footage -o -name Assets \) | while read -r dir; do
  project=$(dirname "$dir")
  proxy_dir="$project/Proxies"
  mkdir -p "$proxy_dir"
  find "$dir" -maxdepth 1 -type f \( -iname '*.mp4' -o -iname '*.mov' -o -iname '*.mkv' -o -iname '*.mxf' \) | while read -r src; do
    base=$(basename "${src%.*}")
    out="$proxy_dir/${base}_proxy.mp4"
    # skip if proxy fresh
    [[ -f "$out" && "$out" -nt "$src" ]] && continue
    echo "[$(date -Is)] proxy: $src -> $out" >> "$LOG"
    ffmpeg -y -hide_banner -loglevel error \
      -i "$src" \
      -vf "scale=${PROXY_SCALE}" \
      -c:v libx264 -preset veryfast -crf "$PROXY_CRF" -maxrate "$PROXY_BITRATE" -bufsize 20M \
      -c:a aac -b:a 192k \
      -movflags +faststart \
      "$out" >> "$LOG" 2>&1 || echo "[$(date -Is)] FAIL: $src" >> "$LOG"
  done
done

Schedule: cron every 10 min on UDev, or n8n watches /mnt/workspace/JustinWieb-VR/ via inotify and fires the script when new Footage lands. n8n path is better because proxies show up ~seconds after Justin offloads a card via Vector.

Performance reality check: UDev is a 4 vCPU VM. A 200 Mbps CES clip transcodes ~1.5× realtime via libx264 veryfast on 4 cores. For an overnight CES batch of 250 clips × 2–3 min each, plan on ~6–10 hours. Offload to Finn itself via SSH (Finn has i9-13900H idle overnight) if that's a problem, simple ssh finn inversion of the script.

4.2 Pre-trip bundle (UDev on demand)

Script: /home/justinwieb/forge/scripts/jwvr/prep-travel-bundle.sh

#!/usr/bin/env bash
# Usage: prep-travel-bundle.sh 2026-04-07_Quest-Ad-3-Traitors
# Packages: Proxies/, Project/*.prproj + *.aep, Audio/, lightweight Assets,
#           + Brand-Assets/ (LUTs, logos) → /mnt/workspace/Travel-Bundles/
#           Then rclone copy to gdrive:Travel-Bundles/<project>/ for Sol pull.

set -euo pipefail
PROJECT="$1"
YEAR=${PROJECT:0:4}
SRC="/mnt/workspace/JustinWieb-VR/$YEAR/$PROJECT"
BUNDLE="/mnt/workspace/Travel-Bundles/$PROJECT"
BRAND="/mnt/workspace/Google-Drive/Business/JustinWieb-VR/Brand-Assets"

[[ -d "$SRC" ]] || { echo "No such project: $SRC"; exit 1; }

mkdir -p "$BUNDLE"/{Project,Proxies,Audio,Assets,Brand-Assets}

# Project files only — not the multi-GB Auto-Save/Masks trees
find "$SRC/Project" -maxdepth 1 -type f \( -iname '*.prproj' -o -iname '*.aep' -o -iname '*.prin' \) -exec cp -av {} "$BUNDLE/Project/" \;

# Proxies
[[ -d "$SRC/Proxies" ]] && cp -av "$SRC/Proxies/." "$BUNDLE/Proxies/"

# Audio (mp3s are tiny)
[[ -d "$SRC/Audio" ]] && cp -av "$SRC/Audio/." "$BUNDLE/Audio/"

# Lightweight assets only (<100 MB each): logos, thumbnails, iPhone clips, mkv glasses captures
# Raw A7IV C####.MP4 in Assets/ are skipped here — use proxies.
find "$SRC/Assets" -maxdepth 1 -type f -size -100M \
  ! -iname 'C[0-9]*.MP4' \
  -exec cp -av {} "$BUNDLE/Assets/" \; 2>/dev/null || true

# Brand assets: logos, fonts, LUTs — rsynced fresh each time
rsync -a --delete \
  --include '*/' \
  --include 'Logos/**' \
  --include 'LUTs/**' \
  --include '*.lrtemplate' --include '*.cube' \
  --exclude '*' \
  "$BRAND/" "$BUNDLE/Brand-Assets/"

# Size report
du -sh "$BUNDLE"

# Push to Drive
rclone copy -P "$BUNDLE" "gdrive:Travel-Bundles/$PROJECT"

Expected bundle size: for Quest-Ad-3-Traitors (5.2 GB project), the bundle should land ~400–600 MB (proxies + project + audio + brand assets). For CES-Master-2026 (99 GB) → ~5 GB bundle. Both feasible over hotel/cellular with some patience.

4.3 On-Sol puller (runs on Mac before Justin leaves wifi)

Script lives on Sol at ~/bin/jwvr-pull.sh:

#!/usr/bin/env bash
# Usage: jwvr-pull.sh 2026-04-07_Quest-Ad-3-Traitors
PROJECT="$1"
LOCAL="$HOME/JWVR-Travel/$PROJECT"
mkdir -p "$LOCAL"
rclone copy -P "gdrive:Travel-Bundles/$PROJECT" "$LOCAL"
open -a "Adobe Premiere Pro" "$LOCAL/Project/"*.prproj

Assumption: Sol has rclone installed and configured with the same gdrive: remote. If not, brew install rclone + copy ~/.config/rclone/rclone.conf from UDev once (no keys: Drive OAuth lives in Drive itself).

4.4 Return-merge (UDev, on Justin's arrival home)

Script: /home/justinwieb/forge/scripts/jwvr/pull-travel-edits.sh

#!/usr/bin/env bash
# Reverse direction: pulls edits from Sol's Drive folder back to Workspace.
# Only picks up Project/ changes + any new Exports/; does NOT re-sync proxies back.
PROJECT="$1"
YEAR=${PROJECT:0:4}
DST="/mnt/workspace/JustinWieb-VR/$YEAR/$PROJECT"

# Dry run first, Justin inspects, then applies
rclone copy --dry-run "gdrive:Travel-Bundles/$PROJECT/Project" "$DST/Project-Travel-Return/"
echo "Dry run above. Press enter to apply..."
read
rclone copy -P "gdrive:Travel-Bundles/$PROJECT/Project" "$DST/Project-Travel-Return/"

echo "Edits landed in $DST/Project-Travel-Return/"
echo "Next: open .prproj in Premiere on Vector, 'Attach Proxies' → point at Proxies/ folder (already linked by relative path), then Make Offline → Original Media for finishing export."

Relink strategy: Premiere's proxy workflow stores the raw path and proxy path in the .prproj. On Sol the raws are "offline" (greyed) but proxies play. On Vector, because the raw paths are identical (/Volumes/Workspace/JustinWieb-VR/... → mapped to W:\JustinWieb-VR\...), Premiere re-links automatically. The one-time setup is saving the project on Vector with "Toggle Proxies" checked so both media states are remembered.

4.5 Shorts pipeline (Venus-only)

  1. Justin shoots vertical with A7IV (portrait cradle) or captures from Quest/Rayneo directly, already 2160×3840 MKV.
  2. On home network: UDev nightly cron runs ffmpeg to transcode those vertical clips into an iOS-friendly 1080×1920 H.264 into gdrive:JWVR-Shorts-Inbox/.
  3. Venus has Google Drive app → Files → LumaFusion imports directly from Drive. No AirDrop step needed.
  4. Edit + caption (CapCut auto-subtitles) → export 1080×1920 → post natively from Venus to IG Reels/TikTok/YouTube Shorts.
  5. After posting, LumaFusion exports land in Venus's camera roll; n8n can watch a shared iCloud folder + backup to /mnt/workspace/JustinWieb-VR/YYYY/<project>/Exports/Shorts/ for recordkeeping.

5. Cloud Service Tradeoffs

Service $/TB/mo Free tier Write speed (hotel 20 Mbps up) Fit
Google Drive (existing, 2 TB plan Justin already pays) ~$5 on 2 TB plan , 20 Mbps = ~2.3 MB/s ★★★★★ Use for project bundles, brand assets, shorts inbox. Already mounted on UDev via rclone. Zero friction.
Backblaze B2 $6 10 GB Same (network-bound) ★★★★ Add for cold-tier proxy archive + disaster-recovery of .prproj files. S3-compatible, rclone-supported, no per-file overhead. Buy when Drive hits 80% full.
Frame.io (Adobe, Creator/Team plans) Included in CC Pro, 500 GB 500 GB w/ CC Same ★★★ Strong Premiere integration (proxy workflow UI native in PPro), but the real value is client review, not travel storage. Revisit when Justin starts paid sponsor reviews where a brand wants to comment on cuts. Not worth setting up for solo travel edits.
Dropbox Smart Sync $12 2 GB Same ★☆☆ Duplicative with Drive. Skip unless a client mandates it.
iCloud Drive $10 for 2 TB 5 GB Same ★★ Fine for Venus camera roll backup and shorts exports (already exists via Apple One if Justin has it), but Mac-locked and no Vector/UDev native client. Not primary.

Recommendation: Stay on Google Drive for 90% of cases. Add Backblaze B2 as a ~$30/month cold archive for proxies + project file history once the archive gets big enough to matter. Keep Frame.io in reserve as a client-review tool, not travel storage.


6. Bandwidth Budget

All projections assume A7IV content dominates. Proxies are 1/20 of raw.

Uplink scenario Up speed Down speed Quest-Ad bundle (500 MB) CES bundle (5 GB) Raw clip grab (1 GB)
Home Google Fiber 1000+ Mbps 1000+ Mbps <10 s <1 min <15 s
Hotel wifi (good) 20 Mbps 50 Mbps ~3.5 min (pull) ~35 min ~3 min
Hotel wifi (typical) 5 Mbps 15 Mbps ~4.5 min ~45 min ~9 min
Airport / cafe wifi 10 Mbps 25 Mbps ~3 min ~30 min ~5.5 min
T-Mobile cellular hotspot 20 Mbps up / 100 Mbps down , ~40 s pull ~7 min ~80 s
In-flight wifi (GoGo) 0.5 Mbps 1 Mbps 🚫 1+ hour 🚫 >1 day 🚫 3 hours

What's feasible: - Pre-trip bundle pull to Sol: always do this on home wifi the night before travel. Never plan to pull a 5 GB bundle on hotel wifi. - On-trip "forgot a clip": Tailscale SMB to Finn + targeted rclone → a 1 GB clip pulls in ~9 min on hotel wifi. Acceptable. - On-trip project-file sync back to Drive: .prproj is <10 MB. Rclone auto-save script on Sol every 15 min is trivial bandwidth. - In-flight: only tiny .prproj sync works. Treat flights as "edit against already-local proxies, sync when landed."

Cellular warning: 5 GB bundle pull on cellular = ~4 GB of plan data. On a 50 GB/mo plan that's 8%. Don't do it habitually, default to "bundle at home, edit offline, sync project-file only on cellular."


7. Security Notes

  1. No credentials ever land on Sol.
  2. YouTube OAuth stays in n8n's encrypted DB. Decorator Crab owns that pipeline when Justin greenlights.
  3. IG/TikTok/X OAuth likewise, never as files on Sol.
  4. Any .env or credential file that leaks onto a bundle is a breach risk. Script prep-travel-bundle.sh above already excludes .env, *.key, *.pem by default (add an explicit deny-list: I'll put it in when Justin approves).

  5. Sol disk is the weakest link.

  6. Enable FileVault if not already (probably is: Mac default).
  7. Use a per-trip ~/JWVR-Travel/ directory; after return, nuke it (rm -rf ~/JWVR-Travel/*). Drive is authoritative.

  8. rclone config on Sol uses OAuth, not password.

  9. Drive OAuth token in ~/.config/rclone/rclone.conf is refreshable and revocable per-device. If Sol is lost, revoke that token from Google Account → Connected Apps. Do not copy the UDev rclone.conf to Sol, run rclone config on Sol fresh to get its own token.

  10. Tailscale on Sol.

  11. Currently showing offline 37 days in the UDev tailscale status output. That means if Justin travels today he can't reach Finn over Tailscale. Fix before first travel trip: re-login Tailscale on Sol, verify tailscale ping finn works.
  12. Enable Finn's subnet router (Finn already "offers exit node" per status) so Sol can reach 192.168.86.67 via Tailscale → SMB without VPN shenanigans.

  13. Backup of traveling project state.

  14. Sol → Google Drive .prproj save every 15 min via a launchd agent (one-line script). Cheap, protects against Sol loss.
  15. On return, the UDev pull-script keeps the pre-edit .prproj alongside the returned one (Project-Travel-Return/ sibling) so Justin can diff/roll back.

  16. Stay inside USER.md rules.

  17. No personal-Gmail OAuth grants anywhere in this pipeline.
  18. No public ports opened: Tailscale + Cloudflare tunnels only.
  19. No plaintext secrets in git. The bundle scripts store no credentials.

8. Phased Rollout

Phase 1, "Make proxies exist" (this week) 1. Standardize project layout: update the canonical template to Footage/ Assets/ Audio/ Project/ Exports/ Docs/ Proxies/. Write a short brands/justinwieb-vr/project-template.md + a scripts/jwvr/new-project.sh that scaffolds. 2. Deploy scripts/jwvr/generate-proxies.sh, cron every 15 min on UDev, initially limited to 2026/ projects. Let it churn overnight on the backlog. 3. Validate: open Quest-Ad-3-Traitors .prproj on Vector, attach generated proxies, verify playback + relink-to-original toggles work.

Phase 2, "Make travel possible" (pre-next-trip) 4. Deploy prep-travel-bundle.sh + pull-travel-edits.sh on UDev. 5. Install rclone on Sol, configure its own gdrive: remote, test pull of a small 500 MB bundle end-to-end. 6. Fix Tailscale on Sol (re-auth), test Finn SMB reach over Tailscale. 7. Do a dry-run: Justin picks a 2026 project, bundles it, pulls on Sol, opens Premiere, makes a trivial edit, syncs project back, UDev reconciles.

Phase 3, "Make shorts first-class" (next ~2 weeks) 8. Venus pipeline: nightly UDev cron transcodes the portrait mkv captures from glasses/Quest projects into gdrive:JWVR-Shorts-Inbox/. 9. Validate: Venus → LumaFusion → post to 3 platforms from one export. 10. Optional: Venus camera roll → iCloud → n8n ingest back to Workspace/JustinWieb-VR/YYYY//Exports/Shorts/ for record.

Phase 4, "Observability" (after Phase 3 stable) 11. Content-calendar surface: n8n ingests JustinWiebVR-Projects.xlsx (already in Drive) weekly, creates a dashboard panel (fleet dashboard dashboard/index.html already exists, add a JWVR tile) showing shot/edited/posted columns per project. 12. Thumbnail pipeline: codify Thumbnail/ as a required output folder, UDev script lints that each project has a thumbnail before it's marked "ready."

Phase 5, "Monetization ingestion" (Decorator Crab territory) 13. Separate handoff (decorator-crab-master-plan-2026-04-21.md, already exists) owns YouTube Analytics + affiliate-link performance → infra/context-api SQLite. Do NOT conflate into this handoff. Just flag the hook.


9. Open Decisions (numbered, with recommendations)

  1. Proxy location: inside project folder, or in a parallel Proxies/ tree?
  2. Recommend in-project (<project>/Proxies/<base>_proxy.mp4). Keeps project self-contained. Premiere's Attach Proxies maps _proxy.mp4 suffix automatically. Parallel tree makes bundling harder.

  3. Edit on Sol natively or via Frame.io?

  4. Recommend native for now. Frame.io only earns its keep when clients review cuts. Revisit after first paid brand-deal with review cycle.

  5. Transcode host: UDev (4 vCPU VM) or Finn direct (i9-13900H 14-core)?

  6. Recommend Finn, triggered via SSH from UDev. Finn has QuickSync hardware acceleration available for H.264 encoding, 10× faster than libx264 software. UDev stays the orchestrator; Finn does the heavy pixel work. Will speed up the CES backlog from ~10 hours to ~1 hour.

  7. Cloud tier: stay on Google Drive or add Backblaze B2 now?

  8. Recommend stay on Drive until 80% full. Current Drive footprint is tiny (~5 GB per Justin's own note from 2026-03-15). Room for 50+ project bundles before quota pressure. Add B2 when cold-archive mass hits ~1 TB.

  9. Auto-post scheduling: n8n now or wait for Decorator Crab?

  10. Recommend wait for Decorator Crab for YouTube (per security rules). IG/TikTok/X scheduled posting via n8n is fine to start early, lower-stakes OAuth, and those creds can live in n8n encrypted DB.

  11. Standardize project folder names going forward?

  12. Recommend yes, now. The Quest-Ad-3-Traitors layout is the cleanest (Footage/Assets/Audio/Docs/Exports/Project). Older projects with only Assets/ (raw footage dumped there) or Final/ vs Exports/ should be migrated lazily, rename only when touched, not a full backfill.

  13. Should Shorts be a separate brand/channel or under JWVR?

  14. Observed evidence: no dedicated Shorts project folder exists. Portrait captures live inside the parent project's Assets/. Recommend inside-parent, one project = all its outputs, including vertical. Cleaner for attribution and analytics.

  15. Vector ↔ UDev↔ Sol: keep SMB the canonical raw-access path on home LAN?

  16. Yes, already works (Vector via 10 Gbps SFP+ direct link; UDev via NFS; Sol via SMB over 192.168.86.67). Nothing to change.

  17. Single canonical project template directory, where does it live?

  18. Recommend brands/justinwieb-vr/project-template/ with empty folders + a README.md describing conventions. scripts/jwvr/new-project.sh 2026-05-15_Meta-Connect-Prep does cp -r to spin a new one.

Appendix A: Files and paths referenced

  • Source of truth (never moved): /mnt/workspace/JustinWieb-VR/YYYY/YYYY-MM-DD_Project-Name/
  • Brand assets: /mnt/workspace/Google-Drive/Business/JustinWieb-VR/Brand-Assets/ (509 MB)
  • Records: /mnt/workspace/Google-Drive/Business/JustinWieb-VR/Records/ (832 MB, by year)
  • Project tracker spreadsheet: /mnt/workspace/Google-Drive/Business/JustinWieb-VR/2026/JustinWiebVR-Projects.xlsx
  • New scripts (to build): /home/justinwieb/forge/scripts/jwvr/{generate-proxies.sh,prep-travel-bundle.sh,pull-travel-edits.sh,new-project.sh}
  • New project template (to build): /home/justinwieb/forge/brands/justinwieb-vr/project-template/
  • Cloud: gdrive:Travel-Bundles/<project>/ and gdrive:JWVR-Shorts-Inbox/
  • Tailscale IPs: Finn 100.112.22.2, UDev 100.97.43.104, Sol 100.88.217.97 (offline 37d, re-auth needed), Venus 100.68.73.1 (offline 7d)

Appendix B: Direct evidence cited

  • CES-Master-2026/Assets/C2009.MP4: h264, 3840x2160, yuv422p10le, 59.94 fps, 201 Mbps video, 223 Mbps total, PCM 16-bit audio
  • Quest-Ad-3-Traitors/Footage/C2352.MP4: h264, 3840x2160, yuv420p, 29.97 fps, 56 Mbps video, 62 Mbps total
  • Rayneo-Air-4-Pro-Batman/Assets/2026-03-12 14-08-59.mkv: h264, 2160x3840 (portrait), 60 fps, 29 Mbps total, aac audio
  • Rayneo-Air-4-Pro-Batman/Assets/IMG_8476.mov: h264, 3840x2160, 30 fps, 45 Mbps total
  • Finn NFS /etc/exports: locked to 192.168.86.50 only, no_root_squash for UDev
  • Finn SMB: [Workspace] and [Media] shares, valid users = justinwieb, force user = justinwieb
  • Tailscale (UDev perspective): Sol 100.88.217.97 offline 37d, Venus 100.68.73.1 offline 7d, Finn offers exit node

End of handoff. Next: Justin review → greenlight Phase 1 (proxy automation) → I or a worker builds scripts/jwvr/generate-proxies.sh + schedules cron. No action until greenlit.