feat(simulation): add social site template schema types

Implements #163 (RoleSchema), #164 (SpaceSpec), #165 (TemplateOwnership
+ TemplateReferenceMap), #106 (TriangleDef), #107 (intra-template
triangle generation), and #250 (triangle escalation system) as the
foundational Tier 2 template system per D-025.

New content/template module with YAML-deserializable schema types,
ECS components for ownership/triangle state, escalation system
running on game-minute boundaries, and TriangleCrisisEvent emission.
Sample YAML templates at server/data/templates/.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-25 22:33:06 +01:00
co-authored by Claude Opus 4.6
parent 95a9b349a0
commit 0e8ac56fc1
6 changed files with 2507 additions and 0 deletions
+31
View File
@@ -0,0 +1,31 @@
# Sample role schema for the dock-worker role in the terminal social site.
# Spec ref: D-023 (Tier 2 templates), D-024 (10-axis model), D-025 (social site)
#
# Tile scale note (D-066): tile_count_* fields are in SIM tiles (0.5m each).
# 1 visual tile = 2 sim tiles. A 15-40 visual tile space = 30-80 sim tiles.
role_id: "dock-worker"
required_traits:
- Honest
- Social
skill_focus:
- Technical
- Observation
relationship_constraints:
- with_role: "logistics-manager"
kind: Colleague
required_trust:
min: -2
max: 4
- with_role: "ring-contact"
kind: Colleague
required_trust:
min: -4
max: 0
routine_template:
- phase: morning
location: "terminal-cargo-bay"
- phase: afternoon
location: "terminal-cargo-bay"
- phase: evening
location: "bar-last-shift"
@@ -0,0 +1,18 @@
# Sample space spec for the terminal social site (Sova Logistics Hub).
# Spec ref: D-025 (15-40 visual tiles = 30-80 sim tiles), D-064 (dual-scale grid)
#
# Tile scale (D-066): all tile counts are SIM tiles (0.5m each).
# Terminal: 44×28 visual tiles = 88×56 sim tiles = 4928 sim tiles.
# Using a subsection for one functional zone: ~44×8 visual = 88×16 sim = 1408 sim.
tile_count_min: 30
tile_count_max: 80
sightline_zones:
- name: "loading-floor"
radius: 8 # 4m clear sightline across the loading area
- name: "reception-desk"
radius: 4 # 2m clear sightline at the desk
- name: "cargo-staging"
radius: 6 # 3m clear sightline in staging area
privacy_level: SemiPrivate
traffic_pattern: Destination
@@ -0,0 +1,24 @@
# Sample triangle definition: T4 Drin-System-Ring (D-087 active fork).
# Spec ref: D-024 (triangles as atomic social unit), D-087 (T4 configuration),
# D-089 (self-contained, no cross-triangle cascade)
#
# Note: triangle_id is computed at world-gen time from seed + roles.
# The value below is a placeholder for YAML authoring — the runtime
# calls TriangleId::from_seed_and_roles() to derive the actual ID.
triangle_id: 0
roles:
- "ring-leader"
- "dock-worker"
- "logistics-manager"
conflict_type: ResourceCompetition
interest_axes:
- Want
- Secret
- Relationships
relationship_constraints:
- with_role: "dock-worker"
kind: Subordinate
required_trust:
min: -2
max: 2