Skip to content

Bundle 69: Curation Review Protocol V2 + Holdout-Safe Calibration - #161

Open
nulleimy wants to merge 13 commits into
feature/bundle-0-bootstrapfrom
feature/bundle-69-curation-review-protocol-v2
Open

nulleimy wants to merge 13 commits into
feature/bundle-0-bootstrapfrom
feature/bundle-69-curation-review-protocol-v2

Conversation

@nulleimy

@nulleimy nulleimy commented Aug 23, 2026

Copy link
Copy Markdown
Collaborator

Closes #160

Governing Skill Tester blocker/design: #159

Bundle Context

Summary

Implements the Skill Tester-approved Protocol V2.4 design that separates curation judgment from uncontrolled transition execution and adds development/holdout-safe calibration semantics.

Exact scope

  • Curation Review V2 contract
  • distinct V2 packet/submission schema and fingerprint
  • sequence_curation_only audition mode
  • explicit execution-quality exclusion acknowledgement
  • five curation-only dimensions
  • legacy Bundle 63 submission schema rejected
  • Curation Calibration V3 accepts only CurationReviewV2 evidence
  • development vs holdout evidence roles
  • representative vs diagnostic selection scope
  • frozen holdout manifest binding source optimizer/challenger/config/calibration identities before labels
  • prior-development exclusion registry
  • enumerated selection-basis contract; representative holdout rejects challenger-dependent selection inputs
  • deterministic reviewer-specific counterbalanced A/B assignment batch derived from a private seed commitment
  • machine system outcomes remain in the selected-case denominator
  • non-reviewable system outcomes cannot become human abstain
  • personal vs multi-DJ evaluation scope
  • reviewer disagreement / macro / pooled metrics
  • pure in-memory protocol/calibration/holdout-guard services

Skill Tester attacks closed before Ready-for-Review

  1. transition execution contamination
  2. legacy/new schema ambiguity
  3. personal-vs-product evidence scope
  4. ambiguous alternative usefulness
  5. structural contamination invariant
  6. circular reuse of old 12 cases as holdout
  7. challenger-dependent holdout selection bias
  8. A/B position bias
  9. survivorship bias from dropping weak/non-reviewable outcomes
  10. hidden multi-DJ disagreement
  11. development cases technically relabelable as holdout
  12. representative selection basis previously documentation-only
  13. assignment seed commitment previously unverifiable
  14. holdout guard module initially missing from purity/security source audit

The existing R2 12-case set remains development_calibration evidence only. It is not independent holdout validation.

Verification — exact HEAD aca2eacc54583e6aa9152e3756abc996c8288052

CI

CI #939 (32623400807): SUCCESS

  • Python 3.11.16
    • compile PASS
    • critical Ruff PASS
    • 512 passed, 6 warnings
    • artifact ID 9489037041
    • artifact ZIP SHA-256 5f4a45bd4c6a764ae72786a41c5638a403201bf7549a64505ef1dbc286c6d641
  • Python 3.12.14
    • compile PASS
    • critical Ruff PASS
    • 512 passed, 5 warnings
    • artifact ID 9489037043
    • artifact ZIP SHA-256 da3d73e8cf3246028a50411da2c91e10727d16da5c835f8f5c2c41d6e0c7e5a2

PR Guard #338: SUCCESS on exact HEAD.

Earlier failures preserved as evidence

  • PR Guard #330 correctly failed because the initial PR body lacked required Bundle Context; metadata was corrected without bypassing the guard.
  • CI #925 correctly found a development-report semantic edge case. The test was not weakened: development reports now always state development_evidence_not_independent_validation, while only successful development evaluation recommends a fresh holdout.
  • CI #929 / #937 became green, but Skill Tester withheld Ready because spec-coverage review still found relabel/selection/assignment provenance gaps. Those gaps were then implemented and regression-tested before final CI #939.

Exact diff / source authority

Compare vs canonical base:

  • merge base: f3292d6ac3db81e9d741eedfd2467ecc90c933c0
  • ahead 13 / behind 0
  • 8 files added
  • 0 pre-existing files modified

Canonical authority files remain byte-identical between base and feature branch:

  • services/intelligence/set_engine.py blob dd8f0cdb672202289530579d092cf0feb5cedf25
  • services/intelligence/set_path_optimizer.py blob 819f6399181f4b37bb26ed8ccefb6cc0f4a9607f
  • services/intelligence/human_dj_review_execution.py blob 195a4f5f6ef62421be07413807072244f48c4b57
  • services/intelligence/competitive_curation.py blob faadcae932e5f7b907503cbf2cd5bfdaab36462e
  • services/intelligence/human_preference_calibration.py blob 61899fda033c5d77513a780602c227ccabe36b79

