refactor(content): rename mood vocabulary to match voice guide (D-035 Sprint 14 amendment)

Schema and Rust Mood enum renamed for author-friendly vocabulary:
fond→warm, comfortable→content, worried→anxious, concerned→frustrated.
Dropped: analytical (merged into focused), conflicted (modeled as
suspicious+warm collision). Added: hostile. Final 8 moods: anxious,
frustrated, content, suspicious, warm, hostile, relieved, focused.
Neutral = untagged. Resolves Gestalt's blocking issue on #121.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-20 19:00:07 +01:00
co-authored by Claude Opus 4.6
parent df4d7b4666
commit 91eb11da16
10 changed files with 66 additions and 134 deletions
+18 -22
View File
@@ -164,19 +164,17 @@ impl FromStr for Topic {
/// D-028 Layer 4: Mood tag — influences weighted selection.
///
/// 9 v0.1 values: 8 original + Focused added Sprint 8 (D-035 amendment)
/// for Kael dialogue at The Terminal and maintenance corridors.
/// 8 v0.1 values aligned to voice guide vocabulary (Sprint 14 rename).
/// Neutral mood is represented by omitting the mood tag (untagged = baseline).
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub enum Mood {
Fond,
Comfortable,
Worried,
Anxious,
Frustrated,
Content,
Suspicious,
Analytical,
Conflicted,
Concerned,
Warm,
Hostile,
Relieved,
/// Added Sprint 8 (D-035 amendment): Kael dialogue at Terminal/corridors.
Focused,
}
@@ -184,13 +182,12 @@ impl FromStr for Mood {
type Err = ParseEnumError;
fn from_str(s: &str) -> Result<Self, Self::Err> {
match s {
"fond" => Ok(Self::Fond),
"comfortable" => Ok(Self::Comfortable),
"worried" => Ok(Self::Worried),
"anxious" => Ok(Self::Anxious),
"frustrated" => Ok(Self::Frustrated),
"content" => Ok(Self::Content),
"suspicious" => Ok(Self::Suspicious),
"analytical" => Ok(Self::Analytical),
"conflicted" => Ok(Self::Conflicted),
"concerned" => Ok(Self::Concerned),
"warm" => Ok(Self::Warm),
"hostile" => Ok(Self::Hostile),
"relieved" => Ok(Self::Relieved),
"focused" => Ok(Self::Focused),
_ => Err(ParseEnumError {
@@ -709,15 +706,14 @@ mod tests {
#[test]
fn mood_parse_all_values() {
let values = [
"fond",
"comfortable",
"worried",
"anxious",
"frustrated",
"content",
"suspicious",
"analytical",
"conflicted",
"concerned",
"warm",
"hostile",
"relieved",
"focused", // Sprint 8 amendment (D-035)
"focused",
];
for v in values {
assert!(v.parse::<Mood>().is_ok(), "Failed to parse mood: {}", v);