ComfyUI Higgsfield Opensource Challenge The plan and the build record ← Build log

The plan and the build record

Open-Sourcing the Higgsfield Cinema Studio Application — Live Build Plan

A running, near-real-time record of the plan in relationship to the build.

This file is the plan-of-record for the ComfyUI-Cinematographer open-source release, written to be read alongside the build rather than after it. It is updated as work lands, not retrospectively. Where the plan and the build disagree, the build wins and this file is corrected — the correction is recorded in the changelog at the bottom rather than quietly overwritten.

EventComfy Org — Open Source Higgsfield LA Build Night, Culver City, CA
Event pagehttps://comfy.org/open-source-higgsfield/
Submission deadline2026-10-30 09:00 PT
Winners announced2026-11-06
Build started2026-10-29
Plan statusLIVE — updated as work lands
DeliverableComfyUI-Cinematographer — an Apache-2.0 ComfyUI node pack
Target categoriesOpen Weights Only · LTX VFX bonus · Most Innovative

0. How to read this document

Three layers, deliberately separated so that a claim can always be traced to its evidence:

Layer Where What it is
Planthis fileWhat we intend to build, why, and what would falsify it.
Evidenceanalysis/01–analysis/05The verified source material — code-cited, line-numbered, with the NOT-VERIFIED list.
Narrativecomfyui-higgsfield-cinema-oss.html / .pdfThe dossier built on top of both.

Status vocabulary is fixed and used consistently. It is the same vocabulary as the comfyui-in-magieva-desktop dossier, so the two packages can be read together:

Term Meaning
DONEBuilt, and a named check passes. The check is cited.
BUILTCode exists and imports, but no end-to-end run has exercised it.
IN FLIGHTBeing written right now. Not yet reviewable.
PLANNEDScoped, not started.
BLOCKEDCannot proceed without something outside our control. Named.
CUTDeliberately dropped. The reason is recorded, not hidden.
NOT VERIFIEDCould not be confirmed. Stated as a gap, never as a fact.

1. The premise, and what is actually true

The event is framed as "Open Source Higgsfield." The natural reading is that Higgsfield has released something to fork. It has not. This is the first thing the plan had to settle, because the entire build depends on it.

Belief Reality How we know
Higgsfield open-sourced its platformFalse. No Higgsfield model weights, training code, or platform source have been released.analysis/01-premise-and-reaim.md
Cinema Studio is a Higgsfield modelFalse. Cinema Studio 4.0 runs on Seedance 2.5 (ByteDance) — a closed, hosted API.analysis/01
There is a repo to forkThere is not. Nothing to fork, nothing to vendor, nothing to patch.analysis/01

So the plan re-aims. We cannot open-source Higgsfield's application, because it was never closed and then opened — it was never open at all. What we can do, and what the event actually rewards, is open-source the capability that Cinema Studio sells, on a licence-clean stack, in the system the event is about: ComfyUI.

The re-aim in one line: Cinema Studio's value is "re-shoot this from any angle and it will still cut together." We are open-sourcing that guarantee — as a measurable, verifiable property of a ComfyUI graph, not a prompt.

1.1 The licence trap — why the stack is what it is

This is the constraint that shaped every other decision, and it is the part most likely to be got wrong by other entrants.

Model family Licence reality Verdict
Wan 2.1 / 2.2Apache-2.0 — the only fully unencumbered open video family.USE
LTX 2.3 / 2.5Free below $10M revenue; the LTX VFX bonus stacks cleanly.USE
MiniMax H3The US is an excluded territory. Local commercial use needs a $5,000/month licence.DO NOT USE
Seedance 2.5Closed hosted API.DO NOT USE

"Open weights" is not "open licence." A pack that ships a MiniMax H3 graph is not an open-source submission in the US — it is a licence violation with a demo attached. The plan commits to no MiniMax H3 anywhere in the pack, and that commitment is checked, not asserted.

1.2 The trademark constraint