No Set Engine, path optimizer, TransitionAssessment, legacy Bundle 63 execution, Bundle 67 challenger, or Bundle 68 calibration implementation was modified.

Security / privacy / experiment validity

  • V2 curation schema rejects legacy Bundle 63 submission schema
  • curation review requires sequence_curation_only
  • curation review requires explicit execution-quality exclusion
  • transition fields are rejected from curation packet shape
  • representative selection basis rejects challenger score/preference/disagreement/failure-class inputs
  • diagnostic sets cannot claim representative performance
  • prior-development case/scenario identities are rejected from holdout lineage
  • holdout assignment batch is recomputed and checked against private seed commitment
  • machine non-reviewability cannot be converted to human abstain
  • all selected holdout cases remain in denominator
  • holdout candidate/config/threshold mismatch fails closed
  • protocol/calibration/holdout-guard purity audit rejects filesystem/network/provider execution tokens
  • no audio reads, MIR/provider execution, network/cloud upload, persistence side effects, optimizer mutation or hidden telemetry introduced
  • review threads: 0
  • review submissions: 0

Operational holdout constraint

independent_validation=true is protocol-scoped evidence, not laboratory replication. A real holdout must additionally persist an immutable freeze receipt before the first human label is collected. The pure in-memory protocol does not claim to prove wall-clock ordering by itself.

Current product evidence state

  • legacy R4 full-6D calibration remains PAUSED as invalid curation ground truth
  • Curation Review V2 capability is implemented/tested
  • no genuine Curation Review V2 human submission has been collected yet
  • no fresh representative holdout has been executed yet

Authority

MERGE_AUTHORIZATION=NO
OPTIMIZER_RANKING_ACTIVATION=NO
RELEASE_AUTHORIZATION=NO
DEPLOY_AUTHORIZATION=NO
PRODUCTION_ACTIVATION=NO
PDM_TRAINING=NO

Merge requires separate explicit MERGE GO.

@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: aca2eacc54

ℹ️ 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 +347 to +349
if review.review_id in review_ids:
raise CurationPreferenceCalibrationV3Error("duplicate curation review identity")
review_ids.add(review.review_id)

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 Reject duplicate reviews for one assignment

When the same assignment is supplied multiple times with distinct review_id values, every copy is accepted and included in the exact, decisive, and confidence-weighted agreement denominators. A caller can therefore duplicate a favorable review enough times to change DOES_NOT_SUPPORT_ACTIVATION into SUPPORTS_FURTHER_EVALUATION; track reviewed assignment IDs and reject duplicates before appending calibration evidence.

Useful? React with 👍 / 👎.

Comment on lines +194 to +199
case_ids = tuple(item.case_id for item in cases)
scenario_fingerprints = tuple(item.scenario_fingerprint for item in cases)
if case_ids != manifest.selected_case_ids:
raise CurationPreferenceCalibrationV3Error("holdout selected case identities changed after freeze")
if scenario_fingerprints != manifest.scenario_fingerprints:
raise CurationPreferenceCalibrationV3Error("holdout scenario fingerprints changed after freeze")

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 holdout cases to the frozen source snapshot

If supplied cases retain the frozen case IDs and scenario fingerprints but have a different snapshot_ref, these checks still accept them and the report is emitted with independent_validation=True and representative claims allowed. Since the manifest explicitly freezes source_snapshot_ref, validate every case's snapshot reference against it here so evidence generated from a later or different library snapshot cannot pass as the frozen holdout.

Useful? React with 👍 / 👎.

Comment on lines +447 to +451
a_greedy, b_greedy, a_beam, b_beam = _assignment_position_counts(
cases_by_id=cases_by_id,
assignments=assignments,
)
assignment_imbalance = abs(a_greedy - b_greedy)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Check assignment balance separately for each reviewer

For multi-DJ evaluations this computes only a batch-wide imbalance, so opposing biases cancel: one reviewer can receive every greedy plan in A and another every greedy plan in B while the aggregate imbalance is zero and completeness passes. Because slot placement is reviewer-specific and position bias acts within each reviewer's judgments, calculate the imbalance per reviewer and fail when any reviewer exceeds the policy limit.

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.

Bundle 69: Curation Review Protocol V2 + Holdout-Safe Calibration

1 participant