Skip to content

#344: 发版目标 issue 默认进入版本倒计时#366

Merged
loning merged 1 commit into
auto-refact-devfrom
refactor/issue344-release-target-milestone
May 31, 2026
Merged

#344: 发版目标 issue 默认进入版本倒计时#366
loning merged 1 commit into
auto-refact-devfrom
refactor/issue344-release-target-milestone

Conversation

@loning
Copy link
Copy Markdown
Contributor

@loning loning commented May 31, 2026

摘要

#344 发版目标 issue 存在时默认进入版本倒计时状态。按 design-consensus r4 minimal 共识。

  • Old:发版倒计时无机械标识,controller 靠记忆报。
  • New:crnd:milestone:release-target label 标识发版目标 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⟧

@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

📊 当前状态 — Consensus-rnd Phase review-gate r1(❌ 不需要人介入)

#344 发版倒计时 implement 完成 → PR #366(draft)开,reviewer r1 派出。3/3 共识后 ready+merge ard。

⟦AI:AUTO-LOOP⟧

@loning
Copy link
Copy Markdown
Contributor Author

loning commented May 31, 2026

🤖 架构审查通过

TL;DR

  • 这是什么:PR #344: 发版目标 issue 默认进入版本倒计时 #366 给发版目标 issue 增加 crnd:milestone:release-target 标识,并在 wakeup-plan 里投影倒计时状态。
  • 结论:架构角度 approve,没有发现 CLAUDE.md / AGENTS.md 回归。
  • 下一步:controller 可以继续汇总其他 reviewer 结论。

详细说明

我按三点看:有没有新增 lifecycle authority、有没有把 release facts 拆成第二套事实源、有没有超出 #344 范围。结论是没有。

release-countdown 是 wakeup-plan 的 status-only action,意思是只把 release-gate 评分结果显示给 controller,不派发 worker、不改 label、不写 release decision、不 tag、不 publish release。新 label 也没有开一个 crnd:release-target 新语法,而是复用现有 milestone catalog。配套测试锁住了 no-state-file、non-dispatchable、current milestone 不触发倒计时、既有 issue 顺序不变这些边界。


📎 完整 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⟧

@loning
Copy link
Copy Markdown
Contributor Author

loning commented May 31, 2026

🤖 质量审查通过

TL;DR

  • 这是什么:PR #344: 发版目标 issue 默认进入版本倒计时 #366 的代码质量审查,只看命名、简洁性、死代码、复杂度和自文档。
  • 结论:approve,新增 release countdown 是小的状态投影,没有发现必须改的质量问题。
  • 下一步:controller 可以把这个 reviewer 结果纳入 review gate。

详细说明

我按三点 diff 和完整文件上下文检查了 touched files。MILESTONE_RELEASE_TARGET 继续挂在既有 label catalog 下,没有新建平行 release label 体系;release_countdown_actions 名字直指业务意图,函数体短,复用现有 managed item 和 release gate 投影;输出 action 明确标了 status_onlyno_lifecycle_authority,测试也锁了它不参与 dispatch。

HOST_REFACTOR_COMMENT_POLICY 为空,按规则归一为 self-doc-comment。本次涉及的自文档注释有可读的 Old/New rationale,没有只写 see issue #X 的占位。 focused verification 已在 PR head worktree 跑过,109 tests OK。


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

pr: 366
role: quality
verdict: approve

Verdict

Approve: the PR keeps the release-target countdown as a small, named status projection with no dead code, no new abstraction layer, and readable self-doc coverage under the default self-doc-comment policy.

Evidence

  • skills/codex-refactor-loop/scripts/codex_refactor_loop/labels.py:191 adds MILESTONE_RELEASE_TARGET through the existing milestone label catalog, so naming follows the local crnd:<group>:<slug> owner surface instead of adding a parallel release label concept.
  • skills/codex-refactor-loop/scripts/codex_refactor_loop/wakeup_plan.py:900 keeps release_countdown_actions short and directly business-named; it reuses open_actionable_managed_items, normalize_label_set, and decide_release_artifact rather than introducing a single-implementer manager/helper abstraction.
  • skills/codex-refactor-loop/scripts/codex_refactor_loop/wakeup_plan.py:923 emits an explicit release-countdown action with status_only and no_lifecycle_authority, and test_wakeup_plan.py:727 through test_wakeup_plan.py:739 confirms the action is non-dispatchable.
  • skills/codex-refactor-loop/SKILL.md:593 through skills/codex-refactor-loop/SKILL.md:595 documents the new label and status projection with clear behavior boundaries; the new/refined self-doc comments I inspected use readable Old/New rationale rather than issue-only placeholders.
  • Focused verification on the PR head passed: python3 -m unittest skills/codex-refactor-loop/scripts/test_wakeup_plan.py skills/codex-refactor-loop/scripts/test_label_taxonomy.py skills/codex-refactor-loop/scripts/test_label_contract_source.py skills/codex-refactor-loop/scripts/test_skill_reference_anchors.py ran 109 tests OK.

⟦AI:AUTO-LOOP⟧
REVIEW_DONE:366:quality:approve

⟦AI:AUTO-LOOP⟧

@loning
Copy link
Copy Markdown
Contributor Author

loning commented May 31, 2026

🤖 tests review: 通过

TL;DR

  • 这是什么: PR #344: 发版目标 issue 默认进入版本倒计时 #366 的测试质量 review, 只看覆盖和测试写法。
  • 结论: approve, 新增 release countdown 行为有行为测试和 source-regression 测试覆盖。
  • 下一步: controller 可以把这个 tests verdict 计入 review-gate。

详细说明

我按 PR diff 和实际测试文件检查了新增 crnd:milestone:release-target label 与 release-countdown wakeup-plan 状态动作。测试不是 bump-line-count: 它们覆盖了 label 语法、current milestone 不触发 countdown、countdown 投影 release-gate 字段、status_only / no_lifecycle_authority、不参与 dispatch, 以及不改变 existing-issue 排序。

未发现新增 sleep/delay、[Skip]、manual category、弱化断言或 mock-only pseudo-coverage。聚焦验证在 PR branch worktree 通过: 109 tests OK。一个小残余风险是 countdown 主路径主要通过 release_countdown_actions 直接测, 不是完整 fake-CLI run_plan fixture, 但当前覆盖足够支撑 approve。


📎 完整 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⟧

@loning
Copy link
Copy Markdown
Contributor Author

loning commented May 31, 2026

📊 当前状态 — Consensus-rnd Phase review-gate 共识达成(❌ 不需要人介入)

#366(#344 发版倒计时)r1:architect/tests/quality 3/3 approve、0 reject、0 comment → MERGE。等 contract-tests CI 绿后自动 merge ard(当前 UNSTABLE/pending)。

⟦AI:AUTO-LOOP⟧

@loning
Copy link
Copy Markdown
Contributor Author

loning commented May 31, 2026

🤖 review-gate 共识 MERGE

#366(#344 发版倒计时)3/3 approve + CI 全绿 + mergeable → 合并到 auto-refact-dev。

⟦AI:AUTO-LOOP⟧

@loning loning marked this pull request as ready for review May 31, 2026 18:37
@loning loning merged commit 8e482a2 into auto-refact-dev May 31, 2026
4 checks passed
@loning loning deleted the refactor/issue344-release-target-milestone branch May 31, 2026 18:37
@loning loning added the crnd:phase:merged merged label May 31, 2026
loning added a commit that referenced this pull request May 31, 2026
* #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)
@loning loning removed the crnd:phase:reviewing review-gate reviewers in flight label Jun 1, 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