@mstar-harness/opencode 2.4.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/README.md +1 -1
  3. package/dist/mstar.js +4532 -227
  4. package/harness-agents/code-reviewer.md +0 -8
  5. package/harness-skills/mstar-branch-worktree/SKILL.md +14 -14
  6. package/harness-skills/mstar-branch-worktree/references/parallel-writable-pre-dispatch.md +2 -2
  7. package/harness-skills/mstar-compound/SKILL.md +2 -2
  8. package/harness-skills/mstar-compound/references/compound-workflow.md +3 -3
  9. package/harness-skills/mstar-compound-refresh/SKILL.md +4 -4
  10. package/harness-skills/mstar-compound-refresh/references/project-knowledge-bootstrap.md +1 -1
  11. package/harness-skills/mstar-dispatch-gates/SKILL.md +2 -2
  12. package/harness-skills/mstar-engine-legacy/SKILL.md +53 -0
  13. package/harness-skills/mstar-engine-legacy/references/anti-recursion-checklists.md +58 -0
  14. package/harness-skills/mstar-engine-legacy/references/engine-check-boilerplate.md +26 -0
  15. package/harness-skills/mstar-engine-legacy/references/lease-protocol.md +92 -0
  16. package/harness-skills/mstar-engine-legacy/references/qc-seat-n-restatements.md +57 -0
  17. package/harness-skills/mstar-engine-legacy/references/status-field-history.md +186 -0
  18. package/harness-skills/mstar-harness-core/SKILL.md +6 -3
  19. package/harness-skills/mstar-host/references/_shared/plan-mode-bridge-core.md +8 -8
  20. package/harness-skills/mstar-host/references/codex.md +1 -1
  21. package/harness-skills/mstar-host/references/cursor-plan-mode-bridge.md +19 -8
  22. package/harness-skills/mstar-host/references/cursor.md +5 -5
  23. package/harness-skills/mstar-host/references/dsh.md +10 -7
  24. package/harness-skills/mstar-host/references/kimi-plan-mode-bridge.md +3 -3
  25. package/harness-skills/mstar-host/references/kimi.md +1 -1
  26. package/harness-skills/mstar-host/references/omp-plan-mode-bridge.md +2 -2
  27. package/harness-skills/mstar-host/references/omp.md +2 -2
  28. package/harness-skills/mstar-host/references/zcode-plan-mode-bridge.md +3 -3
  29. package/harness-skills/mstar-host/references/zcode.md +1 -1
  30. package/harness-skills/mstar-iteration/SKILL.md +38 -37
  31. package/harness-skills/mstar-iteration/references/autonomous-direction-lock.md +2 -2
  32. package/harness-skills/mstar-iteration/references/iteration-compass-template.md +3 -3
  33. package/harness-skills/mstar-iteration/references/phase-2-worktree-lease.md +50 -38
  34. package/harness-skills/mstar-iteration/references/phase-3-iteration-close.md +7 -7
  35. package/harness-skills/mstar-iteration/references/phase-4-5-pr-delivery.md +2 -2
  36. package/harness-skills/mstar-phase-gates/SKILL.md +3 -3
  37. package/harness-skills/mstar-plan-artifacts/SKILL.md +21 -23
  38. package/harness-skills/mstar-plan-artifacts/references/knowledge-and-designs.md +6 -6
  39. package/harness-skills/mstar-plan-artifacts/references/plan-files-and-reports.md +10 -10
  40. package/harness-skills/mstar-plan-artifacts/references/status-and-residuals.md +190 -309
  41. package/harness-skills/mstar-plan-artifacts/templates/README.md +1 -3
  42. package/harness-skills/mstar-plan-artifacts/templates/status.empty.json +2 -4
  43. package/harness-skills/mstar-plan-conventions/SKILL.md +53 -13
  44. package/harness-skills/mstar-plan-conventions/references/artifact-storage-paths.md +6 -3
  45. package/harness-skills/mstar-plan-conventions/references/harness-bootstrap-and-agents-layering.md +9 -10
  46. package/harness-skills/mstar-project-governance/SKILL.md +118 -0
  47. package/harness-skills/mstar-review-qc/SKILL.md +3 -3
  48. package/harness-skills/mstar-roles/references/project-manager/dispatch-and-assignment.md +1 -1
  49. package/harness-skills/mstar-roles/references/project-manager/plan-management.md +6 -8
  50. package/harness-skills/mstar-roles/references/project-manager/qc-and-residuals.md +6 -6
  51. package/harness-skills/mstar-roles/references/project-manager.md +7 -7
  52. package/harness-skills/mstar-roles/references/qc-specialist/deep-review-lenses.md +1 -1
  53. package/harness-skills/mstar-roles/references/qc-specialist/report-template.md +1 -1
  54. package/harness-skills/mstar-roles/references/qc-specialist/reviewer-workflow.md +1 -1
  55. package/harness-skills/mstar-roles/references/qc-specialist-shared.md +2 -2
  56. package/harness-skills/mstar-sdd/SKILL.md +2 -2
  57. package/harness-skills/mstar-sdd/references/file-handoffs.md +1 -1
  58. package/package.json +1 -1
  59. package/harness-skills/mstar-plan-artifacts/references/done-compaction.md +0 -88
  60. package/harness-skills/mstar-plan-artifacts/templates/notes.empty.json +0 -5
  61. package/harness-skills/mstar-plan-artifacts/templates/plans-done.empty.json +0 -3
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: mstar-plan-artifacts
3
- description: "Morning Star plan harness artifacts — `{PLAN_DIR}` main plans and durable review summaries, `{SDD_DIR}/review/` ephemeral QC/QA bundles, `{KNOWLEDGE_DIR}` / `{ITERATION_DIR}` indexes, Done compaction, plus `{HARNESS_DIR}/status.json` and root `residual_findings` (severity SSOT, open/archived lifecycle, `notes.json`). Read when writing plans or QC/QA review bundles, maintaining knowledge/iteration indexes, reading or writing `status.json` / R#, Done compaction, or mapping QC severity to JSON. Required for `@project-manager` on status, residuals, and InReview/QC waves; `@qc-specialist*` before writing review bundle reports; `@qa-engineer` before closing R# when `QA gate: mandatory`. Verdict rules: leaf → `mstar-roles/references/qc-specialist/report-template.md`; PM → `mstar-review-qc`. Paths in `mstar-plan-conventions`."
3
+ description: "Morning Star plan harness artifacts — `{PLAN_DIR}` main plans and durable review summaries, `{SDD_DIR}/review/` ephemeral QC/QA bundles, `{KNOWLEDGE_DIR}` / `{ITERATION_DIR}` indexes, plus `{HARNESS_DIR}/status.json` (v2 root register) / `{WORKFLOW_DIR}/<id>/snapshot.json` (plan rows + leases) and `{PROJECT_DIR}/<id>/residuals.json` (residual register; severity SSOT, open/close lifecycle). Read when writing plans or QC/QA review bundles, maintaining knowledge/iteration indexes, reading or writing status/snapshot/register, or mapping QC severity to JSON. Required for `@project-manager` on status, residuals, and InReview/QC waves; `@qc-specialist*` before writing review bundle reports; `@qa-engineer` before closing R# when `QA gate: mandatory`. Verdict rules: leaf → `mstar-roles/references/qc-specialist/report-template.md`; PM → `mstar-review-qc`."
4
4
  ---
