Found while repairing compiler/codegen/testgen.t27 on #2766.
seals in .trinity/seals 1316
specs sealed TWICE 547 (module-name key AND path-derived key)
pairs that already DISAGREE 31
Examples of the pairing: ast.json / compiler_ast.json, testgen.json / codegen_testgen.json, gwt_model.json / brain_gwt_model.json.
t27c seal <spec> --save writes to .trinity/seals/<module>.json where the name is now path-derived, so it updates exactly one file of each pair. The other keeps whatever it held — and the gate reads both. On this branch that produced a repair that fixed the spec, re-sealed it, and still failed coverage on the twin.
Thirty-one pairs disagree today. Each one is a spec where the record says two different things about the same four outputs, and either answer can be the one a reader believes.
What is NOT the fix
Deleting the twins wholesale. Some of the 547 may be the only seal a downstream reader knows by name, and a seal that vanishes is indistinguishable from a spec that was never sealed.
What would be
Either seal --save updates every seal whose spec_path matches, or the gate refuses a spec that has more than one seal — one truth per spec, chosen deliberately, with the 31 disagreements resolved by re-sealing rather than by picking.
Refs #2754
Found while repairing
compiler/codegen/testgen.t27on #2766.Examples of the pairing:
ast.json/compiler_ast.json,testgen.json/codegen_testgen.json,gwt_model.json/brain_gwt_model.json.t27c seal <spec> --savewrites to.trinity/seals/<module>.jsonwhere the name is now path-derived, so it updates exactly one file of each pair. The other keeps whatever it held — and the gate reads both. On this branch that produced a repair that fixed the spec, re-sealed it, and still failedcoverageon the twin.Thirty-one pairs disagree today. Each one is a spec where the record says two different things about the same four outputs, and either answer can be the one a reader believes.
What is NOT the fix
Deleting the twins wholesale. Some of the 547 may be the only seal a downstream reader knows by name, and a seal that vanishes is indistinguishable from a spec that was never sealed.
What would be
Either
seal --saveupdates every seal whosespec_pathmatches, or the gate refuses a spec that has more than one seal — one truth per spec, chosen deliberately, with the 31 disagreements resolved by re-sealing rather than by picking.Refs #2754