@educa-corp/sdd-framework 0.8.1 → 0.9.1

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 (66) hide show
  1. package/bin/lint-trace.js +200 -1
  2. package/bin/self-check.js +0 -146
  3. package/bin/trace-schema.json +12 -3
  4. package/core/FRAMEWORK_VERSION +1 -1
  5. package/core/commands/generate-code.md +45 -2
  6. package/core/commands/propose-scenario.md +1 -1
  7. package/core/commands/qc-analyze.md +22 -260
  8. package/core/commands/qc-design-test.md +1 -1
  9. package/core/commands/qc-plan.md +4 -7
  10. package/core/commands/qc-run-test.md +1 -1
  11. package/core/commands/refine-prd.md +20 -47
  12. package/core/commands/report-bug.md +1 -1
  13. package/core/commands/review-context.md +1 -27
  14. package/core/commands/validate-traces.md +178 -3
  15. package/core/skills/qc/qa-analyst/DOC_GAPS.template.md +63 -0
  16. package/core/skills/qc/qa-analyst/acceptance-criteria.md +2 -4
  17. package/core/skills/qc/qa-analyst/business-rules.md +4 -38
  18. package/core/skills/qc/qa-analyst/data-flow.md +3 -5
  19. package/core/skills/qc/qa-analyst/spec-breakdown.md +7 -9
  20. package/core/skills/qc/qa-designer/e2e/journey.md +2 -2
  21. package/core/skills/qc/qa-designer/exploratory/charter.md +1 -1
  22. package/core/skills/qc/qa-designer/exploratory/explore-to-functional.md +1 -1
  23. package/core/skills/qc/qa-designer/functional/api.md +2 -2
  24. package/core/skills/qc/qa-designer/functional/gui-feature.md +2 -2
  25. package/core/skills/qc/qa-designer/functional/gui-screen.md +2 -2
  26. package/core/skills/qc/qa-designer/integration/api.md +2 -2
  27. package/core/skills/qc/qa-designer/integration/db.md +2 -2
  28. package/core/skills/qc/qa-designer/integration/gui.md +2 -2
  29. package/core/skills/qc/qa-designer/integration/kafka.md +2 -2
  30. package/core/skills/qc/qa-designer/non-functional.md +2 -2
  31. package/core/skills/qc/qa-planner/test-plan.md +10 -13
  32. package/core/skills/qc/qa-reviewer/script/e2e.md +1 -1
  33. package/core/skills/qc/qa-reviewer/script/exploratory.md +1 -1
  34. package/core/skills/qc/qa-reviewer/script/functional.md +1 -1
  35. package/core/skills/qc/qa-reviewer/script/integration.md +1 -1
  36. package/core/skills/qc/qa-reviewer/script/non-functional.md +1 -1
  37. package/core/skills/qc/qa-reviewer/test-case/e2e.md +1 -1
  38. package/core/skills/qc/qa-reviewer/test-case/exploratory.md +1 -1
  39. package/core/skills/qc/qa-reviewer/test-case/functional.md +1 -1
  40. package/core/skills/qc/qa-reviewer/test-case/integration.md +2 -2
  41. package/core/skills/qc/qa-reviewer/test-case/non-functional.md +1 -1
  42. package/core/skills/qc/qa-runner/e2e.md +1 -1
  43. package/core/skills/qc/qa-runner/exploratory/session.md +1 -1
  44. package/core/skills/qc/qa-runner/functional/api.md +1 -1
  45. package/core/skills/qc/qa-runner/functional/gui-feature.md +1 -1
  46. package/core/skills/qc/qa-runner/functional/gui-screen.md +1 -1
  47. package/core/skills/qc/qa-runner/integration.md +1 -1
  48. package/core/skills/qc/qa-runner/non-functional.md +1 -1
  49. package/core/skills/qc/qa-runner/report/report.md +1 -1
  50. package/core/steps/review-fanout.md +1 -27
  51. package/core/templates/project-context.yaml +2 -2
  52. package/docs/02-concepts/pipeline-steps/08-qc-automation.md +2 -2
  53. package/docs/04-reference/commands.md +1 -1
  54. package/docs/explain/03-refine-prd.md +6 -8
  55. package/docs/explain/15-qc-analyze.md +7 -10
  56. package/docs/explain/16-qc-plan.md +2 -2
  57. package/package.json +3 -2
  58. package/bin/qc-base-map.json +0 -595
  59. package/core/skills/qc/qa-analyst/DOC_GAP.template.md +0 -117
  60. package/core/skills/qc/qa-analyst/exhaustive-gap-scanner.md +0 -174
  61. package/core/skills/qc/qa-analyst/spec-issue-reporter.md +0 -100
  62. package/core/skills/qc/qa-planner/risk-model.md +0 -106
  63. package/core/steps/gap-verify.md +0 -231
  64. package/docs/plans/qc-implementation-log.md +0 -1446
  65. package/docs/plans/qc-merge-plan.md +0 -502
  66. package/docs/plans/qc-sync-command.md +0 -358
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  version: 1.0
3
3
  updated: 2026-06-11
