qfai 1.4.9 → 1.4.23
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 +46 -24
- package/assets/init/.qfai/README.md +26 -6
- package/assets/init/.qfai/assistant/agents/architect.md +3 -2
- package/assets/init/.qfai/assistant/agents/contract-designer.md +3 -2
- package/assets/init/.qfai/assistant/agents/design-owner.md +3 -2
- package/assets/init/.qfai/assistant/agents/facilitator.md +3 -2
- package/assets/init/.qfai/assistant/agents/interviewer.md +3 -2
- package/assets/init/.qfai/assistant/agents/option-explorer.md +3 -2
- package/assets/init/.qfai/assistant/agents/oq-harvester.md +3 -2
- package/assets/init/.qfai/assistant/agents/oq-reviewer.md +3 -2
- package/assets/init/.qfai/assistant/agents/planner.md +3 -2
- package/assets/init/.qfai/assistant/agents/project-lead.md +3 -2
- package/assets/init/.qfai/assistant/agents/requirements-analyst.md +3 -2
- package/assets/init/.qfai/assistant/instructions/requirements-decomposition.md +34 -50
- package/assets/init/.qfai/assistant/instructions/workflow.md +7 -6
- package/assets/init/.qfai/assistant/manifest/spec_required_files.json +25 -0
- package/assets/init/.qfai/assistant/skills/qfai-discuss/SKILL.md +137 -111
- package/assets/init/.qfai/assistant/skills/qfai-discuss/templates/01_Context.md +27 -0
- package/assets/init/.qfai/assistant/skills/qfai-discuss/templates/02_Hearing.md +18 -0
- package/assets/init/.qfai/assistant/skills/qfai-discuss/templates/03_Config-Hearing.md +20 -0
- package/assets/init/.qfai/assistant/skills/qfai-discuss/templates/04_Deep-Dive.md +21 -0
- package/assets/init/.qfai/assistant/skills/qfai-discuss/templates/05_OQ-Register.md +15 -0
- package/assets/init/.qfai/assistant/skills/qfai-discuss/templates/06_OQ-Resolution-Log.md +12 -0
- package/assets/init/.qfai/assistant/skills/qfai-discuss/templates/07_Deferred.md +13 -0
- package/assets/init/.qfai/assistant/skills/qfai-discuss/templates/08_Review-Request.md +25 -0
- package/assets/init/.qfai/assistant/skills/qfai-discuss/templates/09_delta.md +25 -0
- package/assets/init/.qfai/assistant/skills/qfai-discuss/templates/review/Rxx_reviewer.md +23 -0
- package/assets/init/.qfai/assistant/skills/qfai-discuss/templates/review/review_request.md +33 -0
- package/assets/init/.qfai/assistant/skills/qfai-discuss/templates/review/summary.json +61 -0
- package/assets/init/.qfai/assistant/skills/qfai-require/SKILL.md +108 -97
- package/assets/init/.qfai/assistant/skills/qfai-require/templates/01_Sources.md +16 -0
- package/assets/init/.qfai/assistant/skills/qfai-require/templates/02_Scope.md +17 -0
- package/assets/init/.qfai/assistant/skills/qfai-require/templates/03_REQ.md +12 -0
- package/assets/init/.qfai/assistant/skills/qfai-require/templates/04_NFR.md +12 -0
- package/assets/init/.qfai/assistant/skills/qfai-require/templates/05_Glossary.md +11 -0
- package/assets/init/.qfai/assistant/skills/qfai-require/templates/06_Constraints.md +15 -0
- package/assets/init/.qfai/assistant/skills/qfai-require/templates/07_Policy.md +12 -0
- package/assets/init/.qfai/assistant/skills/qfai-require/templates/08_OQ.md +19 -0
- package/assets/init/.qfai/assistant/skills/qfai-require/templates/09_delta.md +18 -0
- package/assets/init/.qfai/assistant/skills/qfai-require/templates/review/Rxx_reviewer.md +23 -0
- package/assets/init/.qfai/assistant/skills/qfai-require/templates/review/review_request.md +33 -0
- package/assets/init/.qfai/assistant/skills/qfai-require/templates/review/summary.json +61 -0
- package/assets/init/.qfai/assistant/skills/qfai-sdd/SKILL.md +115 -71
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/evidence/import-lite.md +28 -0
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/report/preflight_summary.md +20 -0
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/spec-pack/03_Initiative.md +4 -3
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/spec-pack/08_Business-rules.md +29 -7
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/spec-pack/09_Examples.feature +13 -1
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/spec-pack/10_Test-cases.md +31 -0
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/_shared/03_Capabilities.md +19 -0
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/_shared/04_Business-Flow.md +39 -0
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/_shared/05_Contracts.md +26 -0
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/spec/01_Spec.md +15 -0
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/spec/02_User-stories.md +12 -0
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/spec/03_Acceptance-Criteria.md +22 -0
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/spec/04_Business-Rules.md +12 -0
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/spec/05_Examples.md +12 -0
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/spec/06_Test-Cases.md +12 -0
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/spec/07_Decisions.md +7 -0
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/spec/08_Open-questions.md +9 -0
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/spec/09_delta.md +16 -0
- package/assets/init/.qfai/assistant/skills/qfai-sdd-planning/SKILL.md +106 -0
- package/assets/init/.qfai/assistant/skills/qfai-sdd-refinement/SKILL.md +106 -0
- package/assets/init/.qfai/assistant/steering/review-gate.rules.yml +72 -0
- package/assets/init/.qfai/assistant/steering/review-roster.yml +92 -0
- package/assets/init/.qfai/assistant/templates/rcp_footer.md +45 -0
- package/assets/init/.qfai/discuss/README.md +22 -17
- package/assets/init/.qfai/report/.gitignore +3 -0
- package/assets/init/.qfai/report/README.md +24 -0
- package/assets/init/.qfai/require/README.md +43 -33
- package/assets/init/.qfai/review/.gitignore +3 -0
- package/assets/init/.qfai/review/README.md +47 -0
- package/assets/init/.qfai/specs/README.md +61 -38
- package/dist/cli/index.cjs +4814 -615
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.mjs +5554 -1355
- package/dist/cli/index.mjs.map +1 -1
- package/dist/index.cjs +5666 -2378
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +28 -2
- package/dist/index.d.ts +28 -2
- package/dist/index.mjs +6172 -2891
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/assets/init/.qfai/assistant/skills/qfai-discuss/templates/00_Summary.md +0 -38
- package/assets/init/.qfai/assistant/skills/qfai-discuss/templates/01_Objective.md +0 -16
- package/assets/init/.qfai/assistant/skills/qfai-discuss/templates/02_Initiative.md +0 -16
- package/assets/init/.qfai/assistant/skills/qfai-discuss/templates/03_Capabilities.md +0 -17
- package/assets/init/.qfai/assistant/skills/qfai-discuss/templates/04_Business-flow.md +0 -29
- package/assets/init/.qfai/assistant/skills/qfai-discuss/templates/05_Policy.md +0 -28
- package/assets/init/.qfai/assistant/skills/qfai-discuss/templates/06_Stakeholders.md +0 -13
- package/assets/init/.qfai/assistant/skills/qfai-discuss/templates/07_Open-questions.md +0 -18
- package/assets/init/.qfai/assistant/skills/qfai-require/templates/00_Summary.md +0 -37
- package/assets/init/.qfai/assistant/skills/qfai-require/templates/01_Functional-requirements.md +0 -16
- package/assets/init/.qfai/assistant/skills/qfai-require/templates/02_Non-functional-requirements.md +0 -15
- package/assets/init/.qfai/assistant/skills/qfai-require/templates/03_Contracts-boundary.md +0 -19
- package/assets/init/.qfai/assistant/skills/qfai-require/templates/04_Data-and-glossary.md +0 -16
- package/assets/init/.qfai/assistant/skills/qfai-require/templates/05_Test-policy.md +0 -18
- package/assets/init/.qfai/assistant/skills/qfai-require/templates/06_Compliance-and-risk.md +0 -18
- package/assets/init/.qfai/assistant/skills/qfai-require/templates/07_Open-questions.md +0 -18
package/README.md
CHANGED
|
@@ -33,7 +33,7 @@ npx qfai report
|
|
|
33
33
|
- `npx qfai init`
|
|
34
34
|
- Creates the QFAI workspace under `.qfai/` (requirements/specs/contracts/report) and installs the AI assistant kit (`assistant/` with skills, instructions, agents, and steering templates), plus `qfai.config.yaml`.
|
|
35
35
|
- `npx qfai validate`
|
|
36
|
-
- Validates specs/contracts/scenarios/traceability and writes `.qfai/report/validate.json
|
|
36
|
+
- Validates specs/contracts/scenarios/traceability and review artifacts (`.qfai/review/review-*/summary.json` + minimum schema), writes `.qfai/report/validate.json`, and appends run logs to `.qfai/report/run-*/`; use `--fail-on error` (or `--fail-on warning`) to turn it into a CI gate, and `--format github` to emit GitHub-friendly annotations. Use `--phase refinement` only for local refinement checks; CI should use default/full validation.
|
|
37
37
|
- `npx qfai report`
|
|
38
38
|
- Produces a human-readable report (`report.md` by default) or an internal JSON export (`report.json`) from `validate.json`; use `--base-url` to link file paths in Markdown to your repository viewer.
|
|
39
39
|
- `npx qfai doctor`
|
|
@@ -56,8 +56,9 @@ QFAI includes a small set of custom skills (stored under `.qfai/assistant/skills
|
|
|
56
56
|
|
|
57
57
|
- **qfai-configure**: Analyze the repository (language, frameworks, test layout, directory structure) and tailor `qfai.config.yaml` accordingly (especially `testFileGlobs`). Run this once right after `npx qfai init`, and re-run it when the repository structure changes.
|
|
58
58
|
- **qfai-discuss**: Turn an idea into clear requirements by discussing scope, constraints, risks, and open questions.
|
|
59
|
-
- **qfai-require**: Produce
|
|
60
|
-
- **qfai-sdd**:
|
|
59
|
+
- **qfai-require**: Produce a fixed 9-file require-pack (`01_Sources.md`..`09_delta.md`) under `.qfai/require/require-<ts>/`.
|
|
60
|
+
- **qfai-sdd**: Unified SDD entrypoint with require-pack preflight guard (missing/incomplete/blocking OQ causes stop + next action guidance).
|
|
61
|
+
- **qfai-sdd-refinement / qfai-sdd-planning (deprecated wrappers)**: Legacy entrypoints that return a fixed deprecation notice and route to `/qfai-sdd` only (no direct artifact generation).
|
|
61
62
|
- **qfai-prototyping**: Build a contract-aligned skeleton implementation before deep coding.
|
|
62
63
|
- **qfai-atdd**: Implement acceptance tests driven by specs/scenarios.
|
|
63
64
|
- **qfai-tdd-red**: Add failing unit/component tests from the approved acceptance scenarios.
|
|
@@ -87,17 +88,17 @@ AG-->>U: Config tuned to this repo
|
|
|
87
88
|
|
|
88
89
|
opt If you only have an idea
|
|
89
90
|
U->>AG: Run /qfai-discuss
|
|
90
|
-
AG-->>U: Structured discuss package (.qfai/discuss/
|
|
91
|
+
AG-->>U: Structured discuss package (.qfai/discuss/discuss-<ts>/)
|
|
91
92
|
end
|
|
92
93
|
|
|
93
94
|
U->>AG: Run /qfai-require
|
|
94
95
|
AG->>Q: Read .qfai/assistant/skills/qfai-require/SKILL.md
|
|
95
|
-
AG->>R: Create/Update
|
|
96
|
-
AG-->>U:
|
|
96
|
+
AG->>R: Create/Update require-pack under require-<ts> (01_Sources..09_delta)
|
|
97
|
+
AG-->>U: Require-pack ready
|
|
97
98
|
|
|
98
99
|
U->>AG: Run /qfai-sdd
|
|
99
100
|
AG->>Q: Read .qfai/assistant/skills/qfai-sdd/SKILL.md
|
|
100
|
-
AG->>R:
|
|
101
|
+
AG->>R: Preflight + create/refine layered specs + finalize 10_Plan + delta
|
|
101
102
|
AG-->>U: SDD artifacts ready
|
|
102
103
|
|
|
103
104
|
U->>AG: Run /qfai-prototyping
|
|
@@ -146,6 +147,8 @@ Operational notes.
|
|
|
146
147
|
- Skills should delegate work to multiple role-based sub-agents (Planner, Architect, Contract Designer, QA, Code Reviewer, etc.) to emulate a real delivery flow.
|
|
147
148
|
- Change classification (Primary/Tags) is required in `18_delta.md` and recommended in PRs. See `.qfai/assistant/instructions/change-classification.md`.
|
|
148
149
|
- Verification planning is recorded in `18_delta.md` (`Verification -> Plan`) and validated in CI (`VFY-*` rules).
|
|
150
|
+
- Review gate policies (required/optional layers and reviewers) are defined in `.qfai/assistant/steering/review-gate.rules.yml`.
|
|
151
|
+
- Review roster SSOT is defined in `.qfai/assistant/steering/review-roster.yml`.
|
|
149
152
|
|
|
150
153
|
## Configuration
|
|
151
154
|
|
|
@@ -176,7 +179,7 @@ validation:
|
|
|
176
179
|
|
|
177
180
|
Notes.
|
|
178
181
|
|
|
179
|
-
- `validate.json`, `report.json`,
|
|
182
|
+
- `validate.json`, `report.json`, `doctor.json`, and `run-*` JSON logs are internal exports and are not a stable external contract; prefer `report.md` for integrations that must survive tool upgrades.
|
|
180
183
|
- Scenario files are expected to use the Gherkin extension `*.feature` (not `*.md`).
|
|
181
184
|
|
|
182
185
|
## Specifications and contracts (SDD)
|
|
@@ -207,18 +210,19 @@ flowchart LR
|
|
|
207
210
|
- Contracts SSOT: `.qfai/contracts/**`
|
|
208
211
|
- Report outputs (`.qfai/report/**`) are derived artifacts and not SSOT.
|
|
209
212
|
|
|
210
|
-
## Minimal tutorial (v1.4.
|
|
213
|
+
## Minimal tutorial (v1.4.23)
|
|
211
214
|
|
|
212
215
|
1. `npx qfai init`
|
|
213
216
|
2. Run `/qfai-discuss` to structure scope and open questions.
|
|
214
|
-
3. Run `/qfai-require` to produce `
|
|
215
|
-
4. Run `/qfai-sdd` to build
|
|
216
|
-
5.
|
|
217
|
+
3. Run `/qfai-require` to produce a require pack (`01_Sources`..`09_delta`) under `.qfai/require/require-<ts>/`.
|
|
218
|
+
4. Run `/qfai-sdd` to build layered specs and finalized plans.
|
|
219
|
+
5. For each completed review cycle, append artifacts under `.qfai/review/review-<timestamp>/`.
|
|
220
|
+
6. Run `npx qfai validate` then `npx qfai report`.
|
|
217
221
|
|
|
218
222
|
Release gate behavior:
|
|
219
223
|
|
|
220
224
|
- Merge gate: `qfai validate` must pass (`error=0`), and open OQ is warning.
|
|
221
|
-
- Release gate: set `release_candidate: true` in `03_Initiative.md
|
|
225
|
+
- Release gate: set `release_candidate: true` in the Initiative layer (`03_Initiative.md`); open OQ then becomes error.
|
|
222
226
|
|
|
223
227
|
## FAQ
|
|
224
228
|
|
|
@@ -229,11 +233,11 @@ Release gate behavior:
|
|
|
229
233
|
- Q: `18_delta.md` fails validation.
|
|
230
234
|
- A: Include all required sections (`Change Summary`, `Rationale`, `Candidates Considered`, `Adopted`, `Rejected`, `Impact`, `Follow-ups`) and include both `DO NOT` and `Temptation` in `Rejected`.
|
|
231
235
|
- Q: release_candidate validation fails due open questions.
|
|
232
|
-
- A:
|
|
236
|
+
- A: Keep specs definition-only, use `.qfai/report/run-*` as execution logs, and convert open OQ to `resolved` or `deferred` with evidence.
|
|
233
237
|
|
|
234
238
|
## Continuous integration
|
|
235
239
|
|
|
236
|
-
QFAI v1.4.
|
|
240
|
+
QFAI v1.4.23 generates `.github/**` only for Copilot integration wrappers
|
|
237
241
|
(`.github/prompts`, `.github/agents`).
|
|
238
242
|
It does not generate GitHub Actions workflows.
|
|
239
243
|
Configure CI in your own platform and run:
|
|
@@ -260,7 +264,7 @@ Waiver policy.
|
|
|
260
264
|
Typical customizations.
|
|
261
265
|
|
|
262
266
|
- Add a `doctor` step before validate if you want to fail fast on path/glob/config issues.
|
|
263
|
-
- Publish `.qfai/report/validate.json
|
|
267
|
+
- Publish `.qfai/report/validate.json`, `report.md`, and relevant `.qfai/report/run-*/` logs as CI artifacts.
|
|
264
268
|
|
|
265
269
|
## Generated structure
|
|
266
270
|
|
|
@@ -303,6 +307,10 @@ Typical customizations.
|
|
|
303
307
|
│ │ │ │ └── SKILL.md
|
|
304
308
|
│ │ │ ├── qfai-sdd
|
|
305
309
|
│ │ │ │ └── SKILL.md
|
|
310
|
+
│ │ │ ├── qfai-sdd-refinement (deprecated wrapper)
|
|
311
|
+
│ │ │ │ └── SKILL.md
|
|
312
|
+
│ │ │ ├── qfai-sdd-planning (deprecated wrapper)
|
|
313
|
+
│ │ │ │ └── SKILL.md
|
|
306
314
|
│ │ │ ├── qfai-atdd
|
|
307
315
|
│ │ │ │ └── SKILL.md
|
|
308
316
|
│ │ │ ├── qfai-tdd-red
|
|
@@ -315,18 +323,22 @@ Typical customizations.
|
|
|
315
323
|
│ │ │ └── SKILL.md
|
|
316
324
|
│ │ ├── skills.local
|
|
317
325
|
│ │ │ └── README.md
|
|
326
|
+
│ │ ├── templates
|
|
327
|
+
│ │ │ └── rcp_footer.md
|
|
318
328
|
│ │ ├── steering
|
|
319
329
|
│ │ │ ├── README.md
|
|
330
|
+
│ │ │ ├── review-gate.rules.yml
|
|
331
|
+
│ │ │ ├── review-roster.yml
|
|
320
332
|
│ │ │ ├── product.md
|
|
321
333
|
│ │ │ ├── structure.md
|
|
322
334
|
│ │ │ └── tech.md
|
|
323
335
|
│ │ └── README.md
|
|
324
336
|
│ ├── discuss
|
|
325
337
|
│ │ ├── README.md
|
|
326
|
-
│ │ └──
|
|
327
|
-
│ │ ├──
|
|
338
|
+
│ │ └── discuss-20260215205220203
|
|
339
|
+
│ │ ├── 01_Context.md
|
|
328
340
|
│ │ ├── ...
|
|
329
|
-
│ │ └──
|
|
341
|
+
│ │ └── 09_delta.md
|
|
330
342
|
│ ├── contracts
|
|
331
343
|
│ │ ├── api
|
|
332
344
|
│ │ │ └── README.md
|
|
@@ -336,13 +348,23 @@ Typical customizations.
|
|
|
336
348
|
│ │ │ └── README.md
|
|
337
349
|
│ │ └── README.md
|
|
338
350
|
│ ├── report
|
|
339
|
-
│ │
|
|
351
|
+
│ │ ├── .gitignore
|
|
352
|
+
│ │ ├── README.md
|
|
353
|
+
│ │ └── run-20260218123456789
|
|
354
|
+
│ │ ├── run.json
|
|
355
|
+
│ │ ├── validator.json
|
|
356
|
+
│ │ ├── traceability.json
|
|
357
|
+
│ │ └── summary.md
|
|
340
358
|
│ ├── require
|
|
341
359
|
│ │ ├── README.md
|
|
342
|
-
│ │
|
|
343
|
-
│ │
|
|
344
|
-
│ │
|
|
345
|
-
│ │
|
|
360
|
+
│ │ └── require-20260215205220203
|
|
361
|
+
│ │ ├── 01_Sources.md
|
|
362
|
+
│ │ ├── 02_Scope.md
|
|
363
|
+
│ │ ├── 03_REQ.md
|
|
364
|
+
│ │ ├── ...
|
|
365
|
+
│ │ └── 09_delta.md
|
|
366
|
+
│ ├── review
|
|
367
|
+
│ │ ├── .gitignore
|
|
346
368
|
│ │ └── README.md
|
|
347
369
|
│ ├── specs
|
|
348
370
|
│ │ └── README.md
|
|
@@ -24,6 +24,7 @@ flowchart TD
|
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
> Formatting must follow the templates and checklists documented in each directory README.
|
|
27
|
+
> Legacy wrappers `/qfai-sdd-refinement` and `/qfai-sdd-planning` are deprecated and route to `/qfai-sdd`.
|
|
27
28
|
|
|
28
29
|
## Directory map
|
|
29
30
|
|
|
@@ -36,9 +37,26 @@ flowchart TD
|
|
|
36
37
|
│ ├── skills/ # canonical skills (SSOT)
|
|
37
38
|
│ ├── skills.local/ # project-specific overrides
|
|
38
39
|
│ ├── agents/ # sub-agent missions
|
|
39
|
-
│ ├──
|
|
40
|
+
│ ├── templates/ # shared assistant templates (RCP footer SSOT)
|
|
41
|
+
│ ├── steering/ # project steering inputs and review roster
|
|
40
42
|
│ └── instructions/ # workflow and guardrail docs
|
|
41
43
|
├── require/
|
|
44
|
+
│ ├── README.md
|
|
45
|
+
│ └── require-YYYYMMDDhhmmssSSS/
|
|
46
|
+
│ ├── 01_Sources.md
|
|
47
|
+
│ ├── 02_Scope.md
|
|
48
|
+
│ ├── 03_REQ.md
|
|
49
|
+
│ ├── 04_NFR.md
|
|
50
|
+
│ ├── 05_Glossary.md
|
|
51
|
+
│ ├── 06_Constraints.md
|
|
52
|
+
│ ├── 07_Policy.md
|
|
53
|
+
│ ├── 08_OQ.md
|
|
54
|
+
│ └── 09_delta.md
|
|
55
|
+
├── report/
|
|
56
|
+
│ ├── .gitignore
|
|
57
|
+
│ └── README.md
|
|
58
|
+
├── review/
|
|
59
|
+
│ ├── .gitignore
|
|
42
60
|
│ └── README.md
|
|
43
61
|
├── contracts/
|
|
44
62
|
│ ├── README.md
|
|
@@ -79,15 +97,16 @@ It is useful for local review but should not pollute version control.
|
|
|
79
97
|
- Prefer small stable identifiers (REQ/BR/AC/TC/EX/etc.) over long mixed paragraphs.
|
|
80
98
|
- If one line contains multiple independent constraints, split it.
|
|
81
99
|
|
|
82
|
-
### R4.
|
|
100
|
+
### R4. Layered specs are runtime SSOT
|
|
83
101
|
|
|
84
|
-
- Runtime validators and downstream skills consume `
|
|
85
|
-
-
|
|
102
|
+
- Runtime validators and downstream skills consume `_shared/**` and `spec-XXXX/**`.
|
|
103
|
+
- Split rule is fixed: `1 CAP = 1 spec`.
|
|
104
|
+
- Parent chain is fixed: `US -> CAP`, `AC -> US`, `BR -> AC`, `EX -> BR|AC`, `TC -> EX`.
|
|
86
105
|
- Derived outputs under `.qfai/report/**` are non-SSOT.
|
|
87
106
|
|
|
88
107
|
### R5. init is an empty scaffold
|
|
89
108
|
|
|
90
|
-
- `qfai init` creates README-centric directories for `discuss`, `require`, `contracts`, and `specs`.
|
|
109
|
+
- `qfai init` creates README-centric directories for `discuss`, `require`, `report`, `contracts`, and `specs`.
|
|
91
110
|
- Sample artifacts are provided under skill templates (for example, `assistant/skills/qfai-sdd/templates/contracts/`).
|
|
92
111
|
|
|
93
112
|
## Skills (SSOT)
|
|
@@ -98,7 +117,8 @@ Invoke canonical skills from this tree directly.
|
|
|
98
117
|
## Where to look next
|
|
99
118
|
|
|
100
119
|
- Requirements format: `require/README.md`
|
|
120
|
+
- Review gate format: `review/README.md`
|
|
101
121
|
- Contracts format: `contracts/README.md` and child READMEs
|
|
102
|
-
-
|
|
122
|
+
- Layered spec format: `specs/README.md`
|
|
103
123
|
- Change classification: `assistant/instructions/change-classification.md`
|
|
104
124
|
- Evidence rules: `evidence/README.md`
|
|
@@ -11,8 +11,9 @@
|
|
|
11
11
|
- .qfai/assistant/steering/\*
|
|
12
12
|
- .qfai/specs/spec-\*/delta.md (Decision Records; check rejected)
|
|
13
13
|
- .qfai/specs/spec-\*/spec.md
|
|
14
|
-
- .qfai/require/
|
|
15
|
-
- .qfai/require/require.md
|
|
14
|
+
- .qfai/require/require-\*/01_Sources.md
|
|
15
|
+
- .qfai/require/require-\*/03_REQ.md
|
|
16
|
+
- .qfai/require/require-\*/08_OQ.md (input gaps ledger)
|
|
16
17
|
- Existing architecture docs (if any)
|
|
17
18
|
|
|
18
19
|
## Deliverables (MANDATORY)
|
|
@@ -11,8 +11,9 @@
|
|
|
11
11
|
- .qfai/assistant/steering/\*
|
|
12
12
|
- .qfai/specs/spec-\*/delta.md (Decision Records; check rejected)
|
|
13
13
|
- .qfai/specs/spec-\*/spec.md
|
|
14
|
-
- .qfai/require/
|
|
15
|
-
- .qfai/require/require.md
|
|
14
|
+
- .qfai/require/require-\*/01_Sources.md
|
|
15
|
+
- .qfai/require/require-\*/03_REQ.md
|
|
16
|
+
- .qfai/require/require-\*/08_OQ.md (input gaps ledger)
|
|
16
17
|
- Existing contracts under `.qfai/contracts/**`
|
|
17
18
|
|
|
18
19
|
## Deliverables (MANDATORY)
|
|
@@ -10,8 +10,9 @@
|
|
|
10
10
|
- .qfai/assistant/steering/\*
|
|
11
11
|
- .qfai/specs/spec-\*/delta.md (Decision Records; check rejected)
|
|
12
12
|
- .qfai/specs/spec-\*/spec.md
|
|
13
|
-
- .qfai/require/
|
|
14
|
-
- .qfai/require/require.md
|
|
13
|
+
- .qfai/require/require-\*/01_Sources.md
|
|
14
|
+
- .qfai/require/require-\*/03_REQ.md
|
|
15
|
+
- .qfai/require/require-\*/08_OQ.md (input gaps ledger)
|
|
15
16
|
- Evidence summaries under `.qfai/evidence/` (gitignored)
|
|
16
17
|
|
|
17
18
|
## Deliverables (MANDATORY)
|
|
@@ -11,8 +11,9 @@
|
|
|
11
11
|
- .qfai/assistant/steering/\*
|
|
12
12
|
- .qfai/specs/spec-\*/delta.md (Decision Records; check rejected)
|
|
13
13
|
- Existing discussion records under `.qfai/discuss/`
|
|
14
|
-
- .qfai/require/
|
|
15
|
-
- .qfai/require/require.md
|
|
14
|
+
- .qfai/require/require-\*/01_Sources.md
|
|
15
|
+
- .qfai/require/require-\*/03_REQ.md
|
|
16
|
+
- .qfai/require/require-\*/08_OQ.md (input gaps ledger)
|
|
16
17
|
|
|
17
18
|
## Deliverables (MANDATORY)
|
|
18
19
|
|
|
@@ -10,8 +10,9 @@
|
|
|
10
10
|
- .qfai/assistant/steering/\*
|
|
11
11
|
- .qfai/specs/spec-\*/delta.md (Decision Records; check rejected)
|
|
12
12
|
- Existing discussion records under `.qfai/discuss/`
|
|
13
|
-
- .qfai/require/
|
|
14
|
-
- .qfai/require/require.md
|
|
13
|
+
- .qfai/require/require-\*/01_Sources.md
|
|
14
|
+
- .qfai/require/require-\*/03_REQ.md
|
|
15
|
+
- .qfai/require/require-\*/08_OQ.md (input gaps ledger)
|
|
15
16
|
|
|
16
17
|
## Deliverables (MANDATORY)
|
|
17
18
|
|
|
@@ -9,8 +9,9 @@
|
|
|
9
9
|
- .qfai/assistant/instructions/\*
|
|
10
10
|
- .qfai/assistant/steering/\*
|
|
11
11
|
- .qfai/specs/spec-\*/delta.md (Decision Records; check rejected)
|
|
12
|
-
- .qfai/require/
|
|
13
|
-
- .qfai/require/require.md
|
|
12
|
+
- .qfai/require/require-\*/01_Sources.md
|
|
13
|
+
- .qfai/require/require-\*/03_REQ.md
|
|
14
|
+
- .qfai/require/require-\*/08_OQ.md (input gaps ledger)
|
|
14
15
|
- .qfai/specs/spec-\*/spec.md
|
|
15
16
|
- .qfai/specs/spec-\*/delta.md (draft)
|
|
16
17
|
- .qfai/contracts/\*\*
|
|
@@ -9,8 +9,9 @@
|
|
|
9
9
|
- .qfai/assistant/instructions/\*
|
|
10
10
|
- .qfai/assistant/steering/\*
|
|
11
11
|
- .qfai/specs/spec-\*/delta.md (Decision Records; check rejected)
|
|
12
|
-
- .qfai/require/
|
|
13
|
-
- .qfai/require/require.md
|
|
12
|
+
- .qfai/require/require-\*/01_Sources.md
|
|
13
|
+
- .qfai/require/require-\*/03_REQ.md
|
|
14
|
+
- .qfai/require/require-\*/08_OQ.md (input gaps ledger)
|
|
14
15
|
- .qfai/require/open-questions.md (if present)
|
|
15
16
|
- .qfai/specs/spec-\*/spec.md
|
|
16
17
|
- .qfai/specs/spec-\*/delta.md
|
|
@@ -12,8 +12,9 @@
|
|
|
12
12
|
- .qfai/assistant/steering/test-layers.md (test-layer definitions + required coverage expectations)
|
|
13
13
|
- .qfai/specs/spec-\*/delta.md (Decision Records; check rejected)
|
|
14
14
|
- OQ candidate list from OQ Harvester
|
|
15
|
-
- .qfai/require/
|
|
16
|
-
- .qfai/require/require.md
|
|
15
|
+
- .qfai/require/require-\*/01_Sources.md
|
|
16
|
+
- .qfai/require/require-\*/03_REQ.md
|
|
17
|
+
- .qfai/require/require-\*/08_OQ.md (input gaps ledger)
|
|
17
18
|
- .qfai/require/open-questions.md (if present)
|
|
18
19
|
- .qfai/specs/spec-\*/spec.md
|
|
19
20
|
- .qfai/specs/spec-\*/delta.md
|
|
@@ -10,8 +10,9 @@
|
|
|
10
10
|
- .qfai/assistant/steering/\*
|
|
11
11
|
- .qfai/specs/spec-\*/delta.md (Decision Records; check rejected)
|
|
12
12
|
- .qfai/specs/spec-\*/spec.md
|
|
13
|
-
- .qfai/require/
|
|
14
|
-
- .qfai/require/require.md
|
|
13
|
+
- .qfai/require/require-\*/01_Sources.md
|
|
14
|
+
- .qfai/require/require-\*/03_REQ.md
|
|
15
|
+
- .qfai/require/require-\*/08_OQ.md (input gaps ledger)
|
|
15
16
|
- Existing constraints and gate commands
|
|
16
17
|
|
|
17
18
|
## Deliverables (MANDATORY)
|
|
@@ -9,8 +9,9 @@
|
|
|
9
9
|
- .qfai/assistant/instructions/\*
|
|
10
10
|
- .qfai/assistant/steering/\*
|
|
11
11
|
- .qfai/specs/spec-\*/delta.md (Decision Records; check rejected)
|
|
12
|
-
- .qfai/require/
|
|
13
|
-
- .qfai/require/require.md
|
|
12
|
+
- .qfai/require/require-\*/01_Sources.md
|
|
13
|
+
- .qfai/require/require-\*/03_REQ.md
|
|
14
|
+
- .qfai/require/require-\*/08_OQ.md (input gaps ledger)
|
|
14
15
|
- .qfai/specs/spec-\*/spec.md
|
|
15
16
|
- Evidence summaries under `.qfai/evidence/` (gitignored)
|
|
16
17
|
|
|
@@ -9,8 +9,9 @@
|
|
|
9
9
|
- .qfai/assistant/instructions/\*
|
|
10
10
|
- .qfai/assistant/steering/\*
|
|
11
11
|
- .qfai/specs/spec-\*/delta.md (Decision Records; check rejected)
|
|
12
|
-
- .qfai/require/
|
|
13
|
-
- .qfai/require/require.md
|
|
12
|
+
- .qfai/require/require-\*/01_Sources.md
|
|
13
|
+
- .qfai/require/require-\*/03_REQ.md
|
|
14
|
+
- .qfai/require/require-\*/08_OQ.md (input gaps ledger)
|
|
14
15
|
- Discussion records under `.qfai/discuss/`
|
|
15
16
|
- .qfai/specs/spec-\*/spec.md (if available)
|
|
16
17
|
|
|
@@ -2,74 +2,58 @@
|
|
|
2
2
|
|
|
3
3
|
## Purpose
|
|
4
4
|
|
|
5
|
-
Define a
|
|
5
|
+
Define a repeatable decomposition from external requirement sources to layered specs and tests.
|
|
6
6
|
|
|
7
|
-
This document is the
|
|
7
|
+
This document is the decision rule SSOT for AI and humans when answering:
|
|
8
8
|
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
9
|
+
- What inputs are required before SDD starts?
|
|
10
|
+
- How should capabilities be split into spec directories?
|
|
11
|
+
- How is traceability kept stable?
|
|
12
12
|
|
|
13
13
|
## Canonical order (top -> down)
|
|
14
14
|
|
|
15
|
-
1. **
|
|
16
|
-
2. **
|
|
17
|
-
3. **
|
|
18
|
-
4. **
|
|
19
|
-
5. **
|
|
15
|
+
1. **Source registry** (`require/require-*/01_Sources.md`)
|
|
16
|
+
2. **Requirement index** (`require/require-*/03_REQ.md`)
|
|
17
|
+
3. **Input gaps / Open Questions** (`require/require-*/08_OQ.md`)
|
|
18
|
+
4. **Shared specs** (`specs/_shared/01..04`)
|
|
19
|
+
5. **Capability slices** (`specs/spec-*/01..05` minimum)
|
|
20
20
|
6. **ATDD / TDD** (tests + code)
|
|
21
21
|
|
|
22
22
|
## Decision rules
|
|
23
23
|
|
|
24
|
-
### Rule 1 -
|
|
24
|
+
### Rule 1 - Start from source-backed inputs
|
|
25
25
|
|
|
26
|
-
-
|
|
27
|
-
- If
|
|
28
|
-
- a requirement (`REQ-*`) and/or
|
|
29
|
-
- a spec pack (`spec-*`) and/or
|
|
30
|
-
- an explicit Out-of-scope row in the Coverage Map.
|
|
26
|
+
- Every requirement index row must point to source IDs (`SRC-XXXX`).
|
|
27
|
+
- If source linkage is missing, stop and create an Open Question.
|
|
31
28
|
|
|
32
|
-
### Rule 2 -
|
|
29
|
+
### Rule 2 - Preserve layered ownership
|
|
33
30
|
|
|
34
|
-
|
|
31
|
+
- `require/` stores only source/index/gap inputs.
|
|
32
|
+
- `specs/` is the SSOT for detailed behavior and design decisions.
|
|
33
|
+
- Do not duplicate detailed spec text in `require/`.
|
|
35
34
|
|
|
36
|
-
|
|
37
|
-
- any supporting actors (external services, humans, systems)
|
|
35
|
+
### Rule 3 - Keep ambiguity explicit
|
|
38
36
|
|
|
39
|
-
|
|
37
|
+
- Unknowns remain explicit as Open Questions.
|
|
38
|
+
- Resolved answers are promoted to `_shared` or `spec-XXXX` artifacts, then OQ status is updated.
|
|
40
39
|
|
|
41
|
-
|
|
40
|
+
## How to decompose (mechanical procedure)
|
|
42
41
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
1. Register source documents and assumptions in `require-*/01_Sources.md`.
|
|
43
|
+
2. Extract concise requirement index entries in `require-*/03_REQ.md`.
|
|
44
|
+
3. Capture missing information in `require-*/08_OQ.md`.
|
|
45
|
+
4. Build `_shared` layer (`Objective`, `Initiative`, `Capabilities`, `Business Flow`).
|
|
46
|
+
5. Split by capability (`1 CAP = 1 spec-XXXX`) and produce slice files.
|
|
47
|
+
6. Derive acceptance tests and implementation from the finalized slices.
|
|
46
48
|
|
|
47
|
-
##
|
|
49
|
+
## Example
|
|
48
50
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
- Each step should be a verb phrase and observable.
|
|
53
|
-
3. For each in-scope BF step, draft:
|
|
54
|
-
- a candidate user story (optional; can remain implicit)
|
|
55
|
-
- one or more atomic **REQ-FUNC** items (EARS style recommended)
|
|
56
|
-
- any **REQ-NFR** needed for the step
|
|
57
|
-
4. Group BF steps into spec packs:
|
|
58
|
-
- Aim for 1-3 scenarios per spec pack.
|
|
59
|
-
- Split when scenarios exceed that or when the slice spans multiple distinct user goals.
|
|
60
|
-
5. In each spec pack:
|
|
61
|
-
- Reference BF step IDs and actor IDs in `spec.md` Context.
|
|
62
|
-
- Ensure traceability matrix includes BF step IDs.
|
|
63
|
-
|
|
64
|
-
## Examples
|
|
65
|
-
|
|
66
|
-
### Example: One BF step -> one spec pack
|
|
67
|
-
|
|
68
|
-
- BF step: `BF-0003-S02 User submits validation request`
|
|
69
|
-
- Spec pack: `spec-0012`
|
|
70
|
-
- Context: Actor `ACT-0001 Developer`
|
|
71
|
-
- Traceability: `BF-0003-S02 -> REQ-FUNC-0044 -> spec-0012 -> SC-0012-01`
|
|
51
|
+
- Requirement index entry: `REQ-0003` linked to `SRC-0002`
|
|
52
|
+
- Capability mapping: `CAP-0003` in `_shared/03_Capabilities.md`
|
|
53
|
+
- Spec slice: `spec-0003/01_Spec.md` through `06_Test-Cases.md`
|
|
72
54
|
|
|
73
55
|
## Non-goals
|
|
74
56
|
|
|
75
|
-
-
|
|
57
|
+
- Managing release status flags in specs.
|
|
58
|
+
- Keeping full requirement prose in `require/`.
|
|
59
|
+
- Treating diagrams as mandatory at require stage.
|
|
@@ -49,15 +49,16 @@ Do not proceed without a declared Change Type.
|
|
|
49
49
|
0. Steering refresh (project memory bootstrap)
|
|
50
50
|
1. Discussion (optional): clarify idea → requirement seed
|
|
51
51
|
2. Requirements: requirements document in `.qfai/require/`
|
|
52
|
-
3. Specification (SDD):
|
|
53
|
-
4.
|
|
54
|
-
5.
|
|
55
|
-
6.
|
|
56
|
-
7.
|
|
52
|
+
3. Specification refinement (SDD): preflight + `_shared` / `spec-XXXX/01..06`
|
|
53
|
+
4. Specification planning (SDD): `spec-XXXX/10_Plan.md` (How-only)
|
|
54
|
+
5. Prototyping (optional): contract-aligned implementation skeleton
|
|
55
|
+
6. Scenario tests (ATDD): runnable scenario tests derived from `scenario.feature`
|
|
56
|
+
7. TDD: red/green/refactor loop enforcing spec + tests
|
|
57
|
+
8. Verify: run quality gates and provide evidence
|
|
57
58
|
|
|
58
59
|
### Stage 0 — Steering refresh contract (mandatory)
|
|
59
60
|
|
|
60
|
-
At the beginning of each stage (`qfai-discuss`, `qfai-require`, `qfai-sdd`, `qfai-prototyping`, `qfai-atdd`, `qfai-tdd-*`, `qfai-verify`):
|
|
61
|
+
At the beginning of each stage (`qfai-discuss`, `qfai-require`, `qfai-sdd`, `qfai-sdd-refinement`, `qfai-sdd-planning`, `qfai-prototyping`, `qfai-atdd`, `qfai-tdd-*`, `qfai-verify`):
|
|
61
62
|
|
|
62
63
|
1. Check these steering files:
|
|
63
64
|
- `.qfai/assistant/steering/manifest.md`
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"spec_dir": [
|
|
3
|
+
"01_Spec.md",
|
|
4
|
+
"02_User-stories.md",
|
|
5
|
+
"03_Acceptance-Criteria.md",
|
|
6
|
+
"04_Business-Rules.md",
|
|
7
|
+
"05_Examples.md",
|
|
8
|
+
"06_Test-Cases.md",
|
|
9
|
+
"07_Decisions.md",
|
|
10
|
+
"08_Open-questions.md",
|
|
11
|
+
"09_delta.md"
|
|
12
|
+
],
|
|
13
|
+
"shared_dir": [
|
|
14
|
+
"01_Objective.md",
|
|
15
|
+
"02_Initiative.md",
|
|
16
|
+
"03_Capabilities.md",
|
|
17
|
+
"04_Business-Flow.md",
|
|
18
|
+
"05_Contracts.md",
|
|
19
|
+
"06_Glossary.md",
|
|
20
|
+
"07_Constraints.md",
|
|
21
|
+
"08_Decisions.md",
|
|
22
|
+
"09_Open-questions.md",
|
|
23
|
+
"10_delta.md"
|
|
24
|
+
]
|
|
25
|
+
}
|