怎么准入一个 wave
你有一个 ongoing 状态的 topic。你想在它下准入一个新 wave。
菜谱
- 确认 topic 状态。
topic.yaml显示state: ongoing。如果是pending,先搬到ongoing(或准入一个论证再激活的 remediation wave)。 - 权威 wave id。 按
wave-N-<slug>模式组wave_id;确保跟 topic 里既有 wave 不冲突。 - 加 wave 条目到
topic.yaml。 必填字段:wave_id、slug、state(从candidate开始)primary_closure_goal(一段)deps(这个依赖的之前闭合 wave 列表;可空)owner_domain(一个主 owner 域)parallelizable_after(准入值之一)selected: true(如这是当前活跃 wave)
- 至多一个 selected wave。 把之前 selected wave 的
selected: false。 - 写 packet 工件。
packet-<wave_id>.md带所有必填字段(authority_owner、canonical_seams、forbidden_shortcuts、acceptance_invariants、negative_tests、reopen_conditions、allowed_reads、allowed_writes)。 - 跑 preflight。
preflight-result-<wave_id>.md带裁定。 - 如权威收敛闸门触发(packet 类是
authority/spec/redesign/preflight或引.nimi/spec/):跑实现前审计;记result_kind: audit, verdict: PASS。 - 更新 wave 状态。 Preflight(与审计如需要)PASS 后,
topic.yaml里state: candidate → admitted。 - 更新
topic.yaml.last_transition_reason。 简洁原因比如wave-2-foo-admitted_after_pre_audit_pass。
要看什么
| 症状 | 含义 |
|---|---|
两个 wave 都 selected: true | 拒;同一时刻一个 selected |
| Wave 没 preflight 就准入 | 拒;preflight 是停止线 |
Wave 触 .nimi/spec/ 没 pre-audit | 拒;权威收敛闸门必须触发 |
deps 引一个不存在的 wave id | 拒;deps 必须真 |
owner_domain 说多个域 | 拒;每个 packet 一个主 owner |
阅读场景
你管一个文档 remediation topic。Wave-1 闭了;用户接受;wave-2 要准入。
| 步骤 | 输出 |
|---|---|
| 确认 topic ongoing | 是 |
Wave id wave-2-content-rewrite | 组好 |
| 加到 topic.yaml | state: candidate, selected: true |
| Wave-1 selected: false | 完成 |
| 写 packet | 所有必填字段在 |
| Preflight PASS | 已记 |
| 不触 spec → 不要权威收敛 | OK |
| 状态搬到 admitted | 完成 |
last_transition_reason 更新 | "wave-2-content-rewrite_admitted_after_user_acceptance_of_wave_1" |
Wave-2 现在准备 dispatch。