5
5
 
6
6
  ## Load order
@@ -14,55 +14,53 @@ description: "Morning Star plan harness artifacts — `{PLAN_DIR}` main plans an
14
14
  | Main plan, review bundle naming, durable summaries, QC waves, residual and plan index order | `references/plan-files-and-reports.md` |
15
15
  | Plan template (Global Constraints, Interfaces) | `templates/plan.main.md` |
16
16
  | knowledge / iterations / specs boundaries and indexes | `references/knowledge-and-designs.md` |
17
- | Done row compaction Profile A/B | `references/done-compaction.md` |
18
- | `status.json`, residual severity, lifecycle, `jq` | `references/status-and-residuals.md` |
19
- | Empty-repo `status.json` / `notes.json` / Profile B `plans-done.json` templates | `templates/status.empty.json`, `templates/notes.empty.json`, `templates/plans-done.empty.json` (`templates/README.md`) |
17
+ | `status.json` (v2 root), workflow snapshots, project register, residual severity / lifecycle, engine-check queries | `references/status-and-residuals.md` |
18
+ | Empty-repo `status.json` template | `templates/status.empty.json` (`templates/README.md`) |
20
19
  | Tech-debt rollup (read-only) | `mstar status tech-debt [path]` (engine `techDebtRollup`; see `references/status-and-residuals.md`) |
21
20
 
22
21
  **Out of scope:** branch and QC/QA checkout alignment → **`mstar-branch-worktree`**; leaf QC checklist and verdict → **`mstar-roles/references/qc-specialist/`**; PM QC orchestration → **`mstar-review-qc`**; `{HARNESS_DIR}` discovery and init → **`mstar-plan-conventions`**.
23
22
 
24
- ## `status.json` and open residual (summary)
23
+ ## `status.json`, workflow snapshots, and open residual (summary)
25
24
 
26
- - **`{HARNESS_DIR}/status.json`**: `plans[]` row status + root **`residual_findings[<plan-id>]`** (open list **SSOT**).
27
- - **Canonical**: register new findings only at root `residual_findings`; **`metadata.residual_findings`** is legacy read-only **do not** dual-write.
25
+ - **`{HARNESS_DIR}/status.json` (v2)**: active-lifecycle register — `{ version: 2, updated_at, workflows[] }`. Each entry points at its snapshot dir (`dir: workflows/<id>`); terminal lifecycles are unregistered after the snapshot write.
26
+ - **`{WORKFLOW_DIR}/<id>/snapshot.json`**: per-lifecycle running state `plans[]` rows (legacy PlanRow shape verbatim) + per-row `execution_lease` + top-level `integration_merge_lease` / `execution_policy` / `branch` anchors / `control_worktree_path`.
27
+ - **`{PROJECT_DIR}/<id>/residuals.json`**: open residual register, `entries[<plan-id>]` arrays — the **open-list SSOT** (severity enum + lifecycle semantics verbatim; project-less flows use `_default`).
28
+ - **Canonical**: register new findings only in the project register (`projects/<id>/residuals.json`); v1 root `residual_findings` is legacy read-only — migrate via `mstar migrate`, do not dual-write.
28
29
 
29
30
  > **Engine check (when available):** run `mstar status validate <path>` (or `import { validateStatus } from "@mstar-harness/engine"` in a host hook). On `fail` -> do not proceed; fix and re-run. Skill text below remains authoritative when the runtime is absent.
30
31
 
31
- - **Fail-loud handoff**: findings must pass `validateResidual` (per entry) / `validateStatus` (whole file) before registration; malformed → reject + rewrite → **`references/status-and-residuals.md`** (“Fail-loud handoff contract”).
32
- - **Lifecycle**: open → verified close **`archived/residuals/<plan-id>.json`**; machine **`severity`** enum in reference.
32
+ - **Fail-loud handoff**: findings must pass `validateResidual` (per entry) / `validateProjectRegister` (register) before registration; snapshots and the v2 root pass `validateWorkflowSnapshot` / `validateStatus` (`mstar status validate`); malformed → reject + rewrite → **`references/status-and-residuals.md`** (“Fail-loud handoff contract”).
33
+ - **Lifecycle**: open → verified close **in place** in the register (`lifecycle` / `closed_at` / `closure_note`); machine **`severity`** enum in reference. v1 `archived/residuals/` + `archive-residuals` are retired.
33
34
 
34
- > **Engine check (when available):** run `mstar status archive-residuals <plan-id>` (or `import { archiveResiduals } from "@mstar-harness/engine"` in a host hook). On `fail` -> do not proceed; fix and re-run. Skill text below remains authoritative when the runtime is absent.
35
+ - **Findings cleanup**: Assignment **`Findings cleanup: zero-residual | allow-residual`** (the `metadata.findings_cleanup` mirror is deleted); iteration Phase 2 defaults to **`zero-residual`** **`references/status-and-residuals.md`** (“Findings cleanup modes”).
35
36
 
36
- - **Findings cleanup**: Assignment **`Findings cleanup: zero-residual | allow-residual`** (+ optional `metadata.findings_cleanup`); iteration Phase 2 defaults to **`zero-residual`** **`references/status-and-residuals.md`** (“Findings cleanup modes”).
37
+ > **Engine check (when available):** run `mstar status findings-cleanup <plan-id> [--project <id>] [--mode zero-residual|allow-residual]` (or import `findingsCleanupGate` from `@mstar-harness/engine` in a host hook) to enforce the Findings cleanup mode above against the plan's register entries. On `fail` -> do not proceed; fix and re-run. Skill text below remains authoritative when the runtime is absent.
37
38
 
38
- > **Engine check (when available):** run `mstar status findings-cleanup <plan-id>` (or import `findingsCleanupGate` from `@mstar-harness/engine` in a host hook) to enforce the Findings cleanup mode above. On `fail` -> do not proceed; fix and re-run. Skill text below remains authoritative when the runtime is absent.
39
+ - **`{WORKFLOW_DIR}/<id>/notes.jsonl`**: per-workflow append-only notes ledger (runtime); snapshot plan-row `notes` is the legacy verbatim copy. **Tech-debt rollup**: `mstar status tech-debt <project-dir>` over the project registers **`references/status-and-residuals.md`**.
40
+ - **Iteration Phase 2 leases** (snapshot: `control_worktree_path`, `plans[].execution_lease`, top-level `integration_merge_lease`): field semantics → **`references/status-and-residuals.md`** (“Iteration execution leases”); Phase 2 execution checklist → **`mstar-iteration`** `references/phase-2-worktree-lease.md`; full protocol prose (single copy) → **`mstar-engine-legacy`** `references/lease-protocol.md`.
39
41
 
