
jpmschweitzerandClaude Opus 4.6
9f34d030d7
feat(voice): complete Spike 2 voice pipeline with quality-tested prompt engine
Spike 2 delivers the full voice pipeline: queue → worker pool → sr-voice
child process (stdio JSONL) → cache → disk. Three rounds of quality testing
with Paula, Mellanie, and Gestalt produced iterative prompt improvements.
Prompt engine (prompt_builder.rs):
- Example-based epistemic marker integration (not keyword lists)
- Length-aware Angry tell variant (preserves facts on long content)
- Double-prompt technique: REMEMBER block repeats constraints near OUTPUT:
- Imperative injection framing (composition engine controls frequency)
- Anti-invention constraint ("do not add information not in the input")
- Universal RULES cleaned: worldbuilding moved to culture personas
Worker pool (worker.rs):
- Output post-processor strips after first newline (prevents prompt leakage)
- Watchdog poll loop (1s ticks) replaces blocking sleep for cancel
- Child health check before writing (try_wait)
Test infrastructure:
- voice_pipeline.rs: end-to-end test, auto-detects real sr-voice or mock
- voice_quality_batch.rs: 39 edge-case prompts for quality review
- mock-stdio.sh: Python JSONL mock for CI (no model needed)
- Makefile targets: test-voice-mock, test-voice-real
Quality results (Gemma 2B Q4_K_M, CPU ~13 t/s):
- Epistemic markers: naturally integrated (round 1 comma-lists fixed)
- Tell differentiation: 3/5 working (Nervous, Guarded, Angry)
- Information preservation: ~90% (up from ~70%)
- Prompt leakage: eliminated
- Open: Friendly/RoutineDeviation tells inert (#651), Factual bypass (#650)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 19:20:06 +01:00
..
2026-02-18 02:20:24 +01:00
2026-03-05 09:13:24 +01:00
2026-02-25 12:13:03 +01:00
2026-03-05 09:13:24 +01:00
2026-03-05 09:13:24 +01:00
2026-03-05 09:13:24 +01:00
2026-02-28 23:24:47 +01:00
2026-02-28 16:34:36 +01:00
2026-02-19 12:04:29 +01:00
2026-03-05 09:13:24 +01:00
2026-02-19 14:14:07 +01:00
2026-02-20 19:00:07 +01:00
2026-03-03 23:40:59 +01:00
2026-03-05 09:13:24 +01:00
2026-02-28 23:48:03 +01:00
2026-02-21 13:42:59 +01:00
2026-03-05 09:13:24 +01:00
2026-03-05 09:13:24 +01:00
2026-02-19 12:04:29 +01:00
2026-03-03 23:40:59 +01:00
2026-02-25 12:57:59 +01:00
2026-03-05 09:13:24 +01:00
2026-02-11 20:15:24 +01:00
2026-03-05 10:59:38 +01:00
2026-02-19 12:04:29 +01:00
2026-03-05 09:13:24 +01:00
2026-02-16 00:40:43 +01:00
2026-02-11 17:53:16 +01:00
2026-03-05 10:59:38 +01:00
2026-02-27 17:59:49 +01:00
2026-02-27 17:46:37 +01:00
2026-02-28 16:34:36 +01:00
2026-02-27 11:11:31 +01:00
2026-03-05 09:13:24 +01:00
2026-03-07 19:20:06 +01:00
2026-03-07 19:20:06 +01:00