qfai 1.8.7 → 1.8.8

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.
Files changed (44) hide show
  1. package/README.md +33 -14
  2. package/assets/init/.qfai/assistant/skills/qfai-discussion/SKILL.md +3 -4
  3. package/assets/init/.qfai/assistant/skills/qfai-discussion/references/design-dna-intake.md +2 -3
  4. package/assets/init/.qfai/assistant/skills/qfai-discussion/references/discussion-artifact-rules.md +4 -4
  5. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/prototyping.yaml +2 -3
  6. package/assets/init/.qfai/assistant/skills/qfai-implement/SKILL.md +5 -8
  7. package/assets/init/.qfai/assistant/skills/qfai-prototyping/references/handoff.md +2 -3
  8. package/assets/init/.qfai/assistant/skills/qfai-prototyping/references/reviewer-prompt.md +0 -1
  9. package/assets/init/.qfai/assistant/skills/qfai-prototyping/templates/contracts/prototype-handoff.sample.yaml +3 -4
  10. package/assets/init/.qfai/assistant/skills/qfai-sdd/SKILL.md +122 -229
  11. package/assets/init/.qfai/assistant/skills/qfai-sdd/references/sdd-execution-playbook.md +31 -7
  12. package/assets/init/.qfai/assistant/skills/qfai-sdd/references/sdd-phase-checklists.md +16 -0
  13. package/assets/init/.qfai/assistant/skills/qfai-sdd/references/sdd-quality-gate.md +11 -0
  14. package/assets/init/.qfai/assistant/skills/qfai-sdd/references/sdd-triage.md +137 -0
  15. package/assets/init/.qfai/assistant/skills/qfai-sdd/references/ui-design-contract-normalization.md +15 -15
  16. package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/contracts/brand-design.sample.yaml +0 -1
  17. package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/contracts/reference-pool.sample.yaml +0 -1
  18. package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/_policies/10_delta.md +17 -0
  19. package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/_policies/11_Slice-Policy.md +116 -19
  20. package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/spec/01_Spec.md +6 -0
  21. package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/spec/09_delta.md +12 -0
  22. package/assets/init/.qfai/assistant/skills/qfai-verify/SKILL.md +2 -2
  23. package/assets/init/.qfai/assistant/skills/web-research/SKILL.md +2 -3
  24. package/assets/init/.qfai/assistant/steering/agent-routing.yml +3 -4
  25. package/assets/init/.qfai/assistant/steering/cli-ux-guidelines.md +1 -1
  26. package/assets/init/.qfai/assistant/steering/manifest.md +28 -40
  27. package/assets/init/.qfai/assistant/steering/product.md +24 -49
  28. package/assets/init/.qfai/assistant/steering/research-first-protocol.md +3 -3
  29. package/assets/init/.qfai/assistant/steering/structure.md +21 -28
  30. package/assets/init/.qfai/assistant/steering/tech.md +21 -33
  31. package/assets/init/.qfai/assistant/steering/ui-definition-protocol.md +1 -1
  32. package/assets/init/root/.github/workflows/qfai-validate.yml +1 -1
  33. package/assets/uix-rev/comparison-review.md +1 -1
  34. package/dist/cli/index.cjs +529 -103
  35. package/dist/cli/index.cjs.map +1 -1
  36. package/dist/cli/index.mjs +529 -103
  37. package/dist/cli/index.mjs.map +1 -1
  38. package/dist/index.cjs +526 -98
  39. package/dist/index.cjs.map +1 -1
  40. package/dist/index.d.cts +10 -12
  41. package/dist/index.d.ts +10 -12
  42. package/dist/index.mjs +526 -98
  43. package/dist/index.mjs.map +1 -1
  44. package/package.json +2 -1
package/README.md CHANGED
@@ -18,10 +18,9 @@ The agent reads the repository, produces the required artifacts, and iterates un
18
18
  ## Release status
19
19
 
20
20
  - Release posture: runtime truthfulness is enforced.
21
- - Prototyping is UI-only; v2.0 (spec-0017) runs a single-thread evolution loop
22
- driven by `qfai prototyping iterate --cycle <n>`, with deterministic stop
23
- conditions (exit codes 0/64/65/2). The v1.x mode tier and full-harness
24
- machinery are removed.
21
+ - Prototyping is UI-only and runs a single-thread evolution loop driven by
22
+ `qfai prototyping iterate --cycle <n>`, with deterministic stop conditions
23
+ (exit codes 0 continue / 64 convergence / 65 max-iterations / 2 input error).
25
24
  - Runtime observation is observed-only (no synthetic 200 / API / DB prototyping coverage).
