td-working-mode · git:20260616.f5731f5 · 2026-06-16 · sha256 07fb64d985875b71
td-working-mode git:20260616.f5731f5A
Immutable. This exact content never changes and is served at /api/v1/blob/07fb64d985875b71.
--- name: td-working-mode description: Working posture — route work to the agent's strengths (code-on-disk + empirical verification) and away from blind spatial node-building. Load when building, or when you catch yourself placing nodes by guesswork. Sibling to td-colab. --- # Working Mode — route to where your senses reach A posture skill: get into the state where this agent works best in TouchDesigner. Sibling to `td-colab`. td-colab is the *collaboration ethic*; this is the *capability self-awareness* underneath it — and it holds even outside collaborative mode (a batch build still works better code-first + verify than blind node-building). ## The medium split (the core insight) You are **strong** at: - Authoring/editing **text and code** — Edit/Write/Read/Grep/Glob: surgical, diffable, exact. - Reading **structured TD state** — `get_errors`, `inspect_values`, `get_dat_content`, `get_connections`, `get_parameters`. - **Empirical verification** — probe, sample, hypothesize, confirm against ground truth. You are **weak** at: - **Blind spatial node construction** — `nodeX`/`nodeY` placement, overlaps, wiring topology, visual flow. This is a **perception gap** (you can't see the viewport), **not a knowledge gap**. The fix is never "get better at placing nodes" — it's "stop putting load-bearing weight on the sense you lack." TouchDesigner makes layout/topology *visual*; that is exactly your blind spot. ## Capability routing - **Behavior / logic / data → code on disk** (GLSL, Python extensions, parameter expressions, DAT tables). Author in text; let TD sync along. This is your strong zone. - **Structure / topology / layout → minimize**, and treat spatial judgment as human-owned or a separate deliberate pass. When you do place nodes, **verify positions explicitly** (`list_operators` reports overlaps) — never trust a mental picture of the network. - **Prefer code over topology** when either could express it (`glslmultiTOP` + shader-on-disk over a sprawling TOP chain; one extension over a web of execute-DATs). Fewer nodes = less blind surface, and usually better architecture too. Strength-routing and good design point the same way. ## Enter the strong zone by construction (the code-on-disk mechanic) Create the OP **with its final name** → harvest its auto-generated boilerplate DAT (glslTOP/ glslmultiTOP auto-dock `*_pixel`/`*_compute`/`*_info`; scriptTOP auto-docks `*_callbacks`) → save to disk in one call → **edit on disk** → TD live-reloads. Following this mechanic *puts* you in the strong zone automatically — the work becomes text-on-disk plus verification. - `set_dat_content(file_content, file_path, file_type)` writes the file, sets `file`/`syncfile`, and creates folders atomically. Then **set `language` yourself** (it isn't set for you) unless it's an auto-docked DAT that already has it. - Path: `code/<lang>/<comp-path>/<datname>.<ext>` (mirrors op hierarchy, relative to the `.toe`). **Always pass an explicit `file_path`** — the auto-derived path forks and orphans on rename. - Live-reload verified: **GLSL recompiles**, **Python extensions auto-re-init** on an external disk edit. Caveat: re-init runs `__init__`, so **in-memory extension state is wiped**. - baseCOMP extensions have **no** auto-dock DAT — author the class skeleton yourself. ## Close every loop by looking After any change: `get_errors`, then `inspect_values` / `get_dat_content` / `get_parameters`. **Observe; don't assert "it works."** Prove runtime behavior, not just the absence of errors — sample the output, drive a parameter and confirm it actually moved. This is your strength; lean all the way in. ## When nodes are unavoidable - **Name the OP at creation.** Docked DATs inherit the prefix, and TD references (`file`, `pixeldat`, dock names, `infoDAT.op`) are **creation-time snapshots that do NOT follow a later rename**. Rename late and you'll be repointing references and deleting orphaned files by hand. - `get_help` before setting any parameter; short chains ending in nulls. - Hand spatial layout to the human or a deliberate cleanup pass (`td-node-layout` / `td-network-cleanup`). `reposition_operators` carries a host's docked DATs along with it by the same delta — move the host as a unit rather than hand-placing docks. ## Within the collaboration ethic, not around it Capability-routing is **not** a license to stop collaborating. "Prefer code" does not mean "dump a big code-DAT blob and skip the visual thinking the human values" (see `td-colab`). It means: when you *do* act, act where your senses reach. td-colab is the ethic; this is the load-bearing reason it holds. ## Drift trigger If you're about to type `nodeX`/`nodeY` from a mental picture of the network — **stop**. Ask: what behavior here could move to code instead? Or hand the layout to a deliberate cleanup pass. Placing nodes by guesswork is the one move that reliably goes wrong. **Type `/td-working-mode` anytime to re-enter this posture.**