4
- ported_from: ui-automation-testing
4
+ ported_from: ai-automation-qc-base
5
5
  ---
6
6
 
7
7
  # Test Case — Integration Kafka (Message/Event)
@@ -18,7 +18,7 @@ Skill **tự chứa** để viết TC tích hợp qua Kafka: producer phát even
18
18
  ---
19
19
 
20
20
  ## Format file TC (bắt buộc)
21
- - Metadata **list**: Title · Feature · Priority · Status(Draft) · Author(AI) · Tags · **Trace** `[BR-xx](REQUIREMENT_ANALYSIS.md#3-business-rules)` (không có → `⚠️ Chưa có Business Rule`) · **🚫 Block** `[GAP-xx](DOC_GAP.md)`.
21
+ - Metadata **list**: Title · Feature · Priority · Status(Draft) · Author(AI) · Tags · **Trace** `[BR-xx](REQUIREMENT_ANALYSIS.md#3-business-rules)` (không có → `⚠️ Chưa có Business Rule`) · **🚫 Block** `[GAP-xx](DOC_GAPS.md)`.
22
22
  - **Test Data** dạng list (payload) · **Steps** `[Action]`/`[Verify]` · **Expected** 1 bullet nêu **topic + field payload / hành vi consumer**.
23
23
  - Cuối file: Trace matrix + bảng TC block · bỏ nội dung gạch ngang.
24
24
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  version: 1.0
3
3
  updated: 2026-06-11
4
- ported_from: ui-automation-testing
4
+ ported_from: ai-automation-qc-base
5
5
  ---
6
6
 
7
7
  # Test Case — Non-Functional
@@ -18,7 +18,7 @@ Trọng tâm "hệ thống hoạt động TỐT thế nào". Chỉ cần load fi
18
18
  ---
19
19
 
20
20
  ## Format file TC (bắt buộc)
21
- - Metadata **list**: Title · Feature · Priority · Status(Draft) · Author(AI) · Tags · **Trace** `[BR-xx](REQUIREMENT_ANALYSIS.md#3-business-rules)` (không có → `⚠️ Chưa có Business Rule`) · **🚫 Block** `[GAP-xx](DOC_GAP.md)`.
21
+ - Metadata **list**: Title · Feature · Priority · Status(Draft) · Author(AI) · Tags · **Trace** `[BR-xx](REQUIREMENT_ANALYSIS.md#3-business-rules)` (không có → `⚠️ Chưa có Business Rule`) · **🚫 Block** `[GAP-xx](DOC_GAPS.md)`.
22
22
  - **Test Data** dạng list · **Steps** `[Action]`/`[Verify]` · **Expected** 1 bullet có **ngưỡng đo cụ thể** (không "nhanh/ổn định").
23
23
  - Cuối file: Trace matrix + bảng TC block · bỏ nội dung gạch ngang.
24
24
 
@@ -1,9 +1,7 @@
1
1
  ---
2
2
  version: 1.0
3
3
  updated: 2026-06-11
4
- ported_from: ui-automation-testing
5
- upstream_path: skills/qa-tc-analyst/test-plan.md
6
- upstream_sha: f259b4d123c565a42ba6c6ec96980a8e4c66284f
4
+ ported_from: ai-automation-qc-base
7
5
  ---
8
6
 
9
7
  # Lập Test Plan
@@ -12,15 +10,15 @@ Tổng hợp **output của qa-analyst** thành **Test Plan** cho một feature.
12
10
 
13
11
  **Đầu vào (bắt buộc, chỉ 2 nguồn — đúng 2 file qa-analyst trả ra):**
14
12
  1. `{paths.qc_dir}/{UC-ID}/REQUIREMENT_ANALYSIS.md` — chức năng, BR-xx, AC-xx, data flow (qa-analyst).
15
- 2. `{paths.qc_dir}/{UC-ID}/DOC_GAP.md` — bảng gap GAP-xx, mức độ, gap Blocker (qa-analyst).
13
+ 2. `{paths.qc_dir}/{UC-ID}/DOC_GAPS.md` — bảng gap GAP-xx, mức độ, gap Blocker (qa-analyst).
16
14
 
17
15
  ## Khi nào trigger
18
16
  - "lập test plan cho [Feature]" / "viết test plan"
19
- - Sau khi qa-analyst xong (đã có REQUIREMENT_ANALYSIS + DOC_GAP)
17
+ - Sau khi qa-analyst xong (đã có REQUIREMENT_ANALYSIS + DOC_GAPS)
20
18
  - Trước khi qa-designer thiết kế chi tiết TC — test plan là khung định hướng
21
19
 
22
20
  ## Khi KHÔNG trigger
23
- - Chưa có REQUIREMENT_ANALYSIS / DOC_GAP → chạy qa-analyst trước
21
+ - Chưa có REQUIREMENT_ANALYSIS / DOC_GAPS → chạy qa-analyst trước
24
22
  - Thiết kế test case chi tiết (.Test.md) → dùng qa-designer
25
23
  - Bóc tách yêu cầu/spec, lập danh sách gap → dùng qa-analyst
26
24
 
@@ -30,7 +28,7 @@ Tổng hợp **output của qa-analyst** thành **Test Plan** cho một feature.
30
28
 
31
29
  1. Đọc `REQUIREMENT_ANALYSIS.md`: nắm chức năng, các BR-xx và AC-xx, data flow,
32
30
  integration/failure point.
33
- 2. Đọc `DOC_GAP.md`: lấy danh sách gap, đặc biệt **gap Blocker còn Open** → đây là
31
+ 2. Đọc `DOC_GAPS.md`: lấy danh sách gap, đặc biệt **gap Blocker còn Open** → đây là
34
32
  nguồn cho cột "Phụ thuộc" và cho Entry criteria.
35
33
  3. Map mỗi nhóm BR sang **layer test** của qa-designer: functional/gui-screen,
36
34
  gui-feature, api, integration, e2e/journey, non-functional.
@@ -49,8 +47,7 @@ Tổng hợp **output của qa-analyst** thành **Test Plan** cho một feature.
49
47
  criteria yêu cầu đóng các gap đó trước khi thiết kế TC.
50
48
  - Liệt kê **E2E journey** đầy đủ (mỗi journey: tiền điều kiện, kết quả/định tuyến kỳ
51
49
  vọng, BR, phụ thuộc, priority) + bộ **verify point chung** sau submit.
52
- - Mục Rủi ro: **nạp `risk-model.md`** quét đủ 7 nguồn, chấm khả năng × thiệt hại → P0–P3,
53
- rồi dùng mức đó chia độ sâu test. Đừng chấm thẳng ra P0/P1 theo cảm tính.
50
+ - Mục Rủi ro: rút trực tiếp từ gap Blocker + các BR logic phức tạp.
54
51
 
55
52
  ---
56
53
 
@@ -66,7 +63,7 @@ Tổng hợp **output của qa-analyst** thành **Test Plan** cho một feature.
66
63
  | Feature / Project / Module | … |
67
64
  | Người lập | qa-planner |
68
65
  | Ngày / Phiên bản | … |
69
- | Nguồn | REQUIREMENT_ANALYSIS · DOC_GAP |
66
+ | Nguồn | REQUIREMENT_ANALYSIS · DOC_GAPS |
70
67
 
71
68
  ## 1. Mục tiêu
72
69
  Mục tiêu test của feature (1–3 câu).
@@ -98,12 +95,12 @@ Kỹ thuật áp dụng: EP+BVA, Decision Table (cho logic điều kiện), stat
98
95
  integration, negative/exploratory; tự động hoá theo `CLAUDE.md` (Playwright + pytest-playwright + Trace + pytest-html).
99
96
 
100
97
  ## 5. Tiêu chí Vào / Ra
101
- - **Entry:** gap Blocker (trong DOC_GAP) đã Answered; doc phụ thuộc sẵn sàng; môi trường + tài khoản role.
98
+ - **Entry:** gap Blocker (trong DOC_GAPS) đã Answered; doc phụ thuộc sẵn sàng; môi trường + tài khoản role.
102
99
  - **Exit:** pass P0=100%, P1≥95%; không còn defect Blocker/Critical; mọi BR/AC được trace; báo cáo pytest-html + Playwright Trace.
103
100
 
104
101
  ## 6. Rủi ro (risk-based)
105
- | Rủi ro | Nguồn | Khả năng | Thiệt hại | Mức | Giảm thiểu |
106
- (cách chấm mức + 7 nguồn rủi ro + cách dùng mức để chia độ sâu test: xem `risk-model.md`)
102
+ | Rủi ro | Ảnh hưởng | Mức | Giảm thiểu |
103
+ (rút từ gap Blocker + BR logic phức tạp)
107
104
 
108
105
  ## 7. Dữ liệu & Môi trường
109
106
  Tài khoản các role, dữ liệu mẫu (biên/edge), môi trường staging.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  version: 1.0
3
3
  updated: 2026-06-11
4
- ported_from: ui-automation-testing
4
+ ported_from: ai-automation-qc-base
5
5
  ---
6
6
 
7
7
  # Review Test Script — E2E Journey
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  version: 1.0
3
3
  updated: 2026-06-11
4
- ported_from: ui-automation-testing
4
+ ported_from: ai-automation-qc-base
5
5
  ---
6
6
 
7
7
  # Review Session Note — Exploratory
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  version: 1.0
3
3
  updated: 2026-06-11
4
- ported_from: ui-automation-testing
4
+ ported_from: ai-automation-qc-base
5
5
  ---
6
6
 
7
7
  # Review Test Script — Functional
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  version: 1.0
3
3
  updated: 2026-06-11
4
- ported_from: ui-automation-testing
4
+ ported_from: ai-automation-qc-base
5
5
  ---
6
6
 
7
7
  # Review Test Script — Integration
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  version: 1.0
3
3
  updated: 2026-06-11
4
- ported_from: ui-automation-testing
4
+ ported_from: ai-automation-qc-base
5
5
  ---
6
6
 
7
7
  # Review Test Script — Non-Functional
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  version: 1.0
3
3
  updated: 2026-06-11
4
- ported_from: ui-automation-testing
4
+ ported_from: ai-automation-qc-base
5
5
  ---
