qfai 1.10.1 → 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 (90) hide show
  1. package/README.md +77 -22
  2. package/assets/init/.qfai/assistant/agents/completion-reviewer.md +1 -1
  3. package/assets/init/.qfai/assistant/agents/implementation-reviewer.md +3 -3
  4. package/assets/init/.qfai/assistant/agents/orchestrator.md +2 -2
  5. package/assets/init/.qfai/assistant/agents/product-experience-architect.md +2 -1
  6. package/assets/init/.qfai/assistant/agents/product-surface-reviewer.md +1 -1
  7. package/assets/init/.qfai/assistant/agents/qa-gatekeeper.md +5 -5
  8. package/assets/init/.qfai/assistant/agents/test-design-analyst.md +3 -2
  9. package/assets/init/.qfai/assistant/catalog/cli-ux-guidelines.md +3 -0
  10. package/assets/init/.qfai/assistant/catalog/test-layers.md +87 -81
  11. package/assets/init/.qfai/assistant/catalog/worklog-entry.schema.md +4 -3
  12. package/assets/init/.qfai/assistant/constitution/agent-selection.md +7 -1
  13. package/assets/init/.qfai/assistant/constitution/communication.md +1 -1
  14. package/assets/init/.qfai/assistant/constitution/constitution.md +7 -1
  15. package/assets/init/.qfai/assistant/constitution/drift-protocol.md +117 -9
  16. package/assets/init/.qfai/assistant/constitution/review-convergence.md +121 -0
  17. package/assets/init/.qfai/assistant/constitution/shared-skill-delegation-baseline.md +32 -91
  18. package/assets/init/.qfai/assistant/constitution/shared-skill-operating-baseline.md +59 -5
  19. package/assets/init/.qfai/assistant/manifest/agent-catalog.yml +17 -15
  20. package/assets/init/.qfai/assistant/skills/qfai-atdd/SKILL.md +12 -12
  21. package/assets/init/.qfai/assistant/skills/qfai-atdd/references/red-provenance.md +59 -17
  22. package/assets/init/.qfai/assistant/skills/qfai-atdd/references/scaffolding.md +42 -0
  23. package/assets/init/.qfai/assistant/skills/qfai-atdd/references/shared-test-artifacts.md +29 -1
  24. package/assets/init/.qfai/assistant/skills/qfai-atdd/references/test-case-depth-checklist.md +21 -12
  25. package/assets/init/.qfai/assistant/skills/qfai-configure/SKILL.md +3 -2
  26. package/assets/init/.qfai/assistant/skills/qfai-discussion/SKILL.md +10 -8
  27. package/assets/init/.qfai/assistant/skills/qfai-discussion/references/discussion-completion-matrix.md +23 -2
  28. package/assets/init/.qfai/assistant/skills/qfai-discussion/references/review-cycle-playbook.md +14 -3
  29. package/assets/init/.qfai/assistant/skills/qfai-discussion/references/ui-bearing-playbook.md +47 -11
  30. package/assets/init/.qfai/assistant/skills/qfai-discussion/references/ui_ux/trend_scan_playbook.md +1 -1
  31. package/assets/init/.qfai/assistant/skills/qfai-discussion/references/ui_ux_best_practices.md +6 -4
  32. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/01_Context.md +2 -2
  33. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/03_Story-Workshop.md +1 -1
  34. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/04_Sources.md +40 -6
  35. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/14_Review-Request.md +7 -7
  36. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/review/Rxx_reviewer.md +3 -3
  37. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/review/review_request.md +4 -3
  38. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/review/summary.json +1 -0
  39. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/00_index.md +14 -5
  40. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/40_screen_contracts.md +17 -1
  41. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/50_review_input_bundle.md +13 -8
  42. package/assets/init/.qfai/assistant/skills/qfai-implement/SKILL.md +52 -53
  43. package/assets/init/.qfai/assistant/skills/qfai-implement/references/checkpoint-verification.md +216 -20
  44. package/assets/init/.qfai/assistant/skills/qfai-implement/references/evidence-revision.md +145 -26
  45. package/assets/init/.qfai/assistant/skills/qfai-implement/references/execution-ledger.md +94 -9
  46. package/assets/init/.qfai/assistant/skills/qfai-implement/references/final-checklist.md +147 -9
  47. package/assets/init/.qfai/assistant/skills/qfai-implement/references/finding-classification.md +70 -5
  48. package/assets/init/.qfai/assistant/skills/qfai-implement/references/ledger-preconditions.md +55 -14
  49. package/assets/init/.qfai/assistant/skills/qfai-implement/references/parallelization-policy.md +92 -3
  50. package/assets/init/.qfai/assistant/skills/qfai-implement/references/relevant-test-suite.md +13 -1
  51. package/assets/init/.qfai/assistant/skills/qfai-implement/references/review-artifact-layout.md +56 -7
  52. package/assets/init/.qfai/assistant/skills/qfai-implement/references/round-evidence.md +20 -12
  53. package/assets/init/.qfai/assistant/skills/qfai-implement/references/volume-policy.md +19 -12
  54. package/assets/init/.qfai/assistant/skills/qfai-prototyping/SKILL.md +76 -8
  55. package/assets/init/.qfai/assistant/skills/qfai-prototyping/references/design-md-spec.md +20 -0
  56. package/assets/init/.qfai/assistant/skills/qfai-prototyping/references/evidence-requirements.md +7 -4
  57. package/assets/init/.qfai/assistant/skills/qfai-prototyping/references/generator-prompt.md +83 -22
  58. package/assets/init/.qfai/assistant/skills/qfai-prototyping/references/reviewer-prompt.md +29 -4
  59. package/assets/init/.qfai/assistant/skills/qfai-sdd/SKILL.md +127 -18
  60. package/assets/init/.qfai/assistant/skills/qfai-sdd/references/contract-artifact-rules.md +31 -3
  61. package/assets/init/.qfai/assistant/skills/qfai-sdd/references/review-cycle-playbook.md +20 -3
  62. package/assets/init/.qfai/assistant/skills/qfai-sdd/references/sdd-execution-playbook.md +41 -5
  63. package/assets/init/.qfai/assistant/skills/qfai-sdd/references/sdd-phase-checklists.md +16 -4
  64. package/assets/init/.qfai/assistant/skills/qfai-sdd/references/sdd-triage.md +77 -7
  65. package/assets/init/.qfai/assistant/skills/qfai-sdd/references/spec-traceability-rules.md +39 -3
  66. package/assets/init/.qfai/assistant/skills/qfai-sdd/references/ui-design-contract-normalization.md +9 -3
  67. package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/change-request.md +14 -1
  68. package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/contracts/ui-contract.sample.yaml +13 -3
  69. package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/evidence/sdd-spec.md +5 -1
  70. package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/report/preflight_summary.md +3 -2
  71. package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/_policies/04_Business-Flow.md +4 -1
  72. package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/_policies/05_Contracts.md +12 -5
  73. package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/_policies/11_Slice-Policy.md +8 -9
  74. package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/spec/02_User-stories.md +9 -0
  75. package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/spec/tdd/test-list.md +68 -23
  76. package/assets/init/.qfai/assistant/skills/qfai-verify/SKILL.md +4 -4
  77. package/assets/init/.qfai/assistant/skills/qfai-verify/references/validate-json-schema.md +79 -0
  78. package/assets/init/.qfai/assistant/skills/web-research/SKILL.md +3 -2
  79. package/assets/init/root/qfai.config.yaml +11 -2
  80. package/dist/cli/index.cjs +13628 -3175
  81. package/dist/cli/index.cjs.map +1 -1
  82. package/dist/cli/index.mjs +13835 -3365
  83. package/dist/cli/index.mjs.map +1 -1
  84. package/dist/index.cjs +20060 -13315
  85. package/dist/index.cjs.map +1 -1
  86. package/dist/index.d.cts +262 -9
  87. package/dist/index.d.ts +262 -9
  88. package/dist/index.mjs +17052 -10315
  89. package/dist/index.mjs.map +1 -1
  90. package/package.json +2 -1
