Pivot docs/automations/ from "one folder per model" to "one folder per
automation module" so the same diffusion model can host several
independent tasks side by side. Replace the parallel docs/investigations/
tree with a fork of WhatDreamsCost-ComfyUI under forks/.
Automation modules (new layout)
- docs/automations/LTX-2.3/base-1step/ the existing single-stage
automation, moved from
docs/automations/LTX-2.3/
with its README, findings,
and handoff-checklist
rescoped to the task. The
4k-transitions backstory
that produced the module
moves here as
backstory/4k-transitions.md.
The earlier
docs/investigations/experiments/
card PNGs/HTML land in
example-cards/.
- docs/automations/LTX-2.3/audio-lipsync/ the audio-file lip-sync
module previously living
under docs/investigations/01_…/.
README, handoff, findings
stub, backstory/, and
runs/{LOOP,log}.md, all
referencing the new fork.
- docs/automations/README.md + CHEATSHEET.md updated to describe the
module-per-task pivot and
the new tree shape.
- docs/automations/CONVENTIONS.md unchanged (cross-cutting
loop contract still holds).
WhatDreamsCost Koolook fork (new)
- forks/whatdreamscost_koolook/versions/v1_3_2/
UPSTREAM_PIN.yaml pinned to upstream e81223a
(v1.3.2), GPL-3.0
verified 2026-05-28.
ltx_director.py MODIFIED — adds the
relay_overrides multiline
JSON widget on LTXDirector.
Moved from
docs/investigations/01_…/patches/.
prompt_relay.py MODIFIED — per-segment σ per
the Prompt-Relay paper
formula σ = (L − w_eff) /
(2 · √ln(1/ε)). Moved from
docs/investigations/01_…/patches/.
patches.py UNMODIFIED — vendored
verbatim from upstream
because ltx_director.py
imports detect_model_type
and apply_patches from it
(same precedent as
radiance_koolook's
color_helpers.py).
- Registered as LTXDirector__koolook_v1_3_2 ("LTX Director (Koolook v1.3.2)")
so it coexists with an installed copy of upstream WhatDreamsCost-ComfyUI.
Wired into the root __init__.py NODE_CLASS_MAPPINGS merge.
- forks/forks_manifest.yaml + forks/THIRD_PARTY.md updated with the new
entry (attribution, change log, license verified date, exposed node IDs).
Removed
- docs/investigations/ entire tree retired; its
contents either moved to
automation modules or to
forks/.
- scripts/sync_investigation_patches.py no longer needed — fork
code lives in the Koolook
tree and is synced via the
standard dev-sync flow.
- KOLOOK_WHATDREAMSCOST_PATH in .env.example same reason.
- docs/investigations in pyproject.toml's ruff
extend-exclude added in 96bf8ad to silence
lint on vendored patches;
no longer needed now that
vendored code is under
forks/ (already excluded).
Docs
- docs/reference/glossary.md Investigation folder,
Investigation patches,
JSON file folder, and the
sync_investigation_patches.py
entries replaced by
Automation module, Backstory,
Working folder, and Card.
Loop and Run rewritten to
point at the new structure.
- CHANGELOG.md [Unreleased] describes the restructure +
the new fork.
Verification
- ruff check . → all checks passed
- tools/preflight_release.py --skip manager-meta → 42 files parsed; 11
unique node IDs collected including LTXDirector; VAE dispatch branches
all OK; fixture workflows still reference all registered Koolook IDs.
- pytest → 173 passed, 0 failed.
Workflow JSON heads-up
The active audio-lipsync workflow LTX-23-audio_tests_v01.json continues to
reference the upstream LTXDirector ID. To pick up the new fork's behaviour,
swap that node to "LTX Director (Koolook v1.3.2)" (registered ID
LTXDirector__koolook_v1_3_2) — sockets and wiring are preserved. The
relay_overrides widget appears at the bottom of the new node. Documented
in the audio-lipsync README's "Workflow JSON — Koolook node ID" section.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
6.9 KiB
6.9 KiB
Glossary
Short, plain-English definitions for this repo workflow.
Root __init__.py
- The ComfyUI entry file for this plugin.
- Its job is to import node mappings and expose
NODE_CLASS_MAPPINGS/NODE_DISPLAY_NAME_MAPPINGS. - Keep it clean and focused on loading nodes.
Main Repo
- This repository:
ComfyUI-Koolook. - Stores Koolook-owned code, docs, and lightweight integration wrappers.
- Should not store full external third-party repositories.
External Forks
- Raw upstream/fork reference repos kept outside MAIN.
- Default location is a sibling folder:
../ComfyUI-Forks. - Each external repo should be pinned to a version/tag + exact commit.
Wrapper
- A small adapter module in
forks/that loads locally tracked modified nodes and namespaces node IDs. - Purpose: avoid collisions and keep external logic separate from root loader.
- For Radiance, the package entrypoint is
forks/radiance_koolook/__init__.py.
Version Folder
- A folder under
forks/radiance_koolook/versions/that stores one maintained codebase snapshot (example:v1_0_1). - Keep upstream parity metadata in
UPSTREAM_PIN.yamlinside each version folder.
Namespace Suffix
- A suffix added to internal node IDs (example:
__koolook_v1_0_1). - Prevents collisions between versions (v1, v2, upstream, etc.).
- Protects old workflows from breaking.
forks/forks_manifest.yaml
- Machine-readable tracker for external dependencies.
- Contains source repo, source ref, pinned commit, and external relative path.
- This is the source of truth for reproducible setup on new machines.
forks/THIRD_PARTY.md
- Human-readable attribution and notes.
- Explains what was modified and why.
Portable Paths
- Prefer relative paths so setup works on Windows/macOS/Linux.
- Keep external references under
../ComfyUI-Forksfor portable machine setup.
Pinned Commit
- The exact git commit hash you lock to for reproducibility.
- Use this when moving to another computer so behavior matches exactly.
Sibling Project
- A related repository or folder that lives outside MAIN and is consulted (read-only) but never imported by MAIN at runtime.
- Examples: external forks root, ComfyUI knowledge database, personal knowledge database.
- Always referenced by env var (e.g.
KOLOOK_COMFYUI_KB_DIR) — never by absolute path in committed files. - Real paths live in
.env(gitignored). The committed.env.exampledeclares the variable names. - Treated as runtime-optional: if the env var is unset and there is no portable default, the sibling is considered unavailable.
.env / .env.example
.env.example(committed) — public template listing the env var names with safe placeholder values..env(gitignored) — each user's local file with real machine-specific paths.- Pattern matches the existing
KOLOOK_FORKS_DIRconvention.
EasyUse GET/SET Virtual Tunnel
- A pair of frontend-only EasyUse utility nodes:
easy setNodestores a named value source andeasy getNodeexposes that value elsewhere in the graph by key. - Render-time ComfyUI execution resolves the tunnel, but a browser-side
preview button that simply reads the GET node widget will see only the key
name (for example
OUT-folder) rather than the actual upstream value. - Preview code must follow
easy getNode-> matchingeasy setNode-> set input link -> source widget value to match render-time behavior. - Debug by reading the installed EasyUse frontend source
(
comfyui-easy-use/web_version/v1/js/getset.js) and simulating the relevant LiteGraph shape locally when the liveapp.graphobject is not exposed.
Automation module
- A self-contained AI-managed ComfyUI iteration task. Lives under
docs/automations/<grouping>/<task>/, with the grouping typically being the diffusion model (LTX-2.3/) and the task being a specific generation goal (base-1step/,audio-lipsync/). - Each module owns: a
README.md(loop entry + workflow contract), ahandoff-checklist.md(5-minute bootstrap), afindings.md(locked-in conclusions for that task), optionally abackstory/folder (the narrative that produced the module), optionally aruns/folder for in-repo run snapshots when the iteration touches code (not just widget values). - Modules are independent: own workflow JSON, own working folder, own
findings. The model grouping is only structural — it does not carry
shared docs unless duplication forces a future
_shared/extraction. - When a module needs to modify an upstream node's code, the modification
lives under
forks/<package>_koolook/per the fork pattern (see Wrapper and Version Folder above), and the module's README cross-references the fork.
Loop
- The save → render → feedback → snapshot cycle inside an automation module.
- Step 1: maintainer edits a knob in ComfyUI (or in a
forks/source file) and saves the workflow. - Step 2: maintainer queues the render.
- Step 3: maintainer reports the result in chat.
- Step 4: agent snapshots current state into the module's
runs/run-NNN_<label>/(when the module ships in-repo runs) or just appends to the working-folder_AI/iterations.md(when card-and-log is all that's needed). - Module-specific protocol lives at
<module>/runs/LOOP.mdfor the fork-touching modules; lighter modules document the loop inline in theirREADME.md.
Run
- One iteration of the loop.
- For modules that ship in-repo run snapshots, a
run-NNN_<short-knob-summary>_<short-result-tag>folder under<module>/runs/containing at minimum aworkflow.jsoncopy and anotes.md(maintainer feedback + agent interpretation). - For all modules, also a row in the per-project working-folder
_AI/iterations.mdlog (auto-rendered by/make-card).
Backstory
- The running narrative that produced an automation module — the
problem, the mechanism, the hypotheses considered, the rationale for
why the module exists. Lives at
<module>/backstory/<topic>.md. - Distinct from
findings.md(locked-in conclusions) andruns/log.md(rolling table of renders). The backstory is a reference for why and how it got here; findings are what's true now.
Working folder
- The outside-the-repo per-project folder pointed at by
KOLOOK_AUTOMATIONS_WORK_DIRin.env. Holds workflow JSON, rendered video, and the agent-managed_AI/subfolder withcard.png+ append-onlyiterations.md. - One working folder per project. Multiple automation modules can point at the same working folder if they share workflow files; more commonly, each module's iteration uses its own working folder.
Card
_AI/card.png— the per-render tracking visual rendered by the/make-cardskill (orscripts/make_card.pydirectly). Stable filename, overwritten each run; the maintainer's NLE points at it once.- Renders from the latest workflow JSON in the working folder. Format
and palette mirror
docs/designs/snapshot-dialogs.html. Seedocs/automations/CONVENTIONS.md§3.