6
6
 
7
7
  # Review Test Case — E2E Journey
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  version: 1.0
3
3
  updated: 2026-06-11
4
- ported_from: ui-automation-testing
4
+ ported_from: ai-automation-qc-base
5
5
  ---
6
6
 
7
7
  # Review Charter — Exploratory
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  version: 1.0
3
3
  updated: 2026-06-11
4
- ported_from: ui-automation-testing
4
+ ported_from: ai-automation-qc-base
5
5
  ---
6
6
 
7
7
  # Review Test Case — Functional
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  version: 1.0
3
3
  updated: 2026-06-11
4
- ported_from: ui-automation-testing
4
+ ported_from: ai-automation-qc-base
5
5
  ---
6
6
 
7
7
  # Review Test Case — Integration
@@ -21,7 +21,7 @@ Review bộ TC tích hợp (GUI↔Backend, API, DB) và đánh giá chất lư
21
21
  ## Phase 1 — Clarify
22
22
 
23
23
  1. Đọc tất cả TC integration trong folder chỉ định; xác định loại: GUI↔Backend / API / DB
24
- 2. Đọc REQUIREMENT_ANALYSIS + DOC_GAP nếu có
24
+ 2. Đọc REQUIREMENT_ANALYSIS + DOC_GAPS nếu có
25
25
  3. Xác định chuỗi tích hợp (caller → component → downstream)
26
26
 
27
27
  ---
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  version: 1.0
3
3
  updated: 2026-06-11
4
- ported_from: ui-automation-testing
4
+ ported_from: ai-automation-qc-base
5
5
  ---
6
6
 
7
7
  # Review Test Case — Non-Functional
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  version: 1.0
3
3
  updated: 2026-06-11
4
- ported_from: ui-automation-testing
4
+ ported_from: ai-automation-qc-base
5
5
  ---
6
6
 
7
7
  # Gen Script — E2E Journey
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  version: 1.0
3
3
  updated: 2026-06-11
4
- ported_from: ui-automation-testing
4
+ ported_from: ai-automation-qc-base
5
5
  ---
6
6
 
7
7
  # Session Template & Convert Findings — Exploratory
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  version: 1.0
3
3
  updated: 2026-06-11
4
- ported_from: ui-automation-testing
4
+ ported_from: ai-automation-qc-base
5
5
  ---
6
6
 
7
7
  # Gen Script — Functional API
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  version: 1.0
3
3
  updated: 2026-06-11
4
- ported_from: ui-automation-testing
4
+ ported_from: ai-automation-qc-base
5
5
  ---
6
6
 
7
7
  # Gen Script — Functional GUI Feature (đa màn hình)
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  version: 1.0
3
3
  updated: 2026-06-11
4
- ported_from: ui-automation-testing
4
+ ported_from: ai-automation-qc-base
5
5
  ---
6
6
 
7
7
  # Gen Script — Functional GUI Screen (1 màn hình)
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  version: 1.0
3
3
  updated: 2026-06-11
4
- ported_from: ui-automation-testing
4
+ ported_from: ai-automation-qc-base
5
5
  ---
6
6
 
7
7
  # Gen Script — Integration
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  version: 1.0
3
3
  updated: 2026-06-11
4
- ported_from: ui-automation-testing
4
+ ported_from: ai-automation-qc-base
5
5
  ---
6
6
 
7
7
  # Gen Script — Non-Functional
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  version: 1.1
3
3
  updated: 2026-06-11
4
- ported_from: ui-automation-testing
4
+ ported_from: ai-automation-qc-base
5
5
  ---
6
6
 
7
7
  # Report — Playwright Trace + pytest-html (stack chuẩn)
@@ -8,11 +8,10 @@ vòng không sinh thêm gì mới, *trước khi* ghi file findings.
8
8
 
9
9
  Lệnh gọi cung cấp hai thứ bắt buộc + hai tuỳ chọn:
10
10
  - **DIMENSIONS** — danh sách các chiều review để fan out
11
- (`/refine-prd` → 4 lăng kính; `/review-context` → các P-check hoặc B-check; `/qc-analyze` → 3 lăng kính quét gap).
11
+ (`/refine-prd` → 3 lăng kính; `/review-context` → các P-check hoặc B-check).
12
12
  - **FINDINGS SCHEMA** — dạng YAML mà mỗi finding phải theo (định nghĩa trong lệnh).
13
13
  - **GRANULARITY** *(tuỳ chọn, mặc định `auto`)* — `auto`: chọn độ mịn fan-out theo bảng ngưỡng kích thước ở Phase 1 (hành vi cũ). `per-uc`: **LUÔN** fan-out theo từng UC, **bỏ qua ngưỡng** — dùng cho review cần độ đầy đủ cao (`/refine-prd` truyền cái này để lần đầu đã quét sâu). Lệnh không truyền → `auto` → hành vi không đổi.
14
14
  - **CHANGED_SCOPE** *(tuỳ chọn)* — danh sách UC/section đã thay đổi (review **delta**). Nếu được truyền, Phase 1 chỉ fan-out trên các phạm vi này + PRD-global; Phase 2 critic vẫn quét **toàn doc** làm lưới an toàn. Không truyền → quét toàn bộ như thường.
