feat(simulation): add debug console server and LOS boundary wall margin

Debug and LOS tracks for Sprint 23 (#580, #584):

- DebugCommandKind enum with 10 variants (AdvanceTicks,
  SkipToContamination, TeleportToPosition, ForceContaminationActivate,
  InspectNpc, ListTriangles, ListPopulation, GetContaminationStatus,
  TeleportToLocation, ForceTriangleActivation)
- DebugResponsePayload on ObserverSnapshot, handle_debug_commands
  system gated by DebugEnabled resource
- PROTOCOL_VERSION bumped 17 → 18
- VisibilitySector::BoundaryWall variant — 1-tile wall margin beyond
  LOS boundary included in visible_tiles (not exploration/memory)
- compute_boundary_walls() pass in NaturalVision after FOV+cone

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-03 19:12:08 +01:00
co-authored by Claude Opus 4.6
parent 50f5d6c22e
commit c30197db0e
8 changed files with 666 additions and 1 deletions
+3
View File
@@ -192,6 +192,7 @@ fn sector_label(sector: VisibilitySector) -> &'static str {
match sector {
VisibilitySector::Forward => "Forward",
VisibilitySector::Peripheral => "Periph",
VisibilitySector::BoundaryWall => "BndWall",
}
}
@@ -316,6 +317,7 @@ mod tests {
triangle_crisis_events: vec![],
state_hash: None,
sim_errors: vec![],
debug_response: None,
}
}
@@ -454,6 +456,7 @@ mod tests {
triangle_crisis_events: vec![],
state_hash: None,
sim_errors: vec![],
debug_response: None,
};
let text = format_snapshot_text(&snap);
assert!(text.contains("Tick 0"));