# What do I edit? This table is the whole point. Bookmark it. | File | Edit? | Meaning | | ---- | ----- | ------- | | `ir.build.ts` | **Yes** | First-party / code-authored source. Change topology here. | | `workflow.ts` (imported package) | Yes, if you adopt it | Convenience emission from `cwf import` / `cwf init`. Optional. | | Generated node SDK (`*/nodes`, `src/nodes/gen`) | **No** | From `/object_info`. Regenerated by `cwf codegen`. | | `workflow.ir.json` | **No** | Generated semantic artifact. | | `comfy.workflow.json` | Usually generated | Package manifest. Edit only when you intend to change published metadata. | | `comfy.lock.json` | Update on purpose | Environment lock. Recapture with `cwf lock`, do not tweak hashes. | | Comfy API JSON / `prompt.template.json` | **No** | Compiled execution artifact. | | `object_info.json` | **No** | Snapshot of a live Comfy. Recapture, don't patch. | | `NODES.md` / `catalog.json` | **No** | Codegen companions. | means a human or agent maintains it. means a tool wrote it. ## Two normal package shapes ### Imported package ``` workflow.json ← you already had this ↓ cwf init / import workflow.ir.json ← generated workflow.ts ← optional, editable convenience comfy.workflow.json ← generated, then you expose params ``` ### First-party / code-authored package ``` ir.build.ts ← you edit this ↓ build workflow.ir.json ← generated comfy.workflow.json ← generated / derived ↓ compile API JSON ← generated ``` ## Rule of thumb If changing a value changes **which nodes exist**, that is topology. Put it in TypeScript. If it only changes a widget (prompt, seed, steps, a filename on the server), that is a [runtime parameter](/concepts/templates). ## Linked from This page is linked from the homepage, the code-first quickstart, the package guide, and product integration on purpose. The mix-up (editing IR because "IR is canonical") is the most expensive conceptual bug in this project.