acdream/src/AcDream.App/Streaming
Erik c94a1a407e feat(render): Campaign OVERHAUL S2 chunk 5 + closeout — registry is the only render membership owner
Chunk 5 (consumer cutover): WalkProductionWorldData's per-cell views are
borrowed from ShadowObjectRegistry.GetRetailPartEntriesInCell and resolved
through RenderSceneQuery.TryGetByLocalEntityId; every render-side sweep,
bucket, parent-cell and root-position fallback is deleted (AD-116 for the
one-frame registry→scene window, counted in UnregisteredRenderMembershipCount).
A live entity with visual parts but no collision geometry registers
render-only (LiveEntityCollisionBuilder computes the part array before the
empty-shapes gate).

Closeout fixes found while landing it:
- RefloodOwnerForLandblock forwards the retained part array — a reflood is
  retail's recalc_cross_cells over the SAME CPartArray; without it every owner
  touched by a landblock replacement commit lost its render membership.
- Non-colliding DAT statics register render-only from BOTH publishers
  (LandblockPhysicsPublisher.PublishStaticEntity,
  LandblockPhysicsContentBuilder.RegisterRenderOnlyStatic). The G2 self-gate
  pixel diff caught them vanishing (Facility Hub wall panels): retail floods
  every object regardless of collision (CEnvCell::init_static_objects
  0x0052c350, add_shadows_to_cells 0x00514ae0).
- S2 dual review fix batch (arch + retail lens, lead-verified):
  Suspend clears the retail product (remove_shadows_from_cells 0x00511230 is
  one transaction); AttachChild/DetachChild advance the mutation revision so
  a prepared SetPosition cannot clobber a child's rows; an attached child
  never floods on its own re-registration; RemoveLandblock and the non-rooted
  RetireOwnerFromLandblock prune retail rows (render-only statics end with
  their landblock); a render-only owner's no-cell-array commit republishes at
  its destination cell (AD-117); an empty non-null part array is treated as
  null; per-move closures/LINQ replaced by index loops; EnvCell shells stay
  out of the scene's LocalEntityId index (payload-less records); the index
  predicate compares the id; the dead per-cell scene indices are deleted.

Register: AD-116 (chunk 5), AD-117 (four residual Contract A/B readings).
Evidence: s2-membership-ownership-map.md §8 (chunk 5) and §9 (closeout).

Gates (Release): Core 4,984/4,984; Content 214/214; Runtime 1,884/1,884;
App hermetic lane 6,760/6,760; App InstalledDat lane 217 pass / 1 skip /
2 pre-existing #383 layout-fixture failures; App Windows lane 1/1.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 01:01:47 +02:00
..
DatSpawnClaimHydrationClassifier.cs refactor(app): compose session and player startup 2026-07-22 18:28:32 +02:00
DungeonStreamingGate.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
EntityVanishProbe.cs fix(streaming): #138-B avatar vanishes after teleporting out — don't relocate during PortalSpace 2026-06-24 12:30:20 +02:00
GpuLandblockRetirement.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
GpuWorldState.cs feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
GraphicalRemotePlacementServiceWindow.cs feat(physics): C4 route 4b-1 — remote placement infrastructure (dormant) 2026-08-04 04:08:19 +02:00
LandblockBuild.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
LandblockBuildFactory.cs feat(core): S1 one CellStruct interpretation, installed-DAT scan, retire AP-234 2026-09-02 19:11:17 +02:00
LandblockBuildRequest.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
LandblockPhysicsPublisher.cs feat(render): Campaign OVERHAUL S2 chunk 5 + closeout — registry is the only render membership owner 2026-09-03 01:01:47 +02:00
LandblockPresentationPipeline.cs feat(render) Campaign FW3.2b-2 step 1b: walk registry plumbing to the renderer 2026-08-30 14:43:37 +02:00
LandblockPresentationRetirementOwner.cs feat(runtime): atomically replace collision generations 2026-08-01 17:33:34 +02:00
LandblockRenderPublisher.cs feat(render) Campaign FW3.1: production walk world data behind the seam 2026-08-30 13:19:22 +02:00
LandblockRetirementCoordinator.cs feat(runtime): atomically replace collision generations 2026-08-01 17:33:34 +02:00
LandblockStaticPresentationPublisher.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
LandblockStreamer.cs perf #418: parallelize landblock builds across a striped worker pool 2026-08-17 19:34:20 +02:00
LandblockStreamJob.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
LandblockStreamResultCost.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
LandblockStreamTier.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
LocalPlayerTeleportController.cs fix(client): restore retail interaction parity 2026-08-26 20:45:11 +02:00
PublicationTimingProbe.cs perf #418: publish landblocks under the meter, not one per streaming tick 2026-08-17 20:11:35 +02:00
ResidentStreamingWindowFact.cs feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
RevealTimingProbe.cs fix(render): harden portal exit handoff 2026-08-25 17:39:44 +02:00
RuntimeTeleportDestinationAdapter.cs refactor(runtime): own teleport destination correlation 2026-07-26 17:52:34 +02:00
SealedDungeonCellClassifier.cs refactor(runtime): extract local teleport and player mode 2026-07-22 02:50:15 +02:00
StreamingCompletionQueue.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
StreamingController.cs test: stabilize load-sensitive release contracts 2026-08-18 11:50:23 +02:00
StreamingDiagnostics.cs fix(render): harden portal exit handoff 2026-08-25 17:39:44 +02:00
StreamingFrameController.cs refactor(runtime): close simulation ownership 2026-07-26 15:53:31 +02:00
StreamingMutationException.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
StreamingOriginRecenterCoordinator.cs fix(streaming): preserve portal destination ownership 2026-07-25 08:35:12 +02:00
StreamingRegion.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
StreamingWorkBudget.cs perf #418: widen the destination-lane budget only while the reveal hold is active 2026-08-17 20:55:43 +02:00
StreamingWorkBudgetOptions.cs perf #418: widen the destination-lane budget only while the reveal hold is active 2026-08-17 20:55:43 +02:00
TeleportLandblockTransition.cs fix(world): remove non-retail portal exit fade 2026-07-15 23:20:52 +02:00
TwoTierDiff.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
WorldGenerationQuiescence.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
WorldRevealCoordinator.cs fix(render): harden portal exit handoff 2026-08-25 17:39:44 +02:00
WorldRevealReadinessBarrier.cs fix(streaming): make a demoted landblock render-ready like a published one (#280 D-1) 2026-08-06 07:27:28 +02:00