Files
ratatoskr/persistent-memory.d/2026-07-01-adminevents-pane-shipped-v0-18-11-get-admin-e.md
vh ff1f9ca1e8 memory: /snapshot — #368 silo test passed; two-tier migration; stores scrubbed
- #368 (user,character) memory silo test DONE + PASSED live (WT b127):
  write-side conjunctive {end_user,agent_self} scoping + read-side cross-
  character isolation both proven end-to-end; betty (throwaway) deleted,
  Sindra intact. Full record in persistent-memory.d/2026-07-18-368-silo-
  test-passed.md. Retired the stale "silo test in progress" in-flight blocks.
- Two-tier migration: split 152 over-threshold dated entries into
  persistent-memory.d/ detail files, leaving one-line pointers in the index
  (startup load ~196KB -> ~53KB; bodies now load on demand).
- Tier-3 stores scrubbed clean (memory 0 / affect 0, provider restarted
  empty); persistent-memory + detail file updated to reflect the scrub.
2026-07-17 21:39:18 -07:00

2.2 KiB

[2026-07-01] AdminEvents pane SHIPPED (v0.18.11) — GET /admin/events SSE in a new TUI pane; #11 closed-by-build; Tier 1 (debug-observability core) COMPLETE. stream_admin_events(client, *, admin_key, last_event_id=None) (sse_client.py) — a NEW long-lived SSE consumer for the admin lifecycle broadcast (envelope {id,type,timestamp,data}, 17-event v0 vocab), admin-scoped (admin.events.read, bearer-override), Last-Event-ID resume; non-200→SseConnectFailed, mid-drop→SseConnectionDropped; new AdminEvent dataclass (distinct from the turn Event union). New "AdminEvents" TabPane + _format_admin_event + _admin_event_matches (design-brief §6 filter: active-session events + non-heartbeat system.*) + _stream_admin_events long-lived best-effort worker (unconditional on_mount, cancelled on app exit; self-labels "not configured"/"unavailable"/"stream ended"). Reuses the admin key from the BifrostState slice. Contract-SKIPPED for stream_admin_events (out of contract #1's turn-SSE scope; spec § Admin Event Stream is the reference; well-TDD'd). TDD: 4 sse_client tests (multi-event+bearer-override, Last-Event-ID header, 403, malformed-skip) + 5 tui (format, filter, worker success/no-key/403). Suite 561 green; my code ruff-clean (pre-existing tui.py ruff debt untouched, incl. the dead RichText import in _hydrate_persona). LIVE-AUTH-PROVEN: GET /admin/events on :8081 → HTTP 200 under the admin key (connected + streamed, idle in the 4s window — no 401/403). Coverage: REST 12/40 . Tier 1 admin/debug-observability core COMPLETE (Persona · Tools · BifrostState · AdminEvents). AdminEvents work landed as patch v0.18.11; then v0.19.0 MINOR cut (operator-approved 2026-07-01) publishing the milestone: the debug-observability core is complete (Persona · Tools · BifrostState · AdminEvents all built + consuming real endpoints — the design-brief's headline deliverable). Pre-1.0 minor = release-note-worthy (no downstream althing push needed pre-1.0); lightweight tag per the SemVer mechanics (annotated reserved for major cuts). Remaining in-scope client I/O: only Tier-2 (transient-characters routing + POST /sessions/{id}/persona_state).