10 KiB
Core 中立版(Increment 4 改写)。术语对照见 core/adapters/TERMINOLOGY.md;本组织实例表述见 dogfood 对应文件。
Issue Checklist Sync (mandatory, progressive)
The source issue's checklist is the stakeholder-facing progress tracker. It MUST be kept in sync with actual work state at every pipeline milestone — not just at close time. Stakeholders should be able to open the issue at any point and see exactly what is done, in progress, and deferred.
Sync points (progressive)
| When | Who | What |
|---|---|---|
After the DAG artifact is frozen (review-dag PASS + freeze confirmation per analyze-dag/SKILL.md §Output & Lifecycle step 2, [org-internal #3379]) |
Aggregator agent | Convert the source Epic's draft acceptance criteria into a formal checklist; annotate requirement-covered items _(DAG frozen: {epic-slug}/dag v1)_ |
After each iteration commit (implement Phase 4.5) |
Developer | Check off items delivered by this iteration |
| After a PR is created | Developer | Append a ## 当前状态 live-status section (or update it) with PR number + mergeable; in an Epic task list, append the PR reference to the corresponding row |
After code review converges (review-code PASS, Phase E) |
Orchestrator | Check off review-related items; annotate _(reviewed: round N PASS)_; update the ## 当前状态 review row; label the PR ready-to-merge — keep-mergeable automation takes over (hand-written keep-mergeable commits are retired) |
| On CI key state transitions (first green / failure / cumulative goal reached) | Verifier or Developer | Update the process-type AC (e.g. "N consecutive green runs") progress note in the issue; record the run number |
At verify Phase 5.6 (final sweep before PASS) / issue close |
Closing agent (Verifier on the primary path; otherwise the last role that closes the issue) | Final sweep — every remaining item gets annotated; archive-at-close: fold ## 当前状态, then mark the ## 工件索引 comment archived per the artifact-index-guards rule guard #3 (see「归档动作」below) |
Historical ([org-internal #3072] phase 3): the requirements/design/plan exit sync points were archived with their skills (detail: Tier-2 reference page
rules/issue-checklist-sync-detail, reachable via the ticket backend).
Between sync points the checklist stays as-is. PR / review / CI transitions MUST also be visible via the live status note below — the checklist is not the only carrier.
Live status note (## 当前状态)
For flows with externally visible transitions between skill exits — standalone bugfix, incident response, long-running reviews — maintain a short live status table near the top of the issue body, updated in place via the ticket-backend issue-update API at the transition moment (closes the stale-issue gap [org-internal #1668]/[org-internal #1689]]).
All roles use the literal heading ## 当前状态 (no suffix). If an issue carries
a legacy variant (e.g. ## 当前状态 (live) from [org-internal #1668]), normalize it to
## 当前状态 at the first transition touched. Example table + legacy-variant
list: Tier-2 reference page rules/issue-checklist-sync-detail, reachable
via the ticket backend.
Rules:
- One row per externally visible transition. Skill-exit sync points are surfaced by checklist annotations alone — do NOT add live-status rows for them. PR / review / CI transitions carry BOTH a checklist annotation AND a live-status row.
- Stage rows live on the board, not here: pipeline stage transitions are
represented by the Pipeline Stages board column (shared write-patterns
Pattern 7.5), NOT by
## 当前状态rows. Keep only the status-sync-automated rows (PR / 代码评审 / CI) and non-stage blockers/deferrals. - Update in place (same section heading
## 当前状态), never append a second copy. - Optional for quiet pipeline flows; MANDATORY for incident-response and standalone-bugfix flows (long windows without skill exits).
- At verify PASS / issue close, fold the table's content into checklist annotations and remove the section (see the「归档动作」section below).
Automated sync ([org-internal #1833], timer-polled since [org-internal #2813])
PR / review / CI status-row transitions are automated by the status-sync
poller (deployed as a host timer, every 5 min; event sources + latency table
on the Tier-2 reference page rules/issue-checklist-sync-detail, reachable
via the ticket backend). Roles do NOT hand-write those three row types. A PR
body may carry several close refs (batch PRs, [org-internal #3731]
land-batch): rows fan out to EVERY referenced issue
(parseClosesFixesWide — [org-internal #3867], merged 2026-08-31) — Chinese 关闭/修复 refs
drive rows too, even though the ticket backend never auto-closes those
keywords. The remaining sync points (checklist annotations at skill exits,
## 当前状态 creation, deferral/pending marking, section fold-at-close) are
still manual (content judgment, not event detection). Fallback for poller
outages / manual replay: the status-sync manual dispatch
(issue/row/value) — the row-write engine is a no-op when the section
or row is absent, never creates or corrupts them; poller failures file a
deduplicated [status-sync-cron] issue.
Standalone bugfix / incident flows
Pipeline mode has natural sync points at skill exits; standalone bugfix and
incident flows do NOT — the only boundaries are commit → PR → review → CI →
merge, and EACH is a sync point with the same annotations as the progressive
table above (full table: Tier-2 reference page
rules/issue-checklist-sync-detail, reachable via the ticket backend): fix
commit → tick fix-delivered ACs _(commit {sha}: file)_; PR → open/update
## 当前状态; review convergence → tick review ACs + review row; CI
transitions → process-AC progress with run number; verify PASS / close →
final sweep, fold ## 当前状态, archive per「归档动作」.
DAG-routed tickets — node checklist variant
For tickets routed through the DAG pipeline (see workflow-routing rule §"DAG 路由 (v2)"), the task-node checklist has a fixed shape (spec-08 §1/§2/§3):
- Task tickets (nodes) use a fixed 5-row checklist + an optional 6th row:
验收标准 / 依赖就绪 / PR / 评审(review-code) / CI — fixed 5 rows, fixed
order, no free additions. The
verify里程碑row exists ONLY when the node fans into a milestone. - Row 6 close-time semantics: if at ticket close the milestone is not yet
green, keep
- [ ]+_(Pending: M-01 未 green)_— mapped to Pending, not STALE, so it satisfies the Iron Law (no stale items at close). After milestone verify PASS the aggregator agent flips it to- [x]in place. - Epic aggregator
## DAG 状态vs## 当前状态:## DAG 状态is the node-status aggregator table (one row per DAG node — never carries ARCHIVE);## 当前状态carries only PR / 评审 / CI rows (no stage rows). - Archive rule unchanged: the archive marker stays ONLY on the
## 工件索引comment (single-comment invariant). The body aggregator table is kept as a historical snapshot at close and does NOT carry ARCHIVE.
Kind/MVP tickets — exemption ([org-internal #3061])
Kind/MVP tickets run the interactive no-pipeline mode: no stage exits →
nothing to sync, no ## 当前状态 section (no PR/review/CI rows until
graduation). The body itself is the living document: ## 决策日志 is
append-only (superseded decisions struck through, never edited); ## Debt Register rows update in place. On graduation (relabel Kind/Feature) normal
sync rules resume from the DAG route; the decision log stays as backfill input.
Annotation format
- Done →
- [x]+ parenthetical evidence:_(PR #NNN: file/component)_or_(commit {sha}: file)_if no PR yet. - Deferred → keep
- [ ]+_(Deferred: TD-XXX <reason>)_. - Pending → keep
- [ ]+_(Pending: <blocker>)_.
How to sync (each point)
Find the source issue (Closes #N / Fixes #N in the PR body or commit
messages, ## 父级 / Parent / roadmap chunk mapping, or the issue the user
referenced; none exists → skip). Fetch the body, map each - [ ] item
relevant to this sync point to evidence (- [x] + _(PR #NNN: …)_ /
_(commit {sha}: file)_), deferral, or pending — leave out-of-scope items
untouched for a later point — and update in place, preserving all
non-checklist content. PR / review / CI transitions ALSO go into the
## 当前状态 live-status section.
归档动作(issue 关闭 = 归档)
生命周期 = 工单生命周期([org-internal #1929]):文档生命周期与源 issue 绑定 —— verify PASS → issue 关闭 = 归档。Tier-2 工件库无独立生命周期。
归档是 显式动作,由关闭 issue 的 agent 执行:主路径为 Verifier 在 verify Phase 5.6;路径跳过 verify 时(audit-only、文档类、standalone/bugfix)由关闭 issue 的 role 代为执行。无论哪个 actor,均遵循 artifact-index-guards 规则 guard #3(机制以共享 write-patterns Pattern 10 为准)。动作序列:
- Checklist 终扫(Phase 5.6 既有步骤 / closing agent 补执行):每个
- [ ]项都被注解(done / deferred / pending)。 - Fold
## 当前状态(Phase 5.6 既有步骤 / closing agent 补执行):表格内容折入 checklist 注解后移除该节。 - 标记
## 工件索引归档:按共享 write-patterns Pattern 10 Archive-at-close 原位 edit(机制以 Pattern 10 为准)。横幅日期以实际关闭日为准。 - 关闭 issue:PR body 的
Closes #N在 merge 时自动关闭;无 PR 的流程由 关闭 issue 的 agent 执行工单后端的 issue-close API 完成闭环。
约束([org-internal #1928] 设计约束;机制细节以共享 write-patterns Pattern 10 Archive-at-close 为准,此处不重复):
- L 级大件(>~300 行)留 Tier-2 工件库不删除 —— 页面与位置列 URL 保持不动(稳定 URL 供历史与共享契约引用)。
- 索引/状态/归档判定全部收敛到 issue —— Tier-2 工件库无独立生命周期;归档标记只落在
## 工件索引评论。 - 归档标记可逆(原位 edit):PR 被拒 / issue 重开时恢复行级 重读 即可。
Iron Law
NO ISSUE MAY BE CLOSED WITH STALE CHECKLIST ITEMS. If a checklist item cannot be mapped to evidence or deferral at verify time, the iteration is NOT done.