EMRY-066: multi-run project dashboard #110

Merged
vxfemboy merged 2 commits from emry-066-project-dashboard into main 2026-07-02 21:50:19 +00:00
vxfemboy commented 2026-07-02 20:54:15 +00:00 (Migrated from github.com)

Closes #109

emry web --run-dir shows one run and emry compare A B is two-run/final-only. This adds a project viewemry web --project <log-dir> overlays every run in a directory on one chart, so you can compare a whole sweep.

What

  • A self-hosted page (no CDN/WS): a metric selector (union of labels across runs), one colored line per run on a shared step/value scale, and a toggleable legend (click a run to show/hide it, chart rescales).
  • Static snapshot loaded from each run's metrics.jsonl; reload to refresh.

How

  • emry-web: a project module — Project/ProjectRun/ProjectSeries (serde), app_project (/, /healthz, /project JSON) + serve_project, and project.html. Stays free of emry-store.
  • emry-cli: --project on web; load_project assembles the snapshot via the canonical emry_store::{list_runs, load_baseline} readers (newest first); an unreadable run degrades to empty rather than aborting the view.

Verification

  • Route + HTML self-hosted-shape tests, arg-parse, and a load_project test (newest-first, metrics loaded).
  • Verified live in Chrome: 4 synthetic runs overlaid in distinct colors, metric switch (loss/lr), legend toggle hides a run and rescales.
  • Full gate green (fmt + clippy -D warnings --all-features + tests + 91.53% coverage).
Closes #109 `emry web --run-dir` shows one run and `emry compare A B` is two-run/final-only. This adds a **project view** — `emry web --project <log-dir>` overlays every run in a directory on one chart, so you can compare a whole sweep. ## What - A self-hosted page (no CDN/WS): a **metric selector** (union of labels across runs), one **colored line per run** on a shared step/value scale, and a **toggleable legend** (click a run to show/hide it, chart rescales). - Static snapshot loaded from each run's `metrics.jsonl`; reload to refresh. ## How - `emry-web`: a `project` module — `Project`/`ProjectRun`/`ProjectSeries` (serde), `app_project` (`/`, `/healthz`, `/project` JSON) + `serve_project`, and `project.html`. Stays free of `emry-store`. - `emry-cli`: `--project` on `web`; `load_project` assembles the snapshot via the canonical `emry_store::{list_runs, load_baseline}` readers (newest first); an unreadable run degrades to empty rather than aborting the view. ## Verification - Route + HTML self-hosted-shape tests, arg-parse, and a `load_project` test (newest-first, metrics loaded). - Verified live in Chrome: 4 synthetic runs overlaid in distinct colors, metric switch (loss/lr), legend toggle hides a run and rescales. - Full gate green (fmt + clippy `-D warnings --all-features` + tests + 91.53% coverage).
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
femboy/emry!110
No description provided.