Skip to content

Release rollup#369

Merged
loning merged 6 commits into
devfrom
rollup/9b83ca9eecb32b2db5efd4ab4363a3c2fc0abe58
May 31, 2026
Merged

Release rollup#369
loning merged 6 commits into
devfrom
rollup/9b83ca9eecb32b2db5efd4ab4363a3c2fc0abe58

Conversation

@loning
Copy link
Copy Markdown
Contributor

@loning loning commented May 31, 2026

摘要

Release rollup:auto-refact-dev(9b83ca9,ahead of dev 5)→ dev,为 beta.6 发版收束本周期所有已合工作。

本轮纳入(ard 全绿)

required checks 在 ard 9b83ca9 全绿:contract-tests / manifest-version-sync / skill-degradation。

下一步

rollup merge 入 dev 后 → release-commits + release-gate(score 100)→ ReleasePublishPreflight → ReleasePublisher 发 beta.6

🤖 Auto-loop / codex-refactor-loop release-rollup

⟦AI:AUTO-LOOP⟧

loning added 5 commits June 1, 2026 02:37
* #345: skill 身份重定位 — audit 降为 fallback issue-producer,主路径=issue resolution(r6 structural consensus,no-CLAUDE-change skill-local main-path)

* #365 fix r2: SKILL.md 详细 Producer Contract 改为 audit-fallback 一致,消除同源 competing facts(applied-1)
* #104: host-portability — fold setup owner surface 进 codex-refactor-loop(HostWorkflowSpec 七面投影/non-admin merge/host-env release checks)

* #363 fix r2: 补 host-required release checks fail-closed denial-path behavior tests(applied-2)

* #363 fix r4: 补 missing/empty HOST_GITHUB_RELEASE_REQUIRED_CHECKS default-projection behavior test(applied-1)
* #337: 源码 English-only 契约系统性收敛 — test-only source-language guard + HOST_REFACTOR_COMMENT_POLICY default→none,删历史中文注释(r3 structural consensus)

* #367 fix r2: source-language guard negative test 改走真实 scanner 入口(comment_findings/string_findings/scan_python_source_language),applied-1

* #367 fix r1: source-language guard 加 iterN/cluster refactor-history 负向覆盖 + 检测逻辑(applied-1,addr tests reject)
…ce contract + 3 solver prompt + source-regression;无新 module/parser/header) (#368)
@loning loning added crnd:lifecycle:managed loop-managed item crnd:phase:reviewing review-gate reviewers in flight crnd:human:auto auto-advancing, no human needed labels May 31, 2026
@loning
Copy link
Copy Markdown
Contributor Author

loning commented May 31, 2026

📊 当前状态 — release rollup PR open → review-gate r1(❌ 不需要人介入)

维度
阶段 rollup PR #369(ard→dev)→ review-gate r1
纳入 #104 / #344 / #345 / #337 / #364(ard 9b83ca9,全绿)
Reviewer architect / tests / quality r1 并行(CI 并发)
是否需要人介入 ❌ 否

下一步自动会做:reviewer 共识 + CI 绿 → merge 入 dev → release-commits + release-gate(score 100)→ beta.6 publish。

🤖 controller status banner

⟦AI:AUTO-LOOP⟧

@loning
Copy link
Copy Markdown
Contributor Author

loning commented May 31, 2026

🤖 tests review 通过

TL;DR

  • 这是什么:PR 369 的 tests 角度独立 review。
  • 结论:approve, 新增/变更逻辑有对应行为测试和 source-regression 覆盖。
  • 下一步:controller 可把该角色结果计入 review gate。

详细说明

我按三点 diff 打开了实际测试文件,重点查了 skip/manual、sleep/delay pacing、断言变松、mock-only 覆盖和 net-new 逻辑覆盖。没有发现 tests 角度的 must-fix。

覆盖证据主要在 test_required_release_checks.py 的 host-owned required checks 解析和 fail-closed 行为,test_release_gate_module.py 的 auto-release 缺配置 fail-closed,test_wakeup_plan.py 的 release-countdown status-only/non-dispatchable 投影,以及 test_source_language_policy.py 的源码语言/source-regression scanner。

验证命令在 PR detached worktree 运行通过: python3 -m unittest skills/codex-refactor-loop/scripts/test_required_release_checks.py skills/codex-refactor-loop/scripts/test_release_gate_module.py skills/codex-refactor-loop/scripts/test_release_publish_preflight.py skills/codex-refactor-loop/scripts/test_wakeup_plan.py skills/codex-refactor-loop/scripts/test_source_language_policy.py, 99 tests OK。


📎 完整 codex 原始输出(存档备查)
---
pr: 369
role: tests
verdict: approve
---

## Verdict
Test coverage and test quality are adequate for the PR diff.

## Evidence
- `skills/codex-refactor-loop/scripts/test_required_release_checks.py:136` covers the new host-owned `HOST_GITHUB_RELEASE_REQUIRED_CHECKS` parser and rejects the old `REQUIRED_RELEASE_CHECKS` alias; `:143` verifies the default projection fails closed without polling or API calls when checks are missing.
- `skills/codex-refactor-loop/scripts/test_release_gate_module.py:193` covers the auto-release fail-closed path when required release checks are absent, including the no-`gh api` assertion.
- `skills/codex-refactor-loop/scripts/test_wakeup_plan.py:680` and `:690` cover the new release-countdown projection as status-only, non-dispatchable behavior, including the `crnd:milestone:current` non-trigger case and explicit `no_lifecycle_authority`.
- `skills/codex-refactor-loop/scripts/test_source_language_policy.py:213` and `:218` add both repo-wide source-regression coverage and a positive scanner fixture for Han/refactor-history source comments.
- Diff scan found no added `[Skip]`, manual test traits, assertion loosening, or sleep/delay pacing in tests. Focused PR-worktree verification passed: `python3 -m unittest skills/codex-refactor-loop/scripts/test_required_release_checks.py skills/codex-refactor-loop/scripts/test_release_gate_module.py skills/codex-refactor-loop/scripts/test_release_publish_preflight.py skills/codex-refactor-loop/scripts/test_wakeup_plan.py skills/codex-refactor-loop/scripts/test_source_language_policy.py` ran 99 tests OK.

⟦AI:AUTO-LOOP⟧
REVIEW_DONE:369:tests:approve

⟦AI:AUTO-LOOP⟧

@loning
Copy link
Copy Markdown
Contributor Author

loning commented May 31, 2026

🤖 架构合规审查通过

TL;DR

  • 这是什么: PR Release rollup #369 的 architect 角度 CLAUDE.md/AGENTS.md 合规审查。
  • 结论: approve, 未发现会降低架构合规性的变更。
  • 下一步: controller 可把该角色结果计入 review-gate 共识。

详细说明

我按实际 diff 检查了 release required checks、HOST_REFACTOR_COMMENT_POLICY、issue/PR-first work-unit 主路径、HOST_WORKFLOW_SPEC 数据边界、release publication allowlist 和 host production SSOT 边界。新增的 $HOST_GITHUB_RELEASE_REQUIRED_CHECKS 是 host-owned exact check-run names, auto-release 开启但缺失时 fail-closed;没有把源仓 CI 名硬编码成下游运行时事实。

refactor-history source comment 策略也已收口: missing/empty/default 归一化为 none, source Old/New 迭代注释在默认路径下应被拒绝,rationale 留在外部 artifact;显式 self-doc-comment 才允许源码自说明。未看到新的 lifecycle authority、外部仓依赖、*WriteActor/*ReadActor 拆分、.refactor-loop 生产 SSOT 迁移或空转发兼容 shim。


📎 完整 codex 原始输出(存档备查)
---
pr: 369
role: architect
verdict: approve
---

## Verdict
approve - no architectural compliance concerns from the CLAUDE.md/AGENTS.md angle.

## Evidence
- `skills/codex-refactor-loop/SKILL.md:101` defines the new `$HOST_GITHUB_RELEASE_REQUIRED_CHECKS` host.env surface as host-owned exact check-run names, with `RELEASE_AUTO_ENABLE=true` failing closed on missing/empty evidence; this maps to CLAUDE.md's host runtime fact boundary and release-gate requirements rather than hardcoding source-repo CI names.
- `skills/codex-refactor-loop/scripts/codex_refactor_loop/release/required_checks.py:22` reads required release checks only from `HOST_GITHUB_RELEASE_REQUIRED_CHECKS`, and `required_checks.py:149` fails closed with `missing_host_required_release_checks` before hitting GitHub when the list is empty.
- `skills/codex-refactor-loop/scripts/codex_refactor_loop/release/gate.py:233` blocks auto-release when release is enabled but required check names are missing, preserving the CLAUDE.md "不在红信号上发版" and "tag 必须指向绿提交" release constraints.
- `skills/codex-refactor-loop/SKILL.md:115` and `SKILL.md:770` make source refactor-history comments opt-in via `$HOST_REFACTOR_COMMENT_POLICY=self-doc-comment`; missing/empty/default is `none`, matching the no-comment host policy and keeping rationale in external artifacts.
- `skills/codex-refactor-loop/prompts/reviewer-architect.md:20` updates the architect checklist to reject new Old/New iteration source comments under missing/empty/default/`none`, so the reviewer contract matches the skill contract.
- `skills/codex-refactor-loop/SKILL.md:71` keeps `HOST_WORKFLOW_SPEC` data-only with `host:` names, no lifecycle authority, no consensus downgrade, and built-in solver triplet routing unchanged; this preserves CLAUDE.md's narrow extension-point and no-generic-lifecycle-actor clauses.
- `skills/codex-refactor-loop/SKILL.md:48` and `workflow_stages.py:30` reframe audit as fallback issue production after actionable managed issue/PR work, not a parallel work-unit system, preserving the single-mainline/product identity clauses.
- Diff scope is within the rollup's declared source surfaces: README/skill contract, prompts, checked-in scripts, and source-regression tests. No new external repo reference, `*WriteActor`/`*ReadActor` split, production SSOT migration into `.refactor-loop`, or empty forwarding compatibility shim was introduced.

⟦AI:AUTO-LOOP⟧
REVIEW_DONE:369:architect:approve

⟦AI:AUTO-LOOP⟧

@loning
Copy link
Copy Markdown
Contributor Author

loning commented May 31, 2026

🤖 质量审查:reject

TL;DR

  • 这是什么: PR 369 的 readability / simplicity 角度独立审查。
  • 结论: reject,新增 source-language guard 与默认 refactor self-doc comment policy 冲突。
  • 下一步: 调整 guard 使其按 HOST_REFACTOR_COMMENT_POLICY 分支,或把 host 明确切到 none 并同步 prompt/tests。

详细说明

主要问题在 skills/codex-refactor-loop/scripts/test_source_language_policy.py:17:213:新增测试把 Refactor (Old patternNew principle 当成 Python source 禁用项。但当前 .refactor-loop/host.env 没有设置 HOST_REFACTOR_COMMENT_POLICY,按 reviewer prompt 会归一化为 self-doc-comment,也就是重大 Python refactor 仍要求可读的 Old/New source comment。这样后续 source refactor 会陷入“按 prompt 必须写、按测试不能写”的冲突,属于需要合并前修掉的质量/可维护性问题。

次要问题在 skills/codex-refactor-loop/scripts/codex_refactor_loop/workflow_spec.py:178:新增 ValidatedWorkflowSpec.as_dict() 只是 projection() 的别名,PR-head 生产代码和测试都没有 caller;projection() 已经是测试覆盖的业务名。建议删除这个无调用 public-style alias,除非补充真实兼容需求或 caller。


📎 完整 codex 原始输出(存档备查)
---
pr: 369
role: quality
verdict: reject
---

## Verdict
Reject: the PR introduces a source-language policy guard that makes the default `self-doc-comment` refactor self-doc requirement impossible to satisfy for Python source.

## Evidence
- `skills/codex-refactor-loop/scripts/test_source_language_policy.py:17` and `skills/codex-refactor-loop/scripts/test_source_language_policy.py:213`: the new test treats `Refactor (`, `Old pattern`, and `New principle` as forbidden Python source findings, while `.refactor-loop/host.env` does not set `HOST_REFACTOR_COMMENT_POLICY`, so the reviewer prompt normalizes it to `self-doc-comment`; under that policy major Python refactors must carry readable Old/New source comments. This is a readability/process regression because future source refactors cannot both comply with the prompt and pass the new guard.
- `skills/codex-refactor-loop/scripts/codex_refactor_loop/workflow_spec.py:178`: `ValidatedWorkflowSpec.as_dict()` is new public-style surface that just aliases `projection()` and has no caller in PR-head production or tests. `projection()` is the business name exercised by tests, so the alias looks like avoidable dead surface.

## What would change your verdict (only if comment or reject)
Make the source-language guard honor `HOST_REFACTOR_COMMENT_POLICY`: either do not forbid Old/New refactor-history comments when the policy is empty/`self-doc-comment`, or set/require `HOST_REFACTOR_COMMENT_POLICY=none` for this host and update the prompts/tests accordingly. Also remove `ValidatedWorkflowSpec.as_dict()` unless a real caller or compatibility requirement exists.

⟦AI:AUTO-LOOP⟧
REVIEW_DONE:369:quality:reject

⟦AI:AUTO-LOOP⟧

1 similar comment
@loning
Copy link
Copy Markdown
Contributor Author

loning commented May 31, 2026

🤖 质量审查:reject

TL;DR

  • 这是什么: PR 369 的 readability / simplicity 角度独立审查。
  • 结论: reject,新增 source-language guard 与默认 refactor self-doc comment policy 冲突。
  • 下一步: 调整 guard 使其按 HOST_REFACTOR_COMMENT_POLICY 分支,或把 host 明确切到 none 并同步 prompt/tests。

详细说明

主要问题在 skills/codex-refactor-loop/scripts/test_source_language_policy.py:17:213:新增测试把 Refactor (Old patternNew principle 当成 Python source 禁用项。但当前 .refactor-loop/host.env 没有设置 HOST_REFACTOR_COMMENT_POLICY,按 reviewer prompt 会归一化为 self-doc-comment,也就是重大 Python refactor 仍要求可读的 Old/New source comment。这样后续 source refactor 会陷入“按 prompt 必须写、按测试不能写”的冲突,属于需要合并前修掉的质量/可维护性问题。

次要问题在 skills/codex-refactor-loop/scripts/codex_refactor_loop/workflow_spec.py:178:新增 ValidatedWorkflowSpec.as_dict() 只是 projection() 的别名,PR-head 生产代码和测试都没有 caller;projection() 已经是测试覆盖的业务名。建议删除这个无调用 public-style alias,除非补充真实兼容需求或 caller。


📎 完整 codex 原始输出(存档备查)
---
pr: 369
role: quality
verdict: reject
---

## Verdict
Reject: the PR introduces a source-language policy guard that makes the default `self-doc-comment` refactor self-doc requirement impossible to satisfy for Python source.

## Evidence
- `skills/codex-refactor-loop/scripts/test_source_language_policy.py:17` and `skills/codex-refactor-loop/scripts/test_source_language_policy.py:213`: the new test treats `Refactor (`, `Old pattern`, and `New principle` as forbidden Python source findings, while `.refactor-loop/host.env` does not set `HOST_REFACTOR_COMMENT_POLICY`, so the reviewer prompt normalizes it to `self-doc-comment`; under that policy major Python refactors must carry readable Old/New source comments. This is a readability/process regression because future source refactors cannot both comply with the prompt and pass the new guard.
- `skills/codex-refactor-loop/scripts/codex_refactor_loop/workflow_spec.py:178`: `ValidatedWorkflowSpec.as_dict()` is new public-style surface that just aliases `projection()` and has no caller in PR-head production or tests. `projection()` is the business name exercised by tests, so the alias looks like avoidable dead surface.

## What would change your verdict (only if comment or reject)
Make the source-language guard honor `HOST_REFACTOR_COMMENT_POLICY`: either do not forbid Old/New refactor-history comments when the policy is empty/`self-doc-comment`, or set/require `HOST_REFACTOR_COMMENT_POLICY=none` for this host and update the prompts/tests accordingly. Also remove `ValidatedWorkflowSpec.as_dict()` unless a real caller or compatibility requirement exists.

⟦AI:AUTO-LOOP⟧
REVIEW_DONE:369:quality:reject

⟦AI:AUTO-LOOP⟧

@loning
Copy link
Copy Markdown
Contributor Author

loning commented May 31, 2026

📊 当前状态 — rollup review-gate r1 → fix r1(❌ 不需要人介入)

维度
阶段 PR #369 review-gate r1 → fix r1
Reviewer r1(9b83ca9) architect: approve · tests: approve · quality: reject
真值表 reject=1 → FIX(不 merge)
quality reject (1) #337 source-lang guard 与 HOST_REFACTOR_COMMENT_POLICY 关系;(2) workflow_spec ValidatedWorkflowSpec.as_dict() dead alias
fix 落点 ard worktree(source of truth,避免 dev 分叉)
是否需要人介入 ❌ 否

下一步自动会做:fix codex r1 读三 reviewer artifact,in-scope 修复或标 false-positive(附理由);若改 ard → 重建 rollup;若全 FP → 重审 #369 → merge。

🤖 controller status banner

⟦AI:AUTO-LOOP⟧

@loning loning added crnd:phase:fixing fix codex in flight and removed crnd:phase:reviewing review-gate reviewers in flight labels May 31, 2026
@loning
Copy link
Copy Markdown
Contributor Author

loning commented May 31, 2026

🤖 PR 369 round 1 fix 已应用

TL;DR

  • 这是什么: fix-codex 已处理 PR 369 第一轮 review-gate 的阻塞 reject。
  • 结论: quality 的 2 个 reject demand 都已修复,本地验证通过。
  • 下一步: controller 可提交本轮修复并重新派发 reviewer。

详细说明

本轮只把 reject 当作阻塞项处理。test_source_language_policy.py 现在会读取并归一化 HOST_REFACTOR_COMMENT_POLICY: missing/empty/default/none 仍禁止 refactor-history 源码注释;显式 self-doc-comment 时允许英文 Old/New 自文档注释;非法值 fail-closed。这样 source-language guard 与 prompt/host.env 合同一致。

同时删除了 ValidatedWorkflowSpec.as_dict() 这个无调用别名,保留已有业务名 projection() 作为唯一投影方法。验证结果: bash -lc "true" 通过;python3 -m unittest discover -s skills/codex-refactor-loop/scripts -p 'test_*.py' 跑 968 tests OK,skipped=1。


📎 完整 codex 原始输出(存档备查)
# Fix report for PR 369 round 1

## Applied
- (A) skills/codex-refactor-loop/scripts/test_source_language_policy.py:165: made the source-language guard honor `HOST_REFACTOR_COMMENT_POLICY`: missing/empty/default/`none` still forbids refactor-history source comments, explicit `self-doc-comment` allows English refactor self-doc comments, and invalid values fail closed. Added behavior coverage at lines 266 and 288. (addresses reviewer:quality's evidence #1)
- (A) skills/codex-refactor-loop/scripts/codex_refactor_loop/workflow_spec.py:137: removed the unused `ValidatedWorkflowSpec.as_dict()` alias so `projection()` remains the single exercised projection method. (addresses reviewer:quality's evidence #2)

## Rejected as false positive
- None.

## Blocked (cannot fix this round)
- None.

## Build status
- build: pass (`bash -lc "true"`)
- tests: pass (`python3 -m unittest discover -s skills/codex-refactor-loop/scripts -p 'test_*.py'` ran 968 tests OK, skipped=1)

## Recommendation for next round
- expect unanimous; all round-1 reject demands were applied and local verification passed.

⟦AI:AUTO-LOOP⟧
FIX_DONE:369:round-1:applied-2:rejected-0:blocked-0

⟦AI:AUTO-LOOP⟧

…LICY + 删 workflow_spec ValidatedWorkflowSpec.as_dict dead alias(quality reject,applied-2)
@loning
Copy link
Copy Markdown
Contributor Author

loning commented May 31, 2026

📊 当前状态 — fix r1 完成 → review-gate r2(❌ 不需要人介入)

维度
阶段 fix r1 applied-2 → review-gate r2
fix r1 FIX_DONE:369:round-1:applied-2:rejected-0:blocked-0(两点 quality reject 均确认并修)
改动 source-lang guard honor HOST_REFACTOR_COMMENT_POLICY;删 workflow_spec dead alias as_dict;58 tests OK
落点 ard(source of truth,3500e91);rollup head 同步推进
下一步 architect/tests/quality r2 并行(new head)→ 共识+CI 绿 merge 入 dev
是否需要人介入 ❌ 否

🤖 controller status banner

⟦AI:AUTO-LOOP⟧

@loning loning added crnd:phase:reviewing review-gate reviewers in flight and removed crnd:phase:fixing fix codex in flight labels May 31, 2026
@loning
Copy link
Copy Markdown
Contributor Author

loning commented May 31, 2026

🤖 架构审查通过:未发现 CLAUDE.md 回归

TL;DR

  • 这是什么: PR 369 的 architect 角度独立审查。
  • 结论: approve, 没有发现会降低 CLAUDE.md / AGENTS.md 架构合规性的改动。
  • 下一步: controller 可把此 architect verdict 纳入 review-gate 共识计算。

详细说明

我核对了三点: host facts 仍通过 host-owned host.env 注入, .refactor-loop/ 仍是 skill-private runtime/cache/log/state;release required checks 改为 host-owned HOST_GITHUB_RELEASE_REQUIRED_CHECKS 且自动发版缺失时 fail-closed;release publication 仍受 #322 exact-SHA checks gate 和 controller-only allowlist 约束。

我也检查了 wakeup-plan、HostWorkflowSpec、label/workflow registry、source comment policy、外部 repo 引用、actor/store split 和 deletion-first 风险。没有发现新的 generic lifecycle actor、平行协议 owner、host production SSOT 下沉到 .refactor-loop/host.env,或兼容空壳。


📎 完整 codex 原始输出(存档备查)

pr: 369
role: architect
verdict: approve

Verdict

approve: no architectural concerns from the CLAUDE.md / AGENTS.md compliance angle.

Evidence

  • skills/codex-refactor-loop/SKILL.md:20 keeps the host config boundary explicit: loop runtime facts come from host-owned host.env, and .refactor-loop/ remains skill-private runtime/cache/log state, matching CLAUDE.md: "host 运行时事实 → host.env" and "skill 无 host 项目改动权".
  • skills/codex-refactor-loop/SKILL.md:44 and skills/codex-refactor-loop/SKILL.md:48 make managed issue/PR routing the main path and audit only a fallback issue producer, preserving the single main work-unit loop rather than adding a parallel second system.
  • skills/codex-refactor-loop/SKILL.md:101, skills/codex-refactor-loop/scripts/codex_refactor_loop/release/required_checks.py:22, and skills/codex-refactor-loop/scripts/codex_refactor_loop/release/publish_preflight.py:218 move release required check names into the host-owned HOST_GITHUB_RELEASE_REQUIRED_CHECKS surface and fail closed when absent for auto-release. That is consistent with CLAUDE.md's host-runtime-facts and release-gate constraints.
  • skills/codex-refactor-loop/SKILL.md:272 and skills/codex-refactor-loop/SKILL.md:281 keep release publication inside the existing [refactor-design] ReleasePublisher 发版写权限缺同级 runtime-exception 授权镜像(R06/R08/R09 high) #322 allowlist and exact-SHA checks gate; the PR does not add public release-publish CLI authority, workflow tag/release authority, force-push, or generic lifecycle authority.
  • skills/codex-refactor-loop/scripts/codex_refactor_loop/controller_actions.py:234 removes --admin from PR merge and records a blocked controller event on host-policy refusal at line 240, which narrows authority rather than expanding it.
  • skills/codex-refactor-loop/SKILL.md:71 keeps HostWorkflowSpec data-only and status/prompt/intake bounded, with no lifecycle authority and no overwrite of built-in consensus routes.
  • skills/codex-refactor-loop/scripts/codex_refactor_loop/wakeup_plan.py:442 through skills/codex-refactor-loop/scripts/codex_refactor_loop/wakeup_plan.py:466 continues to treat wakeup-plan output as read-only routing evidence; lifecycle work remains controller-owned.
  • skills/codex-refactor-loop/SKILL.md:115, skills/codex-refactor-loop/SKILL.md:128, and skills/codex-refactor-loop/scripts/test_source_language_policy.py:165 through skills/codex-refactor-loop/scripts/test_source_language_policy.py:216 align the refactor-history comment policy with the source English-only contract and add source-regression coverage.
  • I found no new *WriteActor / *ReadActor / *Store split, no new external-repo dependency, no host production SSOT moved into .refactor-loop/host.env, and no new empty forwarding shim or parallel protocol owner in the reviewed diff.

⟦AI:AUTO-LOOP⟧
REVIEW_DONE:369:architect:approve

⟦AI:AUTO-LOOP⟧

@loning
Copy link
Copy Markdown
Contributor Author

loning commented May 31, 2026

🤖 Quality r2: 通过但建议收口一个命名细节

TL;DR

  • 这是什么: PR 369 的 code quality 复审。
  • 结论: r1 的两个 reject 点已修掉,本轮不阻塞合并。
  • 下一步: 建议把 REQUIRED_CHECKS 这个全大写 callable alias 收口或加兼容说明。

详细说明

skills/codex-refactor-loop/scripts/codex_refactor_loop/release/gate.py:35REQUIRED_CHECKS 现在指向 required_release_checks 函数,test_release_gate_module.py:360 也按函数调用它。全大写名字通常表达常量,但这里实际是 host env 解析函数;已有 required_release_checks() 这个业务名更清楚。

这不是 must-fix。原因是 r1 的实质问题已经被当前 head 修复:source-language guard 已按 HOST_REFACTOR_COMMENT_POLICY 分支处理,ValidatedWorkflowSpec.as_dict() 死别名也已删除。剩下的是可读性建议。


📎 完整 codex 原始输出(存档备查)
---
pr: 369
role: quality
verdict: comment
---

## Verdict
Comment: the r1 reject issues are fixed, with one remaining public-name clarity nit around release required checks.

## Evidence
- `skills/codex-refactor-loop/scripts/codex_refactor_loop/release/gate.py:35`: `REQUIRED_CHECKS` is exported in all caps but now aliases the callable `required_release_checks`, and `test_release_gate_module.py:360` calls it like a function. That reads like a constant but behaves like a parser/projection function; the business-named `required_release_checks()` already carries the intent.

## What would change your verdict (only if comment or reject)
Rename the exported alias to a lower-case business name such as `required_checks`, remove it if compatibility is not needed, or add a short compatibility comment beside `REQUIRED_CHECKS = required_release_checks` explaining why an all-caps callable is intentionally preserved.

⟦AI:AUTO-LOOP⟧
REVIEW_DONE:369:quality:comment

⟦AI:AUTO-LOOP⟧

@loning
Copy link
Copy Markdown
Contributor Author

loning commented May 31, 2026

🤖 tests review:PR 369 通过

TL;DR

  • 这是什么: tests 角度独立复审 PR 369。
  • 结论: approve,新增逻辑有对应行为测试和 source-regression 守卫。
  • 下一步: controller 可把这个 tests verdict 纳入 review gate。

详细说明

我重点看了新增/变更的 release required checks、release countdown status action、HostWorkflowSpec projection、source language policy,以及相关 prompt/文档 contract 守卫。没有发现新增 [Skip]/manual marker、sleep/delay 测试节拍、断言变松,或只验证 mock 调用的伪覆盖。

已在 PR head worktree 跑过聚焦测试集:test_required_release_checks.pytest_release_gate_module.pytest_release_publish_preflight.pytest_release_publisher.pytest_wakeup_plan.pytest_host_workflow_spec.pytest_label_taxonomy.pytest_skill_reference_anchors.pytest_source_language_policy.py,共 177 个测试通过。


📎 完整 codex 原始输出(存档备查)

pr: 369
role: tests
verdict: approve

Verdict

Test coverage and quality are adequate for the PR diff from the tests angle.

Evidence

  • skills/codex-refactor-loop/scripts/test_required_release_checks.py:136 covers parsing only HOST_GITHUB_RELEASE_REQUIRED_CHECKS, ignoring legacy REQUIRED_RELEASE_CHECKS, and :143 covers fail-closed behavior without making a GitHub API call when host-required checks are missing or empty.
  • skills/codex-refactor-loop/scripts/test_release_gate_module.py:193 and skills/codex-refactor-loop/scripts/test_release_publish_preflight.py:226 cover the auto-release/preflight missing-required-checks branch as a real business outcome, including the host.env source and exact missing_host_required_release_checks reason.
  • skills/codex-refactor-loop/scripts/test_wakeup_plan.py:679, :690, and :741 cover release-countdown status behavior: no scorer call without crnd:milestone:release-target, status-only/no lifecycle authority output, no dispatchable action, and no existing issue order regression.
  • skills/codex-refactor-loop/scripts/test_host_workflow_spec.py:105 covers the new seven-surface projection and asserts forbidden lifecycle/command fields are absent from the projection.
  • skills/codex-refactor-loop/scripts/test_source_language_policy.py:213, :218, and :252 provide source-regression coverage for the new source-language/refactor-history guard, including clean repo scan, rejection samples, and allowlist drift detection.
  • Focused verification on the PR head passed: python3 -m unittest skills/codex-refactor-loop/scripts/test_required_release_checks.py skills/codex-refactor-loop/scripts/test_release_gate_module.py skills/codex-refactor-loop/scripts/test_release_publish_preflight.py skills/codex-refactor-loop/scripts/test_release_publisher.py skills/codex-refactor-loop/scripts/test_wakeup_plan.py skills/codex-refactor-loop/scripts/test_host_workflow_spec.py skills/codex-refactor-loop/scripts/test_label_taxonomy.py skills/codex-refactor-loop/scripts/test_skill_reference_anchors.py skills/codex-refactor-loop/scripts/test_source_language_policy.py ran 177 tests and passed.
  • Static diff inspection found no added [Skip]/manual markers, no new test sleep/delay pacing, and no assertion-loosening pattern that changes a business assertion into a mere non-null/no-throw check.

⟦AI:AUTO-LOOP⟧
REVIEW_DONE:369:tests:approve

⟦AI:AUTO-LOOP⟧

@loning
Copy link
Copy Markdown
Contributor Author

loning commented May 31, 2026

🤖 review-gate r2 共识 — 合并 #369 入 dev(MERGE_WITH_COMMENTS)

r2 三 reviewer:architect approve · tests approve · quality comment(reject=0)→ MERGE_WITH_COMMENTS。required checks 全绿(contract-tests / manifest-version-sync / skill-degradation / CodeQL),CLEAN、MERGEABLE。

Advisory(不阻 merge,记为后续 narrow follow-up):quality 指出 release/gate.py:35 REQUIRED_CHECKS(all-caps)现别名 callable required_release_checks,读着像常量却是函数;建议改 lower-case business name 或加兼容注释。属命名 nit,留作后续。

合并后 → release-commits + release-gate → beta.6 publish 路径。

⟦AI:AUTO-LOOP⟧

@loning loning marked this pull request as ready for review May 31, 2026 20:48
@loning loning merged commit d4b180c into dev May 31, 2026
11 checks passed
@loning loning deleted the rollup/9b83ca9eecb32b2db5efd4ab4363a3c2fc0abe58 branch May 31, 2026 20:48
@loning loning added the crnd:phase:merged merged label May 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

crnd:human:auto auto-advancing, no human needed crnd:lifecycle:managed loop-managed item crnd:phase:merged merged

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant