Internal release. Not yet public.
The trace system landed today. Every turn through the pipeline now produces a structured record at each of the six layers — phonetics, text features, affect, developmental modulation, cognition, and generation. The record is JSON-serialisable and the serialiser is the thing that hits Firestore.
Downstream surfaces (Studio, the Analyze tool, the future trace inspector) all consume this same record. There is no separate "explanation" generated post-hoc; what you see is what ran.
Cost: rewriting four modules to emit the new shape. Worth it. The previous trace was a debugging convenience; this one is a contract.
Breaking: pipeline.process_turn now returns (response, trace)
where trace is a DecisionTrace instance rather than a list of log
lines. Internal callers updated.