From 34b1c051466755052677850410294a215697e69e Mon Sep 17 00:00:00 2001 From: Thomas Richter Date: Tue, 3 Feb 2026 13:27:31 +0100 Subject: [PATCH] docs: define milestone v2.0 requirements 17 requirements across 3 categories: - GitOps: 4 (ArgoCD installation and configuration) - Observability: 8 (Prometheus/Grafana/Loki stack + app metrics) - CI Testing: 5 (Vitest, Playwright, type checking) --- .planning/REQUIREMENTS.md | 101 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 .planning/REQUIREMENTS.md diff --git a/.planning/REQUIREMENTS.md b/.planning/REQUIREMENTS.md new file mode 100644 index 0000000..67d59fe --- /dev/null +++ b/.planning/REQUIREMENTS.md @@ -0,0 +1,101 @@ +# Requirements: TaskPlanner v2.0 + +**Defined:** 2026-02-03 +**Core Value:** Production-grade operations — reliable deployments and visibility into system health + +## v2.0 Requirements + +Requirements for milestone v2.0 Production Operations. Each maps to roadmap phases. + +### GitOps + +- [ ] **GITOPS-01**: ArgoCD server installed and running in cluster +- [ ] **GITOPS-02**: ArgoCD syncs TaskPlanner deployment from Git automatically +- [ ] **GITOPS-03**: ArgoCD self-heals manual changes to match Git state +- [ ] **GITOPS-04**: ArgoCD UI accessible via Traefik ingress with TLS + +### Observability + +- [ ] **OBS-01**: Prometheus collects metrics from cluster and applications +- [ ] **OBS-02**: Grafana displays dashboards with cluster metrics +- [ ] **OBS-03**: Loki aggregates logs from all pods +- [ ] **OBS-04**: Alloy DaemonSet collects pod logs and forwards to Loki +- [ ] **OBS-05**: Grafana can query logs via Loki datasource +- [ ] **OBS-06**: Critical alerts configured (pod crashes, disk full, app down) +- [ ] **OBS-07**: Grafana UI accessible via Traefik ingress with TLS +- [ ] **OBS-08**: TaskPlanner exposes /metrics endpoint for Prometheus + +### CI Testing + +- [ ] **CI-01**: Vitest installed and configured for unit tests +- [ ] **CI-02**: Unit tests run in Gitea Actions pipeline before build +- [ ] **CI-03**: Type checking (svelte-check) runs in pipeline +- [ ] **CI-04**: E2E tests (Playwright) run in pipeline +- [ ] **CI-05**: Pipeline fails fast on test/type errors before build + +## Future Requirements + +Deferred to later milestones. + +### Observability Enhancements + +- **OBS-F01**: k3s control plane metrics (scheduler, controller-manager) +- **OBS-F02**: Traefik ingress metrics integration +- **OBS-F03**: SLO/SLI dashboards with error budgets +- **OBS-F04**: Distributed tracing + +### CI Enhancements + +- **CI-F01**: Vulnerability scanning (Trivy, npm audit) +- **CI-F02**: DORA metrics tracking +- **CI-F03**: Smoke tests on deploy + +### GitOps Enhancements + +- **GITOPS-F01**: Gitea webhook integration (faster sync) + +## Out of Scope + +Explicitly excluded — overkill for single-user personal project. + +| Feature | Reason | +|---------|--------| +| Multi-environment promotion | Single user, single environment; deploy directly to prod | +| Blue-green/canary deployments | Complex rollout unnecessary for personal app | +| ArgoCD high availability | HA for multi-team, not personal projects | +| ELK stack | Resource-heavy; Loki is lightweight alternative | +| Vault secrets management | Kubernetes secrets sufficient for personal app | +| OPA policy enforcement | Single user has no policy conflicts | + +## Traceability + +Which phases cover which requirements. Updated during roadmap creation. + +| Requirement | Phase | Status | +|-------------|-------|--------| +| GITOPS-01 | — | Pending | +| GITOPS-02 | — | Pending | +| GITOPS-03 | — | Pending | +| GITOPS-04 | — | Pending | +| OBS-01 | — | Pending | +| OBS-02 | — | Pending | +| OBS-03 | — | Pending | +| OBS-04 | — | Pending | +| OBS-05 | — | Pending | +| OBS-06 | — | Pending | +| OBS-07 | — | Pending | +| OBS-08 | — | Pending | +| CI-01 | — | Pending | +| CI-02 | — | Pending | +| CI-03 | — | Pending | +| CI-04 | — | Pending | +| CI-05 | — | Pending | + +**Coverage:** +- v2.0 requirements: 17 total +- Mapped to phases: 0 +- Unmapped: 17 ⚠️ + +--- +*Requirements defined: 2026-02-03* +*Last updated: 2026-02-03 after initial definition*