From 014c7ca283efad4f34bdc678f94b57a95dd848ee Mon Sep 17 00:00:00 2001 From: Forge Dev Date: Sat, 11 Jul 2026 14:09:53 +0000 Subject: [PATCH] =?UTF-8?q?docs:=20README,=20roadmap=20002=20(feature=20ga?= =?UTF-8?q?ps=20vs=20Pomfort,=20tiered),=20wireframes=20=E2=80=94=20grade-?= =?UTF-8?q?centric=20vs=20library-centric=20layouts=20in=20Reel=20tokens?= =?UTF-8?q?=20w/=20recommendation=20(A=20main=20+=20B=20as=20library=20sur?= =?UTF-8?q?face)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 61 +++++ docs/design/wireframes.html | 342 +++++++++++++++++++++++++ docs/plans/002-roadmap-feature-gaps.md | 66 +++++ 3 files changed, 469 insertions(+) create mode 100644 README.md create mode 100644 docs/design/wireframes.html create mode 100644 docs/plans/002-roadmap-feature-gaps.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..79b71f7 --- /dev/null +++ b/README.md @@ -0,0 +1,61 @@ +# Rainbow Dragon (Forge) + +On-set live grading + DIT toolkit. Grades live **in the camera** over IP — no LUT box +required — plus verified offload, ASC MHL, clip logging, and proxy generation. +Sister product to dragonflight. + +## What it does + +- **In-camera live grading over IP** + - ARRI ALEXA 35 / Mini LF — CAP protocol (binary TCP :5055): native ASC CDL push, + 3D LUT (experimental), EVENT-driven metadata + - RED DSMC3 (Komodo/Raptor) — RCP2 (WebSocket :9998): native CDL via per-channel params + - Sony VENICE 2 — monitoring-only (protocol closed; grade via SDI chain) +- **Node-based grade engine** — input transform (LogC4 / Log3G10 / S-Log3 + gamuts), + CDL, saturation, monotone curves, 3D LUT, output transform; flattens to camera-ready + looks with CDL-split for live trim +- **Multicam** — gang slots, per-camera capability-aware flattening, debounced push +- **Auto clip logging** — rec events → shot records w/ camera metadata + grade snapshot +- **Deliverables** — ALE, CMX3600 EDL (ASC_SOP/SAT), CDL/CCC, CUBE, CSV +- **Offload** — multi-destination verified copy (xxHash64/MD5), **ASC MHL v2.0** + manifests (validates against official XSD), tamper detection, HTML/CSV reports +- **Proxies** — ffmpeg ProRes/DNxHR/H.264, grade bake via LUT, TC/clip burn-ins, + watch folders +- **Panels** — Tangent Wave control mapping (Hub TIPC shim lands in macOS phase) + +## Status + +Core engine + protocol layer complete: **200 tests**, all camera drivers verified against +wire-faithful simulators built from real protocol research (`docs/research/`). +macOS app (SwiftUI + Metal preview + DeckLink + Tangent Hub) is the next phase. + +## CLI + +``` +forge sim # run an ARRI CAP camera simulator +forge status --host --port 5055 # connection/rec state + metadata +forge push --host --look l.json --split-cdl +forge export --db forge.db --day "Day 01" --format ale|edl|ccc|cube|csv --out f +forge offload --to /raid --to /shuttle --report report.html +forge verify +forge proxy --db forge.db --day "Day 01" --media /raid --out /proxies --burn-look +``` + +## Build + +Swift 6.0+, Linux or macOS: + +``` +swift build && swift test +``` + +## Layout + +- `Sources/ForgeColor` — color math (CDL, transfer functions, LUTs, curves) +- `Sources/ForgeGrade` — node stack, flattening, snapshots +- `Sources/ForgeCamera*` — driver seam + ARRI/RED/Sony drivers +- `Sources/ForgeSim` — protocol-faithful camera simulators +- `Sources/ForgeLogger` / `ForgeLibrary` — clip logging, SQLite shot store +- `Sources/ForgeExport` / `ForgeOffload` / `ForgeProxy` — deliverables, offload/MHL, proxies +- `Sources/ForgePanel` / `ForgeVideo` — control surfaces, video I/O seams +- `docs/plans/` — implementation plans; `docs/research/` — protocol + competitive research diff --git a/docs/design/wireframes.html b/docs/design/wireframes.html new file mode 100644 index 0000000..6714bac --- /dev/null +++ b/docs/design/wireframes.html @@ -0,0 +1,342 @@ + + + + +Forge — Wireframes (Reel tokens) + + + + +

