test: separate diagnostic apparatus from release gates
This commit is contained in:
parent
8f490240d4
commit
c1a905004a
33 changed files with 527 additions and 24 deletions
|
|
@ -10738,7 +10738,7 @@ user descended the spiral (`retail-spiral2.log`, 767 samples). **Retail's flood
|
|||
and IDENTICAL in character to ours** — from the spiral cells it swings `num` 3→27 with gaze
|
||||
and COLLAPSES to 3 cells at many poses (e.g. cam=015d eye(60.05,-28.51,-3.66) → just
|
||||
{015d 015e 015f}; cam=014b → {014b 014c 014a}). Our flood does the same (3→43, headless
|
||||
`FloodDepthFrom015E_VsRetail26` = max 43 vs retail 26). So retail does NOT keep the spiral
|
||||
`Diagnostic_FloodDepthFrom015E_VsRetail26` = max 43 vs retail 26). So retail does NOT keep the spiral
|
||||
where we drop it — the flood is EXONERATED as the cause. **The vanish must be DOWNSTREAM of
|
||||
the flood** (unexplored): the steps in these spiral cells are STATIC objects (GfxObj
|
||||
`0x010000DE` ×6/cell), drawn via the separate viewcone cull (`ViewconeCuller.SphereVisibleInCell`
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ inline when ported.
|
|||
### BR-1 — The surface gate — ✅ RESOLVED AS ALREADY-EQUIVALENT (2026-06-11, execution day 1)
|
||||
|
||||
**Premise falsified before implementation (the BR-1 pre-check,
|
||||
`ReplicateProductionEmission_OnPortalFills`):** acdream **already suppresses
|
||||
`Diagnostic_ReplicateProductionEmission_OnPortalFills`):** acdream **already suppresses
|
||||
every portal fill** — all four extraction paths skip `Stippling.NoPos`
|
||||
positive sides (`ObjectMeshManager.PrepareGfxObjMeshData:1046`,
|
||||
`PrepareCellStructMeshData:1394`, `CellMesh.Build:44`, `GfxObjMesh.Build:71`),
|
||||
|
|
|
|||
|
|
@ -99,6 +99,16 @@ expected until the linked defect is fixed. Diagnostic apparatus
|
|||
(`Purpose=Diagnostic`) likewise reports separately and does not inflate the
|
||||
contract-test pass count.
|
||||
|
||||
The current diagnostic apparatus lives in App and Core. It is retained for
|
||||
investigation output, and several methods require installed DATs:
|
||||
|
||||
```powershell
|
||||
dotnet test tests/AcDream.App.Tests/AcDream.App.Tests.csproj -c Release `
|
||||
--filter 'Purpose=Diagnostic'
|
||||
dotnet test tests/AcDream.Core.Tests/AcDream.Core.Tests.csproj -c Release `
|
||||
--filter 'Purpose=Diagnostic'
|
||||
```
|
||||
|
||||
## Updating dependencies
|
||||
|
||||
Do not edit lock files by hand. To make an intentional dependency change:
|
||||
|
|
|
|||
|
|
@ -371,7 +371,7 @@ area files.
|
|||
> (`ObjectMeshManager.PrepareGfxObjMeshData:1046`,
|
||||
> `PrepareCellStructMeshData:1394`, `CellMesh.Build:44`,
|
||||
> `GfxObjMesh.Build:71`), and the fills have no negative surface
|
||||
> (`ReplicateProductionEmission_OnPortalFills`: pos=False/neg=False for every
|
||||
> (`Diagnostic_ReplicateProductionEmission_OnPortalFills`: pos=False/neg=False for every
|
||||
> fill). The equivalence pin (`StipplingSurfaceEquivalenceTests`, 2,607
|
||||
> polys, 0 violations) proves our build-time skip ⇔ retail's draw-time
|
||||
> `skipNoTexture` on this content. Consequences: the ledger rows
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ draw the purple lightning over the floor"):
|
|||
3. **Striped floor z-fight-like artifact.** User's 2nd screenshot: regular
|
||||
magenta bands across one floor region, "like something is fighting to draw
|
||||
the purple over the floor." **NOT attributed.** Ruled out: not coincident dat
|
||||
geometry (the `CorridorNeighborhood_CoplanarOverlappingDrawnPolyPairs` sweep
|
||||
geometry (the `Diagnostic_CorridorNeighborhood_CoplanarOverlappingDrawnPolyPairs` sweep
|
||||
found only the legit z=−12 under-hall floor quad-fan, nothing near the −6
|
||||
corridor floor); not a striped texture (all corridor surfaces are plain
|
||||
`Base1Image` stone 0x08000375/6/7/8). Leading guess: two draws of the same
|
||||
|
|
@ -116,7 +116,7 @@ draw the purple lightning over the floor"):
|
|||
stair geometry owner (`0x8A020182`'s ramp shell, vertical portals, ZERO
|
||||
statics), CellBSP containment (partitions exactly at portal planes),
|
||||
under-hall + corridor drawn-poly surface colors, DXT1 alpha histograms (0
|
||||
transparent texels), and `CorridorNeighborhood_CoplanarOverlappingDrawnPolyPairs`
|
||||
transparent texels), and `Diagnostic_CorridorNeighborhood_CoplanarOverlappingDrawnPolyPairs`
|
||||
(the stripe-geometry sweep — came back empty for the −6 floor).
|
||||
- **`tests/AcDream.App.Tests/Rendering/Issue176177FacilityHubFloodReplayTests.cs`**
|
||||
— production-matched portal-flood replays (approach/descent/gaze-sweep/walk +
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ NOT throw more lighting fixes at it (two already did nothing).
|
|||
| Lighting **selection** | `SelectForCell` (all dynamic lights per cell, retail-exact) → **no visual change** |
|
||||
| Light-set **camera-cap churn** (the OLD "confirmed" #176 theory) | visible-cell scoping shipped (`c500912b`); probe-proven ~285 through-floor lights dropped/frame — symptom unchanged. **REFUTED.** |
|
||||
| **Membership / the "flap"** | `ACDREAM_PROBE_FLAP`: render cell = `0x8A020164` on **100%** of 188,732 frames across **526 distinct camera angles**, `res=None` always; `ACDREAM_PROBE_PVINPUT` flood is stable-per-angle (17/10/8…), never oscillates at a fixed view; 1 `[cell-transit]` (the spawn teleport) total |
|
||||
| **Dat-geometry z-fight** | `Issue176177DungeonSeamInspectionTests.CorridorNeighborhood_CoplanarOverlappingDrawnPolyPairs` seeded on the ACTUAL cell `0x8A020164` + neighbors → **zero** coplanar drawn pairs at the z=−6 corridor floor (only the benign same-cell z=−12 under-hall floor tiling in `0x011E`) |
|
||||
| **Dat-geometry z-fight** | `Issue176177DungeonSeamInspectionTests.Diagnostic_CorridorNeighborhood_CoplanarOverlappingDrawnPolyPairs` seeded on the ACTUAL cell `0x8A020164` + neighbors → **zero** coplanar drawn pairs at the z=−6 corridor floor (only the benign same-cell z=−12 under-hall floor tiling in `0x011E`) |
|
||||
| A2C / alpha-hole see-through | corridor floor surface `0x08000377` is **fully opaque** (`alpha0Texels=0`, `transl=0.00`) |
|
||||
| Translucent under-surface blend | the one translucent colored surface `0x08000034` is `NoPos` (not drawn) |
|
||||
| Flat (per-face) normals | corridor floor uses **smooth per-vertex dat normals** (center `(0,0,1)`, corners tilted ~27° — retail-style edge smoothing), NOT flat (`CellVertexNormals_SmoothOrFaceted_Dump`) |
|
||||
|
|
@ -129,7 +129,7 @@ RenderDoc (do NOT assume — capture and read):
|
|||
- `ACDREAM_PROBE_INDOOR_LIGHT=1` — `[indoor-light]` scoped-pool SET composition.
|
||||
- `tools/cdb/issue176-floor-light.cdb` — retail light-setup trace.
|
||||
- `Issue176177DungeonSeamInspectionTests` — dat truth (coplanar sweep, floor
|
||||
surfaces, vertex normals); `CorridorNeighborhood_CoplanarOverlappingDrawnPolyPairs`
|
||||
surfaces, vertex normals); `Diagnostic_CorridorNeighborhood_CoplanarOverlappingDrawnPolyPairs`
|
||||
seed = `{0164,0165,016E,017A}`+neighbors.
|
||||
|
||||
## Repro + launch protocol
|
||||
|
|
|
|||
|
|
@ -26,6 +26,50 @@ The six-case reduction from the earlier 14,748-pass headline is understood:
|
|||
seven launcher editor-focus theory rows were consolidated into one fact that
|
||||
still executes all seven variants in a single Avalonia application session.
|
||||
|
||||
## Fresh reproducible syntax inventory
|
||||
|
||||
`tools/audit-test-inventory.ps1` now regenerates the complete attributed-method
|
||||
manifest from tracked C# test sources with Roslyn:
|
||||
|
||||
```powershell
|
||||
pwsh ./tools/audit-test-inventory.ps1
|
||||
```
|
||||
|
||||
The generated JSON lives under ignored `artifacts/test-audit/`; it is not a
|
||||
second 6.8 MB checked-in source of truth. The script and this reviewed ledger
|
||||
are durable, while paths and line numbers regenerate after every batch. The
|
||||
inventory at commit `8f490240` reports:
|
||||
|
||||
| Syntax signal | Current count |
|
||||
|---|---:|
|
||||
| Tracked/parsed C# test files | 1,256 / 1,256 |
|
||||
| Attributed test methods (not expanded theory cases) | 11,455 |
|
||||
| Methods containing at least one empty `return;` | 399 |
|
||||
| Empty-return sites | 426 |
|
||||
| Prerequisite-return candidates | 282 |
|
||||
| Mechanical output-only candidates | 47 |
|
||||
| Methods directly using `Thread.Sleep` / `Task.Delay` | 20 / 23 |
|
||||
| Methods directly reading environment variables | 47 |
|
||||
| Methods directly reading `.cs` source text | 63 |
|
||||
|
||||
The 282 prerequisite-return count is intentionally a review candidate set, not
|
||||
a claim that all 399 methods are broken. It comprises 109 App, 125 Core, 29
|
||||
Content, 12 Launcher.Core, three Core.Net, three Bake, and one Headless method.
|
||||
The classifier includes external-asset, opt-in, and platform gates; behavioral
|
||||
early exits inside callback tests remain outside that candidate set. Every
|
||||
candidate still requires source inspection because `Directory.Exists`, for
|
||||
example, can also be the behavior under test.
|
||||
|
||||
The output-only classifier follows same-file helper calls, but it cannot decide
|
||||
whether an assertion merely establishes probe setup. The reviewed diagnostic
|
||||
set is therefore 51 methods: the 47 mechanical candidates plus
|
||||
`OptionsPanelLiveMountProbeTests.ProbeLiveMountShapes`,
|
||||
`DoorSetupGfxObjInspectionTests.HoltburgCottage_CellPortals_DatInspection`, and
|
||||
the two already classified tower diagnostics. Relative to T-011's historical
|
||||
51-method table, delete the removed PVS scaffold and add
|
||||
`TowerAscentReplayTests.Diagnostic_TowerAscent_PerStepTable`; all other entries
|
||||
remain. Those 51 methods expand to 70 discovered cases (28 App, 42 Core).
|
||||
|
||||
## Exact 77-skip reconciliation
|
||||
|
||||
The latest clean-gate TRX files account for every reported skip:
|
||||
|
|
@ -83,11 +127,11 @@ identifiable in the lane report.
|
|||
| T-004 warning mismatches | resolved in R2 | Clean rebuild is zero-warning with repository-wide warnings-as-errors. |
|
||||
| T-005 unreachable panel stack | requires production reachability proof | Do not delete 52 meaningful tests until the dead presentation surface and any supported plugin compatibility promise are verified together. |
|
||||
| T-006 misleading installed-DAT reason | resolved in batch B | Shared opt-in is now `ACDREAM_RUN_INSTALLED_DAT_TESTS=1` (legacy switch retained), the reason names the lane, and all nine owners carry `Lane=InstalledDat`. |
|
||||
| T-007 271 silent passing gates | open | Re-run the syntax inventory against current source, then convert each to a hermetic fixture, explicit prerequisite skip, or non-default lane. |
|
||||
| T-007 271 silent passing gates | active; current candidate set generated | Current syntax has 282 prerequisite-return candidates across seven projects. Inspect/classify from the generated manifest; the count changed with source growth and includes platform gates, so do not mechanically rewrite all 282. |
|
||||
| T-008 incapable-of-failing diagnostics | batch A plus diagnostic lane work | Delete the literal wiring smoke test; repair the GPU contract tautology; later re-home output-only apparatus. |
|
||||
| T-009 wall-clock double-click tests | open | Introduce a behavior-preserving injectable monotonic clock and deterministic fake time. |
|
||||
| T-010 two useless cases | high-confidence cleanup batch A | Delete `SmokeTest.TestProject_IsWired` and `ChaseCameraTests.ImplementsICamera`; compilation already proves both claims. |
|
||||
| T-011 51 output-only methods | open | Validate the historical 51-method list against current source; add stable oracles or move them outside default discovery. |
|
||||
| T-011 51 output-only methods | classified in batch C | The reviewed current set is 51 methods / 70 cases. All carry `Purpose=Diagnostic`, preserving the apparatus while removing it from release pass totals. Contract-shaped names remain explicitly flagged until a stable oracle exists. |
|
||||
| T-012 source-text freezes | requires semantic replacement map | Retain whole-tree dependency rules; remove exact-text freezes only when an equivalent semantic/behavioral guard is identified. |
|
||||
| T-013 controller self-comparison | high-confidence cleanup batch A | Capture the first controller next to the first body and compare every retry with that reference. |
|
||||
| T-014 seven load-sensitive tests | active; first mechanism reproduced | `PortalProjectionTests.ClipToRegion_FrameOwnedStore_ReusesExactResultArray` reported 6,904 B only while three App test hosts ran concurrently, then passed in an isolated run. Preserve both observations and remove ambient process-allocation sensitivity rather than loosening the zero-allocation oracle. |
|
||||
|
|
@ -179,3 +223,31 @@ at 6,904 bytes while the Installed-DAT and discovery hosts ran beside it. The
|
|||
same unmodified hermetic command then passed 5,505/5,505 in isolation. This is
|
||||
evidence for removing cross-host allocation sensitivity; it is not grounds to
|
||||
weaken the assertion or claim a clean concurrent result.
|
||||
|
||||
## Batch C diagnostic classification
|
||||
|
||||
Batch C assigns the reviewed 51-method diagnostic set to
|
||||
`Purpose=Diagnostic`. No body, output, historical comment, or fixture is
|
||||
removed. This resolves the misleading release accounting without pretending
|
||||
that every investigation has a stable regression oracle.
|
||||
|
||||
The 15 contract-shaped methods called out by T-011 now have a `Diagnostic_`
|
||||
prefix: four facility-hub scenarios, six stair/camera sweeps, two ambient-slot
|
||||
inventories, production-emission replication, and two drawn-polygon reports.
|
||||
Their current output and historical method references are preserved, while the
|
||||
new names no longer imply an asserted oracle. Promoting them back into the
|
||||
hermetic lane requires an asserted expected result; R3 will not invent those
|
||||
values.
|
||||
|
||||
Batch C verification:
|
||||
|
||||
- App Release build: 0 warnings, 0 errors;
|
||||
- Core Release build, serialized after App: 0 warnings, 0 errors;
|
||||
- hermetic App: 5,479 passed / 0 skipped / 0 failed;
|
||||
- hermetic Core: 4,753 passed / 0 skipped / 0 failed; and
|
||||
- diagnostic discovery: 28 App + 42 Core = 70 cases from 51 methods.
|
||||
|
||||
An attempted parallel App/Core build collided on the shared
|
||||
`AcDream.Plugin.Abstractions` intermediate DLL. The repository gate serializes
|
||||
projects, so the authoritative verification is the two isolated clean builds
|
||||
above; no code or assertion was changed in response to that tooling collision.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue