# 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.