package/README.md CHANGED
@@ -18,19 +18,34 @@ 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 and runs a multi-spec evolution loop driven by
22
- `qfai prototyping iterate --cycle <n>`. The skill resolves every
23
- UI-bearing spec in one invocation, freezes that set at cycle 0, and
24
- iterates `cycle 0..9` (max 10 cycles) with deterministic stop conditions
25
- (exit codes 0 continue / 64 convergence / 65 max-iterations /
26
- 66 license-verify failure / 2 input or lock drift).
21
+ - Prototyping is UI-only and runs a primary-spec evolution loop driven by
22
+ `qfai prototyping iterate --cycle <n>`. Each run resolves exactly one
23
+ primary UI-bearing spec (`prototyping.primarySpecId` in `qfai.config.yaml`,
24
+ a `surface_type: ui-bearing` marker, or `--primary-spec-id`), freezes it at
25
+ cycle 0, and iterates `cycle 0..9` (max 10 cycles) with deterministic stop
26
+ conditions (exit codes 0 continue / 64 convergence / 65 max-iterations /
27
+ 66 license-verify failure / 2 input or lock drift). The full set of
28
+ UI-bearing specs is frozen at cycle 0 as `frozenSurfaceUnion` and is read
29
+ only to detect surface drift on later cycles: secondary specs are **not**
30
+ evaluated by that run. Only one primary spec can therefore be evolved per
31
+ project: re-running cycle 0 for a second spec is refused without `--force`,
32
+ and with `--force` it re-seeds `prototyping.json` (`runId`, `specsCovered`,
33
+ `frozenSpecsCovered`) around the new single spec, so the earlier spec's
34
+ iterations do not survive as a valid loop. Iterating a second UI-bearing
35
+ spec has to wait for the per-spec iteration layout.
27
36
  - Runtime observation is observed-only (no synthetic 200 / API / DB prototyping coverage).
