@mstar-harness/omp 3.6.0-alpha.4

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 (280) hide show
  1. package/README.md +63 -0
  2. package/agents/architect.md +35 -0
  3. package/agents/code-reviewer.md +90 -0
  4. package/agents/frontend-dev.md +33 -0
  5. package/agents/fullstack-dev-2.md +33 -0
  6. package/agents/fullstack-dev.md +33 -0
  7. package/agents/ops-engineer.md +33 -0
  8. package/agents/product-manager.md +35 -0
  9. package/agents/project-manager.md +32 -0
  10. package/agents/prompt-engineer.md +33 -0
  11. package/agents/qa-engineer.md +35 -0
  12. package/agents/qc-specialist-2.md +62 -0
  13. package/agents/qc-specialist-3.md +62 -0
  14. package/agents/qc-specialist.md +62 -0
  15. package/agents/writing-specialist.md +35 -0
  16. package/assets/icon.png +0 -0
  17. package/assets/logo-dark.png +0 -0
  18. package/assets/logo-dark.svg +6 -0
  19. package/assets/logo.png +0 -0
  20. package/assets/logo.svg +6 -0
  21. package/commands/amazing-pr-review.md +31 -0
  22. package/commands/codebase-audit.md +40 -0
  23. package/commands/iteration-drive.md +48 -0
  24. package/commands/iteration-loop.md +99 -0
  25. package/commands/iteration-start.md +122 -0
  26. package/dist/hooks/pre/mstar-gates.js +6579 -0
  27. package/dist/tools/mstar_dispatch_validate/index.js +6291 -0
  28. package/dist/tools/mstar_iteration_gate/index.js +6321 -0
  29. package/dist/tools/mstar_lease_verify/index.js +6343 -0
  30. package/dist/tools/mstar_path_resolve/index.js +6297 -0
  31. package/dist/tools/mstar_status_validate/index.js +6402 -0
  32. package/dist/tools/mstar_worktree_check/index.js +6343 -0
  33. package/harness-agents/architect.md +35 -0
  34. package/harness-agents/code-reviewer.md +90 -0
  35. package/harness-agents/frontend-dev.md +33 -0
  36. package/harness-agents/fullstack-dev-2.md +33 -0
  37. package/harness-agents/fullstack-dev.md +33 -0
  38. package/harness-agents/ops-engineer.md +33 -0
  39. package/harness-agents/product-manager.md +35 -0
  40. package/harness-agents/project-manager.md +32 -0
  41. package/harness-agents/prompt-engineer.md +33 -0
  42. package/harness-agents/qa-engineer.md +35 -0
  43. package/harness-agents/qc-specialist-2.md +62 -0
  44. package/harness-agents/qc-specialist-3.md +62 -0
  45. package/harness-agents/qc-specialist.md +62 -0
  46. package/harness-agents/writing-specialist.md +35 -0
  47. package/harness-commands/amazing-pr-review.md +31 -0
  48. package/harness-commands/codebase-audit.md +40 -0
  49. package/harness-commands/iteration-drive.md +48 -0
  50. package/harness-commands/iteration-loop.md +99 -0
  51. package/harness-commands/iteration-start.md +122 -0
  52. package/harness-skills/grill-me/SKILL.md +10 -0
  53. package/harness-skills/mstar-artifacts/SKILL.md +66 -0
  54. package/harness-skills/mstar-artifacts/references/knowledge-and-designs.md +110 -0
  55. package/harness-skills/mstar-artifacts/references/plan-files-and-reports.md +98 -0
  56. package/harness-skills/mstar-artifacts/references/plan-quality-bar.md +99 -0
  57. package/harness-skills/mstar-artifacts/references/status-and-residuals.md +472 -0
  58. package/harness-skills/mstar-artifacts/templates/README.md +7 -0
  59. package/harness-skills/mstar-artifacts/templates/plan.main.md +54 -0
  60. package/harness-skills/mstar-artifacts/templates/status.empty.json +5 -0
  61. package/harness-skills/mstar-audit/SKILL.md +151 -0
  62. package/harness-skills/mstar-audit/references/audit-playbook.md +175 -0
  63. package/harness-skills/mstar-audit/references/codebase-audit.md +103 -0
  64. package/harness-skills/mstar-audit/references/finding-format.md +69 -0
  65. package/harness-skills/mstar-audit/references/pr-review-seat-evidence.md +28 -0
  66. package/harness-skills/mstar-audit/references/pr-review.md +475 -0
  67. package/harness-skills/mstar-audit/references/security-review.md +219 -0
  68. package/harness-skills/mstar-branch-worktree/SKILL.md +236 -0
  69. package/harness-skills/mstar-branch-worktree/references/parallel-writable-pre-dispatch.md +68 -0
  70. package/harness-skills/mstar-coding-behavior/SKILL.md +167 -0
  71. package/harness-skills/mstar-compound/SKILL.md +109 -0
  72. package/harness-skills/mstar-compound/assets/resolution-template.md +94 -0
  73. package/harness-skills/mstar-compound/references/category-mapping.md +37 -0
  74. package/harness-skills/mstar-compound/references/compound-workflow.md +171 -0
  75. package/harness-skills/mstar-compound/references/concepts-vocabulary.md +44 -0
  76. package/harness-skills/mstar-compound/references/schema.yaml +122 -0
  77. package/harness-skills/mstar-compound-refresh/SKILL.md +154 -0
  78. package/harness-skills/mstar-compound-refresh/references/project-knowledge-bootstrap.md +164 -0
  79. package/harness-skills/mstar-conventions/SKILL.md +215 -0
  80. package/harness-skills/mstar-conventions/references/artifact-storage-paths.md +53 -0
  81. package/harness-skills/mstar-conventions/references/effort-estimation.md +38 -0
  82. package/harness-skills/mstar-conventions/references/harness-bootstrap-and-agents-layering.md +96 -0
  83. package/harness-skills/mstar-design-md/SKILL.md +142 -0
  84. package/harness-skills/mstar-design-md/references/completeness-checklist.md +181 -0
  85. package/harness-skills/mstar-design-md/references/design-md-spec.md +508 -0
  86. package/harness-skills/mstar-design-md/references/vercel-example.md +200 -0
  87. package/harness-skills/mstar-design-md/templates/DESIGN.dark.md.template +354 -0
  88. package/harness-skills/mstar-design-md/templates/DESIGN.md.template +474 -0
  89. package/harness-skills/mstar-dispatch-gates/SKILL.md +134 -0
  90. package/harness-skills/mstar-dispatch-gates/references/leaf-executor-checklist.md +23 -0
  91. package/harness-skills/mstar-engine-legacy/SKILL.md +53 -0
  92. package/harness-skills/mstar-engine-legacy/references/anti-recursion-checklists.md +58 -0
  93. package/harness-skills/mstar-engine-legacy/references/engine-check-boilerplate.md +26 -0
  94. package/harness-skills/mstar-engine-legacy/references/lease-protocol.md +92 -0
  95. package/harness-skills/mstar-engine-legacy/references/qc-seat-n-restatements.md +57 -0
  96. package/harness-skills/mstar-engine-legacy/references/status-field-history.md +186 -0
  97. package/harness-skills/mstar-harness-core/SKILL.md +196 -0
  98. package/harness-skills/mstar-host/SKILL.md +96 -0
  99. package/harness-skills/mstar-host/references/_shared/host-role-binding-core.md +51 -0
  100. package/harness-skills/mstar-host/references/_shared/plan-mode-bridge-core.md +91 -0
  101. package/harness-skills/mstar-host/references/codex.md +61 -0
  102. package/harness-skills/mstar-host/references/cursor-plan-mode-bridge.md +170 -0
  103. package/harness-skills/mstar-host/references/cursor.md +183 -0
  104. package/harness-skills/mstar-host/references/dsh.md +507 -0
  105. package/harness-skills/mstar-host/references/kimi-plan-mode-bridge.md +36 -0
  106. package/harness-skills/mstar-host/references/kimi.md +136 -0
  107. package/harness-skills/mstar-host/references/omp-plan-mode-bridge.md +32 -0
  108. package/harness-skills/mstar-host/references/omp.md +245 -0
  109. package/harness-skills/mstar-host/references/opencode.md +76 -0
  110. package/harness-skills/mstar-host/references/parallel-dispatch.md +68 -0
  111. package/harness-skills/mstar-host/references/zcode-plan-mode-bridge.md +36 -0
  112. package/harness-skills/mstar-host/references/zcode.md +129 -0
  113. package/harness-skills/mstar-iteration/SKILL.md +408 -0
  114. package/harness-skills/mstar-iteration/references/autonomous-direction-lock.md +90 -0
  115. package/harness-skills/mstar-iteration/references/command-shared-invariants.md +62 -0
  116. package/harness-skills/mstar-iteration/references/iteration-artifact-boundaries.md +103 -0
  117. package/harness-skills/mstar-iteration/references/iteration-compass-template.md +142 -0
  118. package/harness-skills/mstar-iteration/references/iteration-corpus-hygiene.md +45 -0
  119. package/harness-skills/mstar-iteration/references/iteration-workspace-readme-template.md +27 -0
  120. package/harness-skills/mstar-iteration/references/phase-2-worktree-lease.md +205 -0
  121. package/harness-skills/mstar-iteration/references/phase-3-iteration-close.md +105 -0
  122. package/harness-skills/mstar-iteration/references/phase-4-5-pr-delivery.md +85 -0
  123. package/harness-skills/mstar-iteration/references/phase5-helper-discovery.md +24 -0
  124. package/harness-skills/mstar-phase-gates/SKILL.md +118 -0
  125. package/harness-skills/mstar-project-governance/SKILL.md +119 -0
  126. package/harness-skills/mstar-review-qc/SKILL.md +76 -0
  127. package/harness-skills/mstar-review-qc/references/review-responsibility-boundaries.md +54 -0
  128. package/harness-skills/mstar-roles/SKILL.md +103 -0
  129. package/harness-skills/mstar-roles/references/_shared/leaf-executor-core.md +65 -0
  130. package/harness-skills/mstar-roles/references/architect.md +109 -0
  131. package/harness-skills/mstar-roles/references/code-reviewer.md +118 -0
  132. package/harness-skills/mstar-roles/references/frontend-dev.md +70 -0
  133. package/harness-skills/mstar-roles/references/fullstack-dev-shared.md +89 -0
  134. package/harness-skills/mstar-roles/references/ops-engineer.md +72 -0
  135. package/harness-skills/mstar-roles/references/product-manager.md +102 -0
  136. package/harness-skills/mstar-roles/references/project-manager/dispatch-and-assignment.md +200 -0
  137. package/harness-skills/mstar-roles/references/project-manager/plan-management.md +59 -0
  138. package/harness-skills/mstar-roles/references/project-manager/qa-trigger-matrix.md +56 -0
  139. package/harness-skills/mstar-roles/references/project-manager/qc-and-residuals.md +99 -0
  140. package/harness-skills/mstar-roles/references/project-manager/routing-and-dev-allocation.md +99 -0
  141. package/harness-skills/mstar-roles/references/project-manager.md +310 -0
  142. package/harness-skills/mstar-roles/references/prompt-engineer.md +65 -0
  143. package/harness-skills/mstar-roles/references/qa-engineer/acceptance-gate.md +62 -0
  144. package/harness-skills/mstar-roles/references/qa-engineer.md +71 -0
  145. package/harness-skills/mstar-roles/references/qc-specialist/deep-review-lenses.md +104 -0
  146. package/harness-skills/mstar-roles/references/qc-specialist/report-template.md +88 -0
  147. package/harness-skills/mstar-roles/references/qc-specialist/reviewer-checklist.md +44 -0
  148. package/harness-skills/mstar-roles/references/qc-specialist/reviewer-workflow.md +57 -0
  149. package/harness-skills/mstar-roles/references/qc-specialist-shared.md +120 -0
  150. package/harness-skills/mstar-roles/references/writing-specialist.md +88 -0
  151. package/harness-skills/mstar-sdd/SKILL.md +137 -0
  152. package/harness-skills/mstar-sdd/references/file-handoffs.md +85 -0
  153. package/harness-skills/mstar-sdd/references/implementer-continuation-prompt.md +44 -0
  154. package/harness-skills/mstar-sdd/references/implementer-prompt.md +56 -0
  155. package/harness-skills/mstar-sdd/references/sticky-implementer-session.md +103 -0
  156. package/harness-skills/mstar-sdd/references/task-reviewer-prompt.md +53 -0
  157. package/harness-skills/mstar-skill-authoring/SKILL.md +182 -0
  158. package/harness-skills/mstar-skill-authoring/references/regression-fixation.md +46 -0
  159. package/harness-skills/mstar-skill-authoring/references/skillsbench-authoring.md +154 -0
  160. package/harness-skills/mstar-strategy/SKILL.md +114 -0
  161. package/harness-skills/pm/SKILL.md +40 -0
  162. package/hooks/pre/mstar-gates.js +6579 -0
  163. package/package.json +45 -0
  164. package/plugin.json +49 -0
  165. package/skills/grill-me/SKILL.md +10 -0
  166. package/skills/mstar-artifacts/SKILL.md +66 -0
  167. package/skills/mstar-artifacts/references/knowledge-and-designs.md +110 -0
  168. package/skills/mstar-artifacts/references/plan-files-and-reports.md +98 -0
  169. package/skills/mstar-artifacts/references/plan-quality-bar.md +99 -0
  170. package/skills/mstar-artifacts/references/status-and-residuals.md +472 -0
  171. package/skills/mstar-artifacts/templates/README.md +7 -0
  172. package/skills/mstar-artifacts/templates/plan.main.md +54 -0
  173. package/skills/mstar-artifacts/templates/status.empty.json +5 -0
  174. package/skills/mstar-audit/SKILL.md +151 -0
  175. package/skills/mstar-audit/references/audit-playbook.md +175 -0
  176. package/skills/mstar-audit/references/codebase-audit.md +103 -0
  177. package/skills/mstar-audit/references/finding-format.md +69 -0
  178. package/skills/mstar-audit/references/pr-review-seat-evidence.md +28 -0
  179. package/skills/mstar-audit/references/pr-review.md +475 -0
  180. package/skills/mstar-audit/references/security-review.md +219 -0
  181. package/skills/mstar-branch-worktree/SKILL.md +236 -0
  182. package/skills/mstar-branch-worktree/references/parallel-writable-pre-dispatch.md +68 -0
  183. package/skills/mstar-coding-behavior/SKILL.md +167 -0
  184. package/skills/mstar-compound/SKILL.md +109 -0
  185. package/skills/mstar-compound/assets/resolution-template.md +94 -0
  186. package/skills/mstar-compound/references/category-mapping.md +37 -0
  187. package/skills/mstar-compound/references/compound-workflow.md +171 -0
  188. package/skills/mstar-compound/references/concepts-vocabulary.md +44 -0
  189. package/skills/mstar-compound/references/schema.yaml +122 -0
  190. package/skills/mstar-compound-refresh/SKILL.md +154 -0
  191. package/skills/mstar-compound-refresh/references/project-knowledge-bootstrap.md +164 -0
  192. package/skills/mstar-conventions/SKILL.md +215 -0
  193. package/skills/mstar-conventions/references/artifact-storage-paths.md +53 -0
  194. package/skills/mstar-conventions/references/effort-estimation.md +38 -0
  195. package/skills/mstar-conventions/references/harness-bootstrap-and-agents-layering.md +96 -0
  196. package/skills/mstar-design-md/SKILL.md +142 -0
  197. package/skills/mstar-design-md/references/completeness-checklist.md +181 -0
  198. package/skills/mstar-design-md/references/design-md-spec.md +508 -0
  199. package/skills/mstar-design-md/references/vercel-example.md +200 -0
  200. package/skills/mstar-design-md/templates/DESIGN.dark.md.template +354 -0
  201. package/skills/mstar-design-md/templates/DESIGN.md.template +474 -0
  202. package/skills/mstar-dispatch-gates/SKILL.md +134 -0
  203. package/skills/mstar-dispatch-gates/references/leaf-executor-checklist.md +23 -0
  204. package/skills/mstar-engine-legacy/SKILL.md +53 -0
  205. package/skills/mstar-engine-legacy/references/anti-recursion-checklists.md +58 -0
  206. package/skills/mstar-engine-legacy/references/engine-check-boilerplate.md +26 -0
  207. package/skills/mstar-engine-legacy/references/lease-protocol.md +92 -0
  208. package/skills/mstar-engine-legacy/references/qc-seat-n-restatements.md +57 -0
  209. package/skills/mstar-engine-legacy/references/status-field-history.md +186 -0
  210. package/skills/mstar-harness-core/SKILL.md +196 -0
  211. package/skills/mstar-host/SKILL.md +96 -0
  212. package/skills/mstar-host/references/_shared/host-role-binding-core.md +51 -0
  213. package/skills/mstar-host/references/_shared/plan-mode-bridge-core.md +91 -0
  214. package/skills/mstar-host/references/codex.md +61 -0
  215. package/skills/mstar-host/references/cursor-plan-mode-bridge.md +170 -0
  216. package/skills/mstar-host/references/cursor.md +183 -0
  217. package/skills/mstar-host/references/dsh.md +507 -0
  218. package/skills/mstar-host/references/kimi-plan-mode-bridge.md +36 -0
  219. package/skills/mstar-host/references/kimi.md +136 -0
  220. package/skills/mstar-host/references/omp-plan-mode-bridge.md +32 -0
  221. package/skills/mstar-host/references/omp.md +245 -0
  222. package/skills/mstar-host/references/opencode.md +76 -0
  223. package/skills/mstar-host/references/parallel-dispatch.md +68 -0
  224. package/skills/mstar-host/references/zcode-plan-mode-bridge.md +36 -0
  225. package/skills/mstar-host/references/zcode.md +129 -0
  226. package/skills/mstar-iteration/SKILL.md +408 -0
  227. package/skills/mstar-iteration/references/autonomous-direction-lock.md +90 -0
  228. package/skills/mstar-iteration/references/command-shared-invariants.md +62 -0
  229. package/skills/mstar-iteration/references/iteration-artifact-boundaries.md +103 -0
  230. package/skills/mstar-iteration/references/iteration-compass-template.md +142 -0
  231. package/skills/mstar-iteration/references/iteration-corpus-hygiene.md +45 -0
  232. package/skills/mstar-iteration/references/iteration-workspace-readme-template.md +27 -0
  233. package/skills/mstar-iteration/references/phase-2-worktree-lease.md +205 -0
  234. package/skills/mstar-iteration/references/phase-3-iteration-close.md +105 -0
  235. package/skills/mstar-iteration/references/phase-4-5-pr-delivery.md +85 -0
  236. package/skills/mstar-iteration/references/phase5-helper-discovery.md +24 -0
  237. package/skills/mstar-phase-gates/SKILL.md +118 -0
  238. package/skills/mstar-project-governance/SKILL.md +119 -0
  239. package/skills/mstar-review-qc/SKILL.md +76 -0
  240. package/skills/mstar-review-qc/references/review-responsibility-boundaries.md +54 -0
  241. package/skills/mstar-roles/SKILL.md +103 -0
  242. package/skills/mstar-roles/references/_shared/leaf-executor-core.md +65 -0
  243. package/skills/mstar-roles/references/architect.md +109 -0
  244. package/skills/mstar-roles/references/code-reviewer.md +118 -0
  245. package/skills/mstar-roles/references/frontend-dev.md +70 -0
  246. package/skills/mstar-roles/references/fullstack-dev-shared.md +89 -0
  247. package/skills/mstar-roles/references/ops-engineer.md +72 -0
  248. package/skills/mstar-roles/references/product-manager.md +102 -0
  249. package/skills/mstar-roles/references/project-manager/dispatch-and-assignment.md +200 -0
  250. package/skills/mstar-roles/references/project-manager/plan-management.md +59 -0
  251. package/skills/mstar-roles/references/project-manager/qa-trigger-matrix.md +56 -0
  252. package/skills/mstar-roles/references/project-manager/qc-and-residuals.md +99 -0
  253. package/skills/mstar-roles/references/project-manager/routing-and-dev-allocation.md +99 -0
  254. package/skills/mstar-roles/references/project-manager.md +310 -0
  255. package/skills/mstar-roles/references/prompt-engineer.md +65 -0
  256. package/skills/mstar-roles/references/qa-engineer/acceptance-gate.md +62 -0
  257. package/skills/mstar-roles/references/qa-engineer.md +71 -0
  258. package/skills/mstar-roles/references/qc-specialist/deep-review-lenses.md +104 -0
  259. package/skills/mstar-roles/references/qc-specialist/report-template.md +88 -0
  260. package/skills/mstar-roles/references/qc-specialist/reviewer-checklist.md +44 -0
  261. package/skills/mstar-roles/references/qc-specialist/reviewer-workflow.md +57 -0
  262. package/skills/mstar-roles/references/qc-specialist-shared.md +120 -0
  263. package/skills/mstar-roles/references/writing-specialist.md +88 -0
  264. package/skills/mstar-sdd/SKILL.md +137 -0
  265. package/skills/mstar-sdd/references/file-handoffs.md +85 -0
  266. package/skills/mstar-sdd/references/implementer-continuation-prompt.md +44 -0
  267. package/skills/mstar-sdd/references/implementer-prompt.md +56 -0
  268. package/skills/mstar-sdd/references/sticky-implementer-session.md +103 -0
  269. package/skills/mstar-sdd/references/task-reviewer-prompt.md +53 -0
  270. package/skills/mstar-skill-authoring/SKILL.md +182 -0
  271. package/skills/mstar-skill-authoring/references/regression-fixation.md +46 -0
  272. package/skills/mstar-skill-authoring/references/skillsbench-authoring.md +154 -0
  273. package/skills/mstar-strategy/SKILL.md +114 -0
  274. package/skills/pm/SKILL.md +40 -0
  275. package/tools/mstar_dispatch_validate.js +6291 -0
  276. package/tools/mstar_iteration_gate.js +6321 -0
  277. package/tools/mstar_lease_verify.js +6343 -0
  278. package/tools/mstar_path_resolve.js +6297 -0
  279. package/tools/mstar_status_validate.js +6402 -0
  280. package/tools/mstar_worktree_check.js +6343 -0
@@ -0,0 +1,507 @@
1
+ # dsh host reference
2
+
3
+ Load when **`mstar-host`** detection resolves **dsh** (DeepSeek Harness — session
4
+ has the **`subagent`** model-facing delegation tool, the `@deepseek-ai/dsh`
5
+ cordis plugin stack; `@mstar-harness/dsh` mounted via the `web` profile bundle
6
+ or a custom profile).
7
+
8
+ ## dsh-only context
9
+
10
+ - Plugin markers: **`@mstar-harness/dsh`** (cordis function plugin) + the
11
+ **profile bundle** (`dsh.bundle.patch` manifest) installed into the `web`
12
+ profile via `dsh plugin --profile web add <spec>`. The composed app rows:
13
+ `@deepseek-ai/dsh-skill` (skill registry), `@deepseek-ai/dsh-tools` (tool
14
+ registry), `@deepseek-ai/dsh-commands` (command registry), then the `mstar`
15
+ row.
16
+ - Runtime skills: the plugin mounts the packaged **`harness-skills/`** mirror
17
+ (repo `skills/`, synced by `bundle-assets`) through the dsh skill-local
18
+ provider as a **single canonical mount** (`providerName: mstar`). Skills are
19
+ loadable by **name** via `ctx.skills`; the canonical skill-root form is
20
+ `$DSH_BUNDLED_SKILL_DIR/<name>[/<rel>]`.
21
+ - Plugin commands: the plugin registers the bundled **`harness-commands/`**
22
+ mirror as slash commands on `ctx.commands` — **`/iteration-start`**,
23
+ **`/iteration-drive`**, **`/iteration-loop`**, **`/codebase-audit`**. Each
24
+ command steers its command body into the receiving agent as a USER-source
25
+ message (the mstar workflow prompt — the model executes it as a task, not
26
+ injected context), returning a success result.
27
+ - **No `sessionStart.skill`** — enter PM manually via the `pm` skill (the
28
+ `mstar-roles` load path), then **Read next** → `mstar-harness-core` →
29
+ `project-manager.md`.
30
+ - Model-facing tools: the plugin registers **`mstar_sdd_workspace`**,
31
+ **`mstar_sdd_task_brief`**, **`mstar_iteration_gate`**, and the seam
32
+ validators **`mstar_design_md_validate`** / **`mstar_audit_validate`** /
33
+ **`mstar_compound_validate`** / **`mstar_roles_validate`** on `ctx.tools`.
34
+ - Web client plugin (workflow panel): the same `mstar` bundle row carries a
35
+ browser client half (`dsh.client` + `exports["./client"]`) discovered
36
+ automatically by `ClientModuleHostService` — no separate profile layer or
37
+ install step. It registers a **`conversation.view`** view-ring tab
38
+ (`id: 'mstar-workflow'`, `order: 20`) labeled **"MStar 工作流" / "MStar
39
+ Workflow"** rendering the latest `mstar-engine-status` catalog row as the
40
+ **MStar Workflow layout** — a right sidebar (plans ≤5 in time-desc order +
41
+ `+N more`, open residual findings ≤10 with severity chips + overflow hint,
42
+ policy with **enforcement first** then push / worktree / control worktree,
43
+ leases, knowledge, direction) over a bottom **fixed meta dock** (version +
44
+ harness dir; small muted, hairline-separated, does NOT scroll with the
45
+ sidebar digest — the former header row was removed), and an **HTML/CSS zone
46
+ dashboard** (the react-flow cyclic graph was removed in plan
47
+ `20260810-panel-canvas-zones`): the canvas fills the Tab (the page never
48
+ scrolls; the zone container is the only scroll body) with an **iteration
49
+ zone** (Step 1–5 stepper + `Step N/5` badge + active-highlight / inactive
50
+ dimmed state; the steps carry a FOUR-STATE machine — `current` / `next` /
51
+ `done` / `idle` (plan `20260812-panel-f5-iteration-zone-fix` Task 1): every
52
+ step BEFORE the current one projects `done`「已完成」(completed — a finished
53
+ Step 1 must not read as idle while Step 2 is current), `next` is the single
54
+ forward target, `idle` is schema-only + the branch panel — iteration base /
55
+ target / spec integration, rendered only while active; the expanded head is
56
+ a LEFT-RIGHT SPLIT — branches (small left half, WIDTH-CAPPED — `flex: 0 1
57
+ 260px` + `max-width: 280px`, never stretches with the container; the <860px
58
+ column stack resets to content height) + steps (large right half, `flex: 1 1
59
+ 0` absorbing the remaining width) via `data-iteration-head-split`, stacking
60
+ on narrow widths, and NO branch panel
61
+ when there is no active iteration; the current step follows the steering
62
+ compass: `compassStatus: 'active'` (Phase 1 in flight) → Step 1
63
+ (iteration-start) is CURRENT with verdict `unknown` — no PASS/FAIL badge,
64
+ plan `20260811-panel-f4-iteration-zone`; **the iteration info section is
65
+ SHARED by the tasks AND agents tabs** (plan
66
+ `20260812-panel-f5-design-system` Task 8, user round-4 decision #4 — one
67
+ `IterationInfoSection` component, both tabs render the same `view.iteration`
68
+ block: summary + steps + branches), a **tasks zone** (5-column
69
+ kanban: Todo / InProgress / InReview / Done / `blocked-unknown` — the
70
+ Blocked state and the former `unknown` catch-all fold into ONE merged
71
+ column titled「受阻/未知」/「Blocked / Unknown」, plan
72
+ `20260813-panel-quick-fixes` Task 1 — with count badges; every column
73
+ caps its rendered rows at `PLAN_CAP` and shows a clickable 「更多」/「收起」
74
+ expand button (`data-kanban-more` anchor) unfolding the full column — the
75
+ projection keeps ALL plan rows, the cap is a render concern never a
76
+ discard), an **agent-execution zone** (the FOUR EXPECTED_ROLE_FLOW stage/phase
77
+ columns — review-edit-chain → sdd-implement → qc-tri → qa-gate, the
78
+ terminal stage; the former `sdd-task-review` stage is removed and its SDD
79
+ L2 reviewer is now the PIPELINE role `code-reviewer` (v2.1.1, the former
80
+ `generalPurpose` seat) — a strict FOUR-column layout with NO standalone
81
+ unknown column (plan `20260812-panel-f5-design-system` Task 5, user
82
+ 2026-08-12 round-2 decision — the former rightmost UNKNOWN column of plan
83
+ `20260812-panel-f5-agent-layout` is superseded): the `general` bucket
84
+ sinks into an **unknown SUB-PARTITION at the bottom of the `qa-gate`
85
+ column** (a `data-sub-bucket="unknown"` caption row 「unknown / 未匹配角色」
86
+ after the last qa-gate card, then the general cards; the standalone
87
+ on-demand column was already removed in the agent-layout plan); `explore`
88
+ is removed — no card, no column. The columns are laid out in **TWO
89
+ side-by-side Phase groups** (plan `20260812-panel-f5-design-system` Task 8,
90
+ user round-4 decision #2; side-by-side layout per plan
91
+ `20260813-panel-agent-canvas-legend-layout` Task 2): the **Phase 1 group
92
+ on the LEFT** (review-edit-chain — the sequential Review & Edit chain:
93
+ product-manager → architect → writing-specialist) and the **Phase 2 group
94
+ on the RIGHT** (sdd-implement → qc-tri → qa-gate — the iterative plan
95
+ loop), top-aligned (all group label rows share the same `y = PAD_Y`), each
96
+ with its group label row; the **Phase-2 label annotates the CURRENT PLAN**
97
+ (projected `agents.activePlanId` = the first InProgress `state.plans[]`
98
+ row, `data-canvas-group-plan`; `+N more` when several plans run in
99
+ parallel, muted「无进行中 plan」when none). The `sdd-implement` column is split into SUB-BUCKETS by
100
+ the PROJECTED `entity.bucket` (never a render guess): the **implementor**
101
+ partition ABOVE — the flow roles in the stage's original order
102
+ (fullstack-dev / fullstack-dev-2 / frontend-dev), then the on-demand
103
+ roles (ops-engineer / prompt-engineer, carrying the **on-demand badge** —
104
+ the standalone on-demand column is gone) — and the **sdd-reviewer**
105
+ partition BELOW (code-reviewer, idle included), with the implementor /
106
+ sdd-reviewer caption labels; `zone: 'on-demand'` entities live in the
107
+ implementor partition, `zone: 'general'` entities render in the qa-gate
108
+ column's bottom unknown sub-partition. The subagent ENTITY cards aggregate **by role** from actual
109
+ dispatch evidence: the same role across sessions folds into one card ×N,
110
+ and every off-roster dispatch (the former `generalPurpose` SDD reviewer,
111
+ `scout`, anonymous `role === ''`) folds into the single `general` bucket
112
+ entity — the card is ROLE-TITLED (the role id, e.g. `fullstack-dev`); the
113
+ agent session id / task tag (`planId#taskId`) ride the RECORD line, never
114
+ the title. Cards show the role chip / status point / ×N count; running
115
+ entities carry the business glow-pulse
116
+ highlight, un-evidenced stages render the dashed "待执行" pending
117
+ placeholder with their expected role chips, un-evidenced KNOWN_AGENTS
118
+ members render dashed idle cards (the full 14-role roster is never
119
+ hidden), and the header shows the `N executing · M pending` summary.
120
+ Cards carry the projected **emphasis tier** (plan
121
+ `20260812-panel-f5-design-system` Task 4, design doc §3): `emphasis:
122
+ 'current' | 'next' | 'off' | null` — the iteration's current-phase roles
123
+ render at **100%** chrome intensity, later-phase expected roles at **75%**,
124
+ already-passed / stage-less (on-demand, general) roles at **45%**, and
125
+ `null` (no iteration / unresolved transition) applies NO override — always
126
+ a chrome **alpha mix** (`--mstar-canvas-emphasis-*` tokens; never a
127
+ whole-card `opacity`, so the status point + running glow stay opaque).
128
+ Settled entities get a **standalone GREEN done frame + green ✓** (plan
129
+ `20260812-panel-f5-design-system` Task 8, user round-4 decisions #1/#3:
130
+ `data-agent-done="true"` — a full-strength success border + 1px ring on
131
+ the rounded card body + the ✓ in the status point) **ONLY when
132
+ `emphasis ≠ 'off'`** — an off-tier role (already-passed / stage-less
133
+ on-demand + general) renders the muted dot instead and NEVER shows the
134
+ completion marker (the completed state never appears on a stage-less
135
+ role). The canvas filters to the CURRENT iteration only (plan
136
+ `20260813-panel-quick-fixes` Task 2): dispatch evidence projects for the
137
+ current iteration's plans — the steering compass `iterationId` when
138
+ active, else the nearest iteration derived from the catalog
139
+ `plans[].iterationRefs` (the most-recent plan's refs by 8-digit id date
140
+ prefix + doneAt); provably cross-iteration events produce no entity/edge
141
+ (the roster keeps its idle cards); plan-less / unknown-plan / standalone
142
+ dispatches are never hidden. Status honesty (Task 2): `advisory` is NO
143
+ LONGER terminal — a soft-enforcement dispatch falls through to its paired
144
+ settle (green ✓ when a settle exists, `running` when none) while `denied`
145
+ stays terminal; the advisory verdict still renders in the event log. The
146
+ canvas legend sits BELOW the viewport (Task 3 — moved from above, user
147
+ 2026-08-13 feedback).
148
+ Edges (plan `20260812-panel-f5-design-system` Task 5, design doc §2):
149
+ the `expected` stage skeleton arrows AND the ANIMATED **next** edge (the
150
+ former `@keyframes agent-dash-flow` dash-flow arrow of plan
151
+ `20260810-panel-agent-flow-zone`) are **REMOVED** — flow order is implied
152
+ by the fixed column order + column labels, the current position by the
153
+ running card glow + status point — leaving TWO semantic kinds: the
154
+ evidence-driven **`actual` handoff** edges (same-plan ts-adjacent dispatch
155
+ entity-key pairs, `general` endpoints filtered, ≤1 per entity pair) drawn
156
+ as **bezier `C` curves** anchored to card **PORTS** — 4 fixed
157
+ edge-midpoint ports (north / south / east / west; static-invisible,
158
+ hover-revealed as small dots) with the arrow tip pulled back to a **10px
159
+ standoff** off the port — the arrow follows the line's local tangent at
160
+ the anchor (**H1**), and no line's stroke or arrow crosses any text
161
+ (**H2**: standoff + side-gap routing, design doc §2.0/§2.5/§2.6;
162
+ tightened in plan `20260813-panel-quick-fixes` Task 3 — same-column
163
+ vertical flows whose center-x line would cross an in-between card body
164
+ (e.g. fullstack-dev → frontend-dev skipping an idle fullstack-dev-2)
165
+ reroute into the column's LEFT side gap, forward AND reverse, and reverse
166
+ horizontal beziers keep direction-aware control points BETWEEN the
167
+ endpoints so they never bulge into the adjacent column) — plus
168
+ the **bidirectional supervise line** (plan `20260812-panel-f5-agent-layout`
169
+ Task 1/2) — ONE static design-knowledge sub-bucket edge inside the
170
+ `sdd-implement` column (implementor ↔ sdd-reviewer — the mstar-sdd
171
+ mutual-supervision contract), now anchored at the **side-gap vertical
172
+ anchor** (`x = card right edge + 18px`, vertical bezier flow, arrows along
173
+ the vertical tangent — design doc §2.5/§2.7); dim dashed by default, lit
174
+ business SOLID when the projected `evidenced` flag is true —
175
+ evidence-driven lighting, never a fabricated activation); the 事件记录 tab
176
+ (`EventLogPage`, spec panel-tabs §5, plan `20260811-panel-event-log`) is a
177
+ NON-canvas log page with two partitions — **Agent 流转事件** (`view.events`
178
+ ≤50 latest-first; off-pipeline unexpected dispatches fold in once via
179
+ `expected: false` and carry a dispatch-only 「未匹配角色」 badge — settle
180
+ rows are completion records and never flag as unexpected) and **违规记录**
181
+ (`view.violations`, gate violations with severity/code/message); every row
182
+ is an expandable native `<details>` (no-JS, keyboard-accessible) whose body
183
+ shows the full catalog fields — missing fields render「—」, never a guessed
184
+ value. Layout (plan `20260811-panel-f3-agent-general`): the two partitions
185
+ render SIDE BY SIDE in a locked-height two-column grid
186
+ (`repeat(2, minmax(0, 1fr))` — the page never scrolls as a whole; each
187
+ partition pins its title and owns an internal `overflow-y` scroll on its
188
+ row list; plan `20260813-panel-quick-fixes` Task 4 root-caused the
189
+ whole-page scroll — the panel root opts into the host
190
+ `data-conversation-composer-overlay` (the host's documented full-height
191
+ opt-in), so the host `.viewArea` becomes a definite-height container and
192
+ `height:100%` resolves: `.rowList`'s `overflow-y: auto` now scrolls
193
+ INSIDE the partition and the host page no longer scrolls, with bottom
194
+ clearance reserving the floating composer via the host-published
195
+ `--dsh-composer-height`), falling back to two stacked 50/50 locked rows
196
+ below 1200px —
197
+ the `data-event-log-*` anchor family is unchanged. The canvas-corner **`AgentEventDock`** is REMOVED with the page
198
+ (无双份日志 — its row layout + status chips migrated into `EventLogPage`);
199
+ the fixed footer bar (zone legend + gate summary + violations) died with
200
+ the WorkflowCanvas in plan `20260811-panel-tabs-shell` — the footer that
201
+ remains is the freshness marker. Empty branches (spec §2 — plan
202
+ `20260812-panel-f5-agent-layout` Task 3): waiting keeps the muted hint,
203
+ and NO harness renders a **CENTERED inactive-state card** (folder icon +
204
+ 「No Morning Star harness detected」 title + the hint copy — the detail
205
+ panel stays inactive, no tabs / no sidebar, activating automatically once
206
+ a harness is detected; the `data-mstar-empty="no-harness"` anchor stays on
207
+ the title, `data-mstar-graph` on the main container). Below 1200px
208
+ the zones stack vertically. Pure `projectGraph` projection (never throws,
209
+ explicit degraded states — muted empty states, never orange warn boxes).
210
+ The branches block left the sidebar in plan `20260810-panel-sidebar-info`
211
+ (its anchor fields stay in the catalog source; the iteration zone renders
212
+ them via plan `20260810-panel-canvas-zones`); refresh follows the session
213
+ snapshot, no polling — while the main agent is ACTIVELY orchestrating, a
214
+ ledger record (dispatch/settle) invalidates the workspace's TTL-cached
215
+ catalog row so the next pre-step rebuilds and (digest text change)
216
+ re-injects it, and the panel refreshes per step (seconds, not the 60 s TTL);
217
+ while the main agent IDLES (waiting, no tool calls) the panel keeps the
218
+ LAST snapshot — no live push channel (documented limit, plan
219
+ `20260811-panel-f4-timeliness`). Bundle served at
220
+ `/plugins/@mstar-harness/dsh/client.js` (closure-factory CJS with NO graph
221
+ library inlined — react-flow removed; the build asserts the bundle contains
222
+ no `xyflow`/`reactflow` markers, no `@deepseek-ai/*` value imports, and no
223
+ `import.meta` / ESM statements — the loader runs plugin bundles as classic
224
+ scripts). **Known limitations**: the stepper's Step 1 (iteration-start) IS
225
+ the current step while the steering compass is `status: active` (Phase 1 in
226
+ flight — catalog `compassStatus` field), carrying NO PASS/FAIL badge (Phase
227
+ 1 has no gate verdict); Step 5 (merge-ready) can never be the CURRENT step —
228
+ the engine phase gate only evaluates Phase 2→3→4 (merge-ready is never a gate
229
+ transition); it renders `next` only while Step 4 (pr-delivery) is current,
230
+ idle otherwise;
231
+ the current step follows the TTL-refreshed `compassStatus` — up to one
232
+ catalog interval (60 s) behind a mid-session `active`→`locked` flip (bounded,
233
+ documented staleness, never a wrong verdict); the agent-entity
234
+ status derivation pairs a PAIRED settle exactly by its dispatch identity
235
+ (`agent`, `role`, `planId`, `taskId` — under QC-tri N=3 concurrency each
236
+ settle lands on ITS dispatch), and an unpaired dispatch stays `running`
237
+ (no paired settle — never guessed, never faked); the current-iteration
238
+ filter with NO steering compass infers the iteration from plan ids
239
+ (8-digit date prefix) + doneAt — deterministic, documented heuristic, and
240
+ only provably cross-iteration events are dropped; no historical back-scan of
241
+ resumed long logs; no custom
242
+ top-level slot (the `conversation.view` tab is the only session-level panel
243
+ seat without dsh-private layout changes); no-session → shell hero
244
+ (strict-session view ring). Panel acceptance is dual-track: in-loop browser
245
+ harness verification (agent-browser/CDP against the rebuilt bundle,
246
+ iteration guides record the verified runs) plus user-restart final GUI
247
+ acceptance.
248
+
249
+ ## Skill loading
250
+
251
+ 1. On entry: invoke **`pm`** (skill name via the mstar provider) → **Read
252
+ next** loads `mstar-harness-core`, then `mstar-roles` →
253
+ `project-manager.md` when PM is active.
254
+ 2. Read `mstar-host` and this dsh reference.
255
+ 3. Load `mstar-roles` and the active role reference.
256
+ 4. Load topic skills on demand per the role reference (skill **names** —
257
+ never app-cwd `skills/<name>/…`).
258
+
259
+ ## Tools map
260
+
261
+ | dsh tool | Harness use |
262
+ |----------|-------------|
263
+ | **`subagent`** | Primary dispatch — the model-facing delegation tool the dispatch gate matches (default `toolName`; a renamed instance must be declared via Config `dispatchTools`) |
264
+ | **`mstar_iteration_gate`** | Evaluate the iteration phase gate in-app (`evaluatePhaseGate` — `mstar iteration gate` parity) |
265
+ | **`mstar_sdd_workspace`** / **`mstar_sdd_task_brief`** | SDD workspace resolve + task brief extraction (`mstar sdd …` parity) |
266
+ | **`mstar_*_validate`** | On-demand seam validators (design-md / audit / compound / roles) |
267
+ | **bash / read / write / edit / grep / glob / web_search** | Standard agent tools — evidence per `mstar-coding-behavior` |
268
+
269
+ ### `subagent` dispatch shape
270
+
271
+ The dsh `subagent` tool is the delegation channel (schema rendered by
272
+ `@deepseek-ai/dsh-tool-subagent`; `provider`-bound, default toolName
273
+ `subagent`). Dispatch an Assignment the same way as other agent-tool hosts:
274
+ the dispatch gate validates the **Assignment header region** (`## Assignment`
275
+ + `**Execute as**` / `**Delegation**` / `**Task category**` / `**Working
276
+ branch**` / `**Branch policy**` fields — engine `composeDispatchGate`, same
277
+ violation codes as opencode/omp/CLI).
278
+
279
+ Envelope-first discipline applies: put the header fields at the top of the
280
+ Assignment body — the dsh dispatch gate reads only the header region, so
281
+ body-quoted examples never leak into header fields.
282
+
283
+ ## Gates and enforcement
284
+
285
+ The plugin wires the engine gates on dsh seams (all in-process):
286
+
287
+ | Gate | Seam | Hard-mode channel |
288
+ |------|------|-------------------|
289
+ | Status gate | `fs/write-intent` + `fs/edit-intent` on `{HARNESS_DIR}/status.json` | repair-escape advisory (never vetoes the repairing write) |
290
+ | Dispatch gate | `tools/pre-execute` on the `subagent` tool | `PreToolDecision { kind: 'deny', reason }` |
291
+ | Lease gate | inside the dispatch gate (SDD / InProgress dispatches) | deny under hard |
292
+ | Worktree L1/L2 | inside the dispatch gate | deny under hard |
293
+ | Skill-authoring lint | `fs/write-intent` on `SKILL.md` under mounted roots | repair-escape advisory |
294
+ | Seam lints | `fs/write-intent` on DESIGN.md / audit / compound / roles | repair-escape advisory |
295
+
296
+ **Enforcement semantics**: warn-only by default. `Enforcement: hard` —
297
+ resolved from the plugin Config (`enforcement: hard`), the Assignment header
298
+ flag, the repo `.mstarc` `[config] enforcement`, or the iteration compass
299
+ frontmatter — escalates dispatch violations to
300
+ a real veto; status/skill-lint writes are never hard-vetoed because the intent
301
+ waterfall is content-blind (an already-invalid document is allowed as a
302
+ repair escape). Config / `.mstarc` `soft` are the local rollbacks. Hard gates
303
+ are never a global default.
304
+
305
+ Every composed agent step carries ONE **`<mstar_engine_status>`** catalog
306
+ message: the watermark (unified mstar version, harness dir, enforcement),
307
+ the iteration phase-gate section when a steering compass resolved, and the
308
+ workspace-state digest section (plan registry, open residuals,
309
+ branch/policy anchors, active leases, knowledge digest, compass direction)
310
+ when the workspace has a `status.json`. The row is digest-gated (once per
311
+ turn, re-injected only when it changed) over one per-workspace TTL-cached
312
+ build (`catalogTtlMs`, default 60 s).
313
+
314
+ ## Agent-flow ledger
315
+
316
+ The plugin records ACTUAL subagent dispatch and real-completion settle events —
317
+ the evidence of what really happened, distinct from the client-side expected
318
+ role flow. The workflow panel's agent-execution zone (the stage/entity
319
+ projection — plan `20260810-panel-agent-flow-zone`) and the 事件记录 tab's
320
+ `EventLogPage` log page (plan `20260811-panel-event-log`) are pure consumers
321
+ of this evidence.
322
+
323
+ - **Recording point (one core)**: `DshHostAdapter.dispatchGate` is the SINGLE
324
+ record path behind both dispatch surfaces — the `tools/pre-execute` listener
325
+ (exec-bound; the lease gate joins here) and the host `beforeDispatch` hook
326
+ (exec-less). Every Assignment-shaped dispatch that reaches the gate records,
327
+ including hard denies (verdict derived: ok / advisory / denied); the shape
328
+ guard lives at the shared core, so non-Assignment text stays silent on BOTH
329
+ surfaces (the listener's own guard plus the core's guard for the exec-less
330
+ hook path — no phantom records). Recording is advisory (try/catch-contained,
331
+ logs only `mstar/agent-flow`) — a failing ledger never blocks dispatch.
332
+ Known tradeoff: the same logical dispatch crossing BOTH surfaces (a host
333
+ `beforeDispatch` followed by the identical text as an in-loop subagent tool
334
+ call) records two dispatch events — the surfaces are mutually exclusive by
335
+ design; the double record is documented, not deduplicated.
336
+ - **File / bounds**: events append to `{HARNESS_DIR}/agent-flow.jsonl` (JSON
337
+ Lines, one event per line; harness dirs are gitignored by convention). The
338
+ ledger assumes ONE dsh process writes each harness dir (single-writer):
339
+ concurrent dsh sessions on the same repo can lose events (the append itself
340
+ is near-atomic O_APPEND, but truncation is a read-modify-write) — the loss
341
+ only under-reports actual flow in the panel, never a gate impact. After each
342
+ append the file truncates to the most recent **500** events; truncation is
343
+ size-gated (≈500 lines' typical size — small files stay append-only) and
344
+ performed as an atomic temp-file rename. The catalog read returns the
345
+ latest-first view with a default window of **50** and a role × outcome
346
+ summary. A MISSING file reads as the empty view ("no actual dispatches yet"
347
+ — recording starts at plan merge); an unreadable file is absent evidence;
348
+ malformed lines are skipped, never fatal.
349
+ - **Settle = real completion pairing, never faked** (plan
350
+ `20260811-panel-f4-timeliness`): `tools/post-execute` IS part of the
351
+ verified dsh-tools registry surface (`runPostExecute` dispatches the
352
+ waterfall for every tool call — verified against the upstream source and
353
+ pinned by a real-call probe). The pairing listener matches dispatch TOOLS
354
+ (Config `dispatchTools`, default `['subagent']`), looks up the exec's
355
+ `callId` in the apply-scoped pairing store, and branches on the verified
356
+ result shapes:
357
+ - `{ kind: 'background', taskId }` → store `taskId → dispatchRef`; the REAL
358
+ settle arrives via `ctx.tasks.onTaskDone` (terminal mapping
359
+ completed → ok / killed → denied / failed → error, `durationMs` when
360
+ available), wired through `ctx.inject(['tasks'])`.
361
+ - `{ kind: 'continuable', subagentId }` → no terminal signal this round →
362
+ no settle (documented limit — the child owns its turns).
363
+ - any other successful value (foreground included) → settle `ok`; a failed
364
+ result (`isError`) → settle `error`.
365
+ Pairing is apply-scoped (in-memory `callId → dispatchRef` /
366
+ `taskId → dispatchRef` maps created in the entry `apply`; an HMR restart
367
+ resets them, and completions outside the window stay unpaired). Every
368
+ PAIRED settle carries the paired dispatch's identity (`role`/`planId`/
369
+ `taskId` — same field names + semantics as the dispatch event; the registry
370
+ background-task id is never written as `taskId`, `taskRef` is reserved for
371
+ it). Unpaired payloads (non-dispatch tools, calls outside the pairing
372
+ window) record NOTHING — the ledger stays dispatch-only, never a
373
+ fabricated settle.
374
+ - **Catalog**: `state.agentFlow` carries the ledger view (`events` ≤ 50,
375
+ latest-first, + `summary`); the model-facing `<mstar_engine_status>` text
376
+ renders ONE compact `agent flow: …` line only when events > 0 (role totals
377
+ top-5 + latest dispatch with HH:MM — the event detail lives in the
378
+ structured source, never the model text). A ledger record (dispatch/settle)
379
+ invalidates the affected workspace's TTL cache entry IMMEDIATELY
380
+ (apply-scoped `harnessDir → cache key` reverse map + invalidation closure,
381
+ plan `20260811-panel-f4-timeliness`) → the next pre-step rebuilds and (digest
382
+ text change) re-injects the row — the 60 s TTL no longer bounds
383
+ ledger-change latency; it still bounds non-ledger staleness.
384
+ - **Maintainer view**: change the ledger shape (event schema, bounds, settle
385
+ seam) and update the projections together — `gates/agent-flow.ts` (record /
386
+ read / settle listener), `gates/catalog.ts` (agent-flow line + `source`
387
+ view) and `client/panel/graph/project-graph.ts` (the ZoneView flow/agents
388
+ projection) — the panel renders ONLY what the evidence shows.
389
+
390
+ ## PM dispatch
391
+
392
+ Harness **dispatch** on dsh = a `subagent` tool call with the full Assignment
393
+ text (role binding in the prompt — `Execute as` / `Act as` + skill load;
394
+ there is no separate `agent` field, the Assignment body IS the prompt). **N
395
+ assignees = N `subagent` calls = N independent delegations** (dispatch-gate
396
+ 口径: one assistant message carries all N invokes — the gate counts each
397
+ dispatched Assignment). Paste-only Assignment without an invoke is **not**
398
+ dispatch.
399
+
400
+ **Execution: concurrent dispatch REQUIRES background mode.** The `subagent`
401
+ tool does **not** declare `isConcurrencySafe` → fail-closed `exclusive`
402
+ classification, so same-message invokes are issued one-at-a-time (the next
403
+ invoke starts only after the previous one settles). Foreground invokes (no
404
+ `run_in_background`) settle only when the child completes → end-to-end serial
405
+ (wall ≈ N× single seat). **Therefore any N≥2 dispatch that needs parallel
406
+ execution MUST set `run_in_background: true` on EVERY invoke of the batch**:
407
+ background invokes settle at task start (task id returned) and their child
408
+ agents run CONCURRENTLY in background tasks (wall ≈ single seat, not N×).
409
+ Foreground N≥2 invokes run SERIALLY and do NOT satisfy an N-parallel
410
+ requirement — emitting them as "the dispatch" is dispatch-incomplete; if the N
411
+ background invokes cannot be emitted in one message → **`Blocked`** (same as
412
+ paste-only). **Future path (upstream suggestion, not editable from this
413
+ repo):** dsh-private declares `isConcurrencySafe: () => true` on the
414
+ tool-subagent so same-message foreground invokes can also run concurrently —
415
+ needs dsh maintainer evaluation (roadmap §7e).
416
+
417
+ **Leaf completion discipline — closing message, not the report tool (PM
418
+ 2026-08-12).** Leaf subagents hand back their Completion Report in the
419
+ **final (closing) message** — do NOT call the `report` tool to deliver it.
420
+ The dsh tool-subagent-report default `reportDelivery: quiet` routes a report
421
+ through `parent.inject` into the parent's **next-step queue**; when the
422
+ parent's turn has ended (no step boundary follows), the report strands in
423
+ the "queued messages" dock instead of reaching the parent (observed on dsh).
424
+ The closing message is the guaranteed delivery channel; reserve `report` for
425
+ MID-turn findings that change what the parent should do next.
426
+
427
+ ### QC default
428
+
429
+ - **`Execution mode: sdd`**: **N=3** `subagent` dispatches — one per QC seat
430
+ (`qc-specialist`, `qc-specialist-2`, `qc-specialist-3`), each body **Act as**
431
+ the respective QC role + QC skill load. **MUST dispatch all three with
432
+ `run_in_background: true` in one message** → the seats run CONCURRENTLY
433
+ (background children; wall ≈ single seat); foreground (no
434
+ `run_in_background`) runs serially (wall ≈ 3× single seat) and does NOT
435
+ count as parallel tri. Cannot emit required **N** → **`Blocked`**.
436
+ - **`inline`**: **N=1**.
437
+
438
+ ### SDD implement (serial)
439
+
440
+ - **`Execution mode: sdd`**: one implementer `subagent` dispatch per task id;
441
+ task reviewer = a separate dispatch (SDD review role) — no sticky resume
442
+ unless the host's continuable-subagent id is available and recorded.
443
+
444
+ ## Commands and skills paths
445
+
446
+ | Surface | Path / invocation |
447
+ |---------|-------------------|
448
+ | Plugin skills | Skill **name** via the mstar skill-local provider (`ctx.skills`); canonical `$DSH_BUNDLED_SKILL_DIR/<name>` |
449
+ | Plugin commands | `/iteration-start`, `/iteration-drive`, `/iteration-loop`, `/codebase-audit` (registered from `harness-commands/`) |
450
+ | Session entry | `pm` skill → `mstar-harness-core` via pm **Read next** |
451
+
452
+ ## Command delivery (dsh host, updated 2026-08-11)
453
+
454
+ The dsh web client resolves slash commands against a client-side lexicon driven by the registry's `input.hint`. Every mstar command declares a frontmatter `input` hint (see `commands/*.md`), so the client **claims** it on menu pick: `/name ` is inserted into the composer with the command highlight and the hint as ghost text (e.g. `/iteration-start [direction] [pause]`), the user types follow-up args (or just presses Enter for arg-less commands), and the line submits only on Enter. The handler steers the command body into the receiving agent as a USER-source message, appending the typed args as a `## User input` section when present.
455
+
456
+ **Degradation fallback:** when a command is NOT claimed client-side (lexicon fetch timing, args parsing, manual typing), the model receives the **bare text** (`/iteration-loop <方向> …`) with NO command body — unlike opencode/cursor/omp where the body always arrives.
457
+
458
+ **Rule:** when a user message begins with a registered mstar command name (`/iteration-start`, `/iteration-drive`, `/iteration-loop`, `/codebase-audit`) but carries no command body, treat it as that command invoked with the user text as its argument — execute the command's OWN semantics from the repo `commands/<name>.md` (or the mirrored `harness-commands/`): in particular **`/iteration-loop` = autonomous (code-first direction lock, NO grill-me questions)**, `/iteration-drive` = Phase 2–5 on the active iteration, `/iteration-start` = interactive (grill-me). Do not silently substitute the interactive start flow for `/iteration-loop`. Also do not re-ask what the command already specifies (e.g. scale auto → M default, branch policy continuity).
459
+
460
+ ## Harness dir and environment
461
+
462
+ - `{HARNESS_DIR}` resolves via the engine `resolveHarnessDir` (`.mstarc`
463
+ `[config] harness_dir` → `.mstar/` → `.agents/` → `.plans/`/`plans/`),
464
+ with the plugin Config `harnessDir`
465
+ override winning. The probe starts from the SESSION workspace root (the
466
+ session cwd — **never the dsh launch/process cwd**) and **STOPS there** — it
467
+ never walks above the session workspace, so the watermark and gates follow
468
+ the workspace the session actually works in. Repos using a
469
+ non-standard harness root MUST set Config `harnessDir`
470
+ (absolute path) or declare it in a repo `.mstarc` — the gates are inert
471
+ without a resolvable harness dir.
472
+ - The dispatch gate needs the dispatching agent's own role for the
473
+ anti-recursion precheck: declare it via Config **`dispatchBinding`** (dsh
474
+ exposes no per-agent role on the tool-execution context). Under hard
475
+ enforcement with no binding, the plugin logs the absence AND every
476
+ Assignment-shaped dispatch fails closed (`dispatch.anti-recursion.
477
+ empty-binding` → deny) until the binding is set.
478
+
479
+ ## Files, shell, and approvals
480
+
481
+ - Prefer host search/edit tools over shell find/sed when available.
482
+ - Respect dsh approval prompts for destructive operations.
483
+ - Do not edit `$DSH_HOME` credentials or user secrets without explicit consent.
484
+
485
+ ## Git and final evidence
486
+
487
+ - Git work follows `mstar-branch-worktree` and Assignment **Working branch** /
488
+ **Branch policy**; the worktree L1/L2 gates run in-process.
489
+ - Completion reports cite concrete commands, artifacts, and commit lines when
490
+ required.
491
+
492
+ ## Gotchas
493
+
494
+ - Do not confuse dsh **`subagent`** with opencode **`task_subagent`** or Cursor
495
+ **`subagent_type`** — the detect rows differ by tool shape.
496
+ - A renamed `subagent` tool (Config `toolName`) silently disables the dispatch
497
+ gate AND host detection unless `dispatchTools` declares the new name (the
498
+ plugin warns under hard enforcement).
499
+ - Role binding is prompt-only on dsh: always include **`Execute as`** +
500
+ **`Act as`** + skill load in the Assignment body — there is no separate
501
+ `agent` field.
502
+ - Session plan UI / todos are not durable SSOT unless mirrored to
503
+ `{HARNESS_DIR}`.
504
+ - The plugin's bundled skills/commands mirror is synced by `bundle-assets`
505
+ (gitignored, package-local) — an explicit `bundledSkillDir` /
506
+ `skillRoots` Config override wins when a deployment wants a different
507
+ mirror.
@@ -0,0 +1,36 @@
1
+ # Kimi Plan Mode × Harness Dual-Write Bridge
2
+
3
+ > **Load order**: Read **`mstar-harness-core`** first, then **`mstar-host`** and **`references/kimi.md`**, then **`references/_shared/plan-mode-bridge-core.md`** (shared contract) + this bridge. When Plan mode is active, also read **`mstar-conventions`** and **`mstar-artifacts`**. Path symbols `{HARNESS_DIR}`, `{PLAN_DIR}`, `{SPECS_DIR}` are defined in `mstar-conventions`. On conflict, **`mstar-harness-core`** wins.
4
+
5
+ **Shared contract** (dual-write SSOT rule + priority, bootstrap init, Build resume contract, bootstrap todos, implement done-gate, Phase 1 gate, shared anti-patterns) → **`references/_shared/plan-mode-bridge-core.md`**. This bridge covers Kimi plan-UX specifics only.
6
+
7
+ Kimi **Plan mode** (`EnterPlanMode` / `ExitPlanMode`, `/plan`, or `Shift-Tab`) uses a session plan file and read-only exploration for design; the session plan file is a **session UX mirror** — **NEVER** cite only a Kimi plan file path in Assignment **Plan Path**, **Context Loaded**, or Completion Report when `{PLAN_DIR}/<plan-id>-<name>.md` should exist.
8
+
9
+ ## When this applies
10
+
11
+ - Kimi **Plan mode** is active (`EnterPlanMode` succeeded, `/plan on`, or `kimi --plan`).
12
+ - Morning Star plugin is installed (`.kimi-plugin/plugin.json` skills loaded) or **`/skill:pm`** / **`pm` skill** is in use.
13
+
14
+ ## Plan mode workflow (dual-write)
15
+
16
+ | Step | Kimi session | Harness SSOT |
17
+ |------|--------------|--------------|
18
+ | Enter | `EnterPlanMode` or `/plan on` — explore read-only | Ensure `{HARNESS_DIR}` exists; register the root `workflows[]` entry + snapshot plan row when known |
19
+ | Design | Edit Kimi plan file with `Write` / `Edit` (when Plan mode allows writes) | Mirror main plan to `{PLAN_DIR}/<plan-id>-<name>.md` with task checkboxes |
20
+ | Clarify | `AskUserQuestion` for blocking ambiguity only | Record decisions in plan / spec when durable |
21
+ | Exit | `ExitPlanMode` — user approves plan to implement | SSOT plan locked; snapshot plan row updated |
22
+ | Implement | Agent mode resumes | Per-task commits, Working branch, dispatch per `mstar-dispatch-gates` |
23
+
24
+ `TodoList` and Kimi UI todos are **session progress only** — sync meaningful state to SSOT plan checkboxes and the workflow snapshot (`{WORKFLOW_DIR}/<id>/snapshot.json` → `plans[]`) when coordination requires it.
25
+
26
+ ## ExitPlanMode gate
27
+
28
+ Host plan approval (`ExitPlanMode`) is **not** Morning Star **Done** (gate → core). Implementation still follows phase gates, per-task commits, QC, and QA per the SSOT plan.
29
+
30
+ ## `mstar-iteration` Phase 1
31
+
32
+ When iteration Phase 1 runs in Plan mode, the shared gate (single plan session, feedback-driven in-place edits, no Review & Edit / commit / integration branch until approval) → core. After approval: reload `mstar-harness-core` + **`kimi.md`**; resume as `project-manager` orchestration.
33
+
34
+ ## Enforcement
35
+
36
+ Conflict with harness invariants → **`mstar-harness-core`** wins. Full Cursor CreatePlan bridge detail lives in `cursor-plan-mode-bridge.md` when hosts differ; Kimi uses this lighter Enter/Exit bridge only.