Continuity rule: discrete params hold per cue; add DESIGN.md + AGENTS.md

Actors and objects change only at camera cuts. int/bool/discrete
params skip drift, lookahead and reactivity; discrete slowAxis steps
on the section-held journey. Venues fade instead of toggling on
interpolated popMul; roadside density is arrangement-only.

DESIGN.md collects the project's design decisions; AGENTS.md points
agents at it and the build-visualizer loop.
This commit is contained in:
Dejvino
2026-09-20 16:42:44 +02:00
parent 6e70f95d4d
commit a99a7cbe49
15 changed files with 308 additions and 31 deletions
+43
View File
@@ -0,0 +1,43 @@
# AGENTS.md — flow-state
## Design decisions
All load-bearing decisions live in [`DESIGN.md`](./DESIGN.md). Read it before
changing behaviour. Changing a decision means updating `DESIGN.md` **and**
the gate that enforces it. `PLAN.md` is the full design; `EPIC-*.md` are the
epic designs.
## Adding / fixing a scene
Follow the `build-visualizer` skill (`.claude/skills/build-visualizer/`).
Short version:
```bash
npm run new:scene -- "Name" --family=<flow|organic|minimal|structural|geometric|glitch> --traits=...
# ... write the scene() body ...
npm run lint:scenes
# open http://localhost:5180/checks.html?scene=Name
```
Verify in order: `lint:scenes` (~1s) → per-scene gate in `checks.html` →
`checks.html?slow=1` once before committing. Each rung is ~10× the cost of
the previous.
## Rules that have bitten before (all in DESIGN.md §3–4)
- Anything multiplying `u_time` must be `rate: true` — and rate params are
never modulated (drift/reactive/lookahead skip them).
- Discrete params (`int`/`bool`/`discrete: true`) hold per cue and are
never reactive: **actors and objects change only at camera cuts.**
- No contract-uniform reuse, no hardcoded colours (use `pal()`), base
image under every `prev()`, honour every declared trait, feed `sigCamera`
into the image.
- No `Math.random` / wall-clock in render-path code; motion is analytic
`f(t, seed)` so seek === playback and preview === export.
## Checks
```bash
npm test # audio pipeline + venue/model headless tests
npm run lint:scenes # determinism grep + schema/shader agreement
```