@mstar-harness/opencode 1.5.1 → 1.5.2

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.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,12 @@ All notable changes to the `@mstar-harness/opencode` package are documented in t
4
4
 
5
5
  The monorepo root [CHANGELOG.md](../../CHANGELOG.md) summarizes cross-surface releases.
6
6
 
7
+ ## 1.5.2
8
+
9
+ - Version alignment with harness **1.5.2** (bundled skills/commands: process-vs-results git policy + `{SPECS_DIR}` resolve order).
10
+
11
+ See root [CHANGELOG.md](../../CHANGELOG.md) **1.5.2**.
12
+
7
13
  ## 1.5.1
8
14
 
9
15
  - Version alignment with harness **1.5.1** (bundled skills/commands: Phase 5 push cadence — local early fix, push only when CI/review wave idle).
@@ -31,7 +31,7 @@ Cursor **Plan mode** uses **CreatePlan** and built-in plan todos for session UX.
31
31
  When plan management is required and directories are missing:
32
32
 
33
33
  1. Create `{HARNESS_DIR}` and `{PLAN_DIR}`.
34
- 2. Ensure `{HARNESS_DIR}/sdd/` is gitignored; per-plan review bundles are created under `{SDD_DIR}/review/` when needed.
34
+ 2. Ensure Morning Star **process-artifact** gitignore set is present (canonical snippet → `mstar-plan-conventions` SKILL.md「Git 跟踪策略」): `{HARNESS_DIR}/archived/`, `iterations/`, `plans/`, `sdd/`, `notes.json`, `status.json` (legacy `.agents/` equivalents when applicable). Per-plan review bundles are created under `{SDD_DIR}/review/` when needed.
35
35
  3. Create `{HARNESS_DIR}/archived/residuals/`.
36
36
  4. Initialize `{HARNESS_DIR}/status.json` from `mstar-plan-artifacts/templates/status.empty.json` if missing.
37
37
  5. Optional: `{HARNESS_DIR}/notes.json` from `templates/notes.empty.json`, `{HARNESS_DIR}/knowledge/README.md`.
@@ -46,7 +46,7 @@ Full PM checklist: `mstar-roles/references/project-manager/plan-management.md`.
46
46
 
47
47
  | Todo ID (use in title) | Goal | On-disk outcome |
48
48
  |------------------------|------|-----------------|
49
- | **`harness-init`** | Bootstrap harness tree | `{HARNESS_DIR}/`, `{PLAN_DIR}/`, `sdd/` gitignore, `archived/residuals/`, `status.json` initialized |
49
+ | **`harness-init`** | Bootstrap harness tree | `{HARNESS_DIR}/`, `{PLAN_DIR}/`, process-artifact gitignore set, `archived/residuals/`, `status.json` initialized |
50
50
  | **`spec-register`** | Register plan in SSOT | New `plans[]` row in `status.json` (`id`, `status`, `file`, `metadata`); spec stub in `{SPECS_DIR}` or plan frontmatter |
51
51
  | **`mirror-plan`** | SSOT main plan file | `{PLAN_DIR}/<plan-id>-<name>.md` with task checkboxes aligned to CreatePlan body |
52
52
 
@@ -66,7 +66,7 @@ Add one object to `status.json` → `plans[]`:
66
66
  }
67
67
  ```
68
68
 
69
- Set `updated_at` on `status.json` to today (`YYYY-MM-DD`). Commit harness files in the **business repo** when the project tracks `{HARNESS_DIR}` (default).
69
+ Set `updated_at` on `status.json` to today (`YYYY-MM-DD`). Commit **tracked results** in the business repo when applicable: `{HARNESS_DIR}/AGENTS.md`, `{KNOWLEDGE_DIR}/`, `{SPECS_DIR}/` (default git policy — see `mstar-plan-conventions`). Do **not** default `git add` for `status.json`, `plans/`, or `iterations/`.
70
70
 
71
71
  ### `mirror-plan` minimum content
72
72
 
@@ -107,7 +107,7 @@ Use this structure in CreatePlan `plan` markdown; mirror the same sections into
107
107
 
108
108
  ### Bootstrap (fixed prefix — complete before implement)
109
109
 
110
- 1. harness-init — init .mstar/, status.json, sdd/ gitignore, archived/residuals/
110
+ 1. harness-init — init .mstar/, status.json, process-artifact gitignore set, archived/residuals/
111
111
  2. spec-register — register plan_id in status.json; spec stub if applicable
112
112
  3. mirror-plan — write .mstar/plans/<plan-id>-<short-name>.md
113
113
 
@@ -19,7 +19,7 @@ Before first **CreatePlan**: Read `mstar-plan-conventions`, `mstar-plan-artifact
19
19
 
20
20
  | Todo ID | Purpose |
21
21
  |---------|---------|
22
- | `harness-init` | Init `{HARNESS_DIR}`, `{PLAN_DIR}`, `sdd/` gitignore, `archived/residuals/`, `status.json` |
22
+ | `harness-init` | Init `{HARNESS_DIR}`, `{PLAN_DIR}`, process-artifact gitignore set (`plans/`, `iterations/`, `sdd/`, `status.json`, …), `archived/residuals/`, `status.json` |
23
23
  | `spec-register` | Register `plan_id` in `status.json.plans[]` + spec stub if applicable |
24
24
  | `mirror-plan` | Write SSOT main plan under `{PLAN_DIR}/` |
25
25
 
@@ -24,7 +24,7 @@ Kimi **Plan mode** (`EnterPlanMode` / `ExitPlanMode`, `/plan`, or `Shift-Tab`) u
24
24
 
25
25
  1. **Read** (minimum): `mstar-plan-conventions`, `mstar-plan-artifacts` (SKILL.md); Prepare gates from `mstar-phase-gates` if not hotfix.
26
26
  2. **Discover** `{HARNESS_DIR}` / `{PLAN_DIR}` per `mstar-plan-conventions`.
27
- 3. **Initialize** if absent: `{HARNESS_DIR}/`, `{PLAN_DIR}/`, `status.json` from `mstar-plan-artifacts/templates/status.empty.json`, `archived/residuals/`, gitignored `sdd/`.
27
+ 3. **Initialize** if absent: `{HARNESS_DIR}/`, `{PLAN_DIR}/`, `status.json` from `mstar-plan-artifacts/templates/status.empty.json`, `archived/residuals/`, Morning Star process-artifact gitignore set (see `mstar-plan-conventions` SKILL.md「Git 跟踪策略」).
28
28
 
29
29
  ## Plan mode workflow (dual-write)
30
30
 
@@ -31,7 +31,7 @@
31
31
 
32
32
  ## `{SPECS_DIR}`(可选·长期规格)
33
33
 
34
- - `{SPECS_DIR}` 解析:优先 `{HARNESS_DIR}/specs/`,否则 `{HARNESS_DIR}/designs/`;皆无则建议新建 `specs/`。
34
+ - `{SPECS_DIR}` 解析(非空即停):`{HARNESS_DIR}/specs/` `docs/specs/` → 仓库根 `specs/`;皆无或皆空则 init 创建 `{HARNESS_DIR}/specs/`。Legacy 只读:`{HARNESS_DIR}/designs/` 或根 `designs/` 非空时可用。细则 → `mstar-plan-conventions` SKILL.md「`{SPECS_DIR}` 解析」。
35
35
  - **放什么**:跨迭代有效、已锁定或待锁定的产品/API 规范、ADR、契约 — **iteration-start 主产出**(product/architect)。
36
36
  - **不放什么**:本迭代-only 探索(→ `<iteration-id>/guides/`);迭代级 spec 草案(→ `<iteration-id>/specs/`);实施踩坑原文(→ package 或 plan 素材,**close 时 compound 提升**)。
37
37
  - **索引**:非 trivial 树建议 `{SPECS_DIR}/README.md`;plan **`primary_spec` / `spec_refs`** 主要指向此处。
@@ -54,7 +54,7 @@ The durable summary is not a paste of raw reports. It is a small gate record suf
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、关闭与归档流程**以该数组为准**。
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 跟踪策略」)。
58
58
  - **推荐操作顺序**(避免 plan 与 JSON 两套 ID 漂移):
59
59
  1. `project-manager` 读完 review bundle 并完成「QC 三审轻量汇总」:对 finding **去重合并**,为每条待跟踪项分配**稳定 `id`**(如 `R1`、`R2`,全 plan 内唯一)。
60
60
  2. **立即**将上述条目写入根级 **`residual_findings[<plan-id>]`**(含 `source` 指向 reviewer seat + bundle basename + finding id + review range,便于回溯);**勿**与 legacy 侧双写(见 `mstar-plan-conventions` **SKILL.md** 开篇)。
@@ -79,7 +79,7 @@ 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 must commit durable artifacts instead: main plan gate summaries, `{HARNESS_DIR}/status.json` residual changes, and any tracked specs/knowledge/iteration updates. If a project explicitly opts into tracked audit reports, state `Review archive mode: tracked reports` in Assignment and use project-specific allow rules.
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
83
83
 
84
84
  ## 主 plan 内任务清单(Markdown checkbox)
85
85
 
@@ -6,7 +6,9 @@
6
6
  Canonical vs legacy residual definitions → **`mstar-plan-artifacts` SKILL.md** (“`status.json` and open residual (summary)”); this file covers **fields, severity, lifecycle, archive, and `jq` examples**.
7
7
  **Closed** residuals should not accumulate here long-term; authoritative archive → **`{HARNESS_DIR}/archived/residuals/<plan-id>.json`** (see “Residual findings lifecycle”).
8
8
 
9
- **Why this matters:** The open list and `archived/residuals/` are the **cross-session handoff surface** for risk and decisions. Non-blocking conclusions that stay only in chat or a gitignored review bundle **without SSOT** cannot be inherited reliably; `Done` drifts from visible known debt. **`@project-manager`** should register trackable open items soon after review closure; close/archive after verification per **`QA gate`** (`qa-engineer` when `mandatory`, else PM acceptance checklist).
9
+ **Why this matters:** Within a working copy, the open list in `status.json` and `archived/residuals/` are the **local session SSOT** for risk and decisions. Non-blocking conclusions that stay only in chat or a gitignored review bundle **without local SSOT update** cannot be inherited reliably in that session; `Done` drifts from visible known debt. **`@project-manager`** should register trackable open items soon after review closure; close/archive after verification per **`QA gate`** (`qa-engineer` when `mandatory`, else PM acceptance checklist).
10
+
11
+ **Cross-clone handoff** (default git policy): tracked `{HARNESS_DIR}/AGENTS.md`, `{KNOWLEDGE_DIR}/**`, `{SPECS_DIR}/**`, and root `CONCEPTS.md` / `STRATEGY.md` when used. Residuals that must survive clone must be **promoted** (compound) or written into those tracked results — do not treat `status.json` / `plans/` as the default clone handoff surface.
10
12
 
11
13
  ## Basic structure
12
14
 
