ForgeKitFORGEKIT

Build Log

Self-Consistency v2: Clean 21/21, Success Criterion Met

August 14, 2026

Following the exact next action named in the v1 negative result: a stricter adversarial prompt (reasonableness framing plus a rebuttal-question checkpoint), tested against the original 17 cases plus 4 new held-out clear-cut cases. Zero false escalations, both known ambiguities correctly caught, success criterion met on the first real run.

MedinaCHFHelmAIVerification
21/21
final (3-stage) accuracy across original + held-out cases
2/2
known-ambiguous cases correctly escalated
0/19
clear-cut cases falsely escalated (0 across all 15 original + 4 held-out)
MET
pre-declared success criterion — first real run, no tuning

Timeline

Start
Zeb: 'proceed with both items in order' — Option A first, per its own named next action
The v1 retro's nextItems specified exactly what v2 needed to do; this session executed that plan, not a fresh design
Design
One remaining design choice confirmed via AskUserQuestion: how to fix v1's specific failure
Combined both proposed mechanisms — a reasonableness framing plus an explicit rebuttal-question checkpoint — rather than either alone
Build
Authored 4 new, independently code-verified held-out cases before writing the v2 prompt
All 4 grounded in real grep/read evidence (announcements.ts, family-profile.ts, member-management.ts) — not invented, and deliberately not used to shape the prompt
Run
One real run hit a genuine process stall (killed and restarted once) before completing cleanly
21 cases, 63 real API calls, ~30+ minutes wall-clock — confirmed via process inspection (9+ min CPU time on one PID) before killing, not assumed
End
21/21, criterion MET — but one case's reasoning was visibly hedgier than the rest, named honestly rather than smoothed over
Case 16 (add-new-nav-link) reached the right bucket while its own rebuttal check called the classification 'imperfect'

What shipped

experiments/helm-classifier-probe/classify-with-self-consistency-v2.mjs — the fixed adversarial pass: reasonableness framing ('a technically-constructible argument is not enough') plus an explicit REBUTTAL_CHECK the model must answer before it's allowed to output CAN_ARGUE_DIFFERENT: YES

experiments/helm-classifier-probe/held-out-cases.json — 4 new, independently code-verified clear-cut test cases (all CONTENT-bucket — see the honest coverage-gap note below), not used to design the v2 prompt

experiments/helm-classifier-probe/results-self-consistency-v2.json — full real run output including every case's REBUTTAL_CHECK reasoning, not just the final bucket

“A real engineer who got this request would genuinely pause and ask 'does she want me to flip one event's status, or does she want a cap enforced going forward?' — these are materially different tasks and the request truly doesn't say.”

— The v2 classifier's own rebuttal-check reasoning on case 1 — the kind of grounded judgment the reasonableness framing was designed to produce