vestige/apps
Sam Valladares 1b23516579 feat(observatory): dream consolidation storm on the live field (Phase 3)
When the real dream pipeline runs, the field enters a metabolic storm:
damping loosens, the newly-discovered edges are appended live, and their
springs pull the clusters into their new shape.

- node-renderer: setEdges() — a setPathSteps clone that regrows the edge
  index buffer, updates the CPU graph, bumps edge_count, rebuilds the sim
  pipeline so new springs act immediately.
- simulate.wgsl: while live_kind==dreamStorm, damping loosens with
  live_energy + a deterministic turbulence rides the envelope (pure of
  node index + live_frame, so no wall clock).
- live-bridge: real ConnectionDiscovered pairs append to a deduped edge
  accumulator, coalesced to ONE setEdges per frame (a 1000-edge burst is
  one regrow, not a thousand). Storm fires on DreamStarted OR
  DreamCompleted (a real dream floods the 200-event ring and evicts
  DreamStarted, so Completed must also arm it), holds ~6s, settles.
- ingest rewrite: timestamp watermark instead of object-identity dedup —
  robust to ring eviction AND browser/backend clock skew (seeds from the
  backend clock, never the browser wall clock). This fixed a real bug
  where a 36s clock skew silently dropped every event.
- 8 new LiveBridge unit tests machine-prove decay/firewall/storm/edges
  (the multi-second storm can't be screenshotted in a frozen-rAF preview).

Verified: firewall re-fired live post-rewrite naming the real memory;
1041 tests (8 new), check + build green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 22:07:32 -07:00
..
dashboard feat(observatory): dream consolidation storm on the live field (Phase 3) 2026-07-08 22:07:32 -07:00