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.
| Event | Comfy Org — Open Source Higgsfield LA Build Night, Culver City, CA |
| Event page | https://comfy.org/open-source-higgsfield/ |
| Submission deadline | 2026-10-30 09:00 PT |
| Winners announced | 2026-11-06 |
| Build started | 2026-10-29 |
| Plan status | LIVE — updated as work lands |
| Deliverable | ComfyUI-Cinematographer — an Apache-2.0 ComfyUI node pack |
| Target categories | Open 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 |
|---|---|---|
| Plan | this file | What we intend to build, why, and what would falsify it. |
| Evidence | analysis/01–analysis/05 | The verified source material — code-cited, line-numbered, with the NOT-VERIFIED list. |
| Narrative | comfyui-higgsfield-cinema-oss.html / .pdf | The 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 |
|---|---|
| DONE | Built, and a named check passes. The check is cited. |
| BUILT | Code exists and imports, but no end-to-end run has exercised it. |
| IN FLIGHT | Being written right now. Not yet reviewable. |
| PLANNED | Scoped, not started. |
| BLOCKED | Cannot proceed without something outside our control. Named. |
| CUT | Deliberately dropped. The reason is recorded, not hidden. |
| NOT VERIFIED | Could 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 platform | False. No Higgsfield model weights, training code, or platform source have been released. | analysis/01-premise-and-reaim.md |
| Cinema Studio is a Higgsfield model | False. Cinema Studio 4.0 runs on Seedance 2.5 (ByteDance) — a closed, hosted API. | analysis/01 |
| There is a repo to fork | There 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.2 | Apache-2.0 — the only fully unencumbered open video family. | USE |
| LTX 2.3 / 2.5 | Free below $10M revenue; the LTX VFX bonus stacks cleanly. | USE |
| MiniMax H3 | The US is an excluded territory. Local commercial use needs a $5,000/month licence. | DO NOT USE |
| Seedance 2.5 | Closed 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 |
|---|---|---|
CameraReference3D | Gives 17 camera presets | Gives no judgement — it cannot tell you the shot is wrong |
| Comfy's own Cinematic Studio | Prompt composition | No evaluation, no measurement |
| Cinema Studio 4.0 | Generates a shot | No 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 |
|---|---|
EvaluateFraming | Scores a camera pose against the 9 framing rules; returns per-rule pass/fail + correction |
AutoFrameCamera | Iterates the camera until the frame passes, or reports that it did not |
EvaluateContinuity | Checks a sequence of shots for 180°-axis and 30°-rule violations |
SceneFramingExtras | Scene-graph-aware checks (occlusion, out-sizing, eyeline) |
CameraReliabilityZone | Reports the azimuth/elevation envelope where the re-shoot is trustworthy |
ReshootFromAngle | The 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)
| Status | DONE |
| Scope | app/cinematographer/{geometry,framing,continuity,autoframe,reliability,scene}.py |
| Why it is separate | The 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.py | Vec3, CamPose, Subject, ShotIntent, projection, anchors (eye at 0.92 × height), rule weights |
framing.py | The 9 framing rules + 3 informational rules; evaluate_framing() |
continuity.py | Choros — 180°-axis and 30°-rule evaluation across a shot sequence |
autoframe.py | The solver. The fix: early exit on overall_pass, a converged flag, iterations, residual |
reliability.py | The green/yellow/red azimuth-elevation envelope |
scene.py | Scene 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)
| Status | DONE |
| Scope | app/cinematographer/nodes.py, app/cinematographer/__init__.py, app/__init__.py, app/pyproject.toml |
| Rule | nodes.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
| Status | DONE (structurally) · NOT VERIFIED (never executed) |
| Scope | app/workflows/ |
| Graph | Stack | Nodes / links |
|---|---|---|
reshoot_ltx_crossview.json | LTX 2.3 + CrossView-Warp IC-LoRA + MoGe-2 | 35 / 49 |
reshoot_wan22_fun_control.json | Wan 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
_READMEnode inside each graph says so.
Phase 4 — Verification
| Status | DONE |
| Scope | verification/ |
| Check | Command | Result |
|---|---|---|
| Unit tests | pytest tests/ -q | 69 passed |
| Differential vs Go reference | differential_check.py go-reference-dump.json | 289 checks — ALL AGREE |
| Panel parity (Python ↔ JS) | app/web/parity_check.py | PASS — 28 fixtures, 0 mismatches |
| Graph structure | validate_graphs.py | PASS (both graphs) |
| Node pack loads | loader simulation | 6 nodes |
| Browser check | browser_check.mjs | PASS — 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)
| Status | DONE |
| Scope | app/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
| Status | DONE — findings being closed |
| Scope | verification/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:
- The solver convergence claim survived 1,800 adversarial calls with zero violations (
converged == report.overall_passalways; no zero-iteration convergence; no lying residual). - The parity check is not circular — leg [3] compares Python and JS live, bypassing the fixtures.
- The workflow validator caught all 6 injected structural defects.
- Licence and trademark clean: no Higgsfield in filenames or app strings, no MiniMax H3, no closed API, no partner nodes, no network calls in the engine.
What did not survive — and was fixed:
| Defect | Severity | Status |
|---|---|---|
Pack root had no __init__.py → pack cannot load | CRITICAL | FIXED + proven by loader simulation |
verification/README.md cited a non-existent panel_parity_check.py | Minor | FIXED |
validate_graphs.py had SamplerCustomAdvanced: 1 (real: 2) | Minor | FIXED |
test_framing.py constant F = 3.4567701 (correct: 3.4567901) | Minor | FIXED |
| 12 engine constants unconstrained by any check | MAJOR | IN FLIGHT — boundary fixtures |
eyeline (rule 12 of 14) never differentially verified | MAJOR | IN FLIGHT |
verification/README.md claimed "value-for-value" while skipping diverging fields | MAJOR | IN 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
| Status | PLANNED |
| Target | https://cloud.comfy.org/ |
| Method | Drive 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
| Status | PLANNED — 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,000 | Plausible |
| Most Innovative | RTX 5090 | Strong — no comparable node exists |
| Most Viral | RTX 5090 | Weak — depends on the post, not the code |
| Open Weights Only | RTX 5090 | Strong — the stack is licence-clean by construction |
| LTX VFX bonus | $2,000 cash | Strong — and it stacks cleanly with Open Weights Only |
| 10 runner-ups | $250 Comfy credits | Fallback |
| 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 |
|---|---|---|---|
| 1 | Name | ✅ | Nathaniel Hunter |
| 2 | Comfy app Email | ✅ | nathaniel@magieva.com |
| 3 | Country | ✅ | United States |
| 4 | Social handles / Discord / Reddit | — | to fill |
| 5 | ComfyUI familiarity (single-select) | ✅ | "I build custom nodes or contribute in other ways" |
| 6 | Project name / title | ✅ | ComfyUI-Cinematographer |
| 7 | One-line description (≤100 chars, enforced) | ✅ | "Camera moves you can verify: measured pass/fail per framing rule, with the correction in metres." (99) |
| 8 | GitHub repo URL — "Must be public, have an open-source license and setup instructions" | ✅ | pending publication decision |
| 9 | Demo video URL — "<2 mins" | ✅ | scripted in 02-DEMO-SCRIPT.md |
| 10 | Live link to try it — "Will NOT be shared publicly. Expect 5-10 runs" | — | the director's panel, if hosted |
| 11 | Social post link tagging #OpenSourceHiggsfield | ✅ | to post |
| 12 | Which parts of ComfyUI did you use? (multi-select) | ✅ | Comfy API / Router / SDK — per what we actually use |
| 13 | List all generative models used | ✅ | LTX 2.3 · CrossView-Warp IC-LoRA · MoGe-2 |
| 14 | Other tools / techniques | — | the measured-rule engine; "especially for the Most Innovative category" |
| 15 | Category (multi-select) | ✅ | see below |
| 16 | Is your stack fully open? (single-select) | ✅ | Yes |
| 17 | Agreements (multi-select, min 4 max 4) | ✅ | all four |
| 18 | Anything 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.
- The repo is public and carries an open-source licence.
- The work is lawful and SFW, with no unlicensed IP and no real person's likeness used without permission.
- Comfy, Runpod, LTX, BFL and MiniMax may feature the submission per the Creator Feature Terms.
- "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.
- 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 keep00-BREAKDOWN.md,01-SPEC.md,analysis/*, andverification/go-reference-dump.jsonprivate. - Publish the repo.
app/already carriesLICENSE(Apache-2.0) and a PEP 621pyproject.tomlwith[tool.comfy] PublisherId = "magieva".[project.urls]is deliberately absent until the real URL exists — add it at publish time. - 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. - Post to social tagging
#OpenSourceHiggsfield. Draft copy is in03-SUBMISSION.md. - 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.
- 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 Overallis 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 |
|---|---|
| Lead | app/cinematographer/{geometry,framing,scene,continuity,autoframe,reliability}.py, app/__init__.py, app/tests/, app/README.md, app/LICENSE, verification/ |
| nodes | app/cinematographer/nodes.py, app/cinematographer/__init__.py, app/pyproject.toml, app/requirements.txt, app/workflows/ |
| panel | app/web/ |
| adversary | verification/ADVERSARIAL-REVIEW.md |
| dossier | client-reports/comfyui-higgsfield-cinema-oss/ (root files, analysis/, assets/) |
| buildlog | client-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 ComfyUI | NOT VERIFIED — no instance has been run |
| LTX 2.3 + CrossView-Warp output quality | NOT 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 criteria | Not published. No rubric exists to verify against. |
| The Higgsfield C&D | REPORTED, NOT VERIFIED — no primary source obtained |
Provenance of go-reference-dump.json | NOT 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:
- [x] 69 unit tests pass
- [x] 289 differential checks agree with the Go reference
- [x] Panel parity passes (28 fixtures, 0 mismatches)
- [x] Both workflow graphs pass structural validation
- [x] The node pack loads under a faithful simulation of ComfyUI's loader (6 nodes)
- [x] No Higgsfield product name anywhere in the pack
- [x] No MiniMax H3, no closed API, no partner nodes, no network calls in the engine
- [ ] Boundary fixtures for all 12 unconstrained constants — in flight
- [ ]
eyelinedifferentially verified — in flight - [ ]
verification/README.md"value-for-value" claim made true — in flight - [ ] Pack runs on ComfyUI Cloud — planned
- [ ] Demo video < 2 min recorded — planned
- [ ] Public repo published — blocked on the publication decision
- [ ] Submitted before 2026-10-30 09:00 PT — planned
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-29 | Premise re-aimed from "fork Higgsfield" to "open-source the capability" | Higgsfield never open-sourced anything; there is nothing to fork |
| 2026-10-29 | MiniMax H3 removed from the stack | US is an excluded territory; $5,000/month for local commercial use |
| 2026-10-29 | Rule count corrected from 38 to 14 machine-evaluated | 38 are documented; only 14 are implemented |
| 2026-10-29 | Solver claim corrected — reference has no convergence test | Our port adds early exit; the reference does not have it |
| 2026-10-29 | reshoot_wan22_vace.json → reshoot_wan22_fun_control.json | The checkpoint is Fun-Control, not VACE |
| 2026-10-29 | CRITICAL: pack root __init__.py added | ComfyUI's loader does not recurse; the pack could not load |
| 2026-10-29 | verification/README.md parity command corrected | Cited a file that does not exist |
| 2026-10-29 | validate_graphs.py SamplerCustomAdvanced slot count 1 → 2 | Real node has 2 outputs |
| 2026-10-29 | test_framing.py F corrected to 3.45679012345679 | Miscomputed constant |
| 2026-10-29 | Adversarial review completed; 12 unconstrained constants identified | Fixtures give in_frame and level one distinct value each |
9. Provenance
| Repository | higgsfield-comfyui-os (not a git repo at time of writing) |
| Method | Static source inspection, unit tests, differential execution against a Go reference dump, headless-browser checks |
| ComfyUI loader semantics | Verified against nodes.py:2271 and init_external_custom_nodes |
| Report package | client-reports/comfyui-higgsfield-cinema-oss/ |
| Confidentiality | Confidential · Magieva Inc. · 2026 |
This file is updated as the build lands. Last update: 2026-10-29.