diff --git a/docs/research/2026-09-01-overhaul/s5-consumers-material-closeout-packet.md b/docs/research/2026-09-01-overhaul/s5-consumers-material-closeout-packet.md
index e77c0f83..77762cc6 100644
--- a/docs/research/2026-09-01-overhaul/s5-consumers-material-closeout-packet.md
+++ b/docs/research/2026-09-01-overhaul/s5-consumers-material-closeout-packet.md
@@ -360,3 +360,15 @@ visibility/terrain/frame/renderer tests, and 3 AP-116 settings/live-object
tests), commit once, then return to a narrow retail comment-truth re-review.
The production/gate-honesty lens remains undispatched until that re-review
passes. A third fix round still stops the chunk.
+
+### 10.1 Fix-round-1 implementation result
+
+The three stale descriptions are corrected without behavior or assertion
+changes. `UseWorldView` now names only the completed retail PView and explicitly
+excludes the null-root safety draw. `CopyVisibleCellsTo` describes a diagnostic
+union and names the distinct particle, point-light, and future directional-
+shadow consumers. `ParticleSystem` scopes the logarithmic lifecycle statement
+to its `SortedSet` indexes and records the sorted list's binary-search plus
+linear-shift insertion and linear search/compaction removal costs. Focused gate
+results: Core `ParticleSystemTests` 47/47, App visibility/terrain/frame/renderer
+38/38, and AP-116 settings/live-object 3/3; `git diff --check` is clean.
diff --git a/src/AcDream.App/Rendering/Vfx/ParticleVisibilityController.cs b/src/AcDream.App/Rendering/Vfx/ParticleVisibilityController.cs
index 1ba84a27..5dcb274d 100644
--- a/src/AcDream.App/Rendering/Vfx/ParticleVisibilityController.cs
+++ b/src/AcDream.App/Rendering/Vfx/ParticleVisibilityController.cs
@@ -41,10 +41,11 @@ public sealed class ParticleVisibilityController : IWorldSceneParticleVisibility
}
///
- /// Declares that this frame has an authoritative world-visibility product.
- /// That product can come from the unified retail PView or from the outdoor
- /// landscape fallback. Login and portal-space frames deliberately omit it;
- /// dedicated pass and examination emitters carry explicit bypass policies.
+ /// Declares that this frame has the completed retail PView product: one
+ /// viewer position plus its exact walk-owned landscape-cell set. Frames
+ /// without that PView product, including login, portal space, and the
+ /// null-root terrain safety draw, deliberately omit it; dedicated-pass and
+ /// examination emitters carry explicit bypass policies.
///
public void UseWorldView()
{
diff --git a/src/AcDream.App/Rendering/Walk/WalkFrameDriver.cs b/src/AcDream.App/Rendering/Walk/WalkFrameDriver.cs
index 23313aa4..0ff79d10 100644
--- a/src/AcDream.App/Rendering/Walk/WalkFrameDriver.cs
+++ b/src/AcDream.App/Rendering/Walk/WalkFrameDriver.cs
@@ -868,11 +868,14 @@ internal sealed class WalkFrameDriver : IWalkEventSink, IWalkLookInViewSource
}
///
- /// Copies the walk's complete retail CObjCell::IsInView answer:
- /// EnvCells reached by interior floods/look-ins plus outdoor land cells
- /// visited by the landscape walk. The two families stay separately
- /// retained because only the first is valid EnvCell batch input, but
- /// particles, lights, and shadows consume their union.
+ /// Copies the walk's diagnostic union: EnvCells reached by interior
+ /// floods/look-ins plus outdoor land cells visited by the landscape walk.
+ /// The two families remain separately retained because EnvCells are shell
+ /// preparation input while only the landscape half feeds land-cell particle
+ /// eligibility; EnvCell particle eligibility is the constant-true virtual.
+ /// Point lights use the resident registry, and directional-shadow use of the
+ /// landscape product remains owned by S5-c2. No admission path consumes this
+ /// union as a complete CObjCell::IsInView answer.
///
internal void CopyVisibleCellsTo(HashSet destination)
{
diff --git a/src/AcDream.Core/Vfx/ParticleSystem.cs b/src/AcDream.Core/Vfx/ParticleSystem.cs
index 3bbae610..3a5ad01c 100644
--- a/src/AcDream.Core/Vfx/ParticleSystem.cs
+++ b/src/AcDream.Core/Vfx/ParticleSystem.cs
@@ -14,16 +14,17 @@ public sealed class ParticleSystem : IParticleSystem
private readonly EmitterDescRegistry _registry;
private readonly Random _rng;
private readonly Dictionary _byHandle = new();
- // Handles are monotonic, so sorted indexes preserve retail emitter-spawn
- // order while making every lifecycle edge O(log E). The old List.Remove
- // hard-stop path was O(E) and became visible when portal routes retained
- // thousands of finite/fading emitters.
+ // Handles are monotonic, so the SortedSet indexes preserve retail
+ // emitter-spawn order while making their lifecycle edges O(log E). Their
+ // predecessor List.Remove hard-stop path was O(E) and became visible when
+ // portal routes retained thousands of finite/fading emitters.
private readonly SortedSet _allHandles = [];
private readonly SortedSet _simulationHandles = [];
// ApplyRetailView is a per-frame production path. SortedSet's enumerator
- // allocates its traversal stack, so retain this subset as a sorted list;
- // lifecycle mutations pay the binary insertion/removal cost and the
- // warmed view walk stays allocation-free in emitter-spawn order.
+ // allocates its traversal stack, so retain this subset as a sorted list.
+ // Insertion uses a binary search followed by a linear list shift; removal
+ // searches and compacts linearly. Lifecycle mutations pay those costs so
+ // the warmed view walk stays allocation-free in emitter-spawn order.
private readonly List _worldSimulationHandles = [];
private readonly SortedSet[] _renderableHandlesByPass =
[[], [], []];