refactor(data): rename Krenn to Van Maanen's Star
System S-057 assigned to real star GJ 35 (Van Maanen's Star, DG white dwarf at 13.9 ly). Renamed across all content, server code, docs, decisions, wiki lore, and config files. 224 files updated. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -56,8 +56,8 @@ struct Args {
|
||||
#[arg(long)]
|
||||
seed: u64,
|
||||
|
||||
/// Culture to use (default: "krenn").
|
||||
#[arg(long, default_value = "krenn")]
|
||||
/// Culture to use (default: "van-maanens-star").
|
||||
#[arg(long, default_value = "van-maanens-star")]
|
||||
culture: String,
|
||||
|
||||
/// Phase 2: load zone spec and culture from RON files on disk.
|
||||
@@ -226,10 +226,10 @@ fn hardcoded_industrial_zone() -> ZoneSpec {
|
||||
// Phase 1: hardcoded culture stub
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
fn hardcoded_krenn_culture() -> CultureProfile {
|
||||
fn hardcoded_van_maanens_star_culture() -> CultureProfile {
|
||||
CultureProfile {
|
||||
id: "krenn".into(),
|
||||
name: "Krenn System Culture".into(),
|
||||
id: "van-maanens-star".into(),
|
||||
name: "Van Maanen's Star Culture".into(),
|
||||
description: "Working-class pragmatic culture. ~180 years settled. Community-oriented, suspicious of distant authority, values competence and reliability.".into(),
|
||||
naming: NamingConventions {
|
||||
style: "compact, consonant-heavy, first-name-primary".into(),
|
||||
@@ -1007,9 +1007,9 @@ fn main() {
|
||||
}
|
||||
};
|
||||
let culture = match args.culture.as_str() {
|
||||
"krenn" => hardcoded_krenn_culture(),
|
||||
"van-maanens-star" => hardcoded_van_maanens_star_culture(),
|
||||
other => {
|
||||
eprintln!("Unknown culture: '{}'. Use 'krenn'.", other);
|
||||
eprintln!("Unknown culture: '{}'. Use 'van-maanens-star'.", other);
|
||||
eprintln!("(Phase 2 with --from-files loads culture RON from disk)");
|
||||
process::exit(1);
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
//! ```sh
|
||||
//! # Via wrapper script (recommended):
|
||||
//! tooling/validate-ron content/global/zone-identity-spec.example.ron zone
|
||||
//! tooling/validate-ron content/global/culture-krenn.example.ron culture
|
||||
//! tooling/validate-ron content/global/culture-van-maanens-star.example.ron culture
|
||||
//!
|
||||
//! # Direct:
|
||||
//! cargo run --bin validate_ron -- <file.ron> <zone|culture>
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
//!
|
||||
//! The Rust structs ARE the schema. Copy team fills RON files to match these structs:
|
||||
//! - Zone identity spec: ticket #609
|
||||
//! - Culture profile (Krenn): ticket #610
|
||||
//! - Culture profile (Van Maanen's Star): ticket #610
|
||||
//!
|
||||
//! ## Format
|
||||
//!
|
||||
@@ -106,7 +106,7 @@ pub struct SocialSiteSpec {
|
||||
/// Example:
|
||||
/// action_text: "moves freight containers"
|
||||
/// context: OnShift
|
||||
/// → assembled with Krenn modifier "with mechanical efficiency"
|
||||
/// → assembled with Van Maanen's Star modifier "with mechanical efficiency"
|
||||
/// → "moves freight containers with mechanical efficiency"
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct BehaviorPrimitive {
|
||||
@@ -231,7 +231,7 @@ pub fn assemble_behaviors(
|
||||
/// they have, what values shape their personality distribution.
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct CultureProfile {
|
||||
/// Culture identifier (e.g. "krenn").
|
||||
/// Culture identifier (e.g. "van-maanens-star").
|
||||
pub id: String,
|
||||
/// Human-readable culture name.
|
||||
pub name: String,
|
||||
@@ -501,8 +501,8 @@ mod tests {
|
||||
#[test]
|
||||
fn culture_profile_round_trips_through_ron() {
|
||||
let profile = CultureProfile {
|
||||
id: "krenn".into(),
|
||||
name: "Krenn System Culture".into(),
|
||||
id: "van-maanens-star".into(),
|
||||
name: "Van Maanen's Star Culture".into(),
|
||||
description: "Working-class pragmatic culture".into(),
|
||||
naming: NamingConventions {
|
||||
style: "compact, consonant-heavy".into(),
|
||||
@@ -531,7 +531,7 @@ mod tests {
|
||||
let ron_str =
|
||||
ron::ser::to_string_pretty(&profile, ron::ser::PrettyConfig::default()).unwrap();
|
||||
let deserialized: CultureProfile = ron::from_str(&ron_str).unwrap();
|
||||
assert_eq!(deserialized.id, "krenn");
|
||||
assert_eq!(deserialized.id, "van-maanens-star");
|
||||
assert_eq!(deserialized.naming.given_names.len(), 2);
|
||||
assert_eq!(deserialized.values.favored_traits.len(), 2);
|
||||
}
|
||||
@@ -570,7 +570,7 @@ mod tests {
|
||||
let output = SpikeOutput {
|
||||
zone_type: "rural".into(),
|
||||
seed: 42,
|
||||
culture: "krenn".into(),
|
||||
culture: "van-maanens-star".into(),
|
||||
npcs: vec![],
|
||||
};
|
||||
|
||||
|
||||
@@ -249,7 +249,7 @@ mod tests {
|
||||
fn zone_cache_store_and_lookup() {
|
||||
let mut cache = ZoneVoiceCache::new("v1".into(), "i1".into());
|
||||
let key = CacheKey {
|
||||
culture_id: "krenn".into(),
|
||||
culture_id: "van-maanens-star".into(),
|
||||
npc_stable_id: 42,
|
||||
content_type: ContentType::Dialogue,
|
||||
content_index: 0,
|
||||
@@ -263,7 +263,7 @@ mod tests {
|
||||
fn zone_cache_miss_returns_none() {
|
||||
let cache = ZoneVoiceCache::new("v1".into(), "i1".into());
|
||||
let key = CacheKey {
|
||||
culture_id: "krenn".into(),
|
||||
culture_id: "van-maanens-star".into(),
|
||||
npc_stable_id: 42,
|
||||
content_type: ContentType::Dialogue,
|
||||
content_index: 0,
|
||||
@@ -276,7 +276,7 @@ mod tests {
|
||||
fn zone_cache_round_trips_through_msgpack() {
|
||||
let mut cache = ZoneVoiceCache::new("v1".into(), "i1".into());
|
||||
let key = CacheKey {
|
||||
culture_id: "krenn".into(),
|
||||
culture_id: "van-maanens-star".into(),
|
||||
npc_stable_id: 42,
|
||||
content_type: ContentType::Behavior,
|
||||
content_index: 3,
|
||||
@@ -297,7 +297,7 @@ mod tests {
|
||||
|
||||
let mut store = VoiceCacheStore::new(dir.clone(), 12345, "v1".into(), "i1".into());
|
||||
let key = CacheKey {
|
||||
culture_id: "krenn".into(),
|
||||
culture_id: "van-maanens-star".into(),
|
||||
npc_stable_id: 1,
|
||||
content_type: ContentType::Dialogue,
|
||||
content_index: 0,
|
||||
@@ -320,7 +320,7 @@ mod tests {
|
||||
|
||||
let mut store = VoiceCacheStore::new(dir.clone(), 42, "v1".into(), "i1".into());
|
||||
let key = CacheKey {
|
||||
culture_id: "krenn".into(),
|
||||
culture_id: "van-maanens-star".into(),
|
||||
npc_stable_id: 1,
|
||||
content_type: ContentType::Dialogue,
|
||||
content_index: 0,
|
||||
|
||||
@@ -87,7 +87,7 @@ mod tests {
|
||||
fn cache_hit_returns_voiced_text() {
|
||||
let cache = test_cache();
|
||||
let key = CacheKey {
|
||||
culture_id: "krenn".into(),
|
||||
culture_id: "van-maanens-star".into(),
|
||||
npc_stable_id: 42,
|
||||
content_type: ContentType::Behavior,
|
||||
content_index: 0,
|
||||
@@ -96,7 +96,7 @@ mod tests {
|
||||
cache.lock().unwrap().store(100, key, "Voiced line.".into());
|
||||
|
||||
let result = voiced_behavior(
|
||||
&cache, 100, "krenn", 42, ContentType::Behavior, 0, None,
|
||||
&cache, 100, "van-maanens-star", 42, ContentType::Behavior, 0, None,
|
||||
"Base line.", false,
|
||||
);
|
||||
assert_eq!(result, "Voiced line.");
|
||||
@@ -106,7 +106,7 @@ mod tests {
|
||||
fn cache_miss_returns_base_text() {
|
||||
let cache = test_cache();
|
||||
let result = voiced_behavior(
|
||||
&cache, 100, "krenn", 42, ContentType::Behavior, 0, None,
|
||||
&cache, 100, "van-maanens-star", 42, ContentType::Behavior, 0, None,
|
||||
"Base line.", false,
|
||||
);
|
||||
assert_eq!(result, "Base line.");
|
||||
@@ -117,7 +117,7 @@ mod tests {
|
||||
let cache = test_cache();
|
||||
// Store a voiced version under the Factual key — it must never be returned.
|
||||
let key = CacheKey {
|
||||
culture_id: "krenn".into(),
|
||||
culture_id: "van-maanens-star".into(),
|
||||
npc_stable_id: 42,
|
||||
content_type: ContentType::Factual,
|
||||
content_index: 0,
|
||||
@@ -131,7 +131,7 @@ mod tests {
|
||||
let result = voiced_behavior(
|
||||
&cache,
|
||||
100,
|
||||
"krenn",
|
||||
"van-maanens-star",
|
||||
42,
|
||||
ContentType::Factual,
|
||||
0,
|
||||
@@ -147,7 +147,7 @@ mod tests {
|
||||
let cache = test_cache();
|
||||
// Even if cache has a voiced version, tell behaviors return base text
|
||||
let key = CacheKey {
|
||||
culture_id: "krenn".into(),
|
||||
culture_id: "van-maanens-star".into(),
|
||||
npc_stable_id: 42,
|
||||
content_type: ContentType::Behavior,
|
||||
content_index: 0,
|
||||
@@ -156,7 +156,7 @@ mod tests {
|
||||
cache.lock().unwrap().store(100, key, "Voiced tell.".into());
|
||||
|
||||
let result = voiced_behavior(
|
||||
&cache, 100, "krenn", 42, ContentType::Behavior, 0,
|
||||
&cache, 100, "van-maanens-star", 42, ContentType::Behavior, 0,
|
||||
Some(TellCategory::Angry), "Base tell.", true,
|
||||
);
|
||||
assert_eq!(result, "Base tell.");
|
||||
|
||||
@@ -372,10 +372,10 @@ mod tests {
|
||||
};
|
||||
use crate::npc::PersonalityTrait;
|
||||
|
||||
fn krenn_culture() -> CultureProfile {
|
||||
fn van_maanens_star_culture() -> CultureProfile {
|
||||
CultureProfile {
|
||||
id: "krenn".into(),
|
||||
name: "Krenn System Culture".into(),
|
||||
id: "van-maanens-star".into(),
|
||||
name: "Van Maanen's Star Culture".into(),
|
||||
description: "Working-class pragmatic".into(),
|
||||
naming: NamingConventions {
|
||||
style: "compact".into(),
|
||||
@@ -396,7 +396,7 @@ mod tests {
|
||||
disfavored_traits: vec![PersonalityTrait::Reclusive],
|
||||
},
|
||||
voice_persona: Some(
|
||||
"PERSONA: You are a Krenn station worker.\n\
|
||||
"PERSONA: You are a Van Maanen's Star station worker.\n\
|
||||
1. Be direct. No pleasantries.\n\
|
||||
2. You're working-class and pragmatic."
|
||||
.into(),
|
||||
@@ -465,9 +465,9 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn prompt_contains_persona_when_present() {
|
||||
let culture = krenn_culture();
|
||||
let culture = van_maanens_star_culture();
|
||||
let result = build_prompt(&culture, "Hello.", ContentType::Dialogue, None, 42);
|
||||
assert!(result.prompt.contains("PERSONA: You are a Krenn station worker"));
|
||||
assert!(result.prompt.contains("PERSONA: You are a Van Maanen's Star station worker"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -479,7 +479,7 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn prompt_contains_examples_when_present() {
|
||||
let culture = krenn_culture();
|
||||
let culture = van_maanens_star_culture();
|
||||
let result = build_prompt(&culture, "Hello.", ContentType::Dialogue, None, 42);
|
||||
assert!(result.prompt.contains("EXAMPLES:"));
|
||||
assert!(result.prompt.contains("Look, that's not mine to say."));
|
||||
@@ -536,7 +536,7 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn guarded_tell_suppresses_oath_injection() {
|
||||
let culture = krenn_culture();
|
||||
let culture = van_maanens_star_culture();
|
||||
// Run many seeds — none should fire oath with Guarded tell
|
||||
for seed in 0..100 {
|
||||
let result = build_prompt(
|
||||
@@ -556,7 +556,7 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn neutral_tell_allows_oath_injection() {
|
||||
let culture = krenn_culture();
|
||||
let culture = van_maanens_star_culture();
|
||||
// With enough seeds, at least one should fire (frequency 0.25)
|
||||
let fired_count = (0..100)
|
||||
.filter(|&seed| {
|
||||
@@ -583,7 +583,7 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn deterministic_injection_for_same_seed() {
|
||||
let culture = krenn_culture();
|
||||
let culture = van_maanens_star_culture();
|
||||
let result1 = build_prompt(&culture, "Test.", ContentType::Dialogue, None, 42);
|
||||
let result2 = build_prompt(&culture, "Test.", ContentType::Dialogue, None, 42);
|
||||
assert_eq!(result1.prompt, result2.prompt);
|
||||
|
||||
@@ -242,7 +242,7 @@ mod tests {
|
||||
priority,
|
||||
npc_stable_id: 1,
|
||||
zone_id: 100,
|
||||
culture_id: "krenn".into(),
|
||||
culture_id: "van-maanens-star".into(),
|
||||
base_text: text.into(),
|
||||
content_type: ContentType::Dialogue,
|
||||
content_index: 0,
|
||||
|
||||
@@ -482,7 +482,7 @@ mod tests {
|
||||
priority: crate::voice::queue::Priority::High,
|
||||
npc_stable_id: 42,
|
||||
zone_id: 100,
|
||||
culture_id: "krenn".into(),
|
||||
culture_id: "van-maanens-star".into(),
|
||||
base_text: "Test.".into(),
|
||||
content_type: crate::voice::prompt_builder::ContentType::Dialogue,
|
||||
content_index: 5,
|
||||
@@ -490,7 +490,7 @@ mod tests {
|
||||
seed: 99,
|
||||
};
|
||||
let key = cache_key_from_request(&request);
|
||||
assert_eq!(key.culture_id, "krenn");
|
||||
assert_eq!(key.culture_id, "van-maanens-star");
|
||||
assert_eq!(key.npc_stable_id, 42);
|
||||
assert_eq!(key.content_index, 5);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user