26
25
  - Per-iter evidence is `screenshot.png` + `index.html` per declared screen plus a single `review.json` (4-axis ordinal, prose critique, anti-slop detection, pivot directive).
27
26
  - Calibration SSOT is the calibration pack referenced by `calibrationRef.packPath`.
@@ -62,15 +61,15 @@ npx qfai report
62
61
  primary spec, UI contracts, design contract readiness, active agent-wrapper
63
62
  integrations, shipped role-input readiness, Playwright CLI launcher
64
63
  resolution/probing, and target URL reachability.
65
- Note: prototyping evidence (`.qfai/evidence/prototyping/prototyping.json` v3.0) is produced by the AI workflow
66
- (`/qfai-prototyping` v2.0, see spec-0017), not by a general-purpose end-user CLI flow.
64
+ Note: prototyping evidence (`.qfai/evidence/prototyping/prototyping.json`) is produced by the AI workflow
65
+ (`/qfai-prototyping`), not by a general-purpose end-user CLI flow.
67
66
  Use `npx qfai prototyping preflight --target-url <url>` for a focused
68
67
  prototyping preflight before the skill starts; it surfaces blocking
69
68
  `QFAI-DCON-*` design-contract issues alongside runtime assumptions and resolves a runnable Playwright CLI launcher.
70
- Use `npx qfai prototyping iterate --cycle <n> --target-url <url>` to drive each cycle of the v2.0 single-thread
69
+ Use `npx qfai prototyping iterate --cycle <n> --target-url <url>` to drive each cycle of the single-thread
71
70
  evolution loop. Exit codes: 0 (continue), 64 (convergence), 65 (max-iterations), 2 (input error).
72
71
  Traceability refs inside prototyping evidence must use repo-root-relative concrete artifact refs
73
- (for example `.qfai/specs/spec-0017/01_Spec.md#L3` or `.qfai/evidence/prototyping/iter-03/home.png`).
72
+ (for example `.qfai/specs/spec-0001/01_Spec.md#L3` or `.qfai/evidence/prototyping/iter-03/home.png`).
74
73
  Absolute paths are invalid. The same strict ref grammar is enforced for top-level and leaf evidence-bearing fields, including
75
74
  `runtimeGate.evidenceRefs`, `runtimeGate.ui[].declaredRef`, `runtimeGate.ui[].renderEvidenceRefs[]`,
76
75
  `runtimeGate.ui[].browserQaEvidenceRefs[]`, `specs[].coverageRefs[].declaredRef`, `specs[].coverageRefs[].observedRefs[]`,
