bytelyst-devops-tools/dashboard/backend
Hermes VM efdf41f2bb feat(dashboard): Phase 7 — gate /hermes/ops on requireAdmin + Phase 4 brief
Two threads, one commit because they're both about closing dashboard-
side roadmap items that don't need their own slice.

Phase 7 — auth coverage on hermes routes:
  - `/api/hermes/ops` was the last unauthenticated Hermes endpoint —
    despite revealing instance / gateway / Tailscale-IP / backup-repo /
    warnings state. Now gated on `requireAdmin`, matching the new
    `/api/hermes/telemetry/:instance` from the previous slice and
    every other privileged route in this backend.
  - Privilege-surface table in `dashboard/DEPLOYMENT.md` updated to
    show `requireAdmin` for both Hermes routes; the previous
    "no auth, read-only ops snapshot" carve-out is gone.
  - Roadmap Phase 7 ticks for "require auth on hermes routes" + "keep
    hermes data private-only" with verification notes.

Phase 4 — Bheem/Uma parity (delegation brief):
  - Phase 4 is **VM ops, not codebase work** — it requires sudo on the
    Hostinger VM, Uma-owned GitHub credentials, and Telegram bot
    tokens. None of it is editable in this repo. Wrote
    `docs/prompts/phase4-bheem-uma-parity.md` as a self-contained
    delegation brief covering: Uma persistent-backup repo + timer,
    Uma health watchdog, first restore rehearsal, quarterly drill
    reminder, and the dashboard-side verification (the /hermes/ops +
    /hermes/telemetry/bheem outputs that confirm the gap is closed).
  - Phase 4 section header in the roadmap now points at the brief
    and explains why the checkboxes stay open in this repo.

Verified: backend 57/57 unit tests , web 7/7 E2E  (Playwright
mocks bypass requireAdmin since they fulfill before the request
reaches Fastify; real auth'd users get the same flow as every other
admin route). Lint 0 errors, build green.

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-05-30 07:59:48 +00:00
..
src feat(dashboard): Phase 7 — gate /hermes/ops on requireAdmin + Phase 4 brief 2026-05-30 07:59:48 +00:00
.env.example feat(dashboard): Phase 5 P2 — structured pino logging with redaction 2026-05-30 07:18:44 +00:00
.gitignore feat(devops): adopt trading web deployment model with docker-compose 2026-05-11 03:24:11 +00:00
Dockerfile feat(vm): fix devops-backend VM module — Phase 0.1 complete 2026-05-27 21:13:45 +00:00
eslint.config.js fix(dashboard): Phase 5 P0 — correct CI workspace path + real ESLint 2026-05-30 06:50:32 +00:00
package-lock.json feat(vm): fix devops-backend VM module — Phase 0.1 complete 2026-05-27 21:13:45 +00:00
package.json chore(dashboard): Phase 5 P1 — remove dead SSE log-stream claim 2026-05-30 07:00:07 +00:00
tsconfig.json feat: add Hermes mission control dashboard 2026-05-26 08:27:59 +00:00
vitest.config.ts feat(dashboard): Phase 3 slice 1 — hermes telemetry contract + backend endpoint 2026-05-30 07:53:37 +00:00