qfai 0.3.8 → 0.4.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 (158) hide show
  1. package/README.md +12 -0
  2. package/assets/init/.qfai/README.md +5 -0
  3. package/assets/init/.qfai/prompts/README.md +1 -0
  4. package/assets/init/.qfai/prompts/qfai-generate-test-globs.md +29 -0
  5. package/assets/init/.qfai/specs/README.md +1 -1
  6. package/assets/init/root/qfai.config.yaml +8 -0
  7. package/assets/init/root/tests/qfai-traceability.sample.test.ts +2 -0
  8. package/dist/cli/index.cjs +717 -364
  9. package/dist/cli/index.cjs.map +1 -1
  10. package/dist/cli/index.d.ts +0 -2
  11. package/dist/cli/index.mjs +719 -366
  12. package/dist/cli/index.mjs.map +1 -1
  13. package/dist/index.cjs +710 -351
  14. package/dist/index.cjs.map +1 -1
  15. package/dist/index.d.cts +26 -3
  16. package/dist/index.d.ts +156 -2
  17. package/dist/index.mjs +714 -354
  18. package/dist/index.mjs.map +1 -1
  19. package/package.json +2 -1
  20. package/dist/cli/commands/init.d.ts +0 -8
  21. package/dist/cli/commands/init.d.ts.map +0 -1
  22. package/dist/cli/commands/init.js +0 -30
  23. package/dist/cli/commands/init.js.map +0 -1
  24. package/dist/cli/commands/report.d.ts +0 -7
  25. package/dist/cli/commands/report.d.ts.map +0 -1
  26. package/dist/cli/commands/report.js +0 -80
  27. package/dist/cli/commands/report.js.map +0 -1
  28. package/dist/cli/commands/validate.d.ts +0 -9
  29. package/dist/cli/commands/validate.d.ts.map +0 -1
  30. package/dist/cli/commands/validate.js +0 -57
  31. package/dist/cli/commands/validate.js.map +0 -1
  32. package/dist/cli/index.d.ts.map +0 -1
  33. package/dist/cli/index.js +0 -7
  34. package/dist/cli/index.js.map +0 -1
  35. package/dist/cli/lib/args.d.ts +0 -18
  36. package/dist/cli/lib/args.d.ts.map +0 -1
  37. package/dist/cli/lib/args.js +0 -98
  38. package/dist/cli/lib/args.js.map +0 -1
  39. package/dist/cli/lib/assets.d.ts +0 -2
  40. package/dist/cli/lib/assets.d.ts.map +0 -1
  41. package/dist/cli/lib/assets.js +0 -24
  42. package/dist/cli/lib/assets.js.map +0 -1
  43. package/dist/cli/lib/failOn.d.ts +0 -5
  44. package/dist/cli/lib/failOn.d.ts.map +0 -1
  45. package/dist/cli/lib/failOn.js +0 -10
  46. package/dist/cli/lib/failOn.js.map +0 -1
  47. package/dist/cli/lib/fs.d.ts +0 -11
  48. package/dist/cli/lib/fs.d.ts.map +0 -1
  49. package/dist/cli/lib/fs.js +0 -91
  50. package/dist/cli/lib/fs.js.map +0 -1
  51. package/dist/cli/lib/logger.d.ts +0 -4
  52. package/dist/cli/lib/logger.d.ts.map +0 -1
  53. package/dist/cli/lib/logger.js +0 -10
  54. package/dist/cli/lib/logger.js.map +0 -1
  55. package/dist/cli/main.d.ts +0 -2
  56. package/dist/cli/main.d.ts.map +0 -1
  57. package/dist/cli/main.js +0 -66
  58. package/dist/cli/main.js.map +0 -1
  59. package/dist/core/config.d.ts +0 -44
  60. package/dist/core/config.d.ts.map +0 -1
  61. package/dist/core/config.js +0 -218
  62. package/dist/core/config.js.map +0 -1
  63. package/dist/core/contractIndex.d.ts +0 -13
  64. package/dist/core/contractIndex.d.ts.map +0 -1
  65. package/dist/core/contractIndex.js +0 -66
  66. package/dist/core/contractIndex.js.map +0 -1
  67. package/dist/core/contracts.d.ts +0 -5
  68. package/dist/core/contracts.d.ts.map +0 -1
  69. package/dist/core/contracts.js +0 -42
  70. package/dist/core/contracts.js.map +0 -1
  71. package/dist/core/discovery.d.ts +0 -14
  72. package/dist/core/discovery.d.ts.map +0 -1
  73. package/dist/core/discovery.js +0 -55
  74. package/dist/core/discovery.js.map +0 -1
  75. package/dist/core/fs.d.ts +0 -6
  76. package/dist/core/fs.d.ts.map +0 -1
  77. package/dist/core/fs.js +0 -55
  78. package/dist/core/fs.js.map +0 -1
  79. package/dist/core/gherkin/parse.d.ts +0 -7
  80. package/dist/core/gherkin/parse.d.ts.map +0 -1
  81. package/dist/core/gherkin/parse.js +0 -25
  82. package/dist/core/gherkin/parse.js.map +0 -1
  83. package/dist/core/ids.d.ts +0 -6
  84. package/dist/core/ids.d.ts.map +0 -1
  85. package/dist/core/ids.js +0 -52
  86. package/dist/core/ids.js.map +0 -1
  87. package/dist/core/index.d.ts +0 -13
  88. package/dist/core/index.d.ts.map +0 -1
  89. package/dist/core/index.js +0 -13
  90. package/dist/core/index.js.map +0 -1
  91. package/dist/core/parse/adr.d.ts +0 -13
  92. package/dist/core/parse/adr.d.ts.map +0 -1
  93. package/dist/core/parse/adr.js +0 -33
  94. package/dist/core/parse/adr.js.map +0 -1
  95. package/dist/core/parse/gherkin.d.ts +0 -12
  96. package/dist/core/parse/gherkin.d.ts.map +0 -1
  97. package/dist/core/parse/gherkin.js +0 -22
  98. package/dist/core/parse/gherkin.js.map +0 -1
  99. package/dist/core/parse/markdown.d.ts +0 -14
  100. package/dist/core/parse/markdown.d.ts.map +0 -1
  101. package/dist/core/parse/markdown.js +0 -45
  102. package/dist/core/parse/markdown.js.map +0 -1
  103. package/dist/core/parse/spec.d.ts +0 -28
  104. package/dist/core/parse/spec.d.ts.map +0 -1
  105. package/dist/core/parse/spec.js +0 -80
  106. package/dist/core/parse/spec.js.map +0 -1
  107. package/dist/core/report.d.ts +0 -39
  108. package/dist/core/report.d.ts.map +0 -1
  109. package/dist/core/report.js +0 -226
  110. package/dist/core/report.js.map +0 -1
  111. package/dist/core/scenarioModel.d.ts +0 -33
  112. package/dist/core/scenarioModel.d.ts.map +0 -1
  113. package/dist/core/scenarioModel.js +0 -130
  114. package/dist/core/scenarioModel.js.map +0 -1
  115. package/dist/core/specLayout.d.ts +0 -8
  116. package/dist/core/specLayout.d.ts.map +0 -1
  117. package/dist/core/specLayout.js +0 -36
  118. package/dist/core/specLayout.js.map +0 -1
  119. package/dist/core/types.d.ts +0 -25
  120. package/dist/core/types.d.ts.map +0 -1
  121. package/dist/core/types.js +0 -2
  122. package/dist/core/types.js.map +0 -1
  123. package/dist/core/validate.d.ts +0 -4
  124. package/dist/core/validate.d.ts.map +0 -1
  125. package/dist/core/validate.js +0 -34
  126. package/dist/core/validate.js.map +0 -1
  127. package/dist/core/validators/contracts.d.ts +0 -5
  128. package/dist/core/validators/contracts.d.ts.map +0 -1
  129. package/dist/core/validators/contracts.js +0 -162
  130. package/dist/core/validators/contracts.js.map +0 -1
  131. package/dist/core/validators/delta.d.ts +0 -4
  132. package/dist/core/validators/delta.d.ts.map +0 -1
  133. package/dist/core/validators/delta.js +0 -68
  134. package/dist/core/validators/delta.js.map +0 -1
  135. package/dist/core/validators/ids.d.ts +0 -4
  136. package/dist/core/validators/ids.d.ts.map +0 -1
  137. package/dist/core/validators/ids.js +0 -88
  138. package/dist/core/validators/ids.js.map +0 -1
  139. package/dist/core/validators/scenario.d.ts +0 -5
  140. package/dist/core/validators/scenario.d.ts.map +0 -1
  141. package/dist/core/validators/scenario.js +0 -140
  142. package/dist/core/validators/scenario.js.map +0 -1
  143. package/dist/core/validators/spec.d.ts +0 -5
  144. package/dist/core/validators/spec.d.ts.map +0 -1
  145. package/dist/core/validators/spec.js +0 -94
  146. package/dist/core/validators/spec.js.map +0 -1
  147. package/dist/core/validators/traceability.d.ts +0 -4
  148. package/dist/core/validators/traceability.d.ts.map +0 -1
  149. package/dist/core/validators/traceability.js +0 -180
  150. package/dist/core/validators/traceability.js.map +0 -1
  151. package/dist/core/version.d.ts +0 -2
  152. package/dist/core/version.d.ts.map +0 -1
  153. package/dist/core/version.js +0 -25
  154. package/dist/core/version.js.map +0 -1
  155. package/dist/index.d.ts.map +0 -1
  156. package/dist/index.js +0 -2
  157. package/dist/index.js.map +0 -1
  158. package/dist/tsconfig.tsbuildinfo +0 -1
