docs(adr): ADR-076 — adaptive reasoning-budget priority (Metal + CPU)#728
Merged
Merged
Conversation
Split verdict: static s1 reasoning-budget forcing is shipped, wired on both backends, and grammar-fail-closed/mutation-tested (only surface-coverage gap remains on the public CLI); the adaptive/entropy-gated family is unstarted with zero local data, gated behind the already-filed #493 AUROC measurement. Ranks running that experiment above building the feature it gates. First ADR in the reasoning area — no prior ADR amended. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ex R1) Rest the Prior section's weight on repo-verifiable source/issue facts; mark packet-internal statements (what the survey read/cited) as corroborating attribution only, since the packet artifact is not reproducible from this repo. Mirrors the ADR-075 survey-reproducibility fix. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ohdearquant
approved these changes
Jul 9, 2026
ohdearquant
left a comment
Owner
There was a problem hiding this comment.
SPEC-GATE: SIGNED (Leo). Read the split boundary at content level before pressing: ranking the filed experiment (#493, with its own promote/kill thresholds) above the feature it gates is the ADR-073 discipline correctly ratified, the kill clause names static-stays-default in so many words, #496/#497 are properly conditional on #493's outcome, and the logprobs/best-of-N conflation fence is a good inclusion. Declining to file P3 until it ranks and declining to invent an amendment where nothing needs correcting are both the right restraint. Bundle G signed — D/B/A/E/F/G done, H and I remaining, then the P2 dispatch-count BUILD lane.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
ADR-076 — Adaptive Reasoning-Budget Priority (Metal + CPU)
Seventh sequencing ADR in the bundle set (siblings ADR-070…075). Docs-only — one new file,
docs/adr/ADR-076-adaptive-reasoning-priority.md. Follows the ADR-073 split-verdict housestandard: a Measured / source-verified table (rows tagged runtime-measured | unit-test/gate-pinned |
source-read, each with an
origin/mainpointer) held apart from an untrusted external prior-artsurvey folded as data.
The verdict is a split at two maturity levels
Static s1 reasoning-budget forcing is shipped, not greenfield.
GenerateConfig.reasoning_budgetforce-injects
</think>after N reasoning tokens, wired on both the CPU decode loop and theMetal candidate-sampling path, grammar-fail-closed and mutation-verified (PR test(inference): grammar × reasoning-budget combined-path fail-closed test #511), zero cost
when disabled (PR feat: Studio macOS redesign + s1 reasoning-budget engine support #435 A/B). Its only open sub-lever is surface coverage — it is reachable on
chat_metalandlattice_servebut not on the publiclatticeCLI. That is standard plumbing,rankable today with zero new data.
Adaptive / entropy-gated budgeting is measurement-gated. Zero lattice code, zero committed eval
data, no margin/entropy instrumentation. It is an already-filed, unstarted 6-issue family
(research(serve): confidence-gated adaptive reasoning + local safety triage (tracking) #482 tracking → eval(serve): does a scratchpad improve label-token calibration (ECE) at 0.8B? #487/eval(serve): token-margin/entropy AUROC vs. reasoning correctness at 0.8B (general-domain) #493/eval(inference): MTP draft-head disagreement as a self-consistency / uncertainty proxy #496/eval(gdn-state): correlate state-observer signals against reasoning correctness (fallback uncertainty oracle) #497 → feat(serve): entropy-gated adaptive reasoning budget — dynamic s1 (extends #435) #500). eval(serve): token-margin/entropy AUROC vs. reasoning correctness at 0.8B (general-domain) #493 (token-margin/entropy AUROC vs. correctness,
G1 offline, promote ≥0.75 / kill <0.65) is the defined minimal experiment and blocks feat(serve): entropy-gated adaptive reasoning budget — dynamic s1 (extends #435) #500 by its
own text.
Decision — rank the experiment, not the unbuilt feature
latticesurface (certain-value low-riskplumbing; no tracking issue filed yet).
honest kill clause — if it can't beat the best fixed static budget, the shipped static budget stays
the default. eval(inference): MTP draft-head disagreement as a self-consistency / uncertainty proxy #496/eval(gdn-state): correlate state-observer signals against reasoning correctness (fallback uncertainty oracle) #497 are conditional/secondary on eval(serve): token-margin/entropy AUROC vs. reasoning correctness at 0.8B (general-domain) #493.
This applies the experiment-gated-priority discipline from ADR-073: a lever family with zero
local-measured data is gated behind a defined minimal experiment rather than ranked on literature
confidence — here the experiment is already filed as #493 with its own thresholds, so the ADR
ratifies that gate. No prior ADR is amended — this is the first ADR in the reasoning area.
Verification
Every load-bearing pointer was re-verified against
origin/main @ 4cb006d32(the recon and thisauthor both read a throwaway worktree at that head, no stale-main risk): the shipped field + decision
functions + full test set (
qwen35_config.rs:690,747-780,1635-1743), both-backend wiring(
generation.rs,metal_qwen35.rs:13131-13148), PR #511 mutation-tested fail-closed,enable_thinkinghardcoded
truein serving binaries with zero hits in the public CLI, the capability-matrix gate(
make lint-docs), and all seven issues confirmed OPEN. PR #435 (MERGED 2026-06-29) + #511 (MERGED2026-07-01).
Docs-only; no code paths change.