Skip to content

fix(research): close sealed-holdout diagnostic bypasses - #1159

Open
proerror77 wants to merge 4 commits into
mainfrom
cursor/holdout-fail-closed-648e
Open

fix(research): close sealed-holdout diagnostic bypasses#1159
proerror77 wants to merge 4 commits into
mainfrom
cursor/holdout-fail-closed-648e

Conversation

@proerror77

@proerror77 proerror77 commented Sep 12, 2026

Copy link
Copy Markdown
Owner

Change

Sealed holdout is no longer openable from research diagnostic or default Campaign surfaces.

  • mission campaign-execute without --pre-holdout fails closed. Formula-lane execute no longer auto-finalizes. Holdout still opens only through signed independent --final-evaluation, which now admits both supervised and formula replay winners.
  • Hidden mission execute (Direct) is search-only: it can run GP/subset/replay diagnostics but does not claim holdout or write promotion. Direct still rejects feature fields with no live formula semantics.
  • Public evaluate is read-only: it returns existing sealed registry evidence and otherwise refuses without the global create-once claim. Failed evaluate does not bind mission-evaluation-protocol.
  • Hand-started Campaign Job example includes --pre-holdout.

This is one holdout-gate behavior, so it stays in a single PR.

Issue relationship

None

Validation

  • git diff --check
  • cargo test -p alpha-harness --locked -- winner_lane_admits_formula
  • cargo test -p alpha-harness --locked -- campaign_execute_without_pre_holdout_refuses
  • cargo test -p alpha-harness --locked -- direct_execute_does_not_open
  • cargo test -p alpha-harness --locked -- public_evaluate_cannot_read
  • cargo test -p alpha-harness --locked -- execute_rejects_features_that_have_no_live_formula_semantics
  • cargo test -p alpha-engine --locked -- independent_selection_falls_back_to_walk_forward
  • cargo test -p alpha-domain --locked -- frozen_selection_ids_accept_formula
  • Additional owning tests: optimistic-cost finalization, recovered finalization, ridge/CART evidence
  • cargo clippy -p alpha-harness --locked --tests -- -D warnings
  • cargo clippy -p alpha-engine -p alpha-domain --locked --tests -- -D warnings

Runtime impact and rollback

None. Research CLI/gates only; no live, collector, or runtime mutation. Rollback is revert of this commit. Automatic research-image publication may follow merge; that is not deployment authority.

Open in Web Open in Cursor 

@coderabbitai

coderabbitai Bot commented Sep 12, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: a4e171c1-77d8-46bc-a40c-97b5d3f22690


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@proerror77
proerror77 marked this pull request as ready for review September 12, 2026 04:52
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 12, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-12T05:00:32.356288Z 1fb49cc Draft marked ready
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@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: 1fb49cc867

ℹ️ 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".

}
_ => None,
};
let finalization = None;

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 让独立终评接管旧公式候选

当 GP v1–v3 公式轮次产生通过 replay gate 的候选时,这里无条件清空 finalization,删除了其唯一的封存 holdout 终评路径;但新的独立终评仍在 mission_campaign/final_evaluation.rs:430-483 仅接收 supervised_replay_gate_passed == Some(true) 的监督模型,公式轮次会被跳过并以“no supervised replay-qualified round winners”失败。因此 README 所述“公式 lane 通过 --final-evaluation 终评”实际不可达,已保留的公式研究无法产出最终证据或 promotion;应在移除旧入口的同时,将公式 winner 的冻结与终评迁移到签名授权的独立终评流程中。

AGENTS.md reference: AGENTS.md:L12-L15

Useful? React with 👍 / 👎.

};
store.put_registry_revision(&revision)?;
Ok(revision)
bail!("public evaluate cannot read sealed holdout without the global create-once claim")

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 在拒绝公开终评前不要写入协议绑定

当旧版或手工导入的 Mission 已有 canonical walk-forward winner、但尚无 mission_evaluation_protocol revision 且没有 sealed revision 时,执行会先在第 418 行调用 bind_mission_evaluation_protocol 永久写入 registry,然后才在这里返回“没有 global claim”的错误。这样一个声称失败且只读的 evaluate 调用仍会改变 append-only 治理状态,后续调用会观察到并受该绑定约束;应在确认可返回已有 sealed evidence 后仅校验绑定,或在拒绝路径之前避免创建 revision。

AGENTS.md reference: AGENTS.md:L92-L94

Useful? React with 👍 / 👎.

Comment on lines +235 to +237
/// Stop before opening sealed holdout, including for the formula lane.
/// Required unless `--final-evaluation` supplies an independent grant.
#[arg(long, required_unless_present = "final_evaluation")]

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 同步更新手工 Campaign Job 参数

当操作者继续使用仓库提供的 deployment/aliyun/research/k8s/alpha-mission-job.example.yaml:59-71 启动普通 Campaign Job 时,该模板没有传入现在必需的 --pre-holdout,因此 Clap 会在进入 worker 前直接拒绝命令;本提交自己的 cli.rs:1457-1460 测试也明确断言无该参数时解析失败。已检查生成式 dispatch:它会添加此参数,受影响的是仍被文档描述为 tokenless campaign-execute shape 的手工示例;应同时更新该模板,否则复制部署示例得到的 canonical Campaign Job 无法启动。

AGENTS.md reference: AGENTS.md:L12-L15

Useful? React with 👍 / 👎.

cursoragent and others added 3 commits September 12, 2026 05:41
Require --pre-holdout for campaign-execute unless --final-evaluation,
keep Direct mission execute search-only, and refuse public evaluate
from reading sealed holdout without the global create-once claim.

Co-authored-by: Wild Card <proerror77@users.noreply.github.com>
Admit formula replay winners on signed independent --final-evaluation,
stop public evaluate from writing the protocol registry, and require
--pre-holdout on the hand-started Campaign Job example.

Co-authored-by: Wild Card <proerror77@users.noreply.github.com>
Elide a needless lifetime, allow bounded argument counts on the
final-evaluation holdout helpers, and lock formula frozen-selection
identity plus unreserved walk-forward fallback.

Co-authored-by: Wild Card <proerror77@users.noreply.github.com>
@cursor
cursor Bot force-pushed the cursor/holdout-fail-closed-648e branch from a27408c to 086c4c1 Compare September 12, 2026 05:41
Parse existing sealed evidence before requiring a bound protocol so
read-only evaluate still reports legacy records as malformed, and rustfmt
the frozen-selection identity helper.

Co-authored-by: Wild Card <proerror77@users.noreply.github.com>
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