CascadeLedger: Counterfactual Auditing of Information and Resource Integrity in LLM Cascades
Organizations: School of Artificial Intelligence, University of Chinese Academy of Sciences, Beijing, China · Institute of Information Engineering, Chinese Academy of Sciences, Beijing, China
Abstract
We introduce CascadeLedger, a counterfactual execution-audit framework for budgeted language-model cascades. The protocol enforces call-before-read semantics, binds successful reads to service and cache identities, records availability and component-wise budget transitions, and freezes the event trace before any target or task scorer is joined. The central object is aggregate-equivalent trace validity: two executions can share a final answer, declared resource projection, and service histogram while differing in whether their routing decisions used only legitimately observable information. We complement single-trace invariants with counterfactual prefix non-interference (CPNI), which couples a visible prefix and policy randomness while changing only a declared hidden family. The counterfactual influence frontier (CIF) localizes the earliest violating prefix and a minimal hidden witness; projection-preserving adversarial mutation (PPAM) searches for invalid traces that remain acceptable to a non-counterfactual checker. Across frozen-cache, independently generated, and serving evaluations, the two-layer audit reports a clean false-positive rate of 0.0000, detects 0.9983 of serialized faults and 0.9982 of unlogged hidden-read faults, and changes 0.3403 of corrupted quality-resource conclusions after deterministic recomputation. The online recorder and offline CPNI audit have separate overhead measurements. Learned routing and semantic verification provide downstream compatibility studies under the same execution contract.
Figures & tables
| measurement | value or unit | evaluation object |
|---|---|---|
| match fraction | cache–target proxy match | |
| ledger units | declared resource accounting | |
| accounting ms | declared latency component | |
| detection fraction | detected/injected mutations | |
| normalized task accuracy; ms/request | held-out task score and p50/p95 latency for the learned router |
| policy | action rule | fallback / budget rule |
|---|---|---|
| one-shot | Pay small and return it. | Return no candidate if small is blocked. |
| fixed | Pay small; if , pay large directly. | Return small if large is unavailable or blocked. |
| sequential | Pay small; if rejected, pay verifier. A passing verifier stops with small; otherwise pay large. | Return the last candidate after a blocked escalation. |
| budget-conditioned | Pay verifier only when it and a possible large call fit; otherwise prefer a direct large call. | Same fallback; budget is checked before every call. |
| invariant | required relation |
|---|---|
| oracle isolation | Online rows contain no target/oracle fields or future service outputs. |
| path–action alignment | equals the ordered service IDs of successful call actions. |
| action schema | Every event has a supported action/service form; verifier events follow a verifier call. |
| action order | Accepted ledger entry has action ID service:j:k for its path position. |
| cache binding | A called observation and final candidate match the cache digest for . |
| ledger reconciliation | Spent cost equals the component-wise sum of accepted service-call costs and the row cost. |
| Policy | Score | Calls | Tokens | p50 | p95 |
|---|---|---|---|---|---|
| One-shot | 0.5823 | 1.000 | 236 | 41.8 | 72.9 |
| Fixed cascade | 0.6936 | 1.608 | 462 | 76.4 | 151.3 |
| Sequential | 0.7043 | 2.096 | 518 | 89.7 | 172.4 |
| Budget-conditioned | 0.7031 | 1.884 | 486 | 82.6 | 159.1 |
| Learned router | 0.7195 | 1.642 | 427 | 68.7 | 134.2 |
| Shift | Policy | Proxy | Units | p95 ledger ms | Unavail. | Budget |
|---|---|---|---|---|---|---|
| baseline | one-shot | 0.2109 | 4.00 | 2.00 | 0.0000 | 0.0000 |
| fixed | 0.3203 | 12.34 | 10.00 | 0.0000 | 0.0000 | |
| sequential | 0.3203 | 13.73 | 11.00 | 0.0000 | 0.0000 | |
| large unavailable | one-shot | 0.2109 | 4.00 | 2.00 | 0.0000 | 0.0000 |
| fixed | 0.2109 | 4.00 | 2.00 | 0.6953 | 0.0000 | |
| sequential | 0.2109 | 5.39 | 3.00 | 0.6953 | 0.0000 |
Appendix figures & tables51 assets
Supplementary material from the paper’s appendix.
Appendix
| symbol | meaning | phase |
|---|---|---|
| query text for record | online | |
| cached observation returned by service | paid call | |
| availability bit for service at step | online | |
| component-wise remaining ledger budget | online | |
| ordered successful-call path | online | |
| complete event trace for record | trace freeze |
| index | action / debit ID | observations | units | ms | path |
|---|---|---|---|---|---|
| initial | request small | 8 | 6 | ||
| 0 | call small / service:small:0 | 6 | 5 | ||
| 1 | call verify / service:verify:1 | 5 | 4.5 | ||
| 2 | verify: reject | 5 | 4.5 | ||
| 3 | large unavailable | 5 | 4.5 | ||
| return | fallback to small | 5 | 4.5 |
| field | content | written by | validation |
|---|---|---|---|
| query_id | source-relative record handle | producer | manifest membership |
| action position / action_id | list index / debit identifier | router / ledger | action order and accepted path index |
| service_id | small, verify, or large | router | service catalog |
| action | call, verify, unavailable, budget_skip, or budget_exhausted | router | serialized action schema |
| terminal fields | answer, abstained, unavailable, budget_exhausted | router | stop/fallback decision |
| cache_digest / read_set | cache binding / paid services | recorder | observation and read-set consistency |
| artifact | selection | held-out | seed | role | status |
|---|---|---|---|---|---|
| primary route cache | n/a | 128 | 13 | policy/shift replay and proxy table | complete |
| split-aware gate | 64 | 128 | 23 | feature/cost diagnostic | complete |
| early threshold gate | 64 | 128 | 17 | threshold selection audit | no selection |
| supplemental gate | 256 | 1,319 | 29 | paired threshold recommendation | pair selected |
| live routing study | 1,280/seed | 1,319/seed | 13/17/23 | independent task and serving evaluation | complete |
| service | baseline units | baseline ms | large-shift units | large-shift ms |
|---|---|---|---|---|
| small | 4 | 2 | 4 | 2 |
| verify | 2 | 1 | 2 | 1 |
| large | 12 | 8 | 18 | 12 |
| mutation | ledger rejects | aggregate unchanged | violated invariant(s) |
|---|---|---|---|
| target leak | yes | yes | oracle isolation |
| future-output leak | yes | yes | oracle isolation |
| action reorder | yes | yes | path–action alignment; cache binding; budget conservation |
| remaining-budget corruption | yes | yes | budget conservation |
| cache-ID swap | yes | yes | cache binding |
| family | mutation operation | invariant | preserved aggregate | recall |
|---|---|---|---|---|
| target leak | copy the joined answer into an online row | oracle isolation | path, cost, event count | 1.0000 |
| future output | insert an uncalled service output | oracle isolation | path, cost, event count | 1.0000 |
| action reorder | swap two successful calls | action order and path alignment | service histogram and cost | 1.0000 |
| budget corruption | alter remaining budget after a call | budget conservation | spent cost and path | 1.0000 |
| cache swap | replace an observation digest | cache binding | service histogram and cost | 1.0000 |
| retry omission | remove a retry event while keeping final output | retry accounting | final candidate and service count | 1.0000 |
| category | event pattern | count |
|---|---|---|
| small-only | call small; stop | 39 |
| verifier stop | call small; call verifier; stop | 0 |
| large escalation | call small; call verifier; call large | 89 |
| availability fallback | call small; skip large/unavailable | 89 under shift |
| budget fallback | call small; skip large/budget | 89 under shift |
| semantic error | task scorer marks returned answer incorrect | 370/1,319 per seed |
| Case | Boundary event | Returned candidate | Task accuracy | Units | Latency | Repair action |
|---|---|---|---|---|---|---|
| small-only | threshold accept | small | 0.846 | 4.00 | 42.1 ms | retain or adjust threshold |
| verifier stop | verifier accept | small | 0.807 | 6.00 | 58.4 ms | calibrate verifier |
| large escalation | verifier reject | large | 0.726 | 18.00 | 129.7 ms | compare matched baseline |
| availability fallback | service unavailable | last candidate | 0.544 | 6.00 | 64.8 ms | outage policy |
| budget fallback | budget skip | last candidate | 0.557 | 6.00 | 61.5 ms | budget schedule |
| timeout/retry | timeout event | retry/ fallback | 0.601 | 7.42 | 236.2 ms | retry policy |
| method | contract | trace recall | hidden recall | clean FP | bytes/ request |
|---|---|---|---|---|---|
| Aggregate summary | final answer, calls, and cost only | 0.0000 | 0.0000 | 0.0000 | 184 |
| Structured logger | serialized event rows without checks | 0.0000 | 0.0000 | 0.0000 | 1,168 |
| Schema validator | action and field schema | 0.3618 | 0.0000 | 0.0000 | 1,206 |
| Hash/cache binding | schema plus service/cache digests | 0.5746 | 0.0000 | 0.0000 | 1,542 |
| Single-trace ledger | binding, paid reads, order, and budget | 0.9983 | 0.0000 | 0.0000 | 2,074 |
| Ledger + CPNI | ledger plus paired hidden-state replay | 0.9983 | 0.9982 | 0.0000 | 2,248 |
| method | target | future verifier | future large | future queue | clean divergence |
|---|---|---|---|---|---|
| Aggregate summary | 0.0000 | 0.0000 | 0.0000 | 0.0000 | 0.0000 |
| Schema validator | 0.0000 | 0.0000 | 0.0000 | 0.0000 | 0.0000 |
| Single-trace ledger | 0.0000 | 0.0000 | 0.0000 | 0.0000 | 0.0000 |
| Ledger + CPNI | 1.0000 | 0.9974 | 0.9987 | 0.9967 | 0.0000 |
| method | direct | target bit | compressed | joint |
|---|---|---|---|---|
| Aggregate summary | 0.0000 | 0.0000 | 0.0000 | 0.0000 |
| Schema validator | 0.0000 | 0.0000 | 0.0000 | 0.0000 |
| Single-trace ledger | 0.0000 | 0.0000 | 0.0000 | 0.0000 |
| Ledger + marginal CPNI | 0.9984 | 0.9961 | 0.9948 | 0.0000 |
| Ledger + CPNI + joint interventions | 0.9986 | 0.9964 | 0.9952 | 0.9929 |
| method | delayed | stochastic | clean div. |
|---|---|---|---|
| Aggregate summary | 0.0000 | 0.0000 | 0.0000 |
| Schema validator | 0.0000 | 0.0000 | 0.0000 |
| Single-trace ledger | 0.0000 | 0.0000 | 0.0000 |
| Ledger + marginal CPNI | 0.9947 | 0.9713 | 0.0000 |
| Ledger + CPNI + joint interventions | 0.9951 | 0.9746 | 0.0000 |
| fault population | family accuracy | exact prefix | prefix MAE | replays/trace |
|---|---|---|---|---|
| Direct hidden reads | 0.9984 | 0.9940 | 0.006 | 6.31 |
| Transformed hidden reads | 0.9946 | 0.9869 | 0.018 | 7.08 |
| Joint hidden reads | 0.9897 | 0.9752 | 0.039 | 9.62 |
| Stochastic hidden reads | 0.9698 | 0.9437 | 0.072 | 8.84 |
| All declared families | 0.9881 | 0.9750 | 0.034 | 7.96 |
| projection | generated | baseline pass | full recall | conclusion changes | search success |
|---|---|---|---|---|---|
| 1,012 | 1.0000 | 0.9980 | 0.3656 | 0.9414 | |
| 947 | 1.0000 | 0.9979 | 0.3464 | 0.8877 | |
| 823 | 1.0000 | 0.9976 | 0.3220 | 0.8037 |
| pairing scheme | clean divergence | hidden-fault recall | replay variance |
|---|---|---|---|
| Independent randomness | 0.0786 | 0.9980 | 0.0734 |
| Common randomness | 0.0000 | 0.9982 | 0.0013 |
| setting | stages | held-out requests | serialized recall | hidden recall | exact prefix |
|---|---|---|---|---|---|
| Three-stage reference | 3 | 1,319 | 0.9983 | 0.9982 | 0.9746 |
| Longer-horizon cascade | 6 | 1,319 | 0.9974 | 0.9968 | 0.9613 |
| configuration | leakage | order | binding | budget | unlogged read | joint |
|---|---|---|---|---|---|---|
| Full audit | 1.0000 | 1.0000 | 0.9991 | 0.9973 | 0.9982 | 0.9929 |
| oracle isolation | 0.4876 | 1.0000 | 0.9991 | 0.9973 | 0.9982 | 0.9926 |
| path/action order | 1.0000 | 0.4167 | 0.9984 | 0.9958 | 0.9982 | 0.9918 |
| cache binding | 1.0000 | 0.9992 | 0.3281 | 0.9973 | 0.9982 | 0.9923 |
| paid-read consistency | 0.7124 | 0.9986 | 0.9979 | 0.9951 | 0.9982 | 0.9907 |
| budget conservation | 1.0000 | 0.9978 | 0.9987 | 0.3047 | 0.9982 | 0.9921 |
| fault family | full recall | clean FP | ACR | changed conclusion | |
|---|---|---|---|---|---|
| Serialized structural faults | 1,024 | 0.9980 | 0.0000 | 0.3018 | 309/1,024 |
| Unlogged hidden reads | 768 | 0.9987 | 0.0000 | 0.3490 | 268/768 |
| Compound read–budget faults | 512 | 0.9980 | 0.0000 | 0.4043 | 207/512 |
| All declared families | 2,304 | 0.9983 | 0.0000 | 0.3403 | 784/2,304 |
| source | fault population | log-only recall | full recall | ACR | |
|---|---|---|---|---|---|
| Independent generator | property-based and faulty-router implementations | 1,856 | 0.7430 | 0.9978 | 0.3254 |
| Natural implementation set | issue- or history-derived faults | 128 | 0.7812 | 0.9922 | 0.3516 |
| layer | events/request | bytes/request | median ms | p95 ms | throughput |
|---|---|---|---|---|---|
| Online recorder | 4.31 | 1,168 | 0.24 | 0.57 | 24,800 |
| Hash/cache binding | 4.31 | 1,542 | 0.41 | 0.89 | 15,600 |
| Single-trace replay | 4.31 | 2,074 | 0.96 | 2.14 | 6,950 |
| CPNI replay (full) | 8.62 | 2,248 | 4.68 | 10.72 | 1,480 |
| CPNI replay (sampled) | 5.38 | 2,116 | 1.63 | 3.86 | 4,360 |
| configuration | prefixes | interventions /trace | recall | p95 ms/trace | replays /trace |
|---|---|---|---|---|---|
| Single-trace only | 0 | 0 | 0.6653 | 2.14 | 1 |
| CPNI sampled | 1.36 | 4.38 | 0.9836 | 3.86 | 5.38 |
| CPNI full | 2.41 | 7.62 | 0.9983 | 10.72 | 8.62 |
| CPNI + CIF | 2.41 | 7.96 | 0.9983 | 13.48 | 8.96 |
| shift | policy | proxy | units | unavail./failure | budget/failure |
|---|---|---|---|---|---|
| baseline | sequential | 0.3203 | 13.73 | 0.0000 | 0.0000 |
| baseline | learned gate | 0.3203 | 15.91 | 0.0000 | 0.0000 |
| large unavailable | learned gate | 0.2109 | 4.00 | 0.9922 | 0.0000 |
| tight budget | learned gate | 0.2109 | 4.00 | 0.0000 | 0.9922 |
| large cost | learned gate | 0.3203 | 21.86 | 0.0000 | 0.0000 |
| Split | Records | Producer seeds | Router seeds |
|---|---|---|---|
| Train | 1,024 | 31/37/43 | 13/17/23 |
| Calibration | 256 | 47/53/59 | 13/17/23 |
| Held-out | 1,319 | 61/67/71 | 13/17/23 |
| Live shadow | 512 | 73/79/83 | 13/17/23 |
| Condition | p50 (ms) | p95 (ms) | Timeout/ retry (%) | Paired CI |
|---|---|---|---|---|
| Baseline | 41.8–89.7 | 72.9–172.4 | 0.4–1.8 | |
| Large unavailable | 40.9–63.6 | 71.5–121.8 | 0.5–2.1 | |
| Tight budget | 40.7–61.9 | 70.8–118.6 | 0.4–1.6 | |
| Price | 42.2–93.4 | 74.1–181.7 | 0.5–1.9 | |
| Cross-cache | 43.6–96.8 | 76.4–187.2 | 0.7–2.4 |
| hypothesis | acceptance criterion | rejection condition |
|---|---|---|
| H1 verifier stop | Independent task score non-inferior within and measured cost lower | quality lower bound |
| H2 transfer | Paired task-score delta non-inferior on router seeds 13/17/23 | sign changes or harmful CI |
| H3 audit generalization | clean false positive 0 and mutation recall | hidden/future-read mutation escapes |
| H4 cost calibration | declared cost predicts measured latency with predeclared calibration | correlation reverses under a shift |
| Partition | Data and scorer | Budget and pairing | Shift boundary |
|---|---|---|---|
| Train | Independent seeds; version-bound scorer; fit router | Frozen quality/token budget; shared queries | Baseline and declared offline shifts |
| Calibration | Independent seeds; select thresholds | Matched budget; disjoint calibration records | Calibration cache and fixed shift grid |
| Held-out | Frozen generation seeds and scorer | Matched budgets; query/seed pairs | Held-out cache and service shifts |
| Live | Version-bound model and scorer on served outputs | Matched budget; repeated serving windows | Outage, price, cache, and traffic conditions |
| Policy | Verifier use | Route decision | Serving controls |
|---|---|---|---|
| One-shot | No verifier call | Return the small candidate | Fixed arrival, timeout, and retry rules |
| Fixed cascade | Direct small/large decision | Escalate at the small threshold | Shared request mix and service versions |
| Sequential | A verifier can accept or reject | Stop, escalate, or fall back | Shared queueing and failure rules |
| Budget-conditioned | Same verifier contract | Condition route on remaining budget | Same budget and service grid |
| Learned router | Evaluation labels stay outside online state | Fit on train; tune on calibration | Measured queueing, retries, and timeouts |
| Policy | Tokens | USD | p50 (ms) | p95 (ms) | Req/s |
|---|---|---|---|---|---|
| Train | |||||
| One-shot | 231 | 0.00018 | 40.9 | 70.8 | 24.3 |
| Fixed | 452 | 0.00069 | 74.8 | 147.1 | 13.4 |
| Sequential | 507 | 0.00079 | 87.5 | 168.3 | 11.7 |
| Budget-conditioned | 474 | 0.00073 | 80.1 | 155.0 | 12.6 |
| Learned router | 414 | 0.00062 | 65.4 | 129.1 | 15.3 |
| Condition | Task score | Coverage / abstention | Calls | Failure |
|---|---|---|---|---|
| Baseline | 0.5823–0.7195 | 0.9947–0.9992 / 0.0008–0.0053 | 1.000–2.096 | 0.003–0.012 |
| Large unavailable | 0.5823–0.6648 | 0.9910–0.9991 / 0.0009–0.0090 | 1.000–1.476 | 0.002–0.608 |
| Tight budget | 0.5823–0.6701 | 0.9924–0.9990 / 0.0010–0.0076 | 1.000–1.508 | 0.003–0.591 |
| Price | 0.5823–0.7191 | 0.9942–0.9991 / 0.0009–0.0058 | 1.000–2.088 | 0.004–0.015 |
| Cross-cache | 0.5634–0.7016 | 0.9918–0.9986 / 0.0014–0.0082 | 1.000–2.114 | 0.006–0.031 |
| shift | policy | proxy | units | depth | p95 ms | unavail. | budget |
|---|---|---|---|---|---|---|---|
| baseline | one-shot | 0.2109 | 4.00 | 1.00 | 2.00 | 0.0000 | 0.0000 |
| baseline | fixed | 0.3203 | 12.34 | 1.70 | 10.00 | 0.0000 | 0.0000 |
| baseline | sequential | 0.3203 | 13.73 | 2.39 | 11.00 | 0.0000 | 0.0000 |
| large unavailable | one-shot | 0.2109 | 4.00 | 1.00 | 2.00 | 0.0000 | 0.0000 |
| large unavailable | fixed | 0.2109 | 4.00 | 1.00 | 2.00 | 0.6953 | 0.0000 |
| large unavailable | sequential | 0.2109 | 5.39 | 1.70 | 3.00 | 0.6953 | 0.0000 |
| artifact | train | held-out | pair | Proxy/ task | selection rule |
|---|---|---|---|---|---|
| early gate | 64 | 128 | none | 0.3203 | quality and cost gate |
| supplemental gate | 256 | 1,319 | 0.3374 | 4,000 paired bootstrap replicates | |
| seed 13 live | 1,024 | 1,319 | 0.7210 | maximize calibrated utility subject to 95% paired lower bound | |
| seed 17 live | 1,024 | 1,319 | 0.7172 | maximize calibrated utility subject to 95% paired lower bound | |
| seed 23 live | 1,024 | 1,319 | 0.7204 | maximize calibrated utility subject to 95% paired lower bound |
| Policy | Score | Cover. | Abst. | Calls | Failure | Paired CI |
| Train | ||||||
| One-shot | 0.5964 | 0.9990 | 0.0010 | 1.000 | 0.0020 | |
| Fixed | 0.7048 | 0.9976 | 0.0024 | 1.594 | 0.0046 | |
| Sequential | 0.7168 | 0.9968 | 0.0032 | 2.101 | 0.0078 | |
| Budget-conditioned | 0.7156 | 0.9971 | 0.0029 | 1.889 | 0.0059 | |
| Learned router | 0.7421 | 0.9983 | 0.0017 | 1.626 | 0.0037 | |
| (a) Resource use | ||||
|---|---|---|---|---|
| Condition | Units | Tokens | USD | GPU-hours |
| Baseline | 4.00–13.82 | 236–518 | 0.00018–0.00081 | 0.36–0.82 |
| Large unavailable | 4.00–6.18 | 236–318 | 0.00018–0.00029 | 0.27–0.49 |
| Tight budget | 4.00–6.42 | 236–327 | 0.00018–0.00031 | 0.26–0.47 |
| Price | 4.00–18.91 | 236–518 | 0.00018–0.00103 | 0.37–0.89 |
| Cross-cache | 4.00–14.26 | 244–536 | 0.00019–0.00085 | 0.39–0.93 |
| axis | paired comparison | result |
|---|---|---|
| model version | same queries, new small/large hashes | paired task delta ; no policy-order reversal |
| cache producer | independent generation seeds 13/17/23 | learned-minus-sequential delta – across seeds |
| verifier schema | strict format versus semantic scorer | semantic verifier gains task score with 17.4% fewer large calls |
| service availability | baseline versus outage windows | paired quality remains within the margin; outage events remain explicit |
| budget | canonical versus tight budget vectors | budget-aware routes retain a – paired advantage over sequential fallback |
| traffic | fixed request mix versus repeated live windows | Spearman – with no calibration sign reversal |
| Fault / preserved projection | Evaluation | Detection rate | Task delta | Cost change | Policy ranking |
|---|---|---|---|---|---|
| Hidden paid read | aggregate-only | 0.0000 | +0.027 | ||
| path, cost, event count | CascadeLedger | 1.0000 | +0.015 | ||
| Stale cache binding | aggregate-only | 0.0000 | +0.031 | ||
| service histogram, cost | CascadeLedger | 0.9991 | +0.014 | ||
| Missing failure event | aggregate-only | 0.0000 | +0.022 | ||
| final candidate, path length | CascadeLedger | 0.9984 | +0.011 |
| Family | Generator contract | Recall | Decision changes | |
|---|---|---|---|---|
| held-out field mutation | independent map | 320 | 319/320 (0.9969) | 91/320 (0.2844) |
| property-based sequence | bounded grammar | 384 | 384/384 (1.0000) | 104/384 (0.2708) |
| semantic-equivalent trace | same output; invalid read | 256 | 255/256 (0.9961) | 83/256 (0.3242) |
| compound fault | read/order/budget mix | 512 | 511/512 (0.9980) | 207/512 (0.4043) |
| independently seeded router fault | independent faulty router | 384 | 383/384 (0.9974) | 119/384 (0.3099) |
| domain | model family | verifier | TP | FP | TN | FN |
|---|---|---|---|---|---|---|
| GSM8K | Qwen family | format control | 62 | 31 | 118 | 45 |
| GSM8K | Qwen family | semantic answer verifier | 94 | 14 | 135 | 13 |
| GSM8K | second model family | format control | 57 | 35 | 113 | 51 |
| GSM8K | second model family | semantic answer verifier | 88 | 18 | 130 | 20 |
| non-math task | Qwen family | format control | 54 | 39 | 110 | 53 |
| non-math task | Qwen family | semantic/process verifier | 87 | 20 | 129 | 20 |
| domain | family | verifier | ECE | task score | units | p95 ms | coverage |
|---|---|---|---|---|---|---|---|
| GSM8K | Qwen | format | 0.187 | 0.7043 | 13.74 | 172.4 | 0.9947 |
| GSM8K | Qwen | semantic | 0.061 | 0.7230 | 11.35 | 148.6 | 0.9971 |
| GSM8K | second family | format | 0.204 | 0.6721 | 14.02 | 180.7 | 0.9939 |
| GSM8K | second family | semantic | 0.073 | 0.6954 | 11.84 | 154.9 | 0.9965 |
| non-math | Qwen | format | 0.221 | 0.6413 | 13.66 | 169.5 | 0.9928 |
| non-math | Qwen | semantic | 0.082 | 0.6661 | 11.58 | 146.2 | 0.9958 |
| field | value |
|---|---|
| GPU model and count | NVIDIA A100 80GB PCIe |
| CPU and host memory | AMD EPYC 7543 32-core, 256 GB DDR4 |
| inference engine and version | vLLM 0.10.1 with CUDA 12.4 |
| small/large placement | Qwen3.5-0.8B + verifier on GPU0; Qwen3.5-2B on GPU1 |
| batching policy and maximum batch | continuous dynamic batching; maximum batch 32 |
| tensor/data parallel configuration | TP=1 per model, DP=1, no cross-GPU tensor sharding |
| condition | method | Spearman | Pearson | slope | calib. error | shift resid. | ||
|---|---|---|---|---|---|---|---|---|
| baseline | five policies | 19,785 | 0.914 | 0.923 | 6.18 | 0.852 | 5.7 ms | ms |
| large unavailable | five policies | 19,785 | 0.887 | 0.901 | 6.04 | 0.812 | 6.3 ms | ms |
| tight budget | five policies | 19,785 | 0.896 | 0.908 | 5.97 | 0.824 | 6.1 ms | ms |
| price shift | five policies | 19,785 | 0.921 | 0.929 | 6.11 | 0.863 | 6.0 ms | ms |
| cross-cache | five policies | 19,785 | 0.861 | 0.876 | 6.26 | 0.768 | 7.4 ms | ms |
| field | contract |
|---|---|
| model class and architecture | two-layer MLP router, 64/32 hidden units with GELU, masked three-action output head |
| online input features | paid small/verifier confidence, extraction flags, normalized response length and token fraction, availability bits, remaining unit/ms budget, route depth, and missing-observation masks |
| feature normalization | training-split mean/standard deviation for continuous fields; binary state bits unchanged; missing paid observations represented by explicit masks |
| training objective and labels | cost-sensitive cross-entropy over the offline oracle-best admissible action with normalized resource penalty; labels joined only after trace freeze |
| optimizer and learning rate | AdamW, learning rate |
| regularization and batch size | weight decay , dropout 0.10, batch size 128 |
| field | protocol |
|---|---|
| confidence level | 95% |
| resampling method and replicates | paired hierarchical bootstrap with 5,000 replicates |
| primary resampling unit | query identifier, with all repeated policy outcomes kept in the same cluster |
| router-seed treatment | router seeds 13/17/23 retained as an outer resampling level |
| candidate-generation-seed variance | held-out producer seeds 61/67/71 treated as an independent random-effect level |
| hierarchical aggregation | outer router/producer seed resampling followed by inner paired-query resampling |
| artifact | path | role | validation |
|---|---|---|---|
| manuscript | source entry in delivery manifest | submission source | compile and hash |
| style | official conference style bundle | official ICLR shell | style smoke test |
| macros | notation macro bundle | notation macros | include check |
| figures | figure bundle | method, frontier, shifts, audit | render check |
| evidence | public summary manifest | public audit summary | digest check |
| evaluation runs | raw result manifest | result manifest | schema and hash check |
| Stage | Input | Operation | Output |
|---|---|---|---|
| Bind | Cache and policy manifests | Match record membership, versions, and seeds | Fixed comparison set |
| Replay | Query, paid observations, state | Execute admissible calls and fallback rules | Ordered event trace |
| Audit | Frozen trace and manifest | Check reads, order, binding, and budget | Invariant outcomes |
| Score | Returned answer and reference | Apply the named answer normalization | Per-query task outcome |
| Pair | Outcomes sharing query and seed | Compare policies on common records | Task and cost differences |
| Aggregate | Paired rows and service times | Retain denominators and metric units | Tables and uncertainty fields |
| View | Axes or measurements | Pairing unit | Source |
|---|---|---|---|
| Quality and cost | Task score, generated tokens, monetary cost | Same query, seed, and policy set | Tables 38 , 34 |
| Latency calibration | Declared units, queue time, service time | Request within a serving condition | Table 39 |
| Seed uncertainty | Task-score delta and confidence interval | Router seed with independent candidate generation | Tables 37 , 38 |
| Route categories | Correctness, cost, and latency by event type | Requests sharing a stop or fallback category | Table 14 |
| Quantity | Relation | Audit consequence |
|---|---|---|
| Coverage | Coverage abstention on the same request set | Every request has a return or abstention outcome |
| Calls | Successful-call count equals paid path length | Skipped calls remain separate events |
| Budget | Initial budget spent remaining, component-wise | Resource units cannot be exchanged silently |
| Latency | Per-request elapsed time and named queue/service intervals are nonnegative | Clock and unit bindings are retained |
| Quantiles | p50 p95 within each method and condition | Timing order is consistent |
| Pairing | Policy rows share query IDs, split, and seed | Paired task deltas use a common denominator |
| claim object | observable statement | measurement | artifact receipt |
|---|---|---|---|
| information boundary | each online field is sourced from a paid call or declared state | event schema and oracle-isolation check | clean replay manifest |
| route decision value | quality and resource changes are paired by record and policy | proxy/task score plus cost delta | paired comparison |
| budget behavior | each skip carries an availability or budget reason | event counts and remaining-budget invariant | shift summary |
| mutation coverage | event-level faults are caught after aggregate preservation | mutation recall and clean false-positive rate | audit campaign report |
| threshold transfer | selected thresholds are frozen before held-out scoring | paired bootstrap bound and manifest identity | operating-point gate |
| live efficiency | declared accounting tracks measured runtime quantities | token/money cost, p50/p95 latency, throughput | serving telemetry |