Commit graph

4516 commits

Author SHA1 Message Date
Erik
7506e5f14e test(vulkan): isolate the hardware witness lane
Tag the production offscreen witness as Lane=Vulkan, exclude capability-owned tests from the portable Release filter, and give lavapipe an explicit trait-only invocation after the portable Vulkan contracts.

Document the lane and pin witness, portable-filter, and workflow ownership without initializing Vulkan.

Mutations performed and restored:

1. Removed the witness trait: VulkanLaneOwnershipContractTests first failed Assert.Matches because the Lane=Vulkan/Fact/method pattern was absent.

2. Removed Lane!=Vulkan from the default filter: the contract first failed Assert.Contains, not found Lane!=Vulkan.

3. Weakened the dedicated invocation to Lane!=Vulkan: the contract first failed Assert.Contains, not found --filter Lane=Vulkan in the hardware step.

4. Narrowed the dedicated invocation with FullyQualifiedName: the contract first failed Assert.DoesNotContain because FullyQualifiedName was present at position 231.
2026-09-05 03:19:55 +02:00
Erik
15a796c3a1 fix(rendering): split ordinary transform and sidecar indices
Use the shared absolute base-instance domain only for mesh transforms and subtract the published transform prefix for every live ordinary sidecar. Regenerate the production module and pin its hash.

Add real ordered-recording, committed-SPIR-V structure, and headless production-Vulkan pixel witnesses at nonzero prefixes, including receiver active/inactive invariance.

Mutations performed and restored:

1. Transform lookup -> local instanceIndex: MeshModernSharedIndexSpirvTests first failed Assert.Contains, item 368 not found in [27,377,27] (and the pixel witness found 0 dark pixels).

2. Selection sidecar -> absolute transformIndex: MeshModernSharedIndexOffscreenTests first failed: Expected a dark local-sidecar instance, found 0 matching pixels.

3. Published TextureIndexB -> 0: SharedTransformPrefix recording first failed Assert.Equal, expected 3, actual 0.

4. Receiver choice inverted: inactive first failed because expected mesh_modern was absent and only mesh_atmospheric was recorded; active failed conversely.

5. Offscreen shader directory -> copied test output: witness first failed the exact-path Assert.Equal (expected repo src/AcDream.App/Rendering/Shaders/spv, actual tests/AcDream.App.Tests/bin/Release/net10.0/Rendering/Shaders/spv).
2026-09-05 03:19:55 +02:00
Erik
56837f547f docs(overhaul): contract issue 470 readback barrier 2026-09-05 03:07:47 +02:00
Erik
011ab1c182 docs(overhaul): isolate issue 470 Vulkan proof
Record retail/behavior review pass 1/10: renderer behavior is correct, but the physical-device witness cannot live in the portable Release lane. Bind fix round 1 to an explicit Vulkan lane owned by the existing lavapipe job and current-machine proof.
2026-09-05 02:50:35 +02:00
Erik
67a8bc21f6 docs(overhaul): contract ordered sidecar index repair
Bind S5 packet section 27 for issue 470. The contract preserves the shared absolute transform index while making every live per-submission sidecar local, requires a nonzero-prefix production recording and offscreen pixel witness, and keeps receiver selection plus issue 469 out of scope.
2026-09-05 02:15:10 +02:00
Erik
d43f6809b4 docs(overhaul): close S5 c4 and narrow ordered sidecars 2026-09-05 02:12:19 +02:00
Erik
03a108ffa5 fix(rendering): restore classic transparent batching
Restore the pre-c4 classic immediate path for transparent commands without active building detail: always use the shared alpha pipeline and coalesce adjacent same-cull commands across TranslucencyKind boundaries. Keep detail-active material selection, detail arm/reset, and inner cull-run splitting unchanged.

Required mutations and first discriminating failures (all restored):

1. Non-detail arm restored to PipelineForBlend: ClassicImmediate_NonDetailUsesAlphaBlendWhenDetailIsDisabledOrUnavailable first reported InvAlpha/detail-disabled at line 1258; expected wb-mesh-alpha-1x, actual wb-mesh-inverse-1x.

2. Translucency equality split restored with the alpha arm intact: ClassicImmediate_NonDetailCrossBlendRunCoalescesIntoOnePhysicalDraw failed at line 1279; Assert.Single saw 3 physical MDI records.

3. Detail-active command forced onto AlphaBlend: ClassicImmediate_DetailActiveUsesExactMaterialPipelineAndArm failed at line 1303; expected wb-mesh-raw-additive-depth-write-1x, actual wb-mesh-alpha-1x.
2026-09-05 02:03:13 +02:00
Erik
d5cfd1c916 Fix alpha-tested blend depth writes
Add paired depth-write variants for all five blended SetSurface families in ordinary and atmospheric Wb pipeline sets at both sample counts and in EnvCell. Select them only from the carried AlphaTestEnabled state, retain pure-Clip and Translucent override behavior, and cover disposal plus partial-construction rollback.

Correct the three stale depth oracles and the AP register count/temporary AP-232 overclaim.

Required restored mutations and first discriminating failures:

1. Wb StraightAlpha+Clip collapsed to depth-off: WalkStaticStreamPopulatorTests.ImmediateBuildingDetail_UsesExactResolvedSetSurfaceState failed at line 1278; expected wb-mesh-alpha-depth-write-1x, binds were wb-mesh-alpha-1x.

2. EnvCell raw Additive+Clip collapsed to depth-off: EnvCellAlphaDrawSourceTests.DetailOn_EveryEnvCellFamilyDrawsOnceInPlaceWithAuthoredOpacity failed at line 132; expected envcell-raw-additive-depth-write, actual envcell-raw-additive.

3. EnvCell non-Clip raw Additive forced depth-on: the same production transcript failed at line 132; first row expected envcell-raw-additive, actual envcell-raw-additive-depth-write.

4. Late Translucent|Clip override forced alpha-test/depth-on: the same production transcript failed at line 132; expected envcell-alpha, actual envcell-alpha-depth-write.
2026-09-05 02:03:13 +02:00
Erik
15ed57a1e7 fix(rendering): carry retail SetSurface state to detail draws
Resolve exact SetSurface blend, alpha-test, and fog state once during extraction and preserve it through recipe-10 prepared payloads, Wb/EnvCell command data, Vulkan pipelines, push constants, and both ordinary/atmospheric one-pass shaders. Preserve AP-240 Wb pure-Clip immediate opaque/A2C while EnvCell uses retail premultiplied Clip; detail-off routing remains unchanged. Correct AP-232 and register the remaining detail-off state divergence.

Mutation first failures (all restored):
- raw Add->SRCALPHA/ONE: WalkStaticStreamPopulatorTests.ImmediateBuildingDetail_UsesExactResolvedSetSurfaceState line 1278, expected wb-mesh-raw-additive-1x.
- inverse-add->alpha-add: same test line 1278, expected wb-mesh-inverse-additive-1x.
- remove Env inverse: EnvCellAlphaDrawSourceTests.DetailOn_EveryEnvCellFamilyDrawsOnceInPlaceWithAuthoredOpacity line 132, expected envcell-inverse.
- raw IsAdditive precedence: same test line 132, Translucent|Clip|Additive expected envcell-alpha.
- Wb paletted ParamB=0: OrderPreservingSubmitterTests line 333, expected 0.392156869.
- Wb DDS ParamB=0.05: same test line 333, expected 0.784313738.
- disable Alpha+Clip test: WalkStaticStreamPopulatorTests line 1286, expected 0.784313738.
- always fog raw Add: same test line 1287, expected no-fog true.
- disable fog non-Add: same test line 1287, expected no-fog false.
- X=a*qA: RetailDetailTextureContractTests line 261, shared squared-alpha substring absent.
- X includes base alpha: same test line 262, forbidden baseTexel.a present.
- CLIP uses 0.05: EnvCellAlphaDrawSourceTests.ClipShaders_UseGreaterEqualForThePerRangeReference line 367.
- second detail draw: EnvCell detail-on line 131, collection contained 2 draws.
- straight-alpha substitute: Wb immediate line 1278, expected wb-mesh-additive-1x.
- omit ordered detail arm: OrderPreservingSubmitterTests line 318, expected (77,3.5), got (0,0).
- omit atmospheric combine: RetailDetailTextureContractTests line 260, shared include absent.
- drop serialized opacity: ObjectMeshDataSerializerTests line 292, expected opacity bits, got 1.0.
- stale detail arm: atmospheric adjacency line 402, expected slot 0, got 77.
- per-frame surface map: EnvCell warmed allocation line 285, expected 0 B, got 204800 B.
2026-09-05 02:03:13 +02:00
Erik
75664805f8 feat(rendering): port retail one-pass detail material
Replace the building and EnvCell detail replay with retail's exact single-pass stage result, including authored surface opacity, squared detail alpha, final-alpha clipping, and the original subset pipeline/order. Arm the ordered walk command in place to close #471, delete the replay pipelines/shaders, and advance prepared content to recipe 9.

