feat(simulation): voice pipeline integration — Factual bypass, observer wiring, tell iteration (#650 #652 #651)

ContentType::Factual bypasses LLM for fact-bearing lines (numbers,
denials). Observer enrichment systems rewrite dialogue/conversation
text with voiced versions before snapshot assembly. Friendly and
RoutineDeviation tells get concrete surface-pattern examples.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-13 09:11:44 +01:00
co-authored by Claude Opus 4.6
parent ce0df2f320
commit 1a4fd578cc
8 changed files with 316 additions and 12 deletions
+2
View File
@@ -220,6 +220,7 @@ impl Serialize for ContentType {
match self {
ContentType::Dialogue => serializer.serialize_u8(0),
ContentType::Behavior => serializer.serialize_u8(1),
ContentType::Factual => serializer.serialize_u8(2),
}
}
}
@@ -230,6 +231,7 @@ impl<'de> Deserialize<'de> for ContentType {
match v {
0 => Ok(ContentType::Dialogue),
1 => Ok(ContentType::Behavior),
2 => Ok(ContentType::Factual),
_ => Err(serde::de::Error::custom("invalid ContentType")),
}
}