docs(milestone): complete v0.1 foundation

---ci---
phase: 0
milestone: v0.1
status: complete
---/ci---
This commit is contained in:
Praxis CI
2026-08-01 13:32:48 +00:00
parent bcb0118034
commit fbd6602814
91 changed files with 10220 additions and 1 deletions
+20
View File
@@ -0,0 +1,20 @@
# Praxis v0.1 cost rates — per-unit pricing for the cost logging (D-012, REQ-NFR-COST-01).
# v0.1 logs actual per-session cost; no enforced ceiling (pilot).
# Per G-005: these are pilot-config rates (Ollama tier + cloud), NOT at-scale
# per-learner unit economics — the $3/learner target requires self-hosted
# gemma4:e4b + Piper (post-pilot).
# LLM role-play (gemma4:cloud) — Ollama tier (Pro plan amortized, pilot estimate).
gemma4_cloud_per_1k_tokens_cents: 0.5
# Debrief + classifier (deepseek-v4-flash:cloud) — Ollama tier.
deepseek_v4_flash_per_1k_tokens_cents: 1.0
# ASR (Deepgram Nova-3 streaming) — $0.0043/min → 0.43 cents/min.
deepgram_per_audio_minute_cents: 0.43
# TTS (Cartesia Sonic cloud) — per-char pricing (pilot estimate).
cartesia_per_1k_chars_cents: 3.0
# TTS (Piper self-hosted) — open-weights, $0 marginal cost.
piper_per_1k_chars_cents: 0.0
@@ -0,0 +1,55 @@
# Praxis v0.1 scenario — Customer Service refund role-play (D-010, D-018).
# One branch point: accept_resolution vs escalate (D-010).
# failure_mode present (D-009 — not provoked in v0.1).
# Debrief via deepseek-v4-flash:cloud no_think (D-020).
id: cs_refund_ca_v01
path: customer_service
market: CA
language: en-CA
title: "Angry customer requesting refund on a damaged product"
difficulty: 1
failure_mode: escalates_unresolved # D-009: present, not provoked in v0.1
persona:
voice_id: "cartesia:a3536a36-1d18-4efb-a95a-7c44b7b5e384" # D-006: same voice as mentor
character: "Customer (Jordan)"
setup:
system_prompt: |
You are Jordan, a customer who received a damaged product.
You are frustrated but not abusive. You want a refund.
Stay in character. Do not break role.
Keep responses concise for voice (1-3 sentences).
Do not give legal, financial, or medical advice.
Do not impersonate a real employee of any actual company.
opening_line: "Hi, I received my order yesterday and the item is cracked. I want my money back."
success_criteria:
- "Acknowledged the customer's frustration empathetically"
- "Offered a concrete resolution (refund or replacement)"
- "Confirmed next steps"
common_mistakes:
- "Jumping to policy before acknowledging emotion"
- "Using jargon ('RMA', 'SLA')"
- "Getting defensive about the company"
branches:
- id: accept_resolution
trigger:
learner_signals: ["empathy", "concrete_resolution", "next_steps"]
outcome: success
debrief_focus: "What you did well — you acknowledged the customer's frustration and offered a concrete resolution."
- id: escalate
trigger:
learner_signals: ["defensive", "policy_first", "no_acknowledgement"]
outcome: failure
failure_mode: escalates_unresolved
debrief_focus: "The customer escalated because they felt unheard. You led with policy before acknowledging their frustration."
debrief:
model: deepseek-v4-flash:cloud
mode: no_think # D-020: latency
prompt_template: debrief/default