Family-Calibrated Rewards
FDR scores family-scaled check progress without a completion bonus. SPR adds strict success to bounded partial credit, preserving progress credit on successful rollouts too.
Read the paper ↗What it is
- Family Dense Reward Score passed checks relative to a historical scale for the task family. With valid grading, this rule scores progress the same way whether or not the task finishes successfully.
- Success-Prioritized Reward Give bounded credit for passed checks, then add one for verified success. Successful runs keep their progress credit; they are not all assigned the same score.
- Frozen family recalibration Adjust family scales offline to reduce misleading failure rewards, then hold those scales fixed during a training phase.
Why it matters
Passed checks can provide useful feedback without proving completion. These rules distinguish progress from verified success: the first scores progress alone, while the second adds a separate success bonus large enough to put every success above every failure.
The short version is that these rewards measure partial progress, but only one explicitly rewards completion as well. The important detail is that a successful run keeps its progress credit: success does not replace the check-based score.
- Sparse feedback: A final pass/fail result hides how far a failed terminal-agent run got. Passed checks provide a more informative signal.
- Unequal task sizes: The same check count can mean different things in different task families. A family-specific scale gives that count context.
- Completion matters: Passing scenario checks does not necessarily satisfy the final completion gate. Progress and verified success need separate treatment.
Consider a terminal task with scenario checks and a final verifier. A run can pass checks yet fail that verifier. I find this example more useful than thinking of reward as a generic “quality score”: it forces us to distinguish what was checked from whether the task actually finished.
Family Dense Reward, or FDR, divides passed non-hygiene checks by a historical family scale. Hygiene checks are excluded from the progress count. With valid grading, ; in words, the reward is the passed-check count divided by the family's positive divisor. This applies to successful runs too. There is no separate success bonus, and the score need not stop at one. The divisor comes from the historical ninetieth percentile of check totals for that family and stays fixed within a training phase. So what prevents a check-rich failure from outranking a completed task?
FDR alone does not. Success-Prioritized Reward, or SPR, first makes progress credit flatten as checks accumulate, then adds a separate unit for strict success. With valid grading, ; in words, add the binary success result to a progress fraction that stays below one. A failure gets only the fraction. A success gets one plus that same fraction—not a flat reward of one. Holding check count and family fixed, changing failure to success therefore adds exactly one.
This is like keeping two fields in a build report: how much passed, and whether the release gate cleared. The analogy stops at the numerical scoring rule. Every failure remains below one, while every success is at least one, but failures can approach that boundary arbitrarily closely. I like the explicit distinction; I would not read it as a guarantee that training maximizes success probability. What controls how much partial credit a family receives?
The family divisor does. Offline recalibration doubles it for high-reward-failure families and quarters it for long, low-reward families, with failure suppression taking precedence. Increasing the divisor reduces credit for the same passed checks; decreasing it raises that credit. The resulting lookup stays frozen within the phase rather than changing with each batch. How well will that fixed calibration fit later failure modes?
Finally, both rules require valid Common Test Report Format grading. If it is unavailable, both return the strict-success indicator alone. These are rewards computed at rollout completion, not rewards emitted after each check or token. That leaves a separate credit-assignment question: how should that single terminal reward influence the earlier actions?
Read the deep dive
Why People Wanted It
A terminal agent can pass scenario checks and still fail the final completion gate. Reward only the gate, and you discard information about partial progress. Reward passed checks without distinguishing completion, and a check-rich failure can look better than a successful run.
The problem is not just sparse feedback. It is the meaning of the feedback. So the real question is how to preserve useful progress credit while making verified completion a separate, decisive signal.
The Core Move
Scale passed checks by task family; for success prioritization, bound the progress term and add a strict-success bonus without discarding that term.
Let count passed non-hygiene checks, indicate strict terminal success, and identify the task family. Let mean that valid Common Test Report Format (CTRF) grading is available. With positive family divisors and , the rules are:
Since , FDR's lower clamp is redundant. With valid grading, FDR scores progress regardless of success; SPR scores progress plus success. Neither rule switches to a flat success reward when valid grading is present.
| Grading and outcome | FDR | SPR |
|---|---|---|
| Valid report, failure | ||
| Valid report, success | ||
| No valid report |
Why Family Calibration Changes What a Check Is Worth
Now the version for readers who want more of the machinery: the family divisor makes each passed check worth a fixed fraction of a historical check-count scale, not a fraction of the current rollout's executed checks.
For FDR, define
where is the total number of non-hygiene calibration checks and the quantile is computed within family . The fallback divisor is . The lookup is frozen within a training phase.
For valid grading, adding a passed check changes FDR by
Changing only does not change FDR at all. This is what “no separate completion bonus” means: successful rollouts retain their check-based score rather than being assigned .
Nor does the historical divisor cap the reward. If , then FDR exceeds , whether the rollout succeeds or fails. There is no uniform upper bound over check counts. How can a reward keep progress information without allowing a failure to overtake a success?
Why Success-Prioritized Reward Keeps a Separate Success Tier
Here is the part that gets technical: SPR adds the success indicator to a bounded progress function on both successful and failed rollouts.
For a positive recalibrated divisor , define
when grading is valid. The progress function is increasing and concave:
Each additional check helps, but its marginal contribution shrinks. Since , the outcome tiers are
The fallback preserves these tiers when grading is unavailable. Holding check count, family, and report validity fixed, success adds exactly one unit. Across different rollouts, however, there is no uniform positive separation: a failure's progress score can approach , while a success with no passed checks scores exactly .
This addresses an observed proxy mismatch: among audited trajectories, failures received of FDR reward mass, failures scored at least one, and trajectories passed every executed scenario check but failed the terminal gate.
The bound implies reward variance at most one. It does not establish lower policy-gradient variance, convergence, equivalence to maximizing success probability, or potential-based policy invariance. What determines how strongly progress is damped within each family?
Why Frozen Recalibration Targets Families, Not Rollouts
Now the deeper calibration detail: SPR changes the family lookup offline rather than letting each rollout or minibatch determine its own normalization.
Recalibration doubles divisors for high-reward-failure families and quarters them for long, low-reward families. Failure suppression takes precedence. Increasing reduces the progress term for a fixed ; decreasing it increases that term. Neither change alters the separate success bonus.
The resulting lookup is frozen within the phase. This is neither per-batch normalization nor a bonus based on the current trajectory's length. It adjusts how much check progress is worth for a family while leaving the success/failure tier boundary intact. The remaining question is whether a fixed lookup remains appropriate as the policy's failure modes change.
Minimal Causal Code
import torch
def terminal_reward(checks, strict_success, valid_ctrf, divisor, mode):
# checks contains (passed, is_hygiene) pairs from a completed report.
# divisor is selected from the appropriate frozen family lookup.
if mode not in ("fdr", "spr"):
raise ValueError(mode)
success = torch.tensor(float(strict_success), dtype=torch.float64)
if not valid_ctrf:
return success
d = torch.tensor(float(divisor), dtype=torch.float64)
if d.item() <= 0:
raise ValueError("family divisor must be positive")
# Make the progress-count state update explicit.
passed_count = torch.zeros((), dtype=torch.float64)
for passed, is_hygiene in checks:
increment = float(bool(passed) and not bool(is_hygiene))
passed_count = passed_count + increment
if mode == "fdr":
# Success does not replace or add to valid-report FDR.
return torch.clamp_min(passed_count / d, 0.0)
progress = passed_count / (passed_count + d)
# Successful rollouts KEEP progress credit and ADD one.
return success + progress
Use for FDR and for SPR. The loop exposes count accumulation; it does not emit intermediate rewards. Both rewards are computed once at rollout completion, and terminal feedback must not be duplicated across computational chunks.
What You Gain, and What You Lose
FDR gives simple, constant marginal credit on a historical family scale. It does not explicitly reward completion, and a failed rollout can earn a high score. Successful rollouts are scored by the same progress rule.
SPR keeps progress credit on every validly graded rollout and adds a separate success bonus. This ensures every failure scores below every success, but introduces diminishing marginal credit and no uniform positive margin between the tiers. Reward ordering alone does not establish success-probability maximization or optimization stability.
Frozen recalibration can reduce partial credit in families associated with misleading failure rewards, but it relies on an offline lookup. If valid grading is unavailable, both methods lose partial-progress resolution and return only strict success. In either case, “dense” describes the resolution of a terminal score—not step-level reasoning supervision.
With valid grading, FDR scores progress alone; SPR scores bounded progress plus a strict-success bonus. Success never replaces the progress term.