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---
This commit is contained in:
Praxis CI
2026-08-01 14:01:46 +00:00
parent 658bbc3000
commit 0df1ec391a
4 changed files with 1015 additions and 269 deletions
+7 -13
View File
@@ -1,20 +1,14 @@
{
"phase": 0,
"stage": "research",
"stage": "plan",
"milestone": "v0.2",
"phase_role": "pre_execution",
"attempts": 0,
"updated_at": "2026-08-01T14:15:00Z",
"research_confidence": {
"docker_in_lxc": 0.85,
"build_inside_ct": 0.80,
"fastapi_staticfiles": 0.95,
"dockerfile_design": 0.90,
"firstboot_hook": 0.85,
"secret_injection": 0.90,
"health_check": 0.90,
"systemd_unit": 0.85,
"ct_sizing": 0.80,
"testing": 0.90
"updated_at": "2026-08-01T14:25:00Z",
"plan_summary": {
"slices": 10,
"waves": 4,
"tasks": 34,
"req_coverage": "20/20"
}
}
+964 -256
View File
File diff suppressed because it is too large Load Diff
+43
View File
@@ -0,0 +1,43 @@
# Praxis v0.1 — Environment Configuration
# Copy to `.env` and fill in real values. See docs/latency-report.md for key-provisioning status.
# At v0.1 EXECUTE time, only GITEA_TOKEN is provisioned; voice-service keys are pending.
# ─── Voice services ──────────────────────────────────────────────────────────
# Deepgram Nova-3 ASR (D-013). Get from https://console.deepgram.com/
DEEPGRAM_API_KEY=
# Cartesia Sonic TTS (D-014, primary). Get from https://cartesia.ai/
CARTESIA_API_KEY=
# Ollama Cloud direct API (D-020). Get from https://ollama.com/ → Settings → API Keys
OLLAMA_API_KEY=
# ─── TTS selection (D-014) ────────────────────────────────────────────────────
# cartesia (default, cloud, ~120ms first-audio) | piper (self-hosted, ~80ms, R4 mitigation)
PRAXIS_TTS=cartesia
# ─── Ollama Cloud endpoints (D-020) ───────────────────────────────────────────
# Direct API mode (no local daemon). Pipecat's OLLamaLLMService uses the OpenAI-compatible path.
OLLAMA_BASE_URL=https://ollama.com/v1
OLLAMA_CHAT_URL=https://ollama.com/api/chat
# Role-play fast path (256K ctx, low-latency)
OLLAMA_ROLEPLAY_MODEL=gemma4:cloud
# Debrief + branch classifier (1M ctx, no-think mode for latency)
OLLAMA_DEBRIEF_MODEL=deepseek-v4-flash:cloud
# ─── Server ───────────────────────────────────────────────────────────────────
PRAXIS_HOST=0.0.0.0
PRAXIS_PORT=8789
PRAXIS_DB_PATH=./praxis.db
PRAXIS_SCENARIOS_DIR=./scenarios
# ─── Deepgram live options (D-013) ────────────────────────────────────────────
DEEPGRAM_MODEL=nova-3
DEEPGRAM_LANGUAGE=en
DEEPGRAM_REGION=na
# ─── Cartesia voice (D-006 — one voice for role-play + mentor) ────────────────
CARTESIA_VOICE_ID=a3536a36-1d18-4efb-a95a-7c44b7b5e384
# ─── CI/Gitea (operational — not voice) ───────────────────────────────────────
# GITEA_TOKEN is provisioned in .ciagent/.env.secrets (not this file).
+1
View File
@@ -11,6 +11,7 @@ venv/
.env
.env.secrets
.env.*
!.env.example
# SQLite
*.db