Files
dashboards/.gitignore
T
ducoterra 4b4962d7fb chore(agent): phase roadmap from TODO.md, 5 phases
The five UI items in TODO.md become an executable pipeline. Planning files
only — no application code changed.

- 01_severity_language: one Python threshold table + `severity` on the
  values the pages colour, plus the .hero style. Today the thresholds are
  magic numbers at six JS call sites (75/90 here, 80/92 there), which is
  exactly how "same colour, four meanings" happens.
- 02_overview_fleet_and_alerts: /api/summary gains a derived `alerts`
  list; the page drops to fleet + warnings. Unconfigured sources must not
  alert — that is invariant 3, tested.
- 03_system_per_host_panels: per-host hero cards, no per-core, shared
  multi-host charts and the detail picker deleted. The six card metrics
  already exist in the payload, so the first task pins them with tests
  instead of inventing fields.
- 04_llm_chart_readability: charts.js already exports sparkline() and no
  page calls it — that is why the page reads flat. Port llm_monitor's
  drawSpark behaviour (fixed max, right growth, p95 foots) and keep the
  provenance tags.
- 05_ups_hero_battery_glyph: charge/load/runtime hero + an SVG battery
  whose fill is the charge, verified against both real UPSes and the
  low-charge/on-battery states only the simulator can produce.

PLAN.md records the ratified anchors and the deviation worth knowing:
severity vocabulary is ok|warn|fail, matching dash.css and nut.py, not the
"danger" wording in the proposal — one synonym for one colour.

TODO.md cleared to a bare heading; the items are now phases. .gitignore
stops ignoring all of .agents/ (the roadmap is project history) while
keeping phase-sessions/ and pipeline.log out. deploy/nut-sudoers rewritten:
its header still blamed a port mystery that is solved; the remaining need
is reading upsd.users so adding a scoped dashboards user does not delete
the accounts upsmon authenticates as.

LLM-Generated: true
2026-10-16 20:10:23 -04:00

42 lines
990 B
Plaintext

# Python
__pycache__/
*.py[cod]
.venv/
.pytest_cache/
.ruff_cache/
.coverage
coverage.xml
htmlcov/
*.egg-info/
# Local state: the SQLite history DB and anything else runtime-written
data/
*.sqlite3
*.sqlite3-wal
*.sqlite3-shm
# Secrets / local config — never commit. The `.example` files are documentation, so they
# are un-ignored explicitly: `.env.*` would otherwise swallow them and a fresh clone would
# have no annotated list of what to set.
.env
.env.*
!.env.example
!.env.dev.example
# Agent binaries staged for deployment
agent/*.tar.gz
# Editor / OS
.vscode/
.idea/
.DS_Store
# Agent/pipeline scratch ONLY. The planning tree (.agents/PLAN.md, .agents/phases/) is
# tracked on purpose — it is the project's roadmap and history, not throwaway state.
.agents/phase-sessions/
.agents/pipeline.log
# The original brief for this project. Kept in the checkout as local context, not history:
# README.md and AGENTS.md carry the decisions that came out of it.
original_prompt.txt