qfai 1.10.0 → 1.10.2

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 (103) hide show
  1. package/README.md +95 -25
  2. package/assets/init/.qfai/assistant/README.md +27 -0
  3. package/assets/init/.qfai/assistant/agents/completion-reviewer.md +17 -1
  4. package/assets/init/.qfai/assistant/agents/delivery-planner.md +8 -0
  5. package/assets/init/.qfai/assistant/agents/implementation-reviewer.md +12 -1
  6. package/assets/init/.qfai/assistant/agents/orchestrator.md +2 -2
  7. package/assets/init/.qfai/assistant/agents/product-experience-architect.md +2 -1
  8. package/assets/init/.qfai/assistant/agents/product-surface-reviewer.md +1 -1
  9. package/assets/init/.qfai/assistant/agents/qa-gatekeeper.md +99 -14
  10. package/assets/init/.qfai/assistant/agents/test-design-analyst.md +4 -1
  11. package/assets/init/.qfai/assistant/catalog/cli-ux-guidelines.md +3 -0
  12. package/assets/init/.qfai/assistant/catalog/test-layers-ci-lanes.md +60 -0
  13. package/assets/init/.qfai/assistant/catalog/test-layers.md +169 -87
  14. package/assets/init/.qfai/assistant/catalog/worklog-entry.schema.md +4 -3
  15. package/assets/init/.qfai/assistant/constitution/agent-selection.md +7 -1
  16. package/assets/init/.qfai/assistant/constitution/communication.md +1 -1
  17. package/assets/init/.qfai/assistant/constitution/constitution.md +8 -2
  18. package/assets/init/.qfai/assistant/constitution/drift-protocol.md +177 -14
  19. package/assets/init/.qfai/assistant/constitution/review-convergence.md +121 -0
  20. package/assets/init/.qfai/assistant/constitution/shared-skill-delegation-baseline.md +205 -89
  21. package/assets/init/.qfai/assistant/constitution/shared-skill-operating-baseline.md +59 -5
  22. package/assets/init/.qfai/assistant/manifest/agent-catalog.yml +145 -21
  23. package/assets/init/.qfai/assistant/manifest/agent-routing.yml +69 -3
  24. package/assets/init/.qfai/assistant/skills/qfai-atdd/SKILL.md +131 -74
  25. package/assets/init/.qfai/assistant/skills/qfai-atdd/references/credential-reuse.md +146 -0
  26. package/assets/init/.qfai/assistant/skills/qfai-atdd/references/red-provenance.md +498 -0
  27. package/assets/init/.qfai/assistant/skills/qfai-atdd/references/review-fix-rounds.md +128 -0
  28. package/assets/init/.qfai/assistant/skills/qfai-atdd/references/scaffolding.md +71 -0
  29. package/assets/init/.qfai/assistant/skills/qfai-atdd/references/shared-test-artifacts.md +124 -0
  30. package/assets/init/.qfai/assistant/skills/qfai-atdd/references/stale-manifest.md +34 -0
  31. package/assets/init/.qfai/assistant/skills/qfai-atdd/references/test-case-depth-checklist.md +38 -1
  32. package/assets/init/.qfai/assistant/skills/qfai-configure/SKILL.md +4 -3
  33. package/assets/init/.qfai/assistant/skills/qfai-discussion/SKILL.md +10 -8
  34. package/assets/init/.qfai/assistant/skills/qfai-discussion/references/discussion-completion-matrix.md +23 -2
  35. package/assets/init/.qfai/assistant/skills/qfai-discussion/references/review-cycle-playbook.md +16 -1
  36. package/assets/init/.qfai/assistant/skills/qfai-discussion/references/ui-bearing-playbook.md +47 -11
  37. package/assets/init/.qfai/assistant/skills/qfai-discussion/references/ui_ux/trend_scan_playbook.md +1 -1
  38. package/assets/init/.qfai/assistant/skills/qfai-discussion/references/ui_ux_best_practices.md +6 -4
  39. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/01_Context.md +2 -2
  40. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/03_Story-Workshop.md +1 -1
  41. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/04_Sources.md +40 -6
  42. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/14_Review-Request.md +7 -7
  43. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/review/Rxx_reviewer.md +3 -3
  44. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/review/review_request.md +4 -3
  45. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/review/summary.json +3 -0
  46. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/00_index.md +14 -5
  47. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/40_screen_contracts.md +17 -1
  48. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/50_review_input_bundle.md +13 -8
  49. package/assets/init/.qfai/assistant/skills/qfai-implement/SKILL.md +83 -84
  50. package/assets/init/.qfai/assistant/skills/qfai-implement/references/checkpoint-verification.md +339 -39
  51. package/assets/init/.qfai/assistant/skills/qfai-implement/references/cross-spec-ownership.md +1 -1
  52. package/assets/init/.qfai/assistant/skills/qfai-implement/references/evidence-revision.md +348 -15
  53. package/assets/init/.qfai/assistant/skills/qfai-implement/references/execution-ledger.md +203 -32
  54. package/assets/init/.qfai/assistant/skills/qfai-implement/references/final-checklist.md +159 -12
  55. package/assets/init/.qfai/assistant/skills/qfai-implement/references/finding-classification.md +70 -5
  56. package/assets/init/.qfai/assistant/skills/qfai-implement/references/ledger-preconditions.md +55 -14
  57. package/assets/init/.qfai/assistant/skills/qfai-implement/references/parallelization-policy.md +92 -3
  58. package/assets/init/.qfai/assistant/skills/qfai-implement/references/red-not-observable.md +48 -6
  59. package/assets/init/.qfai/assistant/skills/qfai-implement/references/relevant-test-suite.md +13 -1
  60. package/assets/init/.qfai/assistant/skills/qfai-implement/references/review-artifact-layout.md +71 -9
  61. package/assets/init/.qfai/assistant/skills/qfai-implement/references/round-evidence.md +31 -7
  62. package/assets/init/.qfai/assistant/skills/qfai-implement/references/upstream-artifact-ordering.md +33 -0
  63. package/assets/init/.qfai/assistant/skills/qfai-implement/references/volume-policy.md +19 -12
  64. package/assets/init/.qfai/assistant/skills/qfai-prototyping/SKILL.md +76 -8
  65. package/assets/init/.qfai/assistant/skills/qfai-prototyping/references/design-md-spec.md +20 -0
  66. package/assets/init/.qfai/assistant/skills/qfai-prototyping/references/evidence-requirements.md +7 -4
  67. package/assets/init/.qfai/assistant/skills/qfai-prototyping/references/generator-prompt.md +83 -22
  68. package/assets/init/.qfai/assistant/skills/qfai-prototyping/references/reviewer-prompt.md +29 -4
  69. package/assets/init/.qfai/assistant/skills/qfai-sdd/SKILL.md +134 -20
  70. package/assets/init/.qfai/assistant/skills/qfai-sdd/references/contract-artifact-rules.md +31 -3
  71. package/assets/init/.qfai/assistant/skills/qfai-sdd/references/review-cycle-playbook.md +22 -1
  72. package/assets/init/.qfai/assistant/skills/qfai-sdd/references/sdd-execution-playbook.md +41 -5
  73. package/assets/init/.qfai/assistant/skills/qfai-sdd/references/sdd-phase-checklists.md +16 -4
  74. package/assets/init/.qfai/assistant/skills/qfai-sdd/references/sdd-triage.md +77 -7
  75. package/assets/init/.qfai/assistant/skills/qfai-sdd/references/spec-traceability-rules.md +60 -11
  76. package/assets/init/.qfai/assistant/skills/qfai-sdd/references/ui-design-contract-normalization.md +9 -3
  77. package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/change-request.md +14 -1
  78. package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/contracts/ui-contract.sample.yaml +13 -3
  79. package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/evidence/sdd-spec.md +5 -1
  80. package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/report/preflight_summary.md +3 -2
  81. package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/_policies/04_Business-Flow.md +4 -1
  82. package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/_policies/05_Contracts.md +12 -5
  83. package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/_policies/11_Slice-Policy.md +8 -9
  84. package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/spec/02_User-stories.md +9 -0
  85. package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/spec/tdd/test-list.md +68 -23
  86. package/assets/init/.qfai/assistant/skills/qfai-verify/SKILL.md +4 -4
  87. package/assets/init/.qfai/assistant/skills/qfai-verify/references/articles.md +1 -1
  88. package/assets/init/.qfai/assistant/skills/qfai-verify/references/validate-json-schema.md +79 -0
  89. package/assets/init/.qfai/assistant/skills/web-research/SKILL.md +3 -2
  90. package/assets/init/root/.github/workflows/qfai-tests.yml +318 -0
  91. package/assets/init/root/.github/workflows/qfai-validate.yml +327 -24
  92. package/assets/init/root/qfai.config.yaml +11 -2
  93. package/dist/cli/index.cjs +25083 -11488
  94. package/dist/cli/index.cjs.map +1 -1
  95. package/dist/cli/index.mjs +25216 -11589
  96. package/dist/cli/index.mjs.map +1 -1
  97. package/dist/index.cjs +16731 -8386
  98. package/dist/index.cjs.map +1 -1
  99. package/dist/index.d.cts +407 -17
  100. package/dist/index.d.ts +407 -17
  101. package/dist/index.mjs +16701 -8370
  102. package/dist/index.mjs.map +1 -1
  103. package/package.json +6 -1