REPORTED, NOT VERIFIED: two independent search syntheses report that Higgsfield served Comfy Org a cease-and-desist on 2026-10-28 (trademark and CEO likeness), refused 2026-10-29. We could not confirm this from a primary source.

We do not need to confirm it to act on it. Nothing in this pack is named after a Higgsfield product. No "Cinema Studio," no "Higgsfield," no product-adjacent naming. The pack is ComfyUI-Cinematographer and the nodes are named for what they measure. This is checked by grep, and the check is in the acceptance list (§7).


2. What we are building

ComfyUI-Cinematographer — a ComfyUI node pack that turns camera direction into a verifiable property of a graph.

The thesis, in one sentence:

Every other camera tool in the ComfyUI ecosystem composes a prompt. This one judges the result — it measures the frame against 14 machine-evaluated cinematography rules, returns a pass/fail per rule with a correction expressed in metres, and can iterate the camera until the frame passes.

2.1 Why this is not already in the ecosystem

Existing thing What it does What it does not do
CameraReference3DGives 17 camera presetsGives no judgement — it cannot tell you the shot is wrong
Comfy's own Cinematic StudioPrompt compositionNo evaluation, no measurement
Cinema Studio 4.0Generates a shotNo continuity enforcement at all

No framing-evaluation node exists in the ComfyUI ecosystem. That is the gap, and it is the whole submission.

2.2 The six nodes

Node What it does
EvaluateFramingScores a camera pose against the 9 framing rules; returns per-rule pass/fail + correction
AutoFrameCameraIterates the camera until the frame passes, or reports that it did not
EvaluateContinuityChecks a sequence of shots for 180°-axis and 30°-rule violations
SceneFramingExtrasScene-graph-aware checks (occlusion, out-sizing, eyeline)
CameraReliabilityZoneReports the azimuth/elevation envelope where the re-shoot is trustworthy
ReshootFromAngleThe end-to-end re-shoot entry point

2.3 The honesty ledger — what we do not claim

This is load-bearing. The pack is only credible if its limits are stated as loudly as its capabilities.

Tempting claim What is true Where it is stated
"38 cinematography rules"The rulebook documents 38. 14 are machine-evaluated (9 EvaluateFraming + 3 SceneFramingExtras + 2 EvaluateContinuity).01-SPEC.md §3, analysis/03
"The solver converges"AutoFrameCamera runs 24 iterations with no convergence test and no early exit in the reference implementation. Our port adds early exit and a converged flag — and says so.analysis/04
"Verified on ComfyUI"Only true once it has actually been run. Until then: NOT VERIFIED.§6 of this file
"Works with any video model"It is validated on the licence-clean stack only.01-SPEC.md §7

3. The build, in phases

Each phase has an owner, a write scope, and an acceptance check. Phases are ordered by dependency, not by importance.

Phase 1 — Engine (pure Python, no ComfyUI import)

StatusDONE
Scopeapp/cinematographer/{geometry,framing,continuity,autoframe,reliability,scene}.py
Why it is separateThe engine imports nothing from ComfyUI. It is testable, portable, and reviewable without a GPU or a ComfyUI install.

The engine is a faithful port of a Go reference implementation, which is what makes the differential check in Phase 4 possible.

Module Responsibility
geometry.pyVec3, CamPose, Subject, ShotIntent, projection, anchors (eye at 0.92 × height), rule weights
framing.pyThe 9 framing rules + 3 informational rules; evaluate_framing()
continuity.pyChoros — 180°-axis and 30°-rule evaluation across a shot sequence
autoframe.pyThe solver. The fix: early exit on overall_pass, a converged flag, iterations, residual
reliability.pyThe green/yellow/red azimuth-elevation envelope
scene.pyScene graph, entity bounding boxes, occlusion and out-sizing checks

Acceptance: cd app && /tmp/cine-venv/bin/python -m pytest tests/ -q → 69 passed.

Phase 2 — Node pack (the ComfyUI surface)

StatusDONE
Scopeapp/cinematographer/nodes.py, app/cinematographer/__init__.py, app/__init__.py, app/pyproject.toml
Rulenodes.py is the only file that imports ComfyUI, and the import is guarded.