Mutation witnesses (each restored before commit):
- X=a*qA: RetailDetailTextureContractTests.BothShaderFamiliesUseTheSharedOnePassSourceAndDebugPrecedesDetailSample line 174, missing materialAlpha * detail.a * detail.a.
- X*=base alpha: same test line 175, forbidden baseTexel.a found.
- CLIP against base alpha: EnvCellAlphaDrawSourceTests.ClipShaders_UseGreaterEqualForThePerRangeReference line 260, final-X conditional missing.
- second detail draw: EnvCellAlphaDrawSourceTests.DetailOn_EveryEnvCellFamilyDrawsOnceInPlaceWithAuthoredOpacity line 105, Assert.Single saw 2 MDI calls.
- straight-alpha substitution: WalkStaticStreamPopulatorTests.ImmediateBuildingDetail_RetainsOriginalFramebufferFamily line 1244, Additive first failed (only wb-mesh-alpha-1x recorded; InvAlpha also failed).
- omit ordered arm: OrderPreservingSubmitterTests.PrepareThenDraw_OrdinaryBuildingClipBuildingOrdinary_ArmsOnePassInPlace line 305, expected (77,3.5), got (0,0).
- omit atmospheric combine: RetailDetailTextureContractTests.BothShaderFamiliesUseTheSharedOnePassSourceAndDebugPrecedesDetailSample line 173, atmospheric shared include missing.
- drop serialized opacity: ObjectMeshDataSerializerTests.SurfaceOpacity_RoundTripsBitExactlyAndDeterministically line 288, first reported 0.5 bits 1056964608 vs 1065353216.
- stale detail arm: ordered adjacency test line 307, expected following ordinary (0,0), got (77,3.5).
- per-frame surface map: EnvCellAlphaDrawSourceTests.ProductionWholeLeaf_WarmedScanSubmitRhiAndFilteredReplayDoNotAllocate line 178, expected 0 B, got 147456 B.

Verification before commit: shader compiler 23/23; focused App 213/213; Content 75/75; Core Wb 10/10; launcher migration 6/6; Release solution build 0 warnings / 0 errors; git diff --check clean.
2026-09-05 02:03:13 +02:00
Erik
13dbb79eeb docs(overhaul): contract S5 c4 detail-off fix 2026-09-05 01:47:17 +02:00
Erik
c47a43eb72 docs(overhaul): contract S5 c4 depth-state fix 2026-09-05 01:12:33 +02:00
Erik
ee8d585651 docs(overhaul): preserve AP-240 in c4 fix 2026-09-05 00:25:45 +02:00
Erik
2281fdb3d6 docs(overhaul): contract S5 c4 material-state fix 2026-09-05 00:08:49 +02:00
Erik
9f410d8b75 docs(overhaul): contract exact S5 c4 detail material 2026-09-04 23:02:33 +02:00
Erik
678bffaa85 docs(overhaul): close S5 c3 and file ordered pack defect 2026-09-04 22:45:47 +02:00
Erik
c673f767e9 feat(rendering): port retail building degrade walk
Add exact retail building degrade selection, shared FPS/degrade ownership, complete-body gating, selected-shell submission, ordinary ladder mesh residency, frame-scoped retry rearm, Config controls, installed-DAT census, and lifecycle/allocation proofs.

