@educa-corp/sdd-framework 0.9.6 → 0.9.7

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 (93) hide show
  1. package/bin/lint-trace.js +4 -4
  2. package/bin/self-check.js +448 -12
  3. package/bin/trace-schema.json +643 -112
  4. package/core/FRAMEWORK_VERSION +1 -1
  5. package/core/commands/amend-prd.md +7 -1
  6. package/core/commands/debug.md +8 -2
  7. package/core/commands/define-product.md +38 -1
  8. package/core/commands/dev-gen-test.md +9 -3
  9. package/core/commands/dev-run-test.md +8 -2
  10. package/core/commands/dev-smoke-test.md +7 -1
  11. package/core/commands/extend-prd.md +7 -1
  12. package/core/commands/fix-bug.md +11 -5
  13. package/core/commands/generate-architecture.md +9 -1
  14. package/core/commands/generate-bdd.md +45 -5
  15. package/core/commands/generate-code.md +43 -4
  16. package/core/commands/generate-design-spec.md +7 -1
  17. package/core/commands/generate-prd.md +9 -1
  18. package/core/commands/generate-spec-manifest.md +7 -1
  19. package/core/commands/generate-tech-docs.md +41 -1
  20. package/core/commands/learn.md +7 -1
  21. package/core/commands/map-testids.md +11 -5
  22. package/core/commands/propose-scenario.md +7 -1
  23. package/core/commands/qc-analyze.md +12 -6
  24. package/core/commands/qc-automation-assess.md +356 -0
  25. package/core/commands/qc-design-script.md +400 -0
  26. package/core/commands/qc-design-test.md +21 -15
  27. package/core/commands/qc-plan.md +9 -3
  28. package/core/commands/qc-report.md +9 -3
  29. package/core/commands/qc-review-script.md +333 -0
  30. package/core/commands/{qc-review.md → qc-review-testcase.md} +84 -53
  31. package/core/commands/qc-run-manualtest.md +401 -0
  32. package/core/commands/qc-run-script.md +414 -0
  33. package/core/commands/refine-prd.md +7 -1
  34. package/core/commands/report-bug.md +9 -3
  35. package/core/commands/review-code.md +9 -3
  36. package/core/commands/review-context.md +11 -3
  37. package/core/commands/review-tech-docs.md +11 -3
  38. package/core/commands/setup-ai-first.md +7 -1
  39. package/core/commands/validate-traces.md +10 -4
  40. package/core/modules/qc-playwright/stack-profile.yaml +1 -1
  41. package/core/rules/workflow.md +2 -2
  42. package/core/skills/qc/_shared/self-review-principles.md +2 -2
  43. package/core/skills/qc/qa-analyst/DOC_GAP.template.md +1 -1
  44. package/core/skills/qc/qa-analyst/spec-issue-reporter.md +1 -1
  45. package/core/skills/qc/qa-automation-assess/matrix.md +120 -0
  46. package/core/skills/qc/qa-designer/e2e/journey.md +1 -1
  47. package/core/skills/qc/qa-designer/exploratory/explore-to-functional.md +1 -1
  48. package/core/skills/qc/qa-designer/functional/api.md +1 -1
  49. package/core/skills/qc/qa-designer/functional/gui-feature.md +1 -1
  50. package/core/skills/qc/qa-designer/functional/gui-screen.md +1 -1
  51. package/core/skills/qc/qa-designer/integration/api.md +1 -1
  52. package/core/skills/qc/qa-designer/integration/db.md +1 -1
  53. package/core/skills/qc/qa-designer/integration/gui.md +1 -1
  54. package/core/skills/qc/qa-designer/integration/kafka.md +1 -1
  55. package/core/skills/qc/qa-designer/non-functional.md +1 -1
  56. package/core/skills/qc/qa-designer/shared/tc-metadata-format.md +11 -6
  57. package/core/skills/qc/qa-reviewer/script/e2e.md +1 -1
  58. package/core/skills/qc/qa-reviewer/script/exploratory.md +1 -1
  59. package/core/skills/qc/qa-reviewer/script/functional.md +1 -1
  60. package/core/skills/qc/qa-reviewer/script/integration.md +1 -1
  61. package/core/skills/qc/qa-reviewer/script/non-functional.md +1 -1
  62. package/core/skills/qc/qa-reviewer/shared/review-file-template.md +3 -3
  63. package/core/skills/qc/qa-reviewer/test-case/e2e.md +1 -1
  64. package/core/skills/qc/qa-reviewer/test-case/functional.md +1 -1
  65. package/core/skills/qc/qa-reviewer/test-case/integration.md +1 -1
  66. package/core/skills/qc/qa-reviewer/test-case/non-functional.md +1 -1
  67. package/core/skills/qc/qa-runner/e2e.md +2 -2
  68. package/core/skills/qc/qa-runner/functional/gui-feature.md +3 -3
  69. package/core/skills/qc/qa-runner/functional/gui-screen.md +3 -3
  70. package/core/skills/qc/qa-runner/integration.md +1 -1
  71. package/core/skills/qc/qa-runner/non-functional.md +1 -1
  72. package/core/steps/context-loader.md +1 -1
  73. package/core/steps/gate.md +7 -1
  74. package/core/steps/qc-scope.md +2 -2
  75. package/core/steps/qc-stamp.md +4 -4
  76. package/core/steps/report-footer.md +10 -9
  77. package/docs/02-concepts/pipeline-steps/07-dev-selftest.md +1 -1
  78. package/docs/02-concepts/pipeline-steps/08-qc-automation.md +9 -8
  79. package/docs/02-concepts/pipeline-steps/10-feedback-loop.md +3 -3
  80. package/docs/02-concepts/traceability.md +1 -1
  81. package/docs/03-guides/developer.md +1 -1
  82. package/docs/03-guides/tester-qa.md +8 -7
  83. package/docs/04-reference/commands.md +4 -2
  84. package/docs/04-reference/trace-schema.md +4 -4
  85. package/docs/explain/17-qc-design-test.md +5 -5
  86. package/docs/explain/18-qc-review.md +42 -20
  87. package/docs/explain/19-qc-run-test.md +9 -6
  88. package/docs/explain/20-qc-report.md +3 -3
  89. package/docs/explain/23-fix-bug.md +2 -2
  90. package/docs/explain/README.md +2 -2
  91. package/docs/plans/qc-surgery/01-checklist.md +70 -17
  92. package/package.json +1 -1
  93. package/core/commands/qc-run-test.md +0 -561
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  title: Checklist 20 bước — đợt đại phẫu QC
3
- updated: 2026-09-11
3
+ updated: 2026-09-16
4
4
  ---