28
37
  - Per-iter evidence is a single `<screen>.review.json` per declared spec ×
29
38
  screen pair (4-axis ordinal verdicts, 6 `*Feel` short-prose impressions
30
39
  bounded to 200 words each, `layoutAntiPatternsDetected[]`,
31
- `designMdViolations[]`, and `pivotDirective`). Reviewer-emitted
32
- `<screen>.review.json` is the only per-cycle artifact — no `screenshot.png`,
33
- `index.html`, or `interaction.json`.
40
+ `designMdViolations[]`, and `pivotDirective`). It is the only
41
+ reviewer-authored file, not the only per-cycle artifact: the CLI itself
42
+ always writes `iterate-plan.json` into the same `iter-NN/` directory, and
43
+ from cycle 1 onward — once the previous cycle is recorded in
44
+ `prototyping.json#iterations[]` — an advisory `iterate-context.json` holding
45
+ the prior scores and open blockers. The opt-in `--capture` and
46
+ `--cycle 0 --emit-skeletons` flags additionally write `<screen>.png` /
47
+ `<screen>.html` there. Archive the whole `iter-NN/` directory; no
48
+ `interaction.json` is written on any path.
34
49
  - Calibration SSOT is the calibration pack referenced by `calibrationRef.packPath`.
35
50
 
36
51
  ## Installation
@@ -77,6 +92,17 @@ npx qfai report
77
92
  - `npx qfai init`
78
93
  - Creates the QFAI workspace under `.qfai/` (requirements/specs/contracts/report) and installs the AI assistant kit
79
94
  (`assistant/` with the 4-layer tree — `constitution/`, `manifest/`, `catalog/`, `process/` — plus `agents/` and `skills/`), plus `qfai.config.yaml`.
