From 5c34e1c1fc4c95295d6a0449d08da3b8abda80ce Mon Sep 17 00:00:00 2001 From: "Aaron K. Clark" Date: Tue, 26 May 2026 02:35:44 -0500 Subject: [PATCH] chore(rec-28): re-file tracking issues + repoint 51 @Ignore annotations to new numbers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The 2026-05-24 repo-deletion incident destroyed the 18 GitHub tracking issues that the in-tree `@Ignore` annotations referenced. The deadline labels (`ignore:1y` etc.) were recreated on the new repo with zero applications; the issue references in code were dangling. Closes audit finding #5 from the 2026-05-26 self-audit. Re-filed 15 issues on the new repo with the `ignore:1y` label and the appropriate `lane:*` routing label. Each new issue body cites the in-tree file(s) it tracks and explains the test-skip context. Issue-number remap (old → new): #159 → #55 x86 scalar-disasm divergence — x86AssemblyTest #160 → #56 dsPIC30F W4 label-vs-register — dsPIC30FAssemblyTest #161 → #57 SymbolPathParser detailed-processing better-results #176 → #58 LLDB EXC_BAD_ACCESS on string allocation #177 → #59 LLDB temp var $x semantics #179 → #60 Debugger RMI integration test cluster #180 → #61 LldbConnectorsTest TODO #181 → #62 JitJvmTypeUtilsTest Java-version-bound (manual-tool) #183 → #63 AbstractToyJitCodeGenerator undefined-cases #187 → #64 MDMangBaseTest demangler corpus #188 → #65 HexagonPcodeUseropLibraryTest DFP NaN handling #189 → #66 Debug/TraceModeling cluster #191 → #67 Debugger plugin cluster #192 → #68 misc cluster #193 → #69 DBCachedObjectStore + TenetLoader correctness review 3 dead numbers were NOT re-filed because nothing in current code references them: - #162 (ARM/x64 dead `//@Ignore`s, already removed pre-deletion) - #178 (JavaMethodsTest flaky, collapsed in #28-6a) - #190 (ProjectExperimentsTest, file deleted in earlier sweep) - #182 (never observed in any annotation) Code change scope is narrow: - 21 test files: `@Ignore("...#OLD")` → `@Ignore("...#NEW")` only on lines containing `@Ignore` (sed address). Android OAT/ART source files in `Ghidra/Features/FileFormats/` are NOT touched — those reference these same numbers in unrelated contexts (Android API versions, image-method offsets, etc.). - 1 doc file: `docs/testing/ignore-test-inventory.md` — "six audit-named tests" table updated to current annotation strings, `#28-4` and `#28-6c` sequencing rows updated to record the remap, "sweep heuristics §" issue references updated. Verification: - 51 in-tree `@Ignore` annotations, all referencing `#55`–`#69`. - Census unchanged: 31 wip / 19 blocked-on / 1 manual-tool / 51. - `gradle ignoreAudit` still finds zero violations (annotations still carry category prefix + `#N` ref). Proudly Made in Nebraska. Go Big Red! 🌽 https://xkcd.com/2347/ Co-Authored-By: Claude Opus 4.7 (1M context) --- .../schema/XmlTargetObjectSchemaTest.java | 2 +- .../data/DBTraceDataTypeManagerTest.java | 4 ++-- ...eAddressSnapRangePropertyMapSpaceTest.java | 4 ++-- .../module/DBTraceModuleManagerTest.java | 4 ++-- .../DBCachedObjectStoreFactoryTest.java | 2 +- .../html/HTMLDataTypeRepresentationTest.java | 2 +- .../decompiler/taint/DecompilerTaintTest.java | 2 +- .../test/java/mdemangler/MDMangBaseTest.java | 18 +++++++------- .../pcode/emu/jit/JitJvmTypeUtilsTest.java | 2 +- .../sleigh/dsPIC30FAssemblyTest.java | 2 +- .../assembler/sleigh/x86AssemblyTest.java | 2 +- .../ghidra/app/util/SymbolPathParserTest.java | 2 +- .../HexagonPcodeUseropLibraryTest.java | 8 +++---- .../java/agent/java/rmi/JavaCommandsTest.java | 2 +- .../java/agent/java/rmi/JavaHooksTest.java | 2 +- .../java/agent/java/rmi/JavaMethodsTest.java | 2 +- .../java/agent/lldb/rmi/LldbCommandsTest.java | 24 +++++++++---------- .../agent/lldb/rmi/LldbConnectorsTest.java | 10 ++++---- .../DebuggerTraceRegistersProviderTest.java | 2 +- .../launcher/TraceRmiLaunchDialogTest.java | 2 +- .../gen/AbstractToyJitCodeGeneratorTest.java | 4 ++-- docs/testing/ignore-test-inventory.md | 16 ++++++------- 22 files changed, 59 insertions(+), 59 deletions(-) diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/dbg/target/schema/XmlTargetObjectSchemaTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/dbg/target/schema/XmlTargetObjectSchemaTest.java index 31b5f3917b3..125ec267769 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/dbg/target/schema/XmlTargetObjectSchemaTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/dbg/target/schema/XmlTargetObjectSchemaTest.java @@ -81,7 +81,7 @@ public void testDeserialize() throws JDOMException, IOException { } @Test - @Ignore("blocked-on: XmlTargetObjectSchema null-intent design fix #189") + @Ignore("blocked-on: XmlTargetObjectSchema null-intent design fix #66") public void testSearchWithMultipleImpls() throws Exception { SchemaContext ctx = XmlSchemaContext.deserialize(""" diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/data/DBTraceDataTypeManagerTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/data/DBTraceDataTypeManagerTest.java index 5273cca880d..5bb8e1083ef 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/data/DBTraceDataTypeManagerTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/data/DBTraceDataTypeManagerTest.java @@ -120,7 +120,7 @@ public void testAddAndGet() { } @Test - @Ignore("wip: Debug/TraceModeling cluster #189") + @Ignore("wip: Debug/TraceModeling cluster #66") public void testAddRemoveUndoThenGet() throws IOException { StructureDataType mine = getTestDataType(); DataTypePath minePath = mine.getDataTypePath(); @@ -158,7 +158,7 @@ public void testChangeDataType() { } @Test - @Ignore("wip: Debug/TraceModeling cluster #189") + @Ignore("wip: Debug/TraceModeling cluster #66") public void testReplaceDataType() throws DataTypeDependencyException { StructureDataType mineA = getTestDataType(); DataTypePath mineAPath = mineA.getDataTypePath(); diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapSpaceTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapSpaceTest.java index 529d01a96e5..c39d2796a93 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapSpaceTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapSpaceTest.java @@ -353,7 +353,7 @@ public void testGetDataByKey() { } @Test - @Ignore("wip: Debug/TraceModeling cluster #189") + @Ignore("wip: Debug/TraceModeling cluster #66") public void testSaveAndLoad() throws IOException, CancelledException, VersionException { MyEntry entry1; try (Transaction tx = obj.openTransaction("Create entries")) { @@ -372,7 +372,7 @@ public void testSaveAndLoad() throws IOException, CancelledException, VersionExc } @Test - @Ignore("blocked-on: DBTrace snap-range related to GP-479 #189") + @Ignore("blocked-on: DBTrace snap-range related to GP-479 #66") public void testUndoThenRedo() throws IOException { MyEntry entry1; try (Transaction tx = obj.openTransaction("Create entries")) { diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/module/DBTraceModuleManagerTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/module/DBTraceModuleManagerTest.java index baf5b9db584..500f27f4807 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/module/DBTraceModuleManagerTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/module/DBTraceModuleManagerTest.java @@ -340,7 +340,7 @@ public void testSaveThenLoad() throws Exception { } @Test - @Ignore("blocked-on: write-back cache undo unsupported #189") + @Ignore("blocked-on: write-back cache undo unsupported #66") public void testUndoIdentitiesPreserved() throws Exception { TraceModule mod1; try (Transaction tx = b.startTransaction()) { @@ -362,7 +362,7 @@ public void testUndoIdentitiesPreserved() throws Exception { } @Test - @Ignore("blocked-on: write-back cache undo unsupported #189") + @Ignore("blocked-on: write-back cache undo unsupported #66") public void testUndoThenRedo() throws Exception { TraceModule mod1; TraceModule mod2; diff --git a/Ghidra/Debug/ProposedUtils/src/test/java/ghidra/util/database/DBCachedObjectStoreFactoryTest.java b/Ghidra/Debug/ProposedUtils/src/test/java/ghidra/util/database/DBCachedObjectStoreFactoryTest.java index 9fe67aaa550..b7bab8b84c6 100644 --- a/Ghidra/Debug/ProposedUtils/src/test/java/ghidra/util/database/DBCachedObjectStoreFactoryTest.java +++ b/Ghidra/Debug/ProposedUtils/src/test/java/ghidra/util/database/DBCachedObjectStoreFactoryTest.java @@ -727,7 +727,7 @@ public void testAbstractColumns() throws IOException, VersionException { } @Test - @Ignore("wip: DBCachedObjectStoreFactory test correctness review #193") + @Ignore("wip: DBCachedObjectStoreFactory test correctness review #69") public void testCodecs() throws IOException, VersionException { DBHandle handle = new DBHandle(); diff --git a/Ghidra/Features/Base/src/test/java/ghidra/app/util/html/HTMLDataTypeRepresentationTest.java b/Ghidra/Features/Base/src/test/java/ghidra/app/util/html/HTMLDataTypeRepresentationTest.java index 172bafbb564..bdeb5cc572c 100644 --- a/Ghidra/Features/Base/src/test/java/ghidra/app/util/html/HTMLDataTypeRepresentationTest.java +++ b/Ghidra/Features/Base/src/test/java/ghidra/app/util/html/HTMLDataTypeRepresentationTest.java @@ -745,7 +745,7 @@ public void testTypeDefDiff_Arrays_SameArrays_DifferentNames() { * Test marked as ignored pending HTML rendering fix - see GP-1974 */ @Test - @Ignore("wip: misc cluster — undocumented bare-ignore #192") + @Ignore("wip: misc cluster — undocumented bare-ignore #68") public void testTypeDefDiff_ArraysOfStructures_DifferentStructures() { Structure s1 = getStructWithEnum(); diff --git a/Ghidra/Features/DecompilerDependent/src/test/java/ghidra/app/plugin/core/decompiler/taint/DecompilerTaintTest.java b/Ghidra/Features/DecompilerDependent/src/test/java/ghidra/app/plugin/core/decompiler/taint/DecompilerTaintTest.java index ece0f501992..8593c00ff9d 100644 --- a/Ghidra/Features/DecompilerDependent/src/test/java/ghidra/app/plugin/core/decompiler/taint/DecompilerTaintTest.java +++ b/Ghidra/Features/DecompilerDependent/src/test/java/ghidra/app/plugin/core/decompiler/taint/DecompilerTaintTest.java @@ -132,7 +132,7 @@ public void tearDown() throws Exception { // NB: This test is VERY slow. I do not recommend running it on a regular basis. // Each of the 22 paired examples above takes close to a minute to run, so... - @Ignore("wip: misc cluster — undocumented bare-ignore #192") + @Ignore("wip: misc cluster — undocumented bare-ignore #68") @Test public void testWinmine() throws Exception { int nf = 0; diff --git a/Ghidra/Features/MicrosoftDmang/src/test/java/mdemangler/MDMangBaseTest.java b/Ghidra/Features/MicrosoftDmang/src/test/java/mdemangler/MDMangBaseTest.java index fdf8092aac4..e6a0b957eeb 100644 --- a/Ghidra/Features/MicrosoftDmang/src/test/java/mdemangler/MDMangBaseTest.java +++ b/Ghidra/Features/MicrosoftDmang/src/test/java/mdemangler/MDMangBaseTest.java @@ -14537,7 +14537,7 @@ public void testCatch_1() throws Exception { } //From gray.cpp - @Ignore("wip: MDMangBaseTest undocumented bare-ignore #187") + @Ignore("wip: MDMangBaseTest undocumented bare-ignore #64") //@Test public void testCatch_2() throws Exception { mangled = "__catch$_main$0"; @@ -14965,7 +14965,7 @@ public void testEnumType() throws Exception { // MSFT CLI symbol from loader. Has anonymous namespace (mangled), a dot delimiter to // represent namespace delimiter, and then a "normal" name (which in this case is a // demangled name with spaces). - @Ignore("wip: MDMangBaseTest undocumented bare-ignore #187") + @Ignore("wip: MDMangBaseTest undocumented bare-ignore #64") public void testDotSeparatedSymbolCliOrig() throws Exception { mangled = "?A0xfedcba98.name0"; msTruth = ""; @@ -14979,7 +14979,7 @@ public void testDotSeparatedSymbolCliOrig() throws Exception { // SymbolUtilities gets a hold of them... this is generally contrary to what we would want, // but if we cannot lay down symbols with spaces, then we need to make sure we can still // operate either way - @Ignore("wip: MDMangBaseTest undocumented bare-ignore #187") + @Ignore("wip: MDMangBaseTest undocumented bare-ignore #64") public void testDotSeparatedSymbolCliWithUnderscores() throws Exception { mangled = "?A0xfedcba98.name0"; msTruth = ""; @@ -14988,7 +14988,7 @@ public void testDotSeparatedSymbolCliWithUnderscores() throws Exception { } // Complete LLVM type symbol with weak prefix and associated suffix - @Ignore("wip: MDMangBaseTest undocumented bare-ignore #187") + @Ignore("wip: MDMangBaseTest undocumented bare-ignore #64") public void testLLVMWeakPrefixDefaultXmmSuffix() throws Exception { mangled = ".weak.??_7name0@@6B@.default.__xmm@aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; //llTruth = ""; // fail @@ -14999,7 +14999,7 @@ public void testLLVMWeakPrefixDefaultXmmSuffix() throws Exception { // Not expected to be a true symbol, but want to understand partial processing with // complete suffix - @Ignore("wip: MDMangBaseTest undocumented bare-ignore #187") + @Ignore("wip: MDMangBaseTest undocumented bare-ignore #64") public void testVftableLLVMWeakPartial1() throws Exception { mangled = "??_7name0@@6B@.default.__xmm@aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; //llTruth = "const name0::`vftable'"; @@ -15010,7 +15010,7 @@ public void testVftableLLVMWeakPartial1() throws Exception { // Not expected to be a true symbol, but want to understand partial processing with // partial suffix - @Ignore("wip: MDMangBaseTest undocumented bare-ignore #187") + @Ignore("wip: MDMangBaseTest undocumented bare-ignore #64") public void testVftableLLVMWeakPartial2() throws Exception { mangled = "??_7name0@@6B@.default"; //llTruth = "const name0::`vftable'"; @@ -15019,7 +15019,7 @@ public void testVftableLLVMWeakPartial2() throws Exception { demangleAndTest(); } - @Ignore("wip: MDMangBaseTest undocumented bare-ignore #187") + @Ignore("wip: MDMangBaseTest undocumented bare-ignore #64") public void testVftable() throws Exception { mangled = "??_7name0@@6B@"; msTruth = "const name0::`vftable'"; @@ -15032,7 +15032,7 @@ public void testVftable() throws Exception { // the suffix "3@" is almost like a backreference tag with the '@' closing the full // qualified name... except... we've seen numbers that are beyond the backref range as // here, but also have seen numbers like 18. - @Ignore("wip: MDMangBaseTest undocumented bare-ignore #187") + @Ignore("wip: MDMangBaseTest undocumented bare-ignore #64") public void testMangledTypeWithNamespaceSuffix() throws Exception { mangled = ".?AT@name0::3@"; msTruth = ""; @@ -15666,7 +15666,7 @@ public void testVCallL816() throws Exception { //===================== //TODO: ignore for now. - @Ignore("wip: MDMangBaseTest undocumented bare-ignore #187") + @Ignore("wip: MDMangBaseTest undocumented bare-ignore #64") public void testFuzzyFit() throws Exception { MDFuzzyFit ff = new MDFuzzyFit(); //from: testWin10_0358058() diff --git a/Ghidra/Framework/Emulation/src/test/java/ghidra/pcode/emu/jit/JitJvmTypeUtilsTest.java b/Ghidra/Framework/Emulation/src/test/java/ghidra/pcode/emu/jit/JitJvmTypeUtilsTest.java index 543272a96ab..1315edc0fd6 100644 --- a/Ghidra/Framework/Emulation/src/test/java/ghidra/pcode/emu/jit/JitJvmTypeUtilsTest.java +++ b/Ghidra/Framework/Emulation/src/test/java/ghidra/pcode/emu/jit/JitJvmTypeUtilsTest.java @@ -27,7 +27,7 @@ import ghidra.pcode.emu.jit.JitPassage.AddrCtx; -@Ignore("manual-tool: tightly bound to Java version #181") +@Ignore("manual-tool: tightly bound to Java version #62") public class JitJvmTypeUtilsTest { public static class HasFieldTypeSignatures { diff --git a/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/app/plugin/assembler/sleigh/dsPIC30FAssemblyTest.java b/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/app/plugin/assembler/sleigh/dsPIC30FAssemblyTest.java index c8d7d2b93f4..7e6bc5d896f 100644 --- a/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/app/plugin/assembler/sleigh/dsPIC30FAssemblyTest.java +++ b/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/app/plugin/assembler/sleigh/dsPIC30FAssemblyTest.java @@ -33,7 +33,7 @@ public void testAssemble_call_W0() { } @Test - @Ignore("blocked-on: dsPIC30F W4 label-vs-register #160") + @Ignore("blocked-on: dsPIC30F W4 label-vs-register #56") public void testAssemble_clr_b_W4() { assertOneCompatRestExact("clr.b W4", "00:42:eb:00", 0x000100); } diff --git a/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/app/plugin/assembler/sleigh/x86AssemblyTest.java b/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/app/plugin/assembler/sleigh/x86AssemblyTest.java index 637ed5e09f6..2eadfeacc91 100644 --- a/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/app/plugin/assembler/sleigh/x86AssemblyTest.java +++ b/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/app/plugin/assembler/sleigh/x86AssemblyTest.java @@ -28,7 +28,7 @@ protected LanguageID getLanguageID() { } @Test - @Ignore("blocked-on: x86 scalar-disasm divergence #159") + @Ignore("blocked-on: x86 scalar-disasm divergence #55") public void testAssemble_ADD_ECX_mEBX_n0x8m() { try { assertOneCompatRestExact("ADD ECX,dword ptr [EDX + -0x8]", "03:4a:f8"); diff --git a/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/app/util/SymbolPathParserTest.java b/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/app/util/SymbolPathParserTest.java index 90535db7ecc..39ca949bc8d 100644 --- a/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/app/util/SymbolPathParserTest.java +++ b/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/app/util/SymbolPathParserTest.java @@ -91,7 +91,7 @@ public void testCliPinptrMSFTVersion_NaiveProcessing() { } // Testing for detailed processing. Same as above test, but expecting better results. - @Ignore("wip: SymbolPathParser detailed-processing better-results #161") + @Ignore("wip: SymbolPathParser detailed-processing better-results #57") public void testCliPinptrMSFTVersion_DetailedProcessing() { List list = SymbolPathParser.parse("namespace::ta"); diff --git a/Ghidra/Processors/Hexagon/src/test/java/ghidra/program/emulation/HexagonPcodeUseropLibraryTest.java b/Ghidra/Processors/Hexagon/src/test/java/ghidra/program/emulation/HexagonPcodeUseropLibraryTest.java index b1cb86dc914..3e3be351fd5 100644 --- a/Ghidra/Processors/Hexagon/src/test/java/ghidra/program/emulation/HexagonPcodeUseropLibraryTest.java +++ b/Ghidra/Processors/Hexagon/src/test/java/ghidra/program/emulation/HexagonPcodeUseropLibraryTest.java @@ -173,25 +173,25 @@ public void testDfmpyhhOnes() throws Exception { } @Test - @Ignore("wip: HexagonPcodeUseropLibraryTest undocumented bare-ignore #188") + @Ignore("wip: HexagonPcodeUseropLibraryTest undocumented bare-ignore #65") public void testDfmpyhhZeroAnyQNan() throws Exception { runTestDfmpyhh(DF_HEX_NAN, DF_ZERO, DF_ANY, DF_QNAN); } @Test - @Ignore("wip: HexagonPcodeUseropLibraryTest undocumented bare-ignore #188") + @Ignore("wip: HexagonPcodeUseropLibraryTest undocumented bare-ignore #65") public void testDfmpyhhZeroAnySNan() throws Exception { runTestDfmpyhh(DF_HEX_NAN, DF_ZERO, DF_ANY, DF_SNAN); } @Test - @Ignore("wip: HexagonPcodeUseropLibraryTest undocumented bare-ignore #188") + @Ignore("wip: HexagonPcodeUseropLibraryTest undocumented bare-ignore #65") public void testDfmpyhhZeroQNanSNan() throws Exception { runTestDfmpyhh(DF_HEX_NAN, DF_ZERO, DF_QNAN, DF_SNAN); } @Test - @Ignore("wip: HexagonPcodeUseropLibraryTest undocumented bare-ignore #188") + @Ignore("wip: HexagonPcodeUseropLibraryTest undocumented bare-ignore #65") public void testDfmpyhhZeroSNanQNan() throws Exception { runTestDfmpyhh(DF_HEX_NAN, DF_ZERO, DF_SNAN, DF_QNAN); } diff --git a/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/java/rmi/JavaCommandsTest.java b/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/java/rmi/JavaCommandsTest.java index 771610429bd..859464d93c0 100644 --- a/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/java/rmi/JavaCommandsTest.java +++ b/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/java/rmi/JavaCommandsTest.java @@ -49,7 +49,7 @@ import ghidra.trace.model.time.TraceSnapshot; import ghidra.util.Msg; -@Ignore("wip: Debugger RMI integration tests — undocumented bare-ignore #179") +@Ignore("wip: Debugger RMI integration tests — undocumented bare-ignore #60") public class JavaCommandsTest extends AbstractJavaTraceRmiTest { public static final String HWSETUP = """ diff --git a/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/java/rmi/JavaHooksTest.java b/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/java/rmi/JavaHooksTest.java index 1808895540d..0d37c861e96 100644 --- a/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/java/rmi/JavaHooksTest.java +++ b/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/java/rmi/JavaHooksTest.java @@ -33,7 +33,7 @@ import ghidra.trace.model.target.TraceObject; import ghidra.trace.model.target.TraceObjectValue; -@Ignore("wip: Debugger RMI integration tests — undocumented bare-ignore #179") +@Ignore("wip: Debugger RMI integration tests — undocumented bare-ignore #60") public class JavaHooksTest extends AbstractJavaTraceRmiTest { @Test diff --git a/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/java/rmi/JavaMethodsTest.java b/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/java/rmi/JavaMethodsTest.java index 5fd21cd536c..91cfdecd98e 100644 --- a/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/java/rmi/JavaMethodsTest.java +++ b/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/java/rmi/JavaMethodsTest.java @@ -32,7 +32,7 @@ import ghidra.trace.model.target.TraceObject; import ghidra.trace.model.target.TraceObjectValue; -@Ignore("wip: Debugger RMI integration tests — undocumented bare-ignore #179") +@Ignore("wip: Debugger RMI integration tests — undocumented bare-ignore #60") public class JavaMethodsTest extends AbstractJavaTraceRmiTest { /** diff --git a/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/lldb/rmi/LldbCommandsTest.java b/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/lldb/rmi/LldbCommandsTest.java index d43f15a844b..7c189f34939 100644 --- a/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/lldb/rmi/LldbCommandsTest.java +++ b/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/lldb/rmi/LldbCommandsTest.java @@ -698,7 +698,7 @@ public void testSetValueLong() throws Exception { } @Test - @Ignore("blocked-on: LLDB EXC_BAD_ACCESS on string allocation #176") + @Ignore("blocked-on: LLDB EXC_BAD_ACCESS on string allocation #58") public void testSetValueString() throws Exception { assertEquals("\"Hello World!\"", runTestSetValue("", """ '"Hello World!"'\ @@ -706,7 +706,7 @@ public void testSetValueString() throws Exception { } @Test - @Ignore("blocked-on: LLDB EXC_BAD_ACCESS on string allocation #176") + @Ignore("blocked-on: LLDB EXC_BAD_ACCESS on string allocation #58") public void testSetValueStringWide() throws Exception { assertEquals("L\"Hello World!\"", runTestSetValue("", """ 'L"Hello World!"'\ @@ -714,14 +714,14 @@ public void testSetValueStringWide() throws Exception { } @Test - @Ignore("blocked-on: LLDB temp var $x #177") + @Ignore("blocked-on: LLDB temp var $x #59") public void testSetValueBoolArr() throws Exception { assertArrayEquals(new boolean[] { true, false }, runTestSetValue("expr bool $x[2]={ true, false }", "$x", "")); } @Test - @Ignore("blocked-on: LLDB EXC_BAD_ACCESS on string allocation #176") + @Ignore("blocked-on: LLDB EXC_BAD_ACCESS on string allocation #58") public void testSetValueByteArrUsingString() throws Exception { // Because explicit array type is chosen, we get null terminator assertArrayEquals(new byte[] { 'H', 0, 'W', 0 }, runTestSetValue("", """ @@ -730,14 +730,14 @@ public void testSetValueByteArrUsingString() throws Exception { } @Test - @Ignore("blocked-on: LLDB temp var $x #177") + @Ignore("blocked-on: LLDB temp var $x #59") public void testSetValueByteArrUsingArray() throws Exception { assertArrayEquals(new byte[] { 'H', 0, 'W' }, runTestSetValue("expr char $x[]={'H', 0, 'W'}", "$x", "BYTE_ARR")); } @Test - @Ignore("blocked-on: LLDB EXC_BAD_ACCESS on string allocation #176") + @Ignore("blocked-on: LLDB EXC_BAD_ACCESS on string allocation #58") public void testSetValueCharArrUsingString() throws Exception { // Because explicit array type is chosen, we get null terminator assertArrayEquals(new char[] { 'H', 0, 'W', 0 }, runTestSetValue("", """ @@ -746,14 +746,14 @@ public void testSetValueCharArrUsingString() throws Exception { } @Test - @Ignore("blocked-on: LLDB temp var $x #177") + @Ignore("blocked-on: LLDB temp var $x #59") public void testSetValueCharArrUsingArray() throws Exception { assertArrayEquals(new char[] { 'H', 0, 'W' }, runTestSetValue("expr char $x[]={'H', 0, 'W'}", "$x", "CHAR_ARR")); } @Test - @Ignore("blocked-on: LLDB temp var $x #177") + @Ignore("blocked-on: LLDB temp var $x #59") public void testSetValueShortArrUsingString() throws Exception { // Because explicit array type is chosen, we get null terminator assertArrayEquals(new short[] { 'H', 0, 'W', 0 }, @@ -761,14 +761,14 @@ public void testSetValueShortArrUsingString() throws Exception { } @Test - @Ignore("blocked-on: LLDB temp var $x #177") + @Ignore("blocked-on: LLDB temp var $x #59") public void testSetValueShortArrUsingArray() throws Exception { assertArrayEquals(new short[] { 'H', 0, 'W' }, runTestSetValue("expr short $x[]={'H', 0, 'W'}", "$x", "SHORT_ARR")); } @Test - @Ignore("blocked-on: LLDB temp var $x #177") + @Ignore("blocked-on: LLDB temp var $x #59") public void testSetValueIntArrayUsingMixedArray() throws Exception { // Because explicit array type is chosen, we get null terminator assertArrayEquals(new int[] { 'H', 0, 'W' }, @@ -776,14 +776,14 @@ public void testSetValueIntArrayUsingMixedArray() throws Exception { } @Test - @Ignore("blocked-on: LLDB temp var $x #177") + @Ignore("blocked-on: LLDB temp var $x #59") public void testSetValueIntArrUsingArray() throws Exception { assertArrayEquals(new int[] { 1, 2, 3, 4 }, runTestSetValue("expr int $x[]={1,2,3,4}", "$x", "")); } @Test - @Ignore("blocked-on: LLDB temp var $x #177") + @Ignore("blocked-on: LLDB temp var $x #59") public void testSetValueLongArr() throws Exception { assertArrayEquals(new long[] { 1, 2, 3, 4 }, runTestSetValue("expr long long $x[]={1LL,2LL,3LL,4LL}", "$x", "")); diff --git a/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/lldb/rmi/LldbConnectorsTest.java b/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/lldb/rmi/LldbConnectorsTest.java index e3f38a26e9f..e9a547644b6 100644 --- a/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/lldb/rmi/LldbConnectorsTest.java +++ b/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/lldb/rmi/LldbConnectorsTest.java @@ -75,7 +75,7 @@ private String sshLauncherTitle() { * @throws Exception because */ @Test - @Ignore("wip: LldbConnectorsTest TODO #180") + @Ignore("wip: LldbConnectorsTest TODO #61") public void testLocalLldbSetup() throws Exception { pipOob("protobuf==3.19.0"); try (LaunchResult result = doLaunch("lldb", Map.of("arg:1", chooseImage()))) { @@ -96,7 +96,7 @@ public void testLocalLldbWithImage() throws Exception { } @Test - @Ignore("wip: LldbConnectorsTest TODO #180") + @Ignore("wip: LldbConnectorsTest TODO #61") public void testLldbQemuUser() throws Exception { assumeFalse(isWindows()); PathIsFile image = createArmElfImage(); @@ -113,7 +113,7 @@ public void testLldbQemuUser() throws Exception { } @Test - @Ignore("wip: LldbConnectorsTest TODO #180") + @Ignore("wip: LldbConnectorsTest TODO #61") public void testLldbQemuSys() throws Exception { autoMappingService .setAutoMapSpec(AutoMapSpec.fromConfigName(BySectionAutoMapSpec.CONFIG_NAME)); @@ -163,7 +163,7 @@ public void testLldbViaSsh() throws Exception { } @Test - @Ignore("wip: LldbConnectorsTest TODO #180") + @Ignore("wip: LldbConnectorsTest TODO #61") public void testLldbViaSshSetupGhidraLldb() throws Exception { try (LaunchResult result = doLaunch(sshLauncherTitle(), Map.ofEntries( Map.entry("arg:1", chooseImageToString()), @@ -180,7 +180,7 @@ public void testLldbViaSshSetupGhidraLldb() throws Exception { } @Test - @Ignore("wip: LldbConnectorsTest TODO #180") + @Ignore("wip: LldbConnectorsTest TODO #61") public void testLldbViaSshSetupProtobuf() throws Exception { pip("ghidralldb==%s".formatted(Application.getApplicationVersion())); // Overwrite with an incompatible version we don't include diff --git a/Ghidra/Test/DebuggerIntegrationTest/src/test/java/ghidra/app/plugin/core/debug/gui/register/DebuggerTraceRegistersProviderTest.java b/Ghidra/Test/DebuggerIntegrationTest/src/test/java/ghidra/app/plugin/core/debug/gui/register/DebuggerTraceRegistersProviderTest.java index f86c34f1056..a55bd0ea211 100644 --- a/Ghidra/Test/DebuggerIntegrationTest/src/test/java/ghidra/app/plugin/core/debug/gui/register/DebuggerTraceRegistersProviderTest.java +++ b/Ghidra/Test/DebuggerIntegrationTest/src/test/java/ghidra/app/plugin/core/debug/gui/register/DebuggerTraceRegistersProviderTest.java @@ -429,7 +429,7 @@ public void testActivateAdvanceThenShortenTypeLifespan() throws Exception { } @Test - @Ignore("blocked-on: DBTrace type-replacement coverage #191") + @Ignore("blocked-on: DBTrace type-replacement coverage #67") public void testActivateThenReplaceType() throws Exception { TODO(); // NOTE: could get complicated if size changes diff --git a/Ghidra/Test/DebuggerIntegrationTest/src/test/java/ghidra/app/plugin/core/debug/gui/tracermi/launcher/TraceRmiLaunchDialogTest.java b/Ghidra/Test/DebuggerIntegrationTest/src/test/java/ghidra/app/plugin/core/debug/gui/tracermi/launcher/TraceRmiLaunchDialogTest.java index 0c32d9a1eaa..13807705e99 100644 --- a/Ghidra/Test/DebuggerIntegrationTest/src/test/java/ghidra/app/plugin/core/debug/gui/tracermi/launcher/TraceRmiLaunchDialogTest.java +++ b/Ghidra/Test/DebuggerIntegrationTest/src/test/java/ghidra/app/plugin/core/debug/gui/tracermi/launcher/TraceRmiLaunchDialogTest.java @@ -157,7 +157,7 @@ public void testIntSaveHexValue() throws Throwable { } @Test - @Ignore("wip: Debugger plugin cluster #191") + @Ignore("wip: Debugger plugin cluster #67") public void testIntLoadHexValue() throws Throwable { /** * TODO: This is a bit out of order. However, the dialog cannot load/decode from the state diff --git a/Ghidra/Test/IntegrationTest/src/test.slow/java/ghidra/pcode/emu/jit/gen/AbstractToyJitCodeGeneratorTest.java b/Ghidra/Test/IntegrationTest/src/test.slow/java/ghidra/pcode/emu/jit/gen/AbstractToyJitCodeGeneratorTest.java index 7b3388bc0f4..e459c65ecd2 100644 --- a/Ghidra/Test/IntegrationTest/src/test.slow/java/ghidra/pcode/emu/jit/gen/AbstractToyJitCodeGeneratorTest.java +++ b/Ghidra/Test/IntegrationTest/src/test.slow/java/ghidra/pcode/emu/jit/gen/AbstractToyJitCodeGeneratorTest.java @@ -218,7 +218,7 @@ public void testReadMemDirectWithPartsSpanningBlock() throws Exception { } @Test - @Ignore("wip: AbstractToyJitCodeGenerator undefined-case #183") + @Ignore("wip: AbstractToyJitCodeGenerator undefined-case #63") public void testReadMemDirectWithSpanWrapSpace() throws Exception { long offset = -2; Translation tr = translateSleigh(getLanguageID(), """ @@ -246,7 +246,7 @@ public void testWriteMemDirectWithPartsSpanningBlock() throws Exception { } @Test - @Ignore("wip: AbstractToyJitCodeGenerator undefined-case #183") + @Ignore("wip: AbstractToyJitCodeGenerator undefined-case #63") public void testWriteMemDirectWithSpanWrapSpace() throws Exception { long offset = -2; Translation tr = translateSleigh(getLanguageID(), """ diff --git a/docs/testing/ignore-test-inventory.md b/docs/testing/ignore-test-inventory.md index 57259289552..5b27dff135b 100644 --- a/docs/testing/ignore-test-inventory.md +++ b/docs/testing/ignore-test-inventory.md @@ -10,11 +10,11 @@ All six tests called out by name in the 2026-05-21 principal-architect audit are | File | Current `@Ignore` arg | Status | |---|---|---| -| `Ghidra/Framework/SoftwareModeling/.../sleigh/x86AssemblyTest.java` | `@Ignore("blocked-on: x86 scalar-disasm divergence #159")` | Categorised. Fix-or-delete pending owner. | -| `Ghidra/Framework/SoftwareModeling/.../sleigh/dsPIC30FAssemblyTest.java` | `@Ignore("blocked-on: dsPIC30F W4 label-vs-register #160")` | Categorised. Fix-or-delete pending owner. | +| `Ghidra/Framework/SoftwareModeling/.../sleigh/x86AssemblyTest.java` | `@Ignore("blocked-on: x86 scalar-disasm divergence #55")` | Categorised. Fix-or-delete pending owner. | +| `Ghidra/Framework/SoftwareModeling/.../sleigh/dsPIC30FAssemblyTest.java` | `@Ignore("blocked-on: dsPIC30F W4 label-vs-register #56")` | Categorised. Fix-or-delete pending owner. | | `Ghidra/Framework/SoftwareModeling/.../sleigh/ARMAssemblyTest.java` | *(none)* | Dead `//@Ignore` removed; the test currently runs. | | `Ghidra/Framework/SoftwareModeling/.../sleigh/x64AssemblyTest.java` | *(none)* | Dead `//@Ignore` removed; the test currently runs. | -| `Ghidra/Framework/SoftwareModeling/.../SymbolPathParserTest.java` | `@Ignore("wip: SymbolPathParser detailed-processing better-results #161")` | Categorised. Needs an owner to define "better results." | +| `Ghidra/Framework/SoftwareModeling/.../SymbolPathParserTest.java` | `@Ignore("wip: SymbolPathParser detailed-processing better-results #57")` | Categorised. Needs an owner to define "better results." | | `Ghidra/Framework/SoftwareModeling/.../charset/CharsetInfoManagerTest.java` | *(method-level annotation removed with the method)* | `generateCharsetInfoFile` codegen helper deleted from the test class; the remaining `testCharsetsArePresent` regression test still runs. | ## Active-`@Ignore` census @@ -29,7 +29,7 @@ Live count from `grep -rn '@Ignore("' Ghidra --include='*.java' | grep -v Repeat | `flaky` | 0 | | **Total properly-categorized** | **51** | -The `manual-tool` count dropped from 10 → 8 and `flaky` from 3 → 0 in [PR #28-6a](#sequencing): five method-level `@Ignore` lines were removed because their enclosing classes are already `@Ignore`'d at class level (two in `JdiExperimentsTest`/`ProjectExperimentsTest`, three in `JavaMethodsTest`). The method annotations were dead — the class-level annotation skipped them first. Issue references (#178, #190, #193) remain valid; if the class-level ignores are ever lifted, those issues can be re-attached at the method level. +The `manual-tool` count dropped from 10 → 8 and `flaky` from 3 → 0 in [PR #28-6a](#sequencing): five method-level `@Ignore` lines were removed because their enclosing classes are already `@Ignore`'d at class level (two in `JdiExperimentsTest`/`ProjectExperimentsTest`, three in `JavaMethodsTest`). The method annotations were dead — the class-level annotation skipped them first. The historical issue references those collapsed annotations carried (#178, #190, #193 on the pre-deletion repo) were destroyed in the 2026-05-24 incident along with the other 18; if the class-level ignores are ever lifted, file new tracking issues at the time of re-attachment. `RepeatedStatement.java` is excluded — its `@Ignore` reference is part of a test-rule mechanism, not test debt (also listed in `ignoreAudit.gradle`'s `EXCLUDED_FILES`). @@ -42,11 +42,11 @@ After [PR #295](https://github.com/CryptoJones/GayHydra/pull/295) the in-tree co | #28-1 | Policy doc (`IGNORE_TEST_POLICY.md`) | shipped in v26.1 | | #28-2 | This inventory | shipped | | #28-3 | `gradle ignoreAudit` task + CI wiring | shipped | -| #28-4 | Tracking issues filed for the six | shipped (#159–#162, #178, etc.) | +| #28-4 | Tracking issues filed for the six | shipped pre-deletion (originally #159–#162, #178, etc.); re-filed on the new repo as #55–#69 (post-deletion remap, see #28-6c row + this PR for the mapping) | | #28-5 | Dead commented-out `//@Ignore` cleanup (7 lines) | shipped ([PR #295](https://github.com/CryptoJones/GayHydra/pull/295)) | | #28-6a | Redundant inner `@Ignore` cleanup (5 lines inside already-`@Ignore`'d classes) | shipped | | #28-6b | `ignore:30d` / `ignore:90d` / `ignore:1y` deadline labels declared in `.github/labels.yml` | shipped | -| #28-6c | Deadline labels (`ignore:30d` / `ignore:90d` / `ignore:1y`) declared in `.github/labels.yml` and created in the live GitHub repo. **Originally** applied to 18 tracking issues (#159, #160, #161, #162, #176, #177, #179, #180, #181, #182, #183, #187, #188, #189, #190, #191, #192, #193) referenced by `@Ignore` annotations in-tree. **Artifact loss 2026-05-24:** those 18 issues were destroyed with the prior repo (see [Apologies.md](../../Apologies.md) entry 2026-05-24). The deadline labels themselves were recreated on the new repo and currently exist with zero applications. The in-tree `@Ignore` annotations still reference the dead `#N` numbers; per the Apologies entry no automated backfill is planned — re-file the 18 tracking issues opportunistically as each annotation is touched and update its `#N` to the new repo's issue number. | shipped pre-deletion; artifacts destroyed; labels-recreated, issues not | +| #28-6c | Deadline labels (`ignore:30d` / `ignore:90d` / `ignore:1y`) declared in `.github/labels.yml` and created in the live GitHub repo. **Originally** applied to 18 tracking issues (#159, #160, #161, #162, #176, #177, #179, #180, #181, #182, #183, #187, #188, #189, #190, #191, #192, #193) referenced by `@Ignore` annotations in-tree. **Artifact loss 2026-05-24:** those 18 issues were destroyed with the prior repo (see [Apologies.md](../../Apologies.md) entry 2026-05-24). **Re-filed 2026-05-26:** the 15 issues still referenced by in-tree `@Ignore` annotations have been re-created on the new repo with the `ignore:1y` deadline label applied. Mapping (old → new): #159→#55, #160→#56, #161→#57, #176→#58, #177→#59, #179→#60, #180→#61, #181→#62, #183→#63, #187→#64, #188→#65, #189→#66, #191→#67, #192→#68, #193→#69. The 3 issues that the inventory previously listed but were no longer referenced in-tree (#162 — ARM/x64 dead `//@Ignore`s already removed; #178, #190 — JavaMethodsTest / ProjectExperimentsTest collapsed via #28-6a; #182 — was never observed in any current annotation) were not re-filed. | shipped (remap complete) | | #28-6d+ | Remaining fix-or-delete sweep across `manual-tool`, `blocked-on`, `wip` buckets — author-declared-not-a-regression-test sub-bucket cleared (PRs #26–#34, #36–#41 deleted 17 such sites; counts now wip 31, blocked-on 19, manual-tool 1) | open (residual = real tests blocked-on upstream/cluster work) | ## #28-6+ sweep heuristics @@ -54,9 +54,9 @@ After [PR #295](https://github.com/CryptoJones/GayHydra/pull/295) the in-tree co Suggested order for tackling the remaining 51 sites: 1. **`manual-tool` (1 site)** — `JitJvmTypeUtilsTest` is the only remaining manual-tool entry; it's "real test, ignored for infrastructure reason" (Java-version-bound) and needs an infra fix or move to `src/main/test-tools/` rather than deletion. The "author-declared not-a-regression-test" sub-bucket (experiment notebooks, codegen tools, developer-desk perf scratchpads, empty `TODO()`-throw stubs, JFrame UI demos, manual harnesses, commented-body shells) is now empty across both `manual-tool` and `wip` buckets. Deleted (in order of PR): `JitMpIntPerformanceExperiment`, `TraceRmiPerformanceTest`, `ProjectExperimentsTest`, `JdiExperimentsTest`, `CharsetInfoManagerTest.generateCharsetInfoFile`, `DebuggerMemoryBytesProviderTest.testPerformanceManuallyWithManyManySnaps`, `AbstractDBTraceMemoryManagerMemoryTest.testReplicateClassCastExceptionScenario`, `DebuggerOpinionsTest`, `DBTraceRegisterContextManagerTest`, `DemoFieldsTest`, `DebuggerManualTest`, `experiments/ToArrayTest`, `TenetLoaderTest.testManual`, `AbstractToyJitCodeGeneratorTest.testComputedOffsetsInRegisterSpace` + `.testUninitializedVsInitializedReads`, `CppCompositeTypeTest.testJ5_32_syntactic_layout`, `DBTraceCodeUnitTest.testFigureOutAssembly`, `DBTraceProgramViewListingTest.testGetUndefinedRanges`, `DBTraceAddressSnapRangePropertyMapSpaceTest.testRemove`, `DbgEngHooksTest.testOnSyscallMemory`, `GdbHooksTest.testOnSyscallMemory`. -2. **`flaky` (0 sites)** — historical bucket; all three former sites in `JavaMethodsTest` (issue #178) were collapsed in [PR #28-6a](#sequencing) when the enclosing class's class-level `@Ignore` was recognised as already covering them. +2. **`flaky` (0 sites)** — historical bucket; all three former sites in `JavaMethodsTest` (originally issue #178, destroyed in 2026-05-24 deletion, not re-filed since the annotation was collapsed in [PR #28-6a](#sequencing)) were collapsed when the enclosing class's class-level `@Ignore` was recognised as already covering them. 3. **`blocked-on` (19 sites)** — the dependent issue list is the next sweep target. Closing the upstream blocker for any of these unblocks the test. -4. **`wip` (31 sites)** — largest residual bucket. Composition: Debugger RMI integration work (3 class-level `JavaHooksTest` / `JavaMethodsTest` / `JavaCommandsTest`; assorted method-level for #180/#191), real-but-unfinished demangler + parser corpus (`MDMangBaseTest` ×9 for #187, `SymbolPathParserTest` ×1 for #161), real-but-unfinished DFP NaN cases (`HexagonPcodeUseropLibraryTest` ×4 for #188), and other documented future-aspiration tests (`DecompilerTaintTest`, `HTMLDataTypeRepresentationTest`, etc.). All have real bodies; none are author-declared-not-a-regression-test. Sweep last; many will resolve as the Debugger RMI / demangler / emulation work matures. +4. **`wip` (31 sites)** — largest residual bucket. Composition: Debugger RMI integration work (3 class-level `JavaHooksTest` / `JavaMethodsTest` / `JavaCommandsTest`; assorted method-level for #61/#67), real-but-unfinished demangler + parser corpus (`MDMangBaseTest` ×9 for #64, `SymbolPathParserTest` ×1 for #57), real-but-unfinished DFP NaN cases (`HexagonPcodeUseropLibraryTest` ×4 for #65), and other documented future-aspiration tests (`DecompilerTaintTest`, `HTMLDataTypeRepresentationTest`, etc.). All have real bodies; none are author-declared-not-a-regression-test. Sweep last; many will resolve as the Debugger RMI / demangler / emulation work matures. ---