fb109337a5
Add @asynccontextmanager lifespan to the FastAPI app that creates an asyncpg pool (min=1, max=10, command_timeout=10 — D-050) on app.state.pg_pool and a PgStore on app.state.pg_store when PRAXIS_PG_DSN is set, applies pg_migrations on startup, and closes the pool on shutdown. Graceful degradation (REQ-NFR-MT-01): if PRAXIS_PG_DSN is unset, the server starts with a WARNING and pg_pool/pg_store are None. The learner voice loop (SQLite PraxisStore) is unaffected. Auth/operator routes will return 503 (wired in SLICE-06). ---ci--- project: praxis phase: 1 milestone: v0.4 status: execute persona: backend-engineer task: 01-03 requirements: covered: [REQ-MT-01, REQ-NFR-MT-01] ---/ci---