package/README.md CHANGED
@@ -20,6 +20,7 @@ npx qfai report
20
20
 
21
21
  - `npx qfai init` によるテンプレート生成(specs/contracts に加え、`.qfai/require/README.md`、`.qfai/rules/pnpm.md`、`.qfai/prompts/require-to-spec.md`、`.qfai/promptpack/` を含む)
22
22
  - `npx qfai validate` による `.qfai/` 内ドキュメントの整合性・トレーサビリティ検査
23
+ - `npx qfai validate` による SC→Test 参照の検証(`validation.traceability.testFileGlobs` に一致するテストファイルから `QFAI:SC-xxxx` を抽出)
23
24
  - `npx qfai report` によるレポート出力
24
25
 
25
26
  ## Usage
@@ -30,3 +31,14 @@ npx qfai report
30
31
 
31
32
  設定はリポジトリ直下の `qfai.config.yaml` で行います。
32
33
  命名規約は `docs/rules/naming.md` を参照してください。
34
+
35
+ SC→Test の参照はテストコード内の `QFAI:SC-xxxx` アノテーションで宣言します。
36
+ SC→Test の対象ファイルは `validation.traceability.testFileGlobs` で指定します。
37
+ 除外は `validation.traceability.testFileExcludeGlobs` で指定できます。
38
+ SC→Test 検証は `validation.traceability.scMustHaveTest` と
39
+ `validation.traceability.scNoTestSeverity` で制御できます。
40
+
41
+ - `validation.traceability.testFileGlobs`: SC→Test 判定に使用するテストファイル glob(配列)
42
+ - `validation.traceability.testFileExcludeGlobs`: 追加の除外 glob(配列、任意)
43
+ - `validation.traceability.scMustHaveTest`: SC→Test 検証の有効/無効を制御(`true` で有効、`false` で無効)
44
+ - `validation.traceability.scNoTestSeverity`: SC 未参照時の重要度を指定(`error` / `warning`)
@@ -9,6 +9,10 @@ npx qfai validate --fail-on error --format github
9
9
  npx qfai report