95
+ - Options:
96
+
97
+ | Flag | Effect |
98
+ | -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
99
+ | `--dir <path>` | Output directory (default: the current directory). |
100
+ | `--force` | Re-generate `.qfai/assistant/{skills,agents}/**` and the published skill/agent wrappers under `.agents/`, `.claude/`, `.codex/` and `.github/`, and prune the legacy wrappers they replace. It also rewrites two kinds of plain (non-wrapper) generated files without asking: the integration READMEs `.agents/README.md`, `.codex/README.md`, `.claude/agents/README.md`, `.github/agents/README.md`, and `.github/copilot-instructions.md` — local edits to those five files are overwritten, so back them up first. `.github/instructions/*.instructions.md` is create-only even under `--force`. The template trees `--force` does not own — `assistant/manifest/**`, `specs/`, `contracts/`, `steering/` and the rest of `.qfai/` — stay create-only. The flag does not narrow what plain `init` always does: the managed `.gitignore` block, the legacy `.qfai/evidence/.gitignore` negations and `git config core.symlinks` are re-applied (and repaired when stale) on every non-dry-run, with or without `--force`. |
101
+ | `--dry-run` | Report what would change and write nothing. Use it to rehearse `--upgrade-assistant-tree`. |
102
+ | `--upgrade-assistant-tree` | Migrate a pre-recut project to the 4-layer tree. Only the two pre-recut surfaces `.qfai/assistant/instructions/` and `.qfai/assistant/steering/` are scanned; `assistant/manifest/` is already the canonical layer, so it is kept in place and never re-copied. This is what the `D-DEPRECATED-PATH` finding is asking for. Files are copied, never deleted: the legacy paths stay until you remove them, and an existing file at a scanned surface's migration target is kept (reported as `W-USER-EDIT-PRESERVED`) — that warning only ever covers those scanned targets. A project left with nothing but `manifest/` has nothing to migrate and is reported as "no pre-recut surfaces ... found". |
103
+ | `--yes` | Reserved for a future interactive mode; no behavioural difference today. |
104
+ | `--help`, `-h` | Print the CLI usage banner and exit without writing anything. Accepted by every command, `init` included, and handled before the command runs. |
105
+
80
106
  - `npx qfai validate`
81
107
  - Validates specs/contracts/scenarios/traceability and review artifacts
82
108
  (`.qfai/review/review-*/summary.json` + minimum schema), writes `.qfai/report/validate.json`,
@@ -96,7 +122,7 @@ npx qfai report
96
122
  Use `npx qfai prototyping preflight --target-url <url>` for a focused
97
123
  prototyping preflight before the skill starts; it surfaces blocking
98
124
  `QFAI-DCON-*` design-contract issues alongside runtime assumptions and resolves a runnable Playwright CLI launcher.
99
- Use `npx qfai prototyping iterate --cycle <n> --target-url <url>` to drive each cycle of the multi-spec
125
+ Use `npx qfai prototyping iterate --cycle <n> --target-url <url>` to drive each cycle of the primary-spec
100
126
  evolution loop. Exit codes: 0 (continue), 64 (convergence), 65 (max-iterations), 66 (license-verify failure), 2 (input or lock drift).
101
127
  Traceability refs inside prototyping evidence must use repo-root-relative concrete artifact refs
102
128
  (for example `.qfai/specs/spec-0001/01_Spec.md#L3` or `.qfai/evidence/prototyping/iter-03/home.png`).
@@ -137,7 +163,7 @@ a `TC` obligation is routed by the `Level` its spec declares for it.
137
163
  | none declared, or unreadable | `tests/integration/**` |
138
164
 
139
165
  - Unit and Component test cases carry **no** ATDD annotation obligation. They are gated by the
140
- `tdd/test-list.md` ledger instead, so do not copy them into `tests/integration/**` to satisfy this gate.
166
+ per-spec `test-list.md` ledger instead, so do not copy them into `tests/integration/**` to satisfy this gate.
141
167
  - A `TC` annotation outside the directory its declared `Level` names is rejected. The rule is `Level`-relative,
142
168
  not a blanket ban: a `TC` in `tests/api/**` is accepted only for a test case that declares `L4`/`API`, and in
143
169
  `tests/e2e/**` only for `L5`/`E2E`.
