FA-9111 / Build systems / Open access
Hermetic action fingerprint: Sorting arguments merges order-sensitive commands · case 01
Sorting arguments merges order-sensitive commands.
ROOT CAUSE
The implementation substitutes tuple(sorted(args)) for tuple(args), so sorting arguments merges order-sensitive commands.
VERIFIED REPAIR
Preserve argument order and multiplicity.
Unsuccessful approach: The attempted repair substitutes tuple(dict.fromkeys(args)). Fixture 17 still yields ('cc0', ('-v',), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'linux') instead of ('cc0', ('-v', '-v'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'linux').
Case contract
Return a tuple of compiler, ordered arguments, sorted environment pairs, sorted input digest pairs, and target platform; argument order and duplicate arguments matter.
Why this case matters
An offline model of hermetic action fingerprint, suitable for testing build and release tooling without external services.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(compiler, args, env, inputs, platform):
return (compiler, tuple(sorted(args)), tuple(sorted(env.items())), tuple(sorted(inputs.items())), platform)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('fixture 1', solve('cc0', ['-Ione', '-Itwo'], {'Z': '0', 'A': '1'}, {'b': '2', 'a': '1'}, 'linux'), ('cc0', ('-Ione', '-Itwo'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'linux'))
check('fixture 2', solve('cc1', ['-Ione', '-Itwo'], {'Z': '0', 'A': '1'}, {'b': '2', 'a': '1'}, 'arm'), ('cc1', ('-Ione', '-Itwo'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'arm'))
check('fixture 3', solve('cc0', ['-Ione', '-Itwo'], {'Z': '0', 'A': '1'}, {'a': '9'}, 'linux'), ('cc0', ('-Ione', '-Itwo'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'linux'))
check('fixture 4', solve('cc1', ['-Ione', '-Itwo'], {'Z': '0', 'A': '1'}, {'a': '9'}, 'arm'), ('cc1', ('-Ione', '-Itwo'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'arm'))
check('fixture 5', solve('cc0', ['-Ione', '-Itwo'], {'A': '1', 'Z': '0'}, {'b': '2', 'a': '1'}, 'linux'), ('cc0', ('-Ione', '-Itwo'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'linux'))
check('fixture 6', solve('cc1', ['-Ione', '-Itwo'], {'A': '1', 'Z': '0'}, {'b': '2', 'a': '1'}, 'arm'), ('cc1', ('-Ione', '-Itwo'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'arm'))
check('fixture 7', solve('cc0', ['-Ione', '-Itwo'], {'A': '1', 'Z': '0'}, {'a': '9'}, 'linux'), ('cc0', ('-Ione', '-Itwo'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'linux'))
check('fixture 8', solve('cc1', ['-Ione', '-Itwo'], {'A': '1', 'Z': '0'}, {'a': '9'}, 'arm'), ('cc1', ('-Ione', '-Itwo'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'arm'))
check('fixture 9', solve('cc0', ['-Itwo', '-Ione'], {'Z': '0', 'A': '1'}, {'b': '2', 'a': '1'}, 'linux'), ('cc0', ('-Itwo', '-Ione'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'linux'))
check('fixture 10', solve('cc1', ['-Itwo', '-Ione'], {'Z': '0', 'A': '1'}, {'b': '2', 'a': '1'}, 'arm'), ('cc1', ('-Itwo', '-Ione'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'arm'))
check('fixture 11', solve('cc0', ['-Itwo', '-Ione'], {'Z': '0', 'A': '1'}, {'a': '9'}, 'linux'), ('cc0', ('-Itwo', '-Ione'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'linux'))
check('fixture 12', solve('cc1', ['-Itwo', '-Ione'], {'Z': '0', 'A': '1'}, {'a': '9'}, 'arm'), ('cc1', ('-Itwo', '-Ione'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'arm'))
check('fixture 13', solve('cc0', ['-Itwo', '-Ione'], {'A': '1', 'Z': '0'}, {'b': '2', 'a': '1'}, 'linux'), ('cc0', ('-Itwo', '-Ione'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'linux'))
check('fixture 14', solve('cc1', ['-Itwo', '-Ione'], {'A': '1', 'Z': '0'}, {'b': '2', 'a': '1'}, 'arm'), ('cc1', ('-Itwo', '-Ione'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'arm'))
check('fixture 15', solve('cc0', ['-Itwo', '-Ione'], {'A': '1', 'Z': '0'}, {'a': '9'}, 'linux'), ('cc0', ('-Itwo', '-Ione'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'linux'))
check('fixture 16', solve('cc1', ['-Itwo', '-Ione'], {'A': '1', 'Z': '0'}, {'a': '9'}, 'arm'), ('cc1', ('-Itwo', '-Ione'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'arm'))
check('fixture 17', solve('cc0', ['-v', '-v'], {'Z': '0', 'A': '1'}, {'b': '2', 'a': '1'}, 'linux'), ('cc0', ('-v', '-v'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'linux'))
check('fixture 18', solve('cc1', ['-v', '-v'], {'Z': '0', 'A': '1'}, {'b': '2', 'a': '1'}, 'arm'), ('cc1', ('-v', '-v'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'arm'))
check('fixture 19', solve('cc0', ['-v', '-v'], {'Z': '0', 'A': '1'}, {'a': '9'}, 'linux'), ('cc0', ('-v', '-v'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'linux'))
check('fixture 20', solve('cc1', ['-v', '-v'], {'Z': '0', 'A': '1'}, {'a': '9'}, 'arm'), ('cc1', ('-v', '-v'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'arm'))
check('fixture 21', solve('cc0', ['-v', '-v'], {'A': '1', 'Z': '0'}, {'b': '2', 'a': '1'}, 'linux'), ('cc0', ('-v', '-v'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'linux'))
check('fixture 22', solve('cc1', ['-v', '-v'], {'A': '1', 'Z': '0'}, {'b': '2', 'a': '1'}, 'arm'), ('cc1', ('-v', '-v'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'arm'))
check('fixture 23', solve('cc0', ['-v', '-v'], {'A': '1', 'Z': '0'}, {'a': '9'}, 'linux'), ('cc0', ('-v', '-v'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'linux'))
check('fixture 24', solve('cc1', ['-v', '-v'], {'A': '1', 'Z': '0'}, {'a': '9'}, 'arm'), ('cc1', ('-v', '-v'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'arm'))
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 |
|---|---|---|---|
| fixture 1 | ['cc0', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | ['cc0', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | Passed |
| fixture 2 | ['cc1', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | ['cc1', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | Passed |
| fixture 3 | ['cc0', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | ['cc0', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | Passed |
| fixture 4 | ['cc1', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | ['cc1', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | Passed |
| fixture 5 | ['cc0', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | ['cc0', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | Passed |
| fixture 6 | ['cc1', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | ['cc1', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | Passed |
| fixture 7 | ['cc0', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | ['cc0', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | Passed |
| fixture 8 | ['cc1', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | ['cc1', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | Passed |
| fixture 9 | ['cc0', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | ['cc0', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | Failed |
| fixture 10 | ['cc1', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | ['cc1', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | Failed |
| fixture 11 | ['cc0', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | ['cc0', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | Failed |
| fixture 12 | ['cc1', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | ['cc1', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | Failed |
| fixture 13 | ['cc0', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | ['cc0', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | Failed |
| fixture 14 | ['cc1', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | ['cc1', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | Failed |
| fixture 15 | ['cc0', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | ['cc0', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | Failed |
| fixture 16 | ['cc1', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | ['cc1', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | Failed |
| fixture 17 | ['cc0', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | ['cc0', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | Passed |
| fixture 18 | ['cc1', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | ['cc1', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | Passed |
| fixture 19 | ['cc0', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | ['cc0', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | Passed |
| fixture 20 | ['cc1', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | ['cc1', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | Passed |
| fixture 21 | ['cc0', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | ['cc0', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | Passed |
| fixture 22 | ['cc1', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | ['cc1', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | Passed |
| fixture 23 | ['cc0', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | ['cc0', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | Passed |
| fixture 24 | ['cc1', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | ['cc1', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | Passed |
SHA-256 / 5a3196e36f3390b3c810933db11898a5abf9f949ab0feb6b5615a9bec257f7d8
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(compiler, args, env, inputs, platform):
return (compiler, tuple(dict.fromkeys(args)), tuple(sorted(env.items())), tuple(sorted(inputs.items())), platform)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('fixture 1', solve('cc0', ['-Ione', '-Itwo'], {'Z': '0', 'A': '1'}, {'b': '2', 'a': '1'}, 'linux'), ('cc0', ('-Ione', '-Itwo'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'linux'))
check('fixture 2', solve('cc1', ['-Ione', '-Itwo'], {'Z': '0', 'A': '1'}, {'b': '2', 'a': '1'}, 'arm'), ('cc1', ('-Ione', '-Itwo'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'arm'))
check('fixture 3', solve('cc0', ['-Ione', '-Itwo'], {'Z': '0', 'A': '1'}, {'a': '9'}, 'linux'), ('cc0', ('-Ione', '-Itwo'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'linux'))
check('fixture 4', solve('cc1', ['-Ione', '-Itwo'], {'Z': '0', 'A': '1'}, {'a': '9'}, 'arm'), ('cc1', ('-Ione', '-Itwo'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'arm'))
check('fixture 5', solve('cc0', ['-Ione', '-Itwo'], {'A': '1', 'Z': '0'}, {'b': '2', 'a': '1'}, 'linux'), ('cc0', ('-Ione', '-Itwo'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'linux'))
check('fixture 6', solve('cc1', ['-Ione', '-Itwo'], {'A': '1', 'Z': '0'}, {'b': '2', 'a': '1'}, 'arm'), ('cc1', ('-Ione', '-Itwo'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'arm'))
check('fixture 7', solve('cc0', ['-Ione', '-Itwo'], {'A': '1', 'Z': '0'}, {'a': '9'}, 'linux'), ('cc0', ('-Ione', '-Itwo'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'linux'))
check('fixture 8', solve('cc1', ['-Ione', '-Itwo'], {'A': '1', 'Z': '0'}, {'a': '9'}, 'arm'), ('cc1', ('-Ione', '-Itwo'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'arm'))
check('fixture 9', solve('cc0', ['-Itwo', '-Ione'], {'Z': '0', 'A': '1'}, {'b': '2', 'a': '1'}, 'linux'), ('cc0', ('-Itwo', '-Ione'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'linux'))
check('fixture 10', solve('cc1', ['-Itwo', '-Ione'], {'Z': '0', 'A': '1'}, {'b': '2', 'a': '1'}, 'arm'), ('cc1', ('-Itwo', '-Ione'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'arm'))
check('fixture 11', solve('cc0', ['-Itwo', '-Ione'], {'Z': '0', 'A': '1'}, {'a': '9'}, 'linux'), ('cc0', ('-Itwo', '-Ione'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'linux'))
check('fixture 12', solve('cc1', ['-Itwo', '-Ione'], {'Z': '0', 'A': '1'}, {'a': '9'}, 'arm'), ('cc1', ('-Itwo', '-Ione'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'arm'))
check('fixture 13', solve('cc0', ['-Itwo', '-Ione'], {'A': '1', 'Z': '0'}, {'b': '2', 'a': '1'}, 'linux'), ('cc0', ('-Itwo', '-Ione'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'linux'))
check('fixture 14', solve('cc1', ['-Itwo', '-Ione'], {'A': '1', 'Z': '0'}, {'b': '2', 'a': '1'}, 'arm'), ('cc1', ('-Itwo', '-Ione'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'arm'))
check('fixture 15', solve('cc0', ['-Itwo', '-Ione'], {'A': '1', 'Z': '0'}, {'a': '9'}, 'linux'), ('cc0', ('-Itwo', '-Ione'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'linux'))
check('fixture 16', solve('cc1', ['-Itwo', '-Ione'], {'A': '1', 'Z': '0'}, {'a': '9'}, 'arm'), ('cc1', ('-Itwo', '-Ione'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'arm'))
check('fixture 17', solve('cc0', ['-v', '-v'], {'Z': '0', 'A': '1'}, {'b': '2', 'a': '1'}, 'linux'), ('cc0', ('-v', '-v'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'linux'))
check('fixture 18', solve('cc1', ['-v', '-v'], {'Z': '0', 'A': '1'}, {'b': '2', 'a': '1'}, 'arm'), ('cc1', ('-v', '-v'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'arm'))
check('fixture 19', solve('cc0', ['-v', '-v'], {'Z': '0', 'A': '1'}, {'a': '9'}, 'linux'), ('cc0', ('-v', '-v'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'linux'))
check('fixture 20', solve('cc1', ['-v', '-v'], {'Z': '0', 'A': '1'}, {'a': '9'}, 'arm'), ('cc1', ('-v', '-v'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'arm'))
check('fixture 21', solve('cc0', ['-v', '-v'], {'A': '1', 'Z': '0'}, {'b': '2', 'a': '1'}, 'linux'), ('cc0', ('-v', '-v'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'linux'))
check('fixture 22', solve('cc1', ['-v', '-v'], {'A': '1', 'Z': '0'}, {'b': '2', 'a': '1'}, 'arm'), ('cc1', ('-v', '-v'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'arm'))
check('fixture 23', solve('cc0', ['-v', '-v'], {'A': '1', 'Z': '0'}, {'a': '9'}, 'linux'), ('cc0', ('-v', '-v'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'linux'))
check('fixture 24', solve('cc1', ['-v', '-v'], {'A': '1', 'Z': '0'}, {'a': '9'}, 'arm'), ('cc1', ('-v', '-v'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'arm'))
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 |
|---|---|---|---|
| fixture 1 | ['cc0', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | ['cc0', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | Passed |
| fixture 2 | ['cc1', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | ['cc1', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | Passed |
| fixture 3 | ['cc0', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | ['cc0', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | Passed |
| fixture 4 | ['cc1', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | ['cc1', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | Passed |
| fixture 5 | ['cc0', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | ['cc0', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | Passed |
| fixture 6 | ['cc1', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | ['cc1', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | Passed |
| fixture 7 | ['cc0', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | ['cc0', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | Passed |
| fixture 8 | ['cc1', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | ['cc1', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | Passed |
| fixture 9 | ['cc0', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | ['cc0', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | Passed |
| fixture 10 | ['cc1', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | ['cc1', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | Passed |
| fixture 11 | ['cc0', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | ['cc0', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | Passed |
| fixture 12 | ['cc1', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | ['cc1', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | Passed |
| fixture 13 | ['cc0', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | ['cc0', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | Passed |
| fixture 14 | ['cc1', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | ['cc1', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | Passed |
| fixture 15 | ['cc0', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | ['cc0', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | Passed |
| fixture 16 | ['cc1', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | ['cc1', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | Passed |
| fixture 17 | ['cc0', ['-v'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | ['cc0', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | Failed |
| fixture 18 | ['cc1', ['-v'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | ['cc1', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | Failed |
| fixture 19 | ['cc0', ['-v'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | ['cc0', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | Failed |
| fixture 20 | ['cc1', ['-v'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | ['cc1', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | Failed |
| fixture 21 | ['cc0', ['-v'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | ['cc0', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | Failed |
| fixture 22 | ['cc1', ['-v'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | ['cc1', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | Failed |
| fixture 23 | ['cc0', ['-v'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | ['cc0', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | Failed |
| fixture 24 | ['cc1', ['-v'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | ['cc1', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | Failed |
SHA-256 / f17aa30d2b5a366719536604be7e4299017236ca238b00ddbd43cc0c28b65e92
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(compiler, args, env, inputs, platform):
return (compiler, tuple(args), tuple(sorted(env.items())), tuple(sorted(inputs.items())), platform)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('fixture 1', solve('cc0', ['-Ione', '-Itwo'], {'Z': '0', 'A': '1'}, {'b': '2', 'a': '1'}, 'linux'), ('cc0', ('-Ione', '-Itwo'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'linux'))
check('fixture 2', solve('cc1', ['-Ione', '-Itwo'], {'Z': '0', 'A': '1'}, {'b': '2', 'a': '1'}, 'arm'), ('cc1', ('-Ione', '-Itwo'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'arm'))
check('fixture 3', solve('cc0', ['-Ione', '-Itwo'], {'Z': '0', 'A': '1'}, {'a': '9'}, 'linux'), ('cc0', ('-Ione', '-Itwo'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'linux'))
check('fixture 4', solve('cc1', ['-Ione', '-Itwo'], {'Z': '0', 'A': '1'}, {'a': '9'}, 'arm'), ('cc1', ('-Ione', '-Itwo'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'arm'))
check('fixture 5', solve('cc0', ['-Ione', '-Itwo'], {'A': '1', 'Z': '0'}, {'b': '2', 'a': '1'}, 'linux'), ('cc0', ('-Ione', '-Itwo'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'linux'))
check('fixture 6', solve('cc1', ['-Ione', '-Itwo'], {'A': '1', 'Z': '0'}, {'b': '2', 'a': '1'}, 'arm'), ('cc1', ('-Ione', '-Itwo'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'arm'))
check('fixture 7', solve('cc0', ['-Ione', '-Itwo'], {'A': '1', 'Z': '0'}, {'a': '9'}, 'linux'), ('cc0', ('-Ione', '-Itwo'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'linux'))
check('fixture 8', solve('cc1', ['-Ione', '-Itwo'], {'A': '1', 'Z': '0'}, {'a': '9'}, 'arm'), ('cc1', ('-Ione', '-Itwo'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'arm'))
check('fixture 9', solve('cc0', ['-Itwo', '-Ione'], {'Z': '0', 'A': '1'}, {'b': '2', 'a': '1'}, 'linux'), ('cc0', ('-Itwo', '-Ione'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'linux'))
check('fixture 10', solve('cc1', ['-Itwo', '-Ione'], {'Z': '0', 'A': '1'}, {'b': '2', 'a': '1'}, 'arm'), ('cc1', ('-Itwo', '-Ione'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'arm'))
check('fixture 11', solve('cc0', ['-Itwo', '-Ione'], {'Z': '0', 'A': '1'}, {'a': '9'}, 'linux'), ('cc0', ('-Itwo', '-Ione'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'linux'))
check('fixture 12', solve('cc1', ['-Itwo', '-Ione'], {'Z': '0', 'A': '1'}, {'a': '9'}, 'arm'), ('cc1', ('-Itwo', '-Ione'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'arm'))
check('fixture 13', solve('cc0', ['-Itwo', '-Ione'], {'A': '1', 'Z': '0'}, {'b': '2', 'a': '1'}, 'linux'), ('cc0', ('-Itwo', '-Ione'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'linux'))
check('fixture 14', solve('cc1', ['-Itwo', '-Ione'], {'A': '1', 'Z': '0'}, {'b': '2', 'a': '1'}, 'arm'), ('cc1', ('-Itwo', '-Ione'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'arm'))
check('fixture 15', solve('cc0', ['-Itwo', '-Ione'], {'A': '1', 'Z': '0'}, {'a': '9'}, 'linux'), ('cc0', ('-Itwo', '-Ione'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'linux'))
check('fixture 16', solve('cc1', ['-Itwo', '-Ione'], {'A': '1', 'Z': '0'}, {'a': '9'}, 'arm'), ('cc1', ('-Itwo', '-Ione'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'arm'))
check('fixture 17', solve('cc0', ['-v', '-v'], {'Z': '0', 'A': '1'}, {'b': '2', 'a': '1'}, 'linux'), ('cc0', ('-v', '-v'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'linux'))
check('fixture 18', solve('cc1', ['-v', '-v'], {'Z': '0', 'A': '1'}, {'b': '2', 'a': '1'}, 'arm'), ('cc1', ('-v', '-v'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'arm'))
check('fixture 19', solve('cc0', ['-v', '-v'], {'Z': '0', 'A': '1'}, {'a': '9'}, 'linux'), ('cc0', ('-v', '-v'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'linux'))
check('fixture 20', solve('cc1', ['-v', '-v'], {'Z': '0', 'A': '1'}, {'a': '9'}, 'arm'), ('cc1', ('-v', '-v'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'arm'))
check('fixture 21', solve('cc0', ['-v', '-v'], {'A': '1', 'Z': '0'}, {'b': '2', 'a': '1'}, 'linux'), ('cc0', ('-v', '-v'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'linux'))
check('fixture 22', solve('cc1', ['-v', '-v'], {'A': '1', 'Z': '0'}, {'b': '2', 'a': '1'}, 'arm'), ('cc1', ('-v', '-v'), (('A', '1'), ('Z', '0')), (('a', '1'), ('b', '2')), 'arm'))
check('fixture 23', solve('cc0', ['-v', '-v'], {'A': '1', 'Z': '0'}, {'a': '9'}, 'linux'), ('cc0', ('-v', '-v'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'linux'))
check('fixture 24', solve('cc1', ['-v', '-v'], {'A': '1', 'Z': '0'}, {'a': '9'}, 'arm'), ('cc1', ('-v', '-v'), (('A', '1'), ('Z', '0')), (('a', '9'),), 'arm'))
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 |
|---|---|---|---|
| fixture 1 | ['cc0', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | ['cc0', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | Passed |
| fixture 2 | ['cc1', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | ['cc1', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | Passed |
| fixture 3 | ['cc0', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | ['cc0', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | Passed |
| fixture 4 | ['cc1', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | ['cc1', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | Passed |
| fixture 5 | ['cc0', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | ['cc0', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | Passed |
| fixture 6 | ['cc1', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | ['cc1', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | Passed |
| fixture 7 | ['cc0', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | ['cc0', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | Passed |
| fixture 8 | ['cc1', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | ['cc1', ['-Ione', '-Itwo'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | Passed |
| fixture 9 | ['cc0', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | ['cc0', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | Passed |
| fixture 10 | ['cc1', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | ['cc1', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | Passed |
| fixture 11 | ['cc0', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | ['cc0', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | Passed |
| fixture 12 | ['cc1', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | ['cc1', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | Passed |
| fixture 13 | ['cc0', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | ['cc0', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | Passed |
| fixture 14 | ['cc1', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | ['cc1', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | Passed |
| fixture 15 | ['cc0', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | ['cc0', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | Passed |
| fixture 16 | ['cc1', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | ['cc1', ['-Itwo', '-Ione'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | Passed |
| fixture 17 | ['cc0', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | ['cc0', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | Passed |
| fixture 18 | ['cc1', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | ['cc1', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | Passed |
| fixture 19 | ['cc0', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | ['cc0', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | Passed |
| fixture 20 | ['cc1', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | ['cc1', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | Passed |
| fixture 21 | ['cc0', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | ['cc0', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'linux'] | Passed |
| fixture 22 | ['cc1', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | ['cc1', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '1'], ['b', '2']], 'arm'] | Passed |
| fixture 23 | ['cc0', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | ['cc0', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '9']], 'linux'] | Passed |
| fixture 24 | ['cc1', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | ['cc1', ['-v', '-v'], [['A', '1'], ['Z', '0']], [['a', '9']], 'arm'] | Passed |
SHA-256 / 96df5b6978d7f36af612c7af17b859566c271bff5abd69feb4fd1c2c11e826ad
Verification & scope
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:27.208191+00:00.
Case digest / 46c8bf95e439452ca8057702d9a6db8852357395c6549b54724205846bf8e886