Skip to content

fix(review): separate unknown CI from approval evidence - #7774

Merged
loopx-agent merged 1 commit into
mainfrom
codex/review-ci-evidence-20261101
Nov 1, 2026
Merged

loopx-agent merged 1 commit into
mainfrom
codex/review-ci-evidence-20261101

Conversation

@loopx-agent

Copy link
Copy Markdown
Collaborator

PR reviewer 已独立验证改动,却可能因为 CI 结果未知或未逐项归因而一直不批准。本改动把 CI 诊断与必要评审证据分开:未知、失败、跳过、取消或待完成的 CI 可以保留未决原因;有决定性当前证据且无阻断发现时允许 APPROVE。

复用 validation matrix 的 required 与原有 failure dispositions,不新增配置、schema 或豁免令牌。能力规则、completion gate、verdict、语义指导及薄 skill adapter 同步修正。检查器仍拒绝必要验证缺口,并补上 required=false 不能隐藏已确认 pr_regression 的反例;policy revision 升至 26。CI waiting 默认与 Goal override、merge-readiness、精确 head、讨论及授权门保持原行为。

验证:完整 capability 套件 513 passed、45 个显式模型实验未启用;独立 CLI smoke、changed Ruff、两个源文件的 scoped mypy、RFC bilingual check 与七文件公开边界扫描通过。先写反例在旧实现复现 1 failed/1 passed,再修复检查器。初次 exploratory mypy 跟随全部导入,报 864 errors/140 files;该失败保留,当前仅认证改动源文件,不声称全仓 typecheck 通过。初次 smoke 的宿主 runtime 路由冲突在隔离 registry 后通过;扫描 ignored patch 路径被拒后对真实七文件重新扫描通过。未查询、轮询或等待 CI,未执行模型或 benchmark jobs。

范围:源码 capability 与公开指导,未认证安装采用、模型遵从或长程收益;无 UI/状态迁移、merge 权限或 CI 默认变化。精确 scope 的 change-quality、committed premerge 与完整 head 自评在合并前完成。

Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Reviewer: model_agent; model=gpt-6.1-sol; provider=OpenAI; runtime_reported; reasoning_effort=max

Approval conclusion (author-owned PR; GitHub blocks formal self-approval)

Exact head: af8418d;不可变比较基线:dfc53993743d36af84fd1b23e1e628f870500487。这是作者自评,未宣称第二位独立 reviewer。

动机 / Motivation

需要对已验证代码作出结论的 PR reviewer 和维护者。

CI 摘要缺少失败原因时,旧指导可能要求逐项归因才批准;现在先判断当前改动的决定性证据,未知 CI 原因原样保留,减少无关修复和重复等待。

必要证据充分且无阻断发现时允许 APPROVE;已确认的 PR 回归即使标成非必需仍拒绝,缺少必要验证也继续阻断。

本次不改变 CI 等待默认、分支保护、merge 权限或业务持久状态,也不认证安装采用与模型遵从。

源码与当前 CLI 已验证;已安装旧版本的采用、跨 Agent 的实际拒绝率及长程收益仍未认证。

改动思路 / Approach

判断义务复用现有 required/disposition,能力指导和一致性检查各守原 owner,不新增 CI 豁免状态或第二权限层。

本 PR 交付七文件源码、CLI 与指导修复;不改变 CI 默认或合并权限,不认证安装和模型采用。

旧指导把“当前失败未归因”与“必要代码证据缺失”混在一起;仅把 CI waiting 关掉并不能消除这个冲突。现在先确认改动涉及的不变量是否已有决定性证据,再保留 CI 观察,未知原因继续写 unresolved,不能编造为基线故障或外部 outage。确实缺少必要证据时,仍应指出具体不变量及最小验证,而不是要求先跑完整 CI。

当前观察 review 结论条件 integration
CI 未知、红色、跳过或待完成 必要证据充分且无 blocker 可批准 保留独立 readiness 门
必要证据尚缺 指出具体缺口,继续阻断 不能由 CI 诊断豁免
已确认 PR 回归 required=false 也阻断 修复后重新核验

这是该 head 的源码控制流说明,执行证据在下面。没有增加 waiver、配置、状态表或第二套权限模型;类型注解只明确原有 decision-text 表的类型和值边界。

具体改动 / Changes

全量审阅七路径、+118/-35:两个 production 文件、三份测试、能力 README 与薄 skill adapter。规范依据是修改前的 loopx/capabilities/pr_review_queue/README.md#configure-ci-waiting--配置是否等待-ci,spec_revision=dfc53993743d36af84fd1b23e1e628f870500487。CI-review-separation、review-invariant-evidence、merge-authority-separation 均 implemented:原规范已经区分 CI 完成与代码判断,本次按修复要求有意纠正未归因 CI 的一票否决;没有拿改后的文档给自身作证。

关键代码讲解

  • VALIDATION_FAILURE_ATTRIBUTION 保留原 dispositions 与真实归因条件。新的规则先区分诊断和必要证据;只有确实声称 pre_existing_unrelated/external_unrelated 时,才需要相应 base/head 或外部证据。
  • _check_validation_failures 在 optional-row 的 early return 前识别已有 pr_regression,返回原 blocker;状态类型、必要验证及归因分支仍由同一个循环处理,不新增 IO。
  • validation_matrix 对两种 waiting 模式交付同一判断边界;false 模式保留不得 fetch/poll/wait,true 模式保留独立 merge policy。completion 与 verdict 条款同步,policy revision 为26。
  • CLI matrix 把四种 CI 观察与四种必要覆盖状态交叉,实际调用公开 --check-result;另一个回归测试证明已确认缺陷不能用 required=false 隐藏。行为案例的两位正反 twins 留给显式模型资格实验,本次没有运行它们的模型调用。

对主干的风险 / Risks

最强反例是把真正缺陷也写成诊断。先在未改 production 的 base 上加入同一 oracle,得到 FAIL:1 failed/1 passed,旧检查器错误接受 optional 的已确认回归;最终 head 的两个 required 值均拒绝批准。16项公开 CLI 组合只有必要覆盖 passed 时可批准,pending/unverified/failed 的决定性覆盖继续阻断;无 blocker 的 REQUEST_CHANGES 也被拒绝。这里证明的是声明一致性,未把合成 fixture 当作真实 CI 故障根因。

最终精确 head 的完整 capability 套件 PASS:513 passed,45项显式 live-model 实验未启用,不记为通过。实际 isolated-registry CLI smoke、五文件 Ruff、两个改动源文件 scoped mypy、七路径公开边界扫描及 committed RFC/diff 检查通过。标准 committed premerge 的6项直接检查、8项 catalog、8项 risk 和1项边界检查均 PASS,零失败、零 manual hold;精确 CQR receipt 已读回 valid。

初次 exploratory mypy 跟随整个导入图,FAIL:864 errors/140 files,保留这次失败;随后现有 decision-text 常量补类型注解,当前仅认证两个改动源文件的 scoped mypy,不声称全仓类型检查已通过。初次 smoke 的宿主 runtime 路由冲突在独立 registry 后通过;ignored patch 扫描路径被拒,改为扫描实际七个公开文件后通过。这些预备失败没有改写成原先已通过。

语义与 CI 对齐

不可变 base/head 的两种 waiting 模式,各只有六个已披露 contract 路径变化,UTF8 JSON 分别增加1350/1384字节;保留有用约束,没有因压缩而丢失含义。配置、GitHub IO、readiness 和 closeout 四个 owner 的 blobs 与 base 完全相同;默认、override、no-query 与 readiness fixtures 全过。无新 schema、状态词或 CI heuristic,diff-scoped advisory 为0个支持的新增词汇候选;这不认证所有语义形式。

未查询、轮询或等待远端 CI,也未执行模型、Docker 或 benchmark jobs。未知 CI 是诊断;必要证据缺口、具体回归、既有讨论、readiness 与合并授权仍各自有效。

我的整体评价 / Verdict

APPROVE,delivery 为 justified_increment。改动复用既有 typed owner 和字段,范围与实际冲突相称:不必新建 CI 豁免框架或改变等待默认。局部简化保留单个判定循环,并用显式常量类型消除该触点的推导问题;没有把维护工作扩大到全仓重构。

long_horizon 与 user_experience 均为 preserved:原持久结果、调度、后续工作与用户入口仍由原 owner 决定,不增加设置或确认步骤;跨 Agent 的拒绝率、安装采用、模型遵从及完整成本收益未认证。七路径均为合同、检查器、测试或 Markdown 指导,没有渲染页面变化,因此 visual review 不适用。本 PR 交付七文件源码、CLI 与指导修复;不改变 CI 默认或合并权限,不认证安装和模型采用。

English verdict: APPROVE — af8418d. Decisive review evidence is separate from unknown or red CI; confirmed PR regressions remain blocking even on diagnostic rows. Final capability tests and scoped source/CLI checks pass; CI, model/installed qualification and merge authority remain separately stated.

