@mstar-harness/opencode 0.6.8 → 0.6.10

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.
@@ -15,7 +15,7 @@ description: Morning Star plan harness artifacts — `{PLAN_DIR}` main plans and
15
15
  | knowledge / iterations / specs boundaries and indexes | `references/knowledge-and-designs.md` |
16
16
  | Done row compaction Profile A/B | `references/done-compaction.md` |
17
17
  | `status.json`, residual severity, lifecycle, `jq` | `references/status-and-residuals.md` |
18
- | Empty-repo `status.json` / `notes.json` templates | `templates/status.empty.json`, `templates/notes.empty.json` (`templates/README.md`) |
18
+ | 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`) |
19
19
  | Tech-debt rollup (read-only) | `scripts/tech-debt-rollup.sh` |
20
20
 
21
21
  **Out of scope:** branch and QC/QA checkout alignment → **`mstar-branch-worktree`**; QC checklist and verdict → **`mstar-review-qc`**; `{HARNESS_DIR}` discovery and init → **`mstar-plan-conventions`**.
@@ -22,32 +22,42 @@
22
22
  - **可选**(人类扫表友好,非必须):**`title`** 一行、**`done_at`**;勿把长叙述塞回热行——放进 **`{HARNESS_DIR}/notes.json`** 或依赖冷快照 / `reports/`。
23
23
  - 一旦快照已写入,热行**不得**再承载完整 `gates`、`qc_status`、`tests`、`commits`、长 `description`/`scope` 等;**以 `archived_record` 指向文件为准**。
24
24
  - 单条 **`plans[].notes`** 字符串若仍在用,保持**极短**(如指向 `reports/<plan-id>/`);**不要**重复 QC 报告大段原文。
25
+ - **可选索引**:`{HARNESS_DIR}/archived/plans/_index.json` — `plan-id` → 相对路径,便于不依赖 glob 的工具。
26
+ - **可选滚动保留**:进一步缩小 `plans[]` 时,可只在热文件中保留**最近窗口**的瘦 `Done` 行,更旧 id 仅出现在 `_index.json` 与快照文件中;若采用,须在项目 `AGENTS.md` 中写明,并检查依赖「热文件中必有全部历史 id」的脚本。
25
27
 
26
28
  ## Profile B(可选)— 热文件不保留任何 `Done` 行(统一压缩)
27
29
 
28
- - **Done 快照路径**:`{HARNESS_DIR}/archived/plans/<plan-id>.json`(保存完整 `plans[]` 行快照)。
29
- - **Done 目录路径**:`{HARNESS_DIR}/archived/plans-done.json`(最小索引,便于统一发现已完成计划)。
30
- - **`plans-done.json` 推荐最小字段**:`id`、`title`、`done_at`、`plan_file`、`archived_record`。
31
- - **热文件行为**:`status.json.plans[]` 只保留非 `Done`(`Todo` / `InProgress` / `InReview` / `Blocked`);计划变为 `Done` 后,从热文件移除该行。
32
- - **读取约定**:当前执行状态读取 `status.json`;历史 `Done` 列表读取 `archived/plans-done.json`,详情读取 `archived/plans/<plan-id>.json`。
30
+ - **Done 快照路径**:`{HARNESS_DIR}/archived/plans/<plan-id>.json` — 单个 **`plans[]` 行对象**(含当时全部 `metadata`);**不是**包装层,勿再套 `plan_id` / `snapshot` 外壳。
31
+ - **Done 目录路径**:`{HARNESS_DIR}/archived/plans-done.json` — **仅** plan id 列表(见下);**勿**使用 `_index.json`、对象数组目录或其它并行索引。
32
+ - **`plans-done.json` schema(唯一权威;不得扩展)**:
33
+
34
+ ```json
35
+ {
36
+ "plans": ["01-data-infrastructure", "02-auth-refactor"]
37
+ }
38
+ ```
39
+
40
+ - 根对象**只允许**键 **`plans`**(字符串数组)。
41
+ - 数组元素为 **`plans[].id`**(= `archived/plans/<plan-id>.json` 的 basename;通常亦为主 plan `.md` 去扩展名)。
42
+ - 标题、`done_at`、主 plan 路径、`archived_record` 等**只**存在于 `archived/plans/<plan-id>.json` 快照内。
43
+ - 初始化:`mstar-plan-artifacts/templates/plans-done.empty.json` → `{ "plans": [] }`。
44
+ - **热文件行为**:`status.json.plans[]` 只保留非 `Done`;`Done` 后从热文件**删除**该行。
45
+ - **读取约定**:活跃计划 → `status.json`;历史 Done id 列表 → `plans-done.json`.`plans`;单条详情 → `archived/plans/<plan-id>.json`(路径由 id 拼接,**不**读目录内嵌路径字段)。
33
46
 
34
47
  ## 原子更新约束(Profile A / B 通用)
35
48
 
36
49
  - 将计划标记为 `Done` 时,冷快照写入与 `status.json` 更新应在**同一变更集**完成(或紧随合并后一次性完成)。
37
50
  - 采用 **Profile B** 时,必须在同一变更集中同时完成:
38
51
  1) 写入/更新 `archived/plans/<plan-id>.json`,
39
- 2) 写入/更新 `archived/plans-done.json`,
52
+ 2) `<plan-id>` 追加进 `archived/plans-done.json` 的 **`plans`** 数组(去重;勿写额外字段),
40
53
  3) 从 `status.json.plans[]` 删除该 `Done` 行。
41
54
  - 若无法满足以上三步,视为未完成 `Done` 收口,不应宣称已完成压缩迁移。
42
55
 
43
- **可选索引**:`{HARNESS_DIR}/archived/plans/_index.json` — `plan-id` → 相对路径,便于不依赖 glob 的工具。
44
-
45
- **可选滚动保留**:进一步缩小 `plans[]` 时,可只在热文件中保留**最近窗口**的瘦 `Done` 行,更旧 id 仅出现在 `_index.json` 与快照文件中;若采用,须在项目 `AGENTS.md` 中写明,并检查依赖「热文件中必有全部历史 id」的脚本。
46
-
47
56
  ## 采纳说明
48
57
 
49
58
  - 未写快照、热文件中仍保留完整 `Done` 行在历史仓库里依然可读;但新落地时建议先确定并固定使用 **Profile A** 或 **Profile B**,避免同仓混跑。
50
- - 从 Profile A 迁到 Profile B 前,先检查依赖 `status.json.plans[]` 扫描全部历史 `Done` 的脚本与流程,必要时先切换读取源到 `archived/plans-done.json`。
59
+ - 从 Profile A 迁到 Profile B 前,先检查依赖 `status.json.plans[]` 扫描全部历史 `Done` 的脚本与流程,并改为读取 `archived/plans-done.json`.`plans`。
60
+ - 若仓库 `plans-done.json` 仍为非 `{ "plans": [...] }` 形态(例如对象数组、顶层 `entries`/`catalog`),**整文件改写**为仅 id 列表;勿保留兼容层或双写富字段。
51
61
 
52
62
  ## 仓库级采用声明模板(贴到项目 `AGENTS.md`)
53
63
 
@@ -56,7 +66,7 @@
56
66
  ```markdown
57
67
  ### Plan compaction profile (this repository)
58
68
 
59
- This repository uses **Profile A** from the Morning Star `mstar-plan-conventions` skill (`references/done-compaction.md`).
69
+ This repository uses **Profile A** from the Morning Star `mstar-plan-artifacts` skill (`references/done-compaction.md`).
60
70
 
61
71
  - `status.json.plans[]` keeps active plans and may keep **slim `Done` rows**.
62
72
  - `archived/plans/<plan-id>.json` is used as cold snapshot when available.
@@ -68,11 +78,11 @@ This repository uses **Profile A** from the Morning Star `mstar-plan-conventions
68
78
  ```markdown
69
79
  ### Plan compaction profile (this repository)
70
80
 
71
- This repository uses **Profile B** from the Morning Star `mstar-plan-conventions` skill (`references/done-compaction.md`).
81
+ This repository uses **Profile B** from the Morning Star `mstar-plan-artifacts` skill (`references/done-compaction.md`).
72
82
 
73
83
  - `status.json.plans[]` keeps **non-`Done`** plans only.
74
84
  - Every `Done` plan MUST be represented in:
75
85
  - `archived/plans/<plan-id>.json` (full snapshot), and
76
- - `archived/plans-done.json` (minimal catalog).
77
- - Historical `Done` discovery MUST read `archived/plans-done.json`, not `status.json.plans[]`.
86
+ - `archived/plans-done.json` (`{ "plans": ["<plan-id>", ...] }` only).
87
+ - Historical `Done` discovery MUST read `archived/plans-done.json` **`plans`**, not `status.json.plans[]`; per-plan detail from `archived/plans/<plan-id>.json`.
78
88
  ```
@@ -6,3 +6,4 @@ Copy these into `{HARNESS_DIR}` when bootstrapping a project. Path symbols (`{HA
6
6
  |------|---------|--------|
7
7
  | `status.empty.json` | `{HARNESS_DIR}/status.json` | Root `residual_findings` only (see **`mstar-plan-artifacts` SKILL.md**). Replace `updated_at` with the real date. |
8
8
  | `notes.empty.json` | `{HARNESS_DIR}/notes.json` | Optional program timeline. Replace `updated_at` when first edited. |
9
+ | `plans-done.empty.json` | `{HARNESS_DIR}/archived/plans-done.json` | **Profile B only** — `{ "plans": [<plan-id>, ...] }` **only** (`references/done-compaction.md`). Append id on each `Done` compaction; no other keys or object elements. |
@@ -15,10 +15,11 @@
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
17
  3. 初始化可选 `notes.json`(**`mstar-plan-artifacts/templates/notes.empty.json`**)与 `plans/reports/README.md`。
18
- 4. 可选:创建 `{ITERATION_DIR}`(`iterations/` + `README.md`)与 `{KNOWLEDGE_DIR}`(`knowledge/` + `README.md`);内容边界见 `mstar-plan-conventions` SKILL.md `references/knowledge-and-designs.md`。
19
- 5. 创建 `{HARNESS_DIR}/AGENTS.md`(harness 子树规则):符号表可复述 `{HARNESS_DIR}`、`{PLAN_DIR}`、`{ITERATION_DIR}`、`{KNOWLEDGE_DIR}`、`{SPECS_DIR}` `docs/` 分工;新项目推荐 `.mstar/AGENTS.md`,已有项目可继续使用 `.agents/AGENTS.md`。
20
- 6. 校准根 `AGENTS.md`:只保留仓库级长期约束,显式引用 `{HARNESS_DIR}/AGENTS.md` 作为 harness SSOT。
21
- 7. 仅在确有稳定边界时新增目录级 `AGENTS.md`(如 `contracts/`、`gateway/`、`sdk/`)。
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/`)。
22
23
 
23
24
  ## 三层 `AGENTS.md` 职责切分
24
25
 
@@ -29,7 +30,7 @@
29
30
 
30
31
  ### `{HARNESS_DIR}/AGENTS.md`(harness 层)
31
32
 
32
- - 放:`{HARNESS_DIR}`/`{PLAN_DIR}`/`{ITERATION_DIR}`/`{KNOWLEDGE_DIR}`/`{SPECS_DIR}` 契约、`docs/` 与 harness 子树内容边界、状态推进门禁、QC/QA 对齐规则、residual 生命周期、Done compaction profile
33
+ - 放:`{HARNESS_DIR}`/`{PLAN_DIR}`/`{ITERATION_DIR}`/`{KNOWLEDGE_DIR}`/`{SPECS_DIR}` 契约、`docs/` 与 harness 子树内容边界、状态推进门禁、QC/QA 对齐规则、residual 生命周期、Done compaction profile(Profile B 时声明 `archived/plans-done.json` 仅为 `{ "plans": [<plan-id>, ...] }`,细则见 **`mstar-plan-artifacts/references/done-compaction.md`**)。
33
34
  - 不放:语言/框架编码细节、业务模块实现约束。
34
35
 
35
36
  ### `<subdir>/AGENTS.md`(边界层)
@@ -21,7 +21,8 @@ Legacy fallbacks:
21
21
  2. Initialize `{HARNESS_DIR}/status.json` from template if available.
22
22
  3. Initialize reports path: `{PLAN_DIR}/reports/`.
23
23
  4. Initialize residual archive path: `{HARNESS_DIR}/archived/residuals/`.
24
- 5. Optional: `{HARNESS_DIR}/notes.json`, `{HARNESS_DIR}/knowledge/README.md`.
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
+ 6. Optional: `{HARNESS_DIR}/notes.json`, `{HARNESS_DIR}/knowledge/README.md`.
25
26
 
26
27
  If legacy plan directories already exist, reuse them; avoid dual-structure duplication.
27
28
 
@@ -133,9 +133,9 @@ Before first implement dispatch (non-hotfix):
133
133
 
134
134
  If any fail -> do not dispatch implement.
135
135
 
136
- ### `/pm` sessions
136
+ ### PM entry sessions (`/pm` or OpenCode PM switch)
137
137
 
138
- When the session entered via **`/pm`**, follow **`skills/pm/SKILL.md`** § **`/pm`-only rules** (dispatch-first, iteration push, branch truth). Routing, gates, Task Board, QC, and templates remain in this file and topic `mstar-*` skills.
138
+ When the session entered via **`/pm`**, **`pm` skill**, or OpenCode PM orchestration, follow **`skills/pm/SKILL.md`** especially **Host entry**, **Autonomous Execute driver** (status.json backlog, `spec_integration_branch`, per-plan feature branches), and **Dispatch-first**. Routing, gates, Task Board, QC, and templates remain in this file and topic `mstar-*` skills.
139
139
 
140
140
  ---
141
141
 
@@ -1,60 +1,111 @@
1
1
  ---
2
2
  name: pm
3
- description: "Force Morning Star PM mode (`/pm`): load mstar-harness-core and project-manager; dispatch-only in Execute (Task per implement batch—no parent product code); continuous iteration push without basic yes/no prompts. Use when user invokes /pm or wants harness-only PM orchestration."
3
+ description: "Morning Star PM orchestration entry and autonomous Execute driver. On Cursor/Codex, /pm launches project-manager and keeps dispatch loops running. On OpenCode, switch to project-manager when the active agent is not PM. After Pre-implement GO, checkout the iteration spec_integration_branch, advance all open plans in {HARNESS_DIR}/status.json (per-plan feature branch merge to integration → repeat until Done), and set host todos before each work unit. Use when user invokes /pm, resumes harness Execute, asks PM to drive an iteration, or OpenCode needs PM role for orchestration."
4
4
  ---
5
5
 
6
- # `/pm` — Morning Star PM force entry
6
+ # PM — Morning Star orchestration entry
7
7
 
8
- Hard switch: **`mstar-*` only**, execute as **`project-manager`**.
8
+ Universal **project-manager** entry and **Execute automation driver**. Orchestrate and dispatch — **not** parent-agent product implementation (host tools do not waive this).
9
9
 
10
- **One line:** `/pm` = **orchestrate and dispatch** — not parent-agent product implementation (full Cursor/Shell tools **do not** waive this).
10
+ ## Host entry (read `mstar-host` first)
11
+
12
+ | Host | Entry | PM role |
13
+ | --- | --- | --- |
14
+ | **Cursor / Codex** | User invokes **`/pm`** (or explicit “run as PM”) | Force **`project-manager`** for the session; this skill is the launcher + automation driver |
15
+ | **OpenCode** | User may already be on a configured agent | **If active role ≠ `project-manager`**: operate **only** as PM — load `mstar-roles` → `references/project-manager.md`; do **not** stay in dev/QC/architect voice for orchestration. Named invokes still use `@<agent-id>` per Assignment |
16
+
17
+ Detect host → Read `mstar-host` → `references/cursor.md` | `opencode.md` | `codex.md`.
11
18
 
12
19
  ## Boot (order)
13
20
 
14
21
  1. `mstar-harness-core`
15
22
  2. `mstar-roles` → `references/project-manager.md`
16
- 3. Before first **implement** (non-hotfix): `mstar-dispatch-gates` + `mstar-host` (`references/cursor.md` | `opencode.md` | `codex.md`)
23
+ 3. Before first **implement** (non-hotfix): `mstar-dispatch-gates` + host reference
17
24
  4. Before **QC**: `mstar-review-qc`
18
25
  5. **On demand:** `mstar-phase-gates`, `mstar-plan-conventions`, `mstar-plan-artifacts`, `mstar-branch-worktree`, `mstar-superpowers-align`
19
26
 
20
- Prepare/Execute gates, routing, Assignment templates, Task Board, QC tri-review, residuals → **topic skills + `project-manager` references** (not repeated here).
27
+ Prepare/Execute gates, routing, Assignment templates, Task Board, QC tri-review, residuals → topic skills + PM references (not repeated here).
21
28
 
22
- ## `/pm`-only rules (SSOT for this entry)
29
+ ## When to activate autonomous Execute
23
30
 
24
- Everything else defers to `mstar-harness-core` and the table above.
31
+ Run **§ Autonomous Execute driver** when **all** are true:
25
32
 
26
- ### 1. Dispatch-first (`implement`)
33
+ 1. Harness has **`{HARNESS_DIR}/status.json`** (default `.mstar/status.json`) with at least one plan **not** `Done`
34
+ 2. **Pre-implement gate = GO** (`plan` locked, tasks ready — see `mstar-phase-gates` / PM Pre-Implement Gate Check)
35
+ 3. User intent is **continue Execute** (`/pm`, “推进 iteration”, “继续 plans”, or equivalent)
27
36
 
28
- | Do | Don't |
29
- | --- | --- |
30
- | **Loop:** `## Assignment` → invoke → Completion Report v2 → report-to-status → next batch | Parent **Write/Edit/Shell** on product code to “move faster” |
31
- | **1 Assignment ⇒ 1 invoke** in the dispatch message when host supports Task/@agent (`mstar-dispatch-gates`) | Assignment markdown only, no matching invoke |
32
- | Put merge/branch/handoff from **this thread** into Assignment | Skip subagent because context is “already here” (cold start ≠ excuse) |
37
+ If Prepare is incomplete → follow phase gates first; do **not** skip to implement dispatch.
33
38
 
34
- - **NEVER** implement while staying PM — including “not QC turn yet” (QC 3× is later; **implement still delegates** `fullstack-dev` / `frontend-dev` / …).
35
- - **Delegate scope / PM whitelist:** `mstar-roles` → PM Execution Boundary.
39
+ ## Autonomous Execute driver
40
+
41
+ **Goal:** finish the **active iteration** (all non-`Done` rows in `status.json.plans[]`) via dispatch loops — may span **multiple** `plan_id`s; do **not** stop after one plan while siblings remain open.
42
+
43
+ ### 0. Session todos (before any dispatch)
44
+
45
+ Host UI todos are **session guardrails**, not SSOT. Set them **before** each plan wave so scope does not drift:
46
+
47
+ | Host | Tool | Minimum set |
48
+ | --- | --- | --- |
49
+ | **Cursor** | `TodoWrite` or CreatePlan todos | Current `plan_id`; next batch (implement / QC / QA); branch checkpoint |
50
+ | **Codex** | `update_plan` / Goal or Plan UI todos | Same intent — mirror active `plan_id` + next gate |
51
+ | **OpenCode** | Host todo/plan UI if present | Same intent |
52
+
53
+ SSOT remains `{HARNESS_DIR}/status.json` + `{PLAN_DIR}/` — todos track **this session’s next moves**, not replace status.
54
+
55
+ ### 1. Read backlog
56
+
57
+ 1. Read **`mstar-plan-artifacts`** + **`{HARNESS_DIR}/status.json`**
58
+ 2. List plans where `status` ∈ `{Todo, InProgress, InReview, Blocked}` (priority: `InProgress` → `InReview` → `Todo` → unblock `Blocked` if PM can)
59
+ 3. Read **`metadata.spec_integration_branch`** / **`merge_target`** and **`primary_spec`** links (`mstar-plan-conventions`)
36
60
 
37
- ### 2. Autonomous Execute push (after Pre-implement **GO**)
61
+ ### 2. Iteration integration branch (Git cwd)
38
62
 
39
- - Drive the **active iteration** to done via **dispatch loops** (may span **multiple** `plan_id`s don’t stop after one plan if siblings are open).
40
- - **No** routine “should I continue?” on harness basics decide, record in Assignment if needed, **dispatch**.
41
- - Process unknowns → **Read** `mstar-*`; **`Blocked`** or user only for stop, secrets, irreversible scope gaps, or post-read rule conflict (`mstar-phase-gates` clarify spirit).
63
+ 1. Resolve **Spec / iteration integration branch** from `status.json` (`spec_integration_branch` on plan metadata or iteration-level registration see `mstar-plan-artifacts/references/status-and-residuals.md`)
64
+ 2. **Checkout or create** that branch on the **business repo** cwd PM will orchestrate from; confirm with `git branch --show-current`
65
+ 3. If missing from metadata → **stop**, Read `mstar-plan-conventions` + confirm with user per `mstar-branch-worktree` (PM branch confirmation template); record in plan + status **same round**
42
66
 
43
- ### 3. Branch truth (no silent cwd)
67
+ This branch is the **merge target** for each plan’s work until **all** plans under the iteration are `Done`.
44
68
 
45
- Actual Git strategy ≠ plan/`status.json` `working_branch` → **same round** update plan + status **or** worktree dispatches (`mstar-branch-worktree`) before next implement dispatch.
69
+ ### 3. Per-plan loop (until all `Done`)
70
+
71
+ For each active `plan_id`:
72
+
73
+ 1. **Plan start — feature branch:** Assignment uses **`Working branch: create <plan-feature-branch> from <spec_integration_branch>`** (or PM-approved equivalent). One **dedicated plan implementation branch** per `plan_id`; parallel tracks inside a plan → topic branches from integration + worktrees (`mstar-branch-worktree`).
74
+ 2. **Implement → InReview:** dispatch-only loops (`§ Dispatch-first`); update `status.json` + main plan after each Completion Report v2
75
+ 3. **QC → QA → Done:** tri-review + QA per `mstar-review-qc`; PM marks `Done` only when gates pass
76
+ 4. **Plan complete — merge back:** merge **plan feature branch** (and any integrated topic heads) **into `spec_integration_branch`**; resolve conflicts **before** next plan or QC on shared scope
77
+ 5. **Next plan** from step 1 on updated integration branch
78
+
79
+ When **every** plan in the iteration is `Done` → optional PR from `spec_integration_branch` to `main` per `mstar-plan-conventions` (unless Assignment `Branch policy` says otherwise).
80
+
81
+ ### 4. Push discipline
82
+
83
+ - **No** routine “should I continue?” on harness basics — decide, record in Assignment if needed, **dispatch**
84
+ - Unknowns → **Read** `mstar-*`; **`Blocked`** or user only for stop, secrets, irreversible scope gaps, or post-read rule conflict
85
+ - Actual Git ≠ plan/`status.json` `working_branch` → **same round** update plan + status **or** worktree dispatches before next implement
86
+
87
+ ## Dispatch-first (`implement`)
88
+
89
+ | Do | Don't |
90
+ | --- | --- |
91
+ | **Loop:** `## Assignment` → invoke → Completion Report v2 → report-to-status → next batch | Parent **Write/Edit/Shell** on product code to “move faster” |
92
+ | **1 Assignment ⇒ 1 invoke** when host supports Task/@agent (`mstar-dispatch-gates`) | Assignment markdown only, no matching invoke |
93
+ | Put merge/branch/handoff from **this thread** into Assignment | Skip subagent because context is “already here” |
94
+
95
+ - **NEVER** implement while staying PM — QC 3× comes later; **implement still delegates** dev roles.
96
+ - **Delegate scope / PM whitelist:** `mstar-roles` → PM Execution Boundary.
46
97
 
47
- **Exceptions:** user explicitly asks PM thread to implement; hotfix per `mstar-phase-gates` (still prefer invoke when available).
98
+ **Exceptions:** user explicitly asks PM thread to implement; hotfix per `mstar-phase-gates`.
48
99
 
49
100
  ## Cursor Plan mode
50
101
 
51
- If CreatePlan / SwitchMode: Read **`mstar-host/references/cursor-plan-mode-bridge.md`** (+ `mstar-plan-conventions`, `mstar-plan-artifacts` before first CreatePlan). Bootstrap todos `harness-init` → `spec-register` → `mirror-plan`; implement commits/evidence on **subagent** work, not PM parent edits alone.
102
+ CreatePlan / SwitchMode: Read **`mstar-host/references/cursor-plan-mode-bridge.md`**. Bootstrap todos `harness-init` → `spec-register` → `mirror-plan` before implement todos; evidence on **subagent** work.
52
103
 
53
104
  ## Conflict order
54
105
 
55
106
  1. User explicit instructions
56
107
  2. Project `AGENTS.md` / `CLAUDE.md`
57
- 3. `mstar-harness-core` + runtime `mstar-*` (routing-eval: maint-only `.cursor/skills/mstar-routing-eval/`)
108
+ 3. `mstar-harness-core` + runtime `mstar-*`
58
109
  4. This skill
59
110
 
60
- **Dispatch-first + `mstar-dispatch-gates` win** over “fast parent agent” unless user overrides.
111
+ **Dispatch-first + `mstar-dispatch-gates`** win over “fast parent agent” unless user overrides.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mstar-harness/opencode",
3
- "version": "0.6.8",
3
+ "version": "0.6.10",
4
4
  "description": "Morning Star harness OpenCode plugin (skills bootstrap and agent loading).",
5
5
  "license": "MIT",
6
6
  "repository": {