Reviews: OpenAI retail pass 3 PASS; OpenAI production pass 5 PASS. Gates: Release 0W/0E; focused 285/285; hermetic 16811/16811; InstalledDat 469 pass, 10 documented fail, 1 documented skip; both manifests 30/30.
2026-09-04 22:29:18 +02:00
Erik
d0f45f6a99 docs(overhaul): contract S5 c3 fix round 3 2026-09-04 21:56:08 +02:00
Erik
ccd88eabcc docs(overhaul): contract S5 c3 fix round 2 2026-09-04 21:33:29 +02:00
Erik
5cc437bf98 docs(overhaul): refresh S5 c3 packet status 2026-09-04 21:15:59 +02:00
Erik
e18e23a5d3 docs(overhaul): allow ten review passes 2026-09-04 21:15:43 +02:00
Erik
def7fd2119 docs(overhaul): contract S5 c3 fix round 1 2026-09-04 21:13:33 +02:00
Erik
e2f5385037 docs(overhaul): switch remaining agents to OpenAI 2026-09-04 19:57:24 +02:00
Erik
185590e016 docs(overhaul): contract S5 c3 building degrades 2026-09-04 19:08:39 +02:00
Erik
c3ac20b2ad docs(overhaul): close S5 c2 landing gate 2026-09-04 18:44:50 +02:00
Erik
ef819eedf5 docs(overhaul): record S5 c2 clean evidence
Replace the stale pending-evidence result with the exact clean-commit hermetic, broader InstalledDat, and canonical comparison identities, filters, counts, and verified manifests. Preserve the broader artifact as valid noncanonical evidence and record both zero-difference nonpassing comparisons against accepted S5-c1.

Record retail review PASS and production review FAIL solely on the corrected evidence prose, with code, architecture, GPU-flight, lifecycle, allocation, and scope otherwise passing. Mark the documentation-only fix round implemented pending narrow re-review without advancing S5-c2 to landed.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-09-04 18:20:31 +02:00
Erik
048027e71a docs(overhaul): contract S5 c2 evidence fix 2026-09-04 18:20:31 +02:00
Erik
a4de2efc4e feat(overhaul): select pack shadows from retail visibility
Borrow the exact prior-completed landscape visibility transaction and S2 CELLARRAY owner for the opt-in IA-24 directional-shadow pack. Select terrain by authored 1..64 cells, ordinary casters by CELLARRAY, and buildings by outdoor EffectCellId with no fallback.

Keep retained caster/material/terrain topology stable across visibility-only frames. Publish exact arbitrary active instance runs and bounded terrain commands through separate selection sequences; preserve transform-journal, fade/retry, deferral, shader/RHI, ordinary world, and pack-off behavior. Amend IA-24 and the S5 ledger.

Pre-commit gates: Release solution build 0 warnings/0 errors; focused visibility/frame/caster/prepared/GPU/terrain/pack lane 137/137; warmed caster/prepared/terrain selectors 0 B; git diff --check clean. Official hermetic and InstalledDat evidence intentionally run post-commit from this exact clean tree.

Mutation evidence (each restored exactly): (1) CELLARRAY->Parent first failed PriorLandscapeSelection expected [201,202,203,205], actual [204,205]. (2) all resident terrain first failed Assert.Single with 3 commands. (3) building EffectCell->anchor first failed expected trailing 205, actual 206. (4) admit missing membership first failed with extra 204. (5) completed->building scratch first failed completed-view Assert.True, expected true/actual false. (6) selection advanced BuildSequence first failed expected 1/actual 2. (7) alternating->prefix first failed active command count expected 3/actual 1.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-09-04 18:20:31 +02:00
Erik
5c106bcdff docs(overhaul): contract S5 c2 shadow visibility 2026-09-04 17:24:33 +02:00
Erik
5e418600e5 docs(overhaul): close S5 c1 landing gate 2026-09-04 17:14:31 +02:00
Erik
1718832e2a docs(overhaul): bind S5 c1 clean evidence 2026-09-04 17:09:57 +02:00
Erik
ad115141ab docs(overhaul): bind S5 c1 clean evidence exception
Correct architecture and AD-21 to the existing transaction: normal non-login world frames participate, a walk contributes its exact landscape set, null-root completes an empty set without reconstruction, and login/portal-space retain no completed view.

