qfai 1.7.0 → 1.7.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.
@@ -45,6 +45,13 @@ QFAI Skill Body (SSOT)
45
45
 
46
46
  Execute the TDD micro-cycle for each pending item in `test-list.md`, transitioning each through Red -> Green -> Refactor -> Done, producing tested production code aligned with the spec.
47
47
 
48
+ ## Visual Review Guard
49
+
50
+ - Review rendered output, screenshot evidence, or HTML output before closing any UI-affecting item.
51
+ - Read the DDP (Design Direction Pack) first whenever implementation touches UI or critique-driven behavior.
52
+ - Read order: DDP -> Design Token -> UI Contract -> HTML Mock -> Flow.
53
+ - If code intent and rendered output diverge, treat the rendered/HTML result as the blocking review input and reconcile before DONE.
54
+
48
55
  ## Non-goals
49
56
 
50
57
  - Writing spec artifacts (use `/qfai-sdd`).
@@ -49,6 +49,13 @@ This stage is complete only when all specs pass the minimum runtime contract:
49
49
  - DB objects needed for runtime are present (real DB or documented in-memory substitute).
50
50
  - Evidence is captured and validate can enforce it.
51
51
 
52
+ ## Visual Review Guard
53
+
54
+ - Review rendered output, screenshot captures, or generated HTML for every UI-affecting slice; code-only inspection is insufficient.
55
+ - Read the DDP (Design Direction Pack) first before comparing visuals or wiring critique outcomes into implementation.
56
+ - Read order: DDP -> Design Token -> UI Contract -> HTML Mock -> Flow.
57
+ - If rendered/HTML evidence disagrees with code intent, fix the rendered result before declaring completion.
58
+
52
59
  ## Definition of Done by fidelity level (Mandatory)
53
60
 
54
61
  - L1 (`skeleton`):
@@ -49,6 +49,36 @@ Recommended approach:
49
49
 
50
50
  When `uiFidelity` is present, keep all minimum fields above.
51
51
 
52
+ ### Render evidence bundle conventions
53
+
54
+ When render capture is enabled, keep render metadata path-only and store artifacts on disk:
55
+
56
+ - default bundle path: `.qfai/evidence/render.json`
57
+ - default viewports: `desktop`, `mobile`
58
+ - `uiFidelity.screens[].renders[]` is the normalized in-band source for validator/report use
59
+ - captured entries require `imagePath` and `htmlPath`
60
+ - skipped entries require `skippedReason`
61
+ - failed entries require `error`
62
+
63
+ Degraded mode is allowed:
64
+
65
+ - if renderer setup is unavailable, record `status: "skipped"` with a concrete reason
66
+ - do not inline screenshot bytes or HTML bodies into JSON
67
+ - keep `prototyping.json` and `render.json` aligned by file path only
68
+
69
+ ```json
70
+ {
71
+ "renderEvidence": {
72
+ "status": "skipped",
73
+ "requested": true,
74
+ "autogenEnabled": false,
75
+ "viewports": ["desktop", "mobile"],
76
+ "outputPath": ".qfai/evidence/render.json",
77
+ "reason": "render requested without autogen-ui-fidelity"
78
+ }
79
+ }
80
+ ```
81
+
52
82
  Good example references:
53
83
 
54
84
  - Repository docs sample: `docs/examples/prototyping-ui-fidelity.good.json`
@@ -0,0 +1,56 @@
1
+ [
2
+ {
3
+ "id": "SLP-01",
4
+ "category": "generic-shell",
5
+ "tier": 3,
6
+ "scopes": ["03_Story-Workshop.md", "05_Examples.md"],
7
+ "match": "\\b(generic dashboard|placeholder text|lorem ipsum)\\b",
8
+ "message": "Generic dashboard shell pattern detected",
9
+ "guidance": "Replace with domain-specific UI structure"
10
+ },
11
+ {
12
+ "id": "SLP-02",
13
+ "category": "stock-imagery",
14
+ "tier": 3,
15
+ "scopes": ["03_Story-Workshop.md", "05_Examples.md"],
16
+ "match": "\\b(stock photo|unsplash|placeholder image)\\b",
17
+ "message": "Stock imagery reference detected",
18
+ "guidance": "Use project-specific imagery or describe actual visual requirements"
19
+ },
20
+ {
21
+ "id": "SLP-03",
22
+ "category": "dark-pattern",
23
+ "tier": 3,
24
+ "scopes": ["03_Story-Workshop.md", "05_Examples.md"],
25
+ "match": "\\b(hidden fee|forced signup|trick question)\\b",
26
+ "message": "Potential dark pattern detected",
27
+ "guidance": "Replace with transparent, user-respecting interaction pattern"
28
+ },
29
+ {
30
+ "id": "SLP-04",
31
+ "category": "inconsistency",
32
+ "tier": 3,
33
+ "scopes": ["03_Story-Workshop.md", "05_Examples.md"],
34
+ "match": "\\b(inconsistent naming|mixed conventions)\\b",
35
+ "message": "Design inconsistency pattern detected",
36
+ "guidance": "Establish and follow consistent naming and convention guidelines"
37
+ },
38
+ {
39
+ "id": "SLP-05",
40
+ "category": "placeholder-copy",
41
+ "tier": 3,
42
+ "scopes": ["03_Story-Workshop.md", "05_Examples.md"],
43
+ "match": "\\b(Click here|TBD copy|placeholder label)\\b",
44
+ "message": "Placeholder copy detected in UI definition",
45
+ "guidance": "Replace with final, user-tested microcopy"
46
+ },
47
+ {
48
+ "id": "SLP-06",
49
+ "category": "accessibility-theater",
50
+ "tier": 3,
51
+ "scopes": ["03_Story-Workshop.md", "05_Examples.md"],
52
+ "match": "\\b(decorative alt text|aria-hidden on interactive)\\b",
53
+ "message": "Accessibility theater pattern detected",
54
+ "guidance": "Implement meaningful accessibility attributes following WCAG guidelines"
55
+ }
56
+ ]