Project State — projekt-dashboard (Agent-Cockpit-Erweiterung)

Letzte Entscheidung

Agent-Cockpit Stufe 1 + 2 + 3 KOMPLETT live. P6 /cockpit-Übersichtsseite + Sidebar-Link, P7 push-state.mjs + S3-Sync mit Diff-Check + Local-Mirror nach public/api/states/, P8 <LiveCockpit /> mit SWR-Polling 5s + Page-Visibility-Pause + Sync-Indikator (grüner Pulse-Dot), P9 CloudFront-Behavior /api/states/* mit eigener Cache-Policy av-states-livesync (TTL 10s). Cloudflare Access schützt automatisch — kein zusätzliches Auth-Setup. Sub-10s Live-Updates funktionieren lokal verifiziert. Production-Endpoint propagiert in CloudFront (~5-15 min). (2026-05-21)

Nächste Frage

Stufe 3 läuft. Soll project-diagram Skill (P5 optional) jetzt noch, oder erst Marvin alles in Prod-Deploy testen + bei Bedarf später angreifen?

Decisions-Log

  • 2026-05-21 — CloudFront-Cache-Policy av-states-livesync mit DefaultTTL=10s, MaxTTL=30s — bestehende av-dashboard-data-shortcache (300s) wäre zu lang für 5s-Polling
  • 2026-05-21 — Push-Script schreibt parallel nach s3://av-dashboard-data/api/states/ UND public/api/states/ — Dev-Mode liest aus public/ (gleiche URL /api/states/* funktioniert lokal + prod)
  • 2026-05-21 — pushedAt rauspatchen aus JSON-Body (war im Body, brach den Diff-Check via SHA256) — jetzt nur als S3-Metadata
  • 2026-05-21 — --local Flag im push-state für AWS-loginlos Test
  • 2026-05-21 — Cloudflare Access schützt /api/states/* automatisch — kein S3-CORS, kein zusätzliches Auth
  • 2026-05-21 — SyncIndicator zeigt 4 Zustände: live (grün+Pulse), verbinde… (grau), paused (Tab hidden), sync-fehler (warn)
  • 2026-05-21 — Stripe-Redesign via frontend-design Skill: flache Page-Sektionen statt Mega-Karte, vertikale Phasen-Liste statt horizontaler Pfeil, Mini-Stepper als Quick-Visual
  • 2026-05-21 — Phasenpfeil zweistufig: <PhaseStepper /> mini (12px Dots, kein Label) + <PhaseList /> vertikal (Stripe-Rows mit Status-Label rechts in mono-num)
  • 2026-05-21 — <details>-Akkordeons raus, alles flach. Hierarchie über Typo-Größen (19px / 14px / 13.5px) und label-caps, nicht über Boxen
  • 2026-05-21 — <PhaseArrow /> als eigenes SVG statt Recharts — simpler Stepper braucht keine Chart-Lib. Animation für active-Phase via SMIL <animate> (kein JS, kein Hydration-Cost)
  • 2026-05-21 — Vault-Links nutzen obsidian://-URI — öffnet Files direkt in Obsidian.app. Fallback: Pfad sichtbar im title-Attribut
  • 2026-05-21 — generateStaticParams für alle Projekte beim Build → keine Runtime-Route-Lookups, voll statisch
  • 2026-05-21 — Body-Parser nutzt deutsche Headings („Letzte Entscheidung”, „Nächste Frage”, „Decisions-Log”, „Offene Baustellen”). Strikt — Headings müssen exakt matchen sonst leerer String. Schema-Validierung passiert beim Pflegen, nicht beim Parsen.
  • 2026-05-21 — STALE_THRESHOLD_DAYS = 7 als Modul-Konstante. Verschieben nach _meta/config-planning.md falls weitere Module den brauchen.
  • 2026-05-21 — loadAllProjectStates() sortiert nach updatedAt DESC für /cockpit. Filter „nur aktive Projekte” passiert in der Route, nicht im Loader (Loader bleibt generisch).
  • 2026-05-21 — Rule 24 hat „geh tief”-Override + Skill-Ausnahmen (brainstorm/plan/reproduce-bug/compound) damit Deep-Dives moeglich bleiben
  • 2026-05-21 — Eigenes chat-output-disziplin.md statt claude-output-praeferenzen.md zu erweitern — neue Datei ist Coding-Pipeline-spezifisch, alte bleibt generelle Praeferenz
  • 2026-05-21 — Live-Push via push-state.mjs Script + S3 + SWR-Polling, kein WebSocket, kein dedizierter MCP (KISS)
  • 2026-05-21 — Stufe 3 (Live-Cockpit) in Scope statt geteilt — passt mit ~10-13h Aufwand auf bestehende Infra ohne neue AWS-Ressource
  • 2026-05-21 — state.md separates File pro Projekt, nicht in _index.md gemerged (Frontmatter-Trennung stabil vs flüchtig)
  • 2026-05-21 — Markdown-Body mit ## Sektionen statt reines YAML (human-readable für Marvin direkt im Vault)
  • 2026-05-21 — Schwester-Skill project-diagram statt customer-diagram-Mode (andere Sektionen, klarer abgegrenzt)
  • 2026-05-21 — Persona-Switch über CLAUDE.md Rule 24: Tech-Lead reportet an Direktor, Override-Trigger „geh tief”

Offene Baustellen

  • Open Questions — alle deferred-to-implementation Fragen warten auf jeweilige Unit
  • Recharts vs eigener SVG für Phasenpfeil → Unit 4
  • SWR-Polling-Intervall 5s vs 10s → Unit 8 (start 5s)
  • Stale-Schwelle in Tagen (7 vs 14) → Unit 4
  • Kollision mit bestehenden phase-N.md (z.B. bedrock-cost-optimize) → Pilot-Anlegen klären, state.md verlinkt nur
  • MCP-Wrapper für Push als Welle 2 → 3 Monate nach Go-Live re-evaluieren