{"abstract":"Module names replace source directory locations.","category":"Packaging","checks":7,"contract":"Resolve declared modules to their source directories, reject missing sources, reject duplicate module names pointing elsewhere, exclude disabled declarations, and keep module names sorted. Identical repeats are allowed.","evaluation_group":"xt-editable-install","failed_approach":"The attempted repair substitutes result[directory] = module. Fixture 2 still yields [('src/a', 'a')] instead of [('a', 'src/a')].","family":"xt-editable-install-module-directory","id":"FA-10046","implementations":{"attempt":{"sha256":"f3517d23e1cc18e0c6a556f2fedf9015ee2322ecdc9ad6843fecf47f08e7b393","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(declarations, available):\n    result = {}\n    for module, directory, enabled in declarations:\n        if not enabled: continue\n        if directory not in available: return 'missing-source'\n        if module in result and result[module] != directory: return 'conflict'\n        result[directory] = module\n    return sorted(result.items())\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('fixture 1', solve([], []), [])\ncheck('fixture 2', solve([('a', 'src/a', True)], ['src/a']), [('a', 'src/a')])\ncheck('fixture 3', solve([('a', 'src/a', False)], []), [])\ncheck('fixture 4', solve([('a', 'src/a', True)], []), 'missing-source')\ncheck('fixture 5', solve([('a', 'src/a', True), ('a', 'lib/a', True)], ['src/a', 'lib/a']), 'conflict')\ncheck('fixture 6', solve([('a', 'src/a', True), ('a', 'src/a', True)], ['src/a']), [('a', 'src/a')])\ncheck('fixture 7', solve([('z', 'src/z', True), ('a', 'src/a', True)], ['src/a', 'src/z']), [('a', 'src/a'), ('z', 'src/z')])\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"dcc9368b7e54e8ea0dda72827b81047875715ebc5910c75e517d2ec9b97389b0","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(declarations, available):\n    result = {}\n    for module, directory, enabled in declarations:\n        if not enabled: continue\n        if directory not in available: return 'missing-source'\n        if module in result and result[module] != directory: return 'conflict'\n        result[module] = module\n    return sorted(result.items())\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('fixture 1', solve([], []), [])\ncheck('fixture 2', solve([('a', 'src/a', True)], ['src/a']), [('a', 'src/a')])\ncheck('fixture 3', solve([('a', 'src/a', False)], []), [])\ncheck('fixture 4', solve([('a', 'src/a', True)], []), 'missing-source')\ncheck('fixture 5', solve([('a', 'src/a', True), ('a', 'lib/a', True)], ['src/a', 'lib/a']), 'conflict')\ncheck('fixture 6', solve([('a', 'src/a', True), ('a', 'src/a', True)], ['src/a']), [('a', 'src/a')])\ncheck('fixture 7', solve([('z', 'src/z', True), ('a', 'src/a', True)], ['src/a', 'src/z']), [('a', 'src/a'), ('z', 'src/z')])\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"55a2bd8e53b742cf8ec0aa1912ceda9be623f41c54473bced84ba9d67c9b5326","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(declarations, available):\n    result = {}\n    for module, directory, enabled in declarations:\n        if not enabled: continue\n        if directory not in available: return 'missing-source'\n        if module in result and result[module] != directory: return 'conflict'\n        result[module] = directory\n    return sorted(result.items())\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('fixture 1', solve([], []), [])\ncheck('fixture 2', solve([('a', 'src/a', True)], ['src/a']), [('a', 'src/a')])\ncheck('fixture 3', solve([('a', 'src/a', False)], []), [])\ncheck('fixture 4', solve([('a', 'src/a', True)], []), 'missing-source')\ncheck('fixture 5', solve([('a', 'src/a', True), ('a', 'lib/a', True)], ['src/a', 'lib/a']), 'conflict')\ncheck('fixture 6', solve([('a', 'src/a', True), ('a', 'src/a', True)], ['src/a']), [('a', 'src/a')])\ncheck('fixture 7', solve([('z', 'src/z', True), ('a', 'src/a', True)], ['src/a', 'src/z']), [('a', 'src/a'), ('z', 'src/z')])\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":" This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"xt-editable-install-module-directory","generated_at":"2026-09-29T14:38:35.383107+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"An offline model of editable installation mapping, suitable for testing build and release tooling without external services.","repair":"Map the declared module name to its source directory.","root_cause":"The implementation substitutes result[module] = module for result[module] = directory, so module names replace source directory locations.","sha256":"5b95c4ddb90553ae8bdeb9e51f9d04862ab8e93fbcc10b6a37db96007dfae2a5","title":"Editable installation mapping: Module names replace source directory locations · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":37.713,"exit_code":1,"observations":[{"actual":[],"check":"fixture 1","expected":[],"passed":true},{"actual":[["src/a","a"]],"check":"fixture 2","expected":[["a","src/a"]],"passed":false},{"actual":[],"check":"fixture 3","expected":[],"passed":true},{"actual":"missing-source","check":"fixture 4","expected":"missing-source","passed":true},{"actual":[["lib/a","a"],["src/a","a"]],"check":"fixture 5","expected":"conflict","passed":false},{"actual":[["src/a","a"]],"check":"fixture 6","expected":[["a","src/a"]],"passed":false},{"actual":[["src/a","a"],["src/z","z"]],"check":"fixture 7","expected":[["a","src/a"],["z","src/z"]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"fixture 1\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"fixture 2\", \"actual\": [[\"src/a\", \"a\"]], \"expected\": [[\"a\", \"src/a\"]], \"passed\": false}, {\"check\": \"fixture 3\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"fixture 4\", \"actual\": \"missing-source\", \"expected\": \"missing-source\", \"passed\": true}, {\"check\": \"fixture 5\", \"actual\": [[\"lib/a\", \"a\"], [\"src/a\", \"a\"]], \"expected\": \"conflict\", \"passed\": false}, {\"check\": \"fixture 6\", \"actual\": [[\"src/a\", \"a\"]], \"expected\": [[\"a\", \"src/a\"]], \"passed\": false}, {\"check\": \"fixture 7\", \"actual\": [[\"src/a\", \"a\"], [\"src/z\", \"z\"]], \"expected\": [[\"a\", \"src/a\"], [\"z\", \"src/z\"]], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":38.404,"exit_code":1,"observations":[{"actual":[],"check":"fixture 1","expected":[],"passed":true},{"actual":[["a","a"]],"check":"fixture 2","expected":[["a","src/a"]],"passed":false},{"actual":[],"check":"fixture 3","expected":[],"passed":true},{"actual":"missing-source","check":"fixture 4","expected":"missing-source","passed":true},{"actual":"conflict","check":"fixture 5","expected":"conflict","passed":true},{"actual":"conflict","check":"fixture 6","expected":[["a","src/a"]],"passed":false},{"actual":[["a","a"],["z","z"]],"check":"fixture 7","expected":[["a","src/a"],["z","src/z"]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"fixture 1\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"fixture 2\", \"actual\": [[\"a\", \"a\"]], \"expected\": [[\"a\", \"src/a\"]], \"passed\": false}, {\"check\": \"fixture 3\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"fixture 4\", \"actual\": \"missing-source\", \"expected\": \"missing-source\", \"passed\": true}, {\"check\": \"fixture 5\", \"actual\": \"conflict\", \"expected\": \"conflict\", \"passed\": true}, {\"check\": \"fixture 6\", \"actual\": \"conflict\", \"expected\": [[\"a\", \"src/a\"]], \"passed\": false}, {\"check\": \"fixture 7\", \"actual\": [[\"a\", \"a\"], [\"z\", \"z\"]], \"expected\": [[\"a\", \"src/a\"], [\"z\", \"src/z\"]], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.378,"exit_code":0,"observations":[{"actual":[],"check":"fixture 1","expected":[],"passed":true},{"actual":[["a","src/a"]],"check":"fixture 2","expected":[["a","src/a"]],"passed":true},{"actual":[],"check":"fixture 3","expected":[],"passed":true},{"actual":"missing-source","check":"fixture 4","expected":"missing-source","passed":true},{"actual":"conflict","check":"fixture 5","expected":"conflict","passed":true},{"actual":[["a","src/a"]],"check":"fixture 6","expected":[["a","src/a"]],"passed":true},{"actual":[["a","src/a"],["z","src/z"]],"check":"fixture 7","expected":[["a","src/a"],["z","src/z"]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"fixture 1\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"fixture 2\", \"actual\": [[\"a\", \"src/a\"]], \"expected\": [[\"a\", \"src/a\"]], \"passed\": true}, {\"check\": \"fixture 3\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"fixture 4\", \"actual\": \"missing-source\", \"expected\": \"missing-source\", \"passed\": true}, {\"check\": \"fixture 5\", \"actual\": \"conflict\", \"expected\": \"conflict\", \"passed\": true}, {\"check\": \"fixture 6\", \"actual\": [[\"a\", \"src/a\"]], \"expected\": [[\"a\", \"src/a\"]], \"passed\": true}, {\"check\": \"fixture 7\", \"actual\": [[\"a\", \"src/a\"], [\"z\", \"src/z\"]], \"expected\": [[\"a\", \"src/a\"], [\"z\", \"src/z\"]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}