@@ -121,12 +120,22 @@ QFAI includes a small set of custom skills (stored under `.qfai/assistant/skills
121
120
  - **qfai-discussion**: Run a unified structured discussion that produces and maintains the latest discussion pack
122
121
  as 15 required markdown files under `.qfai/discussion/discussion-<ts>/`.
123
122
  UI-bearing discussion packs may include `prototyping.yaml` as an optional recommendation artifact; non-ui discussion packs typically omit it.
124
- - **qfai-sdd**: Unified SDD entrypoint with discussion-pack preflight guard (missing/incomplete/blocking OQ causes stop + next action guidance).
125
- - **qfai-prototyping** (v2.0, spec-0017): Single-thread design evolution loop. One prototype iterated
126
- through up to 15 cycles of generate -> capture -> review with a 4-axis ordinal rubric, anti-slop
127
- detection, prose critique, and explicit pivot permission. Stops deterministically when all four
128
- axes hit `exceptional` (exit 64) or the iteration budget is exhausted (exit 65). The v1.x funnel,
129
- mode tier, polish/branch cycles, and 100/100 completion gate are removed.
123
+ - **qfai-sdd**: Unified SDD entrypoint with discussion-pack preflight guard
124
+ (missing/incomplete/blocking OQ causes stop + next action guidance).
125
+ After preflight, the skill runs a mandatory **Stage 1 Triage** that classifies
126
+ every incoming requirement into one of 8 first-class operations
127
+ (CREATE / UPDATE:APPEND / UPDATE:MODIFY / UPDATE:REMOVE / DELETE / SPLIT /
128
+ MERGE / SUPERSEDE) with an **append-first** bias: existing active specs
129
+ absorb the change unless there is zero subject-token overlap.
130
+ CREATE / DELETE / SPLIT / MERGE / SUPERSEDE / UPDATE:REMOVE require explicit
131
+ `AskUserQuestion` approval, and CREATE rows must register a new `CAP-NNNN`
132
+ in `.qfai/specs/_policies/03_Capabilities.md` before the row is accepted
133
+ (`QFAI-TRIAGE-006`). Every `01_Spec.md` declares a lifecycle
134
+ `Status: active | superseded | deprecated | removed` (`QFAI-STATUS-001..006`).
135
+ - **qfai-prototyping**: Single-thread design evolution loop. One prototype iterated through up to
136
+ 15 cycles of generate -> capture -> review with a 4-axis ordinal rubric, anti-slop detection,
137
+ prose critique, and explicit pivot permission. Stops deterministically when all four axes hit
138
+ `exceptional` (exit 64) or the iteration budget is exhausted (exit 65).
130
139
  - **qfai-atdd**: Implement acceptance tests driven by specs/scenarios.
131
140
  - **qfai-implement**: Unified TDD micro-cycle (Red/Green/Refactor) one test at a time using `test-list.md` as the execution ledger, including ledger status updates and exception closure.
132
141
  - **qfai-verify**: Run full-scan local quality gates (`validate --fail-on error`, `report`, repo gates) and produce reviewer-approved evidence under `.qfai/evidence/`.
@@ -283,6 +292,16 @@ Release gate behavior:
283
292
  - A: Include all required sections (`Change Summary`, `Rationale`, `Candidates Considered`, `Adopted`, `Rejected`, `Impact`, `Follow-ups`) and include both `DO NOT` and `Temptation` in `Rejected`.
284
293
  - Q: release_candidate validation fails due open questions.
285
294
  - A: Keep specs definition-only, use `.qfai/report/run-*` as execution logs, and convert open OQ to `resolved` or `deferred` with evidence.
295
+ - Q: `qfai validate` reports `QFAI-STATUS-001` ("Status bullet が見つかりません") on every spec.
296
+ - A: Each `01_Spec.md` must declare `- Status: active | superseded | deprecated | removed` (introduced in 1.8.8).
297
+ Add `Status: active` for currently-authoritative specs; superseded specs need a `- Superseded-by: spec-NNNN` companion bullet,
298
+ and deprecated/removed specs need `- Deprecated-at: YYYY-MM-DD`. The previous `QFAI-STATUS-001` (status-leak guard) was renamed to `QFAI-STATUSLEAK-001` to free the namespace.
299
+ - Q: `/qfai-sdd` is asking for `AskUserQuestion` approval that earlier versions never asked for.
300
+ - A: Stage 1 Triage classifies each requirement into one of 8 first-class operations and gates approval-required ops
301
+ (CREATE / DELETE / SPLIT / MERGE / SUPERSEDE / UPDATE:REMOVE) on explicit user confirmation. Append-first means UPDATE:APPEND on an existing active spec is the default;
302
+ CREATE additionally requires a new `CAP-NNNN` row in `.qfai/specs/_policies/03_Capabilities.md` before the row is accepted (`QFAI-TRIAGE-006`).
303
+ - Q: `delta.md` validation reports `QFAI-TRIAGE-001` ("Change Summary はあるが Triage がありません") as a warning.
304
+ - A: 1.8.8 introduced a `## Triage` section requirement. Existing operational deltas without it currently fail soft (warning); future minor versions will promote this to an error after operational backfill.
286
305
 
287
306
  ## Continuous integration
288
307
 
@@ -68,12 +68,11 @@ For UI-bearing targets, follow `references/design-dna-intake.md` while authoring
68
68
 
69
69
  - `30_exploration_brief.md` must define product intent, brand signals, and differentiation targets.
70
70
  - `31_reference_pool.md` must define exploration references with adopted points, rejected points, and copy risk — framed as **deviate-from** inputs (not imitate-this) for downstream `/qfai-prototyping` reviewer.
71
- - `32_design_anti_goals.md` must contain explicit anti-goals; this also feeds the global anti-slop pattern list consulted by the v2.0 reviewer.
71
+ - `32_design_anti_goals.md` must contain explicit anti-goals; this also feeds the global anti-slop pattern list consulted by the prototyping reviewer.
72
72
  - `50_review_input_bundle.md` must document review inputs for downstream skills.
73
73
 
74
- v1.x sidecars `33_exploration_rubric.md` and `34_evaluator_calibration.md`
75
- are removed in spec-0017 P4 (axes are global constants in
76
- `core/prototyping/iteration.ts#OrdinalScore`, ordinal 4-step scale).
74
+ Evaluation axes are global constants (4-step ordinal: weak / acceptable /
75
+ strong / exceptional) and are not authored as discussion sidecars.
77
76
 
78
77
  ## Completion Contract (Shared)
79
78
 
@@ -25,6 +25,5 @@ Use this reference only for UI-bearing discussion packs.
25
25
  - Put all reference decisions in `31_reference_pool.md` (deviate-from input, not imitate).
26
26
  - Put prohibited visual directions in `32_design_anti_goals.md` (also feeds reviewer anti-slop).
27
27
 
28
- v1.x sidecars `33_exploration_rubric.md` and `34_evaluator_calibration.md`
29
- are removed in spec-0017 P4. Evaluation axes are now global constants in
30
- `core/prototyping/iteration.ts#OrdinalScore`.
28
+ Evaluation axes are global constants (4-step ordinal: weak / acceptable /
29
+ strong / exceptional) and are not authored as discussion sidecars.
@@ -50,13 +50,13 @@ Discussion is exploration-first and must not choose a single visual winner or fi
50
50
 
51
51
  ## `prototyping.yaml`
52
52
 
53
- When `prototyping.yaml` is present, use the v2.0 single-thread schema:
53
+ When `prototyping.yaml` is present, use the single-thread schema:
54
54
 
55
55
  ```yaml
56
56
  prototyping:
57
57
  surface: web # web | mobile | desktop | mixed
58
58
  ```
59
59
 
60
- The v1.x `recommended_mode` / `allowed_modes` / `mode_expectations` fields
61
- were removed in spec-0017 P3 (the single-thread evolution loop fixes
62
- iteration count globally to 15).
60
+ Mode-tier fields (`recommended_mode` / `allowed_modes` / `mode_expectations`)
61
+ are not supported. The single-thread evolution loop fixes iteration count
62
+ globally to 15.
@@ -1,7 +1,6 @@
1
1
  prototyping:
2
- # v2.0 single-thread evolution loop (spec-0017): mode/maxCycles concepts
3
- # are removed; iteration count is fixed at 15 globally in
4
- # `core/prototyping/iteration.ts#MAX_ITERATIONS`.
2
+ # Single-thread evolution loop. Iteration count is fixed at 15 globally
3
+ # (no per-mode override).
5
4
  # Replace `web` with one of the prototyping-supported surfaces if needed:
6
5
  # web | mobile | desktop | mixed
7
6
  # (discussion classification also allows `cli` and `non-ui`, but those are
@@ -76,20 +76,17 @@ Execute the TDD micro-cycle for each pending item in `test-list.md`, transitioni
76
76
 
77
77
  - Review rendered output, screenshot evidence, or HTML output before closing any UI-affecting item.
78
78
  - Read spec + contract inputs first whenever implementation touches UI or critique-driven behavior.
79
- - Read order (v2.0, spec-0017 P11): `01_Spec.md` → `03_Acceptance-Criteria.md` → `05_Examples.md` →
79
+ - Read order: `01_Spec.md` → `03_Acceptance-Criteria.md` → `05_Examples.md` →
80
80
  `.qfai/contracts/design/exploration-brief.yaml` →
81
81
  `.qfai/contracts/design/reference-pool.yaml` → `.qfai/contracts/design/brand-design.yaml` →
82
82
  `.qfai/contracts/design/design-system.yaml` (extracted from final iter) →
83
83
  `.qfai/contracts/design/prototype-handoff.yaml` → `.qfai/contracts/ui/*.yaml` →
84
84
  canonical prototype evidence under `.qfai/evidence/prototyping/iter-NN/<screen>.{png,html}` →
85
85
  `.qfai/prototypes/final/index.html`.
86
- - The v1.x evaluation-rubric / evaluator-calibration / selected-direction contracts and
87
- `prototypes/winner/index.html` were removed in spec-0017 P4/P8.
88
- - Do not read discussion-pack UI/UX sidecars, fallback mocks, or legacy design aliases.
86
+ - Do not read discussion-pack UI/UX sidecars or fallback mocks.
89
87
  - Prototype HTML is analysis input, not production source. Reimplement with project-native
90
88
  patterns while preserving the visual identity captured in `prototype-handoff.yaml`
91
- `implementationNotes` (free-form prose); the v1.x mustPreserve / mayAdapt / mustNotCopy
92
- three-category split is removed.
89
+ `implementationNotes` (free-form prose).
93
90
  - UI-affecting items require product-surface-reviewer prototype parity review before `done`.
94
91
  - If code intent and rendered output diverge, treat the rendered/HTML result as the blocking review input and reconcile before DONE.
95
92
 
@@ -299,7 +296,7 @@ Completion MUST NOT be declared when any of the following are true:
299
296
  - Items with `todo`, `red`, `green`, or `refactor` status still exist (for spec-level completion)
300
297
  - Parallel slices were used but integration verify has not been run post-merge
301
298
  - Checkpoint boundary was reached but verification was not executed
302
- - `it.todo(...)` / `test.todo(...)` / `describe.todo(...)` stubs remain in any file covered by `validation.traceability.testFileGlobs` (`QFAI-TEST-001`, spec-0012). Implement the body or delete the stub — an opt-out via `validation.testStrategy.forbidTestTodoStubs: false` is permitted only with an accompanying waiver DR-ID.
299
+ - `it.todo(...)` / `test.todo(...)` / `describe.todo(...)` stubs remain in any file covered by `validation.traceability.testFileGlobs` (`QFAI-TEST-001`). Implement the body or delete the stub — an opt-out via `validation.testStrategy.forbidTestTodoStubs: false` is permitted only with an accompanying waiver DR-ID.
303
300
 
304
301
  ## Evidence (MANDATORY)
305
302
 
@@ -347,7 +344,7 @@ Each TDD item MUST have fresh evidence containing at minimum:
347
344
  - [ ] No backward transitions occurred.
348
345
  - [ ] Exception items have DR-IDs recorded.
349
346
  - [ ] All tests pass.
350
- - [ ] `qfai validate --profile tdd --fail-on error` passes with zero `QFAI-TEST-001` findings (no `it.todo` / `test.todo` / `describe.todo` stubs remain; spec-0012).
347
+ - [ ] `qfai validate --profile tdd --fail-on error` passes with zero `QFAI-TEST-001` findings (no `it.todo` / `test.todo` / `describe.todo` stubs remain).
351
348
 
352
349
  ## Completion Checklist (MUST)
353
350
 
@@ -25,7 +25,6 @@ LLM assistance is allowed for naming (primary / surface / accent etc.).
25
25
  ### `.qfai/contracts/design/prototype-handoff.yaml`
26
26
 
27
27
  ```yaml
28
- schemaVersion: "2.0"
29
28
  finalIterIndex: <number>
30
29
  finalArtifact: ".qfai/prototypes/final/index.html"
31
30
  extractedDesignSystem: ".qfai/contracts/design/design-system.yaml"
@@ -34,8 +33,8 @@ implementationNotes: |
34
33
  what makes this artifact distinct from generic AI defaults.
35
34
  ```
36
35
 
37
- The v1.x preserve / adapt / copy three-category split is removed. The artifact itself is the SSOT.
36
+ The artifact itself is the SSOT (no preserve / adapt / copy split).
38
37
 
39
38
  ## Cert
40
39
 
41
- Run `qfai prototyping certify` to produce `.qfai/evidence/prototyping/completion-certificate.json` (`schemaVersion: "2.0"`). Use `certify --check` to verify digests.
40
+ Run `qfai prototyping certify` to produce `.qfai/evidence/prototyping/completion-certificate.json`. Use `certify --check` to verify digests.
@@ -14,7 +14,6 @@ This file is injected into the product-surface-reviewer sub-agent on each cycle.
14
14
 
15
15
  ```json
16
16
  {
17
- "schemaVersion": "3.0",
18
17
  "iterIndex": <NN>,
19
18
  "reviewerId": "product-surface-reviewer",
20
19
  "scores": {
@@ -1,8 +1,7 @@
1
- # prototype-handoff.yaml v2.0 (spec-0017).
1
+ # prototype-handoff.yaml.
2
2
  # Produced by /qfai-prototyping post-loop. Consumed by /qfai-implement.
3
- # v1.x preserve/adapt/copy three-category split is removed: the final
4
- # artifact itself is the SSOT, not this handoff yaml.
5
- schemaVersion: "2.0"
3
+ # The final artifact itself is the SSOT; this handoff yaml is a thin
4
+ # pointer plus implementation notes.
6
5
  finalIterIndex: 8
7
6
  finalArtifact: ".qfai/prototypes/final/index.html"
8
7
  extractedDesignSystem: ".qfai/contracts/design/design-system.yaml"