The critical defect found and fixed here. ComfyUI's loader does not recurse:

# ComfyUI nodes.py:2271 — the actual loader
spec = importlib.util.spec_from_file_location(name, os.path.join(pack_root, "__init__.py"))

init_external_custom_nodes uses os.listdir with no recursion, then loads <pack_root>/__init__.py. A pack root must have an __init__.py. Ours did not — the pack would have failed to load with FileNotFoundError: 'ComfyUI-Cinematographer/__init__.py'.

Fixed by writing app/__init__.py as a pack-root shim that inserts its own directory into sys.path and re-exports the mappings. Proven by simulating ComfyUI's exact loader against a clean copy at /tmp/comfy-sim/custom_nodes/:

LOADED ComfyUI-Cinematographer: 6 nodes

Acceptance: the loader simulation above, plus all six node names present in NODE_CLASS_MAPPINGS.

Phase 3 — Workflows

StatusDONE (structurally) · NOT VERIFIED (never executed)
Scopeapp/workflows/
Graph Stack Nodes / links
reshoot_ltx_crossview.jsonLTX 2.3 + CrossView-Warp IC-LoRA + MoGe-235 / 49
reshoot_wan22_fun_control.jsonWan 2.2 Fun-Control (Apache-2.0)25 / 33

Naming correction recorded: the Wan graph was originally named reshoot_wan22_vace.json. The checkpoint is Fun-Control, not VACE. Renamed, and the _README naming note plus both cross-references updated.

Acceptance: validate_graphs.py — JSON parse, class_type + inputs, slot counts, link resolution, acyclicity, reachability from SaveVideo. Both graphs PASS.

Stated plainly: a structurally valid graph is not a working graph. Neither has been executed. The _README node inside each graph says so.

Phase 4 — Verification

StatusDONE
Scopeverification/
Check Command Result
Unit testspytest tests/ -q69 passed
Differential vs Go referencedifferential_check.py go-reference-dump.json289 checks — ALL AGREE
Panel parity (Python ↔ JS)app/web/parity_check.pyPASS — 28 fixtures, 0 mismatches
Graph structurevalidate_graphs.pyPASS (both graphs)
Node pack loadsloader simulation6 nodes
Browser checkbrowser_check.mjsPASS — 18/18

The differential check is the strongest evidence in the package. It runs the Go reference dump through the Python port at TOL = 1e-6 and compares value-for-value. It is what turns "we ported it" into "we ported it correctly."

Phase 5 — Panel (the visual surface)

StatusDONE
Scopeapp/web/

A three.js panel that renders the camera, the subject, and the rule results live. It is what makes the demo video legible in under two minutes.

Honest note carried forward: the panel opens on a failing frame (rule_of_thirds, shot_size) so the demo has something to fix. After Auto-Frame the overall badge reads PASS while lead_room (weight 0.4) may stay red — that is the spec, and the panel shows it rather than hiding it.

Phase 6 — Adversarial review

StatusDONE — findings being closed
Scopeverification/ADVERSARIAL-REVIEW.md (740 lines)

An independent adversary was pointed at our own claims with instructions to falsify them. Verdicts: A PARTIAL · B PARTIAL · C CONFIRMED · D CONFIRMED (not circular) · E PARTIAL · F CONFIRMED · G REFUTED · H PARTIAL. 17-item defect register, 24-attempt falsification log.

What survived attack — and this is the part worth keeping:

What did not survive — and was fixed:

Defect Severity Status
Pack root had no __init__.py → pack cannot loadCRITICALFIXED + proven by loader simulation
verification/README.md cited a non-existent panel_parity_check.pyMinorFIXED
validate_graphs.py had SamplerCustomAdvanced: 1 (real: 2)MinorFIXED
test_framing.py constant F = 3.4567701 (correct: 3.4567901)MinorFIXED
12 engine constants unconstrained by any checkMAJORIN FLIGHT — boundary fixtures
eyeline (rule 12 of 14) never differentially verifiedMAJORIN FLIGHT
verification/README.md claimed "value-for-value" while skipping diverging fieldsMAJORIN FLIGHT