@@ -12,6 +12,40 @@
12
12
  - `secondary`: Derived information (summaries, analyses).
13
13
  - `external`: Third-party references (specs, RFCs, vendor docs).
14
14
 
15
+ ## Research Summary
16
+
17
+ Research-First Protocol output. Schema: `constitution/research-first-protocol.md`.
18
+ Replace every `[...]` placeholder with real research: validation rejects
19
+ bracketed `title` / `url` / `reason` values and requires `published` to be a
20
+ real `YYYY-MM-DD` date, so an unfilled block below reports errors rather than
21
+ passing.
22
+
23
+ ```yaml
24
+ research_summary:
25
+ sources:
26
+ - id: SRC-0001
27
+ title: [Source title]
28
+ url: [https://example.com/reference]
29
+ published: [YYYY-MM-DD]
30
+ best_practices:
31
+ - id: BP-0001
32
+ category: [Category]
33
+ title: [Best practice title]
34
+ description: [What to do and why]
35
+ source_id: SRC-0001
36
+ anti_patterns:
37
+ - id: AP-0001
38
+ category: [Category]
39
+ title: [Anti-pattern title]
40
+ description: [What to avoid and why]
41
+ source_id: SRC-0001
42
+ reflection:
43
+ - source_id: SRC-0001
44
+ finding: [What the source implies for this project]
45
+ action: apply
46
+ reason: [Why this action was chosen]
47
+ ```
48
+
15
49
  ## Trend Scan
