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
+4 -1
View File
@@ -4,7 +4,7 @@ import {
SIGNATURE_UNIFORMS, IDENTITY_UNIFORMS, IDENTITY_ARRAY_UNIFORMS,
} from './shader-contract.js';
import { signatureUniforms, NEUTRAL_UNIFORMS } from '../look/Personality.js';
import { clampValue } from '../params/schema.js';
import { clampValue, isDiscreteParam } from '../params/schema.js';
import { surfaceOf } from '../scenes/surface.js';
import {
CANVAS_BEAT_CAP,
@@ -208,6 +208,9 @@ export class Layer {
// Rate params multiply absolute time; modulating them jumps the phase
// by elapsed * delta. See params/schema.js RATE_FLAG.
if (def.rate) continue;
// Continuity rule (see params/schema.js isDiscreteParam): a reactive
// count pops members on every beat. Discrete params hold per cue.
if (isDiscreteParam(def)) continue;
const raw = features[r.feature];
if (raw === undefined) continue;