Forge — main window wireframes

+

Two layout philosophies, both rendered in Dragonflight "Reel" tokens +(cinema blacks, amber accent as tally, broadcast red = recording only, mono for all +technical values, hairline separation, 10.5px eyebrows). Structure is macOS-native: +NavigationSplitView three-pane, real toolbar. Same skin — different center of gravity.

+ + +

Layout A — grade-centric ("Livegrade philosophy")

+

The preview + node stack IS the app. Cameras left, shots accumulate +right as a passive log. Optimized for the 95% moment: DP behind you, trackball in hand, +grade now. Library is glanceable, not navigable.

+ +
+
+
Forge — Day 03 · Project Nightfall
+
+ + + +
+ 3 CAMERAS ONLINE + +
+
+ +
+
Camera Slots
+
+
A — ALEXA 35 + REC
+
R001C007EI 8005600K
+
+
+
B — V-RAPTOR + CDL
+
B001_C012ISO 80024.0
+
+
+
C — VENICE 2 + MONITOR
+
SDI chain
+
+
GANG: A + B linked · edits propagate · C solo
+
+ +
+
+ A · LogC4 → Rec709 + 14:23:07:11 + REC R001C007 +
+
+
Node Stack — A (ganged with B)
+
+
Input
LogC4 / AWG4
+
CDL · native
+
S 1.12 0.98 1.04
O +.02 .00 −.01
P 0.96 1.00 1.02 · Sat 1.10
+
Curves
master +2pt
+
Sat
0.92 · bypassed
+
LUT
K1S1_Film.cube
+
Output
Rec709 2.4
+
+
+
+ +
+
Today — 23 Shots
+
+
R001C007
14:22:31 → rolling
+ REC
+
+
R001C006
14:18:02 → 14:19:44
+ A
+
+
B001_C012
14:17:58 → 14:19:41
+ B
+
+
R001C005
13:58:11 → 14:01:03
+ A
+
+
R001C004
13:41:47 → 13:44:12
+ A
+
+
+
+

Trackball focus always lands on the selected node of the active slot. +Slot switch = one keystroke / panel button. Shot log rows are read-only here — clicking +one recalls its grade as a new version, never edits history.

+ + +

Layout B — library-centric ("Silverstack philosophy")

+

The shot table IS the app. Days/bins tree left, big sortable clip +table center, inspector right with grade + metadata for selection. Live grading is a mode +the inspector enters when a camera is selected. Optimized for data management, review, +exports — the DIT-cart-as-workstation story.

+ +
+
+
Forge — Project Nightfall
+
+ + + +
+ A REC + +
+
+ +
+
Project
+
Day 01 41
+
Day 02 38
+
Day 03 23
+
Cameras
+
A — ALEXA 35
+
B — V-RAPTOR
+
C — VENICE 2
+
Jobs
+
Offload A001
+
Proxies Day 02 72%
+
+ +
+
+
ClipTC In / Out + Camera · LookEI / WBGrade
+
+ R001C007 + 14:22:31 / — + A · K1S1_Film800 · 5600K + CDL+LUTREC
+
+ R001C006 + 14:18:02 / 14:19:44 + A · K1S1_Film800 · 5600K + CDL+LUT
+
+ B001_C012 + 14:17:58 / 14:19:41 + B · CDL only800 · 5600K + CDL
+
+ R001C005 + 13:58:11 / 14:01:03 + A · K1S1_Film800 · 5600K + CDL+LUT
+
+ R001C004 + 13:41:47 / 13:44:12 + A · K1S1_Film800 · 5600K + CDL+LUT
+
+ R001C003 + 13:22:09 / 13:25:40 + A · K1S1_Film1280 · 3200K + CDL+LUT
+
+
+ +
+
Inspector — R001C006
+
+
+
Duration00:01:42:03
+
EI / WB / Tint800 / 5600K / 0
+
FPS24.000
+
Offloadverified ×2
+
+
Grade Snapshot
+
+
Slope1.12 0.98 1.04
+
Offset+.02 .00 −.01
+
Power0.96 1.00 1.02
+
Sat1.10
+
LUTK1S1_Film.cube
+
+
Actions
+
+ + + +
+
+
+
+

Grading here happens in the inspector (or a summonable grade drawer) — +one step removed from the image. Stronger for offload/verify/report days; weaker for +the "roll sound, grade now" moment.

+ +
+

Recommendation

+

