Files
settled-reach/server/data/templates/logistics-hub.yaml
T
jpmschweitzerandClaude Opus 4.6 dd00a9cd9e fix(simulation): address PR #75 review — vision components, triangle validation, FNV-1a, KG gating
1. CRITICAL: spawn_template_npcs now inserts NpcVisionState, NpcMemory,
   PlayerAwareness on template-spawned NPCs — matches spawn_npc() pattern
   from PR #66. Without these, template NPCs were invisible to vision and
   awareness systems.

2. WARNING: generate_intra_template_triangles now calls validate_triangle_def
   before generating TriangleState — mirrors cross-template path. Updates
   test TriangleDefs and logistics-hub.yaml to pass all three quality checks
   (conflict viability, relationship coherence, interest divergence).

3. WARNING: state_hash in compute_observer_snapshot now uses FNV-1a instead
   of DefaultHasher — consistent with D-010 principle 4 and the pattern in
   TemplateId/TriangleId. Updates golden file for new hash value.

4. WARNING: TriangleCrisisEventWire.role_assignments now filtered against
   observer KnowledgeGraph — unknown NPCs redacted from wire event per
   D-010 principle 2 (information boundaries).

5. WARNING: ActiveTemplateInstances::insert now despawns previous instance
   entities before overwriting — prevents orphaned ECS entities.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 19:02:43 +01:00

203 lines
5.1 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Sova Station Logistics Hub — Tier 2 social site template (#159).
#
# Spec refs: D-023 (three-tier content model), D-024 (10-axis NPC model),
# D-025 (social site as atomic template unit), D-028 (dialogue pools),
# D-087 (v0.1 triangle configuration), D-089 (self-contained forks)
#
# Tile scale (D-066): tile_count_* are SIM tiles (0.5m each).
# 1540 visual tiles (D-025) = 3080 sim tiles.
#
# triangle_id values are authoring placeholders (0).
# The instantiation engine overwrites them with
# TriangleId::from_seed_and_roles(world_seed, &roles) at runtime.
slug: "logistics-hub"
display_name: "Sova Station Logistics Hub"
description: >
The terminal's operational core — cargo processing, documentation,
and the informal relationships that keep goods moving off-manifest.
A functional cluster of four NPCs controlling access to the station's
primary freight throughput.
roles:
- role_id: "logistics-manager"
required_traits:
- Bold
- Cautious
skill_focus:
- Persuasion
- Observation
relationship_constraints:
- with_role: "dock-worker"
kind: Superior
required_trust:
min: 0
max: 5
- with_role: "ring-contact"
kind: Colleague
required_trust:
min: -5
max: 2
- with_role: "security-guard"
kind: Superior
required_trust:
min: 1
max: 5
routine_template:
- phase: morning
location: "terminal-office"
activity: "documentation-review"
- phase: afternoon
location: "terminal-cargo-bay"
activity: "cargo-inspection"
- phase: evening
location: "terminal-office"
activity: "end-of-day-reports"
- role_id: "dock-worker"
required_traits:
- Honest
- Social
skill_focus:
- Technical
- Observation
relationship_constraints:
- with_role: "logistics-manager"
kind: Subordinate
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"
activity: "freight-handling"
- phase: afternoon
location: "terminal-cargo-bay"
activity: "freight-handling"
- phase: evening
location: "bar-last-shift"
- role_id: "ring-contact"
required_traits:
- Deceptive
- Social
skill_focus:
- Stealth
- Persuasion
relationship_constraints:
- with_role: "logistics-manager"
kind: Colleague
required_trust:
min: -5
max: 2
- with_role: "dock-worker"
kind: Colleague
required_trust:
min: -4
max: 0
routine_template:
- phase: morning
location: "terminal-cargo-bay"
activity: "oversight"
- phase: afternoon
location: "maintenance-corridor"
- phase: evening
location: "bar-last-shift"
- role_id: "security-guard"
required_traits:
- Cautious
- Honest
skill_focus:
- Combat
- Observation
relationship_constraints:
- with_role: "logistics-manager"
kind: Subordinate
required_trust:
min: 1
max: 5
routine_template:
- phase: morning
location: "terminal-entrance"
activity: "access-control"
- phase: afternoon
location: "terminal-cargo-bay"
activity: "patrol"
- phase: evening
location: "terminal-entrance"
activity: "access-control"
space:
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
triangles:
- triangle_id: 0
roles:
- "ring-contact"
- "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
- triangle_id: 0
roles:
- "logistics-manager"
- "security-guard"
- "ring-contact"
conflict_type: AuthorityChallenge
interest_axes:
- Want
- Tolerance
- Secret
relationship_constraints:
- with_role: "security-guard"
kind: Superior
required_trust:
min: 0
max: 5
dialogue_pools:
- location: "the-terminal"
roles:
- "logistics-manager"
- "dock-worker"
- "ring-contact"
- "security-guard"
- location: "terminal-cargo-bay"
roles:
- "dock-worker"
- "ring-contact"
cross_template_links:
- from_role: "dock-worker"
to_template_slug: "last-shift-bar"
relationship: Colleague
- from_role: "ring-contact"
to_template_slug: "last-shift-bar"
relationship: Colleague