@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,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mstar-engine-legacy
|
|
3
|
+
description: Morning Star 条件契约档案(engine-absent fallback)。宿主无 engine 能力(无 `mstar` CLI、无 engine import、engine 约束未激活)时需要被 engine 校验接管的 contract 全文时使用:status v1→v2 字段历史、lease claim 协议全文、各宿主 QC 座次 N=3/N=1 重述、反递归完整清单、Engine-check 样板说明。engine 约束激活(或宿主含 engine 能力)时不加载;运行时 skills 的 engine-check 指针为权威契约。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# mstar-engine-legacy(条件契约档案 / Engine-absent fallback)
|
|
7
|
+
|
|
8
|
+
## Load Order
|
|
9
|
+
|
|
10
|
+
- 先 Read **`mstar-harness-core`**(SKILL.md;冲突时以 core 为准)。
|
|
11
|
+
- **条件加载**:仅当宿主**无 engine 能力**时读取本 skill 及其 references —— 无 `mstar` CLI、无 engine import、engine 约束未激活。engine 约束激活(或宿主含 engine 能力)时**不加载**:此时运行时 skills 的 engine-check 指针 + 短契约文本为权威(见 core 索引行)。
|
|
12
|
+
- 本 skill 是**单一条件归档**:承接因 engine 校验而从运行时 skills 中移除的 contract 全文,engine-absent 宿主在此找回完整文本。
|
|
13
|
+
|
|
14
|
+
## Scope
|
|
15
|
+
|
|
16
|
+
- 归档**被承接的完整契约散文**(Task 2 displaced prose 的单一收容处):
|
|
17
|
+
1. `status.json` v1→v2 字段历史表(字段、severity、lifecycle、jq/flock 示例)
|
|
18
|
+
2. lease claim 协议全文(claim-before-InProgress、hold/release/override、integration merge、orphan recovery、waiver)
|
|
19
|
+
3. 各宿主 QC 座次 N=3/N=1 重述(omp / opencode / cursor / codex / kimi / zcode / dsh)
|
|
20
|
+
4. 反递归完整清单(leaf executor checklist、红线、NEVER 规则)
|
|
21
|
+
5. Engine-check 样板含义(运行时 skills 中 `Engine check (when available)` blockquote 的语义与 fallback 规则)
|
|
22
|
+
- 运行时 skills 只保留短指针 + engine-check 命令;完整全文一律在本 skill 的 `references/` 中(避免全仓重复)。
|
|
23
|
+
|
|
24
|
+
## Workflow
|
|
25
|
+
|
|
26
|
+
1. 确认触发条件:宿主**无 engine**(无 CLI / import;约束未激活)。满足才继续。
|
|
27
|
+
2. 按需打开对应 reference(见下表),把其中的完整契约文本作为 fallback 应用。
|
|
28
|
+
3. engine 恢复后回到运行时 skills 的指针契约,停止使用本文件作为权威。
|
|
29
|
+
|
|
30
|
+
| 需要 | 打开 |
|
|
31
|
+
|------|------|
|
|
32
|
+
| status 字段 / severity / lifecycle / 迁移 / jq-flock 示例 | `references/status-field-history.md` |
|
|
33
|
+
| lease claim 协议全文(claim / hold / merge / orphan / waiver) | `references/lease-protocol.md` |
|
|
34
|
+
| 各宿主 QC 座次 N=3/N=1 重述 | `references/qc-seat-n-restatements.md` |
|
|
35
|
+
| 反递归完整清单(leaf checklist + 红线) | `references/anti-recursion-checklists.md` |
|
|
36
|
+
| Engine-check 样板含义与 fallback 规则 | `references/engine-check-boilerplate.md` |
|
|
37
|
+
|
|
38
|
+
## Decision Rules
|
|
39
|
+
|
|
40
|
+
- **不加载条件**:engine 约束激活,或宿主含 engine 能力(`mstar` CLI / engine import 可用)→ 本 skill 不加载。
|
|
41
|
+
- **归档唯一性**:完整契约文本只存在于本文件;不得同时在运行时 skills 重复维护全文(运行时只放指针 + engine-check)。
|
|
42
|
+
- **权威性**:engine-absent 时,本文件的完整文本是行为权威;engine-present 时,运行时 skills + engine 校验是权威,本文件不是。
|
|
43
|
+
- **不改契约语义**:承接文本必须逐字保留(字段名、severity 枚举、lease 规则、N 规则、反递归清单);只做整理与归档,不重写规则。
|
|
44
|
+
|
|
45
|
+
## Evidence
|
|
46
|
+
|
|
47
|
+
- 正确结果 = references 中的完整文本可独立支撑 engine-absent 宿主操作;`bun run validation:drift` 绿(skill corpus lint 通过);`mstar skill lint skills/mstar-engine-legacy` 绿。
|
|
48
|
+
- 回归 = grep 验证运行时 skills 已不再携带被承接的全文(原全文位置只剩指针 / engine-check)。
|
|
49
|
+
|
|
50
|
+
## References
|
|
51
|
+
|
|
52
|
+
- 本 skill 的 references(见 When Workflow 表)。
|
|
53
|
+
- 权威运行时契约(engine-present 时读):`mstar-artifacts`(status v2 / register)、`mstar-iteration`、`mstar-dispatch-gates`、`mstar-host`。
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Anti-recursion full checklists (archived)
|
|
2
|
+
|
|
3
|
+
> Engine-absent fallback: the complete anti-recursion checklists. Engine-present hosts read `mstar-dispatch-gates` (red lines) + `mstar-roles/references/` role NEVER rules; this file is the consolidated full checklist text.
|
|
4
|
+
|
|
5
|
+
## 1. Leaf executor dispatch checklist (full)
|
|
6
|
+
|
|
7
|
+
> **First**: read the `**IDENTITY**` and `**CAPABILITY BOUNDARY**` blocks at the top of your Assignment. Those tell you who you ARE and what tools are NOT yours. Then read the `**You are a leaf executor. You MUST NOT:**` prohibitions. Those anti-patterns are customized for your specific role+context and are the authoritative dispatch boundaries for this assignment.
|
|
8
|
+
|
|
9
|
+
**Preamble — internalize before any action:**
|
|
10
|
+
|
|
11
|
+
I am a leaf executor. I personally complete all work. Task/subagent is NOT my tool. If I think about dispatching, I stop and return to my direct work or write `Blocked`.
|
|
12
|
+
|
|
13
|
+
Before any Task/subagent call (if I somehow forget the preamble):
|
|
14
|
+
|
|
15
|
+
1. What is my **`Execute as`**?
|
|
16
|
+
2. Does the Assignment include **`Delegation: allowed (...)`**? If no → **no** Task/subagent.
|
|
17
|
+
3. Is my next step a Task/subagent invoke? If yes without (2) → **stop**; use Read/Write/Shell/Edit in-session or **`Blocked`**.
|
|
18
|
+
4. Is `subagent_type` equal to my `Execute as`? If yes → **forbidden** (recursive dispatch).
|
|
19
|
+
5. Am I treating plain `role-id` mentions, Handoff, QA gate, Completion Report roles, or multi-plan/multi-track **design text** as invoke commands? If yes → **stop**; deliver in-session.
|
|
20
|
+
6. Am I invoking because the tool exists? **Available ≠ authorized.**
|
|
21
|
+
7. Need parallel work or PM-only dispatch? → **`Blocked`**; PM dispatches on the next round.
|
|
22
|
+
|
|
23
|
+
If blocked, report: `## Blocked — recursive dispatch refused (<which NEVER or reason>)`.
|
|
24
|
+
|
|
25
|
+
## 2. 承接方反递归红线 (NEVER / DO NOT; leaf executor 必读)
|
|
26
|
+
|
|
27
|
+
下列行为易触发递归误派;`project-manager` 之外的角色一旦命中,须立即停止并改为本会话内可交付物,或 **`Blocked`** 回报 PM。**禁止**以「更高效」「Assignment 像 PM 编排」等理由绕开:
|
|
28
|
+
|
|
29
|
+
- **NEVER** 在本会话内调用 Task / subagent,且其 `subagent_type` **等于**你当前的 **`Execute as`** 角色 id。
|
|
30
|
+
- **NEVER** 把 Assignment 里出现的 **任何** plain `role-id` 提及、反引号 `` `<role-id>` ``、**Handoff**、**QA gate**、**Completion Report** 模板里的角色名、路由表下游角色当成「立刻 invoke」的指令;这些是**叙事 / 路由文档 / 后续 PM 编排意图**,不是命令。
|
|
31
|
+
- **NEVER** 把「分解为多个计划 / 多 phase / 多 track」等**设计产物层面**的并行或拆分读成「应 invoke 与子会话数量对应的多个 subagent」。**纸面产物**由本会话写盘完成;并行**调度**由 PM 在后续轮次决定。
|
|
32
|
+
- **NEVER** 因宿主**暴露**了 `Task` 或若干 `subagent_type` 名称就推断可以调用。**工具可用 ≠ 授权使用**;授权只来自 **`Delegation: allowed (...)`**。
|
|
33
|
+
- **NEVER**(非 PM)主动执行 parallel-agent dispatch 来分派子代理;需要并行时回报 PM。
|
|
34
|
+
- **DO NOT** 在 Assignment 缺少 `Execute as` / `Delegation` / `Who runs this turn` 时自行「补齐」为 PM;缺字段时按 **leaf executor** 解释:亲自完成或 **`Blocked`**。
|
|
35
|
+
- **DO NOT** 用「Assignment 太长 / 像编排稿」当作分派依据;先交付本会话任务再回报,分派由 PM 下一轮决定。
|
|
36
|
+
|
|
37
|
+
**自检(动手前)**:
|
|
38
|
+
|
|
39
|
+
1. 我此刻的 **`Execute as`** 是什么?
|
|
40
|
+
2. Assignment 是否写了 **`Delegation: allowed (...)`**?没有 → **禁止**任何 Task / subagent。
|
|
41
|
+
3. 下一动作是不是「Task / subagent_type=…」?是 → 停手,改为 Read / Write / Shell / Edit,或 **`Blocked`**。
|
|
42
|
+
4. 命中任一 NEVER → 写 `## Blocked — recursive dispatch refused (<which NEVER>)` 回报 PM,**不**继续 invoke。
|
|
43
|
+
|
|
44
|
+
**Assignment 顶部反模式块**:每个 PM Assignment 开头均有 **`**You are a leaf executor. You MUST NOT:**`** 块(含 IDENTITY + CAPABILITY BOUNDARY + prohibitions),PM 按该 Assignment 的角色+上下文定制反模式清单。leaf executor 收到 Assignment 后须 **首先** 阅读该块;命中任一条 → **停止**(亲自完成或 `Blocked`)。
|
|
45
|
+
|
|
46
|
+
## 3. 身份断言(leaf executor)
|
|
47
|
+
|
|
48
|
+
- **你就是** `Execute as` 写的那个角色。你**不是 PM**,不是调度者,不是 parallel-agent dispatch 的使用者。
|
|
49
|
+
- Task/subagent 工具即使在你的工具列表里出现,它**不属于你**。把它当作你没见过的工具 —— 不是"不能用",是"你没有"。
|
|
50
|
+
- 所有工作由你**本人**在当前会话内完成(Read / Write / Edit / Shell / Grep / Glob)。任何"这样做更高效"的想法都不构成 dispatch 的理由。
|
|
51
|
+
- 遇到超出能力范围的需求 → 写 `## Blocked` 回报 PM,**不是**尝试 dispatch。Blocked 是你能发出的正确信号,dispatch 不是。
|
|
52
|
+
|
|
53
|
+
## 4. Non-recursive dispatch rule (shared shape, all leaf executors)
|
|
54
|
+
|
|
55
|
+
- Complete assigned work in this session.
|
|
56
|
+
- Do not recursively dispatch sibling roles unless explicitly authorized via `Delegation: allowed (...)`.
|
|
57
|
+
- `Execute as: {role_id}` is identity lock, not orchestration permission.
|
|
58
|
+
- If required inputs are missing or prerequisites unmet, return `Blocked` to PM rather than inventing delegation.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Engine-check boilerplate explanation (archived)
|
|
2
|
+
|
|
3
|
+
> Engine-absent fallback: explains what the `Engine check (when available)` blockquotes in runtime skills mean, and how the fallback rule works when the engine is absent.
|
|
4
|
+
|
|
5
|
+
## What the boilerplate says
|
|
6
|
+
|
|
7
|
+
Runtime skills carry short contract pointers shaped as blockquote runs that open with a bold marker reading `Engine check (when available)` followed by a colon, then give a runnable verification form, then a fail clause, then the standalone guarantee sentence:
|
|
8
|
+
|
|
9
|
+
1. **Marker + command form.** The blockquote states a `mstar` CLI command or an engine-import form that validates the contract in that section. The import form references the engine package inside a host hook; the CLI form is `mstar <subcommand> <args>`. Illustrative shape (engine-present hosts only):
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
|
+
// Engine check (when available) — import form example
|
|
13
|
+
import { validateStatus } from "@mstar-harness/engine";
|
|
14
|
+
```
|
|
15
|
+
2. **Fail clause.** `On fail -> do not proceed; fix and re-run.` A failed engine check means the contract is violated: the operator must fix the underlying state (not paper over the violation) and re-run the check before continuing.
|
|
16
|
+
3. **Standalone guarantee.** The blockquote closes with "Skill text below remains authoritative when the runtime is absent." — i.e. when the engine is not available in the host (no CLI, no import), the skill text itself (including this archive's full prose) is the contract; when the engine is available, the engine check is the authoritative enforcer and the prose is the fallback reference.
|
|
17
|
+
|
|
18
|
+
## Why the archive exists
|
|
19
|
+
|
|
20
|
+
When engine validators enforce a contract (status schema, lease fields, QC seat N, role binding, anti-recursion gates, path resolution, …), the runtime skills no longer need to carry the full contract prose — they keep the short pointer + the engine check. `mstar-engine-legacy` is the **single conditional archive** of that displaced full prose: engine-absent hosts read it here; engine-present hosts never load it (`mstar-harness-core` load condition).
|
|
21
|
+
|
|
22
|
+
## Reading the boilerplate when the engine is absent
|
|
23
|
+
|
|
24
|
+
- See the marker → read the surrounding runtime-skill text for the short contract, and open this skill's matching reference for the full prose (status fields → `status-field-history.md`; leases → `lease-protocol.md`; QC seats → `qc-seat-n-restatements.md`; anti-recursion → `anti-recursion-checklists.md`).
|
|
25
|
+
- The fail clause means the same discipline applies manually: verify the artifact satisfies the contract before proceeding.
|
|
26
|
+
- The standalone guarantee is why this archive is authoritative for you — the runtime skills deliberately defer the full text here.
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Lease claim protocol (full prose, archived)
|
|
2
|
+
|
|
3
|
+
> Engine-absent fallback: the full lease protocol prose displaced from `mstar-iteration` / `mstar-artifacts` when engine validators (`validateExecutionLease` / `validateIntegrationMergeLease` / CLI `mstar lease verify --workflow <id>`) took over the same contract. Engine-present hosts read the runtime skills' engine-check pointers instead.
|
|
4
|
+
|
|
5
|
+
## When it applies
|
|
6
|
+
|
|
7
|
+
**Iteration Phase 2 only** (after control-worktree entry, or primary checkout when `Worktree mode: waived`). Defaults are **hard** unless the current turn explicitly waives via Assignment `Worktree mode: waived` (or equivalent user instruction). `Plan parallelism: serial` is **not** a waiver — it only forces serial cross-plan **implement** scheduling while control worktree + leases remain required. Phase 1 Review & Edit may stay on the primary checkout; the control-worktree gate starts at **Phase 2 entry**. **`Worktree mode: waived` does not waive the cross-plan parallel safety gate**.
|
|
8
|
+
|
|
9
|
+
## Coordination SSOT and lock discipline
|
|
10
|
+
|
|
11
|
+
Lease mutations happen on the **control copy** of the coordination file — the v2 workflow snapshot `{WORKFLOW_DIR}/<id>/snapshot.json` (v1: `{HARNESS_DIR}/status.json`, migrated). This is cooperative, not a distributed lock service — non-cooperating processes are out of scope.
|
|
12
|
+
|
|
13
|
+
**Same-host exclusive write lock** — all control-path lease mutations (claim, release, transfer, plan-status transitions that touch the lease, merge-lease claim/release) MUST run inside a same-host exclusive write lock for the full **read-check-replace-verify** sequence. Hold from first read through post-write verify; release on all exit paths.
|
|
14
|
+
|
|
15
|
+
- Engine writers acquire the lock automatically: `writeWorkflowSnapshot` / `registerWorkflow` atomic-`mkdir` the lockdir at `<status-file dir>/.status-write.lockdir/` — for the snapshot the lockdir lands **inside `workflows/<id>/`** (next to `snapshot.json`).
|
|
16
|
+
- Manual fallback when no engine writer exists: atomic `mkdir` on `{WORKFLOW_DIR}/<id>/.status-write.lockdir/` — success acquires; existing dir → **Blocked** (another writer holds the lock); `rmdir` the directory only after successful verify or explicit rollback. The dsh notes-ledger writer uses the same lockdir pattern (`{WORKFLOW_DIR}/<id>/.ledger-write.lockdir`). Do **not** invent a distributed CAS CLI.
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
CONTROL_ROOT="<snapshot top-level control_worktree_path>"
|
|
20
|
+
HARNESS=".mstar" # or resolved {HARNESS_DIR}
|
|
21
|
+
WORKFLOW_ID="<plan-or-iteration-id>"
|
|
22
|
+
SNAPSHOT="$CONTROL_ROOT/$HARNESS/workflows/$WORKFLOW_ID/snapshot.json"
|
|
23
|
+
LOCKDIR="$CONTROL_ROOT/$HARNESS/workflows/$WORKFLOW_ID/.status-write.lockdir"
|
|
24
|
+
(
|
|
25
|
+
mkdir "$LOCKDIR" || exit 1
|
|
26
|
+
trap 'rmdir "$LOCKDIR"' EXIT
|
|
27
|
+
# read → mutate → temp file + atomic replace → re-read verify
|
|
28
|
+
)
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**Pre-dispatch re-verify:** immediately before **any** writable implement dispatch, re-read the coordination file and confirm this session still passes verify-held-lease (`holder`, `worktree_path`, `working_branch` match Assignment). Mismatch or absent lease ⇒ **STOP** — do not dispatch.
|
|
32
|
+
|
|
33
|
+
## Claim-before-`InProgress` (execution lease)
|
|
34
|
+
|
|
35
|
+
A Phase 2 session **MUST** claim before moving a plan from `Todo`/`Blocked` to `InProgress` and before any writable dispatch for that plan:
|
|
36
|
+
|
|
37
|
+
1. Re-read the coordination copy; locate exactly one plan row (`id` read compatibility).
|
|
38
|
+
2. **Resume (not steal):** if `execution_lease` exists and `holder` **equals this session** → verify-held: confirm `worktree_path` and `working_branch` match the Assignment; continue (not Blocked, not a new claim).
|
|
39
|
+
3. **Blocked:** if `execution_lease` exists and `holder` **differs** → stop. No timestamp, TTL, or inactivity makes it stealable.
|
|
40
|
+
4. **Orphan:** if `status` is `InProgress` but `execution_lease` is absent → **STOP** (see Orphan recovery). Do not writable-dispatch or invent a lease.
|
|
41
|
+
5. Create or verify the dedicated feature worktree and branch (default `<repoRoot>/.worktrees/<plan-id>-<slug>`; `worktree_path` ≠ `control_worktree_path`).
|
|
42
|
+
6. Acquire the same-host write lock (above); re-read the coordination file; if row/status/lease changed, restart from step 1.
|
|
43
|
+
7. In **one complete-file update** (under lock), set `status: "InProgress"` and write the full `execution_lease` object. Use a temp file in the same directory + atomic replace; never expose partial JSON.
|
|
44
|
+
8. Re-read the stored row; verify `holder`, `worktree_path`, `working_branch` exactly match the attempted claim. Writable dispatch is forbidden until verification succeeds.
|
|
45
|
+
|
|
46
|
+
V1: **manual release only** — omit `expires_at`; readers **MUST NOT** treat unknown/draft `expires_at` as authority to steal or release.
|
|
47
|
+
|
|
48
|
+
## Hold, release, and override
|
|
49
|
+
|
|
50
|
+
- Lease remains active across `InProgress` and `InReview` (including review fix rounds) unless deliberately released or transferred.
|
|
51
|
+
- **Release:** re-read coordination file; stored `holder` must match this session (mismatch ⇒ **Blocked**, not permission to delete). Delete `execution_lease` in the same complete-file update — never `null`.
|
|
52
|
+
- Voluntary abandonment: may set `status: "Blocked"` and delete the lease in one update.
|
|
53
|
+
- **Done authority** deletes `execution_lease` in the **same** complete-file update as `status: "Done"` — **only after** successful integration merge when the lease gate is not waived. After QC/QA pass the plan stays **`InReview`** with lease retained until merge succeeds.
|
|
54
|
+
- Temporary blockage may retain the lease when the same holder remains responsible and the plan record explains the next action.
|
|
55
|
+
- **Override (only exception to no-steal):** explicit **user instruction in the current turn** may remove or replace another holder's lease. Append an audit note (prior holder, new holder/release, user authorized) to `plans[].notes` / `notes.jsonl`. Agents **MUST NOT** infer override from age, inactivity, `Blocked` status, or a failed session.
|
|
56
|
+
- Cooperative handoff: current holder explicitly agrees; receiving worktree/branch verified; one complete-file update — otherwise old holder releases and new holder follows normal claim.
|
|
57
|
+
|
|
58
|
+
## Integration merge protocol
|
|
59
|
+
|
|
60
|
+
Feature implementation may run in parallel across plan IDs **only when** the cross-plan parallel hard gate is satisfied (same-host lock on the coordination file, default `Plan parallelism: serial`, or current-turn `Cross-host lease race: accepted` + audit — **not** by `Worktree mode: waived` alone); when the lease gate is active, each plan also needs a verified `execution_lease` and distinct feature worktree. Mutations of `spec_integration_branch` are **serial**. Plan status after QC/QA is `InReview` with `execution_lease` retained until merge succeeds (when lease gate active); `Done` + lease deletion happen **after** the integration merge commit is recorded.
|
|
61
|
+
|
|
62
|
+
1. From `control_worktree_path`: clean working tree; checked-out branch = resolved `spec_integration_branch`.
|
|
63
|
+
2. Re-read the coordination file under the same-process write lock. If `integration_merge_lease` exists:
|
|
64
|
+
- **Resume (not steal):** `holder` equals this session → verify `plan_id`, `source_branch`, `target_branch` match the intended merge; confirm control worktree state; continue (not Blocked).
|
|
65
|
+
- **Blocked:** `holder` differs → stop. No timestamp, TTL, or inactivity makes it stealable.
|
|
66
|
+
3. If unclaimed, claim the merge lease with the same read-check-replace-verify discipline as execution claims. `source_branch`/`plan_id` must match the feature; `target_branch` must match `spec_integration_branch`.
|
|
67
|
+
4. Only the stored merge-lease holder runs integration from `control_worktree_path`.
|
|
68
|
+
5. On success: record merge commit/evidence; **delete** `integration_merge_lease`; in the **same** locked update set plan `status: "Done"` and **delete** `execution_lease`.
|
|
69
|
+
6. On conflict/failure: retain both leases; plan stays `InReview` — do not set `Done`. Release the merge lease only after the control worktree is clean and in a known state.
|
|
70
|
+
|
|
71
|
+
Execution and merge leases may coexist; the merge lease does not grant execution ownership for the source plan.
|
|
72
|
+
|
|
73
|
+
## Orphan recovery (`InProgress` without `execution_lease`)
|
|
74
|
+
|
|
75
|
+
Runtime skills that detect this state **STOP** and defer recovery — they must not silently add a lease or writable-dispatch. **Immediate gate:** no writable dispatch until recovery completes and a verified `execution_lease` exists (or the plan returns to a non-active status). **Resolver:** `@project-manager` (or explicit human/PM ownership resolution after race or corruption).
|
|
76
|
+
|
|
77
|
+
| Path | When | Actions |
|
|
78
|
+
| ---- | ---- | ------- |
|
|
79
|
+
| **Reset to `Todo`** | Work abandoned, unknown owner, or safe to restart claim | One complete-file update under write lock: `status: "Todo"`; ensure `execution_lease` absent; append audit note (timestamp, reason, actor). |
|
|
80
|
+
| **Recover with claim (same holder)** | Legitimate in-progress work; worktree/branch verified on disk; **this session's stable `holder`** matches the prior owner | Unattended recovery permitted only for the **same** stable `holder`. Follow claim from step 5 under write lock; append audit note (orphan recovery, same holder, paths verified). |
|
|
81
|
+
| **Recover with claim (different holder)** | New session must take over live work | **Blocked** for unattended recovery. Requires verified quiescence of the prior writer (no live writable work on the feature branch/worktree) **and** explicit cooperative handoff from the prior holder, **or** current-turn user override + audit note. Then normal claim under write lock. |
|
|
82
|
+
| **Escalate / `Blocked`** | Ambiguous ownership, conflicting worktrees, or partial/corrupt state | Set `status: "Blocked"` with `metadata.blocked_reason`; do not writable-dispatch until human/PM resolves. Restore coherent state from the latest complete version if needed. |
|
|
83
|
+
|
|
84
|
+
After any recovery path, the next session must pass verify-held before writable dispatch.
|
|
85
|
+
|
|
86
|
+
## Lease prohibitions (SSOT)
|
|
87
|
+
|
|
88
|
+
- **MUST NOT** steal or overwrite an active `execution_lease` or `integration_merge_lease` (no TTL, age, or inactivity authority).
|
|
89
|
+
- **MUST NOT** writable-dispatch without a verified `execution_lease` for that plan (resume counts only when same `holder` passes verify-held).
|
|
90
|
+
- **MUST NOT** write `null` or tombstone objects for lease keys — **delete** the key on release.
|
|
91
|
+
- **PM NEVER** steals an active lease without explicit current-turn user override + audit note (full list → `mstar-roles/references/project-manager.md`).
|
|
92
|
+
- Writers **MUST preserve** unrelated plan rows, root metadata, and residual data on every lease mutation.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# QC seat N restatements (per-host, archived)
|
|
2
|
+
|
|
3
|
+
> Engine-absent fallback: the per-host N=3/N=1 restatements that runtime host references (`mstar-host/references/*`) consolidate. Engine-present hosts read `mstar-host` → `parallel-dispatch.md` + `executionModeToN` instead; this file is the consolidated full restatement text.
|
|
4
|
+
|
|
5
|
+
## Canonical N mapping (any host)
|
|
6
|
+
|
|
7
|
+
| `Execution mode` | QC seats | N |
|
|
8
|
+
| --- | --- | --- |
|
|
9
|
+
| `sdd` (multi-task plan, single plan, or iteration Phase 2) | `qc-specialist` / `qc-specialist-2` / `qc-specialist-3` in **one** dispatch turn | **N=3** |
|
|
10
|
+
| `inline` (hotfix) / explicit `QC mode: single` override | `qc-specialist` ×1 | **N=1** |
|
|
11
|
+
| Targeted re-review (`QC re-review: targeted — reviewers: <ids>`) | the listed seats only | N = listed count (1–3) |
|
|
12
|
+
|
|
13
|
+
Rules that never change: tri seats dispatch **in one message** with a branch review-package path (`{SDD_DIR}/review/qc1.md`…`qc3.md` + `qc-consolidated.md`); post-dispatch verify three distinct agent ids; `Execution mode: inline` with `QC mode: full tri-review` still launches the three seats; SDD implement/reviewer dispatches stay **serial** (never parallel implementers for the same plan); each invoke must carry the role-binding field set to `Execute as` even at N=1.
|
|
14
|
+
|
|
15
|
+
## Per-host restatements (full text)
|
|
16
|
+
|
|
17
|
+
### omp (`task` tool, `agent` field)
|
|
18
|
+
|
|
19
|
+
- **`Execution mode: sdd`**: **N=3** task entries — prefer `agent: "qc-specialist"`, `"qc-specialist-2"`, `"qc-specialist-3"` when listed; each body still **Act as** the respective QC role + QC skill load. If a seat is missing from the live schema, fall back per C5 (generic + C5b) for that seat only. N rules → `parallel-dispatch.md`.
|
|
20
|
+
- **`inline`**: **N=1** per `parallel-dispatch.md`.
|
|
21
|
+
- Cannot emit required **N** → **`Blocked`**.
|
|
22
|
+
- SDD implement: one implementer `task` entry per task id with `agent` matching the implementer role when listed; task reviewer = new entry with `agent: "code-reviewer"` (omp L2 review; not qc-specialist*) or `agent: "reviewer"`/`"task"` fallback + C5b; serial rule → `parallel-dispatch.md`.
|
|
23
|
+
|
|
24
|
+
### opencode (`task` tool, `subagent` field)
|
|
25
|
+
|
|
26
|
+
- Parallel batch **N** = **N task tool calls** in one assistant message when the host allows (`parallel-dispatch.md`); 1 Assignment ⇒ 1 invoke.
|
|
27
|
+
- Prepare phase serial roles (`explore → product-manager → architect`) still require a real task-tool call per handoff (**N=1** per dispatch turn) — Assignment Markdown alone does not open subagent sessions.
|
|
28
|
+
- SDD task reviewer: new task tool call with `subagent: "code-reviewer"` (OpenCode L2; not qc-specialist*), no sticky resume for reviewers.
|
|
29
|
+
|
|
30
|
+
### cursor (Task tool, `subagent_type` field)
|
|
31
|
+
|
|
32
|
+
- **`Execution mode: sdd`**: **N=3** Tasks (`qc-specialist`, `qc-specialist-2`, `qc-specialist-3`) + branch review-package path (N rules → `parallel-dispatch.md`).
|
|
33
|
+
- **`inline`**: **N=1** per `parallel-dispatch.md`.
|
|
34
|
+
- SDD implement/reviewer: serial — implementer Task per task id with `subagent_type` matching the implementer role when listed; task reviewer = new Task with `subagent_type: "code-reviewer"` (Cursor L2; not qc-specialist*) when listed, else generic fallback per C5 — no `resume` for reviewers.
|
|
35
|
+
|
|
36
|
+
### codex (custom-agent / multi-agent tools only)
|
|
37
|
+
|
|
38
|
+
- QC: N rules → `parallel-dispatch.md` (**`Execution mode: sdd`** → N=3; **`inline`** → N=1) when a callable invoke tool exists. Cannot emit required **N** → **`Blocked`**.
|
|
39
|
+
- If no invoke tool is present when dispatch is required → **`Blocked`** — report missing invoke capability; do not substitute single-session role execution in the PM thread unless the user explicitly overrides harness dispatch this turn.
|
|
40
|
+
|
|
41
|
+
### kimi (`Agent` tool, `subagent_type` ∈ {`coder`,`explore`,`plan`})
|
|
42
|
+
|
|
43
|
+
- **`Execution mode: sdd`**: **N=3** `Agent` calls (`qc-specialist`, `qc-specialist-2`, `qc-specialist-3`) — each prompt **Act as** the respective QC role, all `subagent_type: "coder"` (N rules → `parallel-dispatch.md`).
|
|
44
|
+
- **`inline`**: **N=1** per `parallel-dispatch.md`. Cannot emit required **N** → **`Blocked`**.
|
|
45
|
+
- SDD implement: one implementer `Agent` per task id; task reviewer = new `Agent` with **Act as `code-reviewer`** (Kimi L2; not qc-specialist*), generic fallback `subagent_type: "coder"` per C5 — no sticky resume unless the host adds it later.
|
|
46
|
+
|
|
47
|
+
### zcode (`Agent` tool, `subagent_type` ∈ {`general-purpose`, …})
|
|
48
|
+
|
|
49
|
+
- **`Execution mode: sdd`**: **N=3** `Agent` calls (`qc-specialist`, `qc-specialist-2`, `qc-specialist-3`) — each prompt **Act as** the respective QC role, all `subagent_type: "general-purpose"` (N rules → `parallel-dispatch.md`).
|
|
50
|
+
- **`inline`**: **N=1** per `parallel-dispatch.md`. Cannot emit required **N** → **`Blocked`**.
|
|
51
|
+
- SDD implement: one implementer `Agent` per task id; task reviewer = new `Agent` with **Act as `code-reviewer`** (ZCode L2; not qc-specialist*), generic fallback `subagent_type: "general-purpose"` per C5 — no sticky resume unless the host adds it later.
|
|
52
|
+
|
|
53
|
+
### dsh (`subagent` dispatches)
|
|
54
|
+
|
|
55
|
+
- **`Execution mode: sdd`**: **N=3** `subagent` dispatches — one per QC seat (`qc-specialist`, `qc-specialist-2`, `qc-specialist-3`), each body **Act as** the respective QC role + QC skill load. **MUST dispatch all three with `run_in_background: true` in one message** → the seats run CONCURRENTLY (background children; wall ≈ single seat); foreground (no `run_in_background`) runs serially (wall ≈ 3× single seat) and does NOT count as parallel tri. Cannot emit required **N** → **`Blocked`**.
|
|
56
|
+
- **`inline`**: **N=1**.
|
|
57
|
+
- SDD implement: one implementer `subagent` dispatch per task id; task reviewer = a separate dispatch (SDD review role) — no sticky resume unless the host's continuable-subagent id is available and recorded.
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
# Status v1→v2 field history (archived contract prose)
|
|
2
|
+
|
|
3
|
+
> Engine-absent fallback: the full field tables displaced from `mstar-artifacts` when engine validators took over the same contract. Engine-present hosts read `mstar-artifacts/references/status-and-residuals.md` (v2) instead; this file is the historical + fallback full text.
|
|
4
|
+
|
|
5
|
+
## v1 `{HARNESS_DIR}/status.json` — full shape (historical)
|
|
6
|
+
|
|
7
|
+
`status.json` lived at `{HARNESS_DIR}/status.json` and was the **SSOT** for `plans[]` row status and open residual findings. Closed residuals were archived to `{HARNESS_DIR}/archived/residuals/<plan-id>.json`.
|
|
8
|
+
|
|
9
|
+
```json
|
|
10
|
+
{
|
|
11
|
+
"version": 1,
|
|
12
|
+
"updated_at": "YYYY-MM-DD",
|
|
13
|
+
"plans": [
|
|
14
|
+
{
|
|
15
|
+
"id": "plan-id",
|
|
16
|
+
"title": "Plan title",
|
|
17
|
+
"file": "{PLAN_DIR}/plan-id-feature-name.md",
|
|
18
|
+
"status": "Todo | InProgress | InReview | Blocked | Done",
|
|
19
|
+
"owner": "@project-manager",
|
|
20
|
+
"agents": ["@fullstack-dev"],
|
|
21
|
+
"progress": 0,
|
|
22
|
+
"tags": [],
|
|
23
|
+
"created_at": "YYYY-MM-DD",
|
|
24
|
+
"updated_at": "YYYY-MM-DD",
|
|
25
|
+
"done_at": null,
|
|
26
|
+
"notes": "",
|
|
27
|
+
"metadata": {}
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"residual_findings": {
|
|
31
|
+
"plan-id": [
|
|
32
|
+
{
|
|
33
|
+
"id": "R1",
|
|
34
|
+
"title": "Finding title",
|
|
35
|
+
"severity": "critical | high | medium | low | nit",
|
|
36
|
+
"source": "QC-#1 qc1.md F-001 @ <review-range>, QA qa.md, review, …",
|
|
37
|
+
"scope": "Affected file or component",
|
|
38
|
+
"decision": "defer | accept | risk-accepted",
|
|
39
|
+
"owner": "@fullstack-dev",
|
|
40
|
+
"target": "Before plan 02 / YYYY-MM-DD / milestone",
|
|
41
|
+
"tracking": "Issue URL or null",
|
|
42
|
+
"detail_doc": "{PLAN_DIR}/residuals/plan-id/R1-short-label.md"
|
|
43
|
+
}
|
|
44
|
+
]
|
|
45
|
+
},
|
|
46
|
+
"metadata": {}
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Closed residual entries added: `lifecycle`, `closed_at`, `closure_note`; optional `closure_evidence`, `superseded_by`.
|
|
51
|
+
|
|
52
|
+
## v1 `plans[]` row fields
|
|
53
|
+
|
|
54
|
+
| Field | Meaning |
|
|
55
|
+
| --- | --- |
|
|
56
|
+
| `id` | Plan id (legacy alias `plan_id` read-compatible). |
|
|
57
|
+
| `title` / `file` | Display title / main plan path (`{PLAN_DIR}/…`). |
|
|
58
|
+
| `status` | `Todo \| InProgress \| InReview \| Blocked \| Done` (Done only by `@project-manager` / `@qa-engineer`). |
|
|
59
|
+
| `owner` / `agents` / `progress` / `tags` | PM ownership, role agents, progress 0–100, tags. |
|
|
60
|
+
| `created_at` / `updated_at` / `done_at` | `YYYY-MM-DD`; `done_at` set at Done. |
|
|
61
|
+
| `notes` | Per-plan timeline (string array recommended; legacy string OK). |
|
|
62
|
+
| `metadata` | Optional object (see below). |
|
|
63
|
+
|
|
64
|
+
## v1 `plans[].metadata` standard optional fields
|
|
65
|
+
|
|
66
|
+
| Key | Type | Purpose |
|
|
67
|
+
| --- | --- | --- |
|
|
68
|
+
| `findings_cleanup` | `zero-residual` \| `allow-residual` | Mirror of Assignment `Findings cleanup`. |
|
|
69
|
+
| `working_branch` | string | Implementation branch; aligns with Assignment `Working branch` (SSOT). |
|
|
70
|
+
| `spec_integration_branch` | string | (Multi-plan same Spec) integration branch; created from root `metadata.iteration_base_branch`. |
|
|
71
|
+
| `merge_target` | string | Next merge target; final PR target is root `metadata.target_branch`. |
|
|
72
|
+
| `branch_policy` | string | One-line policy per `mstar-harness-core`. |
|
|
73
|
+
| `phase` / `priority` / `description` / `scope` | string | Program label; `high\|medium\|low`; one-line scope (pick one key per repo). |
|
|
74
|
+
| `gates` | object | Gate summary (`qc`, `qa`, `typecheck`, `tests`, `lint`, …). |
|
|
75
|
+
| `blocked_since` / `blocked_reason` / `blocked_by_plan_id` / `dependency` / `next_action` | string | Block bookkeeping + deps + next step. |
|
|
76
|
+
| `primary_spec` / `iteration_compass` / `iteration_refs` | string / string[] | Spec / compass pointers. |
|
|
77
|
+
| `qc_status` / `tests` / `commits` | string | InReview/Done snapshots — not a substitute for durable gate summaries or root `residual_findings`. |
|
|
78
|
+
| `sdd_dir` / `sdd_progress` / `review_bundle` / `task_commits` | string / array | SDD scratch path, progress ledger pointer, review bundle pointer, `{task_id,base,head}[]`. |
|
|
79
|
+
|
|
80
|
+
### v1 `plans[].execution_lease` (iteration Phase 2)
|
|
81
|
+
|
|
82
|
+
| Field | Type | Required | Semantics |
|
|
83
|
+
| --- | --- | --- | --- |
|
|
84
|
+
| `holder` | non-empty string | Yes | Opaque cooperative owner identity (recommended `<host>:<stable-session-id>`, e.g. `cursor:bc-1234`); stable for claim lifetime; **no credentials**; used for ownership comparison — not `session_label`. |
|
|
85
|
+
| `claimed_at` | RFC 3339 UTC (`Z`) | Yes | Acquisition time (audit only; **not** an expiry clock). |
|
|
86
|
+
| `worktree_path` | absolute path string | Yes | Dedicated feature-worktree root; **MUST** differ from `metadata.control_worktree_path`. |
|
|
87
|
+
| `working_branch` | non-empty string | Yes | Feature branch at `worktree_path`; MUST agree with Assignment `Working branch`. |
|
|
88
|
+
| `session_label` | string | No | Human display only — **MUST NOT** authorize or compare ownership. |
|
|
89
|
+
|
|
90
|
+
Writers **delete** `execution_lease` on release; `null` and tombstone objects are invalid.
|
|
91
|
+
|
|
92
|
+
## v1 root `metadata` standard optional fields
|
|
93
|
+
|
|
94
|
+
| Key | Type | Purpose |
|
|
95
|
+
| --- | --- | --- |
|
|
96
|
+
| `versioning` | object | Cross-plan conventions (team-defined). |
|
|
97
|
+
| `iteration_base_branch` | string | Branch/ref used to create `spec_integration_branch`; required for formal iterations. |
|
|
98
|
+
| `target_branch` | string | Final PR target after iteration-close; required for formal iterations. |
|
|
99
|
+
| `notes` | array | **Legacy** — prefer `{HARNESS_DIR}/notes.json`. |
|
|
100
|
+
| `residual_findings_history` | object | **Legacy** — prefer `archived/residuals/<plan-id>.json`. |
|
|
101
|
+
| `tech_debt_summary` | object | Optional rollup over open R# (engine `techDebtRollup`). |
|
|
102
|
+
| `control_worktree_path` | absolute path string | Iteration Phase 2: canonical repository root checked out to active `spec_integration_branch`; coordination + serial merge cwd. |
|
|
103
|
+
| `integration_merge_lease` | object | While one integration merge is owned; **absent** = unclaimed. Writers **delete** the key on release — never `null`/tombstones. |
|
|
104
|
+
|
|
105
|
+
## v1 residual entry contract (9 required fields + severity/lifecycle)
|
|
106
|
+
|
|
107
|
+
Entry keys mirroring engine `RESIDUAL_REQUIRED_FIELDS`: `id`, `title`, `severity`, `source`, `scope`, `decision`, `owner`, `target`, `tracking` (+ optional `detail_doc`). Malformed entries (non-object, missing any required field, or severity outside enum) were rejected fail-loud by `validateResidual` / `validateStatus` — never silent pass-through.
|
|
108
|
+
|
|
109
|
+
### Severity (machine enum, lowercase English only)
|
|
110
|
+
|
|
111
|
+
`critical` > `high` > `medium` > `low` > `nit`. `nit` is always lighter than `low`. Forbidden in JSON: `warning`, `Major`, non-English. Legacy `"severity": "warning"` read+rolled up as `low`. QC report **Critical / Warning / Suggestion** are section titles — never copied verbatim into JSON.
|
|
112
|
+
|
|
113
|
+
### Lifecycle states
|
|
114
|
+
|
|
115
|
+
`open` (default; omit field) · `resolved` · `waived` · `superseded` · `duplicate`. On close set `closed_at` (`YYYY-MM-DD`) + `closure_note`; recommend `closure_evidence` (PR/commit/test/doc anchor). Owners: fix → implementer; verify → QA (when `QA gate: mandatory`) else PM; write SSOT → PM or QA.
|
|
116
|
+
|
|
117
|
+
## v1 archive shapes (historical)
|
|
118
|
+
|
|
119
|
+
**`archived/residuals/<plan-id>.json`** (append to `entries`):
|
|
120
|
+
|
|
121
|
+
```json
|
|
122
|
+
{
|
|
123
|
+
"plan_id": "01-data-infrastructure",
|
|
124
|
+
"schema_version": 1,
|
|
125
|
+
"entries": [
|
|
126
|
+
{
|
|
127
|
+
"id": "R1",
|
|
128
|
+
"severity": "medium",
|
|
129
|
+
"lifecycle": "resolved",
|
|
130
|
+
"closed_at": "2026-04-06",
|
|
131
|
+
"closure_note": "…",
|
|
132
|
+
"closure_evidence": "PR #42 / commit …",
|
|
133
|
+
"archived_at": "2026-04-07"
|
|
134
|
+
}
|
|
135
|
+
]
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
**`{HARNESS_DIR}/notes.json`** (append-only program timeline):
|
|
140
|
+
|
|
141
|
+
```json
|
|
142
|
+
{ "schema_version": 1, "updated_at": "YYYY-MM-DD",
|
|
143
|
+
"entries": [{ "at": "2026-04-08", "message": "Short milestone", "plan_id": "01-data-infrastructure" }] }
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
`plans[].notes` = per-plan timeline; `notes.json` = cross-plan milestones.
|
|
147
|
+
|
|
148
|
+
## v1 jq / flock examples (legacy read paths)
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
# Replace .mstar with your resolved {HARNESS_DIR}; legacy projects may use .agents.
|
|
152
|
+
jq '.plans[] | select(.id == "01-data-infrastructure")' .mstar/status.json
|
|
153
|
+
jq '.residual_findings["01-data-infrastructure"] // .metadata.residual_findings["01-data-infrastructure"]' .mstar/status.json
|
|
154
|
+
jq '.entries[] | select(.id == "R1")' .mstar/archived/residuals/01-data-infrastructure.json
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Legacy read paths (root `residual_findings` / `metadata.residual_findings` / `archived/residuals/<plan-id>.json`) were **legacy read-only**; `mstar migrate` moved open entries into the register.
|
|
158
|
+
|
|
159
|
+
## v2 destinations (where each v1 surface landed)
|
|
160
|
+
|
|
161
|
+
| v1 surface | v2 home |
|
|
162
|
+
| --- | --- |
|
|
163
|
+
| root `plans[]` rows | `{WORKFLOW_DIR}/<id>/snapshot.json` → `plans[]` (legacy PlanRow shape verbatim) |
|
|
164
|
+
| root `plans[].execution_lease` | snapshot plan row `execution_lease` |
|
|
165
|
+
| root `metadata.integration_merge_lease` | snapshot top-level `integration_merge_lease` |
|
|
166
|
+
| root `metadata.control_worktree_path` | snapshot top-level `control_worktree_path` |
|
|
167
|
+
| root `metadata.iteration_base_branch` / `target_branch` / `spec_integration_branch` / `merge_target` | snapshot top-level `branch.{base,integration,target}` |
|
|
168
|
+
| root `metadata.plan_parallelism` / `worktree_mode` / `push_policy` | snapshot `execution_policy` |
|
|
169
|
+
| root `metadata.notes` / legacy row `notes` | `{WORKFLOW_DIR}/<id>/notes.jsonl` (runtime ledger; row `notes` kept verbatim as legacy copy) |
|
|
170
|
+
| root `residual_findings` | `{PROJECT_DIR}/<id>/residuals.json` → `entries[<plan-id>]` (array semantics preserved) |
|
|
171
|
+
| `archived/residuals/<plan-id>.json` | register **close in place** (lifecycle/closed_at/closure_note on the entry) |
|
|
172
|
+
| `metadata.tech_debt_summary` | derived `mstar status tech-debt <project-dir>` rollup (v1 stored drift path dead) |
|
|
173
|
+
| root `version: 1` | root `version: 2` + `workflows[]` (active-only registry; terminal rows removed after snapshot write) |
|
|
174
|
+
| v1 root `plans[]`/`residual_findings` trees | migrated first via `mstar migrate [--dry-run] [--path <root>]` |
|
|
175
|
+
|
|
176
|
+
Root v2 shape:
|
|
177
|
+
|
|
178
|
+
```json
|
|
179
|
+
{ "version": 2, "updated_at": "YYYY-MM-DD",
|
|
180
|
+
"workflows": [{ "id": "<plan-or-iteration-id>", "type": "plan | iteration", "started_at": "YYYY-MM-DD", "dir": "workflows/<id>" }] }
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## Compatibility
|
|
184
|
+
|
|
185
|
+
- Read: accept `id` or `plan_id`; write: one canonical key (prefer `id`).
|
|
186
|
+
- Document the canonical key in `{HARNESS_DIR}/AGENTS.md` if migrating.
|