Skip to content

feat(evals): add reviewer calibration campaign - #37

Merged
vriesd merged 2 commits into
mainfrom
codex/eval-phase-6
Aug 25, 2026
Merged

feat(evals): add reviewer calibration campaign#37
vriesd merged 2 commits into
mainfrom
codex/eval-phase-6

Conversation

@vriesd

@vriesd vriesd commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Summary

  • seed real Flow reviewer assignments without a manager-model turn
  • score only durable reviewer submissions from active or archived state
  • add immutable fixed-label controls, Wilson analysis, agreement, and fail-closed promotion records
  • record the advisory paid pilot and four-model review trail

Verification

  • bun run check: 483 pass, 1 skip, 0 fail
  • paid packed-host pilot: 1/1 defect detected, 0/1 clean false positives, 2/2 durable submissions
  • valid pilot cost: $0.1480602 for 1,747 output tokens
  • four-model Interrogate: no unresolved blockers

Stop gate

Reviewer evidence remains report-only. The two-case pilot misses preregistered sample and confidence thresholds, and OpenCode 1.18.6 does not expose full reviewer identity. No release or product improvement claim is made.

@vriesd
vriesd merged commit c03cea1 into main Aug 25, 2026
6 checks passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b5c6bc4faa

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +391 to +392
...(analysis.defectCases < input.minimumCasesPerTruth ||
analysis.cleanCases < input.minimumCasesPerTruth

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Count distinct fixtures toward the calibration floor

When a plan schedules multiple repetitions of the same case/version, analysis.defectCases and analysis.cleanCases count every submitted attempt, so repeated runs of one defect and one clean fixture can satisfy minimumCasesPerTruth and artificially narrow the Wilson intervals. This can promote a reviewer without the preregistered number of independently human-labelled cases; enforce the floor using distinct case/version keys rather than observation counts.

Useful? React with 👍 / 👎.

Comment on lines +370 to +374
observedReviewerModels.every((observed) =>
input.reviewerModels.some(
(expected) =>
canonicalSha256("flow-reviewer-model-v1", observed) ===
canonicalSha256("flow-reviewer-model-v1", expected),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Require exact coverage of declared reviewer models

When reviewerModels contains the observed model plus any additional untested model, this one-way subset check still passes and the promotion record claims calibration for every supplied model. This permits an unobserved model or family to inherit another model's results; compare the distinct observed and declared model sets in both directions before issuing the record.

Useful? React with 👍 / 👎.

Comment on lines +457 to +459
caseCatalogSha256: canonicalSha256(
"flow-reviewer-calibration-catalog-v1",
input.catalog,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Bind the promotion record to the report's catalog

When the caller supplies a different valid catalog from the one used to parse report, promotion can still succeed and this records the unrelated catalog's hash. ValidatedReport does not retain its parsing catalog, while the preceding checks compare the plan only with labels and the fixture registry, so the promotion record can misstate its frozen policy input; verify the supplied catalog against the report's planned cases and policies or preserve its digest at parsing time.

Useful? React with 👍 / 👎.

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.

2 participants