Record the owner-authorized exception as in progress. Historical dirty-base artifacts remain preserved but clean exact-commit hermetic and InstalledDat evidence plus narrow review are still pending; no counts or hashes are invented.

Scope proof: no src or tests diff relative to b7a7eb9e2; git diff --check clean. No lanes or graphical client run by this commit.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-09-04 17:09:57 +02:00
Erik
36569c0b00 docs(overhaul): authorize S5 c1 evidence exception 2026-09-04 17:09:57 +02:00
Erik
6bbb9e117a docs(overhaul): correct S5 c1 null-root truth
State the actual visibility transaction: normal non-login world frames participate, PView contributes the exact walk landscape set, and null-root completes an empty set without reconstruction. Login and portal-space remain without a completed world view.

Prose only. Core particle tests 47/47; combined App visibility/terrain/frame/renderer plus AP-116 41/41; git diff --check clean.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-09-04 17:09:57 +02:00
Erik
3f17c9131d docs(overhaul): contract S5 c1 final review fix 2026-09-04 17:09:57 +02:00
Erik
4d1110812c docs(overhaul): correct S5 c1 review comments
Remove the deleted outdoor-fallback claim, describe the visible-cell union as diagnostics rather than a shared admission answer, and distinguish the landscape particle, resident-light, and future shadow consumers.

Correct ParticleSystem complexity prose: only the SortedSet indexes have logarithmic lifecycle edges; the view list uses binary-search insertion with linear shift and linear removal.

Focused verification: Core ParticleSystemTests 47/47; App visibility/terrain/frame/renderer 38/38; AP-116 settings/live-object 3/3; git diff --check clean. No behavior, tests, register, or architecture change.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-09-04 17:09:57 +02:00
Erik
282fe87fb3 docs(overhaul): contract S5 c1 review fix 2026-09-04 17:09:57 +02:00
Erik
94a6b5ef39 feat(overhaul): port S5 particle cell visibility
Publish the exact completed walk landscape set as the typed retained particle-view product. Apply retail CLandCell membership versus constant-true non-null CEnvCell eligibility while preserving the x87 distance and AP-116 behavior.

Delete the null-root terrain visibility reconstruction and the dead drawable-cell point-light feedback chain. Retire AP-117, correct AP-85 and AD-21, and keep directional shadows, building degrade, AP-232, probes, RHI, shaders, and DAT outside this chunk.

Automated return: Release 0 warnings/0 errors; Core VFX 111/111; App particle/frame/renderer/terrain 146/146; warmed production allocation 1/1 at 0 B. First official hermetic artifact s5-c1-hermetic-20260904 is preserved at 16759/16760 with only the stale 162-row assertion; after the bounded 161 correction, exact pin 1/1 and fresh s5-c1-hermetic-corrected-20260904 16760/16760. InstalledDat 385 pass, 10 documented failures, 1 documented skip, no new identity.

Mutation 1: making EnvCell eligibility set-dependent first failed ParticleSystemTests.cs:553 Assert.True, expected true actual false. Mutation 2: making outdoor eligibility constant true first failed ParticleSystemTests.cs:559 Assert.False, expected false actual true.

Mutation 3: feeding the diagnostic union first failed WorldSceneRendererTests.cs:279 HashSet equality, expected [16842755], actual [16843008, 16842755]. Mutation 4: restoring CollectVisibleCells first failed TerrainParticleCellVisibilityTests.cs:37 and named TerrainModernRenderer.cs.

Mutation 5: restoring ObserveDrawableCells first failed TerrainParticleCellVisibilityTests.cs:37 and named WorldRenderFrameBuilder.cs. Mutation 6: changing the inclusive boundary from <= to < first failed ParticleSystemTests.cs:519 Assert.True, expected true actual false.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-09-04 17:09:51 +02:00
Erik
efb0756190 docs(overhaul): record S5 c1 mandatory stop 2026-09-04 16:55:38 +02:00
Erik
88873ea3dc docs(overhaul): bound S5 c1 gate correction 2026-09-04 16:20:28 +02:00
Erik
00f134f9e4 docs(overhaul): contract S5 typed visibility consumers 2026-09-04 15:52:55 +02:00
Erik
170a807aad docs(overhaul): record provisional G3 self-gate 2026-09-04 15:36:53 +02:00
Erik
9ca82bfc83 docs(overhaul): close S4 c3b landing 2026-09-04 15:17:48 +02:00
Erik
3f2f00c9fa docs(overhaul): correct S4 c3b gate provenance
Disclose that both official c3b artifact sets were captured pre-commit on the restored uncommitted implementation tree at parent a0523e605 with WorktreeDirty=true. Reconcile the transcript status entry as transient mutation-worktree dirtiness rather than an active gate mutation.

Narrow verification: both summary identities match; both 30-entry SHA256SUMS manifests verify with zero mismatches; base, implementation tip, contract HEAD, and worktree transcript blobs are c755c1379f; the hermetic TRX source-truth pin passed; diff-check and packet-only scope passed.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-09-04 15:16:03 +02:00
Erik
5110bf6760 docs(overhaul): contract S4 c3b provenance fix 2026-09-04 15:16:03 +02:00
Erik
26e97ba412 refactor(render): delete superseded alpha sidecars
Remove the dead classic-group CachedBatch/InstanceGroup sort-center sidecar and its cache, append, reset, and diagnostic-digest plumbing. Remove the discarded camera parameter chain from grouped alpha deferral and dispatcher submission diagnostics while preserving walk/particle CYpt keys, FIFO submission ordinals, and opaque camera distance.

Add production-facing reflection/source pins for the deleted shapes and camera chain, retained per-cell and opaque owners, the exact three AlphaFlushCounts reasons, and deleted alpha-order symbols. Update directly affected cache/digest/group lifecycle tests and record the complete section 22 result.

Gates: Release 0W/0E; focused App 132/132 plus Core 29/29; new pins 4/4; real allocation pins 2/2 at 0 B; shaders 32/32; hermetic 16755/16755; InstalledDat exactly 385 pass, 10 documented fail, 1 skip; diff-check clean.

Mutations: InstanceGroup and CachedBatch sidecars fail their Assert.Null pins; Defer and digest camera parameters fail method-shape pins; false count prose fails the exact-reason pin; RetailAlphaOrdering resurrection fails the deletion pin. Each was restored independently before the final matrix.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-09-04 15:16:03 +02:00
Erik
a0523e6057 docs(overhaul): contract S4 c3b deletions 2026-09-04 14:45:52 +02:00
Erik
b1d33c9b88 docs(overhaul): close S4 c3a landing 2026-09-04 14:41:56 +02:00
Erik
67c76026e6 docs(overhaul): correct c3a mutation evidence
Correct packet section 18.7 mutation 9: renaming AP-241 first fails the earlier AP-table-boundary Assert.True with rowIndex=-1; the later Assert.Single is not reached. Advance only the S4-c3a ledger row to the owner-authorized evidence-exception review.

This commit explicitly supersedes the false mutation-9 sentence recorded in historical candidate commit 44e2bc227b without rewriting or amending that commit. It changes no other c3a evidence or renderer behavior.

Narrow mutation: AP-241 rename first failed at line 329 with 'AP-241 row must be inside the AP table before the TS section; rowIndex=-1, AP=[275116,751256).'. The register row was restored byte-identically and the same isolated test passed 1/1. Diff-check passed; only packet and plan changed; no graphical client.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-09-04 14:37:40 +02:00
Erik
316193043d docs(overhaul): authorize narrow S4 c3a evidence fix 2026-09-04 14:37:37 +02:00