@loopx-agent
loopx-agent merged commit 697c8ff into main Nov 1, 2026
13 of 33 checks passed
@loopx-agent
loopx-agent deleted the codex/review-ci-evidence-20261101 branch November 1, 2026 03:01

@songoow songoow left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Reviewer: model_agent; model=gpt-6.1-sol; provider=OpenAI; runtime_reported; reasoning_effort=medium

Exact head: af8418d

动机 / Motivation

维护者和执行 PR 评审的 Agent。

独立验证充分但 CI 原因未知时,旧指导可能反复阻止批准;新指导允许保留未知原因并作出代码判断。

当前 CLI 拒绝被标成诊断的已确认回归,同时继续接受未知诊断并阻断必要证据缺失。

不改变 CI 等待默认、分支保护或合并权限;不认证模型遵从和安装采用。

改动思路 / Approach

规则与一致性检查复用同一能力及既有字段,局部修复无需新建豁免状态或权限层。

本 PR 仅交付源码评审规则、检查器与指导修复,合并授权及模型行为资格保持独立。

先区分“当前改动缺少决定性验证”和“远端 CI 状态未知”,再选评审结论。仅把 wait_for_ci 关掉不能修复原合同中逐项归因的要求;只改文字又会留下把已确认回归设成 required=false 的既有绕过。当前方案同时修正两处,判断权仍由原 capability 持有。

当前证据 检查器结果
独立必要验证通过,CI 诊断原因未知 可以批准
必要验证尚未证明 阻断批准
已确认 PR 回归,required=false 阻断批准

具体改动 / Changes

审阅全部七文件,+118/-35:两个 production 文件、三份测试、README 和安装用 skill。检查器的输入、结果 schema、required 布尔值与归因枚举沿用原契约,policy revision 从25升到26,使旧规则结果不能直接作为当前结论。

  • _check_validation_failures 将 pr_regression 检查放在 optional/passed 的提前返回之前;已确认缺陷不能靠非必需标记消失。其他必要失败的基线/外部归因条件保留。
  • build_review_execution_contract 同步归因规则、validation_source、completion 与 verdict。两种 waiting 模式都保留必要证据门,false 模式仍禁止 fetch/poll/wait。
  • README、薄 skill 与断言保持同一含义;pyproject 的既有 skill 安装路径仍有效。新增 CLI 测试交叉覆盖四类诊断状态与四类必要验证状态;模型正反案例属于显式启用实验,本轮没有调用模型。

对主干的风险 / Risks

最强反例是真正缺陷被包装成诊断。独立使用公开 --check-result 入口,对不可变基线 2f2c4ef 和当前 head 各执行四种相同语义 fixture,共八次:未知诊断和正常通过均可批准,必要证据缺失均拒绝;已确认 optional 回归在基线错误通过、当前版拒绝。这证明预期修复敏感性,同时检查了相反方向的过度阻断。首轮探针误用包的 python -m 入口,因仓库没有 main 未执行;改为真实 entrypoint 后八项均完成,未将前次失败计作通过。

PASS:针对 result_check、contract、behavior、configuration 四文件测试,286 passed;五个改动 Python 文件 Ruff 全通过。45 项模型实验 SKIPPED,不记作模型行为通过。两种 wait_for_ci 模式的 base/head 合同各仅六条路径变化,字段形状、CI 等待默认和独立合并门保持原规则。源码未包含新的 IO、状态迁移或自动授权。

正式 packet 的首次生成因本机旧 GitHub 客户端不支持 baseRefOid 失败;临时新版客户端重试成功,未修改产品以适应旧工具。packet 快照为12项 CI success、21项 pending;没有等待完成,也没有从 pending 推断通过。检查器只查声明一致性:若 reviewer 把已知回归错误写成 unresolved,它不能证明证据真伪;模型是否遵守新指导、安装采用及实际长程收益仍未认证。

我的整体评价 / Verdict

未发现可复现、需要本 PR 修改的阻断问题。当前源码与 CLI 结果支持这次局部修复;其工程成本与原规则冲突相称,复用同一判定循环足够,无需增加豁免机制或扩大重构。long_horizon 与 user_experience 的既有调度、持久状态和授权路径保持不变;不宣称已证明模型遵从或效率收益。

七文件仅涉及评审合同、检查器、测试及 Markdown 指导,没有渲染界面改动。

APPROVE 是代码评审结论;远端 CI、分支保护、其他讨论及合并权限仍按各自门槛处理,本评审没有执行合并。

English verdict: APPROVE — af8418d. No actionable regression found. Required evidence and confirmed PR regressions still block approval; independent focused tests and public CLI counterfactuals pass. Model compliance and pending CI remain unqualified.

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