@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.
- package/README.md +63 -0
- package/agents/architect.md +35 -0
- package/agents/code-reviewer.md +90 -0
- package/agents/frontend-dev.md +33 -0
- package/agents/fullstack-dev-2.md +33 -0
- package/agents/fullstack-dev.md +33 -0
- package/agents/ops-engineer.md +33 -0
- package/agents/product-manager.md +35 -0
- package/agents/project-manager.md +32 -0
- package/agents/prompt-engineer.md +33 -0
- package/agents/qa-engineer.md +35 -0
- package/agents/qc-specialist-2.md +62 -0
- package/agents/qc-specialist-3.md +62 -0
- package/agents/qc-specialist.md +62 -0
- package/agents/writing-specialist.md +35 -0
- package/assets/icon.png +0 -0
- package/assets/logo-dark.png +0 -0
- package/assets/logo-dark.svg +6 -0
- package/assets/logo.png +0 -0
- package/assets/logo.svg +6 -0
- package/commands/amazing-pr-review.md +31 -0
- package/commands/codebase-audit.md +40 -0
- package/commands/iteration-drive.md +48 -0
- package/commands/iteration-loop.md +99 -0
- package/commands/iteration-start.md +122 -0
- package/dist/hooks/pre/mstar-gates.js +6579 -0
- package/dist/tools/mstar_dispatch_validate/index.js +6291 -0
- package/dist/tools/mstar_iteration_gate/index.js +6321 -0
- package/dist/tools/mstar_lease_verify/index.js +6343 -0
- package/dist/tools/mstar_path_resolve/index.js +6297 -0
- package/dist/tools/mstar_status_validate/index.js +6402 -0
- package/dist/tools/mstar_worktree_check/index.js +6343 -0
- package/harness-agents/architect.md +35 -0
- package/harness-agents/code-reviewer.md +90 -0
- package/harness-agents/frontend-dev.md +33 -0
- package/harness-agents/fullstack-dev-2.md +33 -0
- package/harness-agents/fullstack-dev.md +33 -0
- package/harness-agents/ops-engineer.md +33 -0
- package/harness-agents/product-manager.md +35 -0
- package/harness-agents/project-manager.md +32 -0
- package/harness-agents/prompt-engineer.md +33 -0
- package/harness-agents/qa-engineer.md +35 -0
- package/harness-agents/qc-specialist-2.md +62 -0
- package/harness-agents/qc-specialist-3.md +62 -0
- package/harness-agents/qc-specialist.md +62 -0
- package/harness-agents/writing-specialist.md +35 -0
- package/harness-commands/amazing-pr-review.md +31 -0
- package/harness-commands/codebase-audit.md +40 -0
- package/harness-commands/iteration-drive.md +48 -0
- package/harness-commands/iteration-loop.md +99 -0
- package/harness-commands/iteration-start.md +122 -0
- package/harness-skills/grill-me/SKILL.md +10 -0
- package/harness-skills/mstar-artifacts/SKILL.md +66 -0
- package/harness-skills/mstar-artifacts/references/knowledge-and-designs.md +110 -0
- package/harness-skills/mstar-artifacts/references/plan-files-and-reports.md +98 -0
- package/harness-skills/mstar-artifacts/references/plan-quality-bar.md +99 -0
- package/harness-skills/mstar-artifacts/references/status-and-residuals.md +472 -0
- package/harness-skills/mstar-artifacts/templates/README.md +7 -0
- package/harness-skills/mstar-artifacts/templates/plan.main.md +54 -0
- package/harness-skills/mstar-artifacts/templates/status.empty.json +5 -0
- package/harness-skills/mstar-audit/SKILL.md +151 -0
- package/harness-skills/mstar-audit/references/audit-playbook.md +175 -0
- package/harness-skills/mstar-audit/references/codebase-audit.md +103 -0
- package/harness-skills/mstar-audit/references/finding-format.md +69 -0
- package/harness-skills/mstar-audit/references/pr-review-seat-evidence.md +28 -0
- package/harness-skills/mstar-audit/references/pr-review.md +475 -0
- package/harness-skills/mstar-audit/references/security-review.md +219 -0
- package/harness-skills/mstar-branch-worktree/SKILL.md +236 -0
- package/harness-skills/mstar-branch-worktree/references/parallel-writable-pre-dispatch.md +68 -0
- package/harness-skills/mstar-coding-behavior/SKILL.md +167 -0
- package/harness-skills/mstar-compound/SKILL.md +109 -0
- package/harness-skills/mstar-compound/assets/resolution-template.md +94 -0
- package/harness-skills/mstar-compound/references/category-mapping.md +37 -0
- package/harness-skills/mstar-compound/references/compound-workflow.md +171 -0
- package/harness-skills/mstar-compound/references/concepts-vocabulary.md +44 -0
- package/harness-skills/mstar-compound/references/schema.yaml +122 -0
- package/harness-skills/mstar-compound-refresh/SKILL.md +154 -0
- package/harness-skills/mstar-compound-refresh/references/project-knowledge-bootstrap.md +164 -0
- package/harness-skills/mstar-conventions/SKILL.md +215 -0
- package/harness-skills/mstar-conventions/references/artifact-storage-paths.md +53 -0
- package/harness-skills/mstar-conventions/references/effort-estimation.md +38 -0
- package/harness-skills/mstar-conventions/references/harness-bootstrap-and-agents-layering.md +96 -0
- package/harness-skills/mstar-design-md/SKILL.md +142 -0
- package/harness-skills/mstar-design-md/references/completeness-checklist.md +181 -0
- package/harness-skills/mstar-design-md/references/design-md-spec.md +508 -0
- package/harness-skills/mstar-design-md/references/vercel-example.md +200 -0
- package/harness-skills/mstar-design-md/templates/DESIGN.dark.md.template +354 -0
- package/harness-skills/mstar-design-md/templates/DESIGN.md.template +474 -0
- package/harness-skills/mstar-dispatch-gates/SKILL.md +134 -0
- package/harness-skills/mstar-dispatch-gates/references/leaf-executor-checklist.md +23 -0
- package/harness-skills/mstar-engine-legacy/SKILL.md +53 -0
- package/harness-skills/mstar-engine-legacy/references/anti-recursion-checklists.md +58 -0
- package/harness-skills/mstar-engine-legacy/references/engine-check-boilerplate.md +26 -0
- package/harness-skills/mstar-engine-legacy/references/lease-protocol.md +92 -0
- package/harness-skills/mstar-engine-legacy/references/qc-seat-n-restatements.md +57 -0
- package/harness-skills/mstar-engine-legacy/references/status-field-history.md +186 -0
- package/harness-skills/mstar-harness-core/SKILL.md +196 -0
- package/harness-skills/mstar-host/SKILL.md +96 -0
- package/harness-skills/mstar-host/references/_shared/host-role-binding-core.md +51 -0
- package/harness-skills/mstar-host/references/_shared/plan-mode-bridge-core.md +91 -0
- package/harness-skills/mstar-host/references/codex.md +61 -0
- package/harness-skills/mstar-host/references/cursor-plan-mode-bridge.md +170 -0
- package/harness-skills/mstar-host/references/cursor.md +183 -0
- package/harness-skills/mstar-host/references/dsh.md +507 -0
- package/harness-skills/mstar-host/references/kimi-plan-mode-bridge.md +36 -0
- package/harness-skills/mstar-host/references/kimi.md +136 -0
- package/harness-skills/mstar-host/references/omp-plan-mode-bridge.md +32 -0
- package/harness-skills/mstar-host/references/omp.md +245 -0
- package/harness-skills/mstar-host/references/opencode.md +76 -0
- package/harness-skills/mstar-host/references/parallel-dispatch.md +68 -0
- package/harness-skills/mstar-host/references/zcode-plan-mode-bridge.md +36 -0
- package/harness-skills/mstar-host/references/zcode.md +129 -0
- package/harness-skills/mstar-iteration/SKILL.md +408 -0
- package/harness-skills/mstar-iteration/references/autonomous-direction-lock.md +90 -0
- package/harness-skills/mstar-iteration/references/command-shared-invariants.md +62 -0
- package/harness-skills/mstar-iteration/references/iteration-artifact-boundaries.md +103 -0
- package/harness-skills/mstar-iteration/references/iteration-compass-template.md +142 -0
- package/harness-skills/mstar-iteration/references/iteration-corpus-hygiene.md +45 -0
- package/harness-skills/mstar-iteration/references/iteration-workspace-readme-template.md +27 -0
- package/harness-skills/mstar-iteration/references/phase-2-worktree-lease.md +205 -0
- package/harness-skills/mstar-iteration/references/phase-3-iteration-close.md +105 -0
- package/harness-skills/mstar-iteration/references/phase-4-5-pr-delivery.md +85 -0
- package/harness-skills/mstar-iteration/references/phase5-helper-discovery.md +24 -0
- package/harness-skills/mstar-phase-gates/SKILL.md +118 -0
- package/harness-skills/mstar-project-governance/SKILL.md +119 -0
- package/harness-skills/mstar-review-qc/SKILL.md +76 -0
- package/harness-skills/mstar-review-qc/references/review-responsibility-boundaries.md +54 -0
- package/harness-skills/mstar-roles/SKILL.md +103 -0
- package/harness-skills/mstar-roles/references/_shared/leaf-executor-core.md +65 -0
- package/harness-skills/mstar-roles/references/architect.md +109 -0
- package/harness-skills/mstar-roles/references/code-reviewer.md +118 -0
- package/harness-skills/mstar-roles/references/frontend-dev.md +70 -0
- package/harness-skills/mstar-roles/references/fullstack-dev-shared.md +89 -0
- package/harness-skills/mstar-roles/references/ops-engineer.md +72 -0
- package/harness-skills/mstar-roles/references/product-manager.md +102 -0
- package/harness-skills/mstar-roles/references/project-manager/dispatch-and-assignment.md +200 -0
- package/harness-skills/mstar-roles/references/project-manager/plan-management.md +59 -0
- package/harness-skills/mstar-roles/references/project-manager/qa-trigger-matrix.md +56 -0
- package/harness-skills/mstar-roles/references/project-manager/qc-and-residuals.md +99 -0
- package/harness-skills/mstar-roles/references/project-manager/routing-and-dev-allocation.md +99 -0
- package/harness-skills/mstar-roles/references/project-manager.md +310 -0
- package/harness-skills/mstar-roles/references/prompt-engineer.md +65 -0
- package/harness-skills/mstar-roles/references/qa-engineer/acceptance-gate.md +62 -0
- package/harness-skills/mstar-roles/references/qa-engineer.md +71 -0
- package/harness-skills/mstar-roles/references/qc-specialist/deep-review-lenses.md +104 -0
- package/harness-skills/mstar-roles/references/qc-specialist/report-template.md +88 -0
- package/harness-skills/mstar-roles/references/qc-specialist/reviewer-checklist.md +44 -0
- package/harness-skills/mstar-roles/references/qc-specialist/reviewer-workflow.md +57 -0
- package/harness-skills/mstar-roles/references/qc-specialist-shared.md +120 -0
- package/harness-skills/mstar-roles/references/writing-specialist.md +88 -0
- package/harness-skills/mstar-sdd/SKILL.md +137 -0
- package/harness-skills/mstar-sdd/references/file-handoffs.md +85 -0
- package/harness-skills/mstar-sdd/references/implementer-continuation-prompt.md +44 -0
- package/harness-skills/mstar-sdd/references/implementer-prompt.md +56 -0
- package/harness-skills/mstar-sdd/references/sticky-implementer-session.md +103 -0
- package/harness-skills/mstar-sdd/references/task-reviewer-prompt.md +53 -0
- package/harness-skills/mstar-skill-authoring/SKILL.md +182 -0
- package/harness-skills/mstar-skill-authoring/references/regression-fixation.md +46 -0
- package/harness-skills/mstar-skill-authoring/references/skillsbench-authoring.md +154 -0
- package/harness-skills/mstar-strategy/SKILL.md +114 -0
- package/harness-skills/pm/SKILL.md +40 -0
- package/hooks/pre/mstar-gates.js +6579 -0
- package/package.json +45 -0
- package/plugin.json +49 -0
- package/skills/grill-me/SKILL.md +10 -0
- package/skills/mstar-artifacts/SKILL.md +66 -0
- package/skills/mstar-artifacts/references/knowledge-and-designs.md +110 -0
- package/skills/mstar-artifacts/references/plan-files-and-reports.md +98 -0
- package/skills/mstar-artifacts/references/plan-quality-bar.md +99 -0
- package/skills/mstar-artifacts/references/status-and-residuals.md +472 -0
- package/skills/mstar-artifacts/templates/README.md +7 -0
- package/skills/mstar-artifacts/templates/plan.main.md +54 -0
- package/skills/mstar-artifacts/templates/status.empty.json +5 -0
- package/skills/mstar-audit/SKILL.md +151 -0
- package/skills/mstar-audit/references/audit-playbook.md +175 -0
- package/skills/mstar-audit/references/codebase-audit.md +103 -0
- package/skills/mstar-audit/references/finding-format.md +69 -0
- package/skills/mstar-audit/references/pr-review-seat-evidence.md +28 -0
- package/skills/mstar-audit/references/pr-review.md +475 -0
- package/skills/mstar-audit/references/security-review.md +219 -0
- package/skills/mstar-branch-worktree/SKILL.md +236 -0
- package/skills/mstar-branch-worktree/references/parallel-writable-pre-dispatch.md +68 -0
- package/skills/mstar-coding-behavior/SKILL.md +167 -0
- package/skills/mstar-compound/SKILL.md +109 -0
- package/skills/mstar-compound/assets/resolution-template.md +94 -0
- package/skills/mstar-compound/references/category-mapping.md +37 -0
- package/skills/mstar-compound/references/compound-workflow.md +171 -0
- package/skills/mstar-compound/references/concepts-vocabulary.md +44 -0
- package/skills/mstar-compound/references/schema.yaml +122 -0
- package/skills/mstar-compound-refresh/SKILL.md +154 -0
- package/skills/mstar-compound-refresh/references/project-knowledge-bootstrap.md +164 -0
- package/skills/mstar-conventions/SKILL.md +215 -0
- package/skills/mstar-conventions/references/artifact-storage-paths.md +53 -0
- package/skills/mstar-conventions/references/effort-estimation.md +38 -0
- package/skills/mstar-conventions/references/harness-bootstrap-and-agents-layering.md +96 -0
- package/skills/mstar-design-md/SKILL.md +142 -0
- package/skills/mstar-design-md/references/completeness-checklist.md +181 -0
- package/skills/mstar-design-md/references/design-md-spec.md +508 -0
- package/skills/mstar-design-md/references/vercel-example.md +200 -0
- package/skills/mstar-design-md/templates/DESIGN.dark.md.template +354 -0
- package/skills/mstar-design-md/templates/DESIGN.md.template +474 -0
- package/skills/mstar-dispatch-gates/SKILL.md +134 -0
- package/skills/mstar-dispatch-gates/references/leaf-executor-checklist.md +23 -0
- package/skills/mstar-engine-legacy/SKILL.md +53 -0
- package/skills/mstar-engine-legacy/references/anti-recursion-checklists.md +58 -0
- package/skills/mstar-engine-legacy/references/engine-check-boilerplate.md +26 -0
- package/skills/mstar-engine-legacy/references/lease-protocol.md +92 -0
- package/skills/mstar-engine-legacy/references/qc-seat-n-restatements.md +57 -0
- package/skills/mstar-engine-legacy/references/status-field-history.md +186 -0
- package/skills/mstar-harness-core/SKILL.md +196 -0
- package/skills/mstar-host/SKILL.md +96 -0
- package/skills/mstar-host/references/_shared/host-role-binding-core.md +51 -0
- package/skills/mstar-host/references/_shared/plan-mode-bridge-core.md +91 -0
- package/skills/mstar-host/references/codex.md +61 -0
- package/skills/mstar-host/references/cursor-plan-mode-bridge.md +170 -0
- package/skills/mstar-host/references/cursor.md +183 -0
- package/skills/mstar-host/references/dsh.md +507 -0
- package/skills/mstar-host/references/kimi-plan-mode-bridge.md +36 -0
- package/skills/mstar-host/references/kimi.md +136 -0
- package/skills/mstar-host/references/omp-plan-mode-bridge.md +32 -0
- package/skills/mstar-host/references/omp.md +245 -0
- package/skills/mstar-host/references/opencode.md +76 -0
- package/skills/mstar-host/references/parallel-dispatch.md +68 -0
- package/skills/mstar-host/references/zcode-plan-mode-bridge.md +36 -0
- package/skills/mstar-host/references/zcode.md +129 -0
- package/skills/mstar-iteration/SKILL.md +408 -0
- package/skills/mstar-iteration/references/autonomous-direction-lock.md +90 -0
- package/skills/mstar-iteration/references/command-shared-invariants.md +62 -0
- package/skills/mstar-iteration/references/iteration-artifact-boundaries.md +103 -0
- package/skills/mstar-iteration/references/iteration-compass-template.md +142 -0
- package/skills/mstar-iteration/references/iteration-corpus-hygiene.md +45 -0
- package/skills/mstar-iteration/references/iteration-workspace-readme-template.md +27 -0
- package/skills/mstar-iteration/references/phase-2-worktree-lease.md +205 -0
- package/skills/mstar-iteration/references/phase-3-iteration-close.md +105 -0
- package/skills/mstar-iteration/references/phase-4-5-pr-delivery.md +85 -0
- package/skills/mstar-iteration/references/phase5-helper-discovery.md +24 -0
- package/skills/mstar-phase-gates/SKILL.md +118 -0
- package/skills/mstar-project-governance/SKILL.md +119 -0
- package/skills/mstar-review-qc/SKILL.md +76 -0
- package/skills/mstar-review-qc/references/review-responsibility-boundaries.md +54 -0
- package/skills/mstar-roles/SKILL.md +103 -0
- package/skills/mstar-roles/references/_shared/leaf-executor-core.md +65 -0
- package/skills/mstar-roles/references/architect.md +109 -0
- package/skills/mstar-roles/references/code-reviewer.md +118 -0
- package/skills/mstar-roles/references/frontend-dev.md +70 -0
- package/skills/mstar-roles/references/fullstack-dev-shared.md +89 -0
- package/skills/mstar-roles/references/ops-engineer.md +72 -0
- package/skills/mstar-roles/references/product-manager.md +102 -0
- package/skills/mstar-roles/references/project-manager/dispatch-and-assignment.md +200 -0
- package/skills/mstar-roles/references/project-manager/plan-management.md +59 -0
- package/skills/mstar-roles/references/project-manager/qa-trigger-matrix.md +56 -0
- package/skills/mstar-roles/references/project-manager/qc-and-residuals.md +99 -0
- package/skills/mstar-roles/references/project-manager/routing-and-dev-allocation.md +99 -0
- package/skills/mstar-roles/references/project-manager.md +310 -0
- package/skills/mstar-roles/references/prompt-engineer.md +65 -0
- package/skills/mstar-roles/references/qa-engineer/acceptance-gate.md +62 -0
- package/skills/mstar-roles/references/qa-engineer.md +71 -0
- package/skills/mstar-roles/references/qc-specialist/deep-review-lenses.md +104 -0
- package/skills/mstar-roles/references/qc-specialist/report-template.md +88 -0
- package/skills/mstar-roles/references/qc-specialist/reviewer-checklist.md +44 -0
- package/skills/mstar-roles/references/qc-specialist/reviewer-workflow.md +57 -0
- package/skills/mstar-roles/references/qc-specialist-shared.md +120 -0
- package/skills/mstar-roles/references/writing-specialist.md +88 -0
- package/skills/mstar-sdd/SKILL.md +137 -0
- package/skills/mstar-sdd/references/file-handoffs.md +85 -0
- package/skills/mstar-sdd/references/implementer-continuation-prompt.md +44 -0
- package/skills/mstar-sdd/references/implementer-prompt.md +56 -0
- package/skills/mstar-sdd/references/sticky-implementer-session.md +103 -0
- package/skills/mstar-sdd/references/task-reviewer-prompt.md +53 -0
- package/skills/mstar-skill-authoring/SKILL.md +182 -0
- package/skills/mstar-skill-authoring/references/regression-fixation.md +46 -0
- package/skills/mstar-skill-authoring/references/skillsbench-authoring.md +154 -0
- package/skills/mstar-strategy/SKILL.md +114 -0
- package/skills/pm/SKILL.md +40 -0
- package/tools/mstar_dispatch_validate.js +6291 -0
- package/tools/mstar_iteration_gate.js +6321 -0
- package/tools/mstar_lease_verify.js +6343 -0
- package/tools/mstar_path_resolve.js +6297 -0
- package/tools/mstar_status_validate.js +6402 -0
- 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.
|