Skip to content

Remove confidence from PerceptionOutput and all downstream uses - #1

Open
trisha-ant wants to merge 1 commit into
masterfrom
trisha/gently-remove-confidence
Open

Remove confidence from PerceptionOutput and all downstream uses#1
trisha-ant wants to merge 1 commit into
masterfrom
trisha/gently-remove-confidence

Conversation

@trisha-ant

Copy link
Copy Markdown
Owner

Why

VLM self-reported confidence is uncalibrated noise — across saved runs, mean confidence is 0.867 when correct vs 0.857 when wrong, so it carries essentially no signal. The harness already derives reliability from session history (stability, temporal consistency) rather than this scalar, and d9b89f2 had already made it optional. This finishes the removal so future variants and the upcoming z-slice subagent work don't have to thread a dead field through every prompt and output.

What

  • PerceptionOutput: drop confidence field (both perception/_base.py and gently_perception/types.py)
  • response_to_output / build_history_text: stop parsing/formatting it
  • run.py: drop confidence from history dicts, prediction records, mean_confidence, and the results table
  • benchmark/metrics.py: remove the calibration block (ECE, bins, conf-when-correct/wrong)
  • All 14 variants × 2 dirs: drop "confidence" from the JSON output schema and stop reading it from history
  • duration_aware: remove _confidence_gate (it gated transitions on confidence); the variant now relies on duration-aware prompt anchoring alone
  • Docs: program.md, experiments/program.md, experiments/prompt/README.md

36 files, +44 / −323.

Behavioral note

duration_aware's previous benchmark numbers (81.3%) included the confidence gate; they no longer apply and would need a re-run.

Verification

  • All 38 modules (perception.*, experiments.prompt.*, gently_perception, benchmark.metrics, run) import cleanly
  • Both PerceptionOutput definitions reject confidence= with TypeError
  • response_to_output / build_history_text work and silently ignore legacy confidence keys in input JSON / history dicts
  • python run.py --help exits 0
  • grep -rn '\.confidence' --include='*.py' → empty
  • compute_metrics + format_metrics_summary run end-to-end on a mock report
  • Pyright: 12 errors on branch ↔ 12 on master, byte-identical (zero new errors introduced)

VLM self-reported confidence is uncalibrated (0.867 when correct vs
0.857 when wrong) and was already optional in the harness. This drops
the field entirely so future work derives reliability from session
history rather than a noisy scalar.

- PerceptionOutput: drop confidence (both _base.py and types.py)
- response_to_output / build_history_text: stop parsing/formatting it
- run.py: drop confidence from history dicts, prediction records,
  mean_confidence metric, and results table
- benchmark/metrics.py: remove calibration block (mean_confidence,
  ECE, calibration_bins, confidence_when_correct/wrong)
- All variants (perception/ + experiments/prompt/): drop confidence
  from JSON output schema and stop reading it from history
- duration_aware: remove _confidence_gate; variant now relies on
  duration-aware prompt anchoring alone
- Docs: update program.md, experiments/prompt/README.md
@trisha-ant
trisha-ant marked this pull request as ready for review April 23, 2026 15:53
trisha-ant added a commit that referenced this pull request Apr 30, 2026
…olds up)

Master config (opus-4-6, temperature=0, no thinking, anchored prompts):
  exact:   81.7 +/- 2.4  (runs 82.8, 83.3, 79.0)
  1.5fold: 65.9 +/- 0.0  (deterministic -- temp=0 + strong anchoring)
  2fold:   68.4 +/- 9.8
  pretzel: 92.5 +/- 8.5
  adj:    100.0

Only diff from master's hybrid.py is confidence field removed from JSON
schema (PR #1). Master's 82.8 was a typical draw.

vs vote3_mm@4.7 (80.8+/-0.5): +0.9pp, t~0.61 -- not significant.
Statistically equivalent overall. Per-stage trade-off:
  hybrid@4.6 wins 1.5fold (66 vs 45) and pretzel (93 vs 85)
  vote3_mm@4.7 wins 2fold (98 vs 68) and variance (0.5 vs 2.4)

_base.py reverted to 4.7 config; hybrid46 JSONs archived.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant