vestige/crates
Sam Valladares addbf260f1 feat(observatory): live event bridge + live FSRS decay field (Phase 0+1)
The raw-WebGPU field was inert — it ran the deterministic DemoClock and
never heard the backend. This wires it to the real event stream and makes
every memory visibly forget on its true FSRS curve.

- LiveBridge (new): lock-free per-frame drain via engine.preFrameHook,
  ingests $eventFeed oldest-first, decodes real events into live lanes.
- fsrs.ts (new): exact TS port of retrievability_with_decay (w20=0.1542).
- params 12→16 floats (capture_mode + 4 live lanes); all 8 WGSL Params
  structs updated in lockstep. _pad renamed to its real meaning.
- node-renderer: live-retention GPU buffer (binding 4); simulate.wgsl
  overwrites vel_retention.w so render-nodes dims on the real curve.
- ObservatoryStage: `live` prop, $eventFeed subscription, persistent
  FORGETTING HORIZON scrubber (project the curve forward N days, honest).
- backend: get_graph node json now carries stability + lastAccessed.

Verified live vs the real 1241-memory brain: +300d scrub visibly decays
low-stability nodes while high-stability survive; per-node FSRS math
confirmed. svelte-check 0 err, 1033 tests, build, cargo check all green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 21:41:18 -07:00
..
vestige-core chore(release): v2.2.0 — Retroactive Salience + Tool Consolidation 2026-06-29 15:15:54 -05:00
vestige-mcp feat(observatory): live event bridge + live FSRS decay field (Phase 0+1) 2026-07-08 21:41:18 -07:00