qfai 1.7.9 → 1.7.13
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 +34 -70
- package/assets/init/.qfai/README.md +11 -16
- package/assets/init/.qfai/assistant/agents/acceptance-test-engineer.md +51 -0
- package/assets/init/.qfai/assistant/agents/architecture-reviewer.md +57 -0
- package/assets/init/.qfai/assistant/agents/backend-engineer.md +40 -31
- package/assets/init/.qfai/assistant/agents/completion-reviewer.md +48 -0
- package/assets/init/.qfai/assistant/agents/delivery-planner.md +52 -0
- package/assets/init/.qfai/assistant/agents/devops-ci-engineer.md +31 -28
- package/assets/init/.qfai/assistant/agents/discovery-analyst.md +50 -0
- package/assets/init/.qfai/assistant/agents/doc-steward.md +30 -20
- package/assets/init/.qfai/assistant/agents/frontend-engineer.md +40 -31
- package/assets/init/.qfai/assistant/agents/implementation-reviewer.md +58 -0
- package/assets/init/.qfai/assistant/agents/orchestrator.md +19 -2
- package/assets/init/.qfai/assistant/agents/product-experience-architect.md +59 -0
- package/assets/init/.qfai/assistant/agents/product-surface-reviewer.md +60 -0
- package/assets/init/.qfai/assistant/agents/qa-gatekeeper.md +53 -48
- package/assets/init/.qfai/assistant/agents/qa-strategist.md +49 -0
- package/assets/init/.qfai/assistant/agents/requirements-analyst.md +32 -29
- package/assets/init/.qfai/assistant/agents/requirements-reviewer.md +48 -0
- package/assets/init/.qfai/assistant/agents/solution-architect.md +59 -0
- package/assets/init/.qfai/assistant/agents/test-design-analyst.md +64 -0
- package/assets/init/.qfai/assistant/instructions/agent-selection.md +64 -50
- package/assets/init/.qfai/assistant/instructions/communication.md +17 -0
- package/assets/init/.qfai/assistant/instructions/constitution.md +36 -1
- package/assets/init/.qfai/assistant/instructions/drift-protocol.md +1 -1
- package/assets/init/.qfai/assistant/instructions/requirements-decomposition.md +20 -13
- package/assets/init/.qfai/assistant/instructions/workflow.md +2 -1
- package/assets/init/.qfai/assistant/skills/qfai-atdd/SKILL.md +32 -31
- package/assets/init/.qfai/assistant/skills/qfai-atdd/references/test-case-depth-checklist.md +80 -0
- package/assets/init/.qfai/assistant/skills/qfai-configure/SKILL.md +21 -15
- package/assets/init/.qfai/assistant/skills/qfai-discussion/SKILL.md +95 -61
- package/assets/init/.qfai/assistant/skills/qfai-discussion/references/rcp_footer.md +17 -85
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/01_Context.md +9 -1
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/02_Inception-Deck.md +1 -1
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/03_Story-Workshop.md +17 -60
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/04_Sources.md +69 -2
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/06_REQ.md +1 -1
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/07_NFR.md +1 -1
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/09_Constraints.md +1 -1
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/10_Policy.md +1 -1
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/11_OQ-Register.md +1 -1
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/12_OQ-Resolution-Log.md +1 -1
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/13_Deferred.md +1 -1
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/14_Review-Request.md +25 -16
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/99_delta.md +1 -1
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/prototyping.yaml +9 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/review/Rxx_reviewer.md +8 -4
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/review/review_request.md +11 -7
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/review/summary.json +6 -44
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/00_index.md +29 -14
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/10_implementation_strategy.md +20 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/11_design_taste_interview.md +45 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/20_design_eval_invariant.md +68 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/21_design_eval_trend_derived.md +68 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/22_design_eval_product_specific.md +68 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/23_design_eval_aggregate.md +41 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/24_design_eval_dynamic_overrides.md +28 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/30_option_comparison.md +56 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/31_selected_anchor_screen.md +42 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/40_screen_contracts.md +44 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/50_review_input_bundle.md +36 -0
- package/assets/init/.qfai/assistant/skills/qfai-implement/SKILL.md +65 -67
- package/assets/init/.qfai/assistant/skills/qfai-prototyping/SKILL.md +171 -279
- package/assets/init/.qfai/assistant/skills/qfai-sdd/SKILL.md +91 -57
- package/assets/init/.qfai/assistant/skills/qfai-sdd/references/rcp_footer.md +21 -80
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/evidence/import-lite.md +1 -1
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/_policies/11_Slice-Policy.md +50 -0
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/spec/06_Test-Cases.md +23 -3
- package/assets/init/.qfai/assistant/skills/qfai-verify/SKILL.md +25 -17
- package/assets/init/.qfai/assistant/steering/agent-catalog.yml +194 -0
- package/assets/init/.qfai/assistant/steering/agent-routing.yml +176 -0
- package/assets/init/.qfai/assistant/steering/cli-ux-guidelines.md +49 -0
- package/assets/init/.qfai/assistant/steering/manifest.md +44 -19
- package/assets/init/.qfai/assistant/steering/product.md +53 -11
- package/assets/init/.qfai/assistant/steering/research-first-protocol.md +58 -0
- package/assets/init/.qfai/assistant/steering/review-gate.rules.yml +17 -66
- package/assets/init/.qfai/assistant/steering/review-profiles.yml +30 -0
- package/assets/init/.qfai/assistant/steering/structure.md +30 -16
- package/assets/init/.qfai/assistant/steering/tech.md +37 -21
- package/assets/init/.qfai/assistant/steering/ui-definition-protocol.md +54 -0
- package/assets/init/.qfai/contracts/README.md +10 -4
- package/assets/init/.qfai/contracts/design/README.md +32 -0
- package/assets/init/.qfai/contracts/ui/README.md +5 -3
- package/assets/init/.qfai/discussion/README.md +52 -5
- package/assets/init/.qfai/evidence/README.md +143 -116
- package/assets/init/.qfai/report/README.md +1 -1
- package/assets/init/.qfai/review/README.md +24 -9
- package/assets/init/.qfai/specs/README.md +5 -2
- package/assets/init/root/qfai.config.yaml +13 -0
- package/assets/uix-rev/comparison-review.md +24 -7
- package/assets/uix-rev/contracts-review.md +17 -10
- package/assets/uix-rev/scoring-review.md +42 -6
- package/assets/uix-rev/strategy-review.md +13 -9
- package/dist/cli/index.cjs +15618 -11547
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.mjs +15487 -11415
- package/dist/cli/index.mjs.map +1 -1
- package/dist/index.cjs +10486 -6080
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +766 -198
- package/dist/index.d.ts +766 -198
- package/dist/index.mjs +10823 -6420
- package/dist/index.mjs.map +1 -1
- package/package.json +11 -3
- package/assets/init/.qfai/assistant/agents/architect-reviewer.md +0 -65
- package/assets/init/.qfai/assistant/agents/architect.md +0 -49
- package/assets/init/.qfai/assistant/agents/atdd-api-implementer.md +0 -49
- package/assets/init/.qfai/assistant/agents/atdd-e2e-implementer.md +0 -48
- package/assets/init/.qfai/assistant/agents/atdd-integration-implementer.md +0 -48
- package/assets/init/.qfai/assistant/agents/backend-reviewer.md +0 -66
- package/assets/init/.qfai/assistant/agents/code-reviewer.md +0 -67
- package/assets/init/.qfai/assistant/agents/contract-designer.md +0 -49
- package/assets/init/.qfai/assistant/agents/coverage-planner.md +0 -49
- package/assets/init/.qfai/assistant/agents/design-owner.md +0 -48
- package/assets/init/.qfai/assistant/agents/design-review-lead.md +0 -68
- package/assets/init/.qfai/assistant/agents/facilitator.md +0 -48
- package/assets/init/.qfai/assistant/agents/frontend-reviewer.md +0 -66
- package/assets/init/.qfai/assistant/agents/interviewer.md +0 -45
- package/assets/init/.qfai/assistant/agents/option-explorer.md +0 -51
- package/assets/init/.qfai/assistant/agents/option-reviewer.md +0 -66
- package/assets/init/.qfai/assistant/agents/oq-harvester.md +0 -50
- package/assets/init/.qfai/assistant/agents/oq-reviewer.md +0 -70
- package/assets/init/.qfai/assistant/agents/planner.md +0 -48
- package/assets/init/.qfai/assistant/agents/project-lead.md +0 -47
- package/assets/init/.qfai/assistant/agents/prototyping-coverage-auditor.md +0 -46
- package/assets/init/.qfai/assistant/agents/qa-engineer.md +0 -47
- package/assets/init/.qfai/assistant/agents/qa-lead.md +0 -44
- package/assets/init/.qfai/assistant/agents/qa-reviewer.md +0 -66
- package/assets/init/.qfai/assistant/agents/researcher.md +0 -47
- package/assets/init/.qfai/assistant/agents/reviewer.md +0 -62
- package/assets/init/.qfai/assistant/agents/runtime-gatekeeper.md +0 -46
- package/assets/init/.qfai/assistant/agents/test-case-owner.md +0 -53
- package/assets/init/.qfai/assistant/agents/test-engineer.md +0 -50
- package/assets/init/.qfai/assistant/agents/test-volume-estimator.md +0 -48
- package/assets/init/.qfai/assistant/agents/ui-ux-reviewer.md +0 -71
- package/assets/init/.qfai/assistant/agents/unit-test-scope-enforcer.md +0 -46
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/10_strategy.md +0 -28
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/20_eval_axis_usability.md +0 -31
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/21_eval_axis_consistency.md +0 -31
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/22_eval_axis_accessibility.md +0 -31
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/23_eval_axis_delight.md +0 -56
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/30_comparison.md +0 -45
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/31_anchor.md +0 -27
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/40_contracts.md +0 -51
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/50_review_bundle.md +0 -31
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/60_critique_loop.md +0 -23
- package/assets/init/.qfai/assistant/skills/qfai-prototyping-full-harness/SKILL.md +0 -185
- package/assets/init/.qfai/assistant/steering/review-roster.yml +0 -128
- package/assets/init/.qfai/evidence/.gitignore +0 -3
- package/assets/init/.qfai/report/.gitignore +0 -3
- package/assets/init/.qfai/review/.gitignore +0 -5
|
@@ -6,15 +6,19 @@ argument-hint: "[<spec-id-or-name>] [--auto]"
|
|
|
6
6
|
allowed-tools: [Read, Glob, Write, TodoWrite, Task, Bash]
|
|
7
7
|
roles:
|
|
8
8
|
[
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
9
|
+
orchestrator,
|
|
10
|
+
delivery-planner,
|
|
11
|
+
requirements-analyst,
|
|
12
|
+
solution-architect,
|
|
13
|
+
test-design-analyst,
|
|
14
|
+
qa-strategist,
|
|
15
|
+
completion-reviewer,
|
|
16
|
+
architecture-reviewer,
|
|
17
|
+
implementation-reviewer,
|
|
18
|
+
product-surface-reviewer,
|
|
19
|
+
qa-gatekeeper,
|
|
17
20
|
]
|
|
21
|
+
routing-profile: default
|
|
18
22
|
mode: approval-gated
|
|
19
23
|
---
|
|
20
24
|
|
|
@@ -39,14 +43,27 @@ QFAI Skill Body (SSOT)
|
|
|
39
43
|
The agent SHOULD preserve structured choice semantics (enumerated options, selection constraints).
|
|
40
44
|
The reason for unavailability MUST be stated.
|
|
41
45
|
|
|
46
|
+
### Spec Create/Delete Confirmation (Mandatory)
|
|
47
|
+
|
|
48
|
+
- **When creating a new spec**: approval via AskUserQuestion is mandatory.
|
|
49
|
+
Example prompt: `"Create new spec-XXXX (${subject}) in category ${category}. Approve?"`
|
|
50
|
+
Choices: `["Approve", "Reject"]`
|
|
51
|
+
- **When deleting an existing spec**: approval via AskUserQuestion is mandatory.
|
|
52
|
+
Example prompt: `"Delete spec-XXXX (${subject}). Reason: ${rationale}. Approve?"`
|
|
53
|
+
Choices: `["Approve", "Reject"]`
|
|
54
|
+
- **When only updating an existing spec**: no confirmation is required.
|
|
55
|
+
- If approval is not granted, skip the operation and record the reason in `delta.md`.
|
|
56
|
+
|
|
42
57
|
## FORMAT SSOT (Mandatory)
|
|
43
58
|
|
|
44
59
|
- Before writing or editing any `.qfai/**` artifact, read and follow:
|
|
45
|
-
- `.qfai/
|
|
60
|
+
- `.qfai/discussion/README.md`
|
|
46
61
|
- `.qfai/specs/README.md`
|
|
47
62
|
- `.qfai/contracts/**/README.md`
|
|
48
63
|
- `.qfai/evidence/README.md`
|
|
49
|
-
- `.qfai/assistant/steering/
|
|
64
|
+
- `.qfai/assistant/steering/agent-catalog.yml`
|
|
65
|
+
- `.qfai/assistant/steering/agent-routing.yml`
|
|
66
|
+
- `.qfai/assistant/steering/review-profiles.yml`
|
|
50
67
|
- `.qfai/assistant/skills/qfai-sdd/references/rcp_footer.md`
|
|
51
68
|
- Use skill-local templates as SSOT:
|
|
52
69
|
- `.qfai/assistant/skills/qfai-sdd/templates/report/preflight_summary.md`
|
|
@@ -67,7 +84,7 @@ Then read inputs in this order:
|
|
|
67
84
|
- P1: `.qfai/assistant/instructions/*`
|
|
68
85
|
- P2: `.qfai/assistant/steering/*`
|
|
69
86
|
- P3: existing `.qfai/specs/<spec-id>/**` (if updating)
|
|
70
|
-
- P4: `.qfai/discussion/**`, `.qfai/
|
|
87
|
+
- P4: `.qfai/discussion/**`, `.qfai/contracts/**`
|
|
71
88
|
|
|
72
89
|
## Sub-agent Delegation (MANDATORY)
|
|
73
90
|
|
|
@@ -104,10 +121,12 @@ Every major artifact in this stage MUST include a `## Work Orders Summary` secti
|
|
|
104
121
|
|
|
105
122
|
### Stage Minimum Roles (MUST)
|
|
106
123
|
|
|
107
|
-
- Delegate:
|
|
108
|
-
- Delegate:
|
|
109
|
-
-
|
|
110
|
-
-
|
|
124
|
+
- Delegate: `requirements-analyst` drafts requirement-aligned spec content and open-question handling.
|
|
125
|
+
- Delegate: `solution-architect` drafts structural, contract, and architecture-sensitive sections.
|
|
126
|
+
- Delegate: `test-design-analyst` drafts traceability, examples, and test-design structure.
|
|
127
|
+
- Delegate: `product-experience-architect` only when the target is UI-bearing.
|
|
128
|
+
- Integrate: `orchestrator` consolidates delegated outputs and presents them to the user for confirmation.
|
|
129
|
+
- Gate: `completion-reviewer` is delegated independently and returns only `PASS` or `REVISE`.
|
|
111
130
|
- Orchestrator must not draft the primary artifact body and must not self-approve.
|
|
112
131
|
|
|
113
132
|
### No-argument batch delegation (MUST)
|
|
@@ -115,12 +134,8 @@ Every major artifact in this stage MUST include a `## Work Orders Summary` secti
|
|
|
115
134
|
- If `/qfai-sdd` is invoked without `<spec-id-or-name>`, treat the run as an all-capability batch.
|
|
116
135
|
- Enumerate targets from `.qfai/specs/_policies/03_Capabilities.md` and keep `spec-0001..N` mapping stable by Capability order.
|
|
117
136
|
- In batch mode, run Contracts-first and Outline exactly once as shared outputs.
|
|
118
|
-
- Delegate Slice in parallel per spec
|
|
119
|
-
|
|
120
|
-
- After each spec passes Slice gate, delegate Plan in parallel per spec:
|
|
121
|
-
- `Architect + TestStrategist` own `spec-XXXX/10_Plan.md`.
|
|
122
|
-
- Delegate Delta in parallel per spec:
|
|
123
|
-
- `SpecWriter` (or `DocSteward`) owns `spec-XXXX/09_delta.md` with `Adopted/Rejected` and rejected guardrails (`DO NOT`, `Temptation`).
|
|
137
|
+
- Delegate Slice in parallel per spec using the routing for `qfai-sdd` in `.qfai/assistant/steering/agent-routing.yml`.
|
|
138
|
+
- Delegate Plan and Delta per spec after the design phase passes its blocking reviewers.
|
|
124
139
|
- Validate gate and Review gate run once at batch tail after all target specs are integrated.
|
|
125
140
|
- Evidence is mandatory per spec: `.qfai/evidence/sdd-spec-XXXX.md`.
|
|
126
141
|
- Optional batch summary is allowed: `.qfai/evidence/sdd-batch-<timestamp>.md`.
|
|
@@ -128,7 +143,7 @@ Every major artifact in this stage MUST include a `## Work Orders Summary` secti
|
|
|
128
143
|
|
|
129
144
|
### Reviewer Gate (MUST)
|
|
130
145
|
|
|
131
|
-
- Final completion gate MUST be delegated to an independent
|
|
146
|
+
- Final completion gate MUST be delegated to an independent `completion-reviewer`.
|
|
132
147
|
- Reviewer checks (minimum):
|
|
133
148
|
- Required roles were delegated (no orchestrator self-authoring).
|
|
134
149
|
- DoD satisfied (validate gate, test-layer hard gate, evidence, DR-IDs).
|
|
@@ -150,15 +165,15 @@ Every major artifact in this stage MUST include a `## Work Orders Summary` secti
|
|
|
150
165
|
- `tests/e2e/**` -> `QFAI:SPEC-XXXX:US-YYYY`
|
|
151
166
|
- `tests/integration/**` -> `QFAI:SPEC-XXXX:TC-YYYY`
|
|
152
167
|
- `tests/api/**` -> `QFAI:CON-API-XXXX` (and no TC annotations)
|
|
153
|
-
-
|
|
154
|
-
-
|
|
155
|
-
-
|
|
156
|
-
-
|
|
157
|
-
-
|
|
158
|
-
-
|
|
159
|
-
-
|
|
160
|
-
|
|
161
|
-
|
|
168
|
+
- Route specialist reviewers from `.qfai/assistant/steering/agent-routing.yml` and `.qfai/assistant/steering/review-profiles.yml`.
|
|
169
|
+
- Default SDD review set:
|
|
170
|
+
- `completion-reviewer`
|
|
171
|
+
- Conditional SDD reviewers:
|
|
172
|
+
- `architecture-reviewer` for structural / contract / CLI changes
|
|
173
|
+
- `product-surface-reviewer` for UI-bearing specs
|
|
174
|
+
- `qa-gatekeeper` when validate, coverage, runtime, or prototyping evidence is affected
|
|
175
|
+
- Do not declare DONE or handoff until all routed blocking reviewers return `PASS`.
|
|
176
|
+
- Every reviewer MUST provide a concrete alternative or fix proposal when returning `FAIL`.
|
|
162
177
|
|
|
163
178
|
### Work order template (copy/paste)
|
|
164
179
|
|
|
@@ -196,21 +211,13 @@ Evidence checked:
|
|
|
196
211
|
|
|
197
212
|
## Review Cycle Protocol (RCP)
|
|
198
213
|
|
|
199
|
-
-
|
|
214
|
+
- Routing SSOT: `.qfai/assistant/steering/agent-routing.yml`.
|
|
215
|
+
- Review profile SSOT: `.qfai/assistant/steering/review-profiles.yml`.
|
|
200
216
|
- Footer SSOT: `.qfai/assistant/skills/qfai-sdd/references/rcp_footer.md`.
|
|
201
|
-
- Every
|
|
202
|
-
- Allowed reviewer verdicts: `PASS`, `FAIL
|
|
203
|
-
- Any `FAIL` triggers
|
|
204
|
-
- `fixed` is forbidden until all reviewers are `PASS
|
|
205
|
-
- Execution order: existing 10 reviewers (1-10) → devils-advocate (11) → pattern-doubler (12).
|
|
206
|
-
- devils-advocate (11th):
|
|
207
|
-
- `can_be_na: false` — N/A is not allowed.
|
|
208
|
-
- FAIL must include a concrete alternative. Bare negation FAIL is invalid.
|
|
209
|
-
- 3 consecutive FAILs trigger advisory demotion (current review cycle only). Blocking power is lost after demotion.
|
|
210
|
-
- pattern-doubler (12th):
|
|
211
|
-
- `can_be_na: true` — N/A only when the target artifact has no ID-bearing items.
|
|
212
|
-
- Sets a 2x target for current ID-bearing items (US, AC, BR, EX, TC) and identifies missing patterns.
|
|
213
|
-
- Rationale for each proposed addition is required.
|
|
217
|
+
- Every review cycle executes only the reviewers selected for the current phase and conditions.
|
|
218
|
+
- Allowed reviewer verdicts: `PASS`, `FAIL`.
|
|
219
|
+
- Any `FAIL` triggers targeted rerun for the failed reviewer and reviewers affected by the changed scope.
|
|
220
|
+
- `fixed` is forbidden until all routed blocking reviewers are `PASS`.
|
|
214
221
|
|
|
215
222
|
## Stage 0 - Steering completion refresh (mandatory)
|
|
216
223
|
|
|
@@ -241,11 +248,25 @@ Rules:
|
|
|
241
248
|
- **Plan finalize MUST happen after at least one user-story slice is grounded.**
|
|
242
249
|
- **Unresolved items MUST be moved to `08_Open-questions.md` (spec scope) or `_policies/09_Open-questions.md` (shared scope).**
|
|
243
250
|
|
|
251
|
+
## Slice Policy Protocol (Mandatory)
|
|
252
|
+
|
|
253
|
+
Before any spec creation, update, or deletion, the agent MUST:
|
|
254
|
+
|
|
255
|
+
1. Treat `_policies/11_Slice-Policy.md` as the SSOT for spec slicing decisions.
|
|
256
|
+
2. If `_policies/11_Slice-Policy.md` is missing, stale, or no longer matches the repository structure, create or update it before continuing.
|
|
257
|
+
3. Classify each target into a category (structural / CLI / skill / agent).
|
|
258
|
+
4. Enforce 1:1 mapping per category rule (1 command = 1 spec, 1 skill = 1 spec, etc.).
|
|
259
|
+
5. Use `_policies/11_Slice-Policy.md` to decide whether each detected change is CREATE, UPDATE, or DELETE.
|
|
260
|
+
6. If a new CLI command or skill is detected that has no corresponding spec, propose CREATE (requires AskUserQuestion).
|
|
261
|
+
7. If a CLI command or skill has been removed but its spec still exists, propose DELETE (requires AskUserQuestion).
|
|
262
|
+
8. If the action violates slice rules, STOP and report the violation — do NOT proceed without user override.
|
|
263
|
+
9. Do not start Phase 2 (Slice) until `_policies/11_Slice-Policy.md` exists and reflects the current slicing model.
|
|
264
|
+
|
|
244
265
|
## Arguments and Target Selection (Mandatory)
|
|
245
266
|
|
|
246
267
|
- With argument (`/qfai-sdd <spec-id-or-name> [--auto]`): update only the matched single spec target.
|
|
247
268
|
- Without argument (`/qfai-sdd`): target all capabilities listed in `_policies/03_Capabilities.md`.
|
|
248
|
-
- If `_policies/03_Capabilities.md` does not exist, bootstrap shared templates first, then enumerate capabilities.
|
|
269
|
+
- If `_policies/03_Capabilities.md` or `_policies/11_Slice-Policy.md` does not exist, bootstrap shared templates first, then enumerate capabilities.
|
|
249
270
|
- Capability order in `_policies/03_Capabilities.md` is SSOT for `spec-0001..N` assignment and ID stability.
|
|
250
271
|
- Reordering capability-to-spec mapping is a Change Request decision and must not be done implicitly.
|
|
251
272
|
- Batch policy (no argument):
|
|
@@ -272,13 +293,14 @@ Rules:
|
|
|
272
293
|
- never duplicate existing declared IDs; update in-place when the contract already exists
|
|
273
294
|
- contract stubs must be syntactically valid (OpenAPI YAML / UI YAML / executable SQL skeleton)
|
|
274
295
|
- `/qfai-sdd` must stop when discussion-pack is missing/incomplete or has blocking OQ (guide to `/qfai-discussion` first).
|
|
275
|
-
-
|
|
296
|
+
- Reviewer routing is fixed by `.qfai/assistant/steering/agent-routing.yml` and `.qfai/assistant/steering/review-profiles.yml`.
|
|
276
297
|
- RCP wording must be sourced from `.qfai/assistant/skills/qfai-sdd/references/rcp_footer.md`.
|
|
277
298
|
- `_policies/04_Business-Flow.md` must be Markdown and include at least one Mermaid `flowchart` or `sequenceDiagram`.
|
|
278
299
|
- Business Flow must not be authored as Gherkin (`*Business-flow*.feature` is deprecated).
|
|
279
|
-
- If diagrams are written in
|
|
300
|
+
- If diagrams are written in discussion/spec/evidence artifacts, Mermaid syntax must be inside ` ```mermaid ` fences only.
|
|
280
301
|
- `05_Examples.md` must include `EX-ID` and `BR-Ref` mappings.
|
|
281
|
-
- `06_Test-Cases.md` must include `TC-ID`, `EX-Ref`,
|
|
302
|
+
- `06_Test-Cases.md` must include `TC-ID`, `EX-Ref`, `AC-Refs`, and `Type` (normal/error/boundary/edge).
|
|
303
|
+
- `06_Test-Cases.md` quality depth: each AC must have at minimum one normal-path and one error/boundary test case. Normal-path-only coverage is incomplete.
|
|
282
304
|
- Do not complete this stage until:
|
|
283
305
|
- `qfai validate --fail-on error --format github | tee .qfai/report/validate.log` exits successfully.
|
|
284
306
|
- `.qfai/report/specs-coverage/spec-*.md` has been read for density review.
|
|
@@ -325,12 +347,19 @@ Create/update:
|
|
|
325
347
|
- `_policies/08_Decisions.md`
|
|
326
348
|
- `_policies/09_Open-questions.md`
|
|
327
349
|
- `_policies/10_delta.md`
|
|
350
|
+
- `_policies/11_Slice-Policy.md`
|
|
328
351
|
|
|
329
352
|
Rules:
|
|
330
353
|
|
|
331
354
|
- Temporary `TBD` is allowed, but each `TBD` must be mirrored into `_policies/09_Open-questions.md`.
|
|
332
355
|
- `_policies/04_Business-Flow.md` must include Mermaid and keep diagram syntax inside ` ```mermaid ` fences.
|
|
333
356
|
- `_policies/08_Decisions.md` and `_policies/10_delta.md` must exist even when empty, and must explicitly state `0 items`.
|
|
357
|
+
- `_policies/11_Slice-Policy.md` must be created or refreshed in this phase and must explain:
|
|
358
|
+
- slice categories
|
|
359
|
+
- create/update/delete decision rules
|
|
360
|
+
- ID stability rules
|
|
361
|
+
- gap / renumbering policy
|
|
362
|
+
- If the current repository shape and `_policies/11_Slice-Policy.md` disagree, update the policy file first and record the decision in delta.
|
|
334
363
|
|
|
335
364
|
### Phase 2 - Slice (slice-first)
|
|
336
365
|
|
|
@@ -413,6 +442,7 @@ Create or update layered SDD artifacts in one run so downstream execution phases
|
|
|
413
442
|
- `.qfai/specs/_policies/08_Decisions.md`
|
|
414
443
|
- `.qfai/specs/_policies/09_Open-questions.md`
|
|
415
444
|
- `.qfai/specs/_policies/10_delta.md`
|
|
445
|
+
- `.qfai/specs/_policies/11_Slice-Policy.md`
|
|
416
446
|
- `.qfai/specs/spec-XXXX/01_Spec.md`
|
|
417
447
|
- `.qfai/specs/spec-XXXX/02_User-stories.md`
|
|
418
448
|
- `.qfai/specs/spec-XXXX/03_Acceptance-Criteria.md`
|
|
@@ -435,24 +465,27 @@ Create or update layered SDD artifacts in one run so downstream execution phases
|
|
|
435
465
|
4. Write `.qfai/report/preflight_summary.md` from `templates/report/preflight_summary.md`.
|
|
436
466
|
5. Execute Phase 0 (Contracts-first) and ensure `_policies/05_Contracts.md` index and `.qfai/contracts/**` are aligned.
|
|
437
467
|
6. Execute Phase 1 (Outline) in layer-first order.
|
|
438
|
-
7.
|
|
439
|
-
8. Execute Phase
|
|
440
|
-
9. Execute Phase
|
|
441
|
-
10.
|
|
442
|
-
11. Run
|
|
443
|
-
12.
|
|
444
|
-
13.
|
|
468
|
+
7. Ensure `_policies/11_Slice-Policy.md` exists and matches the current repository slicing model before any CREATE / UPDATE / DELETE spec decision.
|
|
469
|
+
8. Execute Phase 2 (Slice) and pass slice gate for each target spec (single target: at least one user-story slice; no-argument batch: all enumerated specs).
|
|
470
|
+
9. Execute Phase 3 (Plan finalize) and make every target `10_Plan.md` actionable as How-only.
|
|
471
|
+
10. Execute Phase 4 (Delta update) and record adoption/rejection rationale for every target spec.
|
|
472
|
+
11. Run `qfai validate --fail-on error --format github | tee .qfai/report/validate.log`.
|
|
473
|
+
12. Run Density Review Pass using `.qfai/report/specs-coverage/spec-*.md` and `QFAI-COV-207` warnings.
|
|
474
|
+
13. If any validate error exists, fix the source layer table(s) and repeat steps 11-12 until `error=0`.
|
|
475
|
+
14. Record static checks, validate evidence, and density review outcomes in evidence.
|
|
445
476
|
|
|
446
477
|
## Unified SDD Quality Gate
|
|
447
478
|
|
|
448
479
|
Run static checks:
|
|
449
480
|
|
|
450
481
|
- Confirm required `_policies` and `spec-XXXX` layered files exist.
|
|
482
|
+
- Confirm `_policies/11_Slice-Policy.md` exists and matches the repository's current slice model.
|
|
451
483
|
- Confirm `_policies/04_Business-Flow.md` includes Mermaid and at least one `flowchart` or `sequenceDiagram`.
|
|
452
484
|
- Confirm `01_Spec.md` includes copy-down context and Escalation Hook to `_policies`.
|
|
453
485
|
- Confirm Mermaid syntax is not written in ` ```text ` or language-less fences.
|
|
454
486
|
- Confirm `05_Examples.md` provides `EX-ID` + `BR-Ref` mappings.
|
|
455
|
-
- Confirm `06_Test-Cases.md` provides `TC-ID` + `EX-Ref` + `AC-Refs`.
|
|
487
|
+
- Confirm `06_Test-Cases.md` provides `TC-ID` + `EX-Ref` + `AC-Refs` + `Type`.
|
|
488
|
+
- Confirm `06_Test-Cases.md` includes error/boundary/edge test cases, not only normal paths.
|
|
456
489
|
- Confirm reference direction follows lower-to-upper only.
|
|
457
490
|
- Confirm required edges `US -> AC -> BR -> EX -> TC`.
|
|
458
491
|
- Confirm BR/Examples/Test-cases contain non-empty IDs and coverage mapping.
|
|
@@ -499,6 +532,7 @@ When declaring DONE, include:
|
|
|
499
532
|
- [ ] Upper-to-lower references were not introduced.
|
|
500
533
|
- [ ] At least one user-story slice passed gate before plan finalization.
|
|
501
534
|
- [ ] Required `_policies` + `spec-XXXX` outputs exist and are internally consistent.
|
|
535
|
+
- [ ] `_policies/11_Slice-Policy.md` exists and was created or refreshed before spec slice decisions.
|
|
502
536
|
- [ ] `_policies/04_Business-Flow.md` is Markdown + Mermaid (`flowchart` or `sequenceDiagram`).
|
|
503
537
|
- [ ] Mermaid syntax was not written in ` ```text ` or language-less fences.
|
|
504
538
|
- [ ] `10_Plan.md` is finalized with implementation/test strategy (How-only).
|
|
@@ -1,27 +1,31 @@
|
|
|
1
1
|
# RCP Footer (qfai-sdd / SSOT)
|
|
2
2
|
|
|
3
|
-
この文書は `/qfai-sdd`
|
|
4
|
-
discussion-pack 等の共通規約ではありません。
|
|
3
|
+
この文書は `/qfai-sdd` の Review Cycle を spec / contract 前提で固定する SSOT です。
|
|
5
4
|
|
|
6
5
|
---
|
|
7
6
|
|
|
8
7
|
## Review Target(固定)
|
|
9
8
|
|
|
10
9
|
- Scope: `sdd`
|
|
11
|
-
-
|
|
12
|
-
- `.qfai/specs/spec
|
|
13
|
-
- `.qfai/contracts
|
|
14
|
-
- `.qfai/evidence
|
|
15
|
-
- `.qfai/report
|
|
10
|
+
- レビュー対象:
|
|
11
|
+
- `.qfai/specs/spec-*/**`
|
|
12
|
+
- `.qfai/contracts/**`
|
|
13
|
+
- `.qfai/evidence/**`
|
|
14
|
+
- `.qfai/report/**`
|
|
16
15
|
|
|
17
16
|
---
|
|
18
17
|
|
|
19
|
-
##
|
|
18
|
+
## Routing Rule(固定)
|
|
20
19
|
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
- `
|
|
24
|
-
-
|
|
20
|
+
- reviewer の選定は `.qfai/assistant/steering/agent-routing.yml` と `.qfai/assistant/steering/review-profiles.yml` を読む
|
|
21
|
+
- 常設 reviewer:
|
|
22
|
+
- `completion-reviewer`
|
|
23
|
+
- 条件付き reviewer:
|
|
24
|
+
- `architecture-reviewer`
|
|
25
|
+
- `product-surface-reviewer`
|
|
26
|
+
- `qa-gatekeeper`
|
|
27
|
+
- 各レビューは `PASS` / `FAIL` を返す
|
|
28
|
+
- `FAIL` が出たら、失敗 reviewer と修正影響を受ける reviewer のみ再実行する
|
|
25
29
|
|
|
26
30
|
---
|
|
27
31
|
|
|
@@ -40,74 +44,11 @@ discussion-pack 等の共通規約ではありません。
|
|
|
40
44
|
- `.qfai/review/review-<timestamp>/R01_<reviewer>.md`, `R02_<reviewer>.md`, ...
|
|
41
45
|
- `.qfai/review/review-<timestamp>/summary.json`
|
|
42
46
|
|
|
43
|
-
`summary.json` の最低要件:
|
|
44
|
-
|
|
45
|
-
- `version`
|
|
46
|
-
- `created_at`
|
|
47
|
-
- `target`
|
|
48
|
-
- `roster`
|
|
49
|
-
- `overall_status`
|
|
50
|
-
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
## spec-pack 固有のレビュー観点(sdd 特化)
|
|
54
|
-
|
|
55
|
-
1. 仕様の一貫性
|
|
56
|
-
|
|
57
|
-
- spec の「目的/スコープ/非スコープ」が、後続の user story / acceptance criteria / examples と矛盾しない
|
|
58
|
-
- “例(Examples)” が acceptance criteria を **具体ケースとして裏付け**ている(単なる繰り返しではない)
|
|
59
|
-
|
|
60
|
-
2. 意思決定の可観測性(Decision Log)
|
|
61
|
-
|
|
62
|
-
- `delta` / decisions / rejected が「なぜ採用/不採用か」を保持している
|
|
63
|
-
- “Temptation(再発しがちな誤り)” が明文化され、再採用防止になっている
|
|
64
|
-
|
|
65
|
-
3. Contracts の妥当性
|
|
66
|
-
|
|
67
|
-
- API / UI / DB 契約が spec の用語と一致している(同一概念に別名を付けない)
|
|
68
|
-
- 禁止参照(contracts 特例ルール等)がある場合は、契約側の README のルールに従っている
|
|
69
|
-
|
|
70
|
-
4. Traceability(必要なら)
|
|
71
|
-
|
|
72
|
-
- spec → tests(ATDD/TDD)への紐付けが破綻していない
|
|
73
|
-
- “数を増やす” のではなく “境界/負例/権限/状態遷移” の観点が埋まっている
|
|
74
|
-
|
|
75
|
-
---
|
|
76
|
-
|
|
77
|
-
## 代表的な FAIL と復旧(sdd 特化)
|
|
78
|
-
|
|
79
|
-
- FAIL: acceptance criteria が抽象的で、例に落ちていない
|
|
80
|
-
- 復旧: 例(Examples)に「入力→状態→出力」形式のケースを追加し、境界/異常系を1つは入れる
|
|
81
|
-
- FAIL: 契約が先行し、spec の用語・概念とズレる
|
|
82
|
-
- 復旧: 先に Glossary/Capabilities を補強し、契約を spec に合わせて修正する
|
|
83
|
-
- FAIL: decision/rejected が薄く、なぜそうしたかが追えない
|
|
84
|
-
- 復旧: 代替案A/B/Cと採用基準を書き、Rejected に DO NOT/Temptation を残す
|
|
85
|
-
|
|
86
47
|
---
|
|
87
48
|
|
|
88
|
-
##
|
|
89
|
-
|
|
90
|
-
### devils-advocate(11番目)
|
|
91
|
-
|
|
92
|
-
- 役割: 全否定エージェント — 「現状すべてが間違っている」前提でレビューし、あるべき姿を提示する
|
|
93
|
-
- `can_be_na: false` — N/A は許可されない
|
|
94
|
-
- FAIL 判定時は必ず具体的代替案を提示すること。代替案なしの FAIL は無効とし、再判定を要求する
|
|
95
|
-
- 3 回連続 FAIL → アドバイザリー降格(当該レビューサイクル限定)。降格後はブロッキング力が消失し、フィードバックのみ記録する
|
|
96
|
-
- レビュー記録: `R11_devils-advocate.md`
|
|
97
|
-
|
|
98
|
-
### pattern-doubler(12番目)
|
|
99
|
-
|
|
100
|
-
- 役割: パターン倍増エージェント — ID 付き項目(US, AC, BR, EX, TC)の数を現状の 2 倍にする提案を行う
|
|
101
|
-
- `can_be_na: true` — ID 付き項目のない成果物の場合のみ N/A 可
|
|
102
|
-
- 追加パターンの根拠提示が必須。根拠なしの追加要求は無効
|
|
103
|
-
- カウント対象: US/AC/BR/EX/TC プレフィックスの連番形式 ID を持つ項目のみ
|
|
104
|
-
- レビュー記録: `R12_pattern-doubler.md`
|
|
105
|
-
|
|
106
|
-
### 代表的な FAIL と復旧(拡張レビュアー特化)
|
|
49
|
+
## sdd 特化レビュー観点
|
|
107
50
|
|
|
108
|
-
-
|
|
109
|
-
|
|
110
|
-
-
|
|
111
|
-
|
|
112
|
-
- FAIL (pattern-doubler): 根拠なしの倍増要求
|
|
113
|
-
- 復旧: 各追加パターンに「なぜ必要か」(境界値/負例/権限/状態遷移/冪等性)の観点を付与させる
|
|
51
|
+
- spec の目的 / スコープ / 非スコープが下位レイヤと矛盾しない
|
|
52
|
+
- Contracts が spec 用語と一致している
|
|
53
|
+
- delta / decisions / rejected が再発防止に十分か
|
|
54
|
+
- examples / test-cases / traceability が境界・負例・権限・状態遷移を落としていないか
|
package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/_policies/11_Slice-Policy.md
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# 11 Slice Policy
|
|
2
|
+
|
|
3
|
+
> **SSOT notice**: The runtime slice policy is `.qfai/specs/_policies/11_Slice-Policy.md`. This template seeds the initial file used by that runtime policy.
|
|
4
|
+
|
|
5
|
+
Define the slicing model for `.qfai/specs/`. This template is used by `/qfai-sdd` when creating or updating the runtime slice policy file.
|
|
6
|
+
|
|
7
|
+
## Slice categories
|
|
8
|
+
|
|
9
|
+
| Category | Slice Rule | ID Range |
|
|
10
|
+
| ---------- | ------------------------------ | --------------- |
|
|
11
|
+
| structural | 1 pack-type = 1 spec | spec-0001..0002 |
|
|
12
|
+
| cli | 1 command = 1 spec | spec-0003..0007 |
|
|
13
|
+
| skill | 1 skill = 1 spec | spec-0008..0014 |
|
|
14
|
+
| agent | all agents = 1 collective spec | spec-0015 |
|
|
15
|
+
|
|
16
|
+
## Category definitions
|
|
17
|
+
|
|
18
|
+
- `structural`: framework-level pack definitions such as spec-pack and discussion-pack.
|
|
19
|
+
- `cli`: commands implemented under `packages/qfai/src/cli/commands/`. One command maps to one spec.
|
|
20
|
+
- `skill`: skills defined under `packages/qfai/assets/init/.qfai/assistant/skills/`. One skill maps to one spec.
|
|
21
|
+
- `agent`: sub-agents defined under `packages/qfai/assets/init/.qfai/assistant/agents/`. All agents are grouped into one shared spec unless a newer approved slice policy says otherwise.
|
|
22
|
+
|
|
23
|
+
## Create / Update / Delete decision rules
|
|
24
|
+
|
|
25
|
+
| Operation | Trigger | AskUserQuestion |
|
|
26
|
+
| --------- | --------------------------------------------------------------------- | --------------- |
|
|
27
|
+
| CREATE | New CLI command, skill, or structural pack-type with no matching spec | Required |
|
|
28
|
+
| UPDATE | Requirements or implementation scope changed for an existing slice | Not required |
|
|
29
|
+
| DELETE | CLI command, skill, or structural slice was removed from the product | Required |
|
|
30
|
+
|
|
31
|
+
### Decision procedure
|
|
32
|
+
|
|
33
|
+
1. Discover the current repository subjects for each category.
|
|
34
|
+
2. Match each subject to existing specs and `_policies/03_Capabilities.md`.
|
|
35
|
+
3. Apply CREATE when a subject exists without a corresponding spec.
|
|
36
|
+
4. Apply UPDATE when the subject exists and the spec already owns it.
|
|
37
|
+
5. Apply DELETE when the owned subject no longer exists in the repository.
|
|
38
|
+
|
|
39
|
+
## ID stability rules
|
|
40
|
+
|
|
41
|
+
1. Keep existing IDs stable whenever the subject still exists.
|
|
42
|
+
2. Follow `_policies/03_Capabilities.md` order as the SSOT for capability-to-spec mapping.
|
|
43
|
+
3. Do not renumber surviving specs only to close gaps.
|
|
44
|
+
4. Record any reorder or category-boundary change as an explicit Change Request plus delta entry.
|
|
45
|
+
|
|
46
|
+
## Gap policy
|
|
47
|
+
|
|
48
|
+
- Leave gaps after deletions unless an approved migration explicitly renumbers them.
|
|
49
|
+
- Append new specs at the end of the relevant category block.
|
|
50
|
+
- Do not merge or split categories implicitly; update this file first, then apply the approved structural change.
|
|
@@ -4,9 +4,29 @@
|
|
|
4
4
|
|
|
5
5
|
- Verify examples and acceptance criteria with explicit refs.
|
|
6
6
|
- Include both `AC-Refs` and `EX-Ref` whenever possible.
|
|
7
|
+
- Ensure test cases cover not only normal paths but also error paths, boundary values, and edge cases.
|
|
7
8
|
|
|
8
9
|
## Test Case Table (required)
|
|
9
10
|
|
|
10
|
-
| TC-ID | Level | AC-Refs | EX-Ref | Steps | Expected | Notes |
|
|
11
|
-
| ------- | ----- | ------- | ------- | ------- | ---------- | ------- |
|
|
12
|
-
| TC-0001 | L2 | AC-0001 | EX-0001 | <steps> | <expected> | <notes> |
|
|
11
|
+
| TC-ID | Level | AC-Refs | EX-Ref | Type | Steps | Expected | Notes |
|
|
12
|
+
| ------- | ----- | ------- | ------- | -------- | ------- | ---------- | ------- |
|
|
13
|
+
| TC-0001 | L2 | AC-0001 | EX-0001 | normal | <steps> | <expected> | <notes> |
|
|
14
|
+
| TC-0002 | L2 | AC-0001 | — | error | <steps> | <expected> | <notes> |
|
|
15
|
+
| TC-0003 | L2 | AC-0001 | — | boundary | <steps> | <expected> | <notes> |
|
|
16
|
+
|
|
17
|
+
### Type column values
|
|
18
|
+
|
|
19
|
+
- `normal` — Happy path / expected successful behavior.
|
|
20
|
+
- `error` — Error, failure, or invalid input path.
|
|
21
|
+
- `boundary` — Boundary value (min, max, just-outside-range).
|
|
22
|
+
- `edge` — Edge case (null, empty, concurrent, timing, max payload, etc.).
|
|
23
|
+
|
|
24
|
+
## Quality depth guideline
|
|
25
|
+
|
|
26
|
+
Each AC should have at minimum:
|
|
27
|
+
|
|
28
|
+
- One `normal` test case.
|
|
29
|
+
- One `error` or `boundary` test case.
|
|
30
|
+
|
|
31
|
+
If an AC has only `normal` type test cases, the test case set is considered incomplete.
|
|
32
|
+
Refer to `.qfai/assistant/skills/qfai-atdd/references/test-case-depth-checklist.md` for the full depth checklist.
|
|
@@ -4,7 +4,17 @@ title: QFAI Verify (Quality Gates + Evidence)
|
|
|
4
4
|
description: "Run and document quality gates (repo + qfai validate/report), fix until PASS."
|
|
5
5
|
argument-hint: "[--auto]"
|
|
6
6
|
allowed-tools: [Read, Glob, Bash, Write, TodoWrite, Task]
|
|
7
|
-
roles:
|
|
7
|
+
roles:
|
|
8
|
+
[
|
|
9
|
+
orchestrator,
|
|
10
|
+
delivery-planner,
|
|
11
|
+
qa-strategist,
|
|
12
|
+
devops-ci-engineer,
|
|
13
|
+
completion-reviewer,
|
|
14
|
+
qa-gatekeeper,
|
|
15
|
+
implementation-reviewer,
|
|
16
|
+
]
|
|
17
|
+
routing-profile: runtime-heavy
|
|
8
18
|
mode: evidence-focused
|
|
9
19
|
---
|
|
10
20
|
|
|
@@ -32,7 +42,7 @@ QFAI Skill Body (SSOT)
|
|
|
32
42
|
## FORMAT SSOT (Mandatory)
|
|
33
43
|
|
|
34
44
|
- **Before writing or editing any `.qfai/**` artifact\*\*, read and follow the relevant directory README template and sample:
|
|
35
|
-
- `.qfai/
|
|
45
|
+
- `.qfai/discussion/README.md`
|
|
36
46
|
- `.qfai/specs/README.md`
|
|
37
47
|
- `.qfai/contracts/**/README.md`
|
|
38
48
|
- `.qfai/evidence/README.md`
|
|
@@ -97,7 +107,7 @@ Every major artifact in this stage MUST include a `## Work Orders Summary` secti
|
|
|
97
107
|
|
|
98
108
|
### Reviewer Gate (MUST)
|
|
99
109
|
|
|
100
|
-
- Final completion gate MUST be delegated to an independent
|
|
110
|
+
- Final completion gate MUST be delegated to an independent `completion-reviewer`.
|
|
101
111
|
- Reviewer checks (minimum):
|
|
102
112
|
- Required roles were delegated (no orchestrator self-authoring).
|
|
103
113
|
- DoD satisfied (validate gate, test-layer hard gate, evidence, DR-IDs).
|
|
@@ -108,15 +118,13 @@ Every major artifact in this stage MUST include a `## Work Orders Summary` secti
|
|
|
108
118
|
- **Test-layer policy enforced**:
|
|
109
119
|
- E2E/API/Integration coverage aligns with `steering/test-layers.md` and the project’s plan.
|
|
110
120
|
- Do not use pyramid ratios as a gate; use floors/ratios only as signals. Coverage obligations are the gate.
|
|
111
|
-
-
|
|
112
|
-
-
|
|
113
|
-
-
|
|
114
|
-
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
-
|
|
118
|
-
- Each pattern proposed by pattern-doubler must include rationale.
|
|
119
|
-
- Artifacts with no ID-bearing items (US/AC/BR/EX/TC) are marked N/A.
|
|
121
|
+
- Route specialist reviewers from `.qfai/assistant/steering/agent-routing.yml`.
|
|
122
|
+
- Default verify review set:
|
|
123
|
+
- `qa-gatekeeper`
|
|
124
|
+
- `completion-reviewer`
|
|
125
|
+
- Add `implementation-reviewer` only when code fixes are in scope.
|
|
126
|
+
- Do not declare DONE or handoff until all routed blocking reviewers return `PASS`.
|
|
127
|
+
- Every reviewer MUST provide a concrete alternative or fix proposal when returning FAIL.
|
|
120
128
|
|
|
121
129
|
### Work order template (copy/paste)
|
|
122
130
|
|
|
@@ -278,7 +286,7 @@ This workflow assumes the environment _may_ support subagents (e.g., Claude Code
|
|
|
278
286
|
|
|
279
287
|
Delegate to multiple roles and then merge the results. Use a “real‑world workflow” order:
|
|
280
288
|
|
|
281
|
-
-
|
|
289
|
+
- discovery-analyst -> requirements-analyst -> delivery-planner -> solution-architect -> test-design-analyst -> qa-strategist -> devops-ci-engineer -> completion-reviewer / qa-gatekeeper
|
|
282
290
|
|
|
283
291
|
**Pseudo‑invocation pattern** (adjust to your tool):
|
|
284
292
|
|
|
@@ -298,8 +306,8 @@ Only with explicit user approval (`Simulation mode allowed`), simulate roles by
|
|
|
298
306
|
|
|
299
307
|
## Completion Separation (mandatory)
|
|
300
308
|
|
|
301
|
-
- Gate execution (
|
|
302
|
-
-
|
|
309
|
+
- Gate execution (`devops-ci-engineer`) and completion approval (`completion-reviewer`) must be separate.
|
|
310
|
+
- `qa-gatekeeper` must confirm gate coverage before approval.
|
|
303
311
|
|
|
304
312
|
## Context Refresh (mandatory for long tasks)
|
|
305
313
|
|
|
@@ -322,7 +330,7 @@ Every 5 major actions, pause and restate:
|
|
|
322
330
|
- `.qfai/assistant/instructions/workflow.md` (or equivalent)
|
|
323
331
|
|
|
324
332
|
3. Read existing artifacts for the current work item (if present):
|
|
325
|
-
- `.qfai/
|
|
333
|
+
- `.qfai/discussion/`
|
|
326
334
|
- `.qfai/specs/spec-*/`
|
|
327
335
|
- `.qfai/contracts/`
|
|
328
336
|
|
|
@@ -427,7 +435,7 @@ If anything fails:
|
|
|
427
435
|
- Identify whether it’s spec mismatch, test issue, or implementation defect.
|
|
428
436
|
- Fix the root cause (do not silence tests without reason).
|
|
429
437
|
|
|
430
|
-
## Step 5 — Produce Evidence Summary (Planner)
|
|
438
|
+
## Step 5 — Produce Evidence Summary (Delivery Planner)
|
|
431
439
|
|
|
432
440
|
Output this format:
|
|
433
441
|
|