state-hub/api/routers
tegwick 9f744dd7f3 feat(ep-td+dashboard): complete CUST-WP-0004 EP/TD tracking workstream
EP catalogue (all domains):
- EP-RAIL-001 ep_id patched (schema fix: add ep_id to EPUpdate)
- EP-RAIL-003 (git bare-repo mirrors) and EP-RAIL-004 (offsite secondary
  backup) registered from railiance-cluster/docs/backup-restore.md
- EP-CUST-003..007 ep_ids assigned to existing custodian EPs
- EP-CUST-008 (State Hub API auth) and EP-CUST-009 (update_workstream MCP
  tool) registered as new custodian extension points

TD catalogue (railiance — first 5 items):
- TD-RAIL-001: backup cron runs as root without audit trail (high/security)
- TD-RAIL-002: k3s kubeconfig world-readable mode 644 (medium/security)
- TD-RAIL-003: no Ansible role unit tests (medium/test)
- TD-RAIL-004: age key extracted via awk — fragile (medium/impl)
- TD-RAIL-005: etcd snapshot retention uncoordinated (low/impl)

Dashboard (T08 + T10):
- Extract API URL and POLL to src/components/config.js; all 15 pages
  now import from the shared module (contributions/goals keep custom POLL)
- Shared .kpi-infobox, .filter-bar, .filter-search/.filter-owner CSS
  moved to observablehq.config.js head <style> block; removed from 9 pages
- Build: 0 errors, 0 warnings

API (T09):
- progress.py: limit param now Query(100, le=1000) — prevents unbounded
  list requests; closes TD-CUST-004 for the only endpoint that had limit

CUST-WP-0004 marked completed (all 10 tasks done).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-11 01:40:52 +01:00
..
__init__.py Add state-hub v0.1 — local-first state service for the Custodian 2026-02-24 17:47:49 +01:00
contributions.py feat(state-hub): v0.3 schema — contributions + sbom_entries migrations, models, schemas, routers 2026-02-28 17:28:27 +01:00
decisions.py Add in-dashboard decision resolution with project log write 2026-02-25 09:34:35 +01:00
domain_goals.py feat(goals): add domain/repo goal tracking and update_workstream MCP tool 2026-03-09 00:15:29 +01:00
domains.py feat(state-hub): implement v0.5 — dynamic domains & multi-repo 2026-02-28 15:20:15 +01:00
extension_points.py feat(gems): three-pass schema migration aligning state-hub with GEMS 2026-03-02 23:39:17 +01:00
policy.py feat(tasks): add needs_human intervention flag (CUST-WP-0009) 2026-03-04 19:44:14 +01:00
progress.py feat(ep-td+dashboard): complete CUST-WP-0004 EP/TD tracking workstream 2026-03-11 01:40:52 +01:00
repo_goals.py feat(goals): add domain/repo goal tracking and update_workstream MCP tool 2026-03-09 00:15:29 +01:00
repos.py feat(state-hub): implement v0.5 — dynamic domains & multi-repo 2026-02-28 15:20:15 +01:00
sbom.py feat(gems): three-pass schema migration aligning state-hub with GEMS 2026-03-02 23:39:17 +01:00
state.py feat(gems): three-pass schema migration aligning state-hub with GEMS 2026-03-02 23:39:17 +01:00
tasks.py feat(tasks): add needs_human intervention flag (CUST-WP-0009) 2026-03-04 19:44:14 +01:00
technical_debt.py feat(gems): three-pass schema migration aligning state-hub with GEMS 2026-03-02 23:39:17 +01:00
topics.py feat(state-hub): implement v0.5 — dynamic domains & multi-repo 2026-02-28 15:20:15 +01:00
workstream_dependencies.py Implement State Hub v0.2: dependency graph, next-steps suggestions, design boundary 2026-02-25 23:33:14 +01:00
workstreams.py feat(goals): add domain/repo goal tracking and update_workstream MCP tool 2026-03-09 00:15:29 +01:00