Skip to content

chore: v0.3.3 readme and demo seeder - #132

Merged
mitulgarg merged 2 commits into
mainfrom
chore/v0.3.3-readme-and-demo-seeder
May 13, 2026
Merged

chore: v0.3.3 readme and demo seeder#132
mitulgarg merged 2 commits into
mainfrom
chore/v0.3.3-readme-and-demo-seeder

Conversation

@mitulgarg

Copy link
Copy Markdown
Owner

Summary

  • Bump version to 0.3.3 (pyproject.toml, __init__.py).
  • Refresh the README's What the Dashboard Shows section to document everything that landed in 0.3.x: groups,
    multi-select / lasso on Topology, group bubbles, the Activity log, inline group editor, and the auto-login token
    injection.
  • Add DELETE /api/machines/{id} — idempotent removal of a machine plus its snapshots and queued commands. Useful for
    retiring decommissioned hosts and for cleanup scripts. Returns 204 even if the machine is already gone.
  • Add scripts/seed_demo_fleet.py — POSTs synthetic check reports for a 16-machine realistic fleet (H100 / A100 / L40S
    / A10G / RTX 4090 / 3090 / 3080 / 5090 / L4) so the grouping, multi-select, and Activity workflows can be exercised
    without real GPUs. Stable uuid5 ids per hostname so re-runs update rather than duplicate.

Bug fixes

  • Seeded machines crashed MachineDetail. DiagnosticCard reads result.issues.length and
    result.recommendations.length directly. The first version of the seeder omitted those fields, so React threw and the
    page rendered blank for any seeded host. Each check is now a complete CheckResult (component, detected, path,
    metadata, issues, recommendations) using the real success / warning / error / not_found status vocabulary.
  • Noisy WinError 10054 on every seeded request. urllib's eager socket close conflicted with uvicorn's Windows
    ProactorEventLoop. Added Connection: close to the seeder's POST/DELETE so teardown is clean — no more benign
    ConnectionResetError tracebacks in the dashboard logs.

Files changed

  • pyproject.toml, src/env_doctor/__init__.py — version 0.3.2 → 0.3.3
  • src/env_doctor/server/routes.py — new DELETE /api/machines/{id} (+ delete SQLAlchemy import)
  • README.md — rewritten dashboard features section + auto-login note
  • scripts/seed_demo_fleet.py — new (intentionally not referenced from any docs)

Test plan

  • pip install -e . and restart env-doctor dashboard.
  • python scripts/seed_demo_fleet.py — expect 16 [OK ] HTTP 200 lines and no WinError 10054 traces in the
    dashboard log.
  • On the dashboard, click any seeded node (e.g. research-rtx5090-1) — MachineDetail should render with the
    Blackwell sm_120 issue and the pip install nightly cu126 recommendation.
  • On Topology, shift+click a few seeded nodes → Assign group → confirm the group bubble appears.
  • python scripts/seed_demo_fleet.py --reset — expect each line [OK]; subsequent GET /api/machines should drop
    the seeded entries.
  • Re-run --reset immediately — should still succeed (DELETE is idempotent).

mitulgarg and others added 2 commits May 11, 2026 23:24
…seed script

- Bump version to 0.3.3 in pyproject.toml and __init__.py
- README "What the Dashboard Shows": rewrite to cover groups (clusters,
  bubbles, multi-select, lasso), Activity log, inline group editor, and
  the auto-login token injection
- Add DELETE /api/machines/{id} — idempotent removal of a machine plus its
  snapshots and queued commands. Useful for retiring decommissioned hosts
  and for cleanup scripts
- Add scripts/seed_demo_fleet.py — POSTs synthetic reports for a 16-machine
  realistic fleet (H100/A100/L40S/A10G/RTX 4090/3090/3080/5090/L4) so the
  grouping/multi-select/topology UX can be exercised without real GPUs.
  Stable uuid5 ids per hostname so re-runs update rather than duplicate

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Two fixes for scripts/seed_demo_fleet.py:

- Each check is now a complete CheckResult with component, detected, path,
  metadata, issues, recommendations — and uses the success/warning/error/
  not_found status vocabulary instead of pass/fail. The dashboard's
  DiagnosticCard reads result.issues.length directly, so omitting the
  field made MachineDetail crash with a render error and show a blank
  page when clicking on any seeded node. Real env-doctor reports always
  populate these arrays; the seeder now matches.
- Add Connection: close header to POST/DELETE so urllib and uvicorn's
  Windows ProactorEventLoop agree on socket teardown — silences the
  benign WinError 10054 / ConnectionResetError tracebacks the dashboard
  was printing on every seeded request.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@mitulgarg
mitulgarg merged commit a74ed0c into main May 13, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant