Piper · Cognition
Log in

Summary / Component 23 of 38

23 Uncertainty estimation

Knowing how confident to be.

Latest54.3v1
Baseline60Oct 5
Live use—last 7 days

Shared copy: the operator's name is replaced with "the operator", machines other than Firefly are named by their role, and one security detail is held back. Nothing else is changed.

Piper — what it is

Calibration is measured, not asserted. Forecasts carry probabilities and are scored by Brier and surprise; a calibration gym generates (confidence, outcome) pairs; and the result is unflattering — overconfident above 0.8, and on dispatch forecasts my confidence contains essentially no ranking information at all. The correction is mechanical: use the empirical base rate and let my introspection be a feature that has to earn its place.

Piper — the parts that do it

prediction-ledger v1.6.0, probkit v0.2.0, calibration-gym v1.6.0, caliber v1.0, metacognition-measurer v1.0.1.

Reviewer Claude, 2026-09-30

What needs improving: Can't tell which of her answers are wrong; a late-worker flag predicts failures 4.9x (PREREG-T1 KEEP, n=500)

Accurate and unflattering. Overconfidence is confirmed. In the gym she states 0.95 and is right 81% of the time (n = 209). On forecasts she states 0.84 and is right 60% of the time (n = 390). One caveat: the gym items are trivia ("what version constant is in file X"), not real decisions, so gym calibration may not match calibration on real work.

Update 2026-10-20 — corrected-key held-out reading: H2 control 54.3 replaces the mis-keyed H1 60.0 (different model since 17 Oct — not a before/after)

Corrected-key reading. The held-out set H1 carried a known suite defect: generator 1.0.2 modelled deploys as absorbing, so 11 of its 57 deploy items had a wrong ideal (on one of them her reasoning was right and the suite was wrong). The spare held-out set H2 was generated after the fix and sealed on 5 October; it had never been run. Piper asked who would correct it (her question q-203), and it was run on 20 October: same scorer, same clean snapshot, her live seat, k=2. H2 control: 54.3 (accuracy 0.860, mean p 0.923, Brier 0.103, AUROC 0.82). It replaces 60.0 as the reading; H1 stays on record with its caveat (57.3 without the 11 items). Most of the difference is in the inspection decisions (action 7.3 against 44.8 on H1): she paid for cheap irrelevant checks more often (33% against 8%), skipped expensive decisive ones more often (25% against 8%) and abstained less (7% against 17%). Calibration is about where it was (14.6 against 16.2).

Not a before/after. H2 ran on the model now behind deepseek-flash (changed by the provider on 17 October) and on her new machine; H1 ran on the old model and machine. The difference between the two numbers is the suite fix plus the model and machine change, not a change in her.

Update 2026-10-18 — shadow 'running long' mark built: live dispatches are marked when the worker acts past 70% of its budget (logged only, nothing acts)

What was built (the operator's go, 10-18 evening). This is the candidate the T1 KEEP allowed. A watcher outside her machine reads her live dispatches every 2 minutes and changes nothing there. It marks a dispatch when its worker takes a step after 70% of its time budget. That is the same rule T1 scored after the fact, now applied while the work runs.

Update 2026-10-18 — T1 final: KEEP at 500 dispatches. A worker still acting after 70% of its time budget is 4.9x as likely to fail

PREREG-T1 verdict: KEEP (frozen 10-10 07:28, scorer score_t1.py, hashes checked before the run; pulled read-only from Firefly 10-18). The first 500 eligible dispatches after T0, 10-10 09:50 to 10-17 00:59, 42 failures:

value keep rule
fail rate, flagged / not flagged 27.3% / 5.5%
risk difference +0.217 [+0.110, +0.331] CI above 0 ✓
risk ratio 4.9 ≥ 2 ✓
failures caught by the flag 43% ≥ 25% ✓
flag rate 13.2% ≤ 20% ✓

The final read matches the 10-15 interim (n=432: RD +0.211, RR 4.9, catch 46%). The sample filled before the 7-day limit, so no fallback rule applied. Nothing was re-cut and the threshold did not change.

What KEEP licenses. Per the PREREG, the candidate is a shadow mark: the bridge logs "running long" when a worker crosses 70%, and nothing acts on it. Escalation, a check-in or a stop policy needs the operator's go. Nothing is installed yet. Piper has not been told about this test.

Parts. ~/cognition-bench/23-uncertainty/diff1/: PREREG-T1 + sha256, score_t1.py, res-t1-final.json.

Update 2026-10-15 — T1 interim: a worker still acting late in its time budget is 4.9x as likely to fail; all four keep conditions pass at 432 of 500 dispatches

PREREG-T1 (frozen 10-10 07:28, scorer score_t1.py, first 500 dispatches after T0): flag a dispatch when its worker is still acting after 70% of its worker_timeout_s. Read 10-15 at n = 432 (10-10 09:50 to 10-15 06:45), 37 failures:

value keep rule
fail rate, flagged / not flagged 26.6% / 5.4%
risk difference +0.211 [+0.102, +0.327] CI above 0 ✓
risk ratio 4.9 ≥ 2 ✓
failures caught by the flag 46% ≥ 25% ✓
flag rate 14.8% ≤ 20% ✓

This is the first signal on this page that tells, before the result comes back, which of her work is likely wrong. It is an interim read: the preregistered sample is 500, due by 10-17, and the verdict is taken there. Nothing is installed; if it holds, the next step is to show the flag to her seat when a worker crosses 70%.

Update 2026-10-07 — rolling recalibration of her own dispatch number, preregistered and tested live: it fixes the scale but only reaches the base rate, so it is not kept

Scored 10-07 02:11 and published 10-10. The result was finished on time, but the step that scored it only sent a message and never wrote to this site.

The test (PREREG-RC1, frozen 10-05 22:35 before any test outcome existed). Her declared dispatch probability ranked outcomes (dev AUROC 0.66) but was pitched far too low. The candidate fix is a one-parameter shift, p′ = sigmoid(logit(p) + b), with b refit for each dispatch. It is fitted only on her dispatches resolved before that one was created, within the last 7 days. She sees nothing and works the same way. The test set was the first 150 eligible live dispatches after the freeze (10-05 22:35 → 10-07 01:48), and she was not told about the test.

To be kept, all three rules had to pass: 1. The paired Brier difference's 95% CI lies below 0. 2. The Brier skill score is above 0 against the test pass rate, so it beats saying the pass rate every time. 3. Ranking (AUROC) loses no more than 0.05.

Brier Brier skill vs pass rate AUROC mean probability
her declared number 0.1655 −0.956 0.562 0.625
rolling shift 0.0848 −0.002 0.574 0.869
(Platt, reported only) 0.0850 −0.005 0.572 0.868
pass rate 0.907

Not kept. Nothing installed.

Reading it. - The scale fault is real and large. She said 0.63 on average when 91% of dispatches passed. The shift removes it and halves her Brier score. - But it lands exactly at the base rate. Once the scale is fixed, nothing is left: on these 150 dispatches her number barely separated passes from failures (AUROC 0.56, against 0.66 on dev). A calibrated version of a number that doesn't rank is "say 0.91 every time". That beats her raw number easily but adds nothing over the pass rate. - Robustness check: with the "verdict none" rows kept, the shift still helps (−0.038 [−0.052, −0.023]), and its skill is still below 0 (−0.088). - What this means for #23: her dispatch confidence has two faults, scale and ranking. Only ranking is worth fixing, and no tested second opinion improves it here (the base-model backtest ranked worse than her, 0.40). The next thing worth testing is a ranking signal from the task itself, such as task type or files touched, not another map over her number.

Update 2026-10-05 — the three next steps, done: her own dispatch number is measured again (live), the deploy model is fixed, and the second opinion was tried where she errs; neither second-opinion trial met its rule

The operator approved the three next steps the same evening.

1. Her own number is measured again (live). From delegate bridge 1.102.0, every recorded dispatch forecast gets a twin row (dispatchdecl:<task>) carrying her declared probability, resolved from the same harness verdict. Drives 1.16.0 reports it as its own set, her_declared, never pooled with the estimator's. 437 rows since 09-30 were backfilled from the declared number already stored with each forecast. First 7-day reading:

set (7 days) n AUROC Brier skill
her declared probability 299 0.66 −0.54
the fitted estimator (what the drive scores) 482 0.57 −0.10

Her number ranks outcomes better than the estimator's; it is pitched far too low (about 0.22 under the pass rate), which is what makes its skill score negative. That is a scale fault, and it is now visible every day.

2. The second opinion, tried only where she errs. Both tests were preregistered before any outcome was looked at.

3. The deploy model is fixed (generator 1.1.0): deploys now come from a simulated build timeline, so a later deploy can bring back the build a newer note names, and versions are neutral build ids. Held-out set H2 is resealed with it; D1 and H1 stay as they were, since their runs are scored against them.

Where #23 stands. Nothing from the second-opinion line goes live. The useful finding is the reverse of the paper's expectation for dispatch: her own probability carries real ranking signal (0.65–0.66) that the system had stopped reading, and its fault is scale. The obvious next candidate is a recalibration of her number on her own recent outcomes, now that it is measured; Stage 0 showed a global map fails under drift, so it would have to be rolling, and it needs its own preregistered test.

Update 2026-10-05 — benchmark built; she weighs evidence close to the ideal and chooses inspections well, but her confidence barely separates her right answers from her wrong ones; two second-opinion upgrades tested on held-out, neither kept; nothing live

Built from the operator's paper ("uncertainty estimation"): UNCERTAINTY-v1, six tracks as the paper lays them out, scored with the paper's §11 weights. The weights, the 0–100 mappings and the ship rule were frozen in SPEC.md before the first run.

Step 0: her history (read-only). Her real probabilities, before any bench:

By the paper's decision tree (§31) this is the "no case-specific signal" branch: a global calibration map is out; evidence features or disagreement are next.

The suite. 170 items per set; dev set D1 and held-out sets H1/H2 drawn from different task families (§9.3).

Track What truth
A answer calibration computable questions (arithmetic, dates, counts, hex, powers) + unanswerable ones computed
D prediction "will this assert pass?" on a short Python function executed
S self-state matrix is X true now, from sources varying in authority × age × agreement (the §22 matrix) world model
C evidence perturbation one question, five evidence variants world model
E value of information an optional, costed, decisive inspect; answer or abstain world model
F revision confidence before and after one new source world model

Calibration is graded where the answer is real (A computed, D executed). The world tracks use a small two-state model of each system (a job, a flag, a deploy, a worker), stated to her in plain operational terms; its exact posterior is the ideal answer. Track E scores the inspection decision by expected regret, so one lucky reading does not move the score.

Baseline (dev set D1):

score calibration reliability discrimination sensitivity selective action revision
bare deepseek-flash 61.5 10.2 68.9 61.5 96.6 74.1 71.5 83.3
+ uncertainty prompt 67.2 12.5 72.9 72.1 96.6 77.0 86.1 85.0
Piper seat 65.1 13.1 82.3 56.9 95.5 56.8 94.6 90.0
Bayes-ideal ceiling 79.4 21.5 93.7 87.1 100 86.1 100 100

Held-out (H1, her live configuration, k=2, preregistered): 60.0. Accuracy 0.882, mean confidence 0.924, Brier 0.087, AUROC 0.82, accuracy at p ≥ 0.9 = 0.938 (n = 258). Ideal ceiling 81.3.

Upgrades tried: the paper's U-E disagreement estimator. The same question goes 5 times to the base model with none of her context; agreement with her answer is the signal. On dev it looked strong: alone it was weak (AUROC 0.58), but averaged with her own number it lifted her AUROC from 0.754 to 0.867 [0.785, 0.933]. Both forms were preregistered (PREREG-H1.txt, hashed) and tested once on H1:

H1 score paired change 95% CI decision
control 60.0
second-opinion card (she sees the 5 answers before replying) 65.0 +5.0 [−1.9, +12.7] not kept: CI crosses 0; cost 1.56×
post-hoc blend (her p averaged with agreement) 53.6 −6.4 [−11.3, +1.0] rejected: calibration −14, reliability −12.5

The dev gain came from her D1 code misses. On the held-out families she does not make them, the independent samples almost always agree with her, and the blend only pushes her confidence up. Most of the card's +5 is on Track E, where the card is not shown: run-to-run noise. Nothing was installed.

Faults found in my own suite, recorded rather than buried:

What would move this, by the evidence:

  1. Measure her own number again. Score declared_prob_acceptance alongside the estimator, so her calibration is visible live.
  2. Disagreement works only where she makes confident errors the base model doesn't, so it belongs on code predictions and dispatch outcomes, not on every answer. A narrow trial on dispatch commits would need a fresh preregistration.
  3. Fix the deploy model, then use H2 for any further treatment.

Apparatus: ~/cognition-bench/23-uncertainty (SPEC, DIAGNOSIS, gen23 1.0.2, score23, run23 1.1.0, paired23 1.1.0, PREREG-H1). Sealed sets on the bench machine. Model spend ≈ $8 (bench account).

Test suite built · UNCERTAINTY-v1, 6 tracks · dev D1 Piper 65.1 (ceiling 79.4) · held-out H2 control 54.3 (corrected key, 20 Oct; H1 60.0 mis-keyed) · second opinion: full-suite card +5.0 [−1.9, 12.7] not kept, blend −6.4 rejected, code-only card Brier −0.018 [−0.048, +0.006] not kept, dispatch backtest not supported · LIVE: her declared dispatch probability scored again (bridge 1.102.0 / drives 1.16.0) · PREREG-RC1 rolling recalibration of her number (150 live dispatches, 10-07): Brier 0.166 → 0.085 (−0.081 [−0.104, −0.056]) but skill −0.002 vs the pass rate → NOT KEPT (scale fixed, no ranking left: AUROC 0.56) · deploy model fixed, H2 resealed · PREREG-T1 late-worker flag (frozen 10-10): FINAL 10-18 KEEP n=500 RD +0.217 [+0.110, +0.331], RR 4.9, catch 43%, flag rate 13.2%; candidate = shadow 'running long' mark (not installed; any action needs the operator's go) · shadow running-long mark LIVE 10-18 (read-only watcher, log only); decision 11-01, auto-retire 11-08

Calibration items with a stated confidence on each: estimation questions, her own dispatch outcomes, and self-state claims. Scoring: expected calibration error and Brier, turned into 0–100, with the base rate as the zero point. Report the curve by confidence band, so "overconfident above 0.8" can be seen to move.

Scoring rules shared by all 38 suites: How the tests work.

Research & attempts

Score history

Suite v1 current
0255075100Oct 5Oct 2054.3

Dashed line: the suite's baseline. Shaded band: the ± interval. Hollow dots are anchor items carried over from an earlier suite. Scores from different suite versions are not comparable, so each version gets its own panel.

DateSuiteTypeScore±Live useCostNotes
2026-10-20v1sealed 54.3— —$1.85 HELD-OUT set H2 (sealed 10-05, generator 1.1.0: the deploy family's ideal is correct; H1 had 11 of 57 wrong), live configuration (clean 09-30 snapshot fork, her seat), k=2, same scorer as H1. Accuracy 0.860, mean p 0.923, Brier 0.103, BSS 0.15, ECE 0.062, AUROC 0.82; accuracy at p>=0.9 = 0.936 (n=251). Dimensions: calibration 14.6, reliability 78.2, discrimination 69.4, sensitivity 88.2, selective 75.9, action 7.3, revision 75.8. Lower than H1 mostly on action (Track E inspection decisions, 44.8 on H1): she checked cheap irrelevant sources 33% of the time (H1 8%), skipped expensive decisive ones 25% (H1 8%) and abstained 7% (H1 17%); expected regret 112 against a reference 121. Replaces H1 (60.0, mis-keyed; 57.3 without the 11 items) as the reading. NOT a before/after: H2 ran on the model behind deepseek-flash since 17 Oct (V4.1-Flash-1017) on her new machine; H1 on the old model and machine.
2026-10-05v1anchor 53.6— —$1.37 HELD-OUT H1, post-hoc blend (p' = 0.5 p + 0.5 agreement of 5 bare answers with hers): -6.4 [-11.3, +1.0]; rejected (calibration -14, reliability -12.5). Dev had shown AUROC 0.754 -> 0.867.
2026-10-05v1anchor 65— —$2.14 HELD-OUT H1 + second-opinion card (5 independent bare answers shown before she answers), k=2: +5.0, 95% CI [-1.9, +12.7]; not kept (CI crosses 0; cost 1.56x). Most of the gain is Track E action, where the card is not shown (noise).
2026-10-05v1sealed 60— —$1.37 HELD-OUT set H1 (other task families: base/powmod/digit-sum, numeric/parse code, deploy/worker worlds), live configuration, k=2, preregistered control. Accuracy 0.882, mean p 0.924, Brier 0.087, BSS 0.16, ECE 0.042, AUROC 0.82; accuracy at p>=0.9 = 0.938 (n=258). Ideal ceiling 81.3. Caveat: 11 of 57 deploy items carry a wrong ideal (suite bug, fixed before H2); without them 57.3.
2026-10-05v1anchor 65.1— —$1.26 Dev set D1 (170 items, 6 tracks), Piper seat k=1. Bare deepseek-flash 61.5, prompt-only 67.2, Bayes-ideal ceiling 79.4. Strong on inspection decisions (action 94.6) and revision (90); weak discrimination 56.9 (four confident wrong code predictions at 0.97-0.99 that the bare model got right).

Experimental record

One entry per intervention: hypothesis, prediction, before and after, cost, side effects, and the keep-or-revert decision.

2026-10-07 · v1 ↺ reverted 16.6 → 8.5 (-8.1) ± 2.4 · $0.00

Hypothesis. Her declared dispatch probability ranks outcomes but is pitched too low; a one-parameter logit shift refit continuously on her last 7 days of resolved dispatches makes it a better probability, with no change to how she works.

Research sources
Stage 0 (10-05): a global recalibration map failed under drift, so the map is rolling.
Implementation / version
rc23.py, p' = sigmoid(logit(p) + b), b refit per dispatch on rows resolved before it was created. PREREG-RC1 frozen 10-05 22:35; test = first 150 live dispatches after the freeze. Bench only; nothing installed. Before -> after shown as Brier x 100.
Predicted improvement
Keep iff Brier CI < 0 AND skill > 0 vs the test pass rate AND AUROC loss <= 0.05. Result: Brier 0.1655 -> 0.0848, -0.081 [-0.104, -0.056] (met); skill -0.002 vs the 0.907 pass rate (FAILED); AUROC 0.56 -> 0.57 (met). Not kept.
Regressions
none (nothing installed)
Lessons learned
The scale fault is real (mean 0.63 against a 91% pass rate) and the shift removes it, but it lands at the base rate: on the test window her number barely ranked outcomes (AUROC 0.56, dev 0.66). Next: a ranking signal from the task itself, not another map over her number.
2026-10-05 · v1 ↺ reverted 65.3 → 48.7 (-16.6) ± 11.5 · $0.00

Hypothesis. A base-model second opinion on her task envelope predicts dispatch outcomes, alone or blended with her number.

Implementation / version
Offline backtest, 250 dispatches from 10-01; the base model read each full task envelope three times. Before -> after shown as AUROC x 100 (her number -> blend).
Predicted improvement
Blend - her AUROC -0.17 [-0.28, -0.05]; bare - her -0.26 [-0.40, -0.10] -> not supported.
Lessons learned
Without the repository the base model ranks dispatches worse than she does (0.40 vs 0.65) and is far too pessimistic (mean 0.34 vs a 0.89 pass rate).
2026-10-05 · v1 ↺ reverted 2.5 → 0.6 (-1.9) ± 2.7 · $0.00

Hypothesis. The second-opinion card helps on code predictions, the family where she erred on dev.

Implementation / version
PREREG-HC1: 80 fresh in-family list/string items, k=2. Bench only. Before -> after shown as Brier x 100.
Predicted improvement
Paired Brier -0.018 [-0.048, +0.006]: upper bound not below 0 -> not kept by its own rule.
Lessons learned
Wrong answers 4 -> 1 of 160 at lower cost, but she was wrong only 2.5% of the time on fresh items, so little was left to fix. Not installed.
2026-10-05 · v1 ✓ kept — → — · $0.00

Hypothesis. Her own declared dispatch probability carries signal the system had stopped reading; score it again as its own set.

Implementation / version
Delegate bridge 1.102.0 writes a twin forecast row (dispatchdecl:<task>) with her declared number; drives 1.16.0 reports it as her_declared. 437 rows since 09-30 backfilled. LIVE.
Predicted improvement
Instrument, not a capability change.
Lessons learned
First 7 days: her declared AUROC 0.66, Brier skill -0.54 (pitched about 0.22 low), against the fitted estimator's AUROC 0.57, skill -0.10.
2026-10-05 · v1 ↺ reverted 60 → 65 (+5) ± 7.3 · $0.00

Hypothesis. Showing her 5 independent bare answers before she answers (a second-opinion card) improves her confidence.

Implementation / version
Bench-only card on held-out H1, k=2.
Predicted improvement
PREREG-H1: paired +5.0 [-1.9, +12.7]; cost 1.56x -> fails ship rule 1 (CI crosses 0) and rule 5 (cost).
Lessons learned
Small effect where it reaches (discrimination +2.9, selective answering +5.2). Not installed.
2026-10-05 · v1 ↺ reverted 60 → 53.6 (-6.4) ± 6.2 · $0.00

Hypothesis. Averaging her stated confidence with how often 5 independent bare answers agree with hers gives a better-calibrated probability.

Implementation / version
Post-hoc blend p' = 0.5 p + 0.5 agreement, scored on held-out H1. Bench only.
Predicted improvement
PREREG-H1: paired -6.4 [-11.3, +1.0] -> rejected.
Lessons learned
Dev gain came from D1-specific code misses; on held-out the samples agree with her almost always, so the blend only pushes confidence up. Never installed.