FA-12356 / Manufacturing workflow integrity / Open access
A descendant lot escapes an upstream quality hold · case 01
A descendant lot escapes an upstream quality hold.
ROOT CAUSE
Only the finished lot identifier is checked against active holds.
VERIFIED REPAIR
Check the lot and every upstream ancestor, including intermediate work lots.
Unsuccessful approach: Checking terminal raw-material sources omits holds on intermediate process lots.
Case contract
For an acyclic genealogy and active held-lot set, return whether shipment is blocked by any ancestor or the lot itself.
Why this case matters
A deterministic manufacturing record model isolates this workflow defect before equipment or enterprise integration.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(parents, lot, held):
return lot in held
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
p = {'finish': ['work'], 'work': ['stage-0']}
p.update({'stage-' + str(i): ['stage-' + str(i+1)] for i in range(N)})
p['stage-' + str(N)] = ['raw' + str(N)]
check('intermediate hold', solve(p, 'finish', {'work'}), True)
check('raw hold', solve(p, 'finish', {'raw' + str(N)}), True)
check('finished hold', solve(p, 'finish', {'finish'}), True)
check('unrelated hold', solve(p, 'finish', {'other'}), False)
check('no holds', solve(p, 'finish', set()), False)
check('source hold', solve({}, 'raw', {'raw'}), True)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| intermediate hold | False | True | Failed |
| raw hold | False | True | Failed |
| finished hold | True | True | Passed |
| unrelated hold | False | False | Passed |
| no holds | False | False | Passed |
| source hold | True | True | Passed |
SHA-256 / 3831cee0e578d484f9bf9c5ea858b2b8f5a1e122f38436fa2ad8609940bb7923
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(parents, lot, held):
pending = [lot]
while pending:
x = pending.pop()
if parents.get(x): pending.extend(parents[x])
elif x in held: return True
return False
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
p = {'finish': ['work'], 'work': ['stage-0']}
p.update({'stage-' + str(i): ['stage-' + str(i+1)] for i in range(N)})
p['stage-' + str(N)] = ['raw' + str(N)]
check('intermediate hold', solve(p, 'finish', {'work'}), True)
check('raw hold', solve(p, 'finish', {'raw' + str(N)}), True)
check('finished hold', solve(p, 'finish', {'finish'}), True)
check('unrelated hold', solve(p, 'finish', {'other'}), False)
check('no holds', solve(p, 'finish', set()), False)
check('source hold', solve({}, 'raw', {'raw'}), True)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| intermediate hold | False | True | Failed |
| raw hold | True | True | Passed |
| finished hold | False | True | Failed |
| unrelated hold | False | False | Passed |
| no holds | False | False | Passed |
| source hold | True | True | Passed |
SHA-256 / fdc9e32e76ace23a437f60a0bf8c959c24b10bc1cb309b4e48937bf567e6fc74
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(parents, lot, held):
pending = [lot]
seen = set()
while pending:
x = pending.pop()
if x in seen: continue
seen.add(x)
if x in held: return True
pending.extend(parents.get(x, []))
return False
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
p = {'finish': ['work'], 'work': ['stage-0']}
p.update({'stage-' + str(i): ['stage-' + str(i+1)] for i in range(N)})
p['stage-' + str(N)] = ['raw' + str(N)]
check('intermediate hold', solve(p, 'finish', {'work'}), True)
check('raw hold', solve(p, 'finish', {'raw' + str(N)}), True)
check('finished hold', solve(p, 'finish', {'finish'}), True)
check('unrelated hold', solve(p, 'finish', {'other'}), False)
check('no holds', solve(p, 'finish', set()), False)
check('source hold', solve({}, 'raw', {'raw'}), True)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| intermediate hold | True | True | Passed |
| raw hold | True | True | Passed |
| finished hold | True | True | Passed |
| unrelated hold | False | False | Passed |
| no holds | False | False | Passed |
| source hold | True | True | Passed |
SHA-256 / 0d591c00258429338bf459cdad5199a0ffa31321b5dae19e34e7d7534ba81dce
Verification & scope
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.
Observations recorded using Python 3.12.14 at 2026-09-29T14:38:56.184877+00:00.
Case digest / 3e4d296df5ef34665273d3440e07c9e326d5b188188f15067cadc87d4e52bba3