swactor/crates/dashboard/AGENTS.md
Zachery Aaron Shores-Chmielewski b3dbd7ce11 refactor: datastream crate is now telemetry
The crate is the per-node metrics/logging pipe with a universal
subscriber endpoint, but "datastream" kept getting misread as a general
messaging plane. Rename crate, module paths, and public API
(`DatastreamEndpoint` → `TelemetryEndpoint`, etc.) so misuse is visible
on sight.

Renamed contracts (all in-repo producers/consumers migrated):
- env vars `MYELIN_DATASTREAM_*` → `MYELIN_TELEMETRY_*`
- artifact `datastream.ndjson` → `telemetry.ndjson`
- actor names `telemetry-publisher` / `telemetry-sink`
- wire ALPN `swactor/telemetry/0`
- `DATASTREAM_SPEC.md` → `TELEMETRY_SPEC.md`

Also fixes two latent test breaks: `process` and `iroh-driver` tests
imported `DatastreamEvent` from the crate root, which was never
re-exported; they now use the observer path `telemetry::frame::`.
2026-08-15 12:18:56 +04:00

692 B

Dashboard crate contract

Keep this crate read-only with respect to observed programs.

  • It may ingest telemetry frames.
  • It may retain bounded raw-frame and view state for HTML/API rendering.
  • It may host universal swactor runtime views.
  • It must not send control signals to observed runtimes.
  • It must not require changes outside crates/dashboard for dashboard-only work.

Main built-in views: /view/swactor/workers (worker-centric) and /view/swactor/actor-overview + /view/swactor/actor-dossier (actor-centric), all backed by runtime.stats, runtime.workers, and runtime.actors frames when present. Actor views are pure frame consumers and tolerant of publisher shape.