15
- - **VERIFY** *(tuỳ chọn, mặc định `off`)* — `on` chèn **Phase 2.5** (`steps/gap-verify.md`) giữa critic và dedup: mỗi finding phải mở lại tài liệu nguồn tự chứng minh trước khi được giữ. Không truyền → hành vi không đổi.
16
15
 
17
16
  > **Bỏ qua ở chế độ sub-agent:** Nếu Gate Bước 0 đã set `_agent_mode: true`, toàn bộ
18
17
  > quy trình này bị **bỏ qua** — orchestrator đã chạy sẵn một dimension/UC cho mỗi
@@ -131,31 +130,6 @@ Ghi lại `convergence_rounds` (số vòng critic đã chạy) cho report.
131
130
 
132
131
  ---
133
132
 
134
- ## Phase 2.5 — Thẩm định *(chỉ chạy khi `VERIFY = on`)*
135
-
136
- **Vì sao có bước này.** Phase 1 và Phase 2 chỉ có **một chiều lực**: fan-out mở rộng bề
137
- ngang, critic lặp cho tới khi không còn gì mới — cả hai đều hỏi *"còn thiếu gì nữa?"*.
138
- Không có gì hỏi ngược lại *"cái vừa tìm ra có thật không?"*. Nên quy trình này đẩy **recall**
139
- lên mà **không có gì kéo precision lại**, và càng lặp critic thì tỉ lệ finding bịa càng cao —
140
- đúng thứ nó tự sinh ra: khẳng định hành vi tài liệu không nêu, trích evidence sai, hoặc gắn
141
- nhãn vấn đề cho thứ thực ra là chuyện làm-kỹ-hơn.
142
-
143
- Chạy `steps/gap-verify.md` trên `ALL_FINDINGS` với:
144
- - `FINDINGS` = `ALL_FINDINGS` (sau Phase 2)
145
- - `EVIDENCE_ROOT` = `{paths.specs_dir}` — hoặc giá trị lệnh gọi chỉ định
146
- - `VERDICT_FIELD` = trường trạng thái của FINDINGS SCHEMA mà lệnh định nghĩa
147
- - `RERATE` = `on`
148
-
149
- Finding bị `❌ INVALID` / `⚠️ RECLASSIFY` / `🔁 MERGE` **không đi tiếp sang Phase 3** — nhưng
150
- **KHÔNG bị xoá**: chúng vào file findings với trạng thái đóng + lý do, để người đọc kiểm chứng
151
- được vì sao chúng bị loại. Ghi lại số liệu verdict cho report.
152
-
153
- > **Chạy TRƯỚC Phase 3, không phải sau.** Dedup và giải quyết xung đột là việc tốn suy luận;
154
- > làm nó trên một tập còn lẫn finding bịa là vừa phí, vừa nguy hiểm — một finding ảo có thể
155
- > "thắng" một finding thật ở bước giữ-cái-severity-cao-hơn.
156
-
157
- ---
158
-
159
133
  ## Phase 3 — Dedup, giải quyết xung đột, merge
160
134
 
161
135
  Các sub-agent chạy **mù với nhau** (độc lập = độ phủ đa dạng). Chúng không bao giờ
@@ -63,14 +63,14 @@ paths:
63
63
  refinement_dir: ".agent/review"
64
64
 
65
65
  # QC's OWN analysis/design working docs (qc-analyze/plan/design-test outputs:
66
- # REQUIREMENT_ANALYSIS.md, DOC_GAP.md, TEST_PLAN.md, test-cases/*.Test.md).
66
+ # REQUIREMENT_ANALYSIS.md, DOC_GAPS.md, TEST_PLAN.md, test-cases/*.Test.md).
67
67
  # One subfolder per UC: {qc_dir}/{UC-ID}/. Default "docs" (the QC team's own
68
68
  # convention), VISIBLE — not hidden under .agent/. NOTE: specs (PRD / .feature /
69
69
  # design-spec) are NOT here — they come from the PO spec submodule (spec_source).
70
70
  qc_dir: "docs"
71
71
 
72
72
  # WHERE the qc-* commands LOAD their skills from (qa-analyst / qa-designer / qa-planner
73
- # / qa-reviewer / qa-runner + DOC_GAP.template.md). Default = the framework-bundled
73
+ # / qa-reviewer / qa-runner + DOC_GAPS.template.md). Default = the framework-bundled
74
74
  # copy at .agent/skills/qc (works standalone). The QC team OWNS these skills in their
75
75
  # canonical repo (ai-automation-qc-base) — point this at that repo/submodule (e.g.
76
76
  # "qc-base/.claude/skills") so the skills evolve INDEPENDENTLY and are NOT overwritten
@@ -38,7 +38,7 @@
38
38
 
39
39
  | Artifact | Nội dung |
40
40
  |----------|----------|
