@educa-corp/sdd-framework 0.9.1 → 0.9.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.
- package/bin/qc-base-map.json +595 -0
- package/bin/self-check.js +146 -0
- package/core/FRAMEWORK_VERSION +1 -1
- package/core/commands/propose-scenario.md +1 -1
- package/core/commands/qc-analyze.md +260 -22
- package/core/commands/qc-design-test.md +1 -1
- package/core/commands/qc-plan.md +7 -4
- package/core/commands/qc-run-test.md +1 -1
- package/core/commands/refine-prd.md +47 -20
- package/core/commands/report-bug.md +1 -1
- package/core/commands/review-context.md +27 -1
- package/core/skills/qc/qa-analyst/DOC_GAP.template.md +117 -0
- package/core/skills/qc/qa-analyst/acceptance-criteria.md +4 -2
- package/core/skills/qc/qa-analyst/business-rules.md +38 -4
- package/core/skills/qc/qa-analyst/data-flow.md +5 -3
- package/core/skills/qc/qa-analyst/exhaustive-gap-scanner.md +174 -0
- package/core/skills/qc/qa-analyst/spec-breakdown.md +9 -7
- package/core/skills/qc/qa-analyst/spec-issue-reporter.md +100 -0
- package/core/skills/qc/qa-designer/e2e/journey.md +2 -2
- package/core/skills/qc/qa-designer/exploratory/charter.md +1 -1
- package/core/skills/qc/qa-designer/exploratory/explore-to-functional.md +1 -1
- package/core/skills/qc/qa-designer/functional/api.md +2 -2
- package/core/skills/qc/qa-designer/functional/gui-feature.md +2 -2
- package/core/skills/qc/qa-designer/functional/gui-screen.md +2 -2
- package/core/skills/qc/qa-designer/integration/api.md +2 -2
- package/core/skills/qc/qa-designer/integration/db.md +2 -2
- package/core/skills/qc/qa-designer/integration/gui.md +2 -2
- package/core/skills/qc/qa-designer/integration/kafka.md +2 -2
- package/core/skills/qc/qa-designer/non-functional.md +2 -2
- package/core/skills/qc/qa-planner/risk-model.md +106 -0
- package/core/skills/qc/qa-planner/test-plan.md +13 -10
- package/core/skills/qc/qa-reviewer/script/e2e.md +1 -1
- package/core/skills/qc/qa-reviewer/script/exploratory.md +1 -1
- package/core/skills/qc/qa-reviewer/script/functional.md +1 -1
- package/core/skills/qc/qa-reviewer/script/integration.md +1 -1
- package/core/skills/qc/qa-reviewer/script/non-functional.md +1 -1
- package/core/skills/qc/qa-reviewer/test-case/e2e.md +1 -1
- package/core/skills/qc/qa-reviewer/test-case/exploratory.md +1 -1
- package/core/skills/qc/qa-reviewer/test-case/functional.md +1 -1
- package/core/skills/qc/qa-reviewer/test-case/integration.md +2 -2
- package/core/skills/qc/qa-reviewer/test-case/non-functional.md +1 -1
- package/core/skills/qc/qa-runner/e2e.md +1 -1
- package/core/skills/qc/qa-runner/exploratory/session.md +1 -1
- package/core/skills/qc/qa-runner/functional/api.md +1 -1
- package/core/skills/qc/qa-runner/functional/gui-feature.md +1 -1
- package/core/skills/qc/qa-runner/functional/gui-screen.md +1 -1
- package/core/skills/qc/qa-runner/integration.md +1 -1
- package/core/skills/qc/qa-runner/non-functional.md +1 -1
- package/core/skills/qc/qa-runner/report/report.md +1 -1
- package/core/steps/gap-verify.md +231 -0
- package/core/steps/review-fanout.md +27 -1
- package/core/templates/project-context.yaml +2 -2
- package/docs/02-concepts/pipeline-steps/08-qc-automation.md +2 -2
- package/docs/04-reference/commands.md +1 -1
- package/docs/explain/03-refine-prd.md +8 -6
- package/docs/explain/15-qc-analyze.md +10 -7
- package/docs/explain/16-qc-plan.md +2 -2
- package/docs/plans/qc-implementation-log.md +1446 -0
- package/docs/plans/qc-merge-plan.md +502 -0
- package/docs/plans/qc-sync-command.md +358 -0
- package/package.json +1 -1
- package/core/skills/qc/qa-analyst/DOC_GAPS.template.md +0 -63
|
@@ -0,0 +1,595 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": [
|
|
3
|
+
"BAN DO ANH XA upstream/qc-base -> framework (no #S2 cua docs/plans/qc-sync-command.md).",
|
|
4
|
+
"",
|
|
5
|
+
"VI SAO CAN: port khong phai copy. Anh xa khong 1:1 (qa-tc-analyst -> qc-analyze VA qc-plan),",
|
|
6
|
+
"file duoc ADAPT chu khong copy (path -> {paths.*}, them rao), va merge lan sau la merge BA CHIEU",
|
|
7
|
+
"— can BASE. File nay giu BASE do: moi entry `ported` ghi base_sha = ban upstream da port tu.",
|
|
8
|
+
"",
|
|
9
|
+
"STATE — bon gia tri, va gia tri thu tu la quan trong nhat:",
|
|
10
|
+
" ported da dua vao, co base_sha de merge lan sau",
|
|
11
|
+
" planned da quyet se dua, chua lam",
|
|
12
|
+
" skipped CO Y khong dua, co ly do ghi lai",
|
|
13
|
+
" undecided chua ai quyet <- DAY LA HANG DOI VIEC",
|
|
14
|
+
"",
|
|
15
|
+
"File upstream KHONG co entry = bi bo quen trong im lang. Do la failure mode duy nhat",
|
|
16
|
+
"ban do nay ton tai de chan — va R16(a) trong bin/self-check.js la phan may canh.",
|
|
17
|
+
"",
|
|
18
|
+
"port_completeness: partial = co y chi port MOT PHAN (vd exhaustive-gap-scanner: lay 5 mandate,",
|
|
19
|
+
"bo phan dieu phoi vi steps/review-fanout.md da so huu). Khong co co nay thi lan --port sau",
|
|
20
|
+
"hieu phan thieu la 'ta co y xoa noi dung'."
|
|
21
|
+
],
|
|
22
|
+
"upstream": {
|
|
23
|
+
"repo": "ui-automation-testing",
|
|
24
|
+
"snapshot": "upstream/qc-base",
|
|
25
|
+
"commit": "596149f50d24e00a2cd4348a0b4c190e01d5fd20",
|
|
26
|
+
"captured_at": "2026-08-24"
|
|
27
|
+
},
|
|
28
|
+
"map": [
|
|
29
|
+
{
|
|
30
|
+
"upstream": "agents/1-qa-io-contract.md",
|
|
31
|
+
"targets": [],
|
|
32
|
+
"state": "undecided",
|
|
33
|
+
"why": "dinh nghia agent cua upstream; framework dung command + gate _agent_mode thay cho agent file"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"upstream": "agents/2-qa-orchestrator.md",
|
|
37
|
+
"targets": [],
|
|
38
|
+
"state": "undecided",
|
|
39
|
+
"why": "dinh nghia agent cua upstream; framework dung command + gate _agent_mode thay cho agent file"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"upstream": "agents/3-qa-tc-analyst.md",
|
|
43
|
+
"targets": [],
|
|
44
|
+
"state": "undecided",
|
|
45
|
+
"why": "dinh nghia agent cua upstream; framework dung command + gate _agent_mode thay cho agent file"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"upstream": "agents/4-qa-tc-designer.md",
|
|
49
|
+
"targets": [],
|
|
50
|
+
"state": "undecided",
|
|
51
|
+
"why": "dinh nghia agent cua upstream; framework dung command + gate _agent_mode thay cho agent file"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"upstream": "agents/5-qa-tc-reviewer.md",
|
|
55
|
+
"targets": [],
|
|
56
|
+
"state": "undecided",
|
|
57
|
+
"why": "dinh nghia agent cua upstream; framework dung command + gate _agent_mode thay cho agent file"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"upstream": "agents/6-qa-runner.md",
|
|
61
|
+
"targets": [],
|
|
62
|
+
"state": "undecided",
|
|
63
|
+
"why": "dinh nghia agent cua upstream; framework dung command + gate _agent_mode thay cho agent file"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"upstream": "agents/7-qa-gate.md",
|
|
67
|
+
"targets": [],
|
|
68
|
+
"state": "undecided",
|
|
69
|
+
"why": "dinh nghia agent cua upstream; framework dung command + gate _agent_mode thay cho agent file"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"upstream": "agents/README.md",
|
|
73
|
+
"targets": [],
|
|
74
|
+
"state": "undecided",
|
|
75
|
+
"why": "dinh nghia agent cua upstream; framework dung command + gate _agent_mode thay cho agent file"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"upstream": "commands/qa-auditor.md",
|
|
79
|
+
"targets": [],
|
|
80
|
+
"state": "undecided",
|
|
81
|
+
"why": "slash-command rieng cua upstream; chua doi chieu voi 6 lenh qc-* cua framework"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"upstream": "commands/qa-exhaustive.md",
|
|
85
|
+
"targets": [],
|
|
86
|
+
"state": "undecided",
|
|
87
|
+
"why": "slash-command rieng cua upstream; chua doi chieu voi 6 lenh qc-* cua framework"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"upstream": "commands/qa-review-script.md",
|
|
91
|
+
"targets": [],
|
|
92
|
+
"state": "undecided",
|
|
93
|
+
"why": "slash-command rieng cua upstream; chua doi chieu voi 6 lenh qc-* cua framework"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"upstream": "commands/qa-system-audit.md",
|
|
97
|
+
"targets": [],
|
|
98
|
+
"state": "undecided",
|
|
99
|
+
"why": "slash-command rieng cua upstream; chua doi chieu voi 6 lenh qc-* cua framework"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"upstream": "skills/qa-gate/auto-report-writer.md",
|
|
103
|
+
"targets": [],
|
|
104
|
+
"state": "undecided"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"upstream": "skills/qa-gate/coverage-evaluator.md",
|
|
108
|
+
"targets": [],
|
|
109
|
+
"state": "undecided"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"upstream": "skills/qa-gate/gate-decision.md",
|
|
113
|
+
"targets": [],
|
|
114
|
+
"state": "undecided"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"upstream": "skills/qa-gate/qa-report-writer.md",
|
|
118
|
+
"targets": [],
|
|
119
|
+
"state": "undecided"
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"upstream": "skills/qa-gate/risk-matrix-builder.md",
|
|
123
|
+
"targets": [],
|
|
124
|
+
"state": "undecided"
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"upstream": "skills/qa-gate/styled-report-feat011.py",
|
|
128
|
+
"targets": [],
|
|
129
|
+
"state": "undecided",
|
|
130
|
+
"why": "script chay duoc, khong phai prompt — framework QC hien 100% markdown-first"
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"upstream": "skills/qa-gate/styled-report-template.py",
|
|
134
|
+
"targets": [],
|
|
135
|
+
"state": "undecided",
|
|
136
|
+
"why": "script chay duoc, khong phai prompt — framework QC hien 100% markdown-first"
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"upstream": "skills/qa-io-contract/injection-scanner.md",
|
|
140
|
+
"targets": [],
|
|
141
|
+
"state": "undecided"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"upstream": "skills/qa-io-contract/intake-validator.md",
|
|
145
|
+
"targets": [],
|
|
146
|
+
"state": "undecided"
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"upstream": "skills/qa-orchestrator/doc-classifier.md",
|
|
150
|
+
"targets": [],
|
|
151
|
+
"state": "undecided"
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"upstream": "skills/qa-orchestrator/routing-planner.md",
|
|
155
|
+
"targets": [],
|
|
156
|
+
"state": "undecided"
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"upstream": "skills/qa-runner/script-writer.md",
|
|
160
|
+
"targets": [],
|
|
161
|
+
"state": "undecided"
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"upstream": "skills/qa-runner/test-executor.md",
|
|
165
|
+
"targets": [],
|
|
166
|
+
"state": "undecided"
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
"upstream": "skills/qa-tc-analyst/acceptance-criteria.md",
|
|
170
|
+
"targets": [
|
|
171
|
+
"skills/qc/qa-analyst/acceptance-criteria.md"
|
|
172
|
+
],
|
|
173
|
+
"state": "ported",
|
|
174
|
+
"base_sha": "516f35cf78102d27aa5639bfb2818274399800c0"
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"upstream": "skills/qa-tc-analyst/api-test-plan.md",
|
|
178
|
+
"targets": [],
|
|
179
|
+
"state": "undecided",
|
|
180
|
+
"why": "B5=A: thuoc tram 2 (/qc-plan), khong phai tram 1. Xet lai o B6."
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"upstream": "skills/qa-tc-analyst/business-rules.md",
|
|
184
|
+
"targets": [
|
|
185
|
+
"skills/qc/qa-analyst/business-rules.md"
|
|
186
|
+
],
|
|
187
|
+
"state": "ported",
|
|
188
|
+
"base_sha": "0d5f01257c30182d1c98835303640775d360a3da"
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
"upstream": "skills/qa-tc-analyst/coverage-analyzer.md",
|
|
192
|
+
"targets": [],
|
|
193
|
+
"state": "skipped",
|
|
194
|
+
"why": "B6=b: KHONG the chay o tram 1 — chinh skill tu khai 'chua co TC nao thi coverage=0%, khong y nghia'. Thuoc tram 3/4, ngoai pham vi viec dang lam. De danh."
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"upstream": "skills/qa-tc-analyst/cross-ref-engine.md",
|
|
198
|
+
"targets": [],
|
|
199
|
+
"state": "skipped",
|
|
200
|
+
"why": "B5=A: framework da co tech-doc gop cap PRD ({paths.tech_docs_dir}/.../{TICKET-ID}-tech-design.md) phu cung thong tin. qc-analyze doc THANG tech-doc thay vi parse file tho — 1 thay doi thay cho 11 port. Chi tiet: docs/plans/qc-implementation-log.md B5. Doi chieu 3 nguon tho — gio la §Doi chieu tai lieu ky thuat trong qc-analyze."
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
"upstream": "skills/qa-tc-analyst/data-flow.md",
|
|
204
|
+
"targets": [
|
|
205
|
+
"skills/qc/qa-analyst/data-flow.md"
|
|
206
|
+
],
|
|
207
|
+
"state": "ported",
|
|
208
|
+
"base_sha": "fc0fc3d0f8010e3fb266c16b132eff1b23641a8f"
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
"upstream": "skills/qa-tc-analyst/dbml-parser.md",
|
|
212
|
+
"targets": [],
|
|
213
|
+
"state": "skipped",
|
|
214
|
+
"why": "B5=A: framework da co tech-doc gop cap PRD ({paths.tech_docs_dir}/.../{TICKET-ID}-tech-design.md) phu cung thong tin. qc-analyze doc THANG tech-doc thay vi parse file tho — 1 thay doi thay cho 11 port. Chi tiet: docs/plans/qc-implementation-log.md B5. Tuong ung §3 Mo hinh du lieu."
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"upstream": "skills/qa-tc-analyst/exhaustive-gap-scanner.md",
|
|
218
|
+
"targets": [
|
|
219
|
+
"skills/qc/qa-analyst/exhaustive-gap-scanner.md"
|
|
220
|
+
],
|
|
221
|
+
"state": "ported",
|
|
222
|
+
"base_sha": "b3f5aa112ec2fb93100d8945a3fa3d5fe904eb26",
|
|
223
|
+
"port_completeness": "partial"
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
"upstream": "skills/qa-tc-analyst/exploratory-charter.md",
|
|
227
|
+
"targets": [],
|
|
228
|
+
"state": "skipped",
|
|
229
|
+
"why": "B6=c: KHONG trung voi qa-designer/exploratory/charter.md — cung ky thuat, khac muc dich. Framework dung o tram 3 de THIET KE test tham do; upstream dung o tram 1 lam PHUONG AN DU PHONG khi khong co tai lieu de doc (legacy/take-over). Framework tram 1 dung SAU chuoi PRD->BDD->tech-doc nen tai lieu phai co. Lay khi nao framework thuc su dung cho du an tiep quan — va lay thi lay CA 3 CHE DO."
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
"upstream": "skills/qa-tc-analyst/feature-spec-parser.md",
|
|
233
|
+
"targets": [],
|
|
234
|
+
"state": "skipped",
|
|
235
|
+
"why": "B5=A: da duoc phu boi tai lieu qc-analyze DANG doc (PRD / design-spec). Khong can port. PRD + product-definition."
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
"upstream": "skills/qa-tc-analyst/figma-design-capture.md",
|
|
239
|
+
"targets": [],
|
|
240
|
+
"state": "skipped",
|
|
241
|
+
"why": "B5=A: da duoc phu boi tai lieu qc-analyze DANG doc (PRD / design-spec). Khong can port. design-spec §Tom tat Figma · §Design Token."
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
"upstream": "skills/qa-tc-analyst/flow-path-designer.md",
|
|
245
|
+
"targets": [],
|
|
246
|
+
"state": "skipped",
|
|
247
|
+
"why": "B5=A: framework da co tech-doc gop cap PRD ({paths.tech_docs_dir}/.../{TICKET-ID}-tech-design.md) phu cung thong tin. qc-analyze doc THANG tech-doc thay vi parse file tho — 1 thay doi thay cho 11 port. Chi tiet: docs/plans/qc-implementation-log.md B5. Tuong ung §5 Luong chinh."
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
"upstream": "skills/qa-tc-analyst/full-lane-dispatcher.md",
|
|
251
|
+
"targets": [],
|
|
252
|
+
"state": "skipped",
|
|
253
|
+
"why": "B5=A: steps/review-fanout.md da so huu co che quet song song. Xem B3."
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
"upstream": "skills/qa-tc-analyst/gap-verifier.md",
|
|
257
|
+
"targets": [],
|
|
258
|
+
"state": "undecided"
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
"upstream": "skills/qa-tc-analyst/openapi-parser.md",
|
|
262
|
+
"targets": [],
|
|
263
|
+
"state": "skipped",
|
|
264
|
+
"why": "B5=A: framework da co tech-doc gop cap PRD ({paths.tech_docs_dir}/.../{TICKET-ID}-tech-design.md) phu cung thong tin. qc-analyze doc THANG tech-doc thay vi parse file tho — 1 thay doi thay cho 11 port. Chi tiet: docs/plans/qc-implementation-log.md B5. Tuong ung §4 Hop dong API."
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
"upstream": "skills/qa-tc-analyst/risk-acceptance-analyzer.md",
|
|
268
|
+
"targets": [
|
|
269
|
+
"skills/qc/qa-planner/risk-model.md"
|
|
270
|
+
],
|
|
271
|
+
"state": "ported",
|
|
272
|
+
"base_sha": "5eca5091acd30e063d20b63f12b04e2d1c78ac83",
|
|
273
|
+
"port_completeness": "partial",
|
|
274
|
+
"why": "B6=a: port Phase 3 (Risk Register) + Phase 5 (Uu tien/Entry-Exit) -> tram 2. Bo Phase 1/2/4 vi tram 1 da lam (spec-breakdown, DOC_GAPS+gap-verify, acceptance-criteria)."
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
"upstream": "skills/qa-tc-analyst/screen-spec-parser.md",
|
|
278
|
+
"targets": [],
|
|
279
|
+
"state": "skipped",
|
|
280
|
+
"why": "B5=A: da duoc phu boi tai lieu qc-analyze DANG doc (PRD / design-spec). Khong can port. design-spec §Component Inventory · §Screen States · §Actions & Navigation."
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
"upstream": "skills/qa-tc-analyst/spec-breakdown.md",
|
|
284
|
+
"targets": [
|
|
285
|
+
"skills/qc/qa-analyst/spec-breakdown.md"
|
|
286
|
+
],
|
|
287
|
+
"state": "ported",
|
|
288
|
+
"base_sha": "4a5fb9334fef1fdc3ac5e899e0463c643af80dad"
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
"upstream": "skills/qa-tc-analyst/spec-issue-reporter.md",
|
|
292
|
+
"targets": [
|
|
293
|
+
"skills/qc/qa-analyst/spec-issue-reporter.md"
|
|
294
|
+
],
|
|
295
|
+
"state": "ported",
|
|
296
|
+
"base_sha": "5b5c0c886e92b474e0a5a8157ba58a7c3ce4b3f8",
|
|
297
|
+
"why": "B9: luat viet cho DOC_GAP.template.md — /qc-analyze nap. Doi Critical -> Blocker.",
|
|
298
|
+
"port_completeness": "adapted"
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
"upstream": "skills/qa-tc-analyst/spec-issue-reporter/DOC_GAPS.template.md",
|
|
302
|
+
"targets": [
|
|
303
|
+
"skills/qc/qa-analyst/DOC_GAP.template.md"
|
|
304
|
+
],
|
|
305
|
+
"state": "ported",
|
|
306
|
+
"base_sha": "c7ca6cfb798c609f18ffe20a38f64f95c76e1919",
|
|
307
|
+
"why": "B9: hop nhat lam template DUY NHAT cho file gap (ban 9 cot cu da bo). Co y khac upstream: muc nang nhat dung 'Blocker' thay 'Critical' vi qc-run-test doc dung tu do de dat qc_owner=po vao so trace.",
|
|
308
|
+
"port_completeness": "adapted"
|
|
309
|
+
},
|
|
310
|
+
{
|
|
311
|
+
"upstream": "skills/qa-tc-analyst/tdd-extractor.md",
|
|
312
|
+
"targets": [],
|
|
313
|
+
"state": "skipped",
|
|
314
|
+
"why": "B5=A: framework da co tech-doc gop cap PRD ({paths.tech_docs_dir}/.../{TICKET-ID}-tech-design.md) phu cung thong tin. qc-analyze doc THANG tech-doc thay vi parse file tho — 1 thay doi thay cho 11 port. Chi tiet: docs/plans/qc-implementation-log.md B5. Tuong ung §4.4 Logic handler + §9 Design decisions."
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
"upstream": "skills/qa-tc-analyst/test-plan.md",
|
|
318
|
+
"targets": [
|
|
319
|
+
"skills/qc/qa-planner/test-plan.md"
|
|
320
|
+
],
|
|
321
|
+
"state": "ported",
|
|
322
|
+
"base_sha": "f259b4d123c565a42ba6c6ec96980a8e4c66284f"
|
|
323
|
+
},
|
|
324
|
+
{
|
|
325
|
+
"upstream": "skills/qa-tc-analyst/ui-api-mapper.md",
|
|
326
|
+
"targets": [],
|
|
327
|
+
"state": "skipped",
|
|
328
|
+
"why": "B5=A: framework da co tech-doc gop cap PRD ({paths.tech_docs_dir}/.../{TICKET-ID}-tech-design.md) phu cung thong tin. qc-analyze doc THANG tech-doc thay vi parse file tho — 1 thay doi thay cho 11 port. Chi tiet: docs/plans/qc-implementation-log.md B5. Tuong ung §4.5 Anh xa component UI."
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
"upstream": "skills/qa-tc-designer/api-testcase-designer.md",
|
|
332
|
+
"targets": [],
|
|
333
|
+
"state": "undecided"
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
"upstream": "skills/qa-tc-designer/api-testcase-designer/api/flows/auth-sequence.md",
|
|
337
|
+
"targets": [],
|
|
338
|
+
"state": "undecided"
|
|
339
|
+
},
|
|
340
|
+
{
|
|
341
|
+
"upstream": "skills/qa-tc-designer/api-testcase-designer/api/flows/common-flows.md",
|
|
342
|
+
"targets": [],
|
|
343
|
+
"state": "undecided"
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
"upstream": "skills/qa-tc-designer/api-testcase-designer/api/flows/crud-sequence.md",
|
|
347
|
+
"targets": [],
|
|
348
|
+
"state": "undecided"
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
"upstream": "skills/qa-tc-designer/api-testcase-designer/api/references/common-headers.md",
|
|
352
|
+
"targets": [],
|
|
353
|
+
"state": "undecided"
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
"upstream": "skills/qa-tc-designer/api-testcase-designer/api/references/error-codes.md",
|
|
357
|
+
"targets": [],
|
|
358
|
+
"state": "undecided"
|
|
359
|
+
},
|
|
360
|
+
{
|
|
361
|
+
"upstream": "skills/qa-tc-designer/api-testcase-designer/api/references/http-status-codes.md",
|
|
362
|
+
"targets": [],
|
|
363
|
+
"state": "undecided"
|
|
364
|
+
},
|
|
365
|
+
{
|
|
366
|
+
"upstream": "skills/qa-tc-designer/api-testcase-designer/api/templates/auth-chain.md",
|
|
367
|
+
"targets": [],
|
|
368
|
+
"state": "undecided"
|
|
369
|
+
},
|
|
370
|
+
{
|
|
371
|
+
"upstream": "skills/qa-tc-designer/api-testcase-designer/api/templates/endpoint.md",
|
|
372
|
+
"targets": [],
|
|
373
|
+
"state": "undecided"
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
"upstream": "skills/qa-tc-designer/e2e-testcase-designer.md",
|
|
377
|
+
"targets": [],
|
|
378
|
+
"state": "undecided"
|
|
379
|
+
},
|
|
380
|
+
{
|
|
381
|
+
"upstream": "skills/qa-tc-designer/integration-testcase-designer.md",
|
|
382
|
+
"targets": [],
|
|
383
|
+
"state": "undecided"
|
|
384
|
+
},
|
|
385
|
+
{
|
|
386
|
+
"upstream": "skills/qa-tc-designer/manual-excel-testcase.md",
|
|
387
|
+
"targets": [],
|
|
388
|
+
"state": "skipped",
|
|
389
|
+
"why": "README upstream khai da bo nhanh manual-Excel (auto-pytest); file con sot lai"
|
|
390
|
+
},
|
|
391
|
+
{
|
|
392
|
+
"upstream": "skills/qa-tc-designer/nfr-testcase-designer.md",
|
|
393
|
+
"targets": [],
|
|
394
|
+
"state": "undecided"
|
|
395
|
+
},
|
|
396
|
+
{
|
|
397
|
+
"upstream": "skills/qa-tc-designer/shared/action-keywords-glossary.md",
|
|
398
|
+
"targets": [],
|
|
399
|
+
"state": "undecided"
|
|
400
|
+
},
|
|
401
|
+
{
|
|
402
|
+
"upstream": "skills/qa-tc-designer/shared/duplicate-check-procedure.md",
|
|
403
|
+
"targets": [],
|
|
404
|
+
"state": "undecided"
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
"upstream": "skills/qa-tc-designer/shared/implicit-scenarios.md",
|
|
408
|
+
"targets": [],
|
|
409
|
+
"state": "undecided"
|
|
410
|
+
},
|
|
411
|
+
{
|
|
412
|
+
"upstream": "skills/qa-tc-designer/shared/precision-rules.md",
|
|
413
|
+
"targets": [],
|
|
414
|
+
"state": "undecided"
|
|
415
|
+
},
|
|
416
|
+
{
|
|
417
|
+
"upstream": "skills/qa-tc-designer/shared/read-doc-gap-inputs.md",
|
|
418
|
+
"targets": [],
|
|
419
|
+
"state": "undecided"
|
|
420
|
+
},
|
|
421
|
+
{
|
|
422
|
+
"upstream": "skills/qa-tc-designer/shared/skill-decision-tree.md",
|
|
423
|
+
"targets": [],
|
|
424
|
+
"state": "undecided"
|
|
425
|
+
},
|
|
426
|
+
{
|
|
427
|
+
"upstream": "skills/qa-tc-designer/shared/tc-metadata-format.md",
|
|
428
|
+
"targets": [],
|
|
429
|
+
"state": "undecided"
|
|
430
|
+
},
|
|
431
|
+
{
|
|
432
|
+
"upstream": "skills/qa-tc-designer/ui-testcase-designer.md",
|
|
433
|
+
"targets": [],
|
|
434
|
+
"state": "undecided"
|
|
435
|
+
},
|
|
436
|
+
{
|
|
437
|
+
"upstream": "skills/qa-tc-reviewer/api-test-reviewer.md",
|
|
438
|
+
"targets": [],
|
|
439
|
+
"state": "undecided"
|
|
440
|
+
},
|
|
441
|
+
{
|
|
442
|
+
"upstream": "skills/qa-tc-reviewer/e2e-test-reviewer.md",
|
|
443
|
+
"targets": [],
|
|
444
|
+
"state": "undecided"
|
|
445
|
+
},
|
|
446
|
+
{
|
|
447
|
+
"upstream": "skills/qa-tc-reviewer/exploratory-test-reviewer.md",
|
|
448
|
+
"targets": [],
|
|
449
|
+
"state": "undecided"
|
|
450
|
+
},
|
|
451
|
+
{
|
|
452
|
+
"upstream": "skills/qa-tc-reviewer/integration-test-reviewer.md",
|
|
453
|
+
"targets": [],
|
|
454
|
+
"state": "undecided"
|
|
455
|
+
},
|
|
456
|
+
{
|
|
457
|
+
"upstream": "skills/qa-tc-reviewer/nfr-test-reviewer.md",
|
|
458
|
+
"targets": [],
|
|
459
|
+
"state": "undecided"
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
"upstream": "skills/qa-tc-reviewer/script-e2e-reviewer.md",
|
|
463
|
+
"targets": [],
|
|
464
|
+
"state": "undecided"
|
|
465
|
+
},
|
|
466
|
+
{
|
|
467
|
+
"upstream": "skills/qa-tc-reviewer/script-exploratory-reviewer.md",
|
|
468
|
+
"targets": [],
|
|
469
|
+
"state": "undecided"
|
|
470
|
+
},
|
|
471
|
+
{
|
|
472
|
+
"upstream": "skills/qa-tc-reviewer/script-functional-reviewer.md",
|
|
473
|
+
"targets": [],
|
|
474
|
+
"state": "undecided"
|
|
475
|
+
},
|
|
476
|
+
{
|
|
477
|
+
"upstream": "skills/qa-tc-reviewer/script-integration-reviewer.md",
|
|
478
|
+
"targets": [],
|
|
479
|
+
"state": "undecided"
|
|
480
|
+
},
|
|
481
|
+
{
|
|
482
|
+
"upstream": "skills/qa-tc-reviewer/script-non-functional-reviewer.md",
|
|
483
|
+
"targets": [],
|
|
484
|
+
"state": "undecided"
|
|
485
|
+
},
|
|
486
|
+
{
|
|
487
|
+
"upstream": "skills/qa-tc-reviewer/shared/read-doc-gap-inputs.md",
|
|
488
|
+
"targets": [],
|
|
489
|
+
"state": "undecided"
|
|
490
|
+
},
|
|
491
|
+
{
|
|
492
|
+
"upstream": "skills/qa-tc-reviewer/shared/review-file-template.md",
|
|
493
|
+
"targets": [],
|
|
494
|
+
"state": "undecided"
|
|
495
|
+
},
|
|
496
|
+
{
|
|
497
|
+
"upstream": "skills/qa-tc-reviewer/ui-test-reviewer.md",
|
|
498
|
+
"targets": [],
|
|
499
|
+
"state": "undecided"
|
|
500
|
+
}
|
|
501
|
+
],
|
|
502
|
+
"$decisions": {
|
|
503
|
+
"B5": {
|
|
504
|
+
"date": "2026-08-25",
|
|
505
|
+
"question": "Framework co nhan truc lane UI/API/E2E cua doi QC khong?",
|
|
506
|
+
"answer": "A — KHONG nhan lane. qc-analyze doc THANG tech-doc gop cap PRD da co san.",
|
|
507
|
+
"why": [
|
|
508
|
+
"Framework da co MOT tech-doc hop nhat phu dung thong tin ma 11 lane skill di boi tu file tho.",
|
|
509
|
+
"File tho (openapi.yaml / *.dbml / tdd/) la TUY DU AN — co the khong ton tai. Tech-doc thi framework tu sinh, luon co.",
|
|
510
|
+
"Truc lane la truc THU BA chong len layer x platform da co — moi lan chay QC phai chon to hop, khong ai nho noi."
|
|
511
|
+
],
|
|
512
|
+
"known_limit": "Tech-doc do AI viet TU PRD, nen chi bat duoc 'PRD lech tech-doc', KHONG bat duoc 'PRD lech he thong THAT dang chay'. Chi quan trong voi du an brownfield co openapi.yaml that. Duong nang cap = phuong an B: port dung 2-3 skill doc file tho khi gap nhu cau that.",
|
|
513
|
+
"also": "§12 GAP Register cua tech-doc: qc-analyze DOC de khong hoi lai, KHONG GHI vao. Ngoai le: muc loai `spec-defect` van la gap tai lieu."
|
|
514
|
+
},
|
|
515
|
+
"B6": {
|
|
516
|
+
"date": "2026-08-25",
|
|
517
|
+
"question": "Ba ky nang 'dung vai nhung dung sai tram' xu the nao?",
|
|
518
|
+
"answer": "a — chi bo sung cach tinh rui ro vao tram 2. (b) va (c) de danh.",
|
|
519
|
+
"findings": [
|
|
520
|
+
"risk-acceptance-analyzer TU KHAI output di vao TEST_PLAN.md = tram 2. Khong phai tranh chap.",
|
|
521
|
+
"coverage-analyzer TU KHAI khong chay duoc khi chua co TC nao = khong the o tram 1. Toi xep nham luc dau.",
|
|
522
|
+
"exploratory-charter KHONG phai trung lap — cung ky thuat, hai muc dich khac han. Toi bao sai luc dau."
|
|
523
|
+
],
|
|
524
|
+
"note": "Framework co KHUNG bang rui ro (test-plan.md §6, 4 cot trong); doi QC co CACH DIEN. B6=a la ghep hai cai."
|
|
525
|
+
},
|
|
526
|
+
"B7": {
|
|
527
|
+
"date": "2026-08-25",
|
|
528
|
+
"question": "Hinh dang ket qua dau ra cua /qc-analyze?",
|
|
529
|
+
"answers": {
|
|
530
|
+
"1": "B — hai ban: DOC_GAPS.md (nguoi doc) + {UC-ID}-qa-findings.yaml (Review Board). MOT nguon du lieu, hai mat.",
|
|
531
|
+
"2": "A — --standard chi tra bang 10 cot. KHONG kem TEST_PLAN (thuoc tram 2).",
|
|
532
|
+
"3": "3/5 lang kinh: D2 xu ly loi · D3 giao dien · D4 du lieu & cau hinh. D1 va D5 TAT (trung voi cho khac).",
|
|
533
|
+
"4": "GRANULARITY=auto (khong ep min theo tung UC) — tiet kiem ~3 lan cho tinh nang nho.",
|
|
534
|
+
"5": "In dong Next -> /qc-plan o cuoi lenh (doi QC quen 1 lenh ra ca 2 file)."
|
|
535
|
+
},
|
|
536
|
+
"design_notes": [
|
|
537
|
+
"auto_fixable LUON false + KHONG co --resume: gap phat hien SAU khi code xong, tu sua PRD luc do la sua sau lung ca day chuyen.",
|
|
538
|
+
"File findings RIENG, khong ghi chung {prd-slug}-findings.yaml — ghi chung pha applied_to_version cua refine-prd.",
|
|
539
|
+
"VERIFY=off khi goi review-fanout: gap den tu CA 4 ky nang VA fan-out, phai gop truoc roi tham dinh MOT lan (T6 can thay toan bo tap).",
|
|
540
|
+
"REQUIREMENT_ANALYSIS.md GIU ca o che do --standard: tram 2 va tram 3 doc no."
|
|
541
|
+
],
|
|
542
|
+
"cost": {
|
|
543
|
+
"measured": "14 lan chay that o repo doi QC: gap trung vi 12 (dai 2-28); cau hinh 4 nguon -> trung binh 9.4 gap; 13/14 lan ra ca TEST_PLAN.",
|
|
544
|
+
"estimated": "Bat 3 lang kinh ~3 lan token so voi khong bat. Sinh them ban findings ~+3-10%. Kich thuoc tai lieu NGUON van chua do duoc (submodule spec chua checkout)."
|
|
545
|
+
}
|
|
546
|
+
},
|
|
547
|
+
"B8": {
|
|
548
|
+
"date": "2026-08-25",
|
|
549
|
+
"question": "Bat lang kinh QC o buoc soat PRD, va chuyen 3 lang kinh len do — co toi uu hon?",
|
|
550
|
+
"answer": "BAT lang kinh QC o refine-prd. KHONG chuyen 3 lang kinh len. KHONG bo file findings o tram QC.",
|
|
551
|
+
"why": [
|
|
552
|
+
"Lang kinh QC goc chi hoi ve HINH THUC (AC co kiem chung duoc khong / co lap tang khong) — tra loi duoc tu PRD mot minh.",
|
|
553
|
+
"3 lang kinh cua tram QC KHONG chay duoc o thoi diem PRD: D3 can design-spec, D4 mot phan can tech-doc, doi chieu B5 can tech-doc — chua ton tai.",
|
|
554
|
+
"O thoi diem PRD khong phan biet duoc 'PRD thieu X' voi 'PRD de X cho design-spec'. So lieu: chi-PRD ra 14 gap, du 4 nguon ra 9.4.",
|
|
555
|
+
"Chi phi: +13% (PRD >=4 UC, da cham chan 12 luong) den +33% (PRD nho). So voi de o tram QC la +300% cua mot lan chay lon."
|
|
556
|
+
],
|
|
557
|
+
"note": "Loc hai tang: tang re (hinh thuc) chay o PRD, tang dat (noi dung) chay o QC tren dau vao da sach hon."
|
|
558
|
+
},
|
|
559
|
+
"B9": {
|
|
560
|
+
"date": "2026-08-25",
|
|
561
|
+
"question": "Neu mac dinh da ghi 2 file, --standard de lam gi nua?",
|
|
562
|
+
"answer": "BO --standard. Nang mac dinh len khuon 10 cot cua doi QC. Doi ten file DOC_GAPS.md -> DOC_GAP.md.",
|
|
563
|
+
"why": [
|
|
564
|
+
"Khong co cong cu nao doc file gap: grep toan repo doi QC ra DUNG 1 lan, va la mot dong comment trong file test.",
|
|
565
|
+
"Cot thu 10 (Giao cho doi) KHONG duoc buoc sau doc — no la thong tin cho NGUOI, khong phai khoa lien ket.",
|
|
566
|
+
"Ban 9 cot thieu dung hai thu PO can (cot Giao cho doi + o cau hoi 4 phan). Giu ban kem lam mac dinh = de nguoi khong biet co co nhan ban kem.",
|
|
567
|
+
"Hai template = hai cho phai bao tri, roi chung lech nhau — dung benh viec nay dang chua.",
|
|
568
|
+
"Mot che do ma khac biet duy nhat la 'ghi it file hon' thi khong phai che do."
|
|
569
|
+
],
|
|
570
|
+
"kept_from_framework": "Tu 'Blocker' (khong doi sang 'Critical') vi qc-run-test doc dung tu do de dat qc_owner=po.",
|
|
571
|
+
"filename": "DOC_GAP.md — bo chu S cho khop tu vung doi QC; khong hau to UC-ID vi thu muc {qc_dir}/{UC-ID}/{platform}/ da mang. Day cung la 1 trong 2 kieu doi QC dung that (4/14 file)."
|
|
572
|
+
},
|
|
573
|
+
"B10": {
|
|
574
|
+
"date": "2026-08-26",
|
|
575
|
+
"question": "D5 (doi chieu cheo tai lieu) — bat lai khong? Quyet dinh tat o B7 co dung?",
|
|
576
|
+
"answer": "BAT LAI, THU HEP con 2/4 cap. Quyet dinh tat o B7 la SAI.",
|
|
577
|
+
"scope_on": [
|
|
578
|
+
"PRD <-> design-spec/",
|
|
579
|
+
"bdd/{platform}/ <-> design-spec/"
|
|
580
|
+
],
|
|
581
|
+
"scope_off": [
|
|
582
|
+
"PRD <-> bdd/ (review-context B1 da lam)",
|
|
583
|
+
"PRD/bdd <-> tech-docs/ (qc-analyze §Doi chieu tai lieu ky thuat da lam)"
|
|
584
|
+
],
|
|
585
|
+
"why_the_original_decision_was_wrong": [
|
|
586
|
+
"Ly do tat ban dau 'trung nhieu' DUNG MOT NUA: D5 phu BON cap, chi HAI cap da co nguoi lam.",
|
|
587
|
+
"Hai cap con lai deu dinh design-spec/ — artifact DUY NHAT trong feature package ma khong tai lieu nao doi chieu NOI DUNG voi no.",
|
|
588
|
+
"generate-bdd chi kiem 'Built from PRD' = SO PHIEN BAN. Cung phien ban ma noi dung lech thi lot.",
|
|
589
|
+
"Sai vi suy tu AN TUONG thay vi dem danh sach. Bang kiem chung 31 cau hoi la thu dang le phai lam TRUOC khi quyet."
|
|
590
|
+
],
|
|
591
|
+
"cost": "Re hon mot lang kinh thuong: chi so 2 cap, va design-spec/ thi tram QC DA DOC tu truoc (nam trong danh sach nguon o Gate) — khong nap them file nao. Cau hinh hien tai ~3.5x.",
|
|
592
|
+
"trap": "design-spec/ (giao dien Designer ve) KHAC tech-docs/ (hop dong he thong). Hai ten tieng Viet nghe gan giong nhau; doc nham la hieu nguoc ket luan. tech-docs/ da duoc B5 phu."
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
}
|