16
50
 
17
51
  ### user expectation / market norm
@@ -62,7 +96,7 @@
62
96
  - reference: [Source name or URL]
63
97
  - observation: [What color trend or signal was observed]
64
98
  - decision_connection: [How the color signal translates into this project]
65
- - evaluation_connection: [Which TRD-XX axis evaluates this color signal; leave blank to trigger UIX-VAL-T01]
99
+ - evaluation_connection: [How the color signal should be evaluated in design review]
66
100
  - local_implication: [What color choices should change locally]
67
101
 
68
102
  ### typography
@@ -73,7 +107,7 @@
73
107
  - reference: [Source name or URL]
74
108
  - observation: [What typographic trend or signal was observed]
75
109
  - decision_connection: [How the typography signal translates into this project]
76
- - evaluation_connection: [Which TRD-XX axis evaluates this typography signal; leave blank to trigger UIX-VAL-T01]
110
+ - evaluation_connection: [How the typography signal should be evaluated in design review]
77
111
  - local_implication: [What typeface or scale choices should change locally]
78
112
 
79
113
  ### Visual
@@ -84,7 +118,7 @@
84
118
  - reference: [Source name or URL]
85
119
  - observation: [What visual motif trend or signal was observed]
86
120
  - decision_connection: [How the visual motif translates into this project]
87
- - evaluation_connection: [Which TRD-XX axis evaluates this visual motif; leave blank to trigger UIX-VAL-T01]
121
+ - evaluation_connection: [How the visual motif should be evaluated in design review]
88
122
  - local_implication: [What visual motif choices should change locally]
89
123
 
90
124
  ### spacing
@@ -95,7 +129,7 @@
95
129
  - reference: [Source name or URL]
96
130
  - observation: [What spacing convention or density trend was observed]
97
131
  - decision_connection: [How the spacing signal translates into this project]
98
- - evaluation_connection: [Which TRD-XX axis evaluates this spacing signal; leave blank to trigger UIX-VAL-T01]
132
+ - evaluation_connection: [How the spacing signal should be evaluated in design review]
99
133
  - local_implication: [What spacing or density choices should change locally]
100
134
 
101
135
  ### shape
@@ -106,7 +140,7 @@
106
140
  - reference: [Source name or URL]
107
141
  - observation: [What shape language trend was observed (border-radius, geometric vs organic, etc.)]
108
142
  - decision_connection: [How the shape language translates into this project]
109
- - evaluation_connection: [Which TRD-XX axis evaluates this shape signal; leave blank to trigger UIX-VAL-T01]
143
+ - evaluation_connection: [How the shape signal should be evaluated in design review]
110
144
  - local_implication: [What shape-language choices should change locally]
111
145
 
112
146
  ### imagery
@@ -117,7 +151,7 @@
117
151
  - reference: [Source name or URL]
118
152
  - observation: [What imagery or illustration style trend was observed]
119
153
  - decision_connection: [How the imagery signal translates into this project]
120
- - evaluation_connection: [Which TRD-XX axis evaluates this imagery signal; leave blank to trigger UIX-VAL-T01]
154
+ - evaluation_connection: [How the imagery signal should be evaluated in design review]
121
155
  - local_implication: [What imagery or illustration choices should change locally]
122
156
 
123
157
  ### design_guideline_research
@@ -41,10 +41,10 @@
41
41
  - Acceptance criteria are consistent with flows/state transitions
42
42
  - Security/operations risks are reflected in diagrams where relevant
43
43
  - Mermaid diagrams use ` ```mermaid ` fences only
44
- - Root `DESIGN.md` completeness and differentiation clarity — it parses, and its `# Brand Philosophy` body carries do/don't, brand signals, and exploration references framed as **deviate-from** inputs (when UI-bearing)
45
- - Reference pool freshness and translation quality into `DESIGN.md`, and Trend Scan freshness and evidence traceability at `04_Sources.md#Trend Scan` (when UI-bearing)
44
+ - Root `DESIGN.md` completeness and differentiation clarity — it parses, and its `# Brand Philosophy` body carries do/don't, brand signals, and exploration references framed as **deviate-from** inputs (when a visual-prototyping surface — `web`/`mobile`/`desktop`/`mixed` — is classified as primary or secondary; a cli-only pack authors no root `DESIGN.md`, so skip this line for it)
45
+ - Reference pool freshness and translation quality — into root `DESIGN.md` when a visual-prototyping surface is classified, otherwise into `uiux/40_screen_contracts.md` — and Trend Scan freshness and evidence traceability at `04_Sources.md#Trend Scan` (when UI-bearing)
46
46
  - Canonical `uiux/` family complete — `00_index.md`, `40_screen_contracts.md`, `50_review_input_bundle.md` — with no forbidden legacy sidecar (when UI-bearing)
47
- - Evaluator scoring covers all four canonical UX axes — information architecture / navigation flow / usability / functionality, fixed in `core/prototyping/evaluatorReview.ts#ORDINAL_AXES` (when UI-bearing)
47
+ - Evaluator scoring covers all four canonical UX axes — information architecture / navigation flow / usability / functionality, fixed by the review validation the QFAI CLI applies (restated in `.qfai/assistant/skills/qfai-prototyping/references/reviewer-prompt.md`) (when UI-bearing)
48
48
  - Evaluator critique skepticism and blandness rejection quality applied against the four axes (when UI-bearing)
49
49
  - Planner-first discipline — exploration directions stay unranked, no single visual winner was selected (`qfai-discussion/SKILL.md`), and latest-iteration handling matches the one-lineage / no-best-of-history rule in `qfai-prototyping/SKILL.md` (when UI-bearing)
50
50
  - Screen contract sufficiency and strong schema completeness (when UI-bearing)