10
10
  ```
11
11
 
12
+ ## トレーサビリティ(SC→Test)
13
+
14
+ - `validation.traceability.testFileGlobs` に一致するテストコードで `QFAI:SC-xxxx` を参照する(コメント可)
15
+
12
16
  ## ディレクトリ概要
13
17
 
14
18
  - `specs/` : Spec Pack(spec.md / delta.md / scenario.md)
@@ -28,6 +32,7 @@ npx qfai report
28
32
  - `rules/pnpm.md`
29
33
  - `prompts/README.md`
30
34
  - `prompts/require-to-spec.md`
35
+ - `prompts/qfai-generate-test-globs.md`
31
36
  - `promptpack/constitution.md`
32
37
  - `out/README.md`
33
38
 
@@ -12,6 +12,7 @@
12
12
  - `makeOverview.md`: Spec 一覧(overview)生成
13
13
  - `makeBusinessFlow.md`: 業務フロー(BF)整理
14
14
  - `require-to-spec.md`: 既存要件から Spec Pack を起こす
15
+ - `qfai-generate-test-globs.md`: テストファイル glob の生成支援(`qfai.config.yaml` 更新)
15
16
 
16
17
  ## 使い方(例)
17
18
 
@@ -0,0 +1,29 @@
1
+ # QFAI: テストファイル glob 生成(プロジェクト分析→qfai.config.yaml 更新)
2
+
3
+ あなたはリポジトリを解析し、QFAI の SC→Test 判定に使用する「テストファイル glob」を作成します。
4
+
5
+ ## 目的
6
+
7
+ - SC→Test の根拠は **テストファイル内の `QFAI:SC-xxxx`** アノテーションです。
8
+ - その抽出対象(テストファイル集合)を、プロジェクト実態に合わせて **過不足なく**指定してください。
9
+
10
+ ## 手順
11
+
12
+ 1. どのテストフレームワーク/ランナーが使われているかを特定してください。
13
+ - 例: `package.json` の dependencies/devDependencies、設定ファイル(`vitest.config.*`, `jest.config.*`, `playwright.config.*` 等)、CI 設定など
14
+ 2. テストファイルが存在するディレクトリと命名規則を列挙してください。
15
+ - `tests/` 配下だけでなく、**`src/` 同居**(`*.test.*`)も考慮すること
16
+ - e2e / integration / unit が分かれている場合はそれも考慮すること
17
+ 3. 「テストファイル glob(含める)」を 3-10 個程度で提案してください。
18
+ - 過剰に広い `**/*` は禁止(性能・誤検知の観点)
19
+ 4. 「除外 glob」を提案してください(既定除外に加えて必要なら)。
20
+ 5. `qfai.config.yaml` を更新してください。
21
+ - `validation.traceability.testFileGlobs` に glob 配列を設定
22
+ - 必要なら `validation.traceability.testFileExcludeGlobs` も設定
23
+ 6. 更新後、実在するテストファイルを 5-15 件サンプリングし、各ファイルが提案 glob にマッチすることを示してください。
24
+ 7. 最後に、提案 glob を 1 行ずつコメント付きでまとめてください(採用理由を短く)。
25
+
26
+ ## 制約
27
+
28
+ - `.qfai/` 配下、`node_modules/`、ビルド成果物(`dist/`, `build/` 等)は対象外
29
+ - 変更は **glob 設定に限定**(テストやソースの内容改変はしない)
@@ -47,5 +47,5 @@
47
47
  - Spec: 必須セクション、SPEC/BR ID、BR Priority、ID 形式、Contract 参照の実在性
48
48
  - Delta: 変更区分(互換/変更)のチェック状態
49
49
  - Scenario: Feature/Scenario の存在、タグ要件、Given/When/Then
50
- - Traceability: BR→SC、SC→契約(UI/API/DATA)の接続、BR の所属 SPEC 整合
50
+ - Traceability: BR→SC、SC→契約(UI/API/DATA)、SC→Test の接続、BR の所属 SPEC 整合
51
51
  - IDs: 定義 ID の重複検知(Spec/Scenario/Contracts)
@@ -20,6 +20,14 @@ validation:
20
20
  traceability:
21
21
  brMustHaveSc: true
22
22
  scMustTouchContracts: true
23
+ scMustHaveTest: true
24
+ testFileGlobs:
25
+ - tests/**/*.test.ts
26
+ - tests/**/*.spec.ts
27
+ - src/**/*.test.ts
28
+ - src/**/*.spec.ts
29
+ testFileExcludeGlobs: []
30
+ scNoTestSeverity: error
23
31
  allowOrphanContracts: false
24
32
  unknownContractIdSeverity: error
25
33
  output:
@@ -0,0 +1,2 @@
1
+ // Traceability sample: reference SC IDs via annotations (comments are enough).
2
+ // QFAI:SC-0001