Commit graph

929 commits

Author SHA1 Message Date
Erik
6c7512de15 docs(render): ledger — E1 re-measured same-session: every stationary destination within 1.14x, chunk 3 back to CLOSED; file #463 (soak turn-sample artifact)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 19:09:03 +02:00
Erik
a614c8fd4e docs(render): ledger — S3 review both lenses FAIL; chunk 3 corrected to STOPPED-LANDED (perf gate missed in the stationary phase); fix round 1 dispatched
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 18:50:20 +02:00
Erik
e6f5a156b7 docs(render): ledger — hygiene chunk H landed; lens finding closed by the lead; S3 review next
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 18:26:11 +02:00
Erik
b3ef4027a2 docs(render): ledger — post-hoc lenses all PASS on chunk 4 round 2; hygiene chunk H dispatched
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 17:51:01 +02:00
Erik
cf39dab811 docs: #459 resolved with validation proof; ledger notes the fix and the S4 draft
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 17:13:15 +02:00
Erik
c64ecbde8b docs(render): ledger — G3 self-gate part C: Nanto three headings PASS provisional; 20/20 frames; four defects filed
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 17:08:29 +02:00
Erik
cd1e14de3c docs(render): ledger — G3 self-gate part B: the four retail capture poses PASS provisional
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 17:05:11 +02:00
Erik
7fa83c7397 docs(render): ledger — G3 self-gate part A: 12 of 13 poses PASS provisional, Nanto incomplete; part-C route
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 16:41:30 +02:00
Erik
5b43d8d559 docs(render): chunk 4 landed — ledger evidence, AD-17 rewritten, AP-117 narrowed
Rounds ff607a1e0 + 7df0b94c9 delete the union-AABB scissor fallback, the
sky's doorway scissor bracket and the TerrainClip UBO; AD-17 now describes
the two surviving portal-polygon clips and their overflow behavior, and
AP-117 records that the walk's ported landcell_check feeds the production
particle in-view state. The three-lens re-review is owed post-hoc (API
overload); the lead's item-by-item verification is in the ledger.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 16:20:03 +02:00
Erik
08e864ea40 docs(render): ledger — round 2 vs a same-time tip baseline: only sky drift and actors differ
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 15:43:35 +02:00
Erik
10873c55ce docs(render): ledger — chunk 4 round 2 self-gate PASS provisional; validation finds only pre-existing #459
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 15:42:23 +02:00
Erik
1082c68535 docs(render): ledger — #458 resolved as an edge-plane precision boundary (AD-118)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 14:43:46 +02:00
Erik
086dd0f192 docs(render): ledger — chunk 4 round 1 failed three lenses; round 2 (last) running
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 14:31:57 +02:00
Erik
b3d4be6ab3 docs(render): ledger — chunk 4 on the tip is green; fix round 1 running
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 13:36:10 +02:00
Erik
386b1327b5 docs(render): S3 chunk 4 fix round 1 — loop-shape weather pin, one weather gate, dead terrain-clip stack, sky drawn once
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 13:33:45 +02:00
Erik
37623d8e42 docs(render): ledger — S3 chunk 4 dispatched
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 12:32:42 +02:00
Erik
38cedde0fb docs(render): ledger — S3 chunk 1 stops after two fix rounds; landed with open items O1–O5 carried; #458 degrade note
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 12:31:12 +02:00
Erik
05ebe2c805 docs(render): ledger — chunk 1 round 1 landed, three poses reproduce exactly; #458 doorway block admission; round 2 next
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 11:50:45 +02:00
Erik
e813aa1f45 docs(render): ledger — S3 chunk 3 CLOSED; perf gate passed against a same-session A/B (the flat 31 ms was RDP pacing)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 11:08:01 +02:00
Erik
88b6c95395 docs(render): ledger — S3 chunk 1 implemented; review findings; fix round 1 in progress
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 11:04:30 +02:00
Erik
674fa8e8b6 docs(render): ledger — S3 chunk 3 fix round 2 landed; gate running
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 10:45:32 +02:00
Erik
38b5adc523 docs(render): S3 chunk 3 fix round 2 — the soak shows ~500 terrain submissions/frame; opaque stream marks stop splitting terrain batches
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 10:16:34 +02:00
Erik
4e17d8fc70 docs(render): ledger — S3 chunk 3 landed; terrain-punch fragments gone at the owner's pose
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 10:05:01 +02:00
Erik
dffd70557c docs(render): ledger — S3 chunk 3 review round 1 findings and the fix round in progress
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 09:00:17 +02:00
Erik
51c6bfcd96 docs(render): ledger — S3 chunk 2 landed (verdicts, gates, self-gate); chunk 3 dispatched
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 08:02:18 +02:00
Erik
51d5323208 docs(render): record foundry-deep; the retail capture session is complete
All four kit poses plus the extra cathedral-leak pose have walk (with
LC/SC), parts and alpha-depth transcripts from the paired 2013 client.
S3 chunk 1 is unblocked.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 07:43:20 +02:00
Erik
887f221674 docs(render): ledger — S3 chunk 3 contract written; S4 notes the order-only punch hypothesis
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 07:28:43 +02:00
Erik
5c64679b11 docs(render): S3 chunk 2 contract -- exact PView state
Decomp-verified during the capture session: PView::DrawCells 0x005a4840
keeps the landscape flush, stamp advance, gated Z clear and exit seals
inside outside_view.view_count > 0; the clear is gated by the persistent
D3DPolyRender::portalsDrawnCount (0x008719b4), which only exit seals feed
in the building path (pass 1 punches pass TRUE; forceClear is never
written). acdream's unconditional clear/seals and the _skyDrawnThisFrame
proxy are the divergence chunk 2 retires. The captures' second PView is
outdoor_pview's look-in flood (RenderDeviceD3D::Init 0x0059efb0).