40
- - **`notes.json`**, optional **`tech_debt_summary`** (rollup view; compute via engine `techDebtRollup` **`references/status-and-residuals.md`**).
41
- - **Iteration Phase 2 leases** (`metadata.control_worktree_path`, `plans[].execution_lease`, `metadata.integration_merge_lease`): claim-before-`InProgress`, resume vs steal, orphan recovery → **`references/status-and-residuals.md`** (“Iteration execution leases”).
42
-
43
- > **Engine check (when available):** run `mstar lease verify <plan-id>` or `mstar lease verify-integration` (or import `validateExecutionLease` / `validateIntegrationMergeLease` from `@mstar-harness/engine` in a host hook) to validate the iteration leases above (execution_lease / integration_merge_lease). On `fail` -> do not proceed; fix and re-run. Skill text below remains authoritative when the runtime is absent.
42
+ > **Engine check (when available):** run `mstar lease verify --workflow <id> [--plan <plan-id>]` or `mstar lease verify-integration --workflow <id>` (or import `validateExecutionLease` / `validateIntegrationMergeLease` from `@mstar-harness/engine` in a host hook) to validate the iteration leases above on the workflow snapshot (execution_lease / integration_merge_lease). On `fail` -> do not proceed; fix and re-run. Skill text below remains authoritative when the runtime is absent.
44
43
 
45
44
  Field semantics, severity mapping, findings cleanup modes, archive flow, and `jq` examples → **`references/status-and-residuals.md`**.
46
45
 
47
- **Templates (this skill):** `templates/status.empty.json`, `templates/notes.empty.json` copy into `{HARNESS_DIR}/` (`templates/README.md`).
46
+ **Templates (this skill):** `templates/status.empty.json` — the **v2 shape** (`version: 2`, `updated_at`, `workflows: []`); copy into `{HARNESS_DIR}/` (`templates/README.md`).
48
47
 
49
48
  ## Workflow
50
49
 
51
- 产物生命周期主链:主 plan 落盘 `{PLAN_DIR}`(命名见 `references/plan-files-and-reports.md`)→ 实现推进时更新 `{HARNESS_DIR}/status.json`(`plans[]` 行 + root `residual_findings`)→ 审查波次产出 `{SDD_DIR}/review/` bundle(raw QC/QA reports)+ durable gate summary 回写主 plan / status → 关闭后 residual 归档 `{HARNESS_DIR}/archived/residuals/<plan-id>.json` Done compaction(Profile A/B,`references/done-compaction.md`)。索引(`{KNOWLEDGE_DIR}` / `{ITERATION_DIR}` / `{PLAN_DIR}`)随产物更新。
50
+ 产物生命周期主链:主 plan 落盘 `{PLAN_DIR}`(命名见 `references/plan-files-and-reports.md`)→ 实现推进时更新 workflow snapshot(`workflows/<id>/snapshot.json` 的 `plans[]` 行 + `status.json` `workflows[]` 登记)→ 审查波次产出 `{SDD_DIR}/review/` bundle(raw QC/QA reports)+ durable gate summary 回写主 plan / snapshot → 关闭后 residual **in place** close in the project register(`projects/<id>/residuals.json`)。索引(`{KNOWLEDGE_DIR}` / `{ITERATION_DIR}` / `{PLAN_DIR}`)随产物更新。
52
51
 
53
52
  ## Decision Rules
54
53
 
55
- - residual **severity** 是机器字段 SSOT(`references/status-and-residuals.md`);每条新 finding 只登记 root `residual_findings`,`metadata.residual_findings` 仅 legacy 只读,**禁止**双写。
54
+ - residual **severity** 是机器字段 SSOT(`references/status-and-residuals.md`);每条新 finding 只登记 project register(`projects/<id>/residuals.json` → `entries[<plan-id>]`),v1 根级 `residual_findings` 仅 legacy 只读,**禁止**双写。
56
55
  - **`Findings cleanup: zero-residual`** 默认(迭代 Phase 2):可修 findings 当轮 fix → re-review 清干净;仅真 blocker 可 defer 且须 Durable Roadmap。
57
- - 登记前必须过 `validateResidual` / `validateStatus`(fail-loud handoff);malformed → reject + rewrite。
56
+ - 登记前必须过 `validateResidual` / `validateProjectRegister` / `validateStatus`(fail-loud handoff);malformed → reject + rewrite。
58
57
 
59
58
  ## Evidence
60
59
 
61
- 正确结果 = 可复核产物链:`{SDD_DIR}/review/` 审查 bundle 落盘 + 主 plan / `status.json` 的 durable gate summary + residual 生命周期间档(open → verified close archived)+ Done compaction 完成。拒绝「仅对话声称」。
60
+ 正确结果 = 可复核产物链:`{SDD_DIR}/review/` 审查 bundle 落盘 + 主 plan / workflow snapshot 的 durable gate summary + residual 生命周期(open → verified close **in place** in the register)。拒绝「仅对话声称」。
62
61
 
