@educa-corp/sdd-framework 0.4.2 → 0.5.0

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 (116) hide show
  1. package/bin/self-check.js +124 -6
  2. package/bin/trace-schema.json +1199 -692
  3. package/commands/debug.md +3 -2
  4. package/commands/define-product.md +3 -2
  5. package/commands/dev-gen-test.md +37 -9
  6. package/commands/dev-run-test.md +37 -9
  7. package/commands/dev-smoke-test.md +3 -2
  8. package/commands/extend-prd.md +907 -0
  9. package/commands/extend-prd.tmpl +270 -0
  10. package/commands/fix-bug.md +37 -9
  11. package/commands/generate-architecture.md +3 -2
  12. package/commands/generate-bdd.md +56 -13
  13. package/commands/generate-bdd.tmpl +18 -3
  14. package/commands/generate-code.md +73 -16
  15. package/commands/generate-code.tmpl +36 -7
  16. package/commands/generate-design-spec.md +3 -2
  17. package/commands/generate-prd.md +28 -2
  18. package/commands/generate-prd.tmpl +25 -0
  19. package/commands/generate-spec-manifest.md +3 -2
  20. package/commands/generate-tech-docs.md +3 -2
  21. package/commands/learn.md +3 -2
  22. package/commands/map-testids.md +3 -2
  23. package/commands/propose-scenario.md +55 -3
  24. package/commands/propose-scenario.tmpl +52 -1
  25. package/commands/qc-analyze.md +3 -2
  26. package/commands/qc-design-test.md +4 -2
  27. package/commands/qc-design-test.tmpl +1 -0
  28. package/commands/qc-plan.md +3 -2
  29. package/commands/qc-report.md +3 -2
  30. package/commands/qc-review.md +3 -2
  31. package/commands/qc-run-test.md +50 -10
  32. package/commands/qc-run-test.tmpl +13 -1
  33. package/commands/refine-prd.md +3 -2
  34. package/commands/report-bug.md +3 -2
  35. package/commands/review-code.md +7 -5
  36. package/commands/review-code.tmpl +4 -3
  37. package/commands/review-context.md +6 -4
  38. package/commands/review-context.tmpl +3 -2
  39. package/commands/review-tech-docs.md +3 -2
  40. package/commands/setup-ai-first.md +3 -2
  41. package/commands/sync.md +40 -16
  42. package/commands/sync.tmpl +37 -14
  43. package/commands/update-framework.md +3 -2
  44. package/commands/validate-traces.md +318 -33
  45. package/commands/validate-traces.tmpl +315 -31
  46. package/core/FRAMEWORK_VERSION +1 -1
  47. package/core/commands/debug.md +3 -2
  48. package/core/commands/define-product.md +3 -2
  49. package/core/commands/dev-gen-test.md +37 -9
  50. package/core/commands/dev-run-test.md +37 -9
  51. package/core/commands/dev-smoke-test.md +3 -2
  52. package/core/commands/extend-prd.md +907 -0
  53. package/core/commands/fix-bug.md +37 -9
  54. package/core/commands/generate-architecture.md +3 -2
  55. package/core/commands/generate-bdd.md +56 -13
  56. package/core/commands/generate-code.md +73 -16
  57. package/core/commands/generate-design-spec.md +3 -2
  58. package/core/commands/generate-prd.md +28 -2
  59. package/core/commands/generate-spec-manifest.md +3 -2
  60. package/core/commands/generate-tech-docs.md +3 -2
  61. package/core/commands/learn.md +3 -2
  62. package/core/commands/map-testids.md +3 -2
  63. package/core/commands/propose-scenario.md +55 -3
  64. package/core/commands/qc-analyze.md +3 -2
  65. package/core/commands/qc-design-test.md +4 -2
  66. package/core/commands/qc-plan.md +3 -2
  67. package/core/commands/qc-report.md +3 -2
  68. package/core/commands/qc-review.md +3 -2
  69. package/core/commands/qc-run-test.md +50 -10
  70. package/core/commands/refine-prd.md +3 -2
  71. package/core/commands/report-bug.md +3 -2
  72. package/core/commands/review-code.md +7 -5
  73. package/core/commands/review-context.md +6 -4
  74. package/core/commands/review-tech-docs.md +3 -2
  75. package/core/commands/setup-ai-first.md +3 -2
  76. package/core/commands/sync.md +40 -16
  77. package/core/commands/update-framework.md +3 -2
  78. package/core/commands/validate-traces.md +318 -33
  79. package/core/rules/workflow.md +18 -0
  80. package/core/steps/report-footer.md +3 -2
  81. package/core/steps/trace-mirror.md +34 -7
  82. package/core/templates/feature.template +1 -1
  83. package/docs/01-getting-started/installation.md +18 -1
  84. package/docs/01-getting-started/what-is-sdd.md +4 -2
  85. package/docs/02-concepts/architecture.md +27 -3
  86. package/docs/02-concepts/pipeline-steps/02-specification.md +39 -3
  87. package/docs/02-concepts/pipeline-steps/04-bdd.md +24 -2
  88. package/docs/02-concepts/pipeline-steps/05-tech-docs.md +18 -1
  89. package/docs/02-concepts/pipeline-steps/06-code.md +35 -4
  90. package/docs/02-concepts/pipeline-steps/09-validate-traces.md +137 -12
  91. package/docs/02-concepts/pipeline-steps/10-feedback-loop.md +59 -3
  92. package/docs/02-concepts/roles-and-hitl.md +1 -1
  93. package/docs/02-concepts/traceability.md +126 -117
  94. package/docs/03-guides/developer.md +20 -4
  95. package/docs/03-guides/product-owner.md +72 -68
  96. package/docs/03-guides/tester-qa.md +81 -70
  97. package/docs/04-reference/commands.md +134 -105
  98. package/docs/04-reference/configuration.md +146 -94
  99. package/docs/04-reference/trace-schema.md +26 -9
  100. package/docs/explain/02-generate-prd.md +80 -78
  101. package/docs/explain/02b-extend-prd.md +125 -0
  102. package/docs/explain/03-refine-prd.md +86 -86
  103. package/docs/explain/04-review-context.md +18 -1
  104. package/docs/explain/06-generate-bdd.md +23 -0
  105. package/docs/explain/08-review-tech-docs.md +20 -5
  106. package/docs/explain/10-review-code.md +36 -2
  107. package/docs/explain/19-qc-run-test.md +87 -67
  108. package/docs/explain/21-validate-traces.md +74 -68
  109. package/docs/explain/23-fix-bug.md +19 -3
  110. package/docs/explain/26-propose-scenario.md +70 -63
  111. package/docs/explain/README.md +135 -134
  112. package/package.json +50 -50
  113. package/rules/workflow.md +18 -0
  114. package/steps/report-footer.md +3 -2
  115. package/steps/trace-mirror.md +34 -7
  116. package/templates/feature.template +1 -1
