{ "schema_version": 1, "case_id": "source-division-metamorphic", "case_type": "metamorphic", "origin": "metamorphic", "backend": "source", "name": "source_division_metamorphic", "description": "Source finding multisets must transform predictably under identifier renaming, harmless insertion, equivalent guards, TU reordering, and process fanout.", "detectors": "div-by-zero", "standard": "c++20", "expect": { "max_summary_backed": 0, "max_cross_tu_corroboration": 0 }, "relation": { "kind": "finding-multiset-invariance", "comparisons": [ { "name": "alpha-rename-and-harmless-insertion", "baseline": { "sources": ["../../fixtures/metamorphic/division_baseline.cpp"], "processes": 1 }, "transformed": { "sources": ["../../fixtures/metamorphic/division_renamed.cpp"], "processes": 1 }, "mapping": { "uri_map": { "tests/fixtures/metamorphic/division_baseline.cpp": "tests/fixtures/metamorphic/division_renamed.cpp" }, "function_map": { "fold_metamorphic::divide": "fold_metamorphic::quotient" }, "line_delta": { "tests/fixtures/metamorphic/division_renamed.cpp": 3 } } }, { "name": "equivalent-guard-rewrite", "baseline": { "sources": ["../../fixtures/metamorphic/guard_baseline.cpp"], "processes": 1 }, "transformed": { "sources": ["../../fixtures/metamorphic/guard_rewritten.cpp"], "processes": 1 }, "mapping": { "uri_map": { "tests/fixtures/metamorphic/guard_baseline.cpp": "tests/fixtures/metamorphic/guard_rewritten.cpp" }, "function_map": { "fold_metamorphic::guardedDivide": "fold_metamorphic::guardedQuotient" } } }, { "name": "tu-order-and-process-fanout", "baseline": { "sources": [ "../../fixtures/metamorphic/division_baseline.cpp", "../../fixtures/metamorphic/guard_baseline.cpp" ], "processes": 1 }, "transformed": { "sources": [ "../../fixtures/metamorphic/guard_baseline.cpp", "../../fixtures/metamorphic/division_baseline.cpp" ], "processes": 2 }, "mapping": {} } ] } }