41
- | `docs/{UC-ID}/…` | `REQUIREMENT_ANALYSIS.md`, `DOC_GAP.md`, `TEST_PLAN.md`, `test-cases/*.Test.md` |
41
+ | `docs/{UC-ID}/…` | `REQUIREMENT_ANALYSIS.md`, `DOC_GAPS.md`, `TEST_PLAN.md`, `test-cases/*.Test.md` |
42
42
  | Script Python pytest-playwright | Sinh từ `.Test.md` đã review |
43
43
  | Cột `qc_status` trong `.trace/…/{UC-ID}-{platform}.tsv` | Trạng thái QC **chính thức** |
44
44
  | Evidence + report | `/qc-report` — kèm product-gap đẩy về PO/Dev |
@@ -70,7 +70,7 @@ Dây chuyền **6 trạm**, output trạm trước là input trạm sau:
70
70
 
71
71
  | # | Trạm | Việc |
72
72
  |---|------|------|
73
- | 1 | `/qc-analyze` | Phân rã yêu cầu + phát hiện **gap tài liệu** (`DOC_GAP.md`) |
73
+ | 1 | `/qc-analyze` | Phân rã yêu cầu + phát hiện **gap tài liệu** (`DOC_GAPS.md`) |
74
74
  | 2 | `/qc-plan` | Đánh giá **rủi ro** + câu hỏi cho dev (`TEST_PLAN.md`) |
75
75
  | 3 | `/qc-design-test` | Thiết kế **test case** dạng Markdown (`*.Test.md`) |
76
76
  | 4 | `/qc-review` | 🛑 **Cổng review** hai chiều: test case & script trước khi chạy |