@@ -1,68 +1,74 @@
1
- [← /qc-report](20-qc-report.md) · [Explain Home](README.md) · [Next: /generate-spec-manifest →](22-generate-spec-manifest.md)
2
-
3
- # 21 · `/validate-traces` — Ma trận độ phủ spec ↔ code ↔ test
4
-
5
- > **Một câu.** Check **read-only** độ phủ giữa spec, code, test (gồm PRD version drift); phân loại mỗi SC và làm mới Living Docs. Không sửa gì.
6
-
7
- ---
8
-
9
- ## Vấn đề giải quyết
10
-
11
- Traceability chỉ có giá trị khi kiểm được. Command cho bức tranh toàn cục: SC nào có code, có test, hay còn hở — để không "tưởng xong mà chưa xong".
12
-
13
- ---
14
-
15
- ## Vị trí & tiền đề
16
-
17
- - **Vị trí:** Phase Trace Audit (xuyên suốt).
18
- - **Đặc biệt:** read-only — an toàn chạy bất kỳ lúc nào.
19
-
20
- ---
21
-
22
- ## Input / Output
23
-
24
- **Input:** `.trace/…/{UC-ID}-{platform}.tsv` + spec + code + test.
25
-
26
- **Output:** ma trận coverage + `code_coverage`; làm mới Living Docs dashboard.
27
-
28
- ---
29
-
30
- ## Các bước xử lý (chi tiết)
31
-
32
- 1. Quét trace `.tsv` + đối chiếu spec/code/test.
33
- 2. Phân loại mỗi SC theo **thứ tự ưu tiên** (rule sớm thắng):
34
- | # | Trạng thái | Điều kiện |
35
- |---|-----------|-----------|
36
- | 1 | UNTRACKED | `gen_ver == —` |
37
- | 2 | DRIFT | có code + `spec_ver != gen_ver` |
38
- | 3 | GAP | có code + `test_count == —/0` |
39
- | 4 | OK | version khớp + có code + test |
40
- 3. Dựng dashboard: `dev_selftest` (DEV smoke) **và** `qc_status` (QC chính thức) hiển thị cạnh nhau — **không merge**; cột `qc_owner` + `qc_blocked_by` ("Waiting on").
41
-
42
- ---
43
-
44
- ## Checkpoint & Gate
45
-
46
- - Read-only, không gate.
47
-
48
- ---
49
-
50
- ## chế đặc biệt
51
-
52
- - **DRIFT xét trước GAP** — code lỗi thời chưa test phải hiện DRIFT (regen) không phải GAP.
53
- - **`dev_selftest` ≠ `qc_status`** — hai cột riêng, không trộn.
54
- - **"Waiting on" column** — `qc_owner`/`qc_blocked_by` trả lời "case nào chờ ai".
55
-
56
- ---
57
-
58
- ## 👓 Góc nhìn tối ưu
59
-
60
- - **Chỉ báo cáo, không hành động** — hành động ở `/generate-code` (regen DRIFT) & QC (bù GAP). Chuỗi phụ thuộc người chạy tiếp.
61
- - **Nguồn sự thật của Living Docs** — chất lượng dashboard phụ thuộc `.tsv` được các lệnh code/test ghi đúng.
62
- - **Là "single pane" để PM/PO nhìn trạng thái** — ứng viên tốt cho UI viewer (blueprint có gợi ý).
63
-
64
- ---
65
-
66
- ## Kết nối
67
-
68
- **Trước:** bất kỳ (đặc biệt sau [`/qc-report`](20-qc-report.md)) · **Sau:** DRIFT/UNTRACKED [`/generate-code`](09-generate-code.md); GAP [`/dev-gen-test`](12-dev-gen-test.md); OK PR.
1
+ [← /qc-report](20-qc-report.md) · [Explain Home](README.md) · [Next: /generate-spec-manifest →](22-generate-spec-manifest.md)
2
+
3
+ # 21 · `/validate-traces` — Ma trận độ phủ spec ↔ code ↔ test
4
+
5
+ > **Một câu.** Check **read-only** độ phủ giữa spec, code, test (gồm PRD version drift); phân loại mỗi SC và làm mới Living Docs. Không sửa gì.
6
+
7
+ ---
8
+
9
+ ## Vấn đề giải quyết
10
+
11
+ Traceability chỉ có giá trị khi kiểm được. Command cho bức tranh toàn cục: SC nào có code, có test, hay còn hở — để không "tưởng xong mà chưa xong".
12
+
13
+ ---
14
+
15
+ ## Vị trí & tiền đề
16
+
17
+ - **Vị trí:** Phase Trace Audit (xuyên suốt).
18
+ - **Đặc biệt:** read-only — an toàn chạy bất kỳ lúc nào.
19
+
20
+ ---
21
+
22
+ ## Input / Output
23
+
24
+ **Input:** `.trace/…/{UC-ID}-{platform}.tsv` + spec + code + test.
25
+
26
+ **Output:** ma trận coverage + `code_coverage`; `trace-report.json` (ghi đè) + **`trace-history.jsonl`** (append 1 dòng delta — **phải commit**, không regenerate được); làm mới Living Docs dashboard.
27
+
28
+ **Flag:** `--realign-prd-version {UC-ID}` · `--realign-techdoc-revision {UC-ID}` — ngoại lệ có kiểm soát của "read-only": chỉ sửa **dòng `@trace.*`** trong code, **từ chối chạy** nếu UC đang `DRIFT`/`ORPHANED`.
29
+
30
+ ---
31
+
32
+ ## Các bước xử (chi tiết)
33
+
34
+ 1. Quét trace `.tsv` + đối chiếu spec/code/test.
35
+ 2. Phân loại mỗi SC theo **thứ tự ưu tiên** (rule sớm thắng):
36
+ | # | Trạng thái | Điều kiện |
37
+ |---|-----------|-----------|
38
+ | 1 | UNTRACKED | `gen_ver == —` |
39
+ | 2 | DRIFT | có code + `spec_ver != gen_ver` |
40
+ | 3 | GAP | code + `test_count == —/0` |
41
+ | 4 | OK | version khớp + có code + có test |
42
+ 3. Dựng dashboard: `dev_selftest` (DEV smoke) **và** `qc_status` (QC chính thức) hiển thị cạnh nhau — **không merge**; cột `qc_owner` + `qc_blocked_by` ("Waiting on"); map **`by_service`** (coverage theo từng đội — cột `service`).
43
+ 4. **Lọc báo động oan (Step 4/5).** PRD và tech-doc là tài liệu **gộp** nhiều UC nhưng chỉ **một** số version — thêm UC7 làm mọi UC cũ lệch số dù không đổi một chữ. Đọc **scope của row changelog**: UC có trong danh sách → `PRD_DRIFT` 🟠 · không có → `PRD_STALE_REF` ⓘ (sạch bằng `--realign-*`) · row **mơ hồ** → 🟠 cho mọi UC (lưới an toàn).
44
+ 5. **Step 5d — design-spec drift** *(chỉ FE/App)*: 2 chiều, design-spec→BDD và design-spec→code.
45
+ 6. **Step 7b — hàng đợi**: đếm PRD change request còn `Open` kèm **số ngày chờ** (hàng đợi duy nhất không có lệnh nào quét lại mỗi lần chạy).
46
+ 7. **Step 8c — nhật ký**: append delta vào `trace-history.jsonl` → in khối `📈 So lần chạy trước` (đo **tốc độ**, không chỉ trạng thái).
47
+
48
+ ---
49
+
50
+ ## Checkpoint & Gate
51
+
52
+ - Read-only, không gate.
53
+
54
+ ---
55
+
56
+ ## Cơ chế đặc biệt
57
+
58
+ - **DRIFT xét trước GAP** — code lỗi thời chưa test phải hiện DRIFT (regen) không phải GAP.
59
+ - **`dev_selftest` ≠ `qc_status`** — hai cột riêng, không trộn.
60
+ - **"Waiting on" column** — `qc_owner`/`qc_blocked_by` trả lời "case nào chờ ai".
61
+
62
+ ---
63
+
64
+ ## 👓 Góc nhìn tối ưu
65
+
66
+ - **Chỉ báo cáo, không hành động** — hành động ở `/generate-code` (regen DRIFT) & QC (bù GAP). Chuỗi phụ thuộc người chạy tiếp.
67
+ - **Nguồn sự thật của Living Docs** — chất lượng dashboard phụ thuộc `.tsv` được các lệnh code/test ghi đúng.
68
+ - ** "single pane" để PM/PO nhìn trạng thái** ứng viên tốt cho UI viewer (blueprint gợi ý).
69
+
70
+ ---
71
+
72
+ ## Kết nối
73
+
74
+ **Trước:** bất kỳ (đặc biệt sau [`/qc-report`](20-qc-report.md)) · **Sau:** DRIFT/UNTRACKED → [`/generate-code`](09-generate-code.md); GAP → [`/dev-gen-test`](12-dev-gen-test.md); OK → PR.
@@ -33,9 +33,25 @@ Sửa bug ad-hoc dễ tái phát và mất truy vết. Command áp một quy tr
33
33
  2. **Phase 2 · Root Cause Analysis** — truy nguyên nhân gốc (không vá triệu chứng).
34
34
  3. **Phase 3 · Fix** — sửa; tag `@trace.fixes` / `@trace.root_cause` / `@trace.regression`.
35
35
  4. **Phase 4 · Regression Test** — thêm test tái hiện bug để chống tái phát.
36
- 5. **Phase 5 · Build & Commit** — build verify; umbrella **push 2 tầng** (Tầng 1: fix branch trong service submodule nơi code sống; Tầng 2: umbrella pointer).
37
- 6. **Phase 5.5 · Đóng bug report** — nếu fix một `{BUG-ID}` đã file cập nhật trạng thái.
38
- 7. **Phase 6 · Đề xuất Lesson** — nếu lỗi tái diễn `capture-lesson` (L1–L5).
36
+ 5. **Phase 4.5 · Cập nhật sổ trace** — regression test phải hiện lên coverage (xem dưới).
37
+ 6. **Phase 5 · Build & Commit** — build verify; umbrella **push 2 tầng** (Tầng 1: fix branch trong service submodule nơi code sống; Tầng 2: umbrella pointer).
38
+ 7. **Phase 5.5 · Đặt `🟡 Fixed`** — nếu fix một `{BUG-ID}` đã file. **Không** đặt `Closed` — bước đó thuộc `/qc-run-test`.
39
+ 8. **Phase 6 · Đề xuất Lesson** — nếu lỗi tái diễn → `capture-lesson` (L1–L5).
40
+
41
+ ### Phase 4.5 — vì sao `/fix-bug` phải ghi sổ trace
42
+
43
+ Đây từng là lệnh **duy nhất** sinh test mà không ghi `.tsv`. Hệ quả: `test_count` under-report vĩnh viễn → SC đứng `GAP` dù vừa có regression test → `/validate-traces` khuyên `/dev-gen-test` → dev sinh test **trùng**. Và `dev_selftest` giữ `pass` **cũ trên code đã đổi**.
44
+
45
+ | Cột | Ghi gì |
46
+ |---|---|
47
+ | `test_count` | **+=** số test regression (cộng dồn, không ghi đè) |
48
+ | `test_classes` | **append** tên class mới, giữ tên cũ |
49
+ | `dev_selftest` → `not_run` · `dev_selftest_at` → `—` | code vừa đổi nên tín hiệu self-test cũ hết hiệu lực |
50
+ | `last_updated` | hôm nay |
51
+
52
+ **Hai nhóm cột cấm đụng:** `qc_*` (QC sở hữu — `/qc-run-test` flip khi re-verify **và** chính nó đóng bug) · `spec_ver`/`gen_ver` (**fix bug không đổi spec** — đụng vào là tạo `DRIFT` giả).
53
+
54
+ Vì `dev_selftest` bị reset, Next của lệnh là **`/dev-run-test`** để lấy lại tín hiệu xanh, rồi mới tạo PR.
39
55
 