Layout A as the main window, with B's table one ⌘-key away (Library tab/window). + Forge's differentiator is in-camera live grading — the app should open into the moment + it wins. The library table (B) is genuinely better for end-of-day work, so ship it as a + second surface using the same panes, not a compromise hybrid of both.

+

Shared skin either way: bg-0 chrome, amber tally accent, #FF3B30 strictly for REC, + SF Mono for TC/CDL/clip names, hairline dividers, 10.5px eyebrows — family resemblance + to dragonflight without pretending to be a web app.

+
+ + + diff --git a/docs/plans/002-roadmap-feature-gaps.md b/docs/plans/002-roadmap-feature-gaps.md new file mode 100644 index 0000000..6f4e21f --- /dev/null +++ b/docs/plans/002-roadmap-feature-gaps.md @@ -0,0 +1,66 @@ +# Roadmap 002 — Feature gaps vs Pomfort (from competitive research) + +Source: docs/research/livegrade-silverstack-research.md + protocol research docs. +Status of core: 200 tests green; ARRI CAP + RED RCP2 drivers wire-verified; Sony monitoring-only. + +## Tier 1 — differentiators / near-term (build next) + +### T1.1 Look-match bridge (the Pomfort two-product moat, ours for free) +Grade snapshots already stored per shot keyed by clip name. Add: +- `forge ingest-match`: scan offloaded card, match clips to shot records by clip name, + auto-attach grade snapshot + emit per-clip .cdl/.cube alongside media +- This is Livegrade→Silverstack ShotHub flow without the cloud. Sister-product hook for + dragonflight later (shared JSON grade snapshot format already deterministic). + +### T1.2 Offload scheduler upgrade (biggest Lab-parity gap) +- Separate copy vs verify jobs (verify-later scheduling) +- Per-drive concurrency caps (don't saturate slow shuttle drives) +- Source re-read verification mode (card read integrity, not just copy) +- Cascading offload (fast RAID first, then RAID→LTO/archive as second-stage job) +- Job model: small DAG, per-resource queues. ForgeOffload already has verified-copy core. + +### T1.3 Checksum breadth +- Add XXH3/XXH128 (ASC MHL v2 supports both; spec'd) + C4ID (entertainment standard) +- SHA1 for legacy post houses. All slot into FileHasher + MHL writer cleanly. + +### T1.4 Report engine +- PDF/HTML shot reports w/ still thumbnails + grades (library has stills + snapshots) +- Offload reports already HTML — unify styling w/ Reel design tokens. + +## Tier 2 — solid adds + +### T2.1 Grading model extensions +- Printer lights + LGG interaction modes over existing CDL (interaction layer, same math) +- HSL secondaries node; 1D LUT node +- ACES: IDT/ODT via existing ColorSpace machinery; AMF export later + +### T2.2 Stream Deck + MIDI control +- DITs own Stream Decks. Cheap panel option beside Tangent. ForgePanel action model + already abstracted (PanelAction) — new input adapters only. + +### T2.3 Slot filters (non-grade image ops) +- Frame lines, anamorphic desqueeze, flip, metadata burn-in as per-slot filter chain + in preview/output path (ForgeVideo FrameProcessor extension). + +### T2.4 Audio/LTC (dailies-tier) +- BWF detection + LTC-from-audio TC extraction + auto sync. Feeds proxy engine. + +## Tier 3 — explicitly deferred (Pomfort sells these as paid add-ons = niche signal) +- LED wall control, internet streaming, chroma keyer, composite multi-view slots, + 50-input routing, LTFS/LTO, RAW debayer playback (huge scope; proxies via ffmpeg + sidestep), NDI input, router control (KUMO/Videohub). + +## Verified protocol status (carry-forward) +| Camera | Transport | Look push | State | +|---|---|---|---| +| ARRI Alexa 35 / Mini LF | CAP binary TCP :5055 | CDL native (0x0050) + LUT experimental | driver rewritten, sim-verified | +| RED DSMC3 | RCP2 WebSocket :9998/rcp | CDL native (per-channel params), no live LUT | driver rewritten, sim-verified | +| Sony Venice 2 | closed (web remote only public) | none claimed | monitoring-only; SDI-chain grading path | + +Note: Livegrade 7.2 ships Venice 2 in-camera grading — proves a partner wire path exists. +Escalation: Sony partner SDK or packet capture on hardware. + +## Hardware-phase checklist (macOS, unchanged from plan 001 Phase 6) +1. SwiftUI shell + Metal preview + DeckLink + Tangent Hub TIPC +2. On-hardware verification: CAP port/MD5-concat-order/LUT chunking; RCP2 against Komodo; + Venice web-remote backend capture