Skip to content

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 23 Aug 16:28
· 79 commits to main since this release

Storage release. Fixes a bug that silently destroyed the evidence the project
exists to preserve.

Fixed

  • Frame events no longer evict every other kind of evidence. The store was
    one shared 5,000-event buffer. FrameCollector writes an event per frame, so
    at 60fps frames filled the entire buffer in about 83 seconds and then evicted
    everything older — the exceptions, network requests and logs you were actually
    chasing. Two minutes into a session, the exception from minute one was gone.
    Each category now has its own ring buffer, so a noisy stream can only evict
    itself. Defaults: 3,000 logs, 1,000 exceptions, 1,000 network, 1,000 frames,
    500 system, overridable through the RuntimeStore constructor.
  • Insertion is O(1). The buffer was trimmed with splice(0, n) on every
    insert past capacity, copying the whole array 60 times a second inside the
    tool meant to diagnose performance problems. Replaced with a circular buffer:
    200,000 events went from 9,943ms to 81ms, a 122x improvement.

Added

  • runtime_status now reports retention: per-category capacity, how many
    events are retained, how many were evicted, and the timestamp of the oldest
    event still held. A capped buffer is fine; a silently capped one leaves an
    agent reasoning over truncated history without knowing it.
  • CATEGORIES is exported from core/events.ts as a runtime value, with the
    Category type derived from it so the two cannot drift.

Compatibility

No tool renamed, removed, or reshaped. RuntimeStore.query() returns the same
most-recent-first ordering, now merged across the per-category buffers.
runtime_status.retention is additive.