-
released this
2026-08-04 22:36:00 +00:00 | 0 commits to main since this releasev0.5 Live Assist — On-the-Job Voice Companion — Milestone Release
Summary
- Milestone: v0.5 (Live Assist — on-the-job voice companion)
- Type: Feature milestone — final patch v0.1.13 IS the milestone release
- Phases: P0 (v0.1.10) → P1 (v0.1.11) → P2 (v0.1.12) → P3 (v0.1.13)
What's New
v0.5 adds the companion surface to Praxis: a hands-free voice assistant a learner invokes while actually working on the job, context-aware of their current scenario/skill path, coaching in real time without doing the job for them. The key distinction from the practice surface (v0.1-v0.4): in v0.5, the learner is on a real call with a real customer and the AI is in their ear.
Phases
Phase 0 — Pre-Execution (v0.1.10)
SPECIFY → CLARIFY → RESEARCH → IDEATE → PLAN → GRILL. 16 active REQs activated (3 ASSIST + 4 NFR + 9 IDEATE). 760-line research, 1075-line plan, 627-line grill (Proceed-with-conditions, 2 MUSTs, 1 escalation).
Phase 1 — Assist Core + Guardrail (v0.1.11)
8 slices, 4 waves, 24 tasks. The safety-critical, on-voice-path surface:
- server/assist/ — full assist module (session, context, lifecycle, routes, pipeline, webrtc, consent, pii_policy, mode_conflict, guardrail_processor)
- server/guardrails/live_assist.py — 3-layer LiveAssistGuardrail (prompt + regex filter + audit log)
- client/src/AssistControl.tsx — tap-to-talk client control
- 92 new tests (409 total). G-049 + G-067 MUSTs resolved.
Phase 2 — Integration + Tech-Debt + NFR (v0.1.12)
4 slices, 2 waves, 9 tasks:
- NFR measurement (p95 latency ≤650ms pilot, guardrail FP<5% / FN measured + trended nightly)
- Cohort aggregation assist metrics (5 new metrics, no schema change)
- Assist cost tracking + C-3 budget check
- 8 v0.4 P1+ tech-debt findings addressed (argon2id offload, cookie-secret, credential enum, f-string SQL, cache persistence, zoneinfo, audit log, 429 mock)
- 60 new tests (469 total)
Phase 3 — Final Review + Ship (v0.1.13)
Multi-persona review (APPROVE_WITH_NOTES, 1 P0 fixed — guardrail processor must buffer LLM text before TTS for REQ-ASSIST-03 safety). Audit (NEEDS_ATTENTION — 12 stale-status fields advanced, no critical issues). 8 P1+ flagged for v0.6.
Requirements Covered (16/16)
- REQ-ASSIST-01: Hands-free voice companion (tap-to-talk in v0.5; wake-word deferred to v0.6 per D-071)
- REQ-ASSIST-02: Context-aware (path week + scenario tag → ≤150-token prompt)
- REQ-ASSIST-03: Guardrails (3-layer: prompt + regex filter + audit log; FN 13.3% ≤ 20% pilot threshold)
- REQ-NFR-ASSIST-01: Latency <600ms target, ≤650ms pilot (D-072)
- REQ-NFR-ASSIST-02: Tap-to-talk on existing React-Web client
- REQ-NFR-ASSIST-03: Guardrail enforcement (FP 0%, FN 13.3%, nightly trending)
- REQ-NFR-ASSIST-04: Shift-bounded sessions, session_type=assist, no mastery update (D-063)
- REQ-IDEATE-01..09: Guardrail tuning corpus, in-loop processor test, mode-conflict, measurable NFRs, PII policy, tech-debt wave, cost tracking, WebRTC reconnect, incremental audit log
v0.6 Backlog (4 ideation-derived requirements)
- REQ-IDEATE-10: LLM-as-judge guardrail evaluation (nightly)
- REQ-IDEATE-11: Assist-weaning metric (mastery signal)
- REQ-IDEATE-12: Offline assist degraded mode
- REQ-IDEATE-13: Voice-only context declaration
Open Escalation
ESCALATION-01 (PIPEDA consent-law review): The ambient mic captures the real customer (a third party). Canada PIPEDA + provincial consent law review needed before assist surface go-live. The consent disclosure (D-070) is implemented regardless. Human legal review required.
Tests
469 passed, 45 skipped, 0 failed
Downloads
-
released this
2026-08-04 22:11:54 +00:00 | -4 commits to main since this releasev0.5 Phase 2 — Integration + Tech-Debt + NFR Measurement
Summary
- Milestone: v0.5 (Live Assist — on-the-job voice companion)
- Phase: 2 (Integration + Tech-Debt + NFR Measurement)
- Type: Feature (assist aggregation + cost tracking + NFR measurement + tech-debt fixes)
Deliverables
- server/assist/latency_metrics.py — p95/p50/p99 latency measurement (D-072 pilot tolerance)
- server/assist/guardrail_metrics.py — FP/FN rates + nightly trending
- server/assist/budget_check.py — C-3 cost budget check
- server/assist/learner_cache.py — aggregation cache persistence (P1+ #7)
- server/cohort/aggregator.py — _aggregate_assist branch (5 assist metrics, no schema change)
- server/cost.py — derive_assist_turn_cost() extension
- 60 new tests (469 total passed, 0 failed)
Requirements Covered (4)
REQ-NFR-ASSIST-01, REQ-IDEATE-04, REQ-IDEATE-06, REQ-IDEATE-07
v0.4 P1+ Tech-Debt Wave (8 findings addressed)
- Argon2id blocking → asyncio.to_thread()
- 429 mock test → mock-based test
- Cookie-secret length validation → WARNING if <32
- Credential status enum → ValueError on invalid
- Revocation audit log → log.info()
- Nightly zoneinfo → ZoneInfo('America/Winnipeg')
- Cache lost on restart → SQLite cohort_learner_cache
- f-string SQL → parameterized queries
Verification
APPROVE_WITH_NOTES — 4 layers PASS, 3 P1+ flagged (all LOW, non-blocking)
Tests
469 passed, 45 skipped, 0 failed
Downloads
-
released this
2026-08-04 21:19:24 +00:00 | -2 commits to main since this releasev0.5 Phase 1 — Assist Core + Guardrail
Summary
- Milestone: v0.5 (Live Assist — on-the-job voice companion)
- Phase: 1 (Assist Core + Guardrail)
- Type: Feature (new assist voice loop + guardrail surface)
Deliverables
- server/assist/ — full assist module (session, context, lifecycle, routes, pipeline, webrtc, consent, pii_policy, mode_conflict, guardrail_processor)
- server/guardrails/live_assist.py — 3-layer LiveAssistGuardrail (prompt + regex filter + audit log)
- client/src/AssistControl.tsx — tap-to-talk client control
- db/migrations/0004_assist.sql — assist session schema (session_type, guardrail_verdict)
- 92 new tests (409 total passed, 0 failed)
Requirements Covered (12)
REQ-ASSIST-01, REQ-ASSIST-02, REQ-ASSIST-03, REQ-NFR-ASSIST-02, REQ-NFR-ASSIST-03, REQ-NFR-ASSIST-04, REQ-IDEATE-01, REQ-IDEATE-02, REQ-IDEATE-03, REQ-IDEATE-05, REQ-IDEATE-08, REQ-IDEATE-09
Grill MUSTs Resolved
- G-049: In-loop guardrail processor retry validated (Pipecat 1.6.0 supports LLMFullResponseEndFrame + LLMContext.add_message)
- G-067: Guardrail FN rate 13.3% (≤20% pilot threshold)
Verification
APPROVE_WITH_NOTES — 4 layers PASS, 5 P1+ flagged for P2 post-hoc review
Tests
409 passed, 36 skipped, 0 failed
Downloads
-
released this
2026-08-04 19:59:30 +00:00 | 0 commits to main since this releasev0.5 Phase 0 — pre-execution (Live Assist planning artifacts)
Summary
- Milestone: v0.5 (Live Assist — on-the-job voice companion)
- Phase: 0 (pre-execution: SPECIFY → CLARIFY → RESEARCH → IDEATE → PLAN → GRILL)
- Type: NFR (docs/research/planning only — no code changes)
Deliverables
- PROJECT.md (v0.5 scope validated; Live Assist activated)
- REQUIREMENTS.md (16 active REQs: 3 ASSIST + 4 NFR + 9 IDEATE; 4 v0.6 backlog)
- ARCHITECTURE.md (v0.5 Live Assist Mode section — assist pipeline, context-binding, guardrail extension, aggregation)
- PERSONAS.md (voice-engineer REACTIVATED; 5 active, 2 deactivated)
- RESEARCH-v0.5-live-assist.md (760 lines, 7 domains, 14 risks R-ASSIST-01..14, D-064..D-073)
- PLAN-v0.5-live-assist.md (1075 lines, 2 execution phases, 12 slices, 6 waves, 33 tasks, 16/16 REQ coverage)
- GRILL-v0.5.md (627 lines, 40 challenges, 39 binding decisions G-042..G-080, 2 MUSTs, 1 escalation)
Key Decisions (D-058..D-073)
- D-071: tap-to-talk only in v0.5 (wake-word deferred to v0.6 — React-Web can't do foreground service)
- D-072: C-8 pilot tolerance ≤650ms (<600ms hardening in v0.6)
- D-060/D-068: 3-layer guardrail (prompt + regex filter + audit log)
- D-063: assist is coaching, not assessment (never updates mastery)
Grill Verdict
Proceed-with-conditions (0.70). 2 MUSTs:
- G-049: in-loop guardrail processor retry validation (Wave 1/2 spike)
- G-067: R-ASSIST-07 guardrail false-negative acceptance threshold (≤20% pilot)
1 escalation: PIPEDA consent-law review (human legal review before SHIP)
Tests
317 passed, 36 skipped, 0 failed (no code changes in Phase 0)
Requirements Covered
REQ-ASSIST-01, REQ-ASSIST-02, REQ-ASSIST-03, REQ-NFR-ASSIST-01..04, REQ-IDEATE-01..09
Next Phases
- P1 (Assist Core + Guardrail): 8 slices, 4 waves, 24 tasks → v0.1.11
- P2 (Integration + Tech-Debt + NFR): 4 slices, 2 waves, 9 tasks → v0.1.12
- P3 (Final — Review + Ship): v0.1.13 = v0.5 milestone release
Downloads
-
released this
2026-08-04 11:58:59 +00:00 | 2 commits to main since this releasev0.1.9 — v0.4 Milestone Release: Operator Tier (Cohort Dashboard + Auth + Postgres)
Milestone: v0.4 (Operator tier — cohort dashboard, auth, Postgres)
Type: Feature milestone
Previous milestone: v0.3 (Mastery scoring + competency rubrics + verifiable credentials) — v0.1.5
This release: v0.1.9 (merged to main)What's in this milestone
The v0.4 operator tier — a cohort dashboard for training operators, operator auth, and Postgres backing store — layered on top of the v0.3 mastery layer. The learner-facing surface carries forward unchanged (SQLite, voice loop, mastery gates, VC issuance). v0.4 adds the operator surface: Postgres 16 in the existing LXC CT, operator auth (argon2id + signed cookies), a cohort aggregation pipeline (k-anonymity ≥ 10, 7-day windows), and a React cohort dashboard with 3 k-anonymized views.
Phases
Phase Tag Description P0 v0.1.6 Pre-execution — 8 activated REQs, research, plan, grill (6 MUST) P1 v0.1.7 Operator foundation — Postgres 16, asyncpg, auth, VC migration, bootstrap CLI P2 v0.1.8 Cohort dashboard — aggregation pipeline, 3-view dashboard, SPA fallback P3 v0.1.9 Final review + audit + milestone ship (= this milestone release) Requirements Covered (8/8)
REQ-ID Requirement Phase REQ-MT-01 Operator-tier Postgres store (5 tables, asyncpg pool, PgStore) P1 REQ-MT-02 Cohort aggregation pipeline (k-anon ≥10, async hook, nightly reconcile) P1+P2 REQ-AUTH-01 Operator auth (argon2id, signed cookies, rate limit, single role) P1 REQ-DASH-01 Cohort dashboard (3 views, React, k-anonymized, inline sparklines) P2 REQ-NFR-AUTH-01 argon2id + httpOnly + secure + SameSite + 5/min rate limit P1 REQ-NFR-MT-01 Postgres-in-LXC without destabilizing learner service P1 REQ-NFR-DASH-01 k-anonymity ≥ 10 (write-time suppression, differencing-attack tested) P2 REQ-NFR-DASH-02 Freshness ≤ 24h (nightly reconcile + on-session-end hook) P2 Key Decisions (D-050..D-057)
- D-050: Postgres via asyncpg pool over Docker internal DNS (min 1/max 10)
- D-051: VC key migration — fresh keypair in Postgres, v0.3 public key archived as superseded
- D-052: Operator bootstrap via CLI script from env-provided credentials
- D-053: Dashboard = 3 views (practice, mastery, failure-patterns) k-anon ≥10
- D-054: Aggregation = async fire-and-forget + nightly 03:00 CT reconcile
- D-055: Postgres backup = nightly pg_dump to volume, 7-day retention
- D-056: Auth = signed stateless HMAC cookies, no sessions table
- D-057: Auth = server-side on every /api/operator/* + React guard for UX
Grill Binding Decisions (6 MUST, all honored)
- G-008: backup-restore drill task
- G-011: verification endpoint two-store fallback explicit
- G-027: first-boot path (no v0.3 active key) handled
- G-031: R-AUTH-01 — k-anon defense-in-depth primary, config flag secondary
- G-038: differencing-attack test (10 vs 9 learners)
- G-041: SPA fallback via custom StaticFiles subclass (not catch-all route)
Tests
- Python: 317 passed, 36 skipped (Postgres-requiring), 0 failed
- Client (vitest): 17/17 passed
- Build + typecheck: clean
- 57 new tests in P1 + 45 new tests in P2
Review + Audit
- Multi-persona review: APPROVE_WITH_NOTES (6/6 personas PASS, 0 P0, 8 P1+ carry-forward)
- Audit: HEALTHY (reconstruction PASS, file/branch/commit discipline PASS, 8/8 REQ, 6/6 grill MUSTs)
P1+ Carry-Forward (8, non-blocking, for next milestone backlog)
- argon2id blocking event loop (R-AUTH-02, pilot-acceptable)
- rate-limit 429 mock test gap
- cookie secret length not validated
- credential status enum validation
- credential revocation audit log (operator_id of revoker)
- nightly scheduler DST timezone (UTC-5 fixed vs true America/Winnipeg)
- aggregation in-memory cache lost on restart
- f-string SQL code smell (set_credential_status)
Next Milestone
v0.5 (Live Assist on-the-job companion) per ROADMAP.md
Downloads
-
released this
2026-08-04 11:43:39 +00:00 | -2 commits to main since this releasev0.1.8 — v0.4 Phase 2: Cohort Dashboard + Aggregation
Milestone: v0.4 (Operator tier — cohort dashboard, auth, Postgres)
Phase: 2 (cohort dashboard + aggregation — feature)
Previous: v0.1.7 (phase 1 — operator foundation)What's in this release
Cohort aggregation pipeline + auth-gated operator API + React cohort dashboard with 3 k-anonymized views.
Requirements Covered (4)
REQ-ID Requirement REQ-DASH-01 Cohort dashboard — 3 views (practice/mastery/failure-patterns), React, k-anon ≥10 REQ-NFR-DASH-01 k-anonymity ≥ 10 enforced (write-time suppression, display, e2e test) REQ-NFR-DASH-02 Freshness ≤ 24h (nightly reconcile + on-session-end hook) REQ-MT-02 Cohort aggregation pipeline (hook + nightly + k-anon suppression) Key features
- Aggregation pipeline: async fire-and-forget on-session-end hook (non-blocking, C-8) + nightly reconciliation at 03:00 CT; k-anonymity ≥ 10 write-time suppression (cell_suppressed=TRUE, value=NULL for cells < 10); idempotent upsert; no raw PII in Postgres
- 4 operator API endpoints (auth-gated): GET /api/operator/cohort (practice volume), /mastery (progression), /failure-patterns, GET+POST /credentials (VC management)
- React cohort dashboard: BrowserRouter for /operator/*, login form, dashboard shell with auth gate (GET /api/operator/me on mount), 3 k-anonymized view components, inline SVG sparklines (zero-dep), suppressed-cell display ("— (<10 learners)"), freshness indicator
- SPA fallback: SpaStaticFiles custom subclass (G-041 binding) — NOT a catch-all route; serves index.html for client-side routes; API routes + StaticFiles assets unaffected; voice UI at / unchanged
- G-038 differencing-attack test: 10 learners in window A, 9 in B → B suppressed, dropped learner not recoverable via subtraction (unit + API e2e)
Tests
317 passed, 36 skipped (Postgres-requiring), 0 failed (Python)
17/17 vitest passed (Dashboard auth gate, login, sparkline, suppressedLabel, formatFreshness, no-PII)
npm build + typecheck cleanGrill MUSTs honored (2/2 P2-applicable)
- G-038: differencing-attack test (unit + API e2e)
- G-041: SPA fallback via custom StaticFiles subclass (not catch-all route)
P1+ flagged for P3 review (4)
- Credential revocation audit log (operator_id of revoker)
- Nightly scheduler timezone (UTC-5 vs true DST)
- Aggregation in-memory cache lost on restart
- set_credential_status f-string interpolation (code smell)
Next
v0.1.9 (P3 — final review + audit + milestone ship to main = v0.4 milestone release)
Downloads
-
released this
2026-08-04 01:41:09 +00:00 | 0 commits to main since this releasev0.1.7 — v0.4 Phase 1: Operator Foundation
Milestone: v0.4 (Operator tier — cohort dashboard, auth, Postgres)
Phase: 1 (operator foundation — feature)
Previous: v0.1.6 (phase 0 — pre-execution)What's in this release
Operator-tier foundation: Postgres 16 Docker service, operator auth, VC issuer key migration SQLite→Postgres, operator bootstrap CLI, backup infrastructure.
Requirements Covered (5)
REQ-ID Requirement REQ-MT-01 Operator-tier Postgres store (5 tables, asyncpg pool, PgStore) REQ-AUTH-01 Operator auth (argon2id + signed cookies + rate limit) REQ-NFR-AUTH-01 Auth NFRs (argon2id, httpOnly+secure+SameSite, 5/min rate limit) REQ-NFR-MT-01 Postgres-in-LXC without destabilizing learner service (graceful degradation) REQ-MT-02 Cohort aggregation schema foundation (cohort_aggregates table) Key features
- Postgres 16 in Docker-in-LXC: asyncpg pool (min 1/max 10) via lifespan, migration runner, 5-table operator-tier schema, PgStore class
- Operator auth: argon2id password hashing, Starlette SessionMiddleware signed cookies (HMAC-SHA256), slowapi 5/min rate limit,
current_operatorserver-side dependency - VC issuer key migration: archive v0.3 public key as
supersededin Postgres BEFORE generating fresh v0.4 keypair (R-VC-MIG-01 mitigation). G-027: first-boot path (no v0.3 key) handled. Two-store verification fallback (G-011). - Operator bootstrap CLI:
scripts/create-operator.py— idempotent, argon2id hashing, env-provided credentials - Backup infrastructure:
scripts/backup-pg.sh(nightly pg_dump, 7-day %u rolling retention) + G-008 restore drill test - Graceful degradation: server starts without Postgres — learner voice loop unaffected, auth returns 503, VC verify falls back to SQLite
Grill MUSTs honored (4/4 P1-applicable)
- G-008: backup-restore drill task
- G-011: verification endpoint two-store fallback explicit
- G-027: first-boot path (no v0.3 active key) handled
- G-031: R-AUTH-01 reframed — k-anon defense-in-depth primary, config flag secondary
Tests
272 passed, 33 skipped (23 Postgres-requiring + 10 v0.3 voice-key/interop), 0 failed
57 new tests (34 run + 23 skip-without-Postgres)Next
v0.1.8 (P2 — cohort dashboard + aggregation pipeline + React UI)
Downloads
-
released this
2026-08-04 00:39:56 +00:00 | 2 commits to main since this releasev0.1.6 — v0.4 Phase 0: Pre-Execution (Operator Tier Planning)
Milestone: v0.4 (Operator tier — cohort dashboard, auth, Postgres)
Phase: 0 (pre-execution — NFR/docs only)
Previous: v0.1.5 (v0.3 milestone release)What's in this release
Phase 0 planning artifacts for the v0.4 operator tier. No code changes — docs only.
Activated Requirements (8)
REQ-ID Requirement Phase REQ-MT-01 Operator-tier Postgres store (D-040) P1 REQ-MT-02 Cohort aggregation pipeline (D-045) P1+P2 REQ-AUTH-01 Operator auth — argon2id + signed cookies (D-041) P1 REQ-DASH-01 Cohort dashboard — 3 views, k-anon ≥10 (D-044, D-053) P2 REQ-NFR-AUTH-01 Auth NFRs (argon2id, httpOnly, rate-limited) P1 REQ-NFR-MT-01 Postgres-in-LXC without destabilizing learner service P1 REQ-NFR-DASH-01 k-anonymity ≥ 10 enforced P2 REQ-NFR-DASH-02 Freshness ≤ 24h stale P2 Research (7 domains, 20 risks)
- Postgres 16 in Docker-in-LXC (asyncpg pool, named volumes, pg_dump backup)
- Operator auth (argon2id, Starlette SessionMiddleware, slowapi rate limit, secure-cookie-TLS resolution)
- Cohort aggregation (k-anon ≥10 write-time suppression, 7-day windows, async hook + nightly reconcile)
- React dashboard (React Router /operator/*, inline SVG sparklines, SPA fallback)
- VC issuer key migration (SQLite→Postgres, archive v0.3 public key as superseded)
- Operator bootstrap (CLI script from env-provided credentials)
- Persona assessment (6 active — frontend + devops reactivated, security retained)
Plan (2 execution phases, 10 slices, 52 tasks)
- P1 (Operator Foundation): 6 slices, 3 waves, 29 tasks — Postgres+asyncpg, auth, VC migration, bootstrap
- P2 (Cohort Dashboard): 4 slices, 2 waves, 23 tasks — aggregation pipeline, operator API, React dashboard, SPA fallback
- P3 (Final): review + audit + ship
Grill (proceed-with-conditions, 6 MUST)
- G-008: backup-restore drill task added to P1
- G-011: verification endpoint two-store fallback explicit
- G-027: first-boot path (no v0.3 active key) handled
- G-031: R-AUTH-01 reframed — k-anon defense-in-depth primary, config flag secondary
- G-038: differencing-attack test added (v0.3 grill FIX carried forward)
- G-041: SPA fallback uses custom StaticFiles subclass (not catch-all route)
Next
v0.1.7 (P1 — operator foundation: Postgres + auth + VC migration)
Downloads
-
released this
2026-08-04 00:15:02 +00:00 | 4 commits to main since this releasev0.3 Milestone Release — Mastery Scoring + Competency Rubrics + Verifiable Credentials
Phases
- P0 (pre-execution): SPECIFY -> CLARIFY -> RESEARCH -> PLAN -> GRILL -> SHIP (v0.1.3)
- P1 (mastery core + VC issuance): 9 slices, 5 waves, 238 tests (v0.1.4)
- P2 (final review + ship): REVIEW APPROVE_WITH_NOTES, AUDIT HEALTHY (v0.1.5 = milestone release)
What shipped
- Competency rubric engine (REQ-MAST-01): YAML rubrics, 4 criteria (empathy/resolution/de-escalation/professionalism), 5-level Dreyfus anchors, deterministic rule-based scorer, LLM evidence extraction with fuzzy-quote matching
- Mastery Score + gates (REQ-MAST-02): weighted mean + conjunctive floor, path gate (N=3 distinct + >=3.5), formative-tier
- Verifiable credentials (REQ-MAST-03): W3C VC 2.0, Ed25519, JCS canonicalization, Bitstring Status List revocation, public verification endpoint, formative-tier label
- IRT dynamic difficulty (REQ-SCEN-02): 1PL/Rasch, Bayesian theta update, cold-start fallback
- Scenario library (REQ-SCEN-03/04): 6 expert Customer Service scenarios, index.yaml manifest, AI-variation hooks
- Path engine (REQ-PATH-02): 6-week Customer Service path, mastery gates between weeks
Decisions
- D-031..D-049 (19 decisions, all >=0.70 confidence)
- D-031 (operator tier) deferred to v0.4 per grill Axis 2
Grill verdict
- 4 MUST conditions resolved (milestone split, VC interop tests, risk fixes, phase split)
- 5 FIX conditions tracked (non-blocking)
Test results
- 238 passed, 10 skipped (pre-existing live-key gates + 1 staging-gated VC interop)
- E2E smoke: 3 sessions -> gate opens, theta converges, progress advances
- 4/4 grill MUST conditions verified in code
Requirements
- 13/13 v0.3 REQ-IDs covered (7 functional + 6 NFR)
- 8 deferred to v0.4 (operator tier: cohort dashboard, auth, Postgres)
Verification
- P1 VERIFY: APPROVE_WITH_NOTES (4-layer: structural/behavioral/security/quality)
- P2 REVIEW: APPROVE_WITH_NOTES (0 P0 fixes, 5 P1 flags for post-hoc)
- P2 AUDIT: HEALTHY (reconstruction test, file discipline, branch hygiene, commit discipline)
Next milestone
- v0.4: operator tier (cohort dashboard + auth + Postgres + k-anonymity aggregation)
Downloads
-
released this
2026-08-04 00:03:18 +00:00 | 2 commits to milestone/v0.3-mastery-scoring since this releasev0.3 Phase 1 — Mastery Core + VC Issuance
Milestone v0.3 feature phase: competency rubrics, mastery scoring, IRT dynamic difficulty, scenario library, 6-week path, verifiable credentials.
What shipped
- Rubric engine (REQ-MAST-01): YAML rubrics + Pydantic models + deterministic rule-based scorer + LLM evidence extraction with fuzzy-quote matching
- Mastery Score (REQ-MAST-02): weighted mean + conjunctive floor + path gate (D-032: N=3 distinct + >=3.5)
- VC issuer (REQ-MAST-03): W3C VC 2.0, Ed25519, JCS canonicalization, Bitstring Status List, public verification endpoint, formative-tier
- IRT (REQ-SCEN-02): 1PL/Rasch, Bayesian theta update, cold-start fallback
- Scenario library (REQ-SCEN-03/04): 6 expert CS scenarios, index.yaml manifest, AI-variation hooks
- Path engine (REQ-PATH-02): 6-week Customer Service path, mastery gates
Test results
- 238 passed, 10 skipped (pre-existing live-key gates + 1 staging-gated interop)
- E2E smoke: 3 sessions -> gate opens, theta converges
- Grill 4 MUST conditions satisfied (milestone split, VC interop, risk fixes, phase split)
Requirements
- 13/13 REQ-IDs covered (7 functional + 6 NFR)
- 8 deferred to v0.4 (operator tier)
Commits
- feat(P01): SLICE-01..09 (9 slices, 5 waves)
- docs(P01): verify - APPROVE_WITH_NOTES
Downloads