FA-97116 / Recipe scaling and nutrition / Open access
Home canning altitude table: weighted gauge band · case 01
A weighted gauge at 1500 ft is set to 10 psi.
ROOT CAUSE
The weighted-gauge low band borrows the dial 2000 ft edge.
VERIFIED REPAIR
Use 10 psi only up to 1000 ft.
Unsuccessful approach: A strict < excludes exactly 1000 ft from the 10 psi band.
Case contract
Above 10000 ft -> "error: altitude out of range". Water bath adds 0 (<=1000 ft), 5 (<=3000), 10 (<=6000), 15 (<=8000), 20 (<=10000) minutes to base, psi None. Dial gauge keeps base minutes, psi 11 (<=2000), 12 (<=4000), 13 (<=6000), 14 (<=8000), above 8000 error. Weighted gauge keeps base minutes, psi 10 at <=1000 ft else 15. Other methods -> "error: method".
Why this case matters
Preserving recipes must lengthen time or raise pressure at altitude to stay safe (toy table).
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import math
from fractions import Fraction
N = 1
observations = []
def solve(method, altitude_ft, base_minutes):
if altitude_ft > 10000:
return 'error: altitude out of range'
add = 0 if altitude_ft <= 1000 else 5 if altitude_ft <= 3000 else 10 if altitude_ft <= 6000 else 15 if altitude_ft <= 8000 else 20
if method == 'water bath':
return {'minutes': base_minutes + add, 'psi': None}
if method == 'dial':
if altitude_ft > 8000:
return 'error: altitude out of range'
psi = 11 if altitude_ft <= 2000 else 12 if altitude_ft <= 4000 else 13 if altitude_ft <= 6000 else 14
return {'minutes': base_minutes, 'psi': psi}
if method == 'weighted':
return {'minutes': base_minutes, 'psi': 10 if altitude_ft <= 2000 else 15}
return 'error: method'
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['sea level bath', ['water bath', 0, 10], {'minutes': 10, 'psi': None}],
['band edge 1000', ['water bath', 1000, 10], {'minutes': 10, 'psi': None}],
['dial mid', ['dial', 3000, 25], {'minutes': 25, 'psi': 12}],
['regression: weighted gauge band', ['weighted', 1001, 10], {'minutes': 10, 'psi': 15}],
['repair check: weighted gauge band', ['weighted', 1000, 40], {'minutes': 40, 'psi': 10}],
['generated control 1', ['weighted', 4500, 10], {'minutes': 10, 'psi': 15}],
['generated control 2', ['water bath', 3000, 10], {'minutes': 15, 'psi': None}],
['generated control 3', ['dial', 1001, 20], {'minutes': 20, 'psi': 11}]],
[['band edge 1000', ['water bath', 1000, 10], {'minutes': 10, 'psi': None}],
['dial mid', ['dial', 3000, 25], {'minutes': 25, 'psi': 12}],
['too high', ['water bath', 10500, 10], 'error: altitude out of range'],
['regression: weighted gauge band', ['weighted', 1001, 85], {'minutes': 85, 'psi': 15}],
['repair check: weighted gauge band', ['weighted', 1000, 25], {'minutes': 25, 'psi': 10}],
['generated control 1', ['water bath', 10500, 20], 'error: altitude out of range'],
['generated control 2', ['weighted', 10500, 15], 'error: altitude out of range'],
['generated control 3', ['steam', 8000, 15], 'error: method']],
[['dial mid', ['dial', 3000, 25], {'minutes': 25, 'psi': 12}],
['too high', ['water bath', 10500, 10], 'error: altitude out of range'],
['unknown method', ['steam', 500, 10], 'error: method'],
['regression: weighted gauge band', ['weighted', 1001, 40], {'minutes': 40, 'psi': 15}],
['repair check: weighted gauge band', ['weighted', 1000, 25], {'minutes': 25, 'psi': 10}],
['generated control 1', ['weighted', 7000, 15], {'minutes': 15, 'psi': 15}],
['generated control 2', ['dial', 6000, 15], {'minutes': 15, 'psi': 13}],
['generated control 3', ['steam', 500, 25], 'error: method']],
[['too high', ['water bath', 10500, 10], 'error: altitude out of range'],
['unknown method', ['steam', 500, 10], 'error: method'],
['sea level bath', ['water bath', 0, 10], {'minutes': 10, 'psi': None}],
['regression: weighted gauge band', ['weighted', 1001, 15], {'minutes': 15, 'psi': 15}],
['repair check: weighted gauge band', ['weighted', 1000, 85], {'minutes': 85, 'psi': 10}],
['generated control 1', ['dial', 8500, 40], 'error: altitude out of range'],
['generated control 2', ['steam', 1000, 25], 'error: method'],
['generated control 3', ['weighted', 8000, 25], {'minutes': 25, 'psi': 15}]],
[['unknown method', ['steam', 500, 10], 'error: method'],
['sea level bath', ['water bath', 0, 10], {'minutes': 10, 'psi': None}],
['band edge 1000', ['water bath', 1000, 10], {'minutes': 10, 'psi': None}],
['regression: weighted gauge band', ['weighted', 2000, 25], {'minutes': 25, 'psi': 15}],
['repair check: weighted gauge band', ['weighted', 1000, 15], {'minutes': 15, 'psi': 10}],
['generated control 1', ['weighted', 8000, 85], {'minutes': 85, 'psi': 15}],
['generated control 2', ['water bath', 8500, 20], {'minutes': 40, 'psi': None}],
['generated control 3', ['steam', 8000, 10], 'error: method']]]
for label, args, expected in fixtures[N - 1]:
check(label, solve(*args), expected)
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 |
|---|---|---|---|
| sea level bath | {'minutes': 10, 'psi': None} | {'minutes': 10, 'psi': None} | Passed |
| band edge 1000 | {'minutes': 10, 'psi': None} | {'minutes': 10, 'psi': None} | Passed |
| dial mid | {'minutes': 25, 'psi': 12} | {'minutes': 25, 'psi': 12} | Passed |
| regression: weighted gauge band | {'minutes': 10, 'psi': 10} | {'minutes': 10, 'psi': 15} | Failed |
| repair check: weighted gauge band | {'minutes': 40, 'psi': 10} | {'minutes': 40, 'psi': 10} | Passed |
| generated control 1 | {'minutes': 10, 'psi': 15} | {'minutes': 10, 'psi': 15} | Passed |
| generated control 2 | {'minutes': 15, 'psi': None} | {'minutes': 15, 'psi': None} | Passed |
| generated control 3 | {'minutes': 20, 'psi': 11} | {'minutes': 20, 'psi': 11} | Passed |
SHA-256 / bc19d76c2b1caaa0b3071c27896bc70bae239a55f6b771566a9d0700dd803d8d
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import math
from fractions import Fraction
N = 1
observations = []
def solve(method, altitude_ft, base_minutes):
if altitude_ft > 10000:
return 'error: altitude out of range'
add = 0 if altitude_ft <= 1000 else 5 if altitude_ft <= 3000 else 10 if altitude_ft <= 6000 else 15 if altitude_ft <= 8000 else 20
if method == 'water bath':
return {'minutes': base_minutes + add, 'psi': None}
if method == 'dial':
if altitude_ft > 8000:
return 'error: altitude out of range'
psi = 11 if altitude_ft <= 2000 else 12 if altitude_ft <= 4000 else 13 if altitude_ft <= 6000 else 14
return {'minutes': base_minutes, 'psi': psi}
if method == 'weighted':
return {'minutes': base_minutes, 'psi': 10 if altitude_ft < 1000 else 15}
return 'error: method'
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['sea level bath', ['water bath', 0, 10], {'minutes': 10, 'psi': None}],
['band edge 1000', ['water bath', 1000, 10], {'minutes': 10, 'psi': None}],
['dial mid', ['dial', 3000, 25], {'minutes': 25, 'psi': 12}],
['regression: weighted gauge band', ['weighted', 1001, 10], {'minutes': 10, 'psi': 15}],
['repair check: weighted gauge band', ['weighted', 1000, 40], {'minutes': 40, 'psi': 10}],
['generated control 1', ['weighted', 4500, 10], {'minutes': 10, 'psi': 15}],
['generated control 2', ['water bath', 3000, 10], {'minutes': 15, 'psi': None}],
['generated control 3', ['dial', 1001, 20], {'minutes': 20, 'psi': 11}]],
[['band edge 1000', ['water bath', 1000, 10], {'minutes': 10, 'psi': None}],
['dial mid', ['dial', 3000, 25], {'minutes': 25, 'psi': 12}],
['too high', ['water bath', 10500, 10], 'error: altitude out of range'],
['regression: weighted gauge band', ['weighted', 1001, 85], {'minutes': 85, 'psi': 15}],
['repair check: weighted gauge band', ['weighted', 1000, 25], {'minutes': 25, 'psi': 10}],
['generated control 1', ['water bath', 10500, 20], 'error: altitude out of range'],
['generated control 2', ['weighted', 10500, 15], 'error: altitude out of range'],
['generated control 3', ['steam', 8000, 15], 'error: method']],
[['dial mid', ['dial', 3000, 25], {'minutes': 25, 'psi': 12}],
['too high', ['water bath', 10500, 10], 'error: altitude out of range'],
['unknown method', ['steam', 500, 10], 'error: method'],
['regression: weighted gauge band', ['weighted', 1001, 40], {'minutes': 40, 'psi': 15}],
['repair check: weighted gauge band', ['weighted', 1000, 25], {'minutes': 25, 'psi': 10}],
['generated control 1', ['weighted', 7000, 15], {'minutes': 15, 'psi': 15}],
['generated control 2', ['dial', 6000, 15], {'minutes': 15, 'psi': 13}],
['generated control 3', ['steam', 500, 25], 'error: method']],
[['too high', ['water bath', 10500, 10], 'error: altitude out of range'],
['unknown method', ['steam', 500, 10], 'error: method'],
['sea level bath', ['water bath', 0, 10], {'minutes': 10, 'psi': None}],
['regression: weighted gauge band', ['weighted', 1001, 15], {'minutes': 15, 'psi': 15}],
['repair check: weighted gauge band', ['weighted', 1000, 85], {'minutes': 85, 'psi': 10}],
['generated control 1', ['dial', 8500, 40], 'error: altitude out of range'],
['generated control 2', ['steam', 1000, 25], 'error: method'],
['generated control 3', ['weighted', 8000, 25], {'minutes': 25, 'psi': 15}]],
[['unknown method', ['steam', 500, 10], 'error: method'],
['sea level bath', ['water bath', 0, 10], {'minutes': 10, 'psi': None}],
['band edge 1000', ['water bath', 1000, 10], {'minutes': 10, 'psi': None}],
['regression: weighted gauge band', ['weighted', 2000, 25], {'minutes': 25, 'psi': 15}],
['repair check: weighted gauge band', ['weighted', 1000, 15], {'minutes': 15, 'psi': 10}],
['generated control 1', ['weighted', 8000, 85], {'minutes': 85, 'psi': 15}],
['generated control 2', ['water bath', 8500, 20], {'minutes': 40, 'psi': None}],
['generated control 3', ['steam', 8000, 10], 'error: method']]]
for label, args, expected in fixtures[N - 1]:
check(label, solve(*args), expected)
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 |
|---|---|---|---|
| sea level bath | {'minutes': 10, 'psi': None} | {'minutes': 10, 'psi': None} | Passed |
| band edge 1000 | {'minutes': 10, 'psi': None} | {'minutes': 10, 'psi': None} | Passed |
| dial mid | {'minutes': 25, 'psi': 12} | {'minutes': 25, 'psi': 12} | Passed |
| regression: weighted gauge band | {'minutes': 10, 'psi': 15} | {'minutes': 10, 'psi': 15} | Passed |
| repair check: weighted gauge band | {'minutes': 40, 'psi': 15} | {'minutes': 40, 'psi': 10} | Failed |
| generated control 1 | {'minutes': 10, 'psi': 15} | {'minutes': 10, 'psi': 15} | Passed |
| generated control 2 | {'minutes': 15, 'psi': None} | {'minutes': 15, 'psi': None} | Passed |
| generated control 3 | {'minutes': 20, 'psi': 11} | {'minutes': 20, 'psi': 11} | Passed |
SHA-256 / 421c31477efe0d8a741c5514562d0682f12bca1240100e7a516b70c2d27b14a1
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
import math
from fractions import Fraction
N = 1
observations = []
def solve(method, altitude_ft, base_minutes):
if altitude_ft > 10000:
return 'error: altitude out of range'
add = 0 if altitude_ft <= 1000 else 5 if altitude_ft <= 3000 else 10 if altitude_ft <= 6000 else 15 if altitude_ft <= 8000 else 20
if method == 'water bath':
return {'minutes': base_minutes + add, 'psi': None}
if method == 'dial':
if altitude_ft > 8000:
return 'error: altitude out of range'
psi = 11 if altitude_ft <= 2000 else 12 if altitude_ft <= 4000 else 13 if altitude_ft <= 6000 else 14
return {'minutes': base_minutes, 'psi': psi}
if method == 'weighted':
return {'minutes': base_minutes, 'psi': 10 if altitude_ft <= 1000 else 15}
return 'error: method'
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['sea level bath', ['water bath', 0, 10], {'minutes': 10, 'psi': None}],
['band edge 1000', ['water bath', 1000, 10], {'minutes': 10, 'psi': None}],
['dial mid', ['dial', 3000, 25], {'minutes': 25, 'psi': 12}],
['regression: weighted gauge band', ['weighted', 1001, 10], {'minutes': 10, 'psi': 15}],
['repair check: weighted gauge band', ['weighted', 1000, 40], {'minutes': 40, 'psi': 10}],
['generated control 1', ['weighted', 4500, 10], {'minutes': 10, 'psi': 15}],
['generated control 2', ['water bath', 3000, 10], {'minutes': 15, 'psi': None}],
['generated control 3', ['dial', 1001, 20], {'minutes': 20, 'psi': 11}]],
[['band edge 1000', ['water bath', 1000, 10], {'minutes': 10, 'psi': None}],
['dial mid', ['dial', 3000, 25], {'minutes': 25, 'psi': 12}],
['too high', ['water bath', 10500, 10], 'error: altitude out of range'],
['regression: weighted gauge band', ['weighted', 1001, 85], {'minutes': 85, 'psi': 15}],
['repair check: weighted gauge band', ['weighted', 1000, 25], {'minutes': 25, 'psi': 10}],
['generated control 1', ['water bath', 10500, 20], 'error: altitude out of range'],
['generated control 2', ['weighted', 10500, 15], 'error: altitude out of range'],
['generated control 3', ['steam', 8000, 15], 'error: method']],
[['dial mid', ['dial', 3000, 25], {'minutes': 25, 'psi': 12}],
['too high', ['water bath', 10500, 10], 'error: altitude out of range'],
['unknown method', ['steam', 500, 10], 'error: method'],
['regression: weighted gauge band', ['weighted', 1001, 40], {'minutes': 40, 'psi': 15}],
['repair check: weighted gauge band', ['weighted', 1000, 25], {'minutes': 25, 'psi': 10}],
['generated control 1', ['weighted', 7000, 15], {'minutes': 15, 'psi': 15}],
['generated control 2', ['dial', 6000, 15], {'minutes': 15, 'psi': 13}],
['generated control 3', ['steam', 500, 25], 'error: method']],
[['too high', ['water bath', 10500, 10], 'error: altitude out of range'],
['unknown method', ['steam', 500, 10], 'error: method'],
['sea level bath', ['water bath', 0, 10], {'minutes': 10, 'psi': None}],
['regression: weighted gauge band', ['weighted', 1001, 15], {'minutes': 15, 'psi': 15}],
['repair check: weighted gauge band', ['weighted', 1000, 85], {'minutes': 85, 'psi': 10}],
['generated control 1', ['dial', 8500, 40], 'error: altitude out of range'],
['generated control 2', ['steam', 1000, 25], 'error: method'],
['generated control 3', ['weighted', 8000, 25], {'minutes': 25, 'psi': 15}]],
[['unknown method', ['steam', 500, 10], 'error: method'],
['sea level bath', ['water bath', 0, 10], {'minutes': 10, 'psi': None}],
['band edge 1000', ['water bath', 1000, 10], {'minutes': 10, 'psi': None}],
['regression: weighted gauge band', ['weighted', 2000, 25], {'minutes': 25, 'psi': 15}],
['repair check: weighted gauge band', ['weighted', 1000, 15], {'minutes': 15, 'psi': 10}],
['generated control 1', ['weighted', 8000, 85], {'minutes': 85, 'psi': 15}],
['generated control 2', ['water bath', 8500, 20], {'minutes': 40, 'psi': None}],
['generated control 3', ['steam', 8000, 10], 'error: method']]]
for label, args, expected in fixtures[N - 1]:
check(label, solve(*args), expected)
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 |
|---|---|---|---|
| sea level bath | {'minutes': 10, 'psi': None} | {'minutes': 10, 'psi': None} | Passed |
| band edge 1000 | {'minutes': 10, 'psi': None} | {'minutes': 10, 'psi': None} | Passed |
| dial mid | {'minutes': 25, 'psi': 12} | {'minutes': 25, 'psi': 12} | Passed |
| regression: weighted gauge band | {'minutes': 10, 'psi': 15} | {'minutes': 10, 'psi': 15} | Passed |
| repair check: weighted gauge band | {'minutes': 40, 'psi': 10} | {'minutes': 40, 'psi': 10} | Passed |
| generated control 1 | {'minutes': 10, 'psi': 15} | {'minutes': 10, 'psi': 15} | Passed |
| generated control 2 | {'minutes': 15, 'psi': None} | {'minutes': 15, 'psi': None} | Passed |
| generated control 3 | {'minutes': 20, 'psi': 11} | {'minutes': 20, 'psi': 11} | Passed |
SHA-256 / ff121bad9f0e5a27f58dc189536d44cb42652aeade405740634b9164a756bb78
Verification & scope
A deterministic toy contract stated in full here; it is a bounded teaching model, not an authoritative reference or standards implementation. 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:52:28.954904+00:00.
Case digest / 59719de4f919499ff33ee41217fe5e5496c64394c65e9425a3d5a79a319327cf