feat(copy): zone-type template architecture, culture profiles, v0.1 cleanup (#634-661) #91

Closed
jpmschweitzer wants to merge 0 commits from copy into main
Owner

Summary

  • Remove v0.1 hand-authored Krenn dialogue/monologue/NPC content (64 files) and detective mission system (#656, #657)
  • Add Vael and Osse culture profiles with voice personas, behavior modifiers, NEVER blocks (#653)
  • Author behavior primitives for all roles + culture modifiers across 3 cultures (#634)
  • Restructure behavior primitives into zone-type template files — primitives are now zone-type-generic, not per-location (#661, D-142)
  • File D-140 (dialogue quality rules), D-142 (zone-type template architecture: 31 zone types, POI 3-tier system, 300+ cultures, LLM flavor layer rules)
  • Add authoring guides: base text elevation, culture creation, content directory structure
  • Clean investigation.* fact_id references from environmental/triangle files

Architecture (D-142)

Three-layer behavior system for 300+ planetary systems:

  1. Zone-type primitives (what the body does) — universal per zone type, ~1,860 lines for 31 types
  2. Culture modifiers (how this culture does it) — 7 categories, ~3,600 lines for 300+ cultures
  3. Gemma LLM flavor (local color) — culture-neutral runtime enrichment (weather, time, environment)

Base text (layers 1+2) playable without LLM. Authoring cost O(zone_types + cultures), not O(locations).

Server dependency

#663: Server needs ZoneTypeTemplate + LocationSpec structs and validate-ron schema update to match the new content format. Content is ahead of server — no breakage, just validator gap.

Test plan

  • All RON files validate via tooling/validate-ron (culture schema)
  • Pre-commit hook passes (fact_id and decision_id checks)
  • cargo check passes (no references to deleted content)
  • Server team adds ZoneTypeTemplate struct (#663)
  • Integration test: generator spike loads zone-type template + culture, produces composed behaviors

🤖 Generated with Claude Code

## Summary - Remove v0.1 hand-authored Krenn dialogue/monologue/NPC content (64 files) and detective mission system (#656, #657) - Add Vael and Osse culture profiles with voice personas, behavior modifiers, NEVER blocks (#653) - Author behavior primitives for all roles + culture modifiers across 3 cultures (#634) - Restructure behavior primitives into zone-type template files — primitives are now zone-type-generic, not per-location (#661, D-142) - File D-140 (dialogue quality rules), D-142 (zone-type template architecture: 31 zone types, POI 3-tier system, 300+ cultures, LLM flavor layer rules) - Add authoring guides: base text elevation, culture creation, content directory structure - Clean investigation.* fact_id references from environmental/triangle files ## Architecture (D-142) Three-layer behavior system for 300+ planetary systems: 1. **Zone-type primitives** (what the body does) — universal per zone type, ~1,860 lines for 31 types 2. **Culture modifiers** (how this culture does it) — 7 categories, ~3,600 lines for 300+ cultures 3. **Gemma LLM flavor** (local color) — culture-neutral runtime enrichment (weather, time, environment) Base text (layers 1+2) playable without LLM. Authoring cost O(zone_types + cultures), not O(locations). ## Server dependency #663: Server needs ZoneTypeTemplate + LocationSpec structs and validate-ron schema update to match the new content format. Content is ahead of server — no breakage, just validator gap. ## Test plan - [x] All RON files validate via tooling/validate-ron (culture schema) - [x] Pre-commit hook passes (fact_id and decision_id checks) - [x] cargo check passes (no references to deleted content) - [ ] Server team adds ZoneTypeTemplate struct (#663) - [ ] Integration test: generator spike loads zone-type template + culture, produces composed behaviors 🤖 Generated with [Claude Code](https://claude.com/claude-code)
jpmschweitzer added 6 commits 2026-03-13 11:48:48 +01:00
Delete 64 hand-authored Krenn dialogue/monologue/NPC files superseded
by generated NPCs (D-122) and voice pipeline (D-138). Remove detective
investigation system dropped in v0.2 pivot (D-117): knowledge catalog,
faction, design docs, workshop archives, wireframe detective sections.
Clean investigation.* fact_id references from environmental and triangle
files. Strip investigation cross-references from overheard.yaml.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Author two new culture RON files (culture-vael.ron, culture-osse.ron)
with voice_persona, voice_examples, occasional_injections, explicit
NEVER blocks, and behavior_modifiers (7 categories each). Add
behavior_modifiers to culture-krenn.ron and explicit NEVER block.
Modifier categories: work_pace, physical_manner, social_signal,
task_completion, environmental_scan, offduty_posture, authority_response.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move behavior_primitives from per-location zone specs into global
zone-type template files (content/global/zone-types/). Location specs
now declare zone_type and contain only metadata (role weights, social
sites, economic/density levels). Primitives are culture-neutral and
reusable across all 300+ systems. Scrub Krenn-specific language.

New files: rural_agricultural.ron, industrial_freight.ron
Modified: krenn-rural-zone.ron, krenn-industrial-zone.ron (metadata only)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
D-140: Paula's six rules for dialogue re-voicing quality — secret-tier
passthrough, epistemic weight, access tier feel, named entity
passthrough, relationship-specific lines, culture register override.
D-142: Zone-type template architecture — three-layer behavior system,
31 zone types for v1.0, POI three-tier system, scale math for 300+
systems with 300+ cultures. Amend D-123 (baked vs pre-voiced modes),
supersede D-124 (resolved by two-spike strategy).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Three scalability-focused authoring guides for content production
across 300+ systems:
- base-text-authoring-guide.md: elevation checklist, quality test
- culture-authoring-guide.md: 8-step workflow, modifier contract,
  cross-cultural contrast test, one-day-per-culture target
- content-structure-canonical.md: directory template, surviving
  structure audit, culture RON field reference

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Author
Owner

Review: copy -> main (type: copy) — PR #91

Hoshe (QA): REQUEST_CHANGES

Well-structured content rework. Deletion of v0.1 content is clean, zone-type templates are high quality. Several defects need resolution.

# File Severity Issue
1 zone-types/*.ron:7 critical References D-141 which doesn't exist — should be D-142
2 culture-*.ron warning Behavior modifier coverage below spec minimum (2 per category) — offduty_posture, authority_response, environmental_scan have only 1 each across all three cultures
3 culture-*.ron warning 6 name pool cross-contaminations: Vel, Ness (Osse/Krenn), Sorel, Tessik, Harven (Vael/Krenn), Arven (Osse/Vael)
4 content-structure-canonical.md:208 warning Says Krenn lacks NEVER block and behavior_modifiers — both false after this PR
5 overheard.yaml warning Not in canonical path, all 48 entries reference deleted named NPCs, not flagged as legacy or assigned to a ticket
6 environmental/*.yaml warning dual_lens properties retained — dead fields referencing removed archetypes
7 insert-hud-wireframe-v01.md suggestion Retains smuggler labels as "tycoon reference" but active tickets point here
8 base-text-authoring-guide.md:45 suggestion Example crop-row primitive doesn't match actual RON content

Uncaptured work: D-142 defines 31 zone types but only 2 templates shipped — remaining 29 need a backlog ticket. overheard.yaml needs a disposition decision.

Paula (Narrative Depth): REQUEST_CHANGES

Genuinely strong work. Zone-type primitives are high quality, overheard pool is exceptional. Two blockers are documentation hygiene, not design failures.

# File Severity Issue
1 environmental/*.yaml warning dual_lens dead properties — strip or annotate as v01_example
2 content-structure-canonical.md:208 warning Stale note says Krenn lacks NEVER block and behavior_modifiers
3 culture-osse.ron / culture-krenn.ron warning authority_response modifiers semantically identical ("at the same pace as before" vs "without a change in pace")
4 culture-osse.ron suggestion Strongest voice example (#4, equipment warning) should be example #1
5 industrial_freight.ron:128 suggestion Foreman primitive "because she knows who did it" embeds Krenn cultural judgment in culture-neutral template
6 overheard.yaml suggestion 13 consecutive high-value gossip pairs — signal density may feel staged

Miri (World Consistency): REQUEST_CHANGES

Cultures are well-constructed, distinct, internally coherent, no significant IP originality problems. One notable blocker on lore extension.

# File Severity Issue
1 culture-osse.ron:12,23 warning "Syndic" and "Meridian registration" extend setting without a D-record — file a decision or replace with generic descriptors
2 culture-osse.ron:32,36 suggestion "Ness" and "Vel" name collisions with Krenn pool
3 culture-vael.ron:34 suggestion "Ariel" — Earth name, fails IP check
4 culture-vael.ron:44-45 suggestion "Arven"/"Harven" family name collision with Krenn
5 culture-osse.ron:74 suggestion "See you at handoff" farewell verbatim in both Osse and Krenn
6 industrial_freight.ron:44 suggestion Gendered pronoun in culture-neutral template
7 culture-vael.ron:113 suggestion Voice persona instruction 7 uses third-person, rest is second-person imperative

Cross-reviewer consensus

  • content-structure-canonical.md stale (Hoshe + Paula)
  • dual_lens dead properties (Hoshe + Paula)
  • Name pool cross-contamination — 6 overlaps (Hoshe + Miri)
  • authority_response Krenn/Osse overlap (Paula + Miri)

Lead notes

  • D-138 has an inline model provenance policy addition — will be removed post-merge (confirmed by lead)
  • #661 (zone-type templates) is new work not in the original sprint plan — needs retroactive ticket
  • D-142's 31-type taxonomy implies ~29 unauthored zone-type templates — needs backlog ticket

Verdict: CHANGES REQUESTED

## Review: copy -> main (type: copy) — PR #91 ### Hoshe (QA): REQUEST_CHANGES Well-structured content rework. Deletion of v0.1 content is clean, zone-type templates are high quality. Several defects need resolution. | # | File | Severity | Issue | |---|------|----------|-------| | 1 | zone-types/*.ron:7 | critical | References D-141 which doesn't exist — should be D-142 | | 2 | culture-*.ron | warning | Behavior modifier coverage below spec minimum (2 per category) — `offduty_posture`, `authority_response`, `environmental_scan` have only 1 each across all three cultures | | 3 | culture-*.ron | warning | 6 name pool cross-contaminations: Vel, Ness (Osse/Krenn), Sorel, Tessik, Harven (Vael/Krenn), Arven (Osse/Vael) | | 4 | content-structure-canonical.md:208 | warning | Says Krenn lacks NEVER block and behavior_modifiers — both false after this PR | | 5 | overheard.yaml | warning | Not in canonical path, all 48 entries reference deleted named NPCs, not flagged as legacy or assigned to a ticket | | 6 | environmental/*.yaml | warning | `dual_lens` properties retained — dead fields referencing removed archetypes | | 7 | insert-hud-wireframe-v01.md | suggestion | Retains smuggler labels as "tycoon reference" but active tickets point here | | 8 | base-text-authoring-guide.md:45 | suggestion | Example crop-row primitive doesn't match actual RON content | **Uncaptured work:** D-142 defines 31 zone types but only 2 templates shipped — remaining 29 need a backlog ticket. `overheard.yaml` needs a disposition decision. ### Paula (Narrative Depth): REQUEST_CHANGES Genuinely strong work. Zone-type primitives are high quality, overheard pool is exceptional. Two blockers are documentation hygiene, not design failures. | # | File | Severity | Issue | |---|------|----------|-------| | 1 | environmental/*.yaml | warning | `dual_lens` dead properties — strip or annotate as v01_example | | 2 | content-structure-canonical.md:208 | warning | Stale note says Krenn lacks NEVER block and behavior_modifiers | | 3 | culture-osse.ron / culture-krenn.ron | warning | `authority_response` modifiers semantically identical ("at the same pace as before" vs "without a change in pace") | | 4 | culture-osse.ron | suggestion | Strongest voice example (#4, equipment warning) should be example #1 | | 5 | industrial_freight.ron:128 | suggestion | Foreman primitive "because she knows who did it" embeds Krenn cultural judgment in culture-neutral template | | 6 | overheard.yaml | suggestion | 13 consecutive high-value gossip pairs — signal density may feel staged | ### Miri (World Consistency): REQUEST_CHANGES Cultures are well-constructed, distinct, internally coherent, no significant IP originality problems. One notable blocker on lore extension. | # | File | Severity | Issue | |---|------|----------|-------| | 1 | culture-osse.ron:12,23 | warning | "Syndic" and "Meridian registration" extend setting without a D-record — file a decision or replace with generic descriptors | | 2 | culture-osse.ron:32,36 | suggestion | "Ness" and "Vel" name collisions with Krenn pool | | 3 | culture-vael.ron:34 | suggestion | "Ariel" — Earth name, fails IP check | | 4 | culture-vael.ron:44-45 | suggestion | "Arven"/"Harven" family name collision with Krenn | | 5 | culture-osse.ron:74 | suggestion | "See you at handoff" farewell verbatim in both Osse and Krenn | | 6 | industrial_freight.ron:44 | suggestion | Gendered pronoun in culture-neutral template | | 7 | culture-vael.ron:113 | suggestion | Voice persona instruction 7 uses third-person, rest is second-person imperative | ### Cross-reviewer consensus - `content-structure-canonical.md` stale (Hoshe + Paula) - `dual_lens` dead properties (Hoshe + Paula) - Name pool cross-contamination — 6 overlaps (Hoshe + Miri) - `authority_response` Krenn/Osse overlap (Paula + Miri) ### Lead notes - D-138 has an inline model provenance policy addition — will be removed post-merge (confirmed by lead) - #661 (zone-type templates) is new work not in the original sprint plan — needs retroactive ticket - D-142's 31-type taxonomy implies ~29 unauthored zone-type templates — needs backlog ticket ### Verdict: CHANGES REQUESTED
jpmschweitzer added 3 commits 2026-03-13 12:11:21 +01:00
D-141→D-142 reference in zone-type templates, name pool
cross-contamination resolved (zero overlaps across cultures),
modifier coverage expanded to 2+ per category, authority_response
differentiated Krenn/Osse, gendered pronouns removed from neutral
templates, Osse ungrounded lore terms replaced, dual_lens dead
properties stripped from environmental YAML, overheard.yaml
annotated as legacy (#664).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Update content-structure-canonical.md to reflect Krenn NEVER block
and behavior_modifiers now present. Fix base-text-authoring-guide
example to match actual RON primitive format.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Author
Owner

Re-review: copy -> main (type: copy) — PR #91

Hoshe (QA): APPROVE

All 15 previous issues fixed. No new issues.

Paula (Narrative Depth): APPROVE

Both blockers resolved, all mediums and suggestions addressed. Content quality is strong.

Miri (World Consistency): REQUEST_CHANGES (1 suggestion)

5/6 previous issues fixed. Remaining: Vael "Arven" / Krenn "Harven" near-collision.

Verdict: APPROVED with post-merge fix

2/3 approve outright. Miri's remaining item (one-word cosmetic name fix) resolved post-merge: "Arven" → "Arvenis" in commit 88de04d.

Also removed inline model provenance policy from D-138 per lead direction (commit aa55abb).

## Re-review: copy -> main (type: copy) — PR #91 ### Hoshe (QA): APPROVE All 15 previous issues fixed. No new issues. ### Paula (Narrative Depth): APPROVE Both blockers resolved, all mediums and suggestions addressed. Content quality is strong. ### Miri (World Consistency): REQUEST_CHANGES (1 suggestion) 5/6 previous issues fixed. Remaining: Vael "Arven" / Krenn "Harven" near-collision. ### Verdict: APPROVED with post-merge fix 2/3 approve outright. Miri's remaining item (one-word cosmetic name fix) resolved post-merge: "Arven" → "Arvenis" in commit 88de04d. Also removed inline model provenance policy from D-138 per lead direction (commit aa55abb).
jpmschweitzer closed this pull request 2026-03-13 12:24:53 +01:00

Pull request closed

This pull request cannot be reopened because the branch was deleted.
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: jpmschweitzer/settled-reach#91