@@ -56,15 +56,15 @@
56
56
 
57
57
  <!-- Required for UI-bearing packs. Verifies brand SSOT and sidecar alignment. -->
58
58
 
59
- - Brand SSOT: verify root `DESIGN.md` defines `brand`, `audience`, and `visual.*` tokens, and that `# Brand Philosophy` body documents product intent, must-preserve interactions, brand signals, and differentiation targets
60
- - Evaluator axes: confirm reviewers will score against the four canonical UX axes (information architecture / navigation flow / usability / functionality) — these are fixed in `core/prototyping/evaluatorReview.ts#ORDINAL_AXES` and no longer authored as sidecar files
59
+ - Brand SSOT (skip on a cli-only pack; required as soon as `web`/`mobile`/`desktop`/`mixed` appears as primary or secondary surface): verify root `DESIGN.md` defines `brand`, `audience`, and `visual.*` tokens, and that `# Brand Philosophy` body documents product intent, must-preserve interactions, brand signals, and differentiation targets
60
+ - Evaluator axes: confirm reviewers will score against the four canonical UX axes (information architecture / navigation flow / usability / functionality) — these are fixed by the review validation the QFAI CLI applies (restated in `.qfai/assistant/skills/qfai-prototyping/references/reviewer-prompt.md`) and no longer authored as sidecar files
61
61
  - History handling: verify `uiux/50_review_input_bundle.md` matches the one-lineage rule in `qfai-prototyping/SKILL.md` — no parallel candidates, no best-of-history, the latest iteration is accepted
62
62
 
63
63
  ## Sidecar Artifact Review Scope
64
64
 
65
- <!-- Required for UI-bearing packs. Reviews root DESIGN.md + uiux/ sidecar artifacts. -->
65
+ <!-- Required for UI-bearing packs. Reviews root DESIGN.md (visual-prototyping surfaces) + uiux/ sidecar artifacts (every UI-bearing surface, cli included). -->
66
66
 