63
62
  ## References
64
63
 
65
64
  - `references/plan-files-and-reports.md` — 主 plan / review bundle 命名、QC 波次、durable summaries
66
- - `references/status-and-residuals.md` — `status.json`、residual severity / lifecycle / `jq`
67
- - `references/done-compaction.md` — Done 行 compaction Profile A/B
65
+ - `references/status-and-residuals.md` — `status.json` (v2), workflow snapshots, project register, residual severity / lifecycle / engine-check queries
68
66
  - `references/knowledge-and-designs.md` — knowledge / iterations / specs 边界与索引
@@ -64,14 +64,14 @@
64
64
  3. **修订**:评审或规格变更若改动了 knowledge 文件,同步更新 README 中 **Status** 或 Description;版本迭代优先新文件名 `v<N+1>` 或保留旧版并标明 Superseded。
65
65
  4. **归档**:
66
66
  - **iteration-start(强制)**:`writing-specialist` §1.6 以 **`{SPECS_DIR}/` 全库卫生为主**;对**既有** `{KNOWLEDGE_DIR}/` 仅归档/错放纠正,**不**新增 knowledge。细则 → **`mstar-iteration/references/iteration-corpus-hygiene.md`**。
67
- - **其它时机**:当文档内容已完全反映到已合并代码中、且非 iteration-start 扫库时:可将索引 **Status** 标为 `Superseded by implementation (...)` 或 `Archived`;可保留原位或迁入 `archived/knowledge/`。**不要**把知识库产物搬进 `{HARNESS_DIR}/archived/plans/`(该处用于**计划行**冷快照)。
67
+ - **其它时机**:当文档内容已完全反映到已合并代码中、且非 iteration-start 扫库时:可将索引 **Status** 标为 `Superseded by implementation (...)` 或 `Archived`;可保留原位或迁入 `archived/knowledge/`。
68
68
  5. **结晶(Compound)**:PM 在 **iteration-close** 触发 **`mstar-compound`**:plan 素材 + **`{ITERATION_DIR}/<iteration-id>/` package 提升** → `{KNOWLEDGE_DIR}/`。不在 per-plan Done 后单独执行。维护 → **`mstar-compound-refresh`**。
69
69
 
70
70
  ## 与 review bundle、`{PLAN_DIR}/residuals/` 的区分
71
71
 
72
72
  - `**{SDD_DIR}/review/`**:偏 **审查流程临时证据**(review package、QC1/2/3、consolidated、QA),gitignored,可在 Done 后丢失。