5
5
 
6
6
  # Checklist — đang ở đâu
@@ -19,9 +19,9 @@ updated: 2026-09-11
19
19
 
20
20
  ```bash
21
21
  node bin/build.js # đúc .tmpl → .md → core/
22
- node bin/self-check.js # R1–R16
22
+ node bin/self-check.js # R1–R18 (R17/R18 thêm ở 0.9.6)
23
23
  node test/run.js # gồm test ngân sách dung lượng core/commands
24
- node bin/lint-trace.js # T1–T14 trên sổ trace thật
24
+ node bin/lint-trace.js # T1–T20 trên sổ trace thật (T19/T20 thêm ở 0.9.6)
25
25
  ```
26
26
 
27
27
  ---
@@ -73,20 +73,73 @@ node bin/lint-trace.js # T1–T14 trên sổ trace thật
73
73
 
74
74
  ---
75
75
 
76
- ## Việc dọn bắt buộc — kèm Đợt 2, bỏ là self-check đỏ
76
+ ## Việc dọn bắt buộc — đo lại tại HEAD 0.9.6
77
77
 
78
- | | Việc | Lượng |
79
- |:-:|---|---|
80
- | [ ] | Sửa file skill còn gọi `TC_<FEATURE>.md` thay `.Test.md` | 14 file |
81
- | [ ] | Sửa tham chiếu skill treo `qa-script-runner/report/coverage-evaluator.md` | 1 chỗ |
82
- | [ ] | Bổ nhãn `*Checkpoint: …*` cho lệnh còn thiếu | 6 file |
83
- | [ ] | Gỡ comment provenance 10+ dòng ở đầu file lệnh → chuyển vào `bin/qc-base-map.json` | 12 file |
84
- | [ ] | Thay gate cắt tay (5.4 KB) bằng `{{include:steps/gate.md}}` (11.1 KB) | 12 file |
78
+ > **Bốn trong năm dòng đã xong từ trước mà chưa ai tích.** Cột *Ghi* là số của lần lập bảng
79
+ > (2026-09-11); cột *Đo lại* là số đếm thật trên `commands/*.tmpl` + `skills/` ngày 2026-09-15,
80
+ > **đo trước khi sửa file này** xem cách đếm ở cuối mục. Để nguyên `[ ]` thì người sau đi làm
81
+ > lại bốn việc đã xong.
85
82
 
