@mstar-harness/dsh 3.8.1 → 3.8.3
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.i18n.yaml +2 -2
- package/README.md +16 -6
- package/README.zh.md +16 -6
- package/dist/client/panel/engine-status-client.d.ts +84 -6
- package/dist/client/panel/graph/project-graph.d.ts +26 -13
- package/dist/client/panel/guards.d.ts +41 -1
- package/dist/client/panel/locale.d.ts +1 -1
- package/dist/client/panel/pages/AgentListPage.d.ts +1 -1
- package/dist/client/panel/sidebar.d.ts +3 -2
- package/dist/client/panel/state-section.d.ts +25 -3
- package/dist/client/panel/use-mstar-engine-status.d.ts +28 -4
- package/dist/client.js +346 -48
- package/dist/engine-status-endpoint.d.ts +85 -8
- package/dist/engine-status-store.d.ts +91 -1
- package/dist/engine-status-wire.d.ts +9 -0
- package/dist/gates/_shared.d.ts +61 -9
- package/dist/gates/adapter.d.ts +32 -2
- package/dist/gates/agent-flow.d.ts +312 -60
- package/dist/gates/catalog.d.ts +58 -37
- package/dist/gates/dispatch.d.ts +11 -2
- package/dist/gates/goal-bridge.d.ts +10 -130
- package/dist/gates/plan-mode-bridge.d.ts +20 -11
- package/dist/gates/role-persona.d.ts +16 -0
- package/dist/gates/steering.d.ts +41 -0
- package/dist/gates/workflow-ledger.d.ts +31 -4
- package/dist/gates/workflow-selection.d.ts +41 -20
- package/dist/index.js +1206 -392
- package/dist/types.d.ts +36 -11
- package/harness-commands/amazing-e2e-check.md +10 -0
- package/harness-commands/amazing-pr-review.md +2 -0
- package/harness-commands/codebase-audit.md +2 -0
- package/harness-commands/iteration-drive.md +1 -1
- package/harness-skills/mstar-artifacts/references/plan-files-and-reports.md +2 -2
- package/harness-skills/mstar-artifacts/references/plan-quality-bar.md +14 -12
- package/harness-skills/mstar-artifacts/templates/plan.main.md +19 -6
- package/harness-skills/mstar-audit/SKILL.md +5 -5
- package/harness-skills/mstar-coding-behavior/SKILL.md +8 -8
- package/harness-skills/mstar-dispatch-gates/SKILL.md +9 -7
- package/harness-skills/mstar-e2e/SKILL.md +40 -0
- package/harness-skills/mstar-e2e/references/report-template.md +32 -0
- package/harness-skills/mstar-engine-legacy/references/qc-seat-n-restatements.md +3 -3
- package/harness-skills/mstar-harness-core/SKILL.md +14 -1
- package/harness-skills/mstar-host/SKILL.md +3 -1
- package/harness-skills/mstar-host/references/_shared/host-role-binding-core.md +1 -1
- package/harness-skills/mstar-host/references/cursor.md +1 -1
- package/harness-skills/mstar-host/references/dsh-workflow-scripts.md +424 -0
- package/harness-skills/mstar-host/references/dsh.md +180 -51
- package/harness-skills/mstar-host/references/kimi.md +3 -3
- package/harness-skills/mstar-host/references/omp.md +3 -3
- package/harness-skills/mstar-host/references/parallel-dispatch.md +6 -6
- package/harness-skills/mstar-host/references/zcode.md +4 -4
- package/harness-skills/mstar-iteration/SKILL.md +1 -1
- package/harness-skills/mstar-iteration/references/phase-1-prepare.md +2 -2
- package/harness-skills/mstar-iteration/references/phase-2-worktree-lease.md +3 -3
- package/harness-skills/mstar-review-qc/SKILL.md +4 -4
- package/harness-skills/mstar-review-qc/references/review-responsibility-boundaries.md +9 -7
- package/harness-skills/mstar-roles/SKILL.md +2 -0
- package/harness-skills/mstar-roles/references/_shared/leaf-executor-core.md +9 -0
- package/harness-skills/mstar-roles/references/ops-engineer.md +3 -0
- package/harness-skills/mstar-roles/references/project-manager/dispatch-and-assignment.md +12 -9
- package/harness-skills/mstar-roles/references/project-manager/qa-trigger-matrix.md +7 -5
- package/harness-skills/mstar-roles/references/project-manager/qc-and-residuals.md +2 -2
- package/harness-skills/mstar-roles/references/project-manager/routing-and-dev-allocation.md +2 -2
- package/harness-skills/mstar-roles/references/project-manager.md +4 -2
- package/harness-skills/mstar-roles/references/qa-engineer/acceptance-gate.md +12 -13
- package/harness-skills/mstar-roles/references/qa-engineer.md +5 -4
- package/harness-skills/mstar-roles/references/qc-specialist/deep-review-lenses.md +5 -5
- package/harness-skills/mstar-roles/references/qc-specialist/report-template.md +2 -0
- package/harness-skills/mstar-roles/references/qc-specialist/reviewer-checklist.md +1 -1
- package/harness-skills/mstar-roles/references/qc-specialist/reviewer-workflow.md +5 -4
- package/harness-skills/mstar-roles/references/qc-specialist-shared.md +3 -1
- package/harness-skills/mstar-sdd/SKILL.md +17 -9
- package/harness-skills/mstar-sdd/references/file-handoffs.md +40 -20
- package/harness-skills/mstar-sdd/references/implementer-continuation-prompt.md +9 -4
- package/harness-skills/mstar-sdd/references/implementer-prompt.md +11 -6
- package/harness-skills/mstar-sdd/references/sticky-implementer-session.md +4 -2
- package/harness-skills/mstar-sdd/references/task-reviewer-prompt.md +8 -4
- package/package.json +2 -2
|
@@ -10,6 +10,7 @@ The concise gate summary remains in `references/project-manager.md`.
|
|
|
10
10
|
- In tool hosts (OpenCode / Cursor Task / Codex with callable multi-agent tools), Markdown-only Assignment is not dispatch.
|
|
11
11
|
- For parallel batch with `N >= 2`, dispatch turn must emit all `N` invokes in one message when host supports it.
|
|
12
12
|
- **Same-repo writable parallel tracks**: tool concurrency and worktree isolation are **separate gates**. Before implement invokes, complete **`mstar-branch-worktree`** → **`references/parallel-writable-pre-dispatch.md`**.
|
|
13
|
+
- **Scope and stopping are explicit**: apply `mstar-harness-core` § 定向执行与验证边界. Give each leaf one result, owned paths/symbols, relevant inputs, named checks/selectors, and an evidence-based stopping condition. Reuse unaffected evidence; do not inject a suite merely because the repo exposes it. Independent ready assignments run concurrently after their dependency/isolation checks.
|
|
13
14
|
- **Skill preset activation is PM-owned**: topic skills are presets in each role's `Skill Preset (PM-Activated)` section (`mstar-roles/references/<role>.md`), not self-loaded defaults. Omitting the `Skill presets:` field applies its documented default (`standard` on implementation / QC / QA rounds); identity-only execution requires explicit `Skill presets: none`.
|
|
14
15
|
|
|
15
16
|
## Executor Anti-Recursion Rules
|
|
@@ -43,7 +44,7 @@ The **`**You are a leaf executor. You MUST NOT:**`** section (previously just pr
|
|
|
43
44
|
- **QC reviewers** (`qc-specialist*`): "start review before all QC reviewers are dispatched in parallel"; "treat other reviewers' names in routing text as invoke targets"; "run test/build/lint on shared Review cwd"; "fill missing runtime evidence by executing the suite"
|
|
44
45
|
- **Multi-track implementers** (`fullstack-dev` + `frontend-dev` / `fullstack-dev-2`): "auto-dispatch to the other track mentioned in Dev routing"; "implement in repo root when Assignment names a different `Worktree path`"
|
|
45
46
|
- **`fullstack-dev-2`**: "treat `fullstack-dev` in routing narrative as a handoff or invoke target"
|
|
46
|
-
- **`qa-engineer`**: "start validation before QC reports are consolidated"; "
|
|
47
|
+
- **`qa-engineer`**: "start validation before QC reports are consolidated"; "run anything beyond the assigned unit-test scope, including full suites or browser/device/E2E"; "expect QC reports to contain test logs"; "modify application code" (unless allowed)
|
|
47
48
|
- **`explore`-assigned**: "implement or modify code"
|
|
48
49
|
- **All non-PM**: "dispatch parallel agents"; "spawn a subagent whose `subagent_type` matches your own `Execute as` role id"
|
|
49
50
|
- Anti-patterns must be action-oriented ("auto-dispatch to …", "treat … as invoke", "start … before …") — not abstract descriptions.
|
|
@@ -68,6 +69,8 @@ The **`**You are a leaf executor. You MUST NOT:**`** section (previously just pr
|
|
|
68
69
|
- dispatch or invoke any subagent unless `Delegation: allowed (...)` appears below
|
|
69
70
|
- treat plain `role-id` mentions, `Handoff`, `QA gate`, routing tables, or multi-track prose as invoke commands
|
|
70
71
|
- invoke a subagent whose `subagent_type` matches your own `Execute as` role id (recursive dispatch)
|
|
72
|
+
- expand beyond owned files or named checks; restart whole-repository exploration, review or tests
|
|
73
|
+
- repeat settled analysis or add checks after the acceptance criteria are evidenced
|
|
71
74
|
- <situation-specific anti-pattern #1>
|
|
72
75
|
- <situation-specific anti-pattern #2>
|
|
73
76
|
- ...
|
|
@@ -100,26 +103,26 @@ The **`**You are a leaf executor. You MUST NOT:**`** section (previously just pr
|
|
|
100
103
|
**Worktree path**: <absolute feature implementer path when L1/L2 isolation used; default `<repoRoot>/.worktrees/<plan-id>-<slug>` (L2 tracks: `<track-slug>`); must ≠ control_worktree_path>
|
|
101
104
|
**QA gate**: mandatory | pm-acceptance | report-only — see `references/project-manager/qa-trigger-matrix.md`
|
|
102
105
|
**QA gate reason**: <tier label, e.g. hotfix-inline | small-feature-clean-qc | mandatory-medium-feature>
|
|
103
|
-
**QA mode**: acceptance-only |
|
|
106
|
+
**QA mode**: acceptance-only | targeted | report-only | N/A — required when `QA gate: mandatory` or `report-only`
|
|
104
107
|
**Findings cleanup**: zero-residual | allow-residual — **default `zero-residual` on formal iteration Phase 2**; **default `allow-residual`** for standalone `/pm`, hotfix, `Execution mode: inline` (override via Assignment or `plans[].metadata.findings_cleanup`; SSOT → `mstar-artifacts` Findings cleanup modes)
|
|
105
108
|
**Why this agent**: <role-fit>
|
|
106
109
|
**PM Task Board coverage**: <task ids>
|
|
107
110
|
**Roadmap / deferred scope**: <required when staged, partial, or temporary; otherwise N/A>
|
|
108
|
-
**Task**: <concrete
|
|
111
|
+
**Task**: <one concrete deliverable and stopping result aligned with coverage>
|
|
109
112
|
**Checkpoint Comment Rule**: commit -> Completion Report -> PM Status Update -> next batch
|
|
110
113
|
**Why batching is safe**: <required when batching >=3 IDs>
|
|
111
114
|
**Scope**:
|
|
112
|
-
- In:
|
|
113
|
-
- Out:
|
|
114
|
-
**Inputs**:
|
|
115
|
+
- In: <owned files/symbols, directly affected interfaces; finding + fix delta for re-review>
|
|
116
|
+
- Out: <excluded work and specific boundary>
|
|
117
|
+
**Inputs**: <brief, diff, relevant knowledge, reusable evidence with original range>
|
|
115
118
|
**Deliverables**: ...
|
|
116
119
|
**Acceptance Criteria**:
|
|
117
120
|
- [ ] ...
|
|
118
121
|
**Evidence Required**:
|
|
119
|
-
- [ ]
|
|
120
|
-
- [ ] observable proof
|
|
122
|
+
- [ ] <AC → exact affected unit-test selector or scoped static check; expected result>
|
|
123
|
+
- [ ] <reused evidence + why unchanged, or new observable proof>
|
|
121
124
|
- [ ] commit proof
|
|
122
|
-
**Constraints**:
|
|
125
|
+
**Constraints**: <no scope expansion; no local full suite without referenced explicit user permission; QA unit-only; no spontaneous browser/device/E2E; stop on concrete missing inputs and return once acceptance is evidenced>
|
|
123
126
|
**Effort (agent-oriented)**: <XS/S/M/L/XL + session band>
|
|
124
127
|
**Orchestration Guard** (see `**You are a leaf executor. You MUST NOT:**` block at top for primary anti-patterns):
|
|
125
128
|
- No recursive same-role dispatch
|
|
@@ -10,11 +10,13 @@ Extension of `references/project-manager.md`. Use when choosing **`QA gate`** an
|
|
|
10
10
|
| | `pm-acceptance` | Do **not** dispatch QA; PM completes acceptance checklist and may mark `Done` |
|
|
11
11
|
| | `report-only` | Primary route is investigation/repro only; dispatch `qa-engineer` (QC tri may be skipped per rules) |
|
|
12
12
|
| **`QA mode`** | `acceptance-only` (default when QA dispatched) | Evidence reuse first; map plan DoD to **implementer / CI / prior QA** evidence (QC reports are review findings, not the test log) |
|
|
13
|
-
| | `
|
|
13
|
+
| | `targeted` | Run only specified affected unit tests for changed behavior or a concrete evidence gap |
|
|
14
14
|
| | `report-only` | No business-code changes unless explicitly allowed |
|
|
15
15
|
|
|
16
16
|
**Deprecated:** `QA note: skipped / self-check` — use **`QA gate: pm-acceptance`** plus **`QA gate reason: <tier>`**.
|
|
17
17
|
|
|
18
|
+
All modes keep QA execution **unit-only**. Scope/authorization → `mstar-harness-core` § 定向执行与验证边界. No `full` QA mode: user-authorized full suites go to a separate implementer/ops action; QA reuses its evidence. Real browser/device/E2E goes to separately requested `mstar-e2e`, not an iteration QA gate.
|
|
19
|
+
|
|
18
20
|
Set **`QA gate`** on the **first implement Assignment** (or plan frontmatter) and keep it consistent through QC closure unless scope/risk changes force an upgrade to `mandatory`.
|
|
19
21
|
|
|
20
22
|
## Trigger matrix (default)
|
|
@@ -26,11 +28,11 @@ Set **`QA gate`** on the **first implement Assignment** (or plan frontmatter) an
|
|
|
26
28
|
| Bug fix (RCA + regression scope; default route) | `mandatory` | `acceptance-only` |
|
|
27
29
|
| Medium / Large feature | `mandatory` | `acceptance-only` |
|
|
28
30
|
| `Approve with residuals` or any open R# in `status.json` | `mandatory` | `acceptance-only` (includes R# verify) |
|
|
29
|
-
| UI-visible change (`Task category: visual` or observable evidence gate) | `mandatory` | `acceptance-only` (
|
|
30
|
-
| High-risk ops | `mandatory` | `
|
|
31
|
+
| UI-visible change (`Task category: visual` or observable evidence gate) | `mandatory` | `acceptance-only` (unit evidence; record unverified UI behavior for independent E2E) |
|
|
32
|
+
| High-risk ops | `mandatory` | `acceptance-only` (reuse ops evidence; named unit-test gaps only) |
|
|
31
33
|
| QA report-only primary route | `report-only` | `report-only` |
|
|
32
34
|
| Product-docs-only / tech-spec-only (no runtime diff) | N/A | — |
|
|
33
|
-
| User
|
|
35
|
+
| User explicitly permits a local full suite | Preserve existing gate | QA consumes separately assigned implementer/ops evidence; permission does not authorize E2E |
|
|
34
36
|
|
|
35
37
|
**Upgrade rule:** If conditions change mid-round (e.g. QC becomes `Approve with residuals`, UI scope added, open R# registered), change `QA gate` from `pm-acceptance` to `mandatory` before `Done`.
|
|
36
38
|
|
|
@@ -41,7 +43,7 @@ Set **`QA gate`** on the **first implement Assignment** (or plan frontmatter) an
|
|
|
41
43
|
PM completes this in **Status Update** (or plan closure note). PM **does not** run bash tests or reproduction in the orchestration thread.
|
|
42
44
|
|
|
43
45
|
1. **QC verdict:** `{SDD_DIR}/review/qc-consolidated.md` or `{SDD_DIR}/review/qc.md` shows `Approve` with **Critical = 0** and **Warning = 0** (not `Approve with residuals`), and the main plan has a durable gate summary.
|
|
44
|
-
2. **DoD mapping:** Each plan Acceptance Criterion maps to **existing** evidence (dev Completion Report, SDD
|
|
46
|
+
2. **DoD mapping:** Each plan Acceptance Criterion maps to **existing** evidence (dev Completion Report, SDD test triple or applicable scoped-check, CI links; QC report for review verdict/findings only) — cite paths/commands, do not re-execute.
|
|
45
47
|
3. **Residuals:** `status.json` has **no open R#** for this `plan_id` (or documented waiver per `mstar-artifacts`).
|
|
46
48
|
4. **Checkout alignment:** `Working branch` and `Review range / Diff basis` match QC report verified lines.
|
|
47
49
|
5. **`QA gate reason`:** One line naming the tier (e.g. `hotfix-inline`, `small-feature-clean-qc`).
|
|
@@ -17,7 +17,7 @@ Use this reference when PM is dispatching QC, consolidating review verdicts, or
|
|
|
17
17
|
0. Pre-dispatch: read `mstar-review-qc`.
|
|
18
18
|
1. `review-package MERGE_BASE HEAD` → branch diff under `{SDD_DIR}/review/`.
|
|
19
19
|
2. Dispatch **three** QC seats in **one** message (**N=3**); alignment fields text-identical across reports and Assignment.
|
|
20
|
-
3. PM writes `{SDD_DIR}/review/qc-consolidated.md` + main plan durable summary; after fixes → targeted re-review
|
|
20
|
+
3. PM writes `{SDD_DIR}/review/qc-consolidated.md` + main plan durable summary; after fixes → targeted re-review of affected findings and fix delta; three seats only when all three have affected findings (new wave files do not broaden scope).
|
|
21
21
|
|
|
22
22
|
**NEVER** end an SDD plan with only a single final `qc-specialist` unless user override: `QC mode: single — override: <reason>`.
|
|
23
23
|
|
|
@@ -39,7 +39,7 @@ Use this reference when PM is dispatching QC, consolidating review verdicts, or
|
|
|
39
39
|
- **NEVER** under `Findings cleanup: zero-residual`, use `Approve with residuals` or open R# for fixable findings — fix-now + re-review; residual only for true blocker-defer + roadmap.
|
|
40
40
|
- **NEVER** drop residual tracking to chat-only when `Approve with residuals` applies.
|
|
41
41
|
- **NEVER** treat "two of three QC reports arrived" as sufficient — missing seat → `Blocked`.
|
|
42
|
-
- **NEVER** re-dispatch all three after routine fix when only one or two had blockers — **targeted re-review
|
|
42
|
+
- **NEVER** re-dispatch all three after routine fix when only one or two had blockers — **targeted re-review**; the `full tri-review` label changes seats, never the allowed delta.
|
|
43
43
|
- **NEVER** create `qc1-rev2.md` for **targeted** re-review; update original bundle `qcN.md` in place.
|
|
44
44
|
|
|
45
45
|
## Consolidated Decision Template
|
|
@@ -15,7 +15,7 @@ When multiple routes apply, set one `Primary` route in Assignment and treat othe
|
|
|
15
15
|
6. Bug fix
|
|
16
16
|
7. Refactor
|
|
17
17
|
8. Feature size bucket (large/medium/small)
|
|
18
|
-
9. User-visible UI/critical-flow evidence
|
|
18
|
+
9. User-visible UI/critical-flow unit evidence (additional gate); real browser/device/E2E requires an explicit independent `mstar-e2e` request, never an automatic iteration QA gate
|
|
19
19
|
|
|
20
20
|
## Size Heuristics
|
|
21
21
|
|
|
@@ -96,4 +96,4 @@ Document override as `Dev owner tie-break: single id — <reason>`.
|
|
|
96
96
|
- `Dev routing` matches task board ownership
|
|
97
97
|
- Parallel intent and branch/worktree policy align
|
|
98
98
|
- **`QA gate`** and **`QA gate reason`** set per `qa-trigger-matrix.md`
|
|
99
|
-
- If UI-visible changes: `QA gate: mandatory`
|
|
99
|
+
- If UI-visible changes: `QA gate: mandatory` with unit-evidence mapping per `qa-trigger-matrix.md`; record unverified real-environment behavior for a separately requested `mstar-e2e` workflow, not an iteration gate
|
|
@@ -104,6 +104,8 @@ In invoke-based hosts (OpenCode / Cursor Task / Codex with callable multi-agent
|
|
|
104
104
|
|
|
105
105
|
Host invoke/dispatch details: `mstar-host` → active host reference and `references/parallel-dispatch.md`.
|
|
106
106
|
|
|
107
|
+
**dsh:** mstar **stops arming** a goal — dsh progress is the native workflow (workflow snapshot phases + dispatch gates + **subagent settle notifications**), never a `/goal` objective or goal round loop. Phase 2 is a PM-local loop (dispatch → wait for the child's settle notification → next dispatch); a dispatched child owning the critical path means **wait**, not a duplicate work unit. Rule → `mstar-host` → `references/dsh.md`.
|
|
108
|
+
|
|
107
109
|
Dispatch mechanics and templates:
|
|
108
110
|
`references/project-manager/dispatch-and-assignment.md`.
|
|
109
111
|
|
|
@@ -122,7 +124,7 @@ If any item below matches, fix the dispatch/plan state or mark `Blocked`—do **
|
|
|
122
124
|
- **NEVER** dispatch same-repo **≥2 concurrent writable implement** tracks without **`references/parallel-writable-pre-dispatch.md`**(per-track worktree + absolute **`Worktree path`**;**N invokes ≠ isolation** — also `mstar-dispatch-gates` dual-gate table).
|
|
123
125
|
- **NEVER** point QC at a single dev worktree/`Review cwd` that cannot contain **all** claimed changes from parallel tracks until Git integration lands on one `Working branch` `HEAD` (`mstar-branch-worktree` QC/QA alignment).
|
|
124
126
|
- **NEVER** skip `qa-engineer` on `QA gate: report-only` primary routes—still dispatch with `QA mode: report-only`; QC skip rules are separate and explicit.
|
|
125
|
-
- **NEVER** use `QA gate: pm-acceptance`
|
|
127
|
+
- **NEVER** use `QA gate: pm-acceptance` outside the tiers in `qa-trigger-matrix.md` (open R# or unclean QC require QA). Missing real UI evidence is a separately requested `mstar-e2e` concern, not permission for iteration QA to run browser/device tests.
|
|
126
128
|
- **NEVER** mark plan `Done` on runtime/behavior change without `QA gate: mandatory` fulfilled or completed PM acceptance checklist (`qa-trigger-matrix.md`).
|
|
127
129
|
- **NEVER** run tests/repro in the PM orchestration thread to substitute for `QA gate: mandatory` dispatch.
|
|
128
130
|
- **NEVER** let non-PM/non-QA roles mark plan `Done`.
|
|
@@ -255,7 +257,7 @@ PM must:
|
|
|
255
257
|
|
|
256
258
|
- Dispatch QC with aligned scope fields
|
|
257
259
|
- Consolidate to one gate verdict
|
|
258
|
-
- Assign fixes; default **targeted QC re-review** (same `{SDD_DIR}/review/qcN.md`)
|
|
260
|
+
- Assign fixes; default **targeted QC re-review** by the owning seat (same `{SDD_DIR}/review/qcN.md`), limited to its findings, fix delta and direct contracts. `QC re-review: full tri-review` changes seat count only, not review scope (`mstar-harness-core` § 定向执行与验证边界).
|
|
259
261
|
- Record non-blocking leftovers as residual findings
|
|
260
262
|
- Keep open vs archived residual state coherent at closure
|
|
261
263
|
- Sync plan/status in the same coordination round
|
|
@@ -11,8 +11,8 @@ Layer **L4** runs after the QC gate. **`QA gate: pm-acceptance`** is PM-only —
|
|
|
11
11
|
| L3 Plan QC (`qc-specialist*`) | L4 QA (`qa-engineer`) |
|
|
12
12
|
| --- | --- |
|
|
13
13
|
| **Code review** — independent lenses on branch **diff** (logic, security, contracts) | Acceptance against plan DoD + review bundle + **L1** evidence |
|
|
14
|
-
| Find defects in source; `Request Changes` / residual registration via PM | Verify fixes, R# lifecycle, run **targeted
|
|
15
|
-
| **Does not** run test/build suites (shared tri worktree) | May run
|
|
14
|
+
| Find defects in source; `Request Changes` / residual registration via PM | Verify fixes, R# lifecycle, run only assigned **targeted unit tests** when needed, Done recommendation |
|
|
15
|
+
| **Does not** run test/build suites (shared tri worktree) | May run named unit-test checks; default **reuse L1 / prior QA evidence** |
|
|
16
16
|
|
|
17
17
|
**Do not collapse L4 into L3.** QC reviewers do not close residuals, mark plan `Done`, or produce the runtime test log that acceptance depends on — that is L1 (implement) and/or L4 (QA).
|
|
18
18
|
|
|
@@ -21,26 +21,25 @@ Layer **L4** runs after the QC gate. **`QA gate: pm-acceptance`** is PM-only —
|
|
|
21
21
|
| `QA mode` | When | Behavior |
|
|
22
22
|
| --- | --- | --- |
|
|
23
23
|
| **`acceptance-only`** (default) | Most `mandatory` dispatches | Map DoD to **dev Completion Report / SDD TDD / CI** evidence; re-run only gaps listed below |
|
|
24
|
-
| **`
|
|
25
|
-
| **`report-only`** | `QA gate: report-only` | Structured findings; no business-code edits unless allowed |
|
|
24
|
+
| **`targeted`** | A specific changed behavior or unit-test evidence gap | Run only named affected unit-test files/cases/selectors |
|
|
25
|
+
| **`report-only`** | `QA gate: report-only` | Structured findings within assigned evidence/unit-test scope; no business-code edits unless allowed |
|
|
26
26
|
|
|
27
27
|
## Evidence reuse first (`acceptance-only`)
|
|
28
28
|
|
|
29
29
|
When **`QA mode: acceptance-only`**:
|
|
30
30
|
|
|
31
|
-
1. Read implementer Completion Report(s) / SDD
|
|
32
|
-
2. If **L1** (or prior QA) already provides
|
|
31
|
+
1. Read implementer Completion Report(s) / SDD verification evidence and relevant CI links. Map each item to **`Review range / Diff basis`**; older-range evidence is reusable when its covered behavior remains unchanged, with the original range and applicability reason recorded. Read QC consolidated (or `qc.md`) for **findings and “Needs L4/QA verification”** notes — **not** as a substitute test log (QC is diff review).
|
|
32
|
+
2. If **L1** (or prior QA/CI) already provides reproducible relevant evidence → **verify mapping** to plan Acceptance Criteria; do not re-execute covered checks. Non-executable docs/policy may supply `scoped-check` evidence (`mstar-sdd/references/file-handoffs.md`), not a fabricated test log.
|
|
33
33
|
3. Document in Completion Report **Validation**: which ACs are covered by reused evidence vs newly executed checks.
|
|
34
34
|
|
|
35
|
-
##
|
|
35
|
+
## Fill only the affected gap
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
Scope authority → `mstar-harness-core` § 定向执行与验证边界. All QA modes remain unit-only; a mode, risk level or absent evidence does not grant wider execution.
|
|
38
38
|
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
-
|
|
43
|
-
- Open R# marked resolved this round — verify each with targeted repro/tests
|
|
39
|
+
- Missing behavior-critical evidence: name the uncovered AC and its targeted unit-test check; run only that assigned check, or return the concrete gap to PM if it is not specified.
|
|
40
|
+
- A fix or changed `Review range`: invalidate only evidence affected by the fix; preserve the rest. Resolved R# items need only their corresponding unit-test evidence or scoped documentation/policy evidence.
|
|
41
|
+
- Missing screenshot or other real-environment evidence: record the unverified behavior and a pending independent E2E request for PM. Never launch a browser/device/E2E, change roles, or block/reopen routine iteration QA solely for that separate workflow. Unit acceptance cannot claim real-environment acceptance.
|
|
42
|
+
- User-authorized local full-suite execution belongs to a separate implementer/ops action; QA may consume its result but has no `full` mode. Refer the authorization scope to PM instead of executing it here.
|
|
44
43
|
|
|
45
44
|
## Unchanged hard duties
|
|
46
45
|
|
|
@@ -6,7 +6,7 @@ Detailed L4 procedures: `references/qa-engineer/*.md`.
|
|
|
6
6
|
|
|
7
7
|
## Role Mission
|
|
8
8
|
|
|
9
|
-
You are `qa-engineer`, the L4 **acceptance seat**: map plan DoD to evidence, verify residuals
|
|
9
|
+
You are `qa-engineer`, the L4 **acceptance seat**: map plan DoD to evidence, verify assigned residuals with targeted unit tests, return reproducible QA outputs. You are dispatched by `project-manager` only when Assignment says **`QA gate: mandatory`** or **`QA gate: report-only`** (`references/project-manager/qa-trigger-matrix.md`).
|
|
10
10
|
|
|
11
11
|
## Non-Recursive Dispatch Rule (Hard)
|
|
12
12
|
|
|
@@ -22,11 +22,12 @@ If any item below matches, **stop** and return `Blocked` to `project-manager` in
|
|
|
22
22
|
- **NEVER** switch to an unprescribed worktree/branch to “pick up the other half” of parallel development; if the current `HEAD` cannot contain the claimed diff scope, **Blocked** and ask PM for Git integration or a corrected assignment (`mstar-branch-worktree`).
|
|
23
23
|
- **NEVER** delegate test design, execution, evidence, or QA reports to `explore`.
|
|
24
24
|
- **NEVER** issue pass / sign-off language when checkout alignment, `Review range / Diff basis`, or mandatory commands cannot be verified—use `Blocked` with the concrete gap.
|
|
25
|
-
- **NEVER**
|
|
25
|
+
- **NEVER** execute beyond targeted unit tests, under any QA mode or preset (including `report-only` / `none`). No full suite, browser, device, E2E, real install/deployment probe, or self-switch to ops. Refer unmet environment verification to PM for a separately requested `mstar-e2e` workflow; keep its pending results separate from iteration QA.
|
|
26
|
+
- **NEVER** rerun unaffected evidence merely because HEAD changed or a fix landed. Follow `references/qa-engineer/acceptance-gate.md`; QC reports contain review findings, not runtime logs. Explicit user-authorized full tests are assigned to an implementer/ops separately; QA consumes their evidence.
|
|
26
27
|
|
|
27
28
|
## Core QA Gate Duties
|
|
28
29
|
|
|
29
|
-
Before sign-off: validate phase-gate prerequisites, Assignment metadata alignment, and reproducible evidence for any **new** checks.
|
|
30
|
+
Before sign-off: validate phase-gate prerequisites, Assignment metadata alignment, and reproducible evidence for any **new** checks. Mode/mapping rules → **`references/qa-engineer/acceptance-gate.md`**.
|
|
30
31
|
|
|
31
32
|
## Branch & Review Context Gate
|
|
32
33
|
|
|
@@ -55,7 +56,7 @@ External topic skills below are **presets activated by PM**, not unconditional r
|
|
|
55
56
|
|
|
56
57
|
1. `mstar-harness-core` → `mstar-coding-behavior` → `mstar-dispatch-gates` + `mstar-branch-worktree` (anti-recursion; checkout alignment with QC)
|
|
57
58
|
2. Host adapter: `mstar-host` (detect; Read `references/opencode.md`, `cursor.md`, or `codex.md`)
|
|
58
|
-
3. On demand: `mstar-artifacts` (closing R#); `mstar-conventions` (paths); `mstar-design-md` (UI
|
|
59
|
+
3. On demand: `mstar-artifacts` (closing R#); `mstar-conventions` (paths); `mstar-design-md` (map supplied UI evidence to DESIGN.md; no environment execution); `mstar-phase-gates` (Assignment references verification phase); review bundle files and QC consolidated inputs named in Assignment
|
|
59
60
|
|
|
60
61
|
## Completion Report
|
|
61
62
|
|
|
@@ -9,7 +9,7 @@ Extension of `references/qc-specialist-shared.md`. Read at QC session start when
|
|
|
9
9
|
|
|
10
10
|
## Deep review 触发规则(自动判定,无需人工指定)
|
|
11
11
|
|
|
12
|
-
QC reviewer 在开工时根据以下信号自判是否启用 deep review。满足 **≥2
|
|
12
|
+
QC reviewer 在开工时根据以下信号自判是否启用 deep review。满足 **≥2 条**时仅选择与 Assignment 变更问题相关的透镜;触发不会扩大 review 范围。
|
|
13
13
|
|
|
14
14
|
### 触发信号
|
|
15
15
|
|
|
@@ -17,12 +17,12 @@ QC reviewer 在开工时根据以下信号自判是否启用 deep review。满
|
|
|
17
17
|
|---|------|---------|
|
|
18
18
|
| S1 | **变更规模大** | `git diff --stat <Review range>` → 变更行数 ≥ 200 或 变更文件数 ≥ 8 |
|
|
19
19
|
| S2 | **触及敏感模块** | diff 中包含 `auth/`、`payment/`、`security/`、`permission/`、`login/`、`migration/`、`db/migrate/`、`schema/` 路径 |
|
|
20
|
-
| S3 | **首次涉足新领域** |
|
|
20
|
+
| S3 | **首次涉足新领域** | 已提供的相关 knowledge / 索引未覆盖 diff 模块,或 plan 标记首次实现;禁止为证明缺失扫描全知识库 |
|
|
21
21
|
| S4 | **数据结构变更** | diff 中包含 DDL(`CREATE TABLE`、`ALTER TABLE`、`ADD COLUMN`、schema 文件、migration 文件) |
|
|
22
22
|
| S5 | **plan 显式声明高风险** | plan 正文或 workflow snapshot plan 行的 metadata 中包含 `high-risk`、`critical-path`、`breaking-change` 标记 |
|
|
23
23
|
| S6 | **多模块耦合** | diff 跨越 ≥3 个不同模块/包/目录边界 |
|
|
24
24
|
|
|
25
|
-
**判定**:满足 ≥2 条 →
|
|
25
|
+
**判定**:满足 ≥2 条 → 在既定 changed scope 内启用相关透镜。QC reviewer 在报告 `## Scope` 节中写明判定依据(例:`Deep review: triggered (S1: 350 lines / 12 files, S2: auth/ + payment/)`)。
|
|
26
26
|
|
|
27
27
|
## 透镜选择
|
|
28
28
|
|
|
@@ -43,7 +43,7 @@ QC reviewer 在开工时根据以下信号自判是否启用 deep review。满
|
|
|
43
43
|
| S2 (敏感模块) | **Auth Lens**(若涉及 auth/login)、**Data Migration Lens**(若涉及 DDL/migration)、**Input Validation Lens**(若涉及用户输入/API) | 全体 |
|
|
44
44
|
| S3 (新领域) | **Standards Lens**、**Testing Lens** | 全体 |
|
|
45
45
|
| S4 (数据结构变更) | **Data Migration Lens** | 全体 |
|
|
46
|
-
| S5 (显式高风险) |
|
|
46
|
+
| S5 (显式高风险) | **与该变更风险直接相关的透镜**(不因 high-risk 全量扩审) | 全体 |
|
|
47
47
|
|
|
48
48
|
---
|
|
49
49
|
|
|
@@ -100,5 +100,5 @@ QC reviewer 在开工时根据以下信号自判是否启用 deep review。满
|
|
|
100
100
|
即使触发信号阈值达标,以下情况 QC reviewer 仍按默认单透镜模式审查:
|
|
101
101
|
|
|
102
102
|
- **Re-review(targeted re-review)**:只在原报告基础上验证修复点,不重新扩展审查范围
|
|
103
|
-
- **Hotfix**:时间窗口不允许扩展审查,按 hotfix
|
|
103
|
+
- **Hotfix**:时间窗口不允许扩展审查,按 hotfix 压缩路径处理(不自动追加事后全量审查)
|
|
104
104
|
- **上下文限制**:宿主会话上下文不足以加载透镜内容时,标记为 `Deep review: skipped (context constraint)` 并仅执行默认审查
|
|
@@ -17,6 +17,8 @@ Write under the Assignment-provided **`{SDD_DIR}/review/qc#.md`** (`qc1`…`qc3`
|
|
|
17
17
|
- Report Timestamp: {ISO-8601}
|
|
18
18
|
|
|
19
19
|
## Scope
|
|
20
|
+
- Changed scope: {assigned changed hunks and directly affected interfaces; re-review: finding IDs + fix delta}
|
|
21
|
+
- Reused evidence: {unchanged L2 / prior-review evidence; do not rerun it}
|
|
20
22
|
- plan_id: {same as Assignment — or `N/A` + Feature / scope label from Assignment}
|
|
21
23
|
- Review range / Diff basis: {exact copy from Assignment}
|
|
22
24
|
- Working branch (verified): {name}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Extension of `references/qc-specialist-shared.md`. Use during step 5 of `reviewer-workflow.md`.
|
|
4
4
|
|
|
5
|
-
Apply by **reading the diff and related source** — do not run project test/build/lint suites to tick these boxes (see `reviewer-workflow.md`).
|
|
5
|
+
Apply only affected items by **reading the assigned changed diff and directly related source** — do not run project test/build/lint suites to tick these boxes (see `reviewer-workflow.md`).
|
|
6
6
|
|
|
7
7
|
## Code quality
|
|
8
8
|
|
|
@@ -4,7 +4,7 @@ Extension of `references/qc-specialist-shared.md`. Read when dispatched as `qc-s
|
|
|
4
4
|
|
|
5
5
|
## What this seat is
|
|
6
6
|
|
|
7
|
-
**L3 plan QC = independent code review** on the
|
|
7
|
+
**L3 plan QC = independent code review** on the assigned changed diff and directly affected interfaces: logic, contracts, security, maintainability, reliability — same job family as a human PR reviewer.
|
|
8
8
|
|
|
9
9
|
| This seat does | This seat does **not** |
|
|
10
10
|
|----------------|-------------------------|
|
|
@@ -26,10 +26,10 @@ Layer SSOT → `mstar-review-qc/references/review-responsibility-boundaries.md`.
|
|
|
26
26
|
## Standard review workflow
|
|
27
27
|
|
|
28
28
|
1. **Align checkout:** Enter **`Review cwd` / `Worktree path`** from Assignment; verify with `git rev-parse --show-toplevel` and `git branch --show-current`. Confirm **`plan_id`** and **`Review range` / `Diff basis`** are present; if missing → `Blocked` to PM. All `git diff` / `git log` must reproduce the assigned range.
|
|
29
|
-
2. **Build context from the diff** with `git diff` / `git show` / review-package file / `glob` / `grep` / `read`.
|
|
29
|
+
2. **Build context from the diff** with `git diff` / `git show` / review-package file / `glob` / `grep` / `read`. Use the supplied relevant knowledge/context; do not launch global exploration or delegate navigation.
|
|
30
30
|
3. Re-verify branch vs **`Working branch` / `Branch policy`** before concluding.
|
|
31
31
|
4. **Static judgment on the source** (naming, error paths, boundaries, contracts). Default tooling = read/grep only. **Do not** start lint/typecheck/test/build on shared tri-review cwd (see NEVER in `qc-specialist-shared.md`).
|
|
32
|
-
5.
|
|
32
|
+
5. Apply only the **`reviewer-checklist.md`** items affected by the diff. Reuse unchanged L2 evidence; re-review only the assigned findings and fix delta. Stop when these questions have evidence.
|
|
33
33
|
6. Produce structured findings with severity and evidence. PM maps report sections to register **`severity`** (`projects/<id>/residuals.json` → `entries[<plan-id>]`) per `mstar-artifacts/references/status-and-residuals.md` — do not invent non-canonical severity strings.
|
|
34
34
|
7. **Write report:** Write `.md` to the Assignment-provided `{SDD_DIR}/review/` report path. Do not commit raw bundle reports unless Assignment explicitly says `Review archive mode: tracked reports`.
|
|
35
35
|
8. **No stall:** When done, emit **Completion Report** in the same turn — no “notify PM?” choosers.
|
|
@@ -38,7 +38,8 @@ Layer SSOT → `mstar-review-qc/references/review-responsibility-boundaries.md`.
|
|
|
38
38
|
|
|
39
39
|
If Acceptance Criteria or high-risk paths need **runtime** proof and L1 reports leave a gap:
|
|
40
40
|
|
|
41
|
-
- Record in findings / Summary: `Needs
|
|
41
|
+
- Record in findings / Summary: `Needs targeted unit evidence: <affected behavior and named case>` with confidence Medium/Low as appropriate.
|
|
42
|
+
- Browser/device/E2E gaps become an explicitly requested independent **`mstar-e2e`** workflow, not QA commands or an automatic iteration gate.
|
|
42
43
|
- Still complete the **diff review** and return a verdict for what you *can* judge from source.
|
|
43
44
|
- Do **not** run the missing commands yourself to fill the gap.
|
|
44
45
|
|
|
@@ -17,7 +17,9 @@ You are QC reviewer #{reviewer_index} (or sole reviewer when `QC mode: single`),
|
|
|
17
17
|
You are a **code reviewer** (diff + language/logic + risk lenses) — **not** a test runner and **not** a substitute for `qa-engineer`.
|
|
18
18
|
Your output is a structured QC report plus Completion Report.
|
|
19
19
|
|
|
20
|
-
**Default (SDD):** plan QC tri on
|
|
20
|
+
**Default (SDD):** plan QC tri on the assigned change review-package (`QC mode: full tri-review`). **Exception:** `Execution mode: inline` → single-seat `qc.md`.
|
|
21
|
+
|
|
22
|
+
**Scope:** follow **`mstar-harness-core`** § 定向执行与验证边界. Initial review covers assigned changed hunks and directly affected interfaces; reuse L2 evidence. Re-review covers only assigned findings and fix delta. Seat count never authorizes full-repository review or fresh global exploration.
|
|
21
23
|
|
|
22
24
|
**Do (L3):** Read `git diff` / review-package; reason about correctness, security, contracts, maintainability, reliability; flag coverage **gaps in the diff** (missing tests for changed behavior); write findings with evidence from source.
|
|
23
25
|
|
|
@@ -19,7 +19,7 @@ If you were dispatched as an SDD implementer or task reviewer, skip PM orchestra
|
|
|
19
19
|
|
|
20
20
|
## Core principle
|
|
21
21
|
|
|
22
|
-
**Default:** fresh implementer
|
|
22
|
+
**Default:** fresh implementer per ready task + task-scoped review + plan QC on the changed diff and directly affected interfaces. Execution scope → **`mstar-harness-core`** § 定向执行与验证边界.
|
|
23
23
|
|
|
24
24
|
**Optional:** **`SDD implementer session: sticky`** — same implementer subagent across sequential tasks on one plan/branch; **task reviewers stay fresh per task**. SSOT → **`references/sticky-implementer-session.md`**.
|
|
25
25
|
|
|
@@ -38,6 +38,12 @@ Before Task 1, scan plan once for:
|
|
|
38
38
|
|
|
39
39
|
Batch all findings for the human in one message. If clean, proceed silently.
|
|
40
40
|
|
|
41
|
+
## Ready-task scheduling (PM only · Decision Rules)
|
|
42
|
+
|
|
43
|
+
Dispatch independent ready tasks concurrently after L2 worktree isolation. Keep one canonical per-plan `{SDD_DIR}`. PM alone writes its `context.json`, `progress.md` and workflow snapshot; prepare context-dependent helper outputs serially. Each writable track has its own worktree/branch and immutable task-specific absolute brief/report/diff paths. Artifact subdirectories are namespaces inside that SDD root, never a second SDD root. Parallel leaves use the supplied paths directly and do not invoke shared-context helpers or read mutable context to choose their checkout; never share a writable session or `implementer-session.json`. Use **fresh** implementers for parallel tasks. Serialize only actual dependencies, overlapping write ownership, one sticky session, and integration merges; state the dependency when serializing. A task reviewer may run alongside an unrelated ready implementer. PM alone reconciles reports into the shared `progress.md` and workflow snapshot.
|
|
44
|
+
|
|
45
|
+
**Dependent-task readiness:** review approval alone does not make a prerequisite available. PM serially integrates the reviewed prerequisite commits, then creates or updates the idle dependent worktree from that integrated state before recording its `BASE_SHA` and dispatching. For each required reviewed commit, record `git -C "$FEATURE_CWD" merge-base --is-ancestor <prerequisite-sha> <BASE_SHA>` with exit 0; a missing commit blocks only that dependent task. Do not move an active task's base; independent ready tasks continue concurrently.
|
|
46
|
+
|
|
41
47
|
## Per-task loop (PM only · Workflow)
|
|
42
48
|
|
|
43
49
|
1. Record `BASE_SHA` (never use `HEAD~1` later)
|
|
@@ -50,9 +56,9 @@ Batch all findings for the human in one message. If clean, proceed silently.
|
|
|
50
56
|
6. Dispatch **fresh** task reviewer — role **`code-reviewer`** (L2; **not** `qc-specialist*`; host fallback generic + C5b → `mstar-host` C5) — brief, report, diff, Global Constraints — `references/task-reviewer-prompt.md` — **never** sticky resume for reviewers
|
|
51
57
|
7. Fix loop for Critical/Important; re-review until approved
|
|
52
58
|
8. Append `progress.md`; update the workflow snapshot plan row (`workflows/<id>/snapshot.json` → `plans[]`) `task_commits[]` and `implementer-session.json` `last_task` if sticky
|
|
53
|
-
9.
|
|
59
|
+
9. Release dependent tasks only after reviewed prerequisite commits are present in their assigned base, per Dependent-task readiness above; independent ready tasks need not wait
|
|
54
60
|
|
|
55
|
-
**Never** dispatch
|
|
61
|
+
**Never** dispatch parallel writers without isolated worktrees and disjoint ownership. Merge their outputs serially before producing the plan review-package.
|
|
56
62
|
|
|
57
63
|
Detail: **`references/file-handoffs.md`**.
|
|
58
64
|
|
|
@@ -87,18 +93,20 @@ Host mapping → **`mstar-host`** references (`model` / Task field).
|
|
|
87
93
|
|
|
88
94
|
1. `mstar sdd review-package MERGE_BASE HEAD` → branch diff in `{SDD_DIR}/review/`
|
|
89
95
|
2. PM dispatches **plan QC tri-review (L3)** — **`QC mode: full tri-review`**, **N=3** — with branch review-package path and report paths under `{SDD_DIR}/review/` → **`mstar-review-qc`** · **`mstar-dispatch-gates`**. Layer SSOT → **`mstar-review-qc/references/review-responsibility-boundaries.md`**. PM writes `{SDD_DIR}/review/qc-consolidated.md` and durable main-plan gate summary. **Mandatory whenever `Execution mode: sdd`** (single-plan or iteration).
|
|
90
|
-
3. Critical/Important QC findings →
|
|
96
|
+
3. Critical/Important QC findings → fix assignments partitioned by ownership/dependency, then targeted re-review. Independent fixes run concurrently; PM retains the complete findings ledger. Fix rounds run on four mechanics — the per-task fix loop applies the same (`references/file-handoffs.md`):
|
|
91
97
|
- **Unverified rounds count**: a fix round without verification evidence (reviewer not confirmed / report not on disk) is **not clean** — re-check and count the round; never enter the convergence branch.
|
|
92
|
-
- **
|
|
93
|
-
- **Capped cross-round excerpt**: from round ≥2, the fix dispatch attaches
|
|
98
|
+
- **Complete ledger, scoped dispatch**: PM retains every open finding, including unverified items; each fix assignment carries only its owned findings and relevant fix delta. Unrelated findings do not expand a leaf task.
|
|
99
|
+
- **Capped cross-round excerpt**: from round ≥2, the fix dispatch attaches only relevant prior findings and dispositions (advisory caps: ~500 words per round, ~1500 total — suggested values, not hard limits).
|
|
94
100
|
- **Honest non-convergence**: open findings at wave close → list them in detail and state the disposition — re-feed to the next fix round **or** transfer to residual tracking — never silently close.
|
|
95
101
|
4. QA gate → **`mstar-harness-core`** Done rules; PM **`mstar-roles/references/project-manager/qa-trigger-matrix.md`**
|
|
96
102
|
|
|
103
|
+
> **On dsh:** the plan QC tri MAY run through the native **`workflow`** tool instead of three `subagent` dispatches — take the `script` + `meta` (`meta.name: mstar-qc-tri`) from skill **`mstar-host`** → `references/dsh-workflow-scripts.md` (§ `mstar-qc-tri`); the three seats stay read-only and PM persists `{SDD_DIR}/review/qc1.md`…`qc3.md` from their returned envelopes. Independent ready implementers use background **`subagent`** dispatches with isolated writable tracks — the `workflow` channel is read-only fan-out only; when the tool is unmounted (`ptc` preset) dispatch the three seats as background `subagent` calls (skill **`mstar-host`** → `references/dsh.md`).
|
|
104
|
+
|
|
97
105
|
## Progress ledger(Evidence)
|
|
98
106
|
|
|
99
|
-
|
|
107
|
+
PM at start: `cat {SDD_DIR}/progress.md`. Tasks marked complete are DONE — do not re-dispatch after compaction.
|
|
100
108
|
|
|
101
|
-
|
|
109
|
+
PM appends on clean review: `Task N: complete (<base>..<head>, review clean)`.
|
|
102
110
|
|
|
103
111
|
Minor findings → `## Minor (for plan QC)` section in same file.
|
|
104
112
|
|
|
@@ -106,7 +114,7 @@ Minor findings → `## Minor (for plan QC)` section in same file.
|
|
|
106
114
|
|
|
107
115
|
## Red flags (NEVER)
|
|
108
116
|
|
|
109
|
-
- Parallel
|
|
117
|
+
- Parallel implementers sharing a worktree, ownership, or session
|
|
110
118
|
- Paste plan, diffs, or task history into dispatch prompts
|
|
111
119
|
- Dispatch reviewer without diff file
|
|
112
120
|
- `HEAD~1` as review BASE
|
|
@@ -4,14 +4,16 @@ PM and subagents move artifacts as **files**, not pasted text. Pasted content st
|
|
|
4
4
|
|
|
5
5
|
## Before implementer dispatch
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
**PM owns helper execution and shared coordination writes.** Keep one canonical per-plan `{SDD_DIR}` root; only PM writes its `context.json` and `progress.md`. Subdirectories namespace artifacts, not a second SDD root. Scheduling → `mstar-sdd` § Ready-task scheduling.
|
|
8
|
+
|
|
9
|
+
PM runs context-dependent `mstar sdd workspace`, `task-brief`, and `review-package` helpers serially for the corresponding assigned checkout/branch. These helpers may update shared context; parallel hosted leaves never invoke them. Before each dispatch, PM fixes absolute task-specific brief/report/diff destinations and copies `Worktree path` / branch into the Assignment. Updating context for another task must not change an already-dispatched leaf's inputs.
|
|
8
10
|
|
|
9
11
|
1. `export SDD_DIR=$(mstar sdd workspace <plan-id>)`
|
|
10
12
|
- Iteration L1 (implementer cwd = feature worktree):
|
|
11
13
|
`export MSTAR_CONTROL_ROOT=<control_worktree_path>`
|
|
12
14
|
or `mstar sdd workspace <plan-id> <control_worktree_path>`
|
|
13
15
|
so `{SDD_DIR}` lands on the control harness (default-gitignored plans/status/sdd). Do not create a second SDD tree under the feature checkout.
|
|
14
|
-
2.
|
|
16
|
+
2. PM writes `$SDD_DIR/context.json` for the current helper operation — parallel hosted handoffs pin these values in their Assignment instead of consulting mutable plan context:
|
|
15
17
|
|
|
16
18
|
```json
|
|
17
19
|
{
|
|
@@ -26,13 +28,13 @@ Run the SDD helpers through the engine CLI **`mstar sdd …`** (engine-backed; t
|
|
|
26
28
|
|
|
27
29
|
All paths absolute; `planFile`/`sddDir` must resolve inside the control harness; `featureCwd` must be the assigned feature worktree on `workingBranch`. The declared control root is authoritative — never re-inferred from the feature cwd.
|
|
28
30
|
3. `mstar sdd task-brief <plan-file> <N> --context "$SDD_DIR/context.json"` — bound producer: validates the artifact destination **before** mkdir/write and prints the absolute brief path (`{SDD_DIR}/task-N-brief.md`).
|
|
29
|
-
4. Record `BASE_SHA` (`git rev-parse HEAD` before dispatch).
|
|
31
|
+
4. Record `BASE_SHA` (`BASE_SHA=$(git -C "$FEATURE_CWD" rev-parse HEAD)` before dispatch). For dependent tasks, first satisfy `mstar-sdd` § Ready-task scheduling: PM serially integrates reviewed prerequisite commits and records their ancestry in this base. Include those commit/base IDs and the check result in the handoff; review approval alone is insufficient.
|
|
30
32
|
5. Dispatch implementer with:
|
|
31
33
|
- One line scene-setting (where task fits)
|
|
32
34
|
- Absolute brief path: read first — verbatim requirements
|
|
33
35
|
- Interfaces / decisions brief cannot know
|
|
34
36
|
- Absolute report path: `$SDD_DIR/task-N-report.md`
|
|
35
|
-
- Absolute control root, feature cwd,
|
|
37
|
+
- Absolute control root, feature cwd, branch and plan paths, plus task-specific brief/report/diff paths fixed for this dispatch; the context path is PM coordination metadata, not a leaf checkout selector
|
|
36
38
|
- `Model tier` → host-specific model (required)
|
|
37
39
|
- **`SDD implementer session`**: `fresh` (new subagent) or `sticky` (resume — see **`sticky-implementer-session.md`**)
|
|
38
40
|
|
|
@@ -42,20 +44,44 @@ Implementer writes full report to `task-N-report.md`. Return to PM only:
|
|
|
42
44
|
|
|
43
45
|
- Status: `DONE` | `DONE_WITH_CONCERNS` | `NEEDS_CONTEXT` | `BLOCKED`
|
|
44
46
|
- Commits (SHAs)
|
|
45
|
-
- One-line
|
|
47
|
+
- One-line verification summary (affected tests or scoped static evidence)
|
|
46
48
|
- Concerns (if any)
|
|
47
49
|
|
|
50
|
+
## Verification evidence
|
|
51
|
+
|
|
52
|
+
Choose evidence from the actual diff, not the file extension. Scope limits → `mstar-harness-core` § 定向执行与验证边界.
|
|
53
|
+
|
|
54
|
+
- **Executable logic**: report the affected test file(s), exact command/selector and actual output; bug fixes include the reproduction red/green evidence. No `Verification mode` is needed for this test triple.
|
|
55
|
+
- **Non-executable documentation or prompt/skill policy**: use `Verification mode: scoped-check` with real scoped static or before/after observable evidence. This mode cannot exempt executable code, configuration logic or executable snippets from corresponding tests. Mixed changes retain executable test evidence and do not claim a scoped-check exemption for the task.
|
|
56
|
+
|
|
57
|
+
```markdown
|
|
58
|
+
Verification mode: scoped-check
|
|
59
|
+
Changed files: <actual non-executable files>
|
|
60
|
+
Tests: N/A
|
|
61
|
+
Reason: <why scoped evidence fits the actual change>
|
|
62
|
+
Check command: <exact targeted command actually run>
|
|
63
|
+
Check result: <actual exit/result and observed output>
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
`Check result` accepts concrete static-tool output (for example `docs/guide.md:12: scoped rule`); a test-style PASS/exit token is not required. It must be nonempty and non-placeholder. Whether an observation is truthful and sufficient remains PM/QC's responsibility.
|
|
67
|
+
|
|
68
|
+
For appended fixes, begin each new block with `## Verification round: <concrete label>` (for example `fix 1`). Only the last such round is active; earlier rounds remain history and cannot fill missing fields. A report without round headings is one active block. The active round supplies its complete applicable evidence, including `Verification mode` for scoped checks; executable rounds retain their own test triple without a mode. A blank/placeholder round label is invalid.
|
|
69
|
+
|
|
70
|
+
Replace every placeholder with actual evidence. Unknown or duplicate modes within the active round, missing/empty/placeholder fields, and bare `Tests: N/A` fail; do not copy the template as a report. `assertSddTddTriple` / `mstar lint <task-report>` validate structure only. PM/QC check the actual changed range, applicability and evidence honesty; the checker cannot establish that commands ran or intercept arbitrary shell execution. For policy changes, record the before/after expectation and triggering scenario alongside the concrete check; no broad model-eval matrix is implied.
|
|
71
|
+
|
|
48
72
|
## After implementer DONE
|
|
49
73
|
|
|
50
|
-
|
|
51
|
-
|
|
74
|
+
PM sets `FEATURE_CWD` from the completed task's immutable Assignment `Worktree path`, verifies its assigned branch, and restores context to that same checkout/branch. Generate the task-specific review package serially from this path; do not use the PM shell cwd for task endpoints. Leaves keep their dispatched inputs unchanged.
|
|
75
|
+
|
|
76
|
+
1. `HEAD_SHA=$(git -C "$FEATURE_CWD" rev-parse HEAD)`
|
|
77
|
+
2. `mstar sdd review-package "$BASE_SHA" "$HEAD_SHA" --context "$SDD_DIR/context.json"` — context `featureCwd` must equal the same `$FEATURE_CWD` used for `HEAD_SHA`; probes git there, writes the diff into the control sddDir, prints absolute paths.
|
|
52
78
|
3. Dispatch task reviewer with: brief path, report path, diff path, Global Constraints (verbatim from plan).
|
|
53
79
|
|
|
54
80
|
**Never use `HEAD~1` as BASE** — multi-commit tasks truncate.
|
|
55
81
|
|
|
56
82
|
## Bound child launch (CLI-launchable children)
|
|
57
83
|
|
|
58
|
-
|
|
84
|
+
**PM-only serialized launch:** when the implementer is a CLI command rather than a hosted subagent, PM holds the serialized context operation through context validation and child spawn, using the launch Assignment's fixed checkout/branch. Do not rotate context until the launch resolves. Hosted leaves never use this entry for their assigned checks; they run allowed commands directly from their verified assigned feature workdir and branch:
|
|
59
85
|
|
|
60
86
|
```bash
|
|
61
87
|
mstar sdd exec --context "$SDD_DIR/context.json" -- <argv...>
|
|
@@ -68,24 +94,18 @@ mstar sdd exec --context "$SDD_DIR/context.json" -- <argv...>
|
|
|
68
94
|
|
|
69
95
|
Hosted subagents are not cwd-bound by the launcher, so their dispatch prompt must carry the absolute destination contract (templates: `implementer-prompt.md`, `implementer-continuation-prompt.md`, `task-reviewer-prompt.md`) and their first step is to observe, then write:
|
|
70
96
|
|
|
71
|
-
1. Observe `pwd` and the checked-out branch in the tool's workdir; both must equal `featureCwd`/`workingBranch
|
|
72
|
-
2. Source edits go through the
|
|
97
|
+
1. Observe `pwd` and the checked-out branch in the tool's workdir; both must equal the immutable Assignment `Worktree path` / branch (`featureCwd`/`workingBranch`), never a newly read value from mutable plan context. On mismatch, stop and report — a declared-correct assignment does not make a wrong-checkout write safe.
|
|
98
|
+
2. Source edits go through the assigned feature workdir; write the report only to its fixed task-specific path and consume brief/diff artifacts only from the dispatched paths. Do not modify shared context/progress or invoke context-writing workspace/task-brief/review-package helpers; request missing artifacts from PM.
|
|
73
99
|
|
|
74
100
|
## Fix loop
|
|
75
101
|
|
|
76
|
-
Fix subagent appends to same `task-N-report.md` with
|
|
77
|
-
|
|
78
|
-
- Covering test file(s)
|
|
79
|
-
- Command run
|
|
80
|
-
- Output (pristine — warnings are findings)
|
|
81
|
-
|
|
82
|
-
Re-dispatch reviewer only when all three are present.
|
|
102
|
+
Fix subagent appends a new `## Verification round: <concrete label>` to the same `task-N-report.md`, followed by the complete affected executable test triple or applicable `scoped-check` block above, with actual output (warnings remain findings). Reuse unaffected evidence, citing its original range and why it remains applicable. Re-dispatch the owning reviewer for the assigned finding/fix delta when the required evidence is present.
|
|
83
103
|
|
|
84
|
-
The per-task fix loop applies the same fix-round mechanics as plan-level QC fix waves (SKILL.md · "After all tasks" — unverified rounds count,
|
|
104
|
+
The per-task fix loop applies the same fix-round mechanics as plan-level QC fix waves (SKILL.md · "After all tasks" — unverified rounds count, affected finding/fix-delta re-entry, capped cross-round excerpt, honest non-convergence): from round ≥2 the excerpt of prior rounds' findings/dispositions goes into the fix dispatch brief, and the round tally/verification history lands in `$SDD_DIR/progress.md`.
|
|
85
105
|
|
|
86
106
|
## Progress ledger
|
|
87
107
|
|
|
88
|
-
On clean task review,
|
|
108
|
+
On clean task review, PM alone appends to `$SDD_DIR/progress.md`:
|
|
89
109
|
|
|
90
110
|
```text
|
|
91
111
|
Task N: complete (<base>..<head>, review clean)
|
|
@@ -95,7 +115,7 @@ Minor findings: append under `## Minor (for plan QC)` in same file.
|
|
|
95
115
|
|
|
96
116
|
## Plan-level QC package
|
|
97
117
|
|
|
98
|
-
After all tasks:
|
|
118
|
+
After all tasks, PM generates the package serially from the integrated checkout with its corresponding context:
|
|
99
119
|
|
|
100
120
|
```bash
|
|
101
121
|
MERGE_BASE=$(git merge-base <target-branch> HEAD)
|