FA-97336 / Recipe scaling and nutrition / Open access
Equilibrium brine calculator: quarter teaspoon rounding · case 01
1.6 tsp prints 1.75 because quarters always round up.
ROOT CAUSE
Quarter teaspoons are rounded up instead of half-up.
THE FAILURE
Quarter teaspoons are rounded up instead of half-up.
Unsuccessful approach: Floor-dividing by 4 returns whole teaspoons only.
Case contract
Salt grams = total*pct/100 where total = meat+water for "wet" and meat only for "dry". Salt densities per tsp: table 6 g, morton kosher 4.8 g, diamond kosher 2.8 g. Return salt_g half-up to 0.1 (float), tsp half-up to 0.25 (float), and sodium_mg_per_100g = half-up of salt_g*393 per 100 g of total at equilibrium.
Why this case matters
Equilibrium brining sets salt as a percentage of meat plus water and converts between salt brands.
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(meat_g, water_g, pct, salt_type, method):
DENS = {'table': Fraction(6), 'morton kosher': Fraction(24, 5), 'diamond kosher': Fraction(14, 5)}
total = meat_g + (0 if method == 'dry' else water_g)
salt = Fraction(total) * Fraction(pct) / 100
tsp = salt / DENS[salt_type]
sodium = salt * 393 * 100 / total
return {'salt_g': math.floor(salt * 10 + Fraction(1, 2)) / 10, 'tsp': math.ceil(tsp * 4) / 4,
'sodium_mg_per_100g': math.floor(sodium + Fraction(1, 2))}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['wet brine', [1000, 1000, '1', 'table', 'wet'], {'salt_g': 20.0, 'sodium_mg_per_100g': 393, 'tsp': 3.25}],
['dry brine ignores water', [1500, 1000, '1', 'diamond kosher', 'dry'],
{'salt_g': 15.0, 'sodium_mg_per_100g': 393, 'tsp': 5.25}],
['strong morton brine', [2000, 2000, '5', 'morton kosher', 'wet'],
{'salt_g': 200.0, 'sodium_mg_per_100g': 1965, 'tsp': 41.75}],
['regression: quarter teaspoon rounding', [500, 1000, '1', 'diamond kosher', 'wet'],
{'salt_g': 15.0, 'sodium_mg_per_100g': 393, 'tsp': 5.25}],
['repair check: quarter teaspoon rounding', [1000, 500, '1.5', 'morton kosher', 'wet'],
{'salt_g': 22.5, 'sodium_mg_per_100g': 590, 'tsp': 4.75}],
['generated control 1', [2000, 1000, '2', 'diamond kosher', 'dry'],
{'salt_g': 40.0, 'sodium_mg_per_100g': 786, 'tsp': 14.25}],
['generated control 2', [1500, 1000, '5', 'diamond kosher', 'wet'],
{'salt_g': 125.0, 'sodium_mg_per_100g': 1965, 'tsp': 44.75}],
['generated control 3', [2000, 500, '3', 'table', 'wet'],
{'salt_g': 75.0, 'sodium_mg_per_100g': 1179, 'tsp': 12.5}]],
[['dry brine ignores water', [1500, 1000, '1', 'diamond kosher', 'dry'],
{'salt_g': 15.0, 'sodium_mg_per_100g': 393, 'tsp': 5.25}],
['strong morton brine', [2000, 2000, '5', 'morton kosher', 'wet'],
{'salt_g': 200.0, 'sodium_mg_per_100g': 1965, 'tsp': 41.75}],
['wet brine', [1000, 1000, '1', 'table', 'wet'], {'salt_g': 20.0, 'sodium_mg_per_100g': 393, 'tsp': 3.25}],
['regression: quarter teaspoon rounding', [1000, 500, '5', 'table', 'dry'],
{'salt_g': 50.0, 'sodium_mg_per_100g': 1965, 'tsp': 8.25}],
['repair check: quarter teaspoon rounding', [2500, 500, '0.5', 'morton kosher', 'wet'],
{'salt_g': 15.0, 'sodium_mg_per_100g': 197, 'tsp': 3.25}],
['generated control 1', [2000, 2000, '1.5', 'diamond kosher', 'wet'],
{'salt_g': 60.0, 'sodium_mg_per_100g': 590, 'tsp': 21.5}],
['generated control 2', [1000, 2000, '5', 'morton kosher', 'wet'],
{'salt_g': 150.0, 'sodium_mg_per_100g': 1965, 'tsp': 31.25}],
['generated control 3', [2000, 1000, '0.5', 'table', 'wet'],
{'salt_g': 15.0, 'sodium_mg_per_100g': 197, 'tsp': 2.5}]],
[['strong morton brine', [2000, 2000, '5', 'morton kosher', 'wet'],
{'salt_g': 200.0, 'sodium_mg_per_100g': 1965, 'tsp': 41.75}],
['wet brine', [1000, 1000, '1', 'table', 'wet'], {'salt_g': 20.0, 'sodium_mg_per_100g': 393, 'tsp': 3.25}],
['dry brine ignores water', [1500, 1000, '1', 'diamond kosher', 'dry'],
{'salt_g': 15.0, 'sodium_mg_per_100g': 393, 'tsp': 5.25}],
['regression: quarter teaspoon rounding', [2000, 2000, '0.5', 'diamond kosher', 'dry'],
{'salt_g': 10.0, 'sodium_mg_per_100g': 197, 'tsp': 3.5}],
['repair check: quarter teaspoon rounding', [2500, 2000, '3', 'diamond kosher', 'wet'],
{'salt_g': 135.0, 'sodium_mg_per_100g': 1179, 'tsp': 48.25}],
['generated control 1', [1500, 0, '0.5', 'table', 'wet'],
{'salt_g': 7.5, 'sodium_mg_per_100g': 197, 'tsp': 1.25}],
['generated control 2', [1500, 0, '2', 'table', 'wet'],
{'salt_g': 30.0, 'sodium_mg_per_100g': 786, 'tsp': 5.0}],
['generated control 3', [500, 500, '1', 'morton kosher', 'dry'],
{'salt_g': 5.0, 'sodium_mg_per_100g': 393, 'tsp': 1.0}]],
[['wet brine', [1000, 1000, '1', 'table', 'wet'], {'salt_g': 20.0, 'sodium_mg_per_100g': 393, 'tsp': 3.25}],
['dry brine ignores water', [1500, 1000, '1', 'diamond kosher', 'dry'],
{'salt_g': 15.0, 'sodium_mg_per_100g': 393, 'tsp': 5.25}],
['strong morton brine', [2000, 2000, '5', 'morton kosher', 'wet'],
{'salt_g': 200.0, 'sodium_mg_per_100g': 1965, 'tsp': 41.75}],
['regression: quarter teaspoon rounding', [1000, 1000, '0.5', 'diamond kosher', 'wet'],
{'salt_g': 10.0, 'sodium_mg_per_100g': 197, 'tsp': 3.5}],
['repair check: quarter teaspoon rounding', [1000, 1000, '1', 'morton kosher', 'wet'],
{'salt_g': 20.0, 'sodium_mg_per_100g': 393, 'tsp': 4.25}],
['generated control 1', [1000, 500, '2', 'morton kosher', 'wet'],
{'salt_g': 30.0, 'sodium_mg_per_100g': 786, 'tsp': 6.25}],
['generated control 2', [2500, 2000, '0.5', 'morton kosher', 'wet'],
{'salt_g': 22.5, 'sodium_mg_per_100g': 197, 'tsp': 4.75}],
['generated control 3', [1000, 2000, '3', 'diamond kosher', 'wet'],
{'salt_g': 90.0, 'sodium_mg_per_100g': 1179, 'tsp': 32.25}]],
[['dry brine ignores water', [1500, 1000, '1', 'diamond kosher', 'dry'],
{'salt_g': 15.0, 'sodium_mg_per_100g': 393, 'tsp': 5.25}],
['strong morton brine', [2000, 2000, '5', 'morton kosher', 'wet'],
{'salt_g': 200.0, 'sodium_mg_per_100g': 1965, 'tsp': 41.75}],
['wet brine', [1000, 1000, '1', 'table', 'wet'], {'salt_g': 20.0, 'sodium_mg_per_100g': 393, 'tsp': 3.25}],
['regression: quarter teaspoon rounding', [2500, 0, '0.5', 'table', 'dry'],
{'salt_g': 12.5, 'sodium_mg_per_100g': 197, 'tsp': 2.0}],
['repair check: quarter teaspoon rounding', [2500, 2000, '5', 'diamond kosher', 'dry'],
{'salt_g': 125.0, 'sodium_mg_per_100g': 1965, 'tsp': 44.75}],
['generated control 1', [1000, 2000, '3', 'morton kosher', 'wet'],
{'salt_g': 90.0, 'sodium_mg_per_100g': 1179, 'tsp': 18.75}],
['generated control 2', [500, 500, '0.5', 'table', 'dry'],
{'salt_g': 2.5, 'sodium_mg_per_100g': 197, 'tsp': 0.5}],
['generated control 3', [1000, 0, '1.5', 'table', 'dry'],
{'salt_g': 15.0, 'sodium_mg_per_100g': 590, 'tsp': 2.5}]]]
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 |
|---|---|---|---|
| wet brine | {'salt_g': 20.0, 'sodium_mg_per_100g': 393, 'tsp': 3.5} | {'salt_g': 20.0, 'sodium_mg_per_100g': 393, 'tsp': 3.25} | Failed |
| dry brine ignores water | {'salt_g': 15.0, 'sodium_mg_per_100g': 393, 'tsp': 5.5} | {'salt_g': 15.0, 'sodium_mg_per_100g': 393, 'tsp': 5.25} | Failed |
| strong morton brine | {'salt_g': 200.0, 'sodium_mg_per_100g': 1965, 'tsp': 41.75} | {'salt_g': 200.0, 'sodium_mg_per_100g': 1965, 'tsp': 41.75} | Passed |
| regression: quarter teaspoon rounding | {'salt_g': 15.0, 'sodium_mg_per_100g': 393, 'tsp': 5.5} | {'salt_g': 15.0, 'sodium_mg_per_100g': 393, 'tsp': 5.25} | Failed |
| repair check: quarter teaspoon rounding | {'salt_g': 22.5, 'sodium_mg_per_100g': 590, 'tsp': 4.75} | {'salt_g': 22.5, 'sodium_mg_per_100g': 590, 'tsp': 4.75} | Passed |
| generated control 1 | {'salt_g': 40.0, 'sodium_mg_per_100g': 786, 'tsp': 14.5} | {'salt_g': 40.0, 'sodium_mg_per_100g': 786, 'tsp': 14.25} | Failed |
| generated control 2 | {'salt_g': 125.0, 'sodium_mg_per_100g': 1965, 'tsp': 44.75} | {'salt_g': 125.0, 'sodium_mg_per_100g': 1965, 'tsp': 44.75} | Passed |
| generated control 3 | {'salt_g': 75.0, 'sodium_mg_per_100g': 1179, 'tsp': 12.5} | {'salt_g': 75.0, 'sodium_mg_per_100g': 1179, 'tsp': 12.5} | Passed |
SHA-256 / 6aad8dd426bc4a9ff7446b7714eefa9a638693e93b86f0b8123a02d1966a1f1d
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(meat_g, water_g, pct, salt_type, method):
DENS = {'table': Fraction(6), 'morton kosher': Fraction(24, 5), 'diamond kosher': Fraction(14, 5)}
total = meat_g + (0 if method == 'dry' else water_g)
salt = Fraction(total) * Fraction(pct) / 100
tsp = salt / DENS[salt_type]
sodium = salt * 393 * 100 / total
return {'salt_g': math.floor(salt * 10 + Fraction(1, 2)) / 10, 'tsp': math.floor(tsp * 4 + Fraction(1, 2)) // 4,
'sodium_mg_per_100g': math.floor(sodium + Fraction(1, 2))}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['wet brine', [1000, 1000, '1', 'table', 'wet'], {'salt_g': 20.0, 'sodium_mg_per_100g': 393, 'tsp': 3.25}],
['dry brine ignores water', [1500, 1000, '1', 'diamond kosher', 'dry'],
{'salt_g': 15.0, 'sodium_mg_per_100g': 393, 'tsp': 5.25}],
['strong morton brine', [2000, 2000, '5', 'morton kosher', 'wet'],
{'salt_g': 200.0, 'sodium_mg_per_100g': 1965, 'tsp': 41.75}],
['regression: quarter teaspoon rounding', [500, 1000, '1', 'diamond kosher', 'wet'],
{'salt_g': 15.0, 'sodium_mg_per_100g': 393, 'tsp': 5.25}],
['repair check: quarter teaspoon rounding', [1000, 500, '1.5', 'morton kosher', 'wet'],
{'salt_g': 22.5, 'sodium_mg_per_100g': 590, 'tsp': 4.75}],
['generated control 1', [2000, 1000, '2', 'diamond kosher', 'dry'],
{'salt_g': 40.0, 'sodium_mg_per_100g': 786, 'tsp': 14.25}],
['generated control 2', [1500, 1000, '5', 'diamond kosher', 'wet'],
{'salt_g': 125.0, 'sodium_mg_per_100g': 1965, 'tsp': 44.75}],
['generated control 3', [2000, 500, '3', 'table', 'wet'],
{'salt_g': 75.0, 'sodium_mg_per_100g': 1179, 'tsp': 12.5}]],
[['dry brine ignores water', [1500, 1000, '1', 'diamond kosher', 'dry'],
{'salt_g': 15.0, 'sodium_mg_per_100g': 393, 'tsp': 5.25}],
['strong morton brine', [2000, 2000, '5', 'morton kosher', 'wet'],
{'salt_g': 200.0, 'sodium_mg_per_100g': 1965, 'tsp': 41.75}],
['wet brine', [1000, 1000, '1', 'table', 'wet'], {'salt_g': 20.0, 'sodium_mg_per_100g': 393, 'tsp': 3.25}],
['regression: quarter teaspoon rounding', [1000, 500, '5', 'table', 'dry'],
{'salt_g': 50.0, 'sodium_mg_per_100g': 1965, 'tsp': 8.25}],
['repair check: quarter teaspoon rounding', [2500, 500, '0.5', 'morton kosher', 'wet'],
{'salt_g': 15.0, 'sodium_mg_per_100g': 197, 'tsp': 3.25}],
['generated control 1', [2000, 2000, '1.5', 'diamond kosher', 'wet'],
{'salt_g': 60.0, 'sodium_mg_per_100g': 590, 'tsp': 21.5}],
['generated control 2', [1000, 2000, '5', 'morton kosher', 'wet'],
{'salt_g': 150.0, 'sodium_mg_per_100g': 1965, 'tsp': 31.25}],
['generated control 3', [2000, 1000, '0.5', 'table', 'wet'],
{'salt_g': 15.0, 'sodium_mg_per_100g': 197, 'tsp': 2.5}]],
[['strong morton brine', [2000, 2000, '5', 'morton kosher', 'wet'],
{'salt_g': 200.0, 'sodium_mg_per_100g': 1965, 'tsp': 41.75}],
['wet brine', [1000, 1000, '1', 'table', 'wet'], {'salt_g': 20.0, 'sodium_mg_per_100g': 393, 'tsp': 3.25}],
['dry brine ignores water', [1500, 1000, '1', 'diamond kosher', 'dry'],
{'salt_g': 15.0, 'sodium_mg_per_100g': 393, 'tsp': 5.25}],
['regression: quarter teaspoon rounding', [2000, 2000, '0.5', 'diamond kosher', 'dry'],
{'salt_g': 10.0, 'sodium_mg_per_100g': 197, 'tsp': 3.5}],
['repair check: quarter teaspoon rounding', [2500, 2000, '3', 'diamond kosher', 'wet'],
{'salt_g': 135.0, 'sodium_mg_per_100g': 1179, 'tsp': 48.25}],
['generated control 1', [1500, 0, '0.5', 'table', 'wet'],
{'salt_g': 7.5, 'sodium_mg_per_100g': 197, 'tsp': 1.25}],
['generated control 2', [1500, 0, '2', 'table', 'wet'],
{'salt_g': 30.0, 'sodium_mg_per_100g': 786, 'tsp': 5.0}],
['generated control 3', [500, 500, '1', 'morton kosher', 'dry'],
{'salt_g': 5.0, 'sodium_mg_per_100g': 393, 'tsp': 1.0}]],
[['wet brine', [1000, 1000, '1', 'table', 'wet'], {'salt_g': 20.0, 'sodium_mg_per_100g': 393, 'tsp': 3.25}],
['dry brine ignores water', [1500, 1000, '1', 'diamond kosher', 'dry'],
{'salt_g': 15.0, 'sodium_mg_per_100g': 393, 'tsp': 5.25}],
['strong morton brine', [2000, 2000, '5', 'morton kosher', 'wet'],
{'salt_g': 200.0, 'sodium_mg_per_100g': 1965, 'tsp': 41.75}],
['regression: quarter teaspoon rounding', [1000, 1000, '0.5', 'diamond kosher', 'wet'],
{'salt_g': 10.0, 'sodium_mg_per_100g': 197, 'tsp': 3.5}],
['repair check: quarter teaspoon rounding', [1000, 1000, '1', 'morton kosher', 'wet'],
{'salt_g': 20.0, 'sodium_mg_per_100g': 393, 'tsp': 4.25}],
['generated control 1', [1000, 500, '2', 'morton kosher', 'wet'],
{'salt_g': 30.0, 'sodium_mg_per_100g': 786, 'tsp': 6.25}],
['generated control 2', [2500, 2000, '0.5', 'morton kosher', 'wet'],
{'salt_g': 22.5, 'sodium_mg_per_100g': 197, 'tsp': 4.75}],
['generated control 3', [1000, 2000, '3', 'diamond kosher', 'wet'],
{'salt_g': 90.0, 'sodium_mg_per_100g': 1179, 'tsp': 32.25}]],
[['dry brine ignores water', [1500, 1000, '1', 'diamond kosher', 'dry'],
{'salt_g': 15.0, 'sodium_mg_per_100g': 393, 'tsp': 5.25}],
['strong morton brine', [2000, 2000, '5', 'morton kosher', 'wet'],
{'salt_g': 200.0, 'sodium_mg_per_100g': 1965, 'tsp': 41.75}],
['wet brine', [1000, 1000, '1', 'table', 'wet'], {'salt_g': 20.0, 'sodium_mg_per_100g': 393, 'tsp': 3.25}],
['regression: quarter teaspoon rounding', [2500, 0, '0.5', 'table', 'dry'],
{'salt_g': 12.5, 'sodium_mg_per_100g': 197, 'tsp': 2.0}],
['repair check: quarter teaspoon rounding', [2500, 2000, '5', 'diamond kosher', 'dry'],
{'salt_g': 125.0, 'sodium_mg_per_100g': 1965, 'tsp': 44.75}],
['generated control 1', [1000, 2000, '3', 'morton kosher', 'wet'],
{'salt_g': 90.0, 'sodium_mg_per_100g': 1179, 'tsp': 18.75}],
['generated control 2', [500, 500, '0.5', 'table', 'dry'],
{'salt_g': 2.5, 'sodium_mg_per_100g': 197, 'tsp': 0.5}],
['generated control 3', [1000, 0, '1.5', 'table', 'dry'],
{'salt_g': 15.0, 'sodium_mg_per_100g': 590, 'tsp': 2.5}]]]
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 |
|---|---|---|---|
| wet brine | {'salt_g': 20.0, 'sodium_mg_per_100g': 393, 'tsp': 3} | {'salt_g': 20.0, 'sodium_mg_per_100g': 393, 'tsp': 3.25} | Failed |
| dry brine ignores water | {'salt_g': 15.0, 'sodium_mg_per_100g': 393, 'tsp': 5} | {'salt_g': 15.0, 'sodium_mg_per_100g': 393, 'tsp': 5.25} | Failed |
| strong morton brine | {'salt_g': 200.0, 'sodium_mg_per_100g': 1965, 'tsp': 41} | {'salt_g': 200.0, 'sodium_mg_per_100g': 1965, 'tsp': 41.75} | Failed |
| regression: quarter teaspoon rounding | {'salt_g': 15.0, 'sodium_mg_per_100g': 393, 'tsp': 5} | {'salt_g': 15.0, 'sodium_mg_per_100g': 393, 'tsp': 5.25} | Failed |
| repair check: quarter teaspoon rounding | {'salt_g': 22.5, 'sodium_mg_per_100g': 590, 'tsp': 4} | {'salt_g': 22.5, 'sodium_mg_per_100g': 590, 'tsp': 4.75} | Failed |
| generated control 1 | {'salt_g': 40.0, 'sodium_mg_per_100g': 786, 'tsp': 14} | {'salt_g': 40.0, 'sodium_mg_per_100g': 786, 'tsp': 14.25} | Failed |
| generated control 2 | {'salt_g': 125.0, 'sodium_mg_per_100g': 1965, 'tsp': 44} | {'salt_g': 125.0, 'sodium_mg_per_100g': 1965, 'tsp': 44.75} | Failed |
| generated control 3 | {'salt_g': 75.0, 'sodium_mg_per_100g': 1179, 'tsp': 12} | {'salt_g': 75.0, 'sodium_mg_per_100g': 1179, 'tsp': 12.5} | Failed |
SHA-256 / eb5f29b1a0545e19460468fe6273adb1ffd87f9f78dd0d3e322210da1a599b3d
HELD IN THE MEMBER ARCHIVE
The verified repair and its recorded checks are member-only.
This mechanism has 8 recorded checks per implementation. The open-access tier publishes the failure and the unsuccessful fix; the repaired source that passes every check, and the observations that prove it, are available to members.
Every case sharing this mechanism uses the same contract and the same repair, so this one record is held back for all of them.
Member access is invitation-based. Sign in with your invited account to inspect the repair.
Sign in to the archive ↗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:31.179234+00:00.
Case digest / b7eedafd7e42f7a710743cf2e5f43f30b21cbbcf7f2a5862f4b82c04ef235a72