86
- ## Câu còn phải chốt với chị QC
83
+ | | Việc | Ghi | Đo lại 2026-09-15 |
84
+ |:-:|---|---|---|
85
+ | [x] | Sửa file skill còn gọi `TC_<FEATURE>.md` thay `.Test.md` | 14 file | **0 file.** Đúng 2 chỗ còn chuỗi đó, **cả hai** trong `qc-design-test` và là **phản ví dụ có chủ ý** — *"ghi ra thứ không trạm nào tìm thấy"*. Đừng `grep` rồi báo lỗi lại |
86
+ | [x] | Sửa tham chiếu skill treo `qa-script-runner/report/coverage-evaluator.md` | 1 chỗ | **Không phải lỗi — chưa bao giờ hỏng.** Mọi tham chiếu nằm gọn trong `upstream/qc-base/`, và `upstream/qc-base/skills/qa-gate/coverage-evaluator.md` có thật. Không có commit sửa nào để đi tìm |
87
+ | [ ] | Bổ nhãn `*Checkpoint: …*` cho lệnh còn thiếu | 6 file | **18 file** — chỉ 15/33 lệnh có nhãn; số cũ nhỏ hơn thực tế 3 lần *(lần lập bảng đếm trên tập lệnh QC rồi ghi như thể đếm toàn bộ 33 lệnh)*. **Không lệnh nào trong 18 đó được miễn**: cả 5 lệnh mức `none` — `review-code` `validate-traces` `debug` `review-context` `review-tech-docs` — đều ĐÃ có nhãn. 18 là nợ thật |
88
+ | [x] | Gỡ comment provenance 10+ dòng ở đầu file lệnh → `bin/qc-base-map.json` | 12 file | **0 file.** Không tmpl nào còn khối `<!-- -->` ở đầu; provenance rút còn đúng 1 dòng `ported_from:` ở 6 lệnh QC, phần còn lại đã nằm trong `bin/qc-base-map.json` (snapshot `596149f`) |
89
+ | [x] | Thay gate cắt tay (5.4 KB) bằng `{{include:steps/gate.md}}` (11.1 KB) | 12 file | **0 lệnh còn gate cắt tay.** 31/33 tmpl dùng `{{include:steps/gate.md}}`. Hai lệnh còn lại — `sync`, `update-framework` — không phải cắt tay: chúng **không có gate nào cả**, xem cảnh báo dưới |
90
+
91
+ > ⚠️ **Phát sinh khi đo — KHÔNG thuộc đợt dọn này.** `sync` và `update-framework` đều GHI file
92
+ > (`{service.path}/.agent/project-context.yaml`, `{living_docs_dir}/trace-report.json`, và
93
+ > `--init` copy đè cả `.agent/`) nhưng **không include gate và không có tên trong
94
+ > `gate.checkpoint_levels`** → rơi vào mặc định `normal`, mức lỏng nhất. Đây đúng hình dạng lỗi
95
+ > mà R18 sinh ra để bắt (G67 · G77 · G78 · G79). Xử ở việc **khai nốt registry
96
+ > `artifact_writers`**, không phải ở đây.
97
+
98
+ <details>
99
+ <summary>Cách đếm — chạy lại được, ra đúng số trên</summary>
100
+
101
+ ```bash
102
+ # 1 — gate: 31 file có include; 2 file thiếu là sync, update-framework
103
+ grep -l "include:steps/gate.md" commands/*.tmpl | wc -l
104
+
105
+ # 2 — TC_<FEATURE>.md: đúng 2 hit, cả hai trong qc-design-test (phản ví dụ)
106
+ grep -rn 'TC_<FEATURE>.md' skills/ commands/
87
107
 
88
- | | Câu hỏi | Chặn bước nào |
89
- |:-:|---|---|
90
- | [ ] | `/qc-run-manualtest` ghi kết quả test tay thế nào — nhập từng TC, hay đọc từ file checklist? | d2-b2 |
91
- | [ ] | Smoke suite đặt tên (không được nhầm `/dev-smoke-test` đã có) | d4-b2 |
92
- | [ ] | Ngưỡng dung lượng chốt bao nhiêu (đo lại sau d2-b2, ước ~1313 KB) | d2-b2 |
108
+ # 3 coverage-evaluator: file đích tồn tại ⇒ tham chiếu không treo
109
+ ls upstream/qc-base/skills/qa-gate/coverage-evaluator.md
110
+
111
+ # 4 nhãn Checkpoint: 15 / 18 thiếu trên 33 lệnh
112
+ for f in commands/*.tmpl; do grep -qE '^s**Checkpoint:' "$f" || basename "$f" .tmpl; done | wc -l
113
+
114
+ # 5 — provenance: 0 dòng <!-- ở đầu tmpl
115
+ head -30 commands/*.tmpl | grep -c '^<!--'
116
+ ```
117
+
118
+ **Vì sao mục này phải mang theo cách đếm:** không máy nào canh file kế hoạch. `self-check` canh
119
+ schema, `lint-trace` canh sổ trace, `test/run.js` canh build — cả ba xanh trong lúc bảng này sai
120
+ bốn dòng. Ghi kết quả đo mà không ghi cách đo thì người sau vẫn phải đo lại từ đầu, tức ô tích
121
+ không tiết kiệm được gì.
122
+
123
+ </details>
124
+
125
+ ## Câu đã chốt với chị QC *(2026-09-16)*
126
+
127
+ | | Câu hỏi | Trả lời | Chặn bước nào |
128
+ |:-:|---|---|---|
129
+ | [x] | `/qc-run-manualtest` ghi kết quả test tay thế nào — nhập từng TC, hay đọc từ file checklist? | **Nhập từng TC.** Nguyên văn: *"ghi kết quả test tay em nhé. Chị sợ đọc checklist mà lệch thông tin lại ghi kết quả sai."* | d2-b2 — **hết chặn** |
130
+ | [x] | Smoke suite đặt tên gì (không được nhầm `/dev-smoke-test` đã có) | **`/qc-smoke-test`** — đúng quy ước hai làn `qc-`/`dev-` | d4-b2 — **hết chặn** |
131
+ | [x] | Ngưỡng dung lượng chốt bao nhiêu | **Không cần hỏi — đo được.** `1309 / 1450 KB` sau d2-b1 (còn 141 KB). Đo lại sau khi viết 3 lệnh của d2-b2 | d2-b2 |
132
+
133
+ > **Vì sao câu 1 quan trọng hơn vẻ ngoài của nó.** Phương án *"đọc file checklist"* nghe tiện hơn
134
+ > (điền offline, nhiều người điền dần), và đó là phương án được khuyến nghị lúc đầu. Chị QC chỉ ra
135
+ > một rủi ro nặng hơn sự tiện: một file điền tay là **nguồn thứ hai có thể trôi** — TC bị đánh số
136
+ > lại sau một lần `/qc-design-test`, TC mới thêm, dòng cũ còn sót — và khi nó lệch thì lệnh ghi
137
+ > `qc_status` cho **đúng SC sai**. Kiểu hỏng đó là **Nói dối** (sổ trace báo `pass` cho scenario
138
+ > chưa ai chạy); cái giá của phương án hỏi-từng-TC chỉ là **Ồn**. Đổi một rủi ro nói dối lấy một
139
+ > rủi ro phiền là đúng chiều, và cùng họ với `positive_assertion_guards` — luật đã có sẵn để
140
+ > **không bao giờ** ghi `pass` khi dữ liệu nền không chắc.
141
+ >
142
+ > **Điều chỉnh giữ nguyên tính an toàn đó:** lệnh **ghi ngay vào sổ trace sau mỗi câu trả lời**,
143
+ > không gom cuối phiên; chạy lại thì chỉ hỏi những SC còn `not_run` — tức **tự resume**. Như vậy
144
+ > sổ trace là nguồn duy nhất (không artifact trung gian nào để trôi) mà vẫn làm được nhiều buổi,
145
+ > nhiều người. Mỗi lần ghi kèm người chạy + ngày, khớp luật *"`pass` phải có bằng chứng"*.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@educa-corp/sdd-framework",
3
- "version": "0.9.6",
3
+ "version": "0.9.7",
4
4
  "description": "Spec Driven Development workflow framework for Claude Code",
5
5
  "bin": {
6
6
  "sdd-framework": "./bin/index.js"