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
|
f04b9b3588
|
feat(P01): SLICE-01+02 — Dockerfile, .dockerignore, docker-compose.yml, FastAPI StaticFiles, PRAXIS_DB_PATH env (G-102 fix)
SLICE-01 (lead-developer): multi-stage Dockerfile (node:22-slim→python:3.12-slim),
.dockerignore (excludes secrets/node_modules/.git), docker-compose.yml
(port 8789, SQLite volume, env injection for all voice-service vars)
SLICE-02 (backend-engineer+data-engineer): FastAPI mounts client/dist as
StaticFiles at / after API routes (D-023, REQ-DEPLOY-13).
G-102 MUST fix: db/store.py + db/migrate.py now read PRAXIS_DB_PATH
from env so the Docker volume mount persists SQLite data.
G-105 FIX: Dockerfile copies pyproject.toml before source (pip install
layer cached, source changes don't invalidate).
REQ-DEPLOY-01, 02, 13, 16 covered.
---ci---
project: praxis
phase: 1
milestone: v0.2
status: execute
slice: 01-02
wave: 1
---/ci---
|
2026-08-01 14:16:39 +00:00 |
|