FAILURE MAP
← Case archive

FA-100671 / Speculative decoding bookkeeping / Open access

Decoding: Bonus token is emitted when only part of the draft was accepted · case 01

Bonus token is emitted when only part of the draft was accepted.

Verified by executionVariant 1 · 7 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

Any nonempty accepted prefix is treated as full acceptance.

THE FAILURE

Any nonempty accepted prefix is treated as full acceptance.

Unsuccessful approach: Treating a one-token remainder as full acceptance still emits a bonus after partial acceptance.

Case contract

Emit the supplied bonus token only when every proposed draft token was accepted; otherwise return no bonus.

Why this case matters

A self-contained bookkeeping model makes prefix and token-count semantics observable without a model runtime.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(draft, accepted, bonus):
    return bonus if accepted > 0 else None
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('fully accepted', solve([1,2],2,9),9)
check('partial acceptance', solve([1,2],1,9),None)
check('rejected all', solve([1],0,8),None)
check('empty proposal bonus', solve([],0,7),7)
check('singleton accepted', solve([N],1,4),4)
check('singleton rejected', solve([N],0,4),None)
check('long partial', solve([1,2,3,4],3,5),None)
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 fixtureActualExpectedOutcome
fully accepted99Passed
partial acceptance9NoneFailed
rejected allNoneNonePassed
empty proposal bonusNone7Failed
singleton accepted44Passed
singleton rejectedNoneNonePassed
long partial5NoneFailed

SHA-256 / 797e75743d09596fc2100416150129137065f343d0eddc5e620d1c0f1d70c611

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(draft, accepted, bonus):
    return bonus if accepted >= len(draft)-1 else None
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('fully accepted', solve([1,2],2,9),9)
check('partial acceptance', solve([1,2],1,9),None)
check('rejected all', solve([1],0,8),None)
check('empty proposal bonus', solve([],0,7),7)
check('singleton accepted', solve([N],1,4),4)
check('singleton rejected', solve([N],0,4),None)
check('long partial', solve([1,2,3,4],3,5),None)
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 fixtureActualExpectedOutcome
fully accepted99Passed
partial acceptance9NoneFailed
rejected all8NoneFailed
empty proposal bonus77Passed
singleton accepted44Passed
singleton rejected4NoneFailed
long partial5NoneFailed

SHA-256 / 4e511045bc4f9cef67a2cecea08de517570dac2f68a1b8530abadda529d8b3c3

HELD IN THE MEMBER ARCHIVE

The verified repair and its recorded checks are member-only.

This mechanism has 7 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 finite toy sequences with explicit contracts; they make no claim about production decoder behavior or model 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:38.098892+00:00.

Case digest / fb74060c4670559a1a896494f8331a006dbd8c72fb4d7e9c7dd89be01afee31c