Merge remote-tracking branch 'origin/copy'
# Conflicts: # content/npc-conversations/overheard.yaml # server/content/global/zone-types/administrative_civil.ron # server/content/global/zone-types/administrative_judicial.ron # server/content/global/zone-types/archaeological_site.ron # server/content/global/zone-types/commercial_market.ron # server/content/global/zone-types/commercial_transit.ron # server/content/global/zone-types/detention_facility.ron # server/content/global/zone-types/diplomatic_elite.ron # server/content/global/zone-types/entertainment_hospitality.ron # server/content/global/zone-types/entertainment_venue.ron # server/content/global/zone-types/extraction_platform.ron # server/content/global/zone-types/extraction_space.ron # server/content/global/zone-types/extraction_surface.ron # server/content/global/zone-types/industrial_manufacturing.ron # server/content/global/zone-types/industrial_processing.ron # server/content/global/zone-types/medical_facility.ron # server/content/global/zone-types/military_garrison.ron # server/content/global/zone-types/port_fishing.ron # server/content/global/zone-types/port_maritime.ron # server/content/global/zone-types/port_space.ron # server/content/global/zone-types/port_surface.ron # server/content/global/zone-types/research_station.ron # server/content/global/zone-types/residential_dispersed.ron # server/content/global/zone-types/residential_station.ron # server/content/global/zone-types/residential_surface.ron # server/content/global/zone-types/rural_aquaculture.ron # server/content/global/zone-types/rural_orbital.ron # server/content/global/zone-types/rural_pastoral.ron # server/content/global/zone-types/security_checkpoint.ron # server/content/global/zone-types/wilderness_frontier.ron # server/content/npc-conversations/overheard.ron # server/content/npc-conversations/overheard.yaml # server/content/npc-conversations/overheard.yaml.deprecated # tooling/validate-ron
This commit is contained in:
@@ -0,0 +1,136 @@
|
||||
# Zone-Type Template Consistency Review
|
||||
**Sprint 27 · Ticket #662 · Task #6**
|
||||
**Reviewed by:** Mellanie
|
||||
**Files reviewed:** 31 (29 new + 2 canonical references)
|
||||
|
||||
---
|
||||
|
||||
## Summary
|
||||
|
||||
All 31 zone-type templates pass the core authoring criteria. Two issues
|
||||
were found and resolved: one stale header comment, one cosmetic
|
||||
inconsistency affecting 5 files.
|
||||
|
||||
**Status: PASS — all issues resolved**
|
||||
|
||||
---
|
||||
|
||||
## Check Results
|
||||
|
||||
### 1. RON schema structure
|
||||
**PASS — all 31 files**
|
||||
|
||||
Every file validates against the `ZoneTypeTemplate` schema. All required
|
||||
fields present: `id`, `subtype`, `label`, `description`, `economic_level`,
|
||||
`population_density`, `roles`, `social_site_types`. Role entries all have
|
||||
`id`, `label`, `skill_focus`, `combat_eligible`, `behavior_primitives`.
|
||||
Primitive tuples all have `action`, `context`, `modifier_hint`.
|
||||
|
||||
### 2. Culture-neutrality
|
||||
**PASS — all 31 files**
|
||||
|
||||
No cultural attitudes, speech patterns, naming conventions, or social
|
||||
assumptions encoded in any action text. All primitives describe physical
|
||||
behavior and professional practice only. The layer composes cleanly — no
|
||||
primitive will read as contradicted by a culture modifier.
|
||||
|
||||
### 3. modifier_hint coverage
|
||||
**PASS — all 31 files**
|
||||
|
||||
2383 total primitives across all files. Every primitive has
|
||||
`modifier_hint: Some(...)`. Zero with `None`. All 7 categories represented
|
||||
across the set: `work_pace`, `physical_manner`, `social_signal`,
|
||||
`task_completion`, `environmental_scan`, `offduty_posture`, `authority_response`.
|
||||
|
||||
### 4. Context tag coverage
|
||||
**PASS — all 31 files**
|
||||
|
||||
All files have OnShift primitives and Social/OffDuty primitives. 18 of 31
|
||||
files use the `OffDuty` context tag for break/rest behavior alongside
|
||||
`Social` for interaction primitives (matching the canonical references).
|
||||
13 of 31 files use `Social` only, folding both posture and interaction under
|
||||
one tag. Both are schema-valid. The OffDuty/Social split is richer where
|
||||
the zone character warrants it (security-heavy, institutional, or isolated
|
||||
settings) and the Social-only approach works where the distinction carries
|
||||
less meaning. No file is missing off-shift coverage.
|
||||
|
||||
### 5. social_site_types coverage
|
||||
**PASS — all 31 files**
|
||||
|
||||
All files declare ≥ 2 social site types. `detention_facility.ron` declares 4
|
||||
(`guard_post`, `exercise_yard`, `medical_bay`, `administrative_office`), which
|
||||
is compliant — the schema has no upper bound.
|
||||
|
||||
### 6. Role count
|
||||
**PASS — all 31 files**
|
||||
|
||||
All files declare exactly 4 roles. Role labels are appropriate to zone
|
||||
character and non-overlapping within each file.
|
||||
|
||||
### 7. Standalone readability
|
||||
**PASS — all 31 files**
|
||||
|
||||
All action text reads as specific, concrete, and informative without a
|
||||
culture modifier appended. No primitive requires cultural context to be
|
||||
legible. The behavior is the information.
|
||||
|
||||
### 8. Grammar constraint
|
||||
**PASS — all 31 files**
|
||||
|
||||
All action text accepts trailing prepositional phrases and coordinating
|
||||
conjunctions cleanly. No action ends in a word that would create a
|
||||
grammatical collision with modifier additions (e.g., actions ending in
|
||||
prepositions, incomplete phrases, or conjunction stubs).
|
||||
|
||||
---
|
||||
|
||||
## Issues
|
||||
|
||||
### Issue 1 — Stale header comment in `residential_station.ron` ⚠️ Fix required
|
||||
**File:** `content/global/zone-types/residential_station.ron`
|
||||
**Line:** 19
|
||||
|
||||
The header comment reads:
|
||||
```
|
||||
// Roles: resident, maintenance_tech, block_admin, child (no combat, low authority)
|
||||
```
|
||||
|
||||
The actual implementation has four roles: `resident`, `maintenance_tech`,
|
||||
`block_admin`, **`security`**. The `child` role was not implemented.
|
||||
|
||||
**Fix:** Update header comment to:
|
||||
```
|
||||
// Roles: resident, maintenance_tech, block_admin, security
|
||||
```
|
||||
|
||||
### Issue 2 — Missing explanatory comment before `social_site_types` in 5 files (cosmetic)
|
||||
**Files affected:**
|
||||
- `content/global/zone-types/entertainment_hospitality.ron`
|
||||
- `content/global/zone-types/entertainment_venue.ron`
|
||||
- `content/global/zone-types/residential_station.ron`
|
||||
- `content/global/zone-types/residential_surface.ron`
|
||||
- `content/global/zone-types/residential_dispersed.ron`
|
||||
|
||||
All other 26 files include the explanatory comment before the
|
||||
`social_site_types` field:
|
||||
```ron
|
||||
// Valid social site types for this zone type.
|
||||
// Location specs declare which appear, with their own label, min_npcs, max_npcs.
|
||||
social_site_types: [
|
||||
```
|
||||
|
||||
The 5 affected files go straight to `social_site_types: [` without the comment.
|
||||
The field itself is correct in all cases — this is a documentation consistency
|
||||
gap only.
|
||||
|
||||
**Fix:** Add the two-line comment block before `social_site_types:` in each
|
||||
affected file.
|
||||
|
||||
---
|
||||
|
||||
## No action required
|
||||
|
||||
- `detention_facility.ron` declaring 4 social site types: within spec, no upper bound
|
||||
- OffDuty/Social context variation: intentional, both valid per D-142
|
||||
- `diplomatic_elite.ron` using `OffDuty` for ambassador and aide social primitives
|
||||
while protocol officer and security use `Social`: appropriate zone-level distinction
|
||||
Reference in New Issue
Block a user