The systemic finding, stated honestly: the 9 framing fixtures give in_frame and level exactly one distinct value each — nothing sits near a boundary. So 12 constants could be mutated without any check noticing, and the parity check shared the blindness (4 of 10 JS mutations went undetected). The fix is one boundary fixture per threshold. This is the single most important open item in the build.

Phase 7 — ComfyUI Cloud validation

StatusPLANNED
Targethttps://cloud.comfy.org/
MethodDrive via Magieva browser-service (deployed, ns magieva-sandbox, ClusterIP 10.180.33.191:8209)

The point of this phase is to move the pack from BUILT to VERIFIED on Comfy's own system, with Comfy's own tokens. Until this runs, every claim about live behaviour stays in the NOT-VERIFIED column.

Blocker: no comfy.org login is present in ~/.nathanielhunter-credentials (it holds only the Magieva login). Path forward: Chrome profile 38 ("Magieva", nathaniel@magieva.com) carries full Google auth cookies, so OAuth sign-in to comfy.org is viable; alternatively the user handles signup.

Phase 8 — Publication and submission

StatusPLANNED — publication line deliberately deferred ("decide later — build first")

The competition requires an OSI licence and a public repo. The Magieva monorepo cannot be published.

Recommendation on record: publish app/ only as a standalone Apache-2.0 repository. Keep 00-BREAKDOWN.md, 01-SPEC.md, analysis/*, and verification/go-reference-dump.json private.

Submission needs: GitHub repo URL · demo video < 2 min · social post tagging #OpenSourceHiggsfield · category multi-select · optional live link. The only stated rule is one submission per person. No judges and no rubric have been published — so the plan optimises for a legible two-minute demo rather than for a guessed rubric.


4. Prizes, and which ones this build can actually win

Prize Value Reachable?
Best Overall$10,000Plausible
Most InnovativeRTX 5090Strong — no comparable node exists
Most ViralRTX 5090Weak — depends on the post, not the code
Open Weights OnlyRTX 5090Strong — the stack is licence-clean by construction
LTX VFX bonus$2,000 cashStrong — and it stacks cleanly with Open Weights Only
10 runner-ups$250 Comfy creditsFallback
FLUX / MiniMax H3 API credits—Not pursued — MiniMax H3 is excluded territory

The "$25,000" headline is a valuation, not a cash pool. The plan targets Open Weights Only + LTX VFX bonus + Most Innovative, because those three are the ones the build's actual properties earn.


4b. Submission mechanics — how the entry actually gets filed

Status: DONE — verified against the form itself. The research pass read the submission form directly. This section is the plan-of-record for filing.

The submission channel

The form is https://form.typeform.com/to/V1dSQrkS. It is a Typeform, it needs no login, and it is the only submission channel. Verified live: isFormClosed: false, created 10/02, published 10/05, last updated 2026-10-26T17:46:34Z.

There is a separate form for event signup / free credits — https://form.typeform.com/to/Ayn9Cwfj. That is not the submission.

This retires the comfy.org-login blocker for filing purposes. The login was only ever needed to read the rules page. The form itself is anonymous. A login is still useful for the Cloud validation run, but it does not gate the submission.

Deadline: 2026-10-30 09:00 PT = 16:00 UTC = 12:00 ET. Hard Typeform close, no grace period. Winners announced 2026-11-06.

The form's fields, verbatim

# Field Required Our answer
1Name✅Nathaniel Hunter
2Comfy app Email✅nathaniel@magieva.com
3Country✅United States
4Social handles / Discord / Reddit—to fill
5ComfyUI familiarity (single-select)✅"I build custom nodes or contribute in other ways"
6Project name / title✅ComfyUI-Cinematographer
7One-line description (≤100 chars, enforced)✅"Camera moves you can verify: measured pass/fail per framing rule, with the correction in metres." (99)
8GitHub repo URL — "Must be public, have an open-source license and setup instructions"✅pending publication decision
9Demo video URL — "<2 mins"✅scripted in 02-DEMO-SCRIPT.md
10Live link to try it — "Will NOT be shared publicly. Expect 5-10 runs"—the director's panel, if hosted
11Social post link tagging #OpenSourceHiggsfield✅to post
12Which parts of ComfyUI did you use? (multi-select)✅Comfy API / Router / SDK — per what we actually use
13List all generative models used✅LTX 2.3 · CrossView-Warp IC-LoRA · MoGe-2
14Other tools / techniques—the measured-rule engine; "especially for the Most Innovative category"
15Category (multi-select)✅see below
16Is your stack fully open? (single-select)✅Yes
17Agreements (multi-select, min 4 max 4)✅all four
18Anything else for judges—the honesty ledger

The four mandatory agreements

All four are required — the field enforces min=4 max=4, so a partial tick cannot be submitted.

  1. The repo is public and carries an open-source licence.
  2. The work is lawful and SFW, with no unlicensed IP and no real person's likeness used without permission.
  3. Comfy, Runpod, LTX, BFL and MiniMax may feature the submission per the Creator Feature Terms.
  4. "This is my only submission."

Gap on record: agreement 3 references "Creator Feature Terms" with no hyperlink, and no such page exists on comfy.org (404 on every guess; absent from the sitemap). We are agreeing to terms we cannot read. This is noted, not resolved.

What is NOT required

Worth stating because the build assumed some of these: a ComfyUI custom node pack, a Comfy Registry listing, ComfyUI Manager installability, a specific video platform, a public/unlisted video, or an OSI-approved licence (the form says only "an open-source license"). Video duration is not mechanically enforced — the "<2 mins" is a field description, not a validator.

The filing sequence

Ordered, because three of these are gated on decisions that are still open.

  1. Resolve the publication line (decision queue item 1). The competition requires an OSI licence and a public repo; the Magieva monorepo cannot be published. Recommendation on record: publish app/ only as a standalone Apache-2.0 repo, and keep 00-BREAKDOWN.md, 01-SPEC.md, analysis/*, and verification/go-reference-dump.json private.
  2. Publish the repo. app/ already carries LICENSE (Apache-2.0) and a PEP 621 pyproject.toml with [tool.comfy] PublisherId = "magieva". [project.urls] is deliberately absent until the real URL exists — add it at publish time.
  3. Record the demo video (< 2 min; script is 02-DEMO-SCRIPT.md, target 1:48). The two open sub-questions are now resolved in the script: the NOT CONVERGED state has a reproducible recipe (1.20 m + closeup + high → Auto-Frame), and the continuity readout is corrected to the panel's actual 55° with the previously omitted failing cut restored.
  4. Post to social tagging #OpenSourceHiggsfield. Draft copy is in 03-SUBMISSION.md.
  5. File the form at https://form.typeform.com/to/V1dSQrkS — no login needed — with the repo URL, video URL, post URL, the category selection, and all four agreements ticked.
  6. Confirm receipt — screenshot the confirmation, and record it in §8.

Category selection (target)

Open Weights Only + VFX Built with LTX Bonus + Most Innovative. Those are the three the build's actual properties earn, and the LTX cash bonus is the only one that stacks cleanly with Open Weights Only. MiniMax H3 is deliberately absent from the stack — the US is an excluded territory and local commercial use needs a $5,000/month licence.

Exact spellings as they appear on the form (the multi-select is literal, so copy them):

Most Innovative · Most Viral · Open Weights Only · Built with FLUX 3 Bonus · VFX Built with LTX Bonus · Built with MiniMax H3 Bonus

Correction to an earlier assumption: Best Overall is NOT selectable. Every entry is automatically considered for it. The bonus tracks stack with a main category rather than replacing it. The LTX bonus is $2,000 cash and requires that "LTX must be the core video model in the workflow to qualify" — which is why the primary workflow is LTX 2.3 and not Wan.

Prizes, as actually stated

Cash is $12,000 total — $10,000 (Best Overall) + $2,000 (LTX bonus). The rest of the headline "$25,000" is a valuation: 3× RTX 5090, $2,500 Comfy credits, and FLUX/MiniMax API credits.

Blocker

There is no comfy.org login in ~/.nathanielhunter-credentials — that file holds only the Magieva login. Two paths, both in the decision queue: OAuth sign-in through the Chrome "Magieva" profile (Profile 38, which holds full Google auth cookies), or the user signs up directly. This does not gate filing — the submission form needs no login. It gates only the Cloud validation run.

Pre-submission gate

Nothing is filed until every box in §7 is ticked. The adversarial review's bottom line is currently NOT SAFE TO SUBMIT AS-IS; the CRITICAL install defect it found is now fixed and re-verified, but the 12 unconstrained constants and the eyeline gap remain open.


5. Write scopes

Advisory and disjoint, so parallel work cannot collide.

Owner Scope
Leadapp/cinematographer/{geometry,framing,scene,continuity,autoframe,reliability}.py, app/__init__.py, app/tests/, app/README.md, app/LICENSE, verification/
nodesapp/cinematographer/nodes.py, app/cinematographer/__init__.py, app/pyproject.toml, app/requirements.txt, app/workflows/
panelapp/web/
adversaryverification/ADVERSARIAL-REVIEW.md
dossierclient-reports/comfyui-higgsfield-cinema-oss/ (root files, analysis/, assets/)
buildlogclient-reports/comfyui-higgsfield-cinema-oss/buildlog/

6. What is NOT verified

Stated as a gap, not rounded into a roadmap item.

Claim Status
The workflow graphs run on a live ComfyUINOT VERIFIED — no instance has been run
LTX 2.3 + CrossView-Warp output qualityNOT VERIFIED — no render produced
The reliability envelope (±45° azimuth)Documented model property from CrossView-Warp's published trained range. Not independently measured here.
The competition's judging criteriaNot published. No rubric exists to verify against.
The Higgsfield C&DREPORTED, NOT VERIFIED — no primary source obtained
Provenance of go-reference-dump.jsonNOT VERIFIED — no Magieva Go checkout was available to the adversary, so a stale or fabricated dump would not have been detected by any check we ran. This is the largest hole in the chain.

7. Acceptance — what "done" means

The build is done when all of these hold, each with a cited check:


8. Changelog — plan vs build

Corrections are recorded here rather than silently applied. This is the "running rebuild" the document exists to provide.

When What changed Why
2026-10-29Premise re-aimed from "fork Higgsfield" to "open-source the capability"Higgsfield never open-sourced anything; there is nothing to fork
2026-10-29MiniMax H3 removed from the stackUS is an excluded territory; $5,000/month for local commercial use
2026-10-29Rule count corrected from 38 to 14 machine-evaluated38 are documented; only 14 are implemented
2026-10-29Solver claim corrected — reference has no convergence testOur port adds early exit; the reference does not have it
2026-10-29reshoot_wan22_vace.json → reshoot_wan22_fun_control.jsonThe checkpoint is Fun-Control, not VACE
2026-10-29CRITICAL: pack root __init__.py addedComfyUI's loader does not recurse; the pack could not load
2026-10-29verification/README.md parity command correctedCited a file that does not exist
2026-10-29validate_graphs.py SamplerCustomAdvanced slot count 1 → 2Real node has 2 outputs
2026-10-29test_framing.py F corrected to 3.45679012345679Miscomputed constant
2026-10-29Adversarial review completed; 12 unconstrained constants identifiedFixtures give in_frame and level one distinct value each

9. Provenance

Repositoryhiggsfield-comfyui-os (not a git repo at time of writing)
MethodStatic source inspection, unit tests, differential execution against a Go reference dump, headless-browser checks
ComfyUI loader semanticsVerified against nodes.py:2271 and init_external_custom_nodes
Report packageclient-reports/comfyui-higgsfield-cinema-oss/
ConfidentialityConfidential · Magieva Inc. · 2026

This file is updated as the build lands. Last update: 2026-10-29.