diff --git a/tests/AcDream.App.Tests/Rendering/CornerFloodReplayTests.cs b/tests/AcDream.App.Tests/Rendering/CornerFloodReplayTests.cs
index 5c6be3b6..34686a15 100644
--- a/tests/AcDream.App.Tests/Rendering/CornerFloodReplayTests.cs
+++ b/tests/AcDream.App.Tests/Rendering/CornerFloodReplayTests.cs
@@ -199,6 +199,7 @@ public class CornerFloodReplayTests
///
[Fact]
[Trait("Lane", "InstalledDat")]
+ [Trait("Purpose", "Diagnostic")]
public void Diagnostic_TraceGoodVsGlitchStep()
{
var datDir = ResolveDatDir();
@@ -500,6 +501,7 @@ public class CornerFloodReplayTests
///
[Fact]
[Trait("Lane", "InstalledDat")]
+ [Trait("Purpose", "Diagnostic")]
public void Diagnostic_Hop2Microscope()
{
var datDir = ResolveDatDir();
@@ -631,6 +633,7 @@ public class CornerFloodReplayTests
///
[Fact]
[Trait("Lane", "InstalledDat")]
+ [Trait("Purpose", "Diagnostic")]
public void Diagnostic_CornerPress_FloodAcrossDoorwayPlane()
{
var datDir = ResolveDatDir();
diff --git a/tests/AcDream.App.Tests/Rendering/HouseExitWalkReplayTests.cs b/tests/AcDream.App.Tests/Rendering/HouseExitWalkReplayTests.cs
index 5cef3074..cd4d42d4 100644
--- a/tests/AcDream.App.Tests/Rendering/HouseExitWalkReplayTests.cs
+++ b/tests/AcDream.App.Tests/Rendering/HouseExitWalkReplayTests.cs
@@ -437,6 +437,7 @@ public class HouseExitWalkReplayTests
/// Full per-step table for the handoff doc.
[Fact]
+ [Trait("Purpose", "Diagnostic")]
public void Diagnostic_ExitWalk_PerStepTable()
{
var steps = RunExitWalk();
@@ -457,6 +458,7 @@ public class HouseExitWalkReplayTests
/// cull ALL outdoor content — terrain included, not just the player).
///
[Fact]
+ [Trait("Purpose", "Diagnostic")]
public void Diagnostic_StaleRootWindow_EyeJustOutside()
{
var datDir = CornerFloodReplayTests.ResolveDatDir();
diff --git a/tests/AcDream.App.Tests/Rendering/Issue130DoorwayStripTests.cs b/tests/AcDream.App.Tests/Rendering/Issue130DoorwayStripTests.cs
index bddea864..e606e75c 100644
--- a/tests/AcDream.App.Tests/Rendering/Issue130DoorwayStripTests.cs
+++ b/tests/AcDream.App.Tests/Rendering/Issue130DoorwayStripTests.cs
@@ -57,7 +57,7 @@ public class Issue130DoorwayStripTests
}
[Fact]
- public void Diagnostic_ExitDoorTopEdge_GateVsAperture()
+ public void ExitDoorTopEdge_GateCoversLiftedApertureWithinPixelTolerance()
{
var datDir = CornerFloodReplayTests.ResolveDatDir();
if (datDir is null) { _out.WriteLine("SKIP: dats unavailable"); Assert.Fail("Lane=InstalledDat requires an installed retail DAT directory; see docs/release-gate.md."); }
diff --git a/tests/AcDream.App.Tests/Rendering/Issue181VisFlapReplayTests.cs b/tests/AcDream.App.Tests/Rendering/Issue181VisFlapReplayTests.cs
index 3796659b..dc0a69dd 100644
--- a/tests/AcDream.App.Tests/Rendering/Issue181VisFlapReplayTests.cs
+++ b/tests/AcDream.App.Tests/Rendering/Issue181VisFlapReplayTests.cs
@@ -117,6 +117,7 @@ public class Issue181VisFlapReplayTests
}
[Fact]
+ [Trait("Purpose", "Diagnostic")]
public void Diagnostic_SubMillimeterEyePerturbation_MustNotChangeAdmission()
{
var datDir = CornerFloodReplayTests.ResolveDatDir();
diff --git a/tests/AcDream.App.Tests/Rendering/Issue95DungeonFloodDiagnosticTests.cs b/tests/AcDream.App.Tests/Rendering/Issue95DungeonFloodDiagnosticTests.cs
index fabbc753..014b9e22 100644
--- a/tests/AcDream.App.Tests/Rendering/Issue95DungeonFloodDiagnosticTests.cs
+++ b/tests/AcDream.App.Tests/Rendering/Issue95DungeonFloodDiagnosticTests.cs
@@ -44,6 +44,7 @@ public class Issue95DungeonFloodDiagnosticTests
}
[Fact]
+ [Trait("Purpose", "Diagnostic")]
public void Measure_DungeonFlood_VisibleCellCount()
{
var datDir = CornerFloodReplayTests.ResolveDatDir();
diff --git a/tests/AcDream.Core.Tests/Conformance/Issue112MembershipTests.cs b/tests/AcDream.Core.Tests/Conformance/Issue112MembershipTests.cs
index 2f3c95ac..fa1ae9d7 100644
--- a/tests/AcDream.Core.Tests/Conformance/Issue112MembershipTests.cs
+++ b/tests/AcDream.Core.Tests/Conformance/Issue112MembershipTests.cs
@@ -224,6 +224,7 @@ public sealed class Issue112MembershipTests
}
[Fact]
+ [Trait("Purpose", "Diagnostic")]
public void Diagnostic_ReplayCapturedEntryWalk()
{
// Replays the cottage-112-capture1.log entry walk (world → A9B3-local =
diff --git a/tests/AcDream.Core.Tests/Conformance/Issue113DoorVanishDiagnosticTests.cs b/tests/AcDream.Core.Tests/Conformance/Issue113DoorVanishDiagnosticTests.cs
index 6ffd3b24..a5c1731f 100644
--- a/tests/AcDream.Core.Tests/Conformance/Issue113DoorVanishDiagnosticTests.cs
+++ b/tests/AcDream.Core.Tests/Conformance/Issue113DoorVanishDiagnosticTests.cs
@@ -30,6 +30,7 @@ public sealed class Issue113DoorVanishDiagnosticTests
private const uint DoorSetupId = 0x020019FFu;
[Fact]
+ [Trait("Purpose", "Diagnostic")]
public void DumpDoorSetup_DrawingBspCoverage()
{
var datDir = ConformanceDats.ResolveDatDir();
diff --git a/tests/AcDream.Core.Tests/Conformance/Issue113PhantomStairsDumpTests.cs b/tests/AcDream.Core.Tests/Conformance/Issue113PhantomStairsDumpTests.cs
index 3b6226f4..7db86bba 100644
--- a/tests/AcDream.Core.Tests/Conformance/Issue113PhantomStairsDumpTests.cs
+++ b/tests/AcDream.Core.Tests/Conformance/Issue113PhantomStairsDumpTests.cs
@@ -39,6 +39,7 @@ public sealed class Issue113PhantomStairsDumpTests
private static readonly Vector3 GapPoint = new(184.915f, 82.464f, 116.48f);
[Fact]
+ [Trait("Purpose", "Diagnostic")]
public void DumpA9B3_Buildings_And_InteriorCells()
{
var datDir = ConformanceDats.ResolveDatDir();
@@ -196,6 +197,7 @@ public sealed class Issue113PhantomStairsDumpTests
/// the shell?).
///
[Fact]
+ [Trait("Purpose", "Diagnostic")]
public void DumpA9B3_Statics_OutdoorStabs_And_ShellModel()
{
var datDir = ConformanceDats.ResolveDatDir();
@@ -342,6 +344,7 @@ public sealed class Issue113PhantomStairsDumpTests
/// + per-model stair scan + cells near the user's viewpoint.
///
[Fact]
+ [Trait("Purpose", "Diagnostic")]
public void DumpAAB3_Buildings_And_StairScan()
{
var datDir = ConformanceDats.ResolveDatDir();
@@ -441,6 +444,7 @@ public sealed class Issue113PhantomStairsDumpTests
/// Also localize the model's ramps to know which face the stairs are on.
///
[Fact]
+ [Trait("Purpose", "Diagnostic")]
public void DumpAAB3_Watchtower_DoorAlignment_And_RampFaces()
{
var datDir = ConformanceDats.ResolveDatDir();
diff --git a/tests/AcDream.Core.Tests/Conformance/Issue119TowerDumpTests.cs b/tests/AcDream.Core.Tests/Conformance/Issue119TowerDumpTests.cs
index 89e2d5cd..88cc6727 100644
--- a/tests/AcDream.Core.Tests/Conformance/Issue119TowerDumpTests.cs
+++ b/tests/AcDream.Core.Tests/Conformance/Issue119TowerDumpTests.cs
@@ -35,6 +35,7 @@ public sealed class Issue119TowerDumpTests
private static readonly Vector3 TowerSpot = new(107.4f, 59.0f, 112.0f); // AAB3-local, from the [snap]
[Fact]
+ [Trait("Purpose", "Diagnostic")]
public void DumpTowerCellNeighbourhood()
{
var datDir = ConformanceDats.ResolveDatDir();
@@ -144,6 +145,7 @@ public sealed class Issue119TowerDumpTests
/// VISIBLE sibling parts failing, or the whole-part placement is off.
///
[Theory]
+ [Trait("Purpose", "Diagnostic")]
[InlineData(0x020005D8u)]
[InlineData(0x020003F2u)]
public void DumpTowerStairSetups(uint setupId)
diff --git a/tests/AcDream.Core.Tests/Conformance/Issue119UpNullGfxObjDumpTests.cs b/tests/AcDream.Core.Tests/Conformance/Issue119UpNullGfxObjDumpTests.cs
index 949d1d03..b94ab3df 100644
--- a/tests/AcDream.Core.Tests/Conformance/Issue119UpNullGfxObjDumpTests.cs
+++ b/tests/AcDream.Core.Tests/Conformance/Issue119UpNullGfxObjDumpTests.cs
@@ -33,6 +33,7 @@ public sealed class Issue119UpNullGfxObjDumpTests
[Theory]
[MemberData(nameof(UpNullIds))]
+ [Trait("Purpose", "Diagnostic")]
public void DumpUpNullGfxObj(uint id)
{
var datDir = ConformanceDats.ResolveDatDir();
diff --git a/tests/AcDream.Core.Tests/Items/ClientObjectTableTests.cs b/tests/AcDream.Core.Tests/Items/ClientObjectTableTests.cs
index 4d06dec1..d6cb1af2 100644
--- a/tests/AcDream.Core.Tests/Items/ClientObjectTableTests.cs
+++ b/tests/AcDream.Core.Tests/Items/ClientObjectTableTests.cs
@@ -767,7 +767,7 @@ public sealed class ClientObjectTableTests
}
///
- /// SCRATCH G4 reproduction: a vendor BUY's real wire shape is a fresh
+ /// A vendor BUY's real wire shape is a fresh
/// CreateObject (a BRAND NEW guid our client has never seen before —
/// ACE's Player_Commerce.cs FinalizeBuyTransaction/ItemProfileToWorldObjects
/// mints a new WorldObject for common stock, distinct from the shop-list
@@ -783,7 +783,7 @@ public sealed class ClientObjectTableTests
/// object FIRST) already proves.
///
[Fact]
- public void SCRATCH_BuyShapedFreshGuidCreateObjectThenContainId_FinalOrder()
+ public void BuyShapedFreshGuidCreateThenPlacementZeroEcho_InsertsAtRetailListHead()
{
var table = new ClientObjectTable();
const uint pack = 0x50000001u;
diff --git a/tests/AcDream.Core.Tests/Physics/CellarUpTrajectoryReplayTests.cs b/tests/AcDream.Core.Tests/Physics/CellarUpTrajectoryReplayTests.cs
index 592131a2..e51ccd15 100644
--- a/tests/AcDream.Core.Tests/Physics/CellarUpTrajectoryReplayTests.cs
+++ b/tests/AcDream.Core.Tests/Physics/CellarUpTrajectoryReplayTests.cs
@@ -737,6 +737,7 @@ public class CellarUpTrajectoryReplayTests : IDisposable
/// Always passes; this is a one-shot tool, not a regression.
///
[Fact]
+ [Trait("Purpose", "Diagnostic")]
public void LiveCompare_FirstCap_DiagnosticDump()
{
PhysicsDiagnostics.ProbeResolveEnabled = true;
diff --git a/tests/AcDream.Core.Tests/Physics/DoorBugTrajectoryReplayTests.cs b/tests/AcDream.Core.Tests/Physics/DoorBugTrajectoryReplayTests.cs
index 25eebc6b..7374580c 100644
--- a/tests/AcDream.Core.Tests/Physics/DoorBugTrajectoryReplayTests.cs
+++ b/tests/AcDream.Core.Tests/Physics/DoorBugTrajectoryReplayTests.cs
@@ -162,6 +162,7 @@ public class DoorBugTrajectoryReplayTests
///
[Fact]
[Trait("Lane", "InstalledDat")]
+ [Trait("Purpose", "Diagnostic")]
public void Diagnostic_Tick22760_DumpEngineInternals()
{
var datDir = ResolveDatDir();
@@ -215,6 +216,7 @@ public class DoorBugTrajectoryReplayTests
[Fact]
[Trait("Lane", "InstalledDat")]
+ [Trait("Purpose", "Diagnostic")]
public void Diagnostic_Tick13558_DumpEngineInternals()
{
var datDir = ResolveDatDir();
@@ -686,6 +688,7 @@ public class DoorBugTrajectoryReplayTests
/// / nothing.
///
[Fact]
+ [Trait("Purpose", "Diagnostic")]
public void Diagnostic_CottagePolys_NearWalkthroughPosition()
{
var fixturePath = Path.Combine(SolutionRoot(),
diff --git a/tests/AcDream.Core.Tests/Physics/Issue108CellarAscentViewerReplayTests.cs b/tests/AcDream.Core.Tests/Physics/Issue108CellarAscentViewerReplayTests.cs
index 5ccc40eb..6d41241c 100644
--- a/tests/AcDream.Core.Tests/Physics/Issue108CellarAscentViewerReplayTests.cs
+++ b/tests/AcDream.Core.Tests/Physics/Issue108CellarAscentViewerReplayTests.cs
@@ -281,6 +281,7 @@ public class Issue108CellarAscentViewerReplayTests
/// below grade, and the branch column attributes the demote site.
///
[Fact]
+ [Trait("Purpose", "Diagnostic")]
public void Diagnostic_CellarAscent_PerStepTable()
{
var steps = RunAscent(BoomDistance, pathLagMeters: 0f);
@@ -303,6 +304,7 @@ public class Issue108CellarAscentViewerReplayTests
/// Boom-distance + damping-lag sweep: how wide is the window across poses?
[Fact]
+ [Trait("Purpose", "Diagnostic")]
public void Diagnostic_CellarAscent_PoseSweep()
{
foreach (float dist in new[] { 2.61f, 5.0f })
diff --git a/tests/AcDream.Core.Tests/Physics/Issue147ArwicBuildingsDumpTests.cs b/tests/AcDream.Core.Tests/Physics/Issue147ArwicBuildingsDumpTests.cs
index 4e9d2cf0..d31b9fdd 100644
--- a/tests/AcDream.Core.Tests/Physics/Issue147ArwicBuildingsDumpTests.cs
+++ b/tests/AcDream.Core.Tests/Physics/Issue147ArwicBuildingsDumpTests.cs
@@ -24,6 +24,7 @@ public sealed class Issue147ArwicBuildingsDumpTests
public Issue147ArwicBuildingsDumpTests(ITestOutputHelper o) => _out = o;
[Fact]
+ [Trait("Purpose", "Diagnostic")]
public void DumpArwicBuildingsAndObjects()
{
var datDir = Env.GetEnvironmentVariable("ACDREAM_DAT_DIR")
diff --git a/tests/AcDream.Core.Tests/Physics/Issue265SteepSlopeCaptureBisectTests.cs b/tests/AcDream.Core.Tests/Physics/Issue265SteepSlopeCaptureBisectTests.cs
index bc04f05d..4fad00c7 100644
--- a/tests/AcDream.Core.Tests/Physics/Issue265SteepSlopeCaptureBisectTests.cs
+++ b/tests/AcDream.Core.Tests/Physics/Issue265SteepSlopeCaptureBisectTests.cs
@@ -360,6 +360,7 @@ public class Issue265SteepSlopeCaptureBisectTests
/// the correct future regression assertion) is still being decided.
///
[Fact]
+ [Trait("Purpose", "Diagnostic")]
public void RealCapturedRoofLanding_CharacterizeCurrentBehavior()
{
PhysicsDiagnostics.ResetForTest();
diff --git a/tests/AcDream.Core.Tests/Physics/Issue337NeftetRockGeometryInspectionTests.cs b/tests/AcDream.Core.Tests/Physics/Issue337NeftetRockGeometryInspectionTests.cs
index 3a220d36..235b6882 100644
--- a/tests/AcDream.Core.Tests/Physics/Issue337NeftetRockGeometryInspectionTests.cs
+++ b/tests/AcDream.Core.Tests/Physics/Issue337NeftetRockGeometryInspectionTests.cs
@@ -68,6 +68,7 @@ public sealed class Issue337NeftetRockGeometryInspectionTests
int BspPolys);
[Fact]
+ [Trait("Purpose", "Diagnostic")]
public void DumpNeftetLandblockStaticsAndProbeTheWedgePoint()
{
System.Globalization.CultureInfo.CurrentCulture =