40
56
  ---
41
57
 
@@ -1,63 +1,70 @@
1
- [← /report-bug](25-report-bug.md) · [Explain Home](README.md) · [Next: /learn →](27-learn.md)
2
-
3
- # 26 · `/propose-scenario` — Đề xuất BDD scenario mới (cho Tester & QC)
4
-
5
- > **Một câu.** Tester đề xuất một scenario còn thiếu; command quyết đây là **scenario mới** (draft) hay **thay đổi PRD** (change request), rồi ghi proposal để PO/Dev duyệt.
6
-
7
- ---
8
-
9
- ## Vấn đề giải quyết
10
-
11
- Tester thấy coverage thủng nhưng không được sửa spec trực tiếp. Command cho họ kênh **đề xuất có hồ sơ**: nếu là scenario mới trong scope → draft; nếu chạm yêu cầu nghiệp vụ → PRD change request.
12
-
13
- ---
14
-
15
- ## Vị trí & tiền đề
16
-
17
- - **Vị trí:** xuyên suốt (kênh feedback tester/QC).
18
-
19
- ---
20
-
21
- ## Input / Output
22
-
23
- **Input:** UC + platform + mô tả scenario thiếu.
24
-
25
- **Output:** `{bdd_proposals_dir}/…` (Case A: scenario draft) hoặc PRD change request (Case B).
26
-
27
- ---
28
-
29
- ## Các bước xử lý (chi tiết)
30
-
31
- 1. **Step 1 · Phân giải UC + Platform.**
32
- 2. **Step 2 · Quyết định Coverage (CRITICAL)** — phân loại:
33
- - **Case A** — scenario mới **trong scope** UC hiện tại → draft scenario.
34
- - **Case B** — đòi hỏi **thay đổi yêu cầu nghiệp vụ** → **PRD Change Request** (không tự draft, đẩy về PO).
35
- 3. **Step 3 · Draft Scenario** (chỉ Case A) — viết Gherkin đề xuất.
36
- 4. **Step 4 · Ghi Proposal.**
37
- 5. **Step 5 · Handoff** — để PO/Dev thấy; `/generate-bdd` có thể incorporate proposal `accepted`.
38
-
39
- ---
40
-
41
- ## Checkpoint & Gate
42
-
43
- - Không gate — đề xuất, PO/Dev quyết.
44
-
45
- ---
46
-
47
- ## Cơ chế đặc biệt
48
-
49
- - **Phân biệt scenario-gap vs PRD-change** — giữ ranh giới ai được đổi gì (tester không tự đổi yêu cầu nghiệp vụ).
50
- - **Proposal `accepted` chảy ngược vào `/generate-bdd`** — khép vòng.
51
-
52
- ---
53
-
54
- ## 👓 Góc nhìn tối ưu
55
-
56
- - **Quyết định Case A/B là điểm phán đoán** — sai hướng thì hoặc phình scope BDD hoặc bỏ sót đổi PRD. Tiêu chí rõ quan trọng.
57
- - **Nối với `/generate-bdd` incorporate** phụ thuộc trạng thái `accepted` được cập nhật — quy trình duyệt cần rõ.
58
-
59
- ---
60
-
61
- ## Kết nối
62
-
63
- **Trước:** tester thấy coverage thiếu · **Sau:** PO/Dev review proposal; Case A accepted → [`/generate-bdd`](06-generate-bdd.md); Case B → [`/refine-prd`](03-refine-prd.md)/PRD.
1
+ [← /report-bug](25-report-bug.md) · [Explain Home](README.md) · [Next: /learn →](27-learn.md)
2
+
3
+ # 26 · `/propose-scenario` — Đề xuất BDD scenario mới (cho Tester & QC)
4
+
5
+ > **Một câu.** Tester đề xuất một scenario còn thiếu; command quyết đây là **scenario mới** (draft) hay **thay đổi PRD** (change request), rồi ghi proposal để PO/Dev duyệt.
6
+
7
+ ---
8
+
9
+ ## Vấn đề giải quyết
10
+
11
+ Tester thấy coverage thủng nhưng không được sửa spec trực tiếp. Command cho họ kênh **đề xuất có hồ sơ**: nếu là scenario mới trong scope → draft; nếu chạm yêu cầu nghiệp vụ → PRD change request.
12
+
13
+ ---
14
+
15
+ ## Vị trí & tiền đề
16
+
17
+ - **Vị trí:** xuyên suốt (kênh feedback tester/QC).
18
+
19
+ ---
20
+
21
+ ## Input / Output
22
+
23
+ **Input:** UC + platform + mô tả scenario thiếu.
24
+
25
+ **Output:** `{bdd_proposals_dir}/…` (Case A: scenario draft) hoặc PRD change request (Case B).
26
+
27
+ ---
28
+
29
+ ## Các bước xử lý (chi tiết)
30
+
31
+ 1. **Step 1 · Phân giải UC + Platform.**
32
+ 2. **Step 2 · Quyết định Coverage (CRITICAL)** — phân loại:
33
+ - **Case A** — scenario mới **trong scope** UC hiện tại → draft scenario.
34
+ - **Case B** — đòi hỏi **thay đổi yêu cầu nghiệp vụ** → **PRD Change Request** (không tự draft, đẩy về PO).
35
+ 3. **Step 3 · Draft Scenario** (chỉ Case A) — viết Gherkin đề xuất.
36
+ 4. **Step 4 · Ghi Proposal.**
37
+ 5. **Step 5 · Handoff** — để PO/Dev thấy; `/generate-bdd` có thể incorporate proposal `accepted`.
38
+
39
+ ---
40
+
41
+ ## Checkpoint & Gate
42
+
43
+ - Không gate — đề xuất, PO/Dev quyết.
44
+
45
+ ---
46
+
47
+ ## Cơ chế đặc biệt
48
+
49
+ - **Phân biệt scenario-gap vs PRD-change** — giữ ranh giới ai được đổi gì (tester không tự đổi yêu cầu nghiệp vụ).
50
+ - **Proposal `accepted` chảy ngược vào `/generate-bdd`** — khép vòng.
51
+
52
+ ---
53
+
54
+ ## 👓 Góc nhìn tối ưu
55
+
56
+ - **Quyết định Case A/B là điểm phán đoán** — sai hướng thì hoặc phình scope BDD hoặc bỏ sót đổi PRD. Tiêu chí rõ quan trọng.
57
+ - **Nối với `/generate-bdd` incorporate** phụ thuộc trạng thái `accepted` được cập nhật — quy trình duyệt cần rõ.
58
+
59
+ ---
60
+
61
+ ## Kết nối
62
+
63
+ **Trước:** tester thấy coverage thiếu · **Sau:** PO/Dev review proposal.
64
+
65
+ | Case | Đi đâu | Ai lấy ra |
66
+ |---|---|---|
67
+ | **A** — thiếu scenario cho AC đã có | `feedback/bdd-proposals/` | [`/generate-bdd`](06-generate-bdd.md) quét thư mục **mỗi lần chạy**, chèn khi `Status: accepted` |
68
+ | **B** — requirement MỚI | `feedback/prd-change-requests/` | [`/extend-prd`](02b-extend-prd.md) — **không** phải `/refine-prd` (lệnh đó không thêm được AC mới) |
69
+
70
+ > Case B **không tự vào BDD được**: scenario chưa có AC để trace tới. Nó chỉ xuất hiện sau khi PO đưa requirement vào PRD rồi chạy lại `/generate-bdd`. Và vì chưa có AC, **không cờ trace nào bắt được** thiếu sót này — theo mọi thước đo coverage thì hành vi đó *không tồn tại*. Đó là lý do [`/validate-traces`](21-validate-traces.md) Step 7b phải đếm và nhắc lại kèm số ngày chờ.
@@ -1,134 +1,135 @@
1
- # 🔬 Explain — Giải phẫu từng command (Command Deep-Dive)
2
-
3
- > Tài liệu **đi sâu vào bên trong** từng command của pipeline, theo đúng thứ tự thực thi. Mục tiêu: làm **cơ sở review, phân tích và tối ưu** các bước trong pipeline.
4
- >
5
- > Khác với [Pipeline Steps](../02-concepts/pipeline-steps/) (tầng khái niệm, gom theo phase), thư mục này bám **logic thực tế trong command file** (`commands/*.md`) — từng bước command làm gì, giải quyết vấn đề gì, và **điểm nào đáng cân nhắc tối ưu**.
6
-
7
- ---
8
-
9
- ## Cách đọc (How to read)
10
-
11
- Mỗi trang command theo cùng một khuôn:
12
-
13
- | Mục | Nội dung |
14
- |-----|----------|
15
- | **Một câu** | Command làm gì |
16
- | **Vấn đề giải quyết** | Tại sao command này tồn tại |
17
- | **Vị trí & tiền đề** | Chạy sau gì, cần gì mở khoá |
18
- | **Input / Output** | Đầu vào & sản phẩm cụ thể |
19
- | **Các bước xử lý** | ⭐ Đi từng bước bên trong, dễ hiểu |
20
- | **Checkpoint & Gate** | Điểm dừng con người |
21
- | **Cơ chế đặc biệt** | Phần logic riêng đáng chú ý |
22
- | **👓 Góc nhìn tối ưu** | Điểm review/optimize: chi phí, rủi ro, phụ thuộc |
23
- | **Kết nối** | Bước trước ← → bước sau |
24
-
25
- ---
26
-
27
- ## ⭐ Bộ khung chung mọi command (Shared Skeleton)
28
-
29
- **Đọc phần này trước.** Mọi command file được build từ `.tmpl` + `{{include:steps/*.md}}`, nên đều có **cùng một bộ khung** bao quanh logic riêng. Hiểu bộ khung một lần → các trang command chỉ cần nói phần **riêng**.
30
-
31
- Cấu trúc một command file:
32
-
33
- ```
34
- ┌─ Gate (steps/gate) ──────────── chung, giống hệt mọi lệnh
35
- ├─ Context Loader (steps/context-loader) ── chung, 7 bước
36
- ├─ Business Language Guard (steps/business-language) ── chung, chỉ lệnh viết doc nghiệp vụ
37
- ├─ ★ LOGIC RIÊNG CỦA LỆNH ★ ──── phần mỗi trang explain tập trung
38
- └─ Report Footer (steps/report-footer) ── chung
39
- ```
40
-
41
- ### 1 · Gate — Cổng vào chuẩn (5 bước con)
42
-
43
- Chạy **trước** mọi logic riêng:
44
-
45
- | Bước | Tên | Việc | Ý nghĩa tối ưu |
46
- |------|-----|------|----------------|
47
- | 0 | **Sub-agent mode** | Nếu `$ARGUMENTS` là JSON có `_agent_mode` → bỏ Gate 1/2/3, chạy đúng phạm vi orchestrator giao (target_file, uc_id, uc_section, dimension) | Cơ chế fan-out per-UC dùng chính lệnh này làm "worker" |
48
- | 0-B | **Model check** | Khuyến nghị Opus. `Y`=tiếp · `S`=bỏ qua (⚠️ report) · khác=DỪNG | Checkpoint mềm; sub-agent bỏ qua (orchestrator đã check) |
49
- | 1 | **Target file** | Phân giải file mục tiêu từ path / UC-ID / ticket bằng glob theo bố cục feature-package; nhiều kết quả → hỏi | Điểm hay tốn 1 vòng hỏi khi `$ARGUMENTS` rỗng |
50
- | 2 | **Context loader** | Chạy 7 bước nạp context (mục 2 dưới) | Nơi quyết định "đúng-đủ-gọn" — trọng tâm tối ưu |
51
- | 3 | **CHECKPOINT** | Trình target + scope → chờ `Y` | Read-only command bỏ qua |
52
-
53
- ### 2 · Context Loader — "Thủ thư" (7 bước)
54
-
55
- Nạp context theo thứ tự chống Lost-in-the-Middle (đầu = "build gì", giữa = ràng buộc, cuối = "follow style này"):
56
-
57
- | Bước | Nạp gì | Ghi chú |
58
- |------|--------|---------|
59
- | 1 | **project-context.yaml** | tech_stack, conventions, domains, paths; trích `domain`/`prd_slug` từ path target |
60
- | 1.5 | **Service routing** (umbrella) | Khớp domain → service; dạng phẳng (2a) hay map-theo-platform (2b); override paths sang `spec_source` |
61
- | 1.6 | **Service conventions** (umbrella) | Nạp `build_command`/`test_command` riêng của service; set `service_root` |
62
- | 2 | **Module stack-profile** | `.agent/modules/{module}/stack-profile.yaml` — layer/test pattern |
63
- | 3 | **CLAUDE.md phân tầng** | root (BASE) + service overlay (stack) — **overlay thắng**; §2 layer/package, §3 naming, §5 error |
64
- | 4 | **data-protection** | Pattern file nhạy cảm — cấm truy cập cả phiên |
65
- | 5 | **Business dictionary** | Canonical + **banned terms** (thực thi chủ động) + enum registry |
66
- | 6 | **Core entities** | Entity catalog + field registry + relationship map |
67
- | 6.5 | **platform_type** | Suy `backend`/`web-frontend`/`mobile` từ module |
68
- | 6.7 | **Project lessons** | Guardrail từ `/learn` — ràng buộc cứng ngang coding standards |
69
- | 7 | **Recap** | In khối `[CTX LOADED]` — đẩy sự thật quan trọng lên cuối bộ nhớ |
70
-
71
- > 👓 **Đây là component quyết định 80% chất lượng.** Khi review tối ưu: chú ý `required` vs `optional`, filter theo domain, và budget context (~50% window).
72
-
73
- ### 3 · Business Language Guard (chỉ lệnh viết doc nghiệp vụ)
74
-
75
- Chặn thuật ngữ kỹ thuật rò vào PRD/BDD/product-definition. 4 nhóm xử lý: (1) tương tác/UI → diễn đạt lại nghiệp vụ · (2) visual thuần → chuyển Design Spec · (3) backend/contract → bỏ về Tech Docs · (4) ẩn dụ dữ liệu → xét ngữ cảnh (không thay máy móc). Áp cho `/define-product`, `/generate-prd`, `/refine-prd`, `/review-context`, `/generate-bdd`.
76
-
77
- ### 4 · Report Footer (mọi lệnh)
78
-
79
- Kết thúc bằng: **Status badge** (✅/❌/⚠️) · **Output Artifacts** (file tạo/sửa) · **Pipeline Position** (`◀ bạn ở đây`) · **Next command** (gợi ý lệnh kế + tham số).
80
-
81
- ---
82
-
83
- ## Danh sách command theo thứ tự pipeline (Pipeline Order)
84
-
85
- ### Phase Setup & Discovery
86
- - [00 · `/setup-ai-first`](00-setup-ai-first.md)
87
- - [00b · `/generate-architecture`](00b-generate-architecture.md)
88
- - [01 · `/define-product`](01-define-product.md)
89
-
90
- ### Phase Specification (PRD)
91
- - [02 · `/generate-prd`](02-generate-prd.md)
92
- - [03 · `/refine-prd`](03-refine-prd.md)
93
- - [04 · `/review-context`](04-review-context.md) *(dùng cho cả PRD & BDD)*
94
-
95
- ### Phase Design
96
- - [05 · `/generate-design-spec`](05-generate-design-spec.md)
97
- - [06 · `/generate-bdd`](06-generate-bdd.md)
98
- - [07 · `/generate-tech-docs`](07-generate-tech-docs.md)
99
- - [08 · `/review-tech-docs`](08-review-tech-docs.md)
100
-
101
- ### Phase Implementation
102
- - [09 · `/generate-code`](09-generate-code.md)
103
- - [10 · `/review-code`](10-review-code.md)
104
- - [11 · `/map-testids`](11-map-testids.md)
105
-
106
- ### Phase Dev Self-Test
107
- - [12 · `/dev-gen-test`](12-dev-gen-test.md)
108
- - [13 · `/dev-run-test`](13-dev-run-test.md)
109
- - [14 · `/dev-smoke-test`](14-dev-smoke-test.md)
110
-
111
- ### Phase QC Automation
112
- - [15 · `/qc-analyze`](15-qc-analyze.md)
113
- - [16 · `/qc-plan`](16-qc-plan.md)
114
- - [17 · `/qc-design-test`](17-qc-design-test.md)
115
- - [18 · `/qc-review`](18-qc-review.md)
116
- - [19 · `/qc-run-test`](19-qc-run-test.md)
117
- - [20 · `/qc-report`](20-qc-report.md)
118
-
119
- ### Phase Trace & Quality
120
- - [21 · `/validate-traces`](21-validate-traces.md)
121
- - [22 · `/generate-spec-manifest`](22-generate-spec-manifest.md)
122
-
123
- ### Lệnh xuyên suốt (Cross-cutting)
124
- - [23 · `/fix-bug`](23-fix-bug.md)
125
- - [24 · `/debug`](24-debug.md)
126
- - [25 · `/report-bug`](25-report-bug.md)
127
- - [26 · `/propose-scenario`](26-propose-scenario.md)
128
- - [27 · `/learn`](27-learn.md)
129
- - [28 · `/sync`](28-sync.md)
130
- - [29 · `/update-framework`](29-update-framework.md)
131
-
132
- ---
133
-
134
- *Nguồn: `commands/*.md` (build từ `.tmpl` + `steps/`). Khi command đổi, cập nhật trang tương ứng ở đây.*
1
+ # 🔬 Explain — Giải phẫu từng command (Command Deep-Dive)
2
+
3
+ > Tài liệu **đi sâu vào bên trong** từng command của pipeline, theo đúng thứ tự thực thi. Mục tiêu: làm **cơ sở review, phân tích và tối ưu** các bước trong pipeline.
4
+ >
5
+ > Khác với [Pipeline Steps](../02-concepts/pipeline-steps/) (tầng khái niệm, gom theo phase), thư mục này bám **logic thực tế trong command file** (`commands/*.md`) — từng bước command làm gì, giải quyết vấn đề gì, và **điểm nào đáng cân nhắc tối ưu**.
6
+
7
+ ---
8
+
9
+ ## Cách đọc (How to read)
10
+
11
+ Mỗi trang command theo cùng một khuôn:
12
+
13
+ | Mục | Nội dung |
14
+ |-----|----------|
15
+ | **Một câu** | Command làm gì |
16
+ | **Vấn đề giải quyết** | Tại sao command này tồn tại |
17
+ | **Vị trí & tiền đề** | Chạy sau gì, cần gì mở khoá |
18
+ | **Input / Output** | Đầu vào & sản phẩm cụ thể |
19
+ | **Các bước xử lý** | ⭐ Đi từng bước bên trong, dễ hiểu |
20
+ | **Checkpoint & Gate** | Điểm dừng con người |
21
+ | **Cơ chế đặc biệt** | Phần logic riêng đáng chú ý |
22
+ | **👓 Góc nhìn tối ưu** | Điểm review/optimize: chi phí, rủi ro, phụ thuộc |
23
+ | **Kết nối** | Bước trước ← → bước sau |
24
+
25
+ ---
26
+
27
+ ## ⭐ Bộ khung chung mọi command (Shared Skeleton)
28
+
29
+ **Đọc phần này trước.** Mọi command file được build từ `.tmpl` + `{{include:steps/*.md}}`, nên đều có **cùng một bộ khung** bao quanh logic riêng. Hiểu bộ khung một lần → các trang command chỉ cần nói phần **riêng**.
30
+
31
+ Cấu trúc một command file:
32
+
33
+ ```
34
+ ┌─ Gate (steps/gate) ──────────── chung, giống hệt mọi lệnh
35
+ ├─ Context Loader (steps/context-loader) ── chung, 7 bước
36
+ ├─ Business Language Guard (steps/business-language) ── chung, chỉ lệnh viết doc nghiệp vụ
37
+ ├─ ★ LOGIC RIÊNG CỦA LỆNH ★ ──── phần mỗi trang explain tập trung
38
+ └─ Report Footer (steps/report-footer) ── chung
39
+ ```
40
+
41
+ ### 1 · Gate — Cổng vào chuẩn (5 bước con)
42
+
43
+ Chạy **trước** mọi logic riêng:
44
+
45
+ | Bước | Tên | Việc | Ý nghĩa tối ưu |
46
+ |------|-----|------|----------------|
47
+ | 0 | **Sub-agent mode** | Nếu `$ARGUMENTS` là JSON có `_agent_mode` → bỏ Gate 1/2/3, chạy đúng phạm vi orchestrator giao (target_file, uc_id, uc_section, dimension) | Cơ chế fan-out per-UC dùng chính lệnh này làm "worker" |
48
+ | 0-B | **Model check** | Khuyến nghị Opus. `Y`=tiếp · `S`=bỏ qua (⚠️ report) · khác=DỪNG | Checkpoint mềm; sub-agent bỏ qua (orchestrator đã check) |
49
+ | 1 | **Target file** | Phân giải file mục tiêu từ path / UC-ID / ticket bằng glob theo bố cục feature-package; nhiều kết quả → hỏi | Điểm hay tốn 1 vòng hỏi khi `$ARGUMENTS` rỗng |
50
+ | 2 | **Context loader** | Chạy 7 bước nạp context (mục 2 dưới) | Nơi quyết định "đúng-đủ-gọn" — trọng tâm tối ưu |
51
+ | 3 | **CHECKPOINT** | Trình target + scope → chờ `Y` | Read-only command bỏ qua |
52
+
53
+ ### 2 · Context Loader — "Thủ thư" (7 bước)
54
+
55
+ Nạp context theo thứ tự chống Lost-in-the-Middle (đầu = "build gì", giữa = ràng buộc, cuối = "follow style này"):
56
+
57
+ | Bước | Nạp gì | Ghi chú |
58
+ |------|--------|---------|
59
+ | 1 | **project-context.yaml** | tech_stack, conventions, domains, paths; trích `domain`/`prd_slug` từ path target |
60
+ | 1.5 | **Service routing** (umbrella) | Khớp domain → service; dạng phẳng (2a) hay map-theo-platform (2b); override paths sang `spec_source` |
61
+ | 1.6 | **Service conventions** (umbrella) | Nạp `build_command`/`test_command` riêng của service; set `service_root` |
62
+ | 2 | **Module stack-profile** | `.agent/modules/{module}/stack-profile.yaml` — layer/test pattern |
63
+ | 3 | **CLAUDE.md phân tầng** | root (BASE) + service overlay (stack) — **overlay thắng**; §2 layer/package, §3 naming, §5 error |
64
+ | 4 | **data-protection** | Pattern file nhạy cảm — cấm truy cập cả phiên |
65
+ | 5 | **Business dictionary** | Canonical + **banned terms** (thực thi chủ động) + enum registry |
66
+ | 6 | **Core entities** | Entity catalog + field registry + relationship map |
67
+ | 6.5 | **platform_type** | Suy `backend`/`web-frontend`/`mobile` từ module |
68
+ | 6.7 | **Project lessons** | Guardrail từ `/learn` — ràng buộc cứng ngang coding standards |
69
+ | 7 | **Recap** | In khối `[CTX LOADED]` — đẩy sự thật quan trọng lên cuối bộ nhớ |
70
+
71
+ > 👓 **Đây là component quyết định 80% chất lượng.** Khi review tối ưu: chú ý `required` vs `optional`, filter theo domain, và budget context (~50% window).
72
+
73
+ ### 3 · Business Language Guard (chỉ lệnh viết doc nghiệp vụ)
74
+
75
+ Chặn thuật ngữ kỹ thuật rò vào PRD/BDD/product-definition. 4 nhóm xử lý: (1) tương tác/UI → diễn đạt lại nghiệp vụ · (2) visual thuần → chuyển Design Spec · (3) backend/contract → bỏ về Tech Docs · (4) ẩn dụ dữ liệu → xét ngữ cảnh (không thay máy móc). Áp cho `/define-product`, `/generate-prd`, `/refine-prd`, `/review-context`, `/generate-bdd`.
76
+
77
+ ### 4 · Report Footer (mọi lệnh)
78
+
79
+ Kết thúc bằng: **Status badge** (✅/❌/⚠️) · **Output Artifacts** (file tạo/sửa) · **Pipeline Position** (`◀ bạn ở đây`) · **Next command** (gợi ý lệnh kế + tham số).
80
+
81
+ ---
82
+
83
+ ## Danh sách command theo thứ tự pipeline (Pipeline Order)
84
+
85
+ ### Phase Setup & Discovery
86
+ - [00 · `/setup-ai-first`](00-setup-ai-first.md)
87
+ - [00b · `/generate-architecture`](00b-generate-architecture.md)
88
+ - [01 · `/define-product`](01-define-product.md)
89
+
90
+ ### Phase Specification (PRD)
91
+ - [02 · `/generate-prd`](02-generate-prd.md)
92
+ - [02b · `/extend-prd`](02b-extend-prd.md) — thêm yêu cầu vào PRD **đã duyệt**
93
+ - [03 · `/refine-prd`](03-refine-prd.md)
94
+ - [04 · `/review-context`](04-review-context.md) *(dùng cho cả PRD & BDD)*
95
+
96
+ ### Phase Design
97
+ - [05 · `/generate-design-spec`](05-generate-design-spec.md)
98
+ - [06 · `/generate-bdd`](06-generate-bdd.md)
99
+ - [07 · `/generate-tech-docs`](07-generate-tech-docs.md)
100
+ - [08 · `/review-tech-docs`](08-review-tech-docs.md)
101
+
102
+ ### Phase Implementation
103
+ - [09 · `/generate-code`](09-generate-code.md)
104
+ - [10 · `/review-code`](10-review-code.md)
105
+ - [11 · `/map-testids`](11-map-testids.md)
106
+
107
+ ### Phase Dev Self-Test
108
+ - [12 · `/dev-gen-test`](12-dev-gen-test.md)
109
+ - [13 · `/dev-run-test`](13-dev-run-test.md)
110
+ - [14 · `/dev-smoke-test`](14-dev-smoke-test.md)
111
+
112
+ ### Phase QC Automation
113
+ - [15 · `/qc-analyze`](15-qc-analyze.md)
114
+ - [16 · `/qc-plan`](16-qc-plan.md)
115
+ - [17 · `/qc-design-test`](17-qc-design-test.md)
116
+ - [18 · `/qc-review`](18-qc-review.md)
117
+ - [19 · `/qc-run-test`](19-qc-run-test.md)
118
+ - [20 · `/qc-report`](20-qc-report.md)
119
+
120
+ ### Phase Trace & Quality
121
+ - [21 · `/validate-traces`](21-validate-traces.md)
122
+ - [22 · `/generate-spec-manifest`](22-generate-spec-manifest.md)
123
+
124
+ ### Lệnh xuyên suốt (Cross-cutting)
125
+ - [23 · `/fix-bug`](23-fix-bug.md)
126
+ - [24 · `/debug`](24-debug.md)
127
+ - [25 · `/report-bug`](25-report-bug.md)
128
+ - [26 · `/propose-scenario`](26-propose-scenario.md)
129
+ - [27 · `/learn`](27-learn.md)
130
+ - [28 · `/sync`](28-sync.md)
131
+ - [29 · `/update-framework`](29-update-framework.md)
132
+
133
+ ---
134
+
135
+ *Nguồn: `commands/*.md` (build từ `.tmpl` + `steps/`). Khi command đổi, cập nhật trang tương ứng ở đây.*