67
- - Verify root `DESIGN.md` is specific enough to support divergent exploration (front-matter populated, `# Brand Philosophy` body written, do/don't and reference notes framed as deviate-from inputs)
67
+ - Verify root `DESIGN.md` is specific enough (skip on a cli-only pack, which authors none) to support divergent exploration (front-matter populated, `# Brand Philosophy` body written, do/don't and reference notes framed as deviate-from inputs)
68
68
  - Verify `uiux/50_review_input_bundle.md` states the one-lineage handling (latest iteration accepted, no best-of-history)
69
69
  - Verify screen contracts use nested strong schema with all 4 required states (default/loading/empty/error) and treat `uiux/40_screen_contracts.md` as the state SSOT
70
70
 
@@ -13,10 +13,10 @@
13
13
  - [ ] Clarity and actionability
14
14
  - [ ] Mermaid diagrams are sufficient for decisions (scope/AC/risk consistency)
15
15
  - [ ] Mermaid diagrams use ` ```mermaid ` fences only
16
- - [ ] Root `DESIGN.md` completeness and differentiation clarity — it parses, and its `# Brand Philosophy` body carries do/don't, brand signals, and exploration references framed as **deviate-from** inputs (when UI-bearing)
17
- - [ ] Reference pool freshness and translation quality into `DESIGN.md`, and Trend Scan freshness and evidence traceability at `04_Sources.md#Trend Scan` (when UI-bearing)
16
+ - [ ] Root `DESIGN.md` completeness and differentiation clarity — it parses, and its `# Brand Philosophy` body carries do/don't, brand signals, and exploration references framed as **deviate-from** inputs (when a visual-prototyping surface — `web`/`mobile`/`desktop`/`mixed` — is classified as primary or secondary; a cli-only pack authors no root `DESIGN.md`, so skip this line for it)
17
+ - [ ] Reference pool freshness and translation quality — into root `DESIGN.md` when a visual-prototyping surface is classified, otherwise into `uiux/40_screen_contracts.md` — and Trend Scan freshness and evidence traceability at `04_Sources.md#Trend Scan` (when UI-bearing)
18
18
  - [ ] Canonical `uiux/` family complete — `00_index.md`, `40_screen_contracts.md`, `50_review_input_bundle.md` — with no forbidden legacy sidecar (when UI-bearing)
19
- - [ ] Evaluator scoring covers all four canonical UX axes — information architecture / navigation flow / usability / functionality, fixed in `core/prototyping/evaluatorReview.ts#ORDINAL_AXES` (when UI-bearing)
19
+ - [ ] Evaluator scoring covers all four canonical UX axes — information architecture / navigation flow / usability / functionality, fixed by the review validation the QFAI CLI applies (restated in `.qfai/assistant/skills/qfai-prototyping/references/reviewer-prompt.md`) (when UI-bearing)
20
20
  - [ ] Evaluator critique skepticism and blandness rejection quality applied against the four axes (when UI-bearing)
21
21
  - [ ] Planner-first discipline — exploration directions stay unranked, no single visual winner was selected (`qfai-discussion/SKILL.md`), and latest-iteration handling matches the one-lineage / no-best-of-history rule in `qfai-prototyping/SKILL.md` (when UI-bearing)
22
22
  - [ ] Screen contract sufficiency and strong schema completeness (when UI-bearing)
@@ -2,6 +2,7 @@
2
2
 
3
3
  ## Scope
4
4
 
5
+ - Producer: `discussion`
5
6
  - scope: `discussion-YYYYMMDDhhmmssSSS`
6
7
  - layer: `discussion`
7
8
  - review-pack: `review-YYYYMMDDhhmmssSSS`
@@ -22,10 +23,10 @@
22
23
  - Acceptance criteria are consistent with flows/state transitions
23
24
  - Security/operations risks are reflected in diagrams where relevant
24
25
  - Mermaid diagrams use ` ```mermaid ` fences only (no ` ```text ` or language-less fences)
25
- - Root `DESIGN.md` completeness and differentiation clarity — it parses, and its `# Brand Philosophy` body carries do/don't, brand signals, and exploration references framed as **deviate-from** inputs (when UI-bearing)
26
- - Reference pool freshness and translation quality into `DESIGN.md`, and Trend Scan freshness and evidence traceability at `04_Sources.md#Trend Scan` (when UI-bearing)
26
+ - Root `DESIGN.md` completeness and differentiation clarity — it parses, and its `# Brand Philosophy` body carries do/don't, brand signals, and exploration references framed as **deviate-from** inputs (when a visual-prototyping surface — `web`/`mobile`/`desktop`/`mixed` — is classified as primary or secondary; a cli-only pack authors no root `DESIGN.md`, so skip this line for it)
27
+ - Reference pool freshness and translation quality — into root `DESIGN.md` when a visual-prototyping surface is classified, otherwise into `uiux/40_screen_contracts.md` — and Trend Scan freshness and evidence traceability at `04_Sources.md#Trend Scan` (when UI-bearing)
27
28
  - Canonical `uiux/` family complete — `00_index.md`, `40_screen_contracts.md`, `50_review_input_bundle.md` — with no forbidden legacy sidecar (when UI-bearing)
28
- - Evaluator scoring covers all four canonical UX axes — information architecture / navigation flow / usability / functionality, fixed in `core/prototyping/evaluatorReview.ts#ORDINAL_AXES` (when UI-bearing)
29
+ - Evaluator scoring covers all four canonical UX axes — information architecture / navigation flow / usability / functionality, fixed by the review validation the QFAI CLI applies (restated in `.qfai/assistant/skills/qfai-prototyping/references/reviewer-prompt.md`) (when UI-bearing)
29
30
  - Evaluator critique skepticism and blandness rejection quality applied against the four axes (when UI-bearing)
30
31
  - Planner-first discipline — exploration directions stay unranked, no single visual winner was selected (`qfai-discussion/SKILL.md`), and latest-iteration handling matches the one-lineage / no-best-of-history rule in `qfai-prototyping/SKILL.md` (when UI-bearing)
31
32
  - Screen contract sufficiency and strong schema completeness (when UI-bearing)
@@ -1,6 +1,9 @@
1
1
  {
2
2
  "version": "2.0",
3
+ "revision_form": "content-hash",
4
+ "revision": "<git rev, or working-tree+<content hash>>",
3
5
  "created_at": "YYYY-MM-DDThh:mm:ssZ",
6
+ "producer": "discussion",
4
7
  "target": {
5
8
  "kind": "discussion",
6
9
  "path": ".qfai/discussion/discussion-YYYYMMDDhhmmssSSS"
@@ -9,7 +9,9 @@ Manifest of all UI/UX sidecar artifacts produced during a UI-bearing discussion.
9
9
  Brand-level intent (product intent, brand signals, anti-goals,
10
10
  reference pool framed as deviate-from inputs) lives in root
11
11
  `DESIGN.md` (front-matter + `# Brand Philosophy` body), not in this
12
- sidecar family.
12
+ sidecar family — on a visual-prototyping surface (`web`, `mobile`,
13
+ `desktop`, `mixed`). A cli-only pack has no root `DESIGN.md` at all,
14
+ so it has no brand-level intent layer either.
13
15
 
14
16
  | File | Purpose | Required |
15
17
  | ------------------------- | ---------------------------------------- | -------- |
@@ -19,8 +21,15 @@ sidecar family.
19
21
 
20
22
  ## Completeness Rule
21
23
 
22
- All required files MUST be present for a UI-bearing pack alongside root
23
- `DESIGN.md`. Partial generation is not permitted.
24
+ All three required files above MUST be present for every UI-bearing pack.
25
+ Partial generation is not permitted.
26
+
27
+ Root `DESIGN.md` sits alongside them **only** on a visual-prototyping surface
28
+ (`web`, `mobile`, `desktop`, `mixed`). A cli-only pack — `primary_surface: cli`
29
+ with no visual surface in `secondary_surfaces` — is complete without it:
30
+ `/qfai-discussion` authors no root `DESIGN.md` for such a pack, `/qfai-sdd`
31
+ Phase 0 skips the freeze, and `/qfai-prototyping` does not run on `cli`. Do not
32
+ report a cli-only pack as incomplete for a missing `DESIGN.md`.
24
33
 
25
34
  ## Forbidden Legacy Files
26
35
 
@@ -28,8 +37,8 @@ The following files are NOT part of the canonical family and must NOT be created
28
37
 
29
38
  - `30_option_comparison.md` — replaced by root `DESIGN.md`
30
39
  - `31_selected_anchor_screen.md` — replaced by root `DESIGN.md`
31
- - `33_exploration_rubric.md` — replaced by `core/prototyping/evaluatorReview.ts#ORDINAL_AXES`
32
- - `34_evaluator_calibration.md` — replaced by `core/prototyping/evaluatorReview.ts#ORDINAL_AXES`
40
+ - `33_exploration_rubric.md` — replaced by the fixed evaluator axes (`.qfai/assistant/skills/qfai-prototyping/references/reviewer-prompt.md`)
41
+ - `34_evaluator_calibration.md` — replaced by the fixed evaluator axes (`.qfai/assistant/skills/qfai-prototyping/references/reviewer-prompt.md`)
33
42
  - `40_contracts.md` — replaced by `40_screen_contracts.md`
34
43
  - `50_review_bundle.md` — replaced by `50_review_input_bundle.md`
35
44
  - `60_critique_loop.md` — removed (critique integrated into review bundle)
@@ -4,6 +4,22 @@
4
4
 
5
5
  Draft interaction contracts for key screens using the strong screen contract schema (11 required fields).
6
6
 
7
+ `route:` is required on every surface — `validators/uix/screenContract.ts` demands a
8
+ non-empty string, not a URL — but what it names is surface-specific. Record the real
9
+ navigation identifier for the surface you are on; never invent a URL for a product that
10
+ has none:
11
+
12
+ | Surface | `route:` names | Example |
13
+ | ------------------ | ---------------------------------------------------------------------- | ------------------------ |
14
+ | `web` | URL path | `/orders/:id` |
15
+ | `mobile` (native) | navigation destination, or the deep link when one exists | `OrderDetail` |
16
+ | `desktop` (native) | window / view identifier, or the app-scheme deep link | `main:order-detail` |
17
+ | `cli` | command invocation | `myapp deploy --dry-run` |
18
+ | `mixed` | the identifier of the surface that owns the screen, per the rows above | `/orders/:id` |
19
+
20
+ Use one convention per surface consistently across the whole file so downstream
21
+ `.qfai/contracts/ui/*.yaml` normalization stays deterministic.
22
+
7
23
  ### Screen: [Screen Name]
8
24
 
9
25
  - screen_id: SCR-001
@@ -40,6 +56,6 @@ Draft interaction contracts for key screens using the strong screen contract sch
40
56
 
41
57
  ## Cross-references
42
58
 
43
- - Brand SSOT (product intent, brand signals, anti-goals): root `DESIGN.md`
59
+ - Brand SSOT (product intent, brand signals, anti-goals): root `DESIGN.md` — visual-prototyping surfaces only; a cli-only pack has none
44
60
  - Sidecar manifest: `00_index.md`
45
61
  - Review handoff: `50_review_input_bundle.md`
@@ -4,27 +4,32 @@
4
4
 
5
5
  Consolidate all sidecar artifacts into a review-ready bundle for design reviewers.
6
6
 
7
+ A **cli-only** pack (`primary_surface: cli`, no visual `secondary_surfaces` entry) still
8
+ ships this bundle. It has no root `DESIGN.md` and no `prototyping.yaml`, so mark those two
9
+ rows `n-a: cli-only pack` rather than leaving the bundle incomplete — see
10
+ `references/ui-bearing-playbook.md#visual-prototyping-surfaces-vs-cli`.
11
+
7
12
  ## Bundle Contents
8
13
 
9
- | Artifact | Path | Status |
10
- | -------------------------- | ----------------------------- | ------------------------- |
11
- | Brand SSOT (root) | `DESIGN.md` | [draft/reviewed/approved] |
12
- | Screen contracts | `uiux/40_screen_contracts.md` | [draft/reviewed/approved] |
13
- | Prototyping recommendation | `../prototyping.yaml` | [draft/reviewed/approved] |
14
+ | Artifact | Path | Status |
15
+ | -------------------------- | ----------------------------- | ---------------------------------------------- |
16
+ | Brand SSOT (root) | `DESIGN.md` | [draft/reviewed/approved / n-a: cli-only pack] |
17
+ | Screen contracts | `uiux/40_screen_contracts.md` | [draft/reviewed/approved] |
18
+ | Prototyping recommendation | `../prototyping.yaml` | [draft/reviewed/approved / n-a: cli-only pack] |
14
19
 
15
20
  ## Trend-derived review focus
16
21
 
17
22
  - Required references are all present and complete.
18
23
  - Stale / overused AI slop patterns are explicitly avoided.
19
- - Reference research is translated into local design decisions on root `DESIGN.md` and screen contracts.
24
+ - Reference research is translated into local design decisions on root `DESIGN.md` (visual-prototyping surfaces) and on screen contracts (every UI-bearing surface). A cli-only pack has no root `DESIGN.md`: the screen contracts carry the whole translation.
20
25
  - Iteration handling follows the one-lineage rule in `qfai-prototyping/SKILL.md`: no parallel
21
26
  candidates and no best-of-history — the latest iteration is the accepted one. A middle iteration
22
27
  that looked stronger is addressed by pivoting the next cycle, not by reaching back for it.
23
28
 
24
29
  ## Review Checklist
25
30
 
26
- - [ ] Root `DESIGN.md` aligns with surface type and project constraints
31
+ - [ ] Root `DESIGN.md` aligns with surface type and project constraints (skip on a cli-only pack, which authors none)
27
32
  - [ ] Reference pool is complete and translated into local design decisions
28
- - [ ] Evaluator scoring covers all four canonical UX axes (information architecture / navigation flow / usability / functionality) — fixed in `core/prototyping/evaluatorReview.ts#ORDINAL_AXES`
33
+ - [ ] Evaluator scoring covers all four canonical UX axes (information architecture / navigation flow / usability / functionality) — fixed by the review validation the QFAI CLI applies (restated in `.qfai/assistant/skills/qfai-prototyping/references/reviewer-prompt.md`)
29
34
  - [ ] One-lineage handling is explicit (latest iteration accepted; no best-of-history)
30
35
  - [ ] Screen contracts cover all required states