@@ -89,7 +89,7 @@ Mọi lệnh chạy chung một **Gate** (model check → target → context-loa
89
89
 
90
90
  | Lệnh | Input | Output | Owner |
91
91
  |------|-------|--------|-------|
92
- | `/qc-analyze` | UC + spec | `REQUIREMENT_ANALYSIS.md`, `DOC_GAP.md` | QA |
92
+ | `/qc-analyze` | UC + spec | `REQUIREMENT_ANALYSIS.md`, `DOC_GAPS.md` | QA |
93
93
  | `/qc-plan` | Analysis | `TEST_PLAN.md` (rủi ro) | QA |
94
94
  | `/qc-design-test` | Plan | `test-cases/*.Test.md` | QA |
95
95
  | `/qc-review` | Test case/script | 🛑 Cổng review | QA |
@@ -1,8 +1,8 @@
1
1
  [← /extend-prd](02b-extend-prd.md) · [Explain Home](README.md) · [Next: /review-context →](04-review-context.md)
2
2
 
3
- # 03 · `/refine-prd` — Tinh chỉnh PRD qua 4 lăng kính
3
+ # 03 · `/refine-prd` — Tinh chỉnh PRD qua 3 lăng kính
4
4
 
5
- > **Một câu.** Fan-out review PRD qua **4 lăng kính QA / DEV / SA / PO**, chạy **vòng lặp completeness-critic** để hội tụ đầy đủ trong một lần, rồi sinh file findings cho PO accept/reject ở Review Board.
5
+ > **Một câu.** Fan-out review PRD qua **3 lăng kính DEV / SA / PO**, chạy **vòng lặp completeness-critic** để hội tụ đầy đủ trong một lần, rồi sinh file findings cho PO accept/reject ở Review Board.
6
6
 
7
7
  ---
8
8
 
@@ -33,10 +33,9 @@ Một lượt review đơn không bao giờ liệt kê hết vấn đề — mod
33
33
  Chạy qua step **review-fanout** với tham số `GRANULARITY = per-uc`:
34
34
 
35
35
  ### Phase 1 — Fan-out song song theo dimension
36
- - **DIMENSIONS = 4 lăng kính** (mỗi lăng kính một sub-agent, context window mới, quét toàn PRD chỉ qua lăng kính đó):
36
+ - **DIMENSIONS = 3 lăng kính** (mỗi lăng kính một sub-agent, context window mới, quét toàn PRD chỉ qua lăng kính đó):
37
37
  | Lăng kính | Soi gì |
38
38
  |-----------|--------|
39
- | **QA** (tầng nghiệm thu) *(bật 2026-08-25)* | AC có nêu **outcome quan sát/kiểm được** chưa? AC có lặp nội dung BR (trùng tầng) không? — hỏi về **HÌNH THỨC**, KHÔNG về nội dung thiếu |
40
39
  | **DEV** (cơ chế nghiệp vụ) | BR + Business Logic đã đủ & không mơ hồ để build không phải đoán chưa? Nhánh nghiệp vụ thiếu, điều kiện biên, đường lỗi bỏ ngỏ |
41
40
  | **SA** (thông suốt & nhất quán) | Luồng nghiệp vụ thông suốt trên cả feature/domain? Tương tác UC, quan hệ entity, vòng đời trạng thái, ai-làm-gì |
42
41
  | **PO** | Scope khoanh vùng? Priority? Success metric? Rủi ro scope creep? |
@@ -67,8 +66,7 @@ Chạy qua step **review-fanout** với tham số `GRANULARITY = per-uc`:
67
66
 
68
67
  ## Cơ chế đặc biệt
69
68
 
70
- - **Lăng kính QA hẹp chủ ý** hỏi *"phát biểu này kiểm chứng được không?"*, KHÔNG hỏi *"còn thiếu gì?"*. Ở thời điểm PRD chỉ có PRD (design-spec/BDD/tech-doc chưa tồn tại), nên không phân biệt được *"PRD thiếu X"* với *"PRD để X cho design-spec"*. Câu hỏi nội dung thuộc `/qc-analyze`. Số liệu: review chỉ-PRD ra ~14 gap, review đủ 4 nguồn ra ~9,4 — chênh lệch là câu tài liệu sau trả lời hộ.
71
- - **Không có `--fix` mode** (khác `/review-context`) — finding 4 lăng kính là phán đoán QA/DEV/SA/PO, **bắt buộc qua người** ở Board; `auto_fixable` chỉ là gợi ý quick-accept.
69
+ - **Không `--fix` mode** (khác `/review-context`)finding 3 lăng kính phán đoán DEV/SA/PO, **bắt buộc qua người** Board; `auto_fixable` chỉ gợi ý quick-accept.
72
70
  - **`resolution_edge_cases`** — phân tích bậc-hai (chỉ critical/major): "nếu chốt phương án này thì đẻ ra edge case gì?" → PO thấy trước khi accept (advisory, không chặn).
73
71
  - **QA lens đang DISABLED** (comment trong file) — có hướng dẫn bật lại nếu cần.
74
72
 
@@ -76,10 +74,10 @@ Chạy qua step **review-fanout** với tham số `GRANULARITY = per-uc`:
76
74
 
77
75
  ## 👓 Góc nhìn tối ưu
78
76
 
79
- - **Đây là command tốn agent/token nhất phía thượng nguồn** — `per-uc` × 4 lăng kính × (UC+1) + tới 3 vòng critic. `AGENT_CAP=12` là núm chỉnh chính. Với PRD lớn, đây là điểm cần cân đối chi phí ↔ độ đầy đủ.
77
+ - **Đây là command tốn agent/token nhất phía thượng nguồn** — `per-uc` × 3 lăng kính × (UC+1) + tới 3 vòng critic. `AGENT_CAP=12` là núm chỉnh chính. Với PRD lớn, đây là điểm cần cân đối chi phí ↔ độ đầy đủ.
80
78
  - **Completeness-critic tới 3 vòng** — điểm đáng đo: thực tế hội tụ ở vòng mấy? Nếu thường 1–2 vòng thì cap 3 hợp lý.
81
79
  - **Full/delta logic phức tạp** (`applied_to_version` tracking) — mạnh nhưng nhiều nhánh; dễ rơi về FULL khi có actor khác sửa PRD (vd `/review-context` xen giữa).
82
- - **Ranh giới với `/review-context`** — cả hai đều review PRD, dùng chung review-fanout. `/refine-prd` = phán đoán chất lượng nghiệp vụ (4 lăng kính); `/review-context` = check có mã P0–P5 + auto-fix. Chồng lấn có chủ đích hay có thể gộp?
80
+ - **Ranh giới với `/review-context`** — cả hai đều review PRD, dùng chung review-fanout. `/refine-prd` = phán đoán chất lượng nghiệp vụ (3 lăng kính); `/review-context` = check có mã P0–P5 + auto-fix. Chồng lấn có chủ đích hay có thể gộp?
83
81
 
84
82
  ---
85
83
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # 15 · `/qc-analyze` — Trạm 1: Phân rã yêu cầu + gap tài liệu
4
4
 
5
- > **Một câu.** Trạm đầu của dây chuyền QC: phân rã yêu cầu từ spec, map trace, và ghi **DOC_GAP** (chỗ tài liệu thiếu để test được). Markdown-first, chưa có script.
5
+ > **Một câu.** Trạm đầu của dây chuyền QC: phân rã yêu cầu từ spec, map trace, và ghi **DOC_GAPS** (chỗ tài liệu thiếu để test được). Markdown-first, chưa có script.
6
6
 
7
7
  > 🏭 **Dây chuyền QC 6 trạm** dùng module `qc-playwright` và **QC skill** nạp từ `paths.qc_skills_dir` — mặc định bundled `.agent/skills/qc`, **override sang repo riêng của team QC** để nâng cấp framework không ghi đè (QC skill tiến hoá độc lập).
8
8
 
@@ -26,7 +26,7 @@ QC chính thức cần hiểu yêu cầu **testable** trước khi viết test.
26
26
 
27
27
  **Input:** UC-ID + spec (PRD/BDD từ spec repo) + skill `qa-analyst`.
28
28
 
29
- **Output (per UC):** `{qc_dir}/{UC-ID}/{platform}/REQUIREMENT_ANALYSIS.md` + `DOC_GAP.md`.
29
+ **Output (per UC):** `{qc_dir}/{UC-ID}/{platform}/REQUIREMENT_ANALYSIS.md` + `DOC_GAPS.md`.
30
30
 
31
31
  ---
32
32
 
@@ -36,17 +36,14 @@ QC chính thức cần hiểu yêu cầu **testable** trước khi viết test.
36
36
  2. **Platform Resolution** — chốt 1 platform cho toàn QC pass (sổ trace ghi `qc_status` sẽ là `{UC-ID}-{platform}.tsv`).
37
37
  3. **Role qa-analyst** — nạp skill `{qc_skills_dir}/qa-analyst/`.
38
38
  4. **Trace mapping (bắt buộc)** — map yêu cầu ↔ scenario ↔ SC.
39
- 5. **DOC_GAP (bắt buộc)** — ghi chỗ tài liệu thiếu/mơ hồ chặn test (blocker 🔴 xử trước ở `/qc-plan`).
40
- 6. **Output** REQUIREMENT_ANALYSIS.md + DOC_GAP.md.
39
+ 5. **DOC_GAPS (bắt buộc)** — ghi chỗ tài liệu thiếu/mơ hồ chặn test (blocker 🔴 xử trước ở `/qc-plan`).
40
+ 6. **Output** REQUIREMENT_ANALYSIS.md + DOC_GAPS.md.
41
41
 
42
42
  ---
43
43
 
44
44
  ## Checkpoint & Gate
45
45
 
46
- - **CHECKPOINT: chặn thường** — lệnh ghi 2 file artifact. `--yes` bỏ qua được.
47
- - Guard mềm (BDD approved) — cảnh báo, không chặn cứng; `--yes` coi như Y nhưng **vẫn in cảnh báo**.
48
- - **Platform Resolution chạy TRƯỚC Guard** (sửa 2026-08-25): UC đa nền có nhiều `.feature`, mỗi bản
49
- mang `@trace.status` riêng — kiểm duyệt trước khi biết platform là kiểm nhầm bản.
46
+ - Guard mềm (BDD approved). Không gate chặn.
50
47
 
51
48
  ---
52
49
 
@@ -54,13 +51,13 @@ QC chính thức cần hiểu yêu cầu **testable** trước khi viết test.
54
51
 
55
52
  - **QC skill từ repo riêng** (`qc_skills_dir`) — QC team sở hữu, không bị framework upgrade ghi đè.
56
53
  - **Platform khoá một lần** cho cả pass → nhất quán sổ trace.
57
- - **DOC_GAP** — kênh QC phản hồi ngược chất lượng tài liệu (song song `/report-bug`).
54
+ - **DOC_GAPS** — kênh QC phản hồi ngược chất lượng tài liệu (song song `/report-bug`).
58
55
 
59
56
  ---
60
57
 
61
58
  ## 👓 Góc nhìn tối ưu
62
59
 
63
- - **DOC_GAP trùng vai với review-context B-check?** — cả hai bắt gap tài liệu, nhưng QC nhìn từ góc "test được không". Đáng xem có nối được feedback này về spec.
60
+ - **DOC_GAPS trùng vai với review-context B-check?** — cả hai bắt gap tài liệu, nhưng QC nhìn từ góc "test được không". Đáng xem có nối được feedback này về spec.
64
61
  - **Platform một pass** — feature multi-platform phải chạy QC pass nhiều lần. Chi phí lặp phân tích.
65
62
  - **Phụ thuộc QC skill ngoài** — nếu `qc_skills_dir` trỏ sai/thiếu, trạm hụt logic.
66
63
 
@@ -15,7 +15,7 @@ Không phải mọi scenario rủi ro ngang nhau. Trạm này xếp ưu tiên te
15
15
  ## Vị trí & tiền đề
16
16
 
17
17
  - **Vị trí:** Phase QC (trạm 2), sau `/qc-analyze`.
18
- - **Tiền đề:** REQUIREMENT_ANALYSIS.md + DOC_GAP.md; nên xử blocker 🔴 trước.
18
+ - **Tiền đề:** REQUIREMENT_ANALYSIS.md + DOC_GAPS.md; nên xử blocker 🔴 trước.
19
19
 
20
20
  ---
21
21
 
@@ -52,7 +52,7 @@ Không phải mọi scenario rủi ro ngang nhau. Trạm này xếp ưu tiên te
52
52
  ## 👓 Góc nhìn tối ưu
53
53
 
54
54
  - **Trạm mỏng nhất** (~thin orchestrator + skill). Giá trị phụ thuộc chất lượng skill qa-planner.
55
- - **Câu hỏi cho dev** không có cơ chế theo dõi trả lời — dễ rơi. Cân nhắc gắn vào DOC_GAP/feedback.
55
+ - **Câu hỏi cho dev** không có cơ chế theo dõi trả lời — dễ rơi. Cân nhắc gắn vào DOC_GAPS/feedback.
56
56
 
57
57
  ---
58
58
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@educa-corp/sdd-framework",
3
- "version": "0.8.1",
3
+ "version": "0.9.1",
4
4
  "description": "Spec Driven Development workflow framework for Claude Code",
5
5
  "bin": {
6
6
  "sdd-framework": "./bin/index.js"
@@ -21,7 +21,8 @@
21
21
  "bin/",
22
22
  "core/",
23
23
  "scripts/",
24
- "docs/"
24
+ "docs/",
25
+ "!docs/update-framework-daily-logs.md"
25
26
  ],
26
27
  "keywords": [
27
28
  "claude-code",