Commit Graph

4 Commits

Author SHA1 Message Date
Praxis CI 00e39a3f85 feat(milestone): merge phase/01 operator-foundation → milestone/v0.4-operator-tier
Phase 1 complete — Operator Foundation:
- Postgres 16 in Docker-in-LXC (asyncpg pool, 5-table schema, PgStore, migrations)
- Operator auth (argon2id, signed stateless cookies, slowapi 5/min rate limit)
- VC issuer key migration SQLite→Postgres (archive-before-active, R-VC-MIG-01)
- Operator bootstrap CLI (create-operator.py, idempotent)
- Backup cron script + G-008 restore drill
- Graceful degradation (server starts without Postgres)
- 272 tests pass, 33 skip (Postgres-requiring), 0 fail

---ci---
project: praxis
phase: 1
milestone: v0.4
status: complete
requirements:
  covered: [REQ-MT-01, REQ-AUTH-01, REQ-NFR-AUTH-01, REQ-NFR-MT-01, REQ-MT-02]
  partial: []
---/ci---
2026-08-04 01:41:06 +00:00
Praxis CI 0df1ec391a docs(P00): create phase 1 plan — 10 slices, 4 waves, 34 tasks, 20/20 REQ coverage
PLAN.md: 998 lines (vertical-slice plan with wave ordering)
.gitignore: fix .env.example being ignored by .env.* pattern (D-038)

Wave 1: Dockerfile + docker-compose.yml + .dockerignore | FastAPI StaticFiles mount
Wave 2: PVE API layer (8 scripts) | health-check.sh
Wave 3: firstboot-hook.sh | install-service.sh + praxis.service | lxc-deploy.sh
Wave 4: secret wiring + .env.example | bats tests (11 files) | E2E verification

Persona load: devops-engineer 15 tasks, lead-developer 4, backend 4, data 2, frontend 0 (deactivated)

---ci---
project: praxis
phase: 0
milestone: v0.2
status: plan
---/ci---
2026-08-01 14:01:46 +00:00
Praxis CI fbd6602814 docs(milestone): complete v0.1 foundation
---ci---
phase: 0
milestone: v0.1
status: complete
---/ci---
2026-08-01 13:32:48 +00:00
Praxis CI bcb0118034 chore: seed .gitignore for env secrets 2026-08-01 12:38:44 +00:00