73
73
  - `**主 plan gate summary**`:偏 **长期门禁决策摘要**(verdict、review range、R#、QA gate),随主 plan 追踪。
74
- - `**{PLAN_DIR}/residuals/<plan-id>/`**:偏 **仍 open 的 R# 长文补充**(与根级 `**residual_findings**` 配套,canonical 见 `mstar-plan-conventions` **SKILL.md** 开篇);见下文「open residual 散文详情」。
74
+ - `**{PLAN_DIR}/residuals/<plan-id>/`**:偏 **仍 open 的 R# 长文补充**(与 project register `entries[<plan-id>]` 配套,canonical 见 `mstar-plan-conventions` **SKILL.md** 开篇);见下文「open residual 散文详情」。
75
75
  - `**{KNOWLEDGE_DIR}/**`:偏 **可复用的实现向设计上下文**(架构细则、决策、分析),可被后续 plan 或多会话反复引用。
76
76
  - `**{ITERATION_DIR}/**`:偏 **某一迭代/版本** 的 package(compass + guides/specs),通常按版本索引而非按单 plan 长期复用。
77
77
  - review bundle、gate summary、residuals、knowledge、iterations 可互链,但职责不混写。
@@ -80,7 +80,7 @@
80
80
 
81
81
  ## `{PLAN_DIR}/residuals/<plan-id>/`(可选·open residual 散文详情)
82
82
 
83
- 当某条 open residual 需要**多于** open 列表(根级 `residual_findings[<plan-id>][]`;若仅存 legacy 侧则同口径)里结构化字段所能承载的叙述时,可在本目录增加 **Markdown 散文**,作为 **SSOT 的补充**(**不替代** JSON;**权威仍以** `**{HARNESS_DIR}/status.json`** 中的 open 条目为准)。
83
+ 当某条 open residual 需要**多于** register(`projects/<id>/residuals.json` `entries[<plan-id>]`)里结构化字段所能承载的叙述时,可在本目录增加 **Markdown 散文**,作为 **SSOT 的补充**(**不替代** JSON;**权威仍以 register 中的 open 条目为准**)。
84
84
 
85
85
 
86
86
  | 与相邻目录的分工 | 典型内容 |
@@ -91,10 +91,10 @@
91
91
  | `**{ITERATION_DIR}/**` | 迭代 package(`<id>/delivery-compass.md` 等);**不**替代 `{KNOWLEDGE_DIR}` 中的跨版本 SSOT |
92
92
 
93
93
 
94
- **文件命名(推荐)**:`<finding-id>-<short-label>.md`,其中 `**finding-id`** 与该条在 **open 列表**(根级 `**residual_findings**`,见 `mstar-plan-conventions` **SKILL.md** 开篇)中的 `**id**`(如 `R1`)或团队约定的 `**td-*` 等技术债编号**一致,便于 `detail_doc` 与目录互查。
94
+ **文件命名(推荐)**:`<finding-id>-<short-label>.md`,其中 `**finding-id`** 与该条在 register(`projects/<id>/residuals.json` `entries[<plan-id>]`,见 `mstar-plan-conventions` **SKILL.md** 开篇)中的 `**id`**(如 `R1`)或团队约定的 `**td-*` 等技术债编号**一致,便于 `detail_doc` 与目录互查。
95
95
 
96
- **登记**:在对应 open 条目中填写可选 `**detail_doc`**(仓库内相对路径,常形如 `**{PLAN_DIR}/residuals/<plan-id>/R1-….md**`)。**禁止**只写散文、不在 SSOT 中登记 open 行。
96
+ **登记**:在对应 open 条目中填写可选 `**detail_doc`**(仓库内相对路径,常形如 `**{PLAN_DIR}/residuals/<plan-id>/R1-….md**`)。**禁止**只写散文、不在 register 中登记 open 行。
97
97
 
98
98
  **维护**:`**@project-manager`**(或与 Assignment 一致的可写角色);`**@qc-specialist***` 宿主白名单通常**不含**本目录——审查结论仍以 Assignment 指定的 `**{SDD_DIR}/review/`** 为准,散文由 PM/实现方据结论整理。
99
99
 
100
- **关闭与归档**:当该条从 **open 列表**(根级 **`residual_findings[<plan-id>]`**;若仅存 legacy 侧则从该处)移除并**追加**至 `**{HARNESS_DIR}/archived/residuals/<plan-id>.json`** 时,应将对应 `**.md**` 一并收口:可迁入 `**{HARNESS_DIR}/archived/knowledge/**`(若视为历史考据)、或团队约定的 `**{HARNESS_DIR}/archived/residuals/**` 子路径(与 `**.json**` 同批变更可追溯);并在归档条目的 `**closure_evidence` / `closure_note**`(或团队约定字段)中**写明散文最终路径**。勿长期保留「JSON 已关闭而散文仍留在 `residuals/` 且声称仍 open」的状态。
100
+ **关闭**:当该条在 register close(`lifecycle` / `closed_at` / `closure_note`)或从 `entries[<plan-id>]` 移除时,应将对应 `**.md**` 一并收口:可迁入 `**{HARNESS_DIR}/archived/knowledge/**`(若视为历史考据)、或团队约定的归档子路径(与 register 变更同批可追溯);并在关闭条目的 `**closure_evidence` / `closure_note**`(或团队约定字段)中**写明散文最终路径**。勿长期保留「JSON 已关闭而散文仍留在 `residuals/` 且声称仍 open」的状态。
@@ -6,7 +6,7 @@
6
6
 
7
7
  每个 plan 的详细内容(任务清单、决策、Sign-off)。
8
8
 
9
- **命名(推荐)**:`<plan-id>-<plan-name>.md`(例:`01-data-infrastructure.md`)。`status.json` `file` 字段填相对仓库根或 `{PLAN_DIR}` 下的实际路径。
9
+ **命名(推荐)**:`<plan-id>-<plan-name>.md`(例:`01-data-infrastructure.md`)。snapshot plan 行的 `file` 字段填相对仓库根或 `{PLAN_DIR}` 下的实际路径。
10
10
 
11
11
  ## Review bundle(`{SDD_DIR}/review/`)
12
12
 
@@ -48,18 +48,18 @@ Raw bundle files may disappear after the working context is gone. Before Done, P
48
48
  - `QA gate` / `QA mode`
49
49
  - evidence reused vs newly run checks
50
50
  - related R# closure recommendations
51
- - `{HARNESS_DIR}/status.json` root `residual_findings[<plan-id>]`: open R# machine SSOT.
51
+ - `{PROJECT_DIR}/<id>/residuals.json` (default `{HARNESS_DIR}/projects/<id>/`): open R# machine SSOT — `entries[<plan-id>]`.
52
52
 
53
53
  The durable summary is not a paste of raw reports. It is a small gate record sufficient for handoff after `{SDD_DIR}` is unavailable.
54
54
 
55
55
  ## Residual findings(R#):权威在哪、和主 plan 谁先谁后?
56
56
 
57
- - **Open 条目的单一事实来源(SSOT)**是 **`{HARNESS_DIR}/status.json`** 根级 **`residual_findings[<plan-id>]`**(与 `plans` 平级;canonical 见 `mstar-plan-artifacts` **SKILL.md** 开篇;字段见 `mstar-plan-artifacts/references/status-and-residuals.md`)。**同一工作副本内**的会话 handoff、关闭与归档流程**以该数组为准**(本地 SSOT,默认 gitignored);**跨 clone** 须持久的 residual 须提升入 tracked `{KNOWLEDGE_DIR}/` / `{SPECS_DIR}/` 等(见 `mstar-plan-conventions`「Git 跟踪策略」)。
57
+ - **Open 条目的单一事实来源(SSOT)**是 **`{PROJECT_DIR}/<id>/residuals.json`**(默认 `{HARNESS_DIR}/projects/<id>/`;无项目流程用 `_default`)的 **`entries[<plan-id>]`**(canonical 见 `mstar-plan-artifacts` **SKILL.md** 开篇;字段见 `mstar-plan-artifacts/references/status-and-residuals.md`)。**同一工作副本内**的会话 handoff、关闭流程**以该数组为准**(本地 SSOT,默认 gitignored);**跨 clone** 须持久的 residual 须提升入 tracked `{KNOWLEDGE_DIR}/` / `{SPECS_DIR}/` 等(见 `mstar-plan-conventions`「Git 跟踪策略」)。
58
58
  - **推荐操作顺序**(避免 plan 与 JSON 两套 ID 漂移):
59
59
  1. `project-manager` 读完 review bundle 并完成「QC 三审轻量汇总」:对 finding **去重合并**,为每条待跟踪项分配**稳定 `id`**(如 `R1`、`R2`,全 plan 内唯一)。
60
- 2. **立即**将上述条目写入根级 **`residual_findings[<plan-id>]`**(含 `source` 指向 reviewer seat + bundle basename + finding id + review range,便于回溯);**勿**与 legacy 侧双写(见 `mstar-plan-conventions` **SKILL.md** 开篇)。
61
- 3. **可选**:在主 plan 中增加 **「Residual findings(索引)」** 小节,**仅复述** `id` + 短标题 + 决策摘要,并写明「**权威列表见** `status.json` 根级 `residual_findings[<plan-id>]`(见 `mstar-plan-conventions` **SKILL.md** 开篇)」。**不要**只在主 plan 里「发明」R# 而不写回 SSOT。
62
- - **不要**反过来把主 plan 当作唯一登记处:若仅更新 plan、`status.json` 未同步,下一任 agent **无法**依赖 SSOT 继承债务状态。
60
+ 2. **立即**将上述条目写入 register **`entries[<plan-id>]`**(含 `source` 指向 reviewer seat + bundle basename + finding id + review range,便于回溯;`source_plan` = plan id,`registered_at` = 当日);v1 根级 `residual_findings` legacy 只读,**勿**双写。
61
+ 3. **可选**:在主 plan 中增加 **「Residual findings(索引)」** 小节,**仅复述** `id` + 短标题 + 决策摘要,并写明「**权威列表见** `projects/<id>/residuals.json` `entries[<plan-id>]`(见 `mstar-plan-conventions` **SKILL.md** 开篇)」。**不要**只在主 plan 里「发明」R# 而不写回 SSOT。
62
+ - **不要**反过来把主 plan 当作唯一登记处:若仅更新 plan、register 未同步,下一任 agent **无法**依赖 SSOT 继承债务状态。
63
63
 
64
64
  ## QC 三审触发时机(单 plan · 多 batch)
65
65
 
@@ -79,21 +79,21 @@ The durable summary is not a paste of raw reports. It is a small gate record suf
79
79
 
80
80
  **QC 落盘与宿主权限**:`qc-specialist` / `qc-specialist-2` / `qc-specialist-3` 在支持路径白名单的宿主上(如 OpenCode 的 **`permission.edit`**),默认 **仅可** Write/Edit Assignment 指定的 **`{SDD_DIR}/review/`** 下 **`.md`**。全局 agent 提示词应允许 `.mstar/sdd/**`、`.agents/sdd/**` 及 worktree 下对应路径。报告文件**必须**以 YAML **frontmatter** 开头(键见各 QC agent 提示词)。
81
81
 
82
- **QC 报告与 Git**:默认 raw QC/QA bundle **不**执行 `git add` / `git commit`。PM 将 durable gate summary 写入主 plan(本地会话 SSOT;默认 gitignored)并在当轮更新 `{HARNESS_DIR}/status.json` 的 open residuals(本地 SSOT,默认 gitignored)。**跨 clone 须持久的** residual 或决策须提升入 tracked `{KNOWLEDGE_DIR}/` / `{SPECS_DIR}/` 或 `{HARNESS_DIR}/AGENTS.md`(见 `mstar-plan-conventions`「Git 跟踪策略」)— **勿**默认 `git add` `status.json` / `plans/`。若项目显式 opt-in 跟踪审计报告,在 Assignment 写 `Review archive mode: tracked reports` 并使用项目 allow rules。
82
+ **QC 报告与 Git**:默认 raw QC/QA bundle **不**执行 `git add` / `git commit`。PM 将 durable gate summary 写入主 plan(本地会话 SSOT;默认 gitignored)并在当轮更新 project register 的 open residuals(本地 SSOT,默认 gitignored)。**跨 clone 须持久的** residual 或决策须提升入 tracked `{KNOWLEDGE_DIR}/` / `{SPECS_DIR}/` 或 `{HARNESS_DIR}/AGENTS.md`(见 `mstar-plan-conventions`「Git 跟踪策略」)— **勿**默认 `git add` `status.json` / `workflows/` / `projects/` / `plans/`。若项目显式 opt-in 跟踪审计报告,在 Assignment 写 `Review archive mode: tracked reports` 并使用项目 allow rules。
83
83
 
84
84
  ## 主 plan 内任务清单(Markdown checkbox)
85
85
 
86
86
  - **谁应更新**:`fullstack-dev` / `frontend-dev` / `fullstack-dev-2`、`qa-engineer`、`ops-engineer`、`architect`、`product-manager` 在**完成本人 Assignment 范围内的工作后**,须在主 plan(`<plan-id>-<plan-name>.md`)中把**对应条目**的 Markdown 任务标记为已完成(常见:`- [ ]` → `- [x]`;若项目用其它清单记号,保持同文件内一致)。与 Completion Report **并列**,作为跨会话可核对的**落盘痕迹**。
87
87
  - **范围**:**只勾选与当前任务直接对应、且已由本角色交付证据支撑的条目**;不得代为勾选他人负责或未完工项。若正文用分段、Owner 或角色标签区分任务,以 Assignment 与文内约定为准。
88
- - **与 `status.json` / frontmatter 的关系**:勾选任务**不**等于整条计划收口。`plans[].status` 及主 plan frontmatter 的 **`Done`** 仍**仅** `project-manager` / `qa-engineer`(见「状态更新权限」)。`architect` / `product-manager` **不得**擅自将整条计划标为 `Done`;是否将 `status.json` 推进为 `InReview` 等仍按下文「状态更新权限」与 Assignment。
88
+ - **与 snapshot / frontmatter 的关系**:勾选任务**不**等于整条计划收口。snapshot `plans[].status` 及主 plan frontmatter 的 **`Done`** 仍**仅** `project-manager` / `qa-engineer`(见「状态更新权限」)。`architect` / `product-manager` **不得**擅自将整条计划标为 `Done`;是否将 snapshot 推进为 `InReview` 等仍按下文「状态更新权限」与 Assignment。
89
89
  - **`qc-specialist*`**:**不得**修改主 plan(宿主仅允许 Assignment 指定的 review bundle `.md`);审查结论落在 `{SDD_DIR}/review/` 内。若主 plan 需新增或勾选与审查相关的条目,由 `project-manager` 或 Assignment 明确授权的角色据报告回写。
90
90
  - **只读角色**:不直接改主 plan;将建议交给 `project-manager` 代为更新清单。
91
91
 
92
- Plan 正文与 `status.json` 必须保持一致;不一致时以 `status.json` 的条目状态为准并尽快纠正正文或登记 notes
92
+ Plan 正文与 snapshot 行必须保持一致;不一致时以 snapshot `plans[].status` 为准并尽快纠正正文或登记 notes(`workflows/<id>/notes.jsonl`)。
93
93
 
94
94
  ## Done 标记方式
95
95
 
96
96
  1. **Frontmatter**(首选):添加 `status: Done` 和可选的 `done_at: YYYY-MM-DD`。
97
97
  2. **文件名**(备选):重命名为 `DONE__<name>.md` 或 `<name>.done.md`。
98
98
 
99
- 同时更新 `status.json` 对应条目。
99
+ 同时更新 snapshot 对应 plan 行(`workflows/<id>/snapshot.json` → `plans[]`)与根 `status.json` `workflows[]` 登记。