@@ -177,9 +203,10 @@ QFAI includes a small set of custom skills (stored under `.qfai/assistant/skills
177
203
  in `.qfai/specs/_policies/03_Capabilities.md` before the row is accepted
178
204
  (`QFAI-TRIAGE-006`). Every `01_Spec.md` declares a lifecycle
179
205
  `Status: active | superseded | deprecated | removed` (`QFAI-STATUS-001..006`).
180
- - **qfai-prototyping**: Multi-spec parallel design evolution loop. Resolves
181
- every UI-bearing spec in one invocation, freezes that set at cycle 0,
182
- and iterates each `spec × screen` pair through up to 10 cycles
206
+ - **qfai-prototyping**: Primary-spec design evolution loop. Resolves exactly
207
+ one primary UI-bearing spec per invocation and freezes it at cycle 0 (the
208
+ full UI-bearing set is recorded as `frozenSurfaceUnion` for drift detection
209
+ only), then iterates each `spec × screen` pair through up to 10 cycles
183
210
  (`cycle 0..9`) of generate → capture → review with a 4-axis ordinal
184
211
  rubric, 6 `*Feel` short-prose impressions (200-word bounded), explicit
185
212
  layout anti-pattern detection (`lap-001..lap-008`), DESIGN.md token
@@ -292,7 +319,14 @@ validation:
292
319
 
293
320
  Notes.
294
321
 
295
- - `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.
322
+ - `validate.json` is a **public** surface: its keys are documented in
323
+ `.qfai/assistant/skills/qfai-verify/references/validate-json-schema.md` and a change to
324
+ them takes the `@api` path (`.qfai/assistant/constitution/change-classification.md`). The
325
+ skills instruct agents to read it, so it is a contract whether or not this file says so —
326
+ it used to say the opposite, which left a consumer following the skills depending on
327
+ something the README disclaimed. `message` text and the order of `issues` are still not
328
+ stable; match on `issues[].code`
329
+ - `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.
296
330
  - Scenario files are expected to use the Gherkin extension `*.feature` (not `*.md`).
297
331
  - `prototyping.calibration.packPath` points to the calibration pack SSOT; runtime and validator both resolve thresholds and iteration parameters from that pack.
298
332
  - `prototyping.calibration.thresholds`, `maxIterations`, `plateauDelta`, and `plateauLookback` are unsupported public config fields.
@@ -364,8 +398,10 @@ Release gate behavior:
364
398
 
365
399
  QFAI generates integration wrappers under `.agents/**`, `.claude/**`,
366
400
  `.github/**`, and `.codex/**`.
367
- It does not generate GitHub Actions workflows.
368
- Configure CI in your own platform and run:
401
+ Into `.github/workflows/` it writes exactly two files — `qfai-validate.yml`
402
+ and `qfai-tests.yml` — and touches nothing else there; both open with a
403
+ `# Generated by \`qfai init\`` line. Configure the rest of CI in your own
404
+ platform and run:
369
405
 
370
406
  ```bash
371
407
  pnpm ci:gate
@@ -478,6 +514,7 @@ Typical customizations.
478
514
  │ │ ├── spec_required_files.json
479
515
  │ │ ├── structure.md
480
516
  │ │ ├── tech.md
517
+ │ │ ├── test-layers-ci-lanes.md
481
518
  │ │ ├── test-layers.md
482
519
  │ │ ├── ui-definition-protocol.md
483
520
  │ │ └── worklog-entry.schema.md
@@ -492,7 +529,7 @@ README files. Those files are created later by QFAI skills when real work exists
492
529
  ### AI work-log surface (`.qfai/steering/`)
493
530
 
494
531
  `qfai init` also creates `.qfai/steering/`, the per-project work-log surface for
495
- AI coding agents, with a `README.md` and `_templates/entry.md`. Each entry is a
532
+ AI coding agents, with a `README.md` and an `entry.md` template under `_templates/`. Each entry is a
496
533
  markdown file with YAML frontmatter, and `npx qfai validate` polices the surface in
497
534
  the `sdd` and full profiles via `W-WORKLOG-SCHEMA`, `W-WORKLOG-BROKEN-LINK`,
498
535
  `W-WORKLOG-STALE`, `W-PENDING-PROMOTION` and `R-HANDOFF-INCOMPLETE`.
@@ -509,7 +546,7 @@ Integration wrappers are also generated for immediate use:
509
546
  - Agents/Codex VS Code: `.agents/skills/**`
510
547
  - Claude Code: `.claude/skills/**`, `.claude/agents/**`
511
548
  - GitHub Copilot: `.github/skills/**`, `.github/agents/**`
512
- - Codex: `.codex/skills/**`
549
+ - Codex: `.codex/skills/**`, `.codex/agents/**`
513
550
 
514
551
  ## Agent integrations
515
552
 
@@ -517,12 +554,30 @@ Integration wrappers are also generated for immediate use:
517
554
  and generates thin wrapper assets for Agents/Codex VS Code / Copilot / Claude Code / Codex.
518
555
  Canonical agent markdown under `.qfai/assistant/agents/**` uses a shared YAML frontmatter
519
556
  subset (`name`, `description`, `tools`) compatible with Claude Code and GitHub Copilot,
520
- while Codex consumes mirrored `.codex/agents/*.toml` profiles.
521
- If wrapper assets drift from canonical skills, rerun `npx qfai init --force` to resync.
557
+ while Codex consumes `.codex/agents/*.toml` profiles generated from that same markdown.
558
+ The `.claude` / `.github` agent wrappers are symlinks and follow the canonical document
559
+ automatically; the Codex profiles are generated files, so rerun `npx qfai init --force`
560
+ to refresh them (and any other wrapper asset that has drifted).
561
+ `--force` deletes as well as overwrites: it removes the command and prompt wrappers earlier releases
562
+ installed under `.claude/commands/` and `.github/prompts/`, and the skill wrappers it installed under
563
+ `.claude/skills/`, `.agents/skills/`, `.codex/skills/` and `.github/skills/` for skills QFAI no longer
564
+ ships — the directory wrappers releases before the symlink recut copied there as well as the symlinks
565
+ that replaced them. Files it did not write — a project's own slash command, prompt file or skill,
566
+ including one published from a project-authored `.qfai/assistant/skills/` entry — are left in place,
567
+ whatever they are named. Ownership is read from the file, not the name: a wrapper is removed only when
568
+ it carries the delegation line to the canonical document of the same name, or is a symlink into
569
+ `.qfai/assistant/skills/`. One consequence of that: a symlink has no content to prove who wrote it, so
570
+ if you publish a canonical skill of your own under a name QFAI itself once shipped, `--force` removes
571
+ that link. Your `.qfai/assistant/skills/` entry is untouched; re-create the link to publish it again.
522
572
 
523
573
  ## Contributing (for QFAI maintainers)
524
574
 
525
- This repository is a monorepo, and the distributable package is under `packages/qfai`; if you change documentation, keep the repository root README and the package README aligned (the CI enforces this).
575
+ This repository is a monorepo, and the distributable package is under `packages/qfai`.
576
+ The repository root `README.md` and `packages/qfai/README.md` are kept aligned by
577
+ `scripts/check-readme-alignment.mjs`, which CI runs as part of `pnpm ci:lint`: every line
578
+ outside a `readme-align:ignore-start` / `readme-align:ignore-end` HTML-comment block must be
579
+ identical in both files. When you change documentation, apply the edit to both READMEs, or
580
+ wrap the intentionally file-specific part in those markers.
526
581
 
527
582
  ## License
528
583
 
@@ -67,7 +67,7 @@ being asked to judge, and falls into its own Stop condition ("Required evidence
67
67
 
68
68
  - [ ] Review verdict is explicit
69
69
  - [ ] Findings cite concrete artifacts or evidence
70
- - [ ] Every finding declares `Severity:` and `Traces to:`; no blocking finding has `Traces to: none`
70
+ - [ ] Every finding declares `Severity:` and `Traces to:`; no blocking finding traces to `none` or `record:*`
71
71
  - [ ] Required gates and residual risks are recorded
72
72
 
73
73
  ## When to use
@@ -37,8 +37,8 @@ tools: [Read, Glob, Grep, Bash]
37
37
 
38
38
  **The last two are what the `Audited evidence hash` is computed over.** This
39
39
  role records that hash itself, over the row's phase-authored fields — and those
40
- live in an evidence file that is normally ignored, so the diff of changed files
41
- does not contain them. Without the ledger and the evidence home the row's
40
+ live in a committed per-item evidence file so a fresh clone can reproduce the
41
+ audit. Without the ledger and the evidence home the row's
42
42
  `Layer` selects, this role cannot identify its own audit subject: the hash goes
43
43
  missing and gate items 10-11 stop, or the orchestrator computes it instead,
44
44
  which is the one thing the contract says must not happen.
@@ -66,7 +66,7 @@ which is the one thing the contract says must not happen.
66
66
 
67
67
  - [ ] Review verdict is explicit
68
68
  - [ ] Findings cite concrete artifacts or evidence
69
- - [ ] Every finding declares `Severity:` and `Traces to:`; no blocking finding has `Traces to: none`
69
+ - [ ] Every finding declares `Severity:` and `Traces to:`; no blocking finding traces to `none` or `record:*`
70
70
  - [ ] Required gates and residual risks are recorded
71
71
 
72
72
  ## When to use
@@ -32,7 +32,7 @@ tools: [Read, Write, Edit, Glob, Grep, Bash]
32
32
  - Work Orders for each subagent (scope, inputs, outputs, gates)
33
33
  - Stage Gates plan + current status
34
34
  - Completion report (DoD checklist + evidence links)
35
- - Evidence summary for `.qfai/evidence/` (gitignored; do not commit)
35
+ - Evidence summary for `.qfai/evidence/` (commit only paths re-included by the managed block)
36
36
 
37
37
  ## Stop conditions
38
38
 
@@ -45,7 +45,7 @@ tools: [Read, Write, Edit, Glob, Grep, Bash]
45
45
  ## Sign-off
46
46
 
47
47
  - [ ] Deliverables are complete
48
- - [ ] Evidence is present (gitignored)
48
+ - [ ] Evidence is present under the managed tracking policy
49
49
  - [ ] Stage gates are PASS
50
50
  - [ ] Reviewer sign-off recorded
51
51
 
@@ -30,7 +30,8 @@ tools: [Read, Write, Edit, Glob, Grep, Bash]
30
30
  - .github/instructions/principles.instructions.md
31
31
  - Root `DESIGN.md` (brand SSOT: front-matter tokens plus `# Brand Philosophy` body)
32
32
  - Reference pool framed as deviate-from inputs, screen contracts (`uiux/40_screen_contracts.md`), optional tokens, optional fallback HTML/CSS mock, and Mermaid flows
33
- - Evaluator axes are fixed in `core/prototyping/evaluatorReview.ts#ORDINAL_AXES` (information architecture / navigation flow / usability / functionality) and no longer authored as sidecar files
33
+ - Evaluator axes (information architecture / navigation flow / usability / functionality) are fixed by
34
+ the review validation the QFAI CLI applies (restated in `.qfai/assistant/skills/qfai-prototyping/references/reviewer-prompt.md`), not sidecar files
34
35
  - Runtime screenshots or rendered evidence when available
35
36
 
36
37
  ## Deliverables
@@ -15,7 +15,7 @@ tools: [Read, Glob, Grep, Bash]
15
15
  - Audit frontend changes for correctness and user-facing risk.
16
16
  - Audit layout sanity, interaction usability, and accessibility guardrails.
17
17
  - Audit visual design, token alignment, and service-level UX coherence.
18
- - Reconcile sidecar artifacts (selected anchor, strategy, screen contracts), design tokens, mermaid flows, and rendered output consistency.
18
+ - Reconcile sidecar artifacts (screen contracts), design tokens, mermaid flows, and rendered output consistency.
19
19
  HTML mock is optional fallback evidence only. Design tokens are supporting input.
20
20
  - For UI implementation, compare rendered output against `.qfai/contracts/design/prototype-handoff.yaml`, canonical prototype screenshots, HTML snapshots, and `.qfai/prototypes/winner/index.html`.
21
21
  - Reject prototype parity when implementation loses CTA hierarchy, spacing rhythm, information density,
@@ -138,9 +138,8 @@ In addition to traceability-based coverage (US/TC/CON-API existence), verify the
138
138
 
139
139
  - Confirm a Coverage Depth Matrix exists at `.qfai/evidence/coverage-depth-<spec-id>.md` (produced by `test-design-analyst`).
140
140
  Missing matrix: REVISE from the ATDD review cycle onward; on an SDD review cycle record it as a finding. See the scope note.
141
- A matrix that exists only inside `.qfai/evidence/atdd-<spec-id>.md` is a **missing** matrix: that file is ignored by the
142
- managed `.gitignore` block, so neither it nor the justification for any `❌` reaches a commit, and the "unjustified"
143
- judgement cannot be re-made by anyone reading the repository.
141
+ A matrix that exists only inside `.qfai/evidence/atdd-<spec-id>.md` is a **missing** matrix: that committed file is the
142
+ ledger's per-item evidence payload, not the dedicated matrix artifact whose justifications this gate reads.
144
143
  - Check that each US/TC has test cases for at minimum: normal path AND error/failure path.
145
144
  - Flag any US/TC that has only normal-path test cases as a coverage gap.
146
145
  - Reference: `.qfai/assistant/skills/qfai-atdd/references/test-case-depth-checklist.md`
@@ -154,8 +153,9 @@ In addition to traceability-based coverage (US/TC/CON-API existence), verify the
154
153
  The Coverage Depth Matrix is an **ATDD-stage artifact**: it is defined in
155
154
  `.qfai/assistant/skills/qfai-atdd/references/test-case-depth-checklist.md`, listed as an ATDD
156
155
  Mandatory Output,
157
- and written to `.qfai/evidence/coverage-depth-<spec-id>.md` — a committed path, unlike the rest of
158
- `.qfai/evidence/**`. `qfai-sdd` neither defines its layout nor ships a section for it, so:
156
+ and written to `.qfai/evidence/coverage-depth-<spec-id>.md` — a committed governance path alongside
157
+ `implement-<spec-id>.md` and `atdd-<spec-id>.md`. Only run-scoped evidence remains ignored.
158
+ `qfai-sdd` neither defines the matrix layout nor ships a section for it, so:
159
159
 
160
160
  - Apply this check from the **ATDD review cycle onward**, where
161
161
  `.qfai/assistant/skills/qfai-atdd/SKILL.md` lists
@@ -59,8 +59,9 @@ At both stages: when business rules (BR-\*) exist, verify each BR has at least o
59
59
  - Test-case quality and traceability findings
60
60
  - **Coverage Depth Matrix** (per spec, using the template in the depth checklist reference).
61
61
  Destination: `.qfai/evidence/coverage-depth-<spec-id>.md` from the ATDD stage onward — its own
62
- file, because that path is committed while the rest of `.qfai/evidence/**` is ignored, and the
63
- justification behind each `❌` is the input `qa-gatekeeper` reads. During SDD there is
62
+ file, because it has its own committed governance lifecycle separate from the committed
63
+ per-item TDD evidence, and the justification behind each `❌` is the input `qa-gatekeeper`
64
+ reads. During SDD there is
64
65
  no evidence artifact that holds it, so report depth gaps as findings instead of producing the
65
66
  matrix format.
66
67
  - Volume estimate and risk notes
@@ -42,6 +42,9 @@ QFAI が定義する、`npx qfai validate` の UI/UX 関連出力ガイドライ
42
42
  - 許容値: `web`, `windows`, `mobile-ios`, `mobile-android`, `cross-platform`
43
43
  - 未指定時: 自動検出(config → project files → fallback to `web`)
44
44
  - 未知の値: warning 発行。platform 値は保持しつつ、実質的に common ルールのみ適用
45
+ - 参照する profile: `prototyping` / `verify` / `full` / `saas-package` のみ。
46
+ `discussion` / `sdd` / `atdd` / `tdd` は platform を読まないため、これらに
47
+ `--platform` を渡すと未使用である旨の warning のみを発行する(未知値チェックは走らない)
45
48
 
46
49
  ## Known Limitations
47
50