Also: the cathedral floating-stairs scene row now expects retail's
exterior-slab leak (retail axiom), the retail screenshot is saved at
logs/oh-capture/cathedral-leak.retail.png, and the S3 ledger row moves to
chunk 2 in progress.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 07:14:39 +02:00
Erik
cebc9f6af9 docs(render): cathedral-leak pose — owner's retail screenshot described beside the transcript
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 06:54:55 +02:00
Erik
6d5afcccde fix(render): S2 chunk 6 review round — one particle turn per cell per stamp, cheap empty cells, dead owner-set stub deleted
Retail-lens review of chunk 6 (no blocking finding). Fixed:
- a cell that gets two object-list turns in one frame (a chamber reached
  through two portals) submitted its emitters twice; retail's particle parts
  sit in the same shadow_part_list as every other part and CPhysicsPart::Draw's
  frame stamp suppresses the second draw, so the walk now dedupes the particle
  turn with the same frame-scoped set that dedupes the cell shell;
- every visited land cell paid the full per-cell draw setup even with no
  emitter; DrawForCell now returns after the cell lookup, retail's own cost
  (DrawPartCell 0x005a07a0 `num_shadow_parts > 0`);
- CopyRenderableEmittersInCell maintains LastRenderScopeEmitterVisitCount;
- the OutdoorSceneParticleEntityIds / outdoorOwnerIds stub chain (permanently
  empty, never read) is deleted through IWorldSceneRenderer,
  WorldScenePViewRenderer, IWorldScenePasses and the composition root;
- AD-117 item 4 names the two behavioral residuals (owner-cell substitution;
  no per-emission AddPartToShadowCells);
- ParticleHookSinkTests pins that an emitter's draw cell is its owner's pose
  cell and survives the projection-visibility switch across the per-frame
  view pass.

Gates: Core 4,988/4,988 (Vfx 108/108), App hermetic 6,760/6,760, Runtime
1,884/1,884.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 06:52:28 +02:00
Erik
e7b6dc03c5 docs(render): OVERHAUL ledger — G2 PASSED by the owner, S2 closed
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 06:30:29 +02:00
Erik
924652626b docs(render): OVERHAUL ledger — S2 chunk 6 landed, haze verified, handoff addendum
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 06:28:39 +02:00
Erik
2d20ee917b checkpoint(render): portal-haze root cause — emitters need own-cell membership (S2 chunk 6 contract)
Instrumented arrivals show the Hidden-state cloud's emitters spawn in the
arrival cell, become view-eligible when the world appears, and are never
drawn: the walk draws an owner's emitters only through the owner's registry
rows, and a hidden owner's shadow is suspended. Retail's
CPhysicsObj::add_particle_shadow_to_cell (0x00514a70) gives an emitter one
shadow in its own cell, drawn at that cell's turn regardless of the parent's
hidden state. S2 chunk 6 (packet §10) ports that: per-cell emitter draw
membership, owner-union particle path deleted. Route timing fixed so the
arrival screenshots anchor on the reveal.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 05:49:45 +02:00
Erik
7ec72765d7 checkpoint(render): G2 owner findings — terrain punch assigned to S4, portal-haze probe
Owner G2 check at 4b0b29e4: Facility Hub PASS, Holtburg house PASS,
cathedral leak unchanged (S3/S4). Two new findings:
- doorway-sized fragments of houses on the terrace below show through
  the hill in Holtburg: PortalDepthMaskRenderer draws every visited cell's
  exit-portal fan with depth compare Always + write, so a doorway behind
  terrain still punches far depth through it. Pre-existing; S4 owns the
  punch (ledger row updated).
- the purple UnHide haze (script type 0x75, played on the retail
  Hidden->visible physics-state edge) no longer shows on the local player
  after a portal. Under investigation: temporary print-only traces
  [pes-spawn]/[pes-vis] under ACDREAM_DUMP_PLAYSCRIPT=1 (launch-options row
  amended; both die with the investigation) and a timed arrival route
  tools/overhaul-selfgate/route-portal-haze.txt.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 05:32:18 +02:00
Erik
4b0b29e4cd docs(render): AD-117 item 1 retired — the render-only destination-cell move is retail's own zero-sphere find_cell_list
CObjCell::find_cell_list (0x0052b4e0) with num_sphere == 0 adds only the
current cell — interior CELLARRAY::add_cell at 0x0052b563, outdoor
CLandCell::add_all_outside_cells (0x00533630, the arg2 <= 0 branch:
adjust_to_outside + gid_to_lcoord + add_outside_cell) — and skips the
portal transit walk (`arg4 != 0 && arg2 != 0` at 0x0052b576). So a shapeless
object's transition cell array is its destination cell alone, exactly what
RefreshPositionRows publishes. Not an adaptation; the register row keeps
its three residual readings, the S3 packet drops the capture request, and
the registry/test comments cite the verified function.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 01:18:50 +02:00
Erik
3597c90446 docs(render): OVERHAUL ledger — connected nine-stop soak PASS on the final S2 build
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 01:13:26 +02:00
Erik
31465a0ece docs(render): OVERHAUL S3 ownership packet (draft, pre-capture)
s3-walk-ownership-map.md: the decomp-verified retail table for the walk
(views, stamps, DrawCells order, DrawBuilding sequence, landscape
far-to-near interleave), the current acdream owners with the S2-era
assessment, the four bounded chunks (transcript emitter blocked on the
owner's capture; exact PView state; landcell interleave; deletions), the
two review lenses, the automated gate, and the three exact traces to ask
for at the capture session. Ledger S3 row flipped to PACKET DRAFTED /
blocked on the capture; the G2 handoff points at it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 01:06:16 +02:00
Erik
78068b2cfe docs(render): OVERHAUL ledger — S2 code-complete, G2 provisional PASS, morning handoff
§13: S2 row records chunk 5 + closeout `c94a1a40`, the review fix batch, the
gate counts, every self-gate run (the chunk-5 FAIL on the Facility wall
panels and the candidate PASS), the membership-probe run and the chunk-4
connected soak; the gate table names the six S2 commits and the revert rule.
The G2 morning handoff gives the owner the candidate build, the checklist,
the PNG paths and the automated-gate summary; G2 stays provisional until the
owner double-checks.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 01:03:26 +02:00
Erik
f30039d3d9 docs(render): ledger - connected R6 route passes on the chunk-4 build
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 00:01:10 +02:00
Erik
b58d64c5f1 docs(render): ledger - chunk-4 self-gate run recorded, R6 soak started
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-02 23:40:28 +02:00
Erik
6717a3e509 docs(render): ledger - S2 chunk 4 landed, chunk 5 in progress
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-02 23:37:35 +02:00
Erik
706fc49397 docs(render): ledger - self-gate baseline and chunk-3 runs recorded
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-02 23:18:24 +02:00
Erik
b7e6ec7769 docs(render): ledger - S2 chunk 3 landed, chunk 4 in progress
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-02 23:03:50 +02:00
Erik
d79058cec4 docs(render): ledger - S2 chunk 2 landed, chunk 3 in progress
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-02 22:32:54 +02:00
Erik
7adbffcb6a docs(render): record owner-supplied self-gate poses
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-02 22:05:51 +02:00
Erik
5a2792d689 feat(physics): S2 chunk 1b - callers supply the visual part array; installed-DAT comparator
Every production registration now hands ShadowObjectRegistry the object's
whole visual part array beside its collision dispatch: static publication
(App LandblockPhysicsPublisher and the headless Content twin) through
ShadowShapeBuilder.FromStaticRenderParts, live entities (Runtime
LiveEntityCollisionBuilder) through the new FromSetupRenderParts, which walks
every Setup part with the same physics-sphere-else-drawing-sphere and
part-box rule from the PhysicsDataCache Runtime already reaches. Nothing
consumes the retail products yet; the App hermetic lane still passes
6,758/6,758.

The Lane=InstalledDat comparator registers five real fixtures through the
real publication inputs and prints retail CELLARRAY, collision cells, and
the old render cells side by side: Facility Hub stair Setup 0x02000623
(7 cells incl. 0x8A02015F/015E), cathedral ramp 0x020009A2 (3 cells, the
genuine multi-part case), the #334 Neftet formation (25 cells), and a
landblock-edge crosser (6 cells, 2 in the neighbor block). All three
answers agree for BSP-bearing objects, as the shared primitive predicts;
the divergence chunk 3 expects appears only for decorative non-BSP parts.

Core Physics 2,202/2,202; Runtime 1,884/1,884; App hermetic 6,758/6,758;
comparator + stair pin 5/5; solution Release build 0 warnings / 0 errors.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-02 21:52:35 +02:00
Erik
e7ad25a705 docs(render): S2 plan packet - membership ownership map and revised chunks
Read-only trace of every production owner of cell membership (render and
physics), the retail transaction they must collapse into (Contracts A/B),
and the five S2 chunks re-cut on that evidence: the two static floods are
one CellTransit walk with different part inputs; retail uses the whole
part array once and registers every part in every array cell; children
inherit at registration; topology consolidation moves to S3.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-02 20:57:04 +02:00
Erik
75873886f3 docs(render): close S1 at G1 PASS; open S2
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-02 20:43:51 +02:00
Erik
e2543d0ef0 fix(content): S1 review round - retail default sides shape, mask hoist, upload order
Campaign OVERHAUL S1 review fixes (two Opus lens reviews, findings verified
by the lead against the decomp):

- a raw sides_type outside 0/1/2 constructs retail's default single-side
  shape (ConstructMesh @0x0059DFA0 loop bounds default to 1) instead of
  dropping the polygon; still counted as a data anomaly (corpus has none);
- the positive-surface stippling mask OR runs once per polygon before the
  degenerate-fan guard, as retail's count loop does (pseudo-C 426859-426866);
- untextured slots keep their mask accounting but bake no texture and no
  vertices (contract §9 item 3); the dev pak shrinks by 114 KB;
- failed surface-override / Surface / texture-dependency lookups are
  attempted and logged once per slot, not once per candidate;
- cell-shell batches upload in ascending source surface index, retail's
  built-EnvCell subset draw order (ConstructMesh attribute-range scan,
  DrawMesh @0x0059D4A0); ordinary GfxObj meshes keep storage order;
- CellMesh.HasDrawableGeometry documented as the admission rule without
  texture-dependency resolution (a conservative superset of emission);
- the stippling/surface equivalence sweep's cell half is pinned at zero
  again; InAscendingSurfaceOrder is marked bake/upload/test-only;
- plan §5: reviewer findings are verified by the lead, one skeptic at most
  for a blocking finding, never more than five agents per step.

Three new Content tests pin the mask hoist, the vertex-free untextured
slot, and the single-side fallback. Content 213/213, Core Meshing and
Conformance green, App hermetic 6,757/6,757, Release build 0/0.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-02 19:37:25 +02:00
Erik
b681717c30 feat(core): S1 one CellStruct interpretation, installed-DAT scan, retire AP-234
Campaign OVERHAUL S1 chunk B.

- CellMesh.Build's render role is deleted; CellMesh.HasDrawableGeometry
  is the exact predicate (any sides_type candidate whose resolved surface
  passes the built-EnvCell (Surface.Type & 6) != 0 test), and the
  streaming build job consumes it. Core and Content no longer carry two
  CellStruct interpretations.
- Installed-DAT scan over the complete Environment corpus (5,346
  landblocks, 729,888 cells, 8,601,560 polygons, 8,608,746 candidates):
  3,197 old-rule admissions were untextured surfaces the NoPos proxy let
  through; zero new-only; zero unexplained; zero unknown sides values;
  counts pinned as goldens against the contract's DAT hashes.
- Canonical pins: 0xF4180104 has eight ST_DOUBLE clip-map polygons and 44
  drawable side calls; the canonical NoPos surfaces are type 0x11 and are
  constructed but skipped; two independent extractions of all ten
  canonical cells hash identically.
- AP-234 retired from the divergence register (161 active rows) with
  ConstructMesh 0x0059DFA0 / DrawEnvCell 0x0059F170 / DrawMesh 0x0059D4A0.
- StipplingSurfaceEquivalenceTests no longer claims a build-time NoPos
  skip; the cell half is report-only, the building half stays pinned.
- Inventory and policy remarks updated; plan ledger records chunk A and
  the capture kit.

Core Meshing+Conformance 95/95, Content 208/208 (Lane!=Timing,
Lane!=PreparedPackage), App EnvCell/LandblockBuild/Streaming 432/432,
Release solution build 0 warnings / 0 errors.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-02 19:11:17 +02:00