FA-98976 / Optimizer update state / Open access
Adam bias correction reuses the previous update exponent · case 01
Adam bias correction reuses the previous update exponent.
ROOT CAUSE
The bias correction uses the previous exponent after the guarded first update.
THE FAILURE
The bias correction uses the previous exponent after the guarded first update.
Unsuccessful approach: Correcting the first-moment exponent but advancing the second-moment exponent by one puts the two moments on different scales.
Case contract
For positive integer t and beta values in [0,1), return [m/(1-b1**t),v/(1-b2**t)].
Why this case matters
Optimizer implementations must associate each parameter with its own mathematically specified update state.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(m, v, b1, b2, t):
old=max(1,t-1)
return [m/(1-b1**old),v/(1-b2**old)]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('first moment step one',solve(2,4,0.5,0.5,1),[4,8])
check('second step',solve(1,3,0.5,0.5,2),[4/3,4])
check('coefficient zero',solve(3,5,0,0,1),[3,5])
check('different betas',solve(2,4,0.5,0.25,1),[4,16/3])
check('step three',solve(7,9,0.5,0.5,3),[8,72/7])
check('equal moment correction',solve(1,1,0.5,0.5,1),[2,2])
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 |
|---|---|---|---|
| first moment step one | [4.0, 8.0] | [4, 8] | Passed |
| second step | [2.0, 6.0] | [1.3333333333333333, 4] | Failed |
| coefficient zero | [3.0, 5.0] | [3, 5] | Passed |
| different betas | [4.0, 5.333333333333333] | [4, 5.333333333333333] | Passed |
| step three | [9.333333333333334, 12.0] | [8, 10.285714285714286] | Failed |
| equal moment correction | [2.0, 2.0] | [2, 2] | Passed |
SHA-256 / 55c2264a5aa388411993c49e94b7108973af4d051815ab6d754129f5d23ec9c2
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(m, v, b1, b2, t):
return [m/(1-b1**t),v/(1-b2**(t+1))]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('first moment step one',solve(2,4,0.5,0.5,1),[4,8])
check('second step',solve(1,3,0.5,0.5,2),[4/3,4])
check('coefficient zero',solve(3,5,0,0,1),[3,5])
check('different betas',solve(2,4,0.5,0.25,1),[4,16/3])
check('step three',solve(7,9,0.5,0.5,3),[8,72/7])
check('equal moment correction',solve(1,1,0.5,0.5,1),[2,2])
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 |
|---|---|---|---|
| first moment step one | [4.0, 5.333333333333333] | [4, 8] | Failed |
| second step | [1.3333333333333333, 3.4285714285714284] | [1.3333333333333333, 4] | Failed |
| coefficient zero | [3.0, 5.0] | [3, 5] | Passed |
| different betas | [4.0, 4.266666666666667] | [4, 5.333333333333333] | Failed |
| step three | [8.0, 9.6] | [8, 10.285714285714286] | Failed |
| equal moment correction | [2.0, 1.3333333333333333] | [2, 2] | Failed |
SHA-256 / 700c0488ded44079e1af790a225a7c7dc32fac91ae7cc5f66f50fcd6412ef19a
HELD IN THE MEMBER ARCHIVE
The verified repair and its recorded checks are member-only.
This mechanism has 6 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
These are deterministic scalar or short-vector toy contracts, not claims about production optimizer APIs or training quality. 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-30T16:48:18.999760+00:00.
Case digest / e37eb9467daacf20deeb8642af3333ded2dfffc4e765269a0b91045eda10908f