feat(simulation): Sprint 4 server — content loader, YAML population, tooling #18

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

Summary

Sprint 4 "Feel" server team delivery — all 9 tickets complete.

Content Population (#387–#391)

  • 9 global enum YAML files from D-035 taxonomy
  • 16 entity attribute keys from D-024
  • 5 seed-time pools, 3 social site templates, 5 triangles

Content Loader Phase 2 (#408)

  • 2-phase spawn pipeline: entity creation → cross-reference resolution
  • Loads real YAML content into ECS entities (Want, Tolerance, Contentment, Personality, Tells, Skills + Secrets, Relationships, Information, DailyRoutine)
  • 7 integration tests against real content files + edge case tests
  • 196 total tests passing

Schema Fixes

  • Dialogue-pool schema corrected to arrays for situation/topic/mood per D-035
  • NPC want.primary changed from narrative strings to WantKind enum keywords
  • Happiness added to WantKind enum
  • Schema enum constraint on want.primary for validation

Architecture & Tooling

  • Seed configuration schema design doc (#394)
  • YAML→RON converter tool (#403) — make content-ron
  • Line previewer CLI (#407) — dialogue, monologue, coverage, sequence subcommands

Test plan

  • cargo test — 196 passed, 0 failed
  • make validate-content — 37 validated, 0 errors
  • QA reviewed by Hoshe: schema-vs-ECS alignment, cross-reference integrity, spawn gap coverage

🤖 Generated with Claude Code

## Summary Sprint 4 "Feel" server team delivery — all 9 tickets complete. ### Content Population (#387–#391) - 9 global enum YAML files from D-035 taxonomy - 16 entity attribute keys from D-024 - 5 seed-time pools, 3 social site templates, 5 triangles ### Content Loader Phase 2 (#408) - 2-phase spawn pipeline: entity creation → cross-reference resolution - Loads real YAML content into ECS entities (Want, Tolerance, Contentment, Personality, Tells, Skills + Secrets, Relationships, Information, DailyRoutine) - 7 integration tests against real content files + edge case tests - 196 total tests passing ### Schema Fixes - Dialogue-pool schema corrected to arrays for situation/topic/mood per D-035 - NPC want.primary changed from narrative strings to WantKind enum keywords - Happiness added to WantKind enum - Schema enum constraint on want.primary for validation ### Architecture & Tooling - Seed configuration schema design doc (#394) - YAML→RON converter tool (#403) — `make content-ron` - Line previewer CLI (#407) — dialogue, monologue, coverage, sequence subcommands ## Test plan - [x] `cargo test` — 196 passed, 0 failed - [x] `make validate-content` — 37 validated, 0 errors - [x] QA reviewed by Hoshe: schema-vs-ECS alignment, cross-reference integrity, spawn gap coverage 🤖 Generated with [Claude Code](https://claude.com/claude-code)
jpmschweitzer added 9 commits 2026-02-13 01:20:30 +01:00
Populate 9 enum YAML files (situations, topics, moods, triggers,
access-tiers, trust-tiers, activities, patterns, motivations) from
D-035 taxonomy and 16 canonical entity attribute keys from D-024
with A7 workshop updates.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
5 seed-time pools (single-candidate for deterministic v0.1 testing),
3 social site templates (logistics-hub, bar, smuggling-ring) with
role slot definitions per D-025, and 5 triangles (3 active fork,
2 passive) per D-024 workshop synthesis.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
situation, topic, and mood fields changed from single string to
array type to match D-035 specification (list<enum>). access and
trust were already correct as arrays.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Change want.primary from narrative strings to WantKind enum keywords
(Safety, Wealth, Knowledge, etc.) across all 20 NPC profiles. Move
narrative text to want.description. Add Happiness to WantKind enum.
Add enum constraint to npc-profile.schema.json so make validate-content
catches invalid values at authoring time.

Fixes silent Want component drop where parse_want_kind() returned None
for all real NPCs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Extend content loader to read and instantiate real YAML content into
ECS entities. 2-phase spawn pipeline: Phase 1 creates entities with
core components (Want, Tolerance, Contentment, Personality, Tells,
Skills), Phase 2 resolves cross-references (Relationships, Secrets,
Information via KnowledgeGraph, DailyRoutine).

Loads enums, entity attributes, pools, templates, triangles, and NPC
profiles. Handles stub files gracefully. 7 integration tests against
real content files plus edge case tests for invalid data.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Design document defining what the randomizer produces at game-start:
FRIEND selections, pool draws, template assignments, triangle config,
entanglement config, contraband selection, starting knowledge. Includes
ChaCha20 RNG protocol, validation rules, and implementation roadmap.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Build-time converter reads content YAML and emits RON format. Lives in
tooling/content-converter/ as standalone Rust crate. Runs via make
content-ron. Supports --dry-run, --verbose, --content-type filtering.
Not on critical path — engine consumes YAML in v0.1, RON is future-
proofing for runtime performance.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
CLI tool to preview monologue/dialogue line selection for a given game
state. 4 subcommands: dialogue (D-028 4-layer pipeline), monologue
(trigger + prerequisite evaluation), coverage (dead conversation
detection), sequence (walk-through simulation). Authoring tool for
content team — tests line trigger logic without running the full game.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
jpmschweitzer closed this pull request 2026-02-13 01:21:08 +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#18