diff --git a/Assets/_Project/Scripts/Authoring/Economy/ClutterFieldSpawnerAuthoring.cs b/Assets/_Project/Scripts/Authoring/Economy/ClutterFieldSpawnerAuthoring.cs
index ce4ecdf70..f97570fce 100644
--- a/Assets/_Project/Scripts/Authoring/Economy/ClutterFieldSpawnerAuthoring.cs
+++ b/Assets/_Project/Scripts/Authoring/Economy/ClutterFieldSpawnerAuthoring.cs
@@ -6,7 +6,7 @@ namespace ProjectM.Authoring
{
///
/// Authoring for the baked singleton (mirrors ResourceFieldSpawnerAuthoring).
- /// Place once in the gameplay subscene and assign the Blight-clutter ghost prefab; ExpeditionFieldSystem
+ /// Place once in the gameplay subscene and assign the Blight-clutter ghost prefab; RoomFieldSystem
/// scatters the clutter each expedition alongside the resource field. Carries no transform.
///
public class ClutterFieldSpawnerAuthoring : MonoBehaviour
diff --git a/Assets/_Project/Scripts/Authoring/Economy/ResourceFieldSpawnerAuthoring.cs b/Assets/_Project/Scripts/Authoring/Economy/ResourceFieldSpawnerAuthoring.cs
index 7e01deb7c..2a9cc12ed 100644
--- a/Assets/_Project/Scripts/Authoring/Economy/ResourceFieldSpawnerAuthoring.cs
+++ b/Assets/_Project/Scripts/Authoring/Economy/ResourceFieldSpawnerAuthoring.cs
@@ -6,7 +6,7 @@ namespace ProjectM.Authoring
{
///
/// Authoring for the baked singleton (mirrors StorageSpawnerAuthoring).
- /// Place once in the gameplay subscene and assign the resource-node ghost prefab; ExpeditionFieldSystem
+ /// Place once in the gameplay subscene and assign the resource-node ghost prefab; RoomFieldSystem
/// scatters the field each Expedition. Carries no transform.
///
public class ResourceFieldSpawnerAuthoring : MonoBehaviour
diff --git a/Assets/_Project/Scripts/Client/Combat/ProjectileClassificationSystem.cs b/Assets/_Project/Scripts/Client/Combat/ProjectileClassificationSystem.cs
index 001847ea8..2babf771a 100644
--- a/Assets/_Project/Scripts/Client/Combat/ProjectileClassificationSystem.cs
+++ b/Assets/_Project/Scripts/Client/Combat/ProjectileClassificationSystem.cs
@@ -28,7 +28,7 @@ namespace ProjectM.Client
[CreateAfter(typeof(GhostReceiveSystem))]
// NOTE: intentionally NOT [BurstCompile]d. The cross-assembly generic
// SnapshotDataBufferComponentLookup.TryGetComponentDataFromSnapshotHistory<T>() trips a Burst
- // internal compiler error (type-hash resolution) on Netcode 1.13.2. Classification only runs when
+ // internal compiler error (type-hash resolution) on Netcode 1.x (installed: 6.5.0). Classification only runs when
// ghost spawns are received (a cold path, not the prediction loop), so a managed job is fine here.
public partial struct ProjectileClassificationSystem : ISystem
{
diff --git a/Assets/_Project/Scripts/Client/Presentation/FeelConfig.cs b/Assets/_Project/Scripts/Client/Presentation/FeelConfig.cs
index d132e2bf3..801727fe1 100644
--- a/Assets/_Project/Scripts/Client/Presentation/FeelConfig.cs
+++ b/Assets/_Project/Scripts/Client/Presentation/FeelConfig.cs
@@ -239,7 +239,7 @@ namespace ProjectM.Client
// Deferred-items pass (2026-06)
BodyFlashEnabled = true;
BodyFlashColor = new Color(3.2f, 2.8f, 2.2f, 1f); // hot near-white overdrive (multiplies the Synty atlas base map)
- PlayerHurtFlashColor = new Color(2.6f, 0.55f, 0.4f, 1f); // C2: hot red-orange body flash when the player is hitmap)
+ PlayerHurtFlashColor = new Color(2.6f, 0.55f, 0.4f, 1f); // C2: hot red-orange body flash when the player is hit
BodyFlashDurationSec = 0.16f;
RemoteSwingEnabled = true;
RemoteSlashColor = new Color(1.4f, 2.2f, 2.8f, 1f); // cool teammate arc
diff --git a/Assets/_Project/Scripts/Simulation/Building/BuildPlaceRequest.cs b/Assets/_Project/Scripts/Simulation/Building/BuildPlaceRequest.cs
index 86749a5e4..b8227afd7 100644
--- a/Assets/_Project/Scripts/Simulation/Building/BuildPlaceRequest.cs
+++ b/Assets/_Project/Scripts/Simulation/Building/BuildPlaceRequest.cs
@@ -4,10 +4,10 @@ namespace ProjectM.Simulation
{
///
/// Client -> server request to build a structure of at grid cell
- /// (, ). A one-off action, so an RPC (mirrors StorageOpRequest /
- /// RegionTransitRequest). StructureType is a byte; the cell is two int scalars (NOT an int2) to stay
+ /// (, ). A one-off action, so an RPC (mirrors StorageOpRequest).
+ /// StructureType is a byte; the cell is two int scalars (NOT an int2) to stay
/// within the project's scalar-only RPC payload precedent (avoids first-of-its-kind composite-math-in-RPC
- /// codegen risk on Netcode 1.13.2). The server re-validates legality + cost authoritatively.
+ /// codegen risk on Netcode 1.x). The server re-validates legality + cost authoritatively.
///
public struct BuildPlaceRequest : IRpcCommand
{
diff --git a/Assets/_Project/Scripts/Simulation/Economy/ClutterFieldSpawner.cs b/Assets/_Project/Scripts/Simulation/Economy/ClutterFieldSpawner.cs
index 5f7b4ab2a..56a83f34c 100644
--- a/Assets/_Project/Scripts/Simulation/Economy/ClutterFieldSpawner.cs
+++ b/Assets/_Project/Scripts/Simulation/Economy/ClutterFieldSpawner.cs
@@ -3,11 +3,11 @@ using Unity.Entities;
namespace ProjectM.Simulation
{
///
- /// Baked singleton holding the Blight-clutter ghost prefab + field shape. ExpeditionFieldSystem reads it
+ /// Baked singleton holding the Blight-clutter ghost prefab + field shape. RoomFieldSystem reads it
/// (alongside ) to scatter clutter ghosts within
/// of the expedition origin on the SAME empty->occupied epoch edge as the resource
/// field (seeded distinctly so clutter and nodes don't co-locate), and clears them on occupied->empty.
- /// OPTIONAL — if the singleton is absent, ExpeditionFieldSystem simply skips clutter. Mirrors
+ /// OPTIONAL — if the singleton is absent, RoomFieldSystem simply skips clutter. Mirrors
/// ; carries no transform.
///
public struct ClutterFieldSpawner : IComponentData
diff --git a/Assets/_Project/Scripts/Simulation/Economy/ResourceFieldSpawner.cs b/Assets/_Project/Scripts/Simulation/Economy/ResourceFieldSpawner.cs
index 43933f576..e4ac06a81 100644
--- a/Assets/_Project/Scripts/Simulation/Economy/ResourceFieldSpawner.cs
+++ b/Assets/_Project/Scripts/Simulation/Economy/ResourceFieldSpawner.cs
@@ -3,7 +3,7 @@ using Unity.Entities;
namespace ProjectM.Simulation
{
///
- /// Baked singleton holding the resource-node ghost prefab + field shape. ExpeditionFieldSystem reads it to
+ /// Baked singleton holding the resource-node ghost prefab + field shape. RoomFieldSystem reads it to
/// scatter nodes within of the expedition region origin on each
/// Expedition phase entry (seeded by the cycle number). Mirrors .
///
diff --git a/Assets/_Project/Scripts/Simulation/World/WorldCollisionComponents.cs b/Assets/_Project/Scripts/Simulation/World/WorldCollisionComponents.cs
index 8e5fefd46..0ac9f3216 100644
--- a/Assets/_Project/Scripts/Simulation/World/WorldCollisionComponents.cs
+++ b/Assets/_Project/Scripts/Simulation/World/WorldCollisionComponents.cs
@@ -11,7 +11,6 @@ namespace ProjectM.Simulation
///
public struct WorldCollisionConfig : IComponentData
{
- /// BelongsTo bitmask of the Environment physics layer (1u << layerIndex).
/// BelongsTo bitmask of the Environment physics layer (1u << layerIndex).
public uint EnvironmentMask;
diff --git a/CLAUDE.md b/CLAUDE.md
index 9077baf2c..a1065e253 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -153,7 +153,7 @@ Full rules: `.claude/skills/dots-dev/references/dots-conventions.md` (in-repo; t
## Testing
-- **Default = plain-Entities EditMode test:** create a `World`, register the system in `SimulationSystemGroup`, tick, assert. Public API, version-independent. Example: `Assets/_Project/Tests/EditMode/HeartbeatSystemTests.cs`. Run via `run_tests(mode="EditMode", assembly_names=["ProjectM.Tests.EditMode"])`.
+- **Default = plain-Entities EditMode test:** create a `World`, register the system in `SimulationSystemGroup`, tick, assert. Public API, version-independent. Example: `Assets/_Project/Tests/EditMode/HealthApplyDamageSystemTests.cs`. Run via `run_tests(mode="EditMode", assembly_names=["ProjectM.Tests.EditMode"])`.
- **`NetCodeTestWorld` is `internal`** (6.5.0 re-check: not even loaded outside test asmdefs), exposed only to a fixed `[InternalsVisibleTo]` allow-list — to use it, name a test asmdef to match an entry (e.g. `Unity.NetcodeSamples.EditModeTests`) or vendor the test utils. Netcode world boot is covered by the Play Mode check, not a NetCodeTestWorld test. See [[DR-001_Netcode_Test_Harness]].
- Burst/source-gen errors surface at editor compile, not a plain build — always `read_console` after script changes, and run a play/tick test, not just a compile. **Cover swept hit-detection with a tunnelling regression test** (the point-check tunnel bug doesn't surface in a point-based unit test).