@@ -23,9 +23,9 @@ description: Morning Star (启明星) harness 计划目录约定 —— `{HARNES
23
23
  | `{SDD_DIR}` | `{HARNESS_DIR}/sdd/<plan-id>/`(SDD 运行时 scratch + review bundle;gitignored) |
24
24
  | `{ITERATION_DIR}` | `{HARNESS_DIR}/iterations/` |
25
25
  | `{KNOWLEDGE_DIR}` | `{HARNESS_DIR}/knowledge/` |
26
- | `{SPECS_DIR}` | `specs/` 优先,否则 `designs/` |
26
+ | `{SPECS_DIR}` | `{HARNESS_DIR}/specs/`(默认);解析见下文「`{SPECS_DIR}` 解析」 |
27
27
 
28
- ### 解析顺序(找到即停)
28
+ ### `{HARNESS_DIR}` 解析顺序(找到即停)
29
29
 
30
30
  1. `.mstar/` → `{HARNESS_DIR}=.mstar/`, `{PLAN_DIR}=.mstar/plans/`
31
31
  2. 否则 `.agents/` → legacy `{HARNESS_DIR}=.agents/`, `{PLAN_DIR}=.agents/plans/`
@@ -34,7 +34,19 @@ description: Morning Star (启明星) harness 计划目录约定 —— `{HARNES
34
34
 
35
35
  并存时 **`.mstar/` 优先**;仅当项目已有 `.agents/` 且无 `.mstar/` 时继续沿用 `.agents/`。
36
36
 
37
- `{SPECS_DIR}`:有 `specs/` 用之;否则 `designs/`;皆无则建议新建 `specs/`。
37
+ ### `{SPECS_DIR}` 解析(找到非空目录即停)
38
+
39
+ 1. `{HARNESS_DIR}/specs/`(默认 `.mstar/specs/`)
40
+ 2. `docs/specs/`
41
+ 3. `specs/`(仓库根)
42
+
43
+ **空目录规则**:候选路径存在但无任何文件 → 视为不存在,继续下一候选。
44
+
45
+ **创建默认**:全部缺失或皆空 → 创建并使用 `{HARNESS_DIR}/specs/`(统一落在 `.mstar/` 下)。**禁止**在 greenfield init 时优先创建裸仓库根 `specs/`。
46
+
47
+ **Legacy(仅兼容读)**:若以上皆无内容,但 `{HARNESS_DIR}/designs/` 或仓库根 `designs/` **非空**,可作 `{SPECS_DIR}` 使用;init 时**不**新建 `designs/`。
48
+
49
+ 可选项目选择:部分 spoke 仓库另跟踪 `{HARNESS_DIR}/roadmap.md` — **非**默认 tracked;仅在项目 opt-in 时提及。
38
50
 
39
51
  ## 内容边界(摘要)
40
52
 
@@ -53,12 +65,61 @@ description: Morning Star (启明星) harness 计划目录约定 —— `{HARNES
53
65
  PM 在需要持久化追踪时:
54
66
 
55
67
  1. 建 `.mstar/`、`plans/`、`status.json`(空模板见 **`mstar-plan-artifacts/templates/status.empty.json`**)
56
- 2. 可选 `notes.json`(模板 **`mstar-plan-artifacts/templates/notes.empty.json`**)、`knowledge/`、`iterations/`、`specs/`、`sdd/`(空目录占位;运行时 per-plan 子目录由 `mstar-sdd/scripts/sdd-workspace` 创建)
57
- 3. 项目根 `.gitignore` 追加 `.mstar/sdd/`(或 `.agents/sdd/` legacy)— CLI `init` 可自动添加
58
- 4. Git:团队交付 **勿** ignore 整个 `{HARNESS_DIR}`(handoff clone 可达)
68
+ 2. 可选 `notes.json`(模板 **`mstar-plan-artifacts/templates/notes.empty.json`**)、`knowledge/`、`iterations/`、`{HARNESS_DIR}/specs/`、`sdd/`(空目录占位;运行时 per-plan 子目录由 `mstar-sdd/scripts/sdd-workspace` 创建)
69
+ 3. 项目根 `.gitignore` 追加 Morning Star **进程产物**忽略集(见下文「Git 跟踪策略」)— CLI `init` 可自动添加
70
+ 4. Git:**进程本地、结果共享** 默认跟踪 `{HARNESS_DIR}/AGENTS.md`、`{KNOWLEDGE_DIR}/**`、`{SPECS_DIR}/**`;`plans/`、`iterations/`、`status.json` 等为**本地会话 SSOT**,默认 gitignored。跨 clone 持久 handoff = knowledge + specs + `{HARNESS_DIR}/AGENTS.md`(及根 `CONCEPTS.md` / `STRATEGY.md` 若使用);须跨 clone 的 residual 须提升(compound)或写入 tracked results — **勿**默认 `git add` `status.json` / `plans/`。
59
71
 
60
72
  步骤与 `{HARNESS_DIR}/AGENTS.md` 分层 → **`references/harness-bootstrap-and-agents-layering.md`**。
61
73
 
74
+ ## Git 跟踪策略(进程 vs 结果)
75
+
76
+ **原则**:进程留在本地;结果与团队共享。
77
+
78
+ **默认 tracked(`{HARNESS_DIR}` 下)**:
79
+
80
+ - `{HARNESS_DIR}/AGENTS.md`
81
+ - `{KNOWLEDGE_DIR}/**`
82
+ - `{HARNESS_DIR}/specs/`(即解析后的 `{SPECS_DIR}` 在 harness 下的默认落点)
83
+
84
+ **默认 gitignored(`{HARNESS_DIR}` 下)**:
85
+
86
+ - `archived/`
87
+ - `iterations/`
88
+ - `plans/`
89
+ - `sdd/`
90
+ - `notes.json`
91
+ - `status.json`
92
+
93
+ Legacy `.agents/` 项目:将上表路径前缀 `.mstar/` 换为 `.agents/`。
94
+
95
+ **Canonical `.gitignore` snippet**(skills 与 CLI `init` 对齐):
96
+
97
+ ```gitignore
98
+ # Morning Star harness (.mstar/)
99
+ # Principle: process stays local; results are shared with the team.
100
+ # Ignored (process / coordination):
101
+ .mstar/archived/
102
+ .mstar/iterations/
103
+ .mstar/plans/
104
+ .mstar/sdd/
105
+ .mstar/notes.json
106
+ .mstar/status.json
107
+ # Tracked (results): .mstar/AGENTS.md, .mstar/knowledge/, .mstar/specs/
108
+ ```
109
+
110
+ Legacy `.agents/` 等价:
111
+
112
+ ```gitignore
113
+ # Morning Star harness (.agents/) — legacy
114
+ .agents/archived/
115
+ .agents/iterations/
116
+ .agents/plans/
117
+ .agents/sdd/
118
+ .agents/notes.json
119
+ .agents/status.json
120
+ # Tracked (results): .agents/AGENTS.md, .agents/knowledge/, .agents/specs/
121
+ ```
122
+
62
123
  ## Spec 驱动的分支模型(多 Plan · 同一 Spec)
63
124
 
64
125
  - **Iteration base branch**:创建 Spec/iteration 集成分支的祖先分支或 ref;必须显式记录,不能默认 `main` / `master`。
@@ -6,20 +6,21 @@
6
6
 
7
7
  ## Harness 子树内(`{HARNESS_DIR}/` 下)
8
8
 
9
- 这些是 agent handoff 用的结构化产物;除明确标注 gitignored scratch 外,默认随 `.git` 追踪,不面向人类直接阅读。
9
+ 这些是 agent handoff 用的结构化产物。**Git 跟踪**遵循 `mstar-plan-conventions` SKILL.md「Git 跟踪策略」:**进程本地、结果共享** `plans/`、`iterations/`、`status.json`、`sdd/` 等默认 gitignored;`AGENTS.md`、`knowledge/`、`specs/` 默认 tracked。
10
10
 
11
11
  | 产物 | 解析后路径(默认 `.mstar/`) | 读写的技能 |
12
12
  |------|---------------------------|-----------|
13
13
  | **知识文档** | `.mstar/knowledge/<category>/<slug>.md` | `mstar-compound`(写)、`mstar-compound-refresh`(读写) |
14
14
  | **知识索引** | `.mstar/knowledge/README.md` | `mstar-compound`(写)、`mstar-compound-refresh`(读写) |
15
- | **主 plan** | `.mstar/plans/<plan-id>-<name>.md` | PM / `mstar-plan-artifacts` |
15
+ | **主 plan** | `.mstar/plans/<plan-id>-<name>.md`(gitignored;本地会话 SSOT) | PM / `mstar-plan-artifacts` |
16
16
  | **Review bundle(QC/QA 原始过程报告)** | `{HARNESS_DIR}/sdd/<plan-id>/review/`(gitignored;默认 `.mstar/sdd/<plan-id>/review/`) | `mstar-sdd`、`mstar-review-qc`、`qa-engineer` |
17
17
  | **SDD scratch** | `{HARNESS_DIR}/sdd/<plan-id>/`(gitignored;含 per-task handoff 与 `review/` bundle) | `mstar-sdd` |
18
- | **status.json** | `.mstar/status.json` | `mstar-plan-artifacts` |
19
- | **迭代 package** | `.mstar/iterations/<iteration-id>/`(`delivery-compass.md`、`guides/`、`specs/`、可选 `README.md`) | `mstar-iteration`(读写);close 时 `mstar-compound`(提升读;默认排除 compass) |
20
- | **迭代索引** | `.mstar/iterations/README.md`(一行 = 一次迭代) | `mstar-iteration`(读写) |
21
- | **规格** | `specs/`(优先),否则 `designs/` | `mstar-plan-artifacts` |
22
- | **archived residuals** | `.mstar/archived/residuals/<plan-id>.json` | `mstar-plan-artifacts` |
18
+ | **status.json** | `.mstar/status.json`(gitignored;本地会话 SSOT) | `mstar-plan-artifacts` |
19
+ | **迭代 package** | `.mstar/iterations/<iteration-id>/`(gitignored;`delivery-compass.md`、`guides/`、`specs/`、可选 `README.md`) | `mstar-iteration`(读写);close 时 `mstar-compound`(提升读;默认排除 compass) |
20
+ | **迭代索引** | `.mstar/iterations/README.md`(gitignored;一行 = 一次迭代) | `mstar-iteration`(读写) |
21
+ | **规格** | `{HARNESS_DIR}/specs/`(默认 tracked;解析见 `mstar-plan-conventions`) | `mstar-plan-artifacts` |
22
+ | **harness AGENTS** | `.mstar/AGENTS.md`(tracked) | PM / init |
23
+ | **archived residuals** | `.mstar/archived/residuals/<plan-id>.json`(gitignored) | `mstar-plan-artifacts` |
23
24
  | **archived knowledge** | `.mstar/archived/knowledge/`(保留原 `{KNOWLEDGE_DIR}` 相对路径) | `mstar-iteration` §1.6 corpus hygiene、`mstar-plan-artifacts` |
24
25
  | **archived specs** | `.mstar/archived/specs/`(保留原 `{SPECS_DIR}` 相对路径) | `mstar-iteration` §1.6 corpus hygiene、`mstar-plan-artifacts` |
25
26
 
@@ -14,12 +14,24 @@
14
14
 
15
15
  1. 创建 `{HARNESS_DIR}`(推荐 `.mstar/`)与 `{PLAN_DIR}`(推荐 `.mstar/plans/`)。
16
16
  2. 初始化 `status.json`:从 **`mstar-plan-artifacts/templates/status.empty.json`** 复制;residual canonical 见 **`mstar-plan-artifacts` SKILL.md**;字段与生命周期见 **`mstar-plan-artifacts/references/status-and-residuals.md`**。
17
- 3. 初始化可选 `notes.json`(**`mstar-plan-artifacts/templates/notes.empty.json`**);`sdd/` 空目录占位(per-plan 子目录由 `mstar-sdd/scripts/sdd-workspace` 创建;项目根 `.gitignore` 须含 `.mstar/sdd/`,legacy `.agents/` 项目对应 `.agents/sdd/`)。
18
- 4. **Profile B**(统一 Done 压缩)时另建 `{HARNESS_DIR}/archived/plans/` `archived/plans-done.json`(自 **`mstar-plan-artifacts/templates/plans-done.empty.json`** 复制;schema 仅 `{ "plans": [] }`,见 **`mstar-plan-artifacts/references/done-compaction.md`**)。
19
- 5. 可选:创建 `{ITERATION_DIR}`(`iterations/` + `README.md`)与 `{KNOWLEDGE_DIR}`(`knowledge/` + `README.md`);内容边界见 `mstar-plan-conventions` SKILL.md `references/knowledge-and-designs.md`。
20
- 6. 创建 `{HARNESS_DIR}/AGENTS.md`(harness 子树规则):符号表可复述 `{HARNESS_DIR}`、`{PLAN_DIR}`、`{ITERATION_DIR}`、`{KNOWLEDGE_DIR}`、`{SPECS_DIR}` `docs/` 分工;新项目推荐 `.mstar/AGENTS.md`,已有项目可继续使用 `.agents/AGENTS.md`。
21
- 7. 校准根 `AGENTS.md`:只保留仓库级长期约束,显式引用 `{HARNESS_DIR}/AGENTS.md` 作为 harness SSOT。
22
- 8. 仅在确有稳定边界时新增目录级 `AGENTS.md`(如 `contracts/`、`gateway/`、`sdk/`)。
17
+ 3. 初始化可选 `notes.json`(**`mstar-plan-artifacts/templates/notes.empty.json`**);`sdd/` 空目录占位(per-plan 子目录由 `mstar-sdd/scripts/sdd-workspace` 创建)。
18
+ 4. 项目根 `.gitignore` 追加 Morning Star **进程产物**忽略集(canonical snippet → `mstar-plan-conventions` SKILL.md「Git 跟踪策略」;legacy `.agents/` 有等价表)。
19
+ 5. **Profile B**(统一 Done 压缩)时另建 `{HARNESS_DIR}/archived/plans/` `archived/plans-done.json`(自 **`mstar-plan-artifacts/templates/plans-done.empty.json`** 复制;schema 仅 `{ "plans": [] }`,见 **`mstar-plan-artifacts/references/done-compaction.md`**)。
20
+ 6. 可选:创建 `{ITERATION_DIR}`(`iterations/` + `README.md`)与 `{KNOWLEDGE_DIR}`(`knowledge/` + `README.md`);`{HARNESS_DIR}/specs/`(解析后的 `{SPECS_DIR}` 默认落点);内容边界见 `mstar-plan-conventions` SKILL.md 与 `references/knowledge-and-designs.md`。
21
+ 7. 创建 `{HARNESS_DIR}/AGENTS.md`(harness 子树规则;**tracked**):符号表可复述 `{HARNESS_DIR}`、`{PLAN_DIR}`、`{ITERATION_DIR}`、`{KNOWLEDGE_DIR}`、`{SPECS_DIR}` 与 `docs/` 分工;新项目推荐 `.mstar/AGENTS.md`,已有项目可继续使用 `.agents/AGENTS.md`。
22
+ 8. 校准根 `AGENTS.md`:只保留仓库级长期约束,显式引用 `{HARNESS_DIR}/AGENTS.md` 作为 harness SSOT。
23
+ 9. 仅在确有稳定边界时新增目录级 `AGENTS.md`(如 `contracts/`、`gateway/`、`sdk/`)。
24
+
25
+ ## Git 跟踪策略(进程 vs 结果)
26
+
27
+ **原则**:进程留在本地;结果与团队共享。完整规则与 canonical `.gitignore` snippet → **`mstar-plan-conventions` SKILL.md「Git 跟踪策略」**。
28
+
29
+ | 类别 | 默认 tracked | 默认 gitignored |
30
+ |------|--------------|-----------------|
31
+ | 结果(跨 clone handoff) | `{HARNESS_DIR}/AGENTS.md`、`{KNOWLEDGE_DIR}/**`、`{SPECS_DIR}/**` | — |
32
+ | 进程(本地会话 SSOT) | — | `plans/`、`iterations/`、`status.json`、`notes.json`、`sdd/`、`archived/` |
33
+
34
+ 跨 clone 须持久的 residual 或决策:经 **`mstar-compound`** 提升入 `{KNOWLEDGE_DIR}/`、写入 `{SPECS_DIR}/`,或记入 tracked `{HARNESS_DIR}/AGENTS.md` — **勿**默认 `git add` `status.json` / `plans/`。
23
35
 
24
36
  ## 三层 `AGENTS.md` 职责切分
25
37
 
@@ -19,7 +19,7 @@ Legacy fallbacks:
19
19
 
20
20
  1. Create `{HARNESS_DIR}` and `{PLAN_DIR}` when absent.
21
21
  2. Initialize `{HARNESS_DIR}/status.json` from template if available.
22
- 3. Ensure `{HARNESS_DIR}/sdd/` is gitignored; per-plan `{SDD_DIR}/review/` is created by the SDD/review flow when needed.
22
+ 3. Ensure Morning Star **process-artifact** gitignore set is present (canonical snippet → `mstar-plan-conventions` SKILL.md「Git 跟踪策略」): `{HARNESS_DIR}/archived/`, `iterations/`, `plans/`, `sdd/`, `notes.json`, `status.json` (legacy `.agents/` equivalents when applicable). Per-plan `{SDD_DIR}/review/` is created by the SDD/review flow when needed.
23
23
  4. Initialize residual archive path: `{HARNESS_DIR}/archived/residuals/`.
24
24
  5. **Profile B** only: `{HARNESS_DIR}/archived/plans/` and `archived/plans-done.json` from `mstar-plan-artifacts/templates/plans-done.empty.json` (`{ "plans": [] }` only; see `done-compaction.md`).
25
25
  6. Optional: `{HARNESS_DIR}/notes.json`, `{HARNESS_DIR}/knowledge/README.md`.
@@ -28,8 +28,12 @@ If legacy plan directories already exist, reuse them; avoid dual-structure dupli
28
28
 
29
29
  ## Git Tracking Policy
30
30
 
31
- - Default: track `{HARNESS_DIR}` files in repo for reproducible handoff.
32
- - If project policy requires local-only, explicitly record it and ensure no required artifact depends on ignored files.
31
+ **Principle:** process stays local; results are shared with the team. Full rules → `mstar-plan-conventions` SKILL.md「Git 跟踪策略」.
32
+
33
+ - **Default tracked** under `{HARNESS_DIR}`: `AGENTS.md`, `{KNOWLEDGE_DIR}/**`, `{SPECS_DIR}/**` (resolved specs path; default `{HARNESS_DIR}/specs/`).
34
+ - **Default gitignored** (local session SSOT / coordination): `archived/`, `iterations/`, `plans/`, `sdd/`, `notes.json`, `status.json`.
35
+ - `status.json` and main plan files remain **local session SSOT** — PM must keep them current on disk, but **do not** default `git add` / `git commit` for cross-clone handoff. Promote durable residuals and decisions into tracked `knowledge/` / `specs/` / `AGENTS.md` (compound) when they must survive clone.
36
+ - If a project explicitly opts into tracking process artifacts, record that policy in `{HARNESS_DIR}/AGENTS.md` and ensure team alignment.
33
37
 
34
38
  ## PM Responsibilities
35
39
 
@@ -62,7 +62,7 @@ mkdir -p "$SDD_DIR/review"
62
62
  skills/mstar-sdd/scripts/review-package "$MERGE_BASE" HEAD "$SDD_DIR/review/branch-review-....diff"
63
63
  ```
64
64
 
65
- Pass **branch** diff path and bundle report paths (`$SDD_DIR/review/qc1.md` …) to QC dispatch — not task-level diffs. Raw QC/QA files stay in the gitignored review bundle; PM records durable summary and residuals in tracked plan/status artifacts.
65
+ Pass **branch** diff path and bundle report paths (`$SDD_DIR/review/qc1.md` …) to QC dispatch — not task-level diffs. Raw QC/QA files stay in the gitignored review bundle; PM records durable summary and open residuals in **local** plan/`status.json` (session SSOT) and promotes cross-clone decisions into tracked knowledge/specs/`AGENTS.md` per `mstar-plan-conventions` git policy.
66
66
 
67
67
  ## PM context hygiene
68
68
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mstar-harness/opencode",
3
- "version": "1.5.1",
3
+ "version": "1.5.2",
4
4
  "description": "Morning Star harness OpenCode plugin (skills bootstrap and agent loading).",
5
5
  "license": "MIT",
6
6
  "repository": {