{"abstract":"A descendant lot escapes an upstream quality hold.","category":"Manufacturing workflow integrity","checks":6,"contract":"For an acyclic genealogy and active held-lot set, return whether shipment is blocked by any ancestor or the lot itself.","evaluation_group":"model-04d9f3a50ab7e9f3","failed_approach":"Checking terminal raw-material sources omits holds on intermediate process lots.","family":"z-manufacturing-inherited-hold","id":"FA-12356","implementations":{"attempt":{"sha256":"fdc9e32e76ace23a437f60a0bf8c959c24b10bc1cb309b4e48937bf567e6fc74","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(parents, lot, held):\n    pending = [lot]\n    while pending:\n        x = pending.pop()\n        if parents.get(x): pending.extend(parents[x])\n        elif x in held: return True\n    return False\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\np = {'finish': ['work'], 'work': ['stage-0']}\np.update({'stage-' + str(i): ['stage-' + str(i+1)] for i in range(N)})\np['stage-' + str(N)] = ['raw' + str(N)]\ncheck('intermediate hold', solve(p, 'finish', {'work'}), True)\ncheck('raw hold', solve(p, 'finish', {'raw' + str(N)}), True)\ncheck('finished hold', solve(p, 'finish', {'finish'}), True)\ncheck('unrelated hold', solve(p, 'finish', {'other'}), False)\ncheck('no holds', solve(p, 'finish', set()), False)\ncheck('source hold', solve({}, 'raw', {'raw'}), True)\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":"3831cee0e578d484f9bf9c5ea858b2b8f5a1e122f38436fa2ad8609940bb7923","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(parents, lot, held):\n    return lot in held\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\np = {'finish': ['work'], 'work': ['stage-0']}\np.update({'stage-' + str(i): ['stage-' + str(i+1)] for i in range(N)})\np['stage-' + str(N)] = ['raw' + str(N)]\ncheck('intermediate hold', solve(p, 'finish', {'work'}), True)\ncheck('raw hold', solve(p, 'finish', {'raw' + str(N)}), True)\ncheck('finished hold', solve(p, 'finish', {'finish'}), True)\ncheck('unrelated hold', solve(p, 'finish', {'other'}), False)\ncheck('no holds', solve(p, 'finish', set()), False)\ncheck('source hold', solve({}, 'raw', {'raw'}), True)\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":"0d591c00258429338bf459cdad5199a0ffa31321b5dae19e34e7d7534ba81dce","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(parents, lot, held):\n    pending = [lot]\n    seen = set()\n    while pending:\n        x = pending.pop()\n        if x in seen: continue\n        seen.add(x)\n        if x in held: return True\n        pending.extend(parents.get(x, []))\n    return False\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\np = {'finish': ['work'], 'work': ['stage-0']}\np.update({'stage-' + str(i): ['stage-' + str(i+1)] for i in range(N)})\np['stage-' + str(N)] = ['raw' + str(N)]\ncheck('intermediate hold', solve(p, 'finish', {'work'}), True)\ncheck('raw hold', solve(p, 'finish', {'raw' + str(N)}), True)\ncheck('finished hold', solve(p, 'finish', {'finish'}), True)\ncheck('unrelated hold', solve(p, 'finish', {'other'}), False)\ncheck('no holds', solve(p, 'finish', set()), False)\ncheck('source hold', solve({}, 'raw', {'raw'}), True)\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":"Offline policy model only; no physical equipment, regulatory certification, or concurrent transaction claims. 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":"z-manufacturing-inherited-hold","generated_at":"2026-09-29T14:38:56.184877+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"A deterministic manufacturing record model isolates this workflow defect before equipment or enterprise integration.","repair":"Check the lot and every upstream ancestor, including intermediate work lots.","root_cause":"Only the finished lot identifier is checked against active holds.","sha256":"3e4d296df5ef34665273d3440e07c9e326d5b188188f15067cadc87d4e52bba3","title":"A descendant lot escapes an upstream quality hold · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":38.211,"exit_code":1,"observations":[{"actual":false,"check":"intermediate hold","expected":true,"passed":false},{"actual":true,"check":"raw hold","expected":true,"passed":true},{"actual":false,"check":"finished hold","expected":true,"passed":false},{"actual":false,"check":"unrelated hold","expected":false,"passed":true},{"actual":false,"check":"no holds","expected":false,"passed":true},{"actual":true,"check":"source hold","expected":true,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"intermediate hold\", \"actual\": false, \"expected\": true, \"passed\": false}, {\"check\": \"raw hold\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"finished hold\", \"actual\": false, \"expected\": true, \"passed\": false}, {\"check\": \"unrelated hold\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"no holds\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"source hold\", \"actual\": true, \"expected\": true, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.566,"exit_code":1,"observations":[{"actual":false,"check":"intermediate hold","expected":true,"passed":false},{"actual":false,"check":"raw hold","expected":true,"passed":false},{"actual":true,"check":"finished hold","expected":true,"passed":true},{"actual":false,"check":"unrelated hold","expected":false,"passed":true},{"actual":false,"check":"no holds","expected":false,"passed":true},{"actual":true,"check":"source hold","expected":true,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"intermediate hold\", \"actual\": false, \"expected\": true, \"passed\": false}, {\"check\": \"raw hold\", \"actual\": false, \"expected\": true, \"passed\": false}, {\"check\": \"finished hold\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"unrelated hold\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"no holds\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"source hold\", \"actual\": true, \"expected\": true, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":38.798,"exit_code":0,"observations":[{"actual":true,"check":"intermediate hold","expected":true,"passed":true},{"actual":true,"check":"raw hold","expected":true,"passed":true},{"actual":true,"check":"finished hold","expected":true,"passed":true},{"actual":false,"check":"unrelated hold","expected":false,"passed":true},{"actual":false,"check":"no holds","expected":false,"passed":true},{"actual":true,"check":"source hold","expected":true,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"intermediate hold\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"raw hold\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"finished hold\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"unrelated hold\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"no holds\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"source hold\", \"actual\": true, \"expected\": true, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}