#344: 发版目标 issue 默认进入版本倒计时#366
Conversation
…elease-gate/wakeup-plan 倒计时投影,r4 minimal consensus)
🤖 架构审查通过TL;DR
详细说明我按三点看:有没有新增 lifecycle authority、有没有把 release facts 拆成第二套事实源、有没有超出 #344 范围。结论是没有。
📎 完整 codex 原始输出(存档备查)---
pr: 366
role: architect
verdict: approve
---
## Verdict
approve: no architecture compliance concerns; the PR adds a read-only release-countdown status projection without adding lifecycle authority or a parallel release facts surface.
## Evidence
- `skills/codex-refactor-loop/SKILL.md:423` defines `release-countdown` as status-only and non-dispatchable, matching CLAUDE.md: "任何 controller-runtime 例外必须 narrow allowlist + no lifecycle authority by default".
- `skills/codex-refactor-loop/SKILL.md:593-595` keeps the new `crnd:milestone:release-target` label in the existing milestone axis, sources the status from release-gate / `.version-bump.json` / release commits projection, and explicitly forbids new daemons, state writes, label mutation, tags, release publication, or lifecycle authority. This preserves CLAUDE.md: "事实源唯一" and "新增后台脚本或 runtime surface 必须显式说明:**允许做什么 / 不允许做什么 / 事实源在哪里 / 如何验证**".
- `skills/codex-refactor-loop/scripts/codex_refactor_loop/labels.py:159-191` adds one catalog label and constant under the existing `milestone` group, with no new `*WriteActor` / `*ReadActor` / `*Store` split and no external repository reference.
- `skills/codex-refactor-loop/scripts/codex_refactor_loop/wakeup_plan.py:900-937` only appends a JSON action after reading open actionable managed items and release-gate scoring; it does not call git mutation, GitHub mutation, label mutation, tag, release, or write APIs.
- `skills/codex-refactor-loop/scripts/test_label_contract_source.py:105-121`, `skills/codex-refactor-loop/scripts/test_skill_reference_anchors.py:199-240`, and `skills/codex-refactor-loop/scripts/test_wakeup_plan.py:679-772` add source-regression and behavior coverage for the no-parallel-label, no-state-file, non-dispatchable, and existing-priority-preserving boundaries, satisfying CLAUDE.md: "行为变更必须配套 **behavior test**(断言行为本身)+ **source-regression test**".
- Scope is honest against the PR body and implement summary: the diff is limited to `skills/codex-refactor-loop/SKILL.md`, label catalog, wakeup plan, and matching tests for issue #344's release-target countdown behavior.
⟦AI:AUTO-LOOP⟧
REVIEW_DONE:366:architect:approve⟦AI:AUTO-LOOP⟧ |
🤖 质量审查通过TL;DR
详细说明我按三点 diff 和完整文件上下文检查了 touched files。
📎 完整 codex 原始输出(存档备查)pr: 366
|
🤖 tests review: 通过TL;DR
详细说明我按 PR diff 和实际测试文件检查了新增 未发现新增 sleep/delay、 📎 完整 codex 原始输出(存档备查)---
pr: 366
role: tests
verdict: approve
---
## Verdict
Test coverage and quality are adequate for the release-target countdown diff.
## Evidence
- `skills/codex-refactor-loop/scripts/test_label_taxonomy.py:48` covers the new label as existing `crnd:<group>:<slug>` grammar, rejects the proposed groupless `crnd:release-target` exception, and asserts `crnd:milestone:current` can coexist with `crnd:milestone:release-target`.
- `skills/codex-refactor-loop/scripts/test_wakeup_plan.py:679` asserts current-only milestone labels do not run the release scorer or emit countdown status.
- `skills/codex-refactor-loop/scripts/test_wakeup_plan.py:690` covers the business output of `release_countdown_actions`: target projection, release-gate fields, red-signal extraction, blocked reasons, `status_only`, `no_lifecycle_authority`, and non-dispatchability.
- `skills/codex-refactor-loop/scripts/test_wakeup_plan.py:741` verifies adding countdown status does not disturb existing issue dispatch ordering.
- `skills/codex-refactor-loop/scripts/test_label_contract_source.py:105` and `skills/codex-refactor-loop/scripts/test_skill_reference_anchors.py:199` provide source-regression coverage for the no-regression contract: milestone catalog ownership, no `crnd:release-target`, no countdown state file, wakeup-plan-only/read-only, and no lifecycle authority.
- I found no added sleeps/delays, `[Skip]`, manual-test traits, assertion loosening, or mock-only pseudo-coverage in the touched tests.
- Focused PR-branch verification passed: `env -u REPO_ROOT -u GH_REPO_SLUG -u SOURCE_GLOBS -u PROJECT_RULES -u CI_GUARDS python3 -m unittest skills/codex-refactor-loop/scripts/test_label_contract_source.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_wakeup_plan.py` -> 109 tests OK.
⟦AI:AUTO-LOOP⟧
REVIEW_DONE:366:tests:approve⟦AI:AUTO-LOOP⟧ |
* #344: 发版目标 issue 存在时默认进入版本倒计时(crnd:milestone:release-target label + release-gate/wakeup-plan 倒计时投影,r4 minimal consensus) (#366) * #345: skill 身份重定位 — audit 降为 fallback issue-producer (#365) * #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 (#363) * #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 契约系统性收敛 (#367) * #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) * #364: Path-A divergent-source contract-only locator(SKILL solver source contract + 3 solver prompt + source-regression;无新 module/parser/header) (#368) * fix(#369 review r1): source-lang guard honor HOST_REFACTOR_COMMENT_POLICY + 删 workflow_spec ValidatedWorkflowSpec.as_dict dead alias(quality reject,applied-2)
摘要
#344 发版目标 issue 存在时默认进入版本倒计时状态。按 design-consensus r4 minimal 共识。
crnd:milestone:release-targetlabel 标识发版目标 issue;release-gate / wakeup-plan 据此投影倒计时状态(机械事实源,非记忆)。范围
7 files:SKILL.md(milestone 段)+ labels.py(catalog 加 release-target)+ wakeup_plan.py(倒计时投影)+ 配套 source-regression / label-taxonomy test。
Closes #344
🤖 Auto-loop / codex-refactor-loop
⟦AI:AUTO-LOOP⟧