@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.
- package/bin/self-check.js +124 -6
- package/bin/trace-schema.json +1199 -692
- package/commands/debug.md +3 -2
- package/commands/define-product.md +3 -2
- package/commands/dev-gen-test.md +37 -9
- package/commands/dev-run-test.md +37 -9
- package/commands/dev-smoke-test.md +3 -2
- package/commands/extend-prd.md +907 -0
- package/commands/extend-prd.tmpl +270 -0
- package/commands/fix-bug.md +37 -9
- package/commands/generate-architecture.md +3 -2
- package/commands/generate-bdd.md +56 -13
- package/commands/generate-bdd.tmpl +18 -3
- package/commands/generate-code.md +73 -16
- package/commands/generate-code.tmpl +36 -7
- package/commands/generate-design-spec.md +3 -2
- package/commands/generate-prd.md +28 -2
- package/commands/generate-prd.tmpl +25 -0
- package/commands/generate-spec-manifest.md +3 -2
- package/commands/generate-tech-docs.md +3 -2
- package/commands/learn.md +3 -2
- package/commands/map-testids.md +3 -2
- package/commands/propose-scenario.md +55 -3
- package/commands/propose-scenario.tmpl +52 -1
- package/commands/qc-analyze.md +3 -2
- package/commands/qc-design-test.md +4 -2
- package/commands/qc-design-test.tmpl +1 -0
- package/commands/qc-plan.md +3 -2
- package/commands/qc-report.md +3 -2
- package/commands/qc-review.md +3 -2
- package/commands/qc-run-test.md +50 -10
- package/commands/qc-run-test.tmpl +13 -1
- package/commands/refine-prd.md +3 -2
- package/commands/report-bug.md +3 -2
- package/commands/review-code.md +7 -5
- package/commands/review-code.tmpl +4 -3
- package/commands/review-context.md +6 -4
- package/commands/review-context.tmpl +3 -2
- package/commands/review-tech-docs.md +3 -2
- package/commands/setup-ai-first.md +3 -2
- package/commands/sync.md +40 -16
- package/commands/sync.tmpl +37 -14
- package/commands/update-framework.md +3 -2
- package/commands/validate-traces.md +318 -33
- package/commands/validate-traces.tmpl +315 -31
- package/core/FRAMEWORK_VERSION +1 -1
- package/core/commands/debug.md +3 -2
- package/core/commands/define-product.md +3 -2
- package/core/commands/dev-gen-test.md +37 -9
- package/core/commands/dev-run-test.md +37 -9
- package/core/commands/dev-smoke-test.md +3 -2
- package/core/commands/extend-prd.md +907 -0
- package/core/commands/fix-bug.md +37 -9
- package/core/commands/generate-architecture.md +3 -2
- package/core/commands/generate-bdd.md +56 -13
- package/core/commands/generate-code.md +73 -16
- package/core/commands/generate-design-spec.md +3 -2
- package/core/commands/generate-prd.md +28 -2
- package/core/commands/generate-spec-manifest.md +3 -2
- package/core/commands/generate-tech-docs.md +3 -2
- package/core/commands/learn.md +3 -2
- package/core/commands/map-testids.md +3 -2
- package/core/commands/propose-scenario.md +55 -3
- package/core/commands/qc-analyze.md +3 -2
- package/core/commands/qc-design-test.md +4 -2
- package/core/commands/qc-plan.md +3 -2
- package/core/commands/qc-report.md +3 -2
- package/core/commands/qc-review.md +3 -2
- package/core/commands/qc-run-test.md +50 -10
- package/core/commands/refine-prd.md +3 -2
- package/core/commands/report-bug.md +3 -2
- package/core/commands/review-code.md +7 -5
- package/core/commands/review-context.md +6 -4
- package/core/commands/review-tech-docs.md +3 -2
- package/core/commands/setup-ai-first.md +3 -2
- package/core/commands/sync.md +40 -16
- package/core/commands/update-framework.md +3 -2
- package/core/commands/validate-traces.md +318 -33
- package/core/rules/workflow.md +18 -0
- package/core/steps/report-footer.md +3 -2
- package/core/steps/trace-mirror.md +34 -7
- package/core/templates/feature.template +1 -1
- package/docs/01-getting-started/installation.md +18 -1
- package/docs/01-getting-started/what-is-sdd.md +4 -2
- package/docs/02-concepts/architecture.md +27 -3
- package/docs/02-concepts/pipeline-steps/02-specification.md +39 -3
- package/docs/02-concepts/pipeline-steps/04-bdd.md +24 -2
- package/docs/02-concepts/pipeline-steps/05-tech-docs.md +18 -1
- package/docs/02-concepts/pipeline-steps/06-code.md +35 -4
- package/docs/02-concepts/pipeline-steps/09-validate-traces.md +137 -12
- package/docs/02-concepts/pipeline-steps/10-feedback-loop.md +59 -3
- package/docs/02-concepts/roles-and-hitl.md +1 -1
- package/docs/02-concepts/traceability.md +126 -117
- package/docs/03-guides/developer.md +20 -4
- package/docs/03-guides/product-owner.md +72 -68
- package/docs/03-guides/tester-qa.md +81 -70
- package/docs/04-reference/commands.md +134 -105
- package/docs/04-reference/configuration.md +146 -94
- package/docs/04-reference/trace-schema.md +26 -9
- package/docs/explain/02-generate-prd.md +80 -78
- package/docs/explain/02b-extend-prd.md +125 -0
- package/docs/explain/03-refine-prd.md +86 -86
- package/docs/explain/04-review-context.md +18 -1
- package/docs/explain/06-generate-bdd.md +23 -0
- package/docs/explain/08-review-tech-docs.md +20 -5
- package/docs/explain/10-review-code.md +36 -2
- package/docs/explain/19-qc-run-test.md +87 -67
- package/docs/explain/21-validate-traces.md +74 -68
- package/docs/explain/23-fix-bug.md +19 -3
- package/docs/explain/26-propose-scenario.md +70 -63
- package/docs/explain/README.md +135 -134
- package/package.json +50 -50
- package/rules/workflow.md +18 -0
- package/steps/report-footer.md +3 -2
- package/steps/trace-mirror.md +34 -7
- package/templates/feature.template +1 -1
|
@@ -446,7 +446,7 @@ Tìm lệnh hiện tại trong bảng phase dưới đây và đánh dấu **pha
|
|
|
446
446
|
| Phase | Commands |
|
|
447
447
|
|-------|----------|
|
|
448
448
|
| Discovery | `/define-product` |
|
|
449
|
-
| PRD | `/generate-prd` · `/refine-prd` · `/review-context` (PRD) |
|
|
449
|
+
| PRD | `/generate-prd` · `/extend-prd` · `/refine-prd` · `/review-context` (PRD) |
|
|
450
450
|
| Design Spec | `/generate-design-spec` |
|
|
451
451
|
| BDD | `/generate-bdd` · `/review-context` (BDD) |
|
|
452
452
|
| Tech Design | `/generate-tech-docs` · `/map-testids` · `/review-tech-docs` |
|
|
@@ -471,6 +471,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
471
471
|
| /setup-ai-first | `/define-product` để bắt đầu feature đầu tiên |
|
|
472
472
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
473
473
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
474
|
+
| /extend-prd | `/refine-prd {prd-file}` (soi phần vừa thêm) rồi `/review-context {prd-file}` → PO duyệt → `/generate-bdd` **chỉ cho UC MỚI**; UC cũ dùng `/validate-traces --realign-prd-version {UC-ID}` |
|
|
474
475
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
475
476
|
| /review-context (PRD) | Khi 0 critical → PO đặt `Status: approved`, rồi FE/App: `/generate-design-spec {prd-file}` (→ design sign-off → BDD); BE: `/generate-bdd {prd-file}`. Còn critical/NEEDS_FIX → sửa PRD (giữ draft) |
|
|
476
477
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
@@ -496,7 +497,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
496
497
|
| /fix-bug | `/dev-run-test {UC-ID}` (dev_selftest vừa reset về not_run) → tạo PR; nếu fix một `{BUG-ID}` → QC chạy `/qc-run-test {UC-ID}` để verify + đóng bug |
|
|
497
498
|
| /debug | `/fix-bug {ticket-id}` nếu cần sửa |
|
|
498
499
|
| /report-bug | Gửi cho dev (`/fix-bug {BUG-ID}`); nếu thiếu coverage → `/propose-scenario {UC-ID}` |
|
|
499
|
-
| /propose-scenario |
|
|
500
|
+
| /propose-scenario | **Case A** (thiếu scenario cho AC có sẵn) → báo PO/Dev review trong `feedback/bdd-proposals/`; `/generate-bdd` tự chèn khi `Status: accepted`. **Case B** (requirement mới) → `feedback/prd-change-requests/` — PO phải đưa vào PRD trước, KHÔNG tự vào BDD được; `/validate-traces` nhắc lại kèm số ngày chờ chừng nào `Status: Open` |
|
|
500
501
|
| /learn | Tiếp tục làm việc — lesson áp dụng ở lệnh kế tiếp |
|
|
501
502
|
| /sync | `/validate-traces` để xem độ phủ đầy đủ; xử lý mọi `📥 tester feedback` được nêu |
|
|
502
503
|
| /update-framework | Review `git diff .agent/`, commit; `/sync` để đồng bộ nội dung dự án |
|
package/commands/sync.md
CHANGED
|
@@ -261,16 +261,37 @@ Với mỗi entry trong danh sách đó:
|
|
|
261
261
|
|
|
262
262
|
## Step 4 — Check `.gitignore`
|
|
263
263
|
|
|
264
|
-
|
|
265
|
-
- `.trace/` trong `.gitignore` của repo hiện tại (hoặc `.git/info/exclude`)
|
|
266
|
-
- `.living-docs/` trong `.gitignore` của **specs module** (khi `setup.spec_source` được set)
|
|
264
|
+
*Bước này kiểm **hai chiều ngược nhau**, và nhầm chiều là mất dữ liệu — đọc bảng trước:*
|
|
267
265
|
|
|
268
|
-
|
|
266
|
+
| Đường dẫn | Vai trò | Kỳ vọng |
|
|
267
|
+
|---|---|---|
|
|
268
|
+
| `{paths.trace_dir}` (`.trace/` hoặc `{spec_source}/.trace/`) | **AUTHORITATIVE** — TSV + `trace-history.jsonl`, không regenerate được | **PHẢI commit** — gitignore nó là **lỗi nghiêm trọng** |
|
|
269
|
+
| `.trace-mirror/` | bản sao tiện cho panel VS Code | phải gitignore |
|
|
270
|
+
| `.living-docs/` | report sinh ra | phải gitignore |
|
|
271
|
+
|
|
272
|
+
**4a. Cảnh báo mềm — mirror chưa gitignore.**
|
|
273
|
+
Kiểm `.trace-mirror/` trong `.gitignore` của repo hiện tại (hoặc `.git/info/exclude`), và `.living-docs/` trong `.gitignore` của **specs module** (khi `setup.spec_source` được set). Thiếu cái nào:
|
|
274
|
+
```
|
|
275
|
+
⚠️ Mirror chưa gitignore — chúng được sinh ra, đừng bao giờ commit:
|
|
276
|
+
echo ".trace-mirror/" >> .gitignore
|
|
277
|
+
echo ".living-docs/" >> {spec_source}/.gitignore # specs module (nếu có spec_source)
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
**4b. 🔴 Báo động — sổ gốc ĐANG bị bỏ qua.**
|
|
281
|
+
Phân giải `{paths.trace_dir}`; nếu nó nằm trong một git repo, chạy `git -C {repo} check-ignore -q {trace_dir}`. **Trúng** (exit 0) → in ngay, mức chặn:
|
|
269
282
|
```
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
283
|
+
🔴 NGUY HIỂM — sổ gốc trace ĐANG bị git bỏ qua: {paths.trace_dir}
|
|
284
|
+
Toàn bộ trạng thái theo dõi (spec_ver · gen_ver · implemented_by · test_count ·
|
|
285
|
+
dev_selftest · qc_status) VÀ trace-history.jsonl KHÔNG được lưu vào git.
|
|
286
|
+
Người khác clone repo về sẽ không thấy gì, và lịch sử thì KHÔNG dựng lại được.
|
|
287
|
+
|
|
288
|
+
Sửa:
|
|
289
|
+
1. Gỡ dòng khớp `.trace` khỏi .gitignore của {repo}
|
|
290
|
+
2. git -C {repo} add -f {trace_dir} && git -C {repo} commit -m "restore trace state"
|
|
291
|
+
Nguyên nhân thường gặp: bản trước v0.4.3 gọi panel mirror là `.trace` (trùng tên sổ gốc),
|
|
292
|
+
nên gợi ý "gitignore .trace/" của chính lệnh này có thể đã nhắm trúng sổ gốc.
|
|
273
293
|
```
|
|
294
|
+
> **Vì sao cần báo động này:** trước v0.4.3, mirror và sổ gốc **cùng tên `.trace`**. Khi dev mở thẳng spec repo làm workspace thì hai path bằng nhau — và Step 4 (bản cũ) gợi ý gitignore theo **tên**, không theo vai trò. Làm theo là mất sổ gốc, **im lặng**: máy vẫn chạy, dashboard vẫn có số; chỉ người thứ hai clone về mới phát hiện. Bản v0.4.3 đổi tên mirror thành `.trace-mirror` để cái bẫy biến mất, nhưng **dự án đã dính từ trước thì vẫn dính** — 4b là để tìm ra chúng.
|
|
274
295
|
|
|
275
296
|
---
|
|
276
297
|
|
|
@@ -280,12 +301,12 @@ Nếu thiếu cái nào:
|
|
|
280
301
|
|
|
281
302
|
**Phân giải Living Docs home (cùng quy tắc như `/validate-traces`):**
|
|
282
303
|
- `living_docs_dir` = `{spec_source}/.living-docs` nếu `setup.spec_source` được set, else `.living-docs` ở umbrella root. *(Specs module được mount trong mọi service workspace, nên panel phân giải nó kể cả khi dev mở một service submodule đơn.)*
|
|
283
|
-
- `panel_mirror` = `./.trace` ở gốc workspace hiện tại.
|
|
304
|
+
- `panel_mirror` = `./.trace-mirror` ở gốc workspace hiện tại. *(Cố ý KHÁC tên `.trace` — xem Step 4.)*
|
|
284
305
|
|
|
285
306
|
1. Với mỗi service trong danh sách **đã làm phẳng** ở Step 3 (gồm cả các submodule nằm dưới `by_prd_slug` — bỏ sót chúng là mất trace của các repo chia theo feature): nếu `{service.path}/.trace/` có file `.tsv` → copy chúng vào `{living_docs_dir}/{service-name}/` (tạo dir nếu cần).
|
|
286
307
|
2. Ghi merged `{living_docs_dir}/trace-report.json`:
|
|
287
308
|
- Tổng hợp TSV `.trace/` của mỗi service, thêm field `"service"` **và `"platform"`** (suy từ tên file `{UC-ID}-{platform}.tsv`) cho mỗi row, tính lại summary totals. **Không dedupe theo `sc_id` giữa các platform** — `web·SC1` và `system·SC1` là 2 row khác nhau; nhờ field `platform` dashboard hiển thị tách bạch coverage từng platform.
|
|
288
|
-
3. **Mirror tới panel location:** copy `{living_docs_dir}/trace-report.json` (+ TSV namespaced) → `{panel_mirror}/` để panel trong repo đang mở không rỗng. Skip nếu `panel_mirror` đã bằng `living_docs_dir
|
|
309
|
+
3. **Mirror tới panel location:** copy `{living_docs_dir}/trace-report.json` (+ TSV namespaced) → `{panel_mirror}/` để panel trong repo đang mở không rỗng. Skip nếu `panel_mirror` đã bằng `living_docs_dir`, hoặc nếu `{paths.trace_dir}` đã nằm trong workspace hiện tại (panel đọc thẳng ở đó). **KHÔNG** copy `trace-history.jsonl` — nó là dữ liệu tích luỹ, không phải thứ sinh lại được.
|
|
289
310
|
|
|
290
311
|
In kết quả sync:
|
|
291
312
|
```
|
|
@@ -348,7 +369,7 @@ Tìm lệnh hiện tại trong bảng phase dưới đây và đánh dấu **pha
|
|
|
348
369
|
| Phase | Commands |
|
|
349
370
|
|-------|----------|
|
|
350
371
|
| Discovery | `/define-product` |
|
|
351
|
-
| PRD | `/generate-prd` · `/refine-prd` · `/review-context` (PRD) |
|
|
372
|
+
| PRD | `/generate-prd` · `/extend-prd` · `/refine-prd` · `/review-context` (PRD) |
|
|
352
373
|
| Design Spec | `/generate-design-spec` |
|
|
353
374
|
| BDD | `/generate-bdd` · `/review-context` (BDD) |
|
|
354
375
|
| Tech Design | `/generate-tech-docs` · `/map-testids` · `/review-tech-docs` |
|
|
@@ -373,6 +394,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
373
394
|
| /setup-ai-first | `/define-product` để bắt đầu feature đầu tiên |
|
|
374
395
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
375
396
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
397
|
+
| /extend-prd | `/refine-prd {prd-file}` (soi phần vừa thêm) rồi `/review-context {prd-file}` → PO duyệt → `/generate-bdd` **chỉ cho UC MỚI**; UC cũ dùng `/validate-traces --realign-prd-version {UC-ID}` |
|
|
376
398
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
377
399
|
| /review-context (PRD) | Khi 0 critical → PO đặt `Status: approved`, rồi FE/App: `/generate-design-spec {prd-file}` (→ design sign-off → BDD); BE: `/generate-bdd {prd-file}`. Còn critical/NEEDS_FIX → sửa PRD (giữ draft) |
|
|
378
400
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
@@ -398,7 +420,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
398
420
|
| /fix-bug | `/dev-run-test {UC-ID}` (dev_selftest vừa reset về not_run) → tạo PR; nếu fix một `{BUG-ID}` → QC chạy `/qc-run-test {UC-ID}` để verify + đóng bug |
|
|
399
421
|
| /debug | `/fix-bug {ticket-id}` nếu cần sửa |
|
|
400
422
|
| /report-bug | Gửi cho dev (`/fix-bug {BUG-ID}`); nếu thiếu coverage → `/propose-scenario {UC-ID}` |
|
|
401
|
-
| /propose-scenario |
|
|
423
|
+
| /propose-scenario | **Case A** (thiếu scenario cho AC có sẵn) → báo PO/Dev review trong `feedback/bdd-proposals/`; `/generate-bdd` tự chèn khi `Status: accepted`. **Case B** (requirement mới) → `feedback/prd-change-requests/` — PO phải đưa vào PRD trước, KHÔNG tự vào BDD được; `/validate-traces` nhắc lại kèm số ngày chờ chừng nào `Status: Open` |
|
|
402
424
|
| /learn | Tiếp tục làm việc — lesson áp dụng ở lệnh kế tiếp |
|
|
403
425
|
| /sync | `/validate-traces` để xem độ phủ đầy đủ; xử lý mọi `📥 tester feedback` được nêu |
|
|
404
426
|
| /update-framework | Review `git diff .agent/`, commit; `/sync` để đồng bộ nội dung dự án |
|
|
@@ -445,18 +467,20 @@ Service Configs
|
|
|
445
467
|
→ create it so /dev-run-test works correctly
|
|
446
468
|
|
|
447
469
|
.gitignore
|
|
448
|
-
✅ .trace/
|
|
449
|
-
|
|
470
|
+
✅ .trace-mirror/ + .living-docs/ gitignored (mirror — sinh lại được)
|
|
471
|
+
✅ {paths.trace_dir}/ KHÔNG bị gitignore (sổ gốc — phải commit)
|
|
472
|
+
(hoặc: ⚠️ Thêm .trace-mirror/ vào .gitignore)
|
|
473
|
+
(hoặc: 🔴 NGUY HIỂM — sổ gốc {paths.trace_dir} đang bị gitignore, xem Step 4b)
|
|
450
474
|
|
|
451
475
|
Living Docs
|
|
452
|
-
✅
|
|
453
|
-
(
|
|
476
|
+
✅ {panel_mirror}/ synced — {N} TSVs across {S} services
|
|
477
|
+
(chạy /validate-traces để có report coverage đầy đủ)
|
|
454
478
|
|
|
455
479
|
Spec Manifest
|
|
456
480
|
✅ spec-manifest.yaml — {N} features indexed
|
|
457
481
|
|
|
458
482
|
---
|
|
459
483
|
Status : ✅ Complete | ⚠️ Warnings
|
|
460
|
-
Output Artifacts: updated .trace/ (
|
|
484
|
+
Output Artifacts: updated .trace-mirror/ (panel mirror), spec-manifest.yaml
|
|
461
485
|
Next : /validate-traces (full coverage check) | /generate-code {UC-ID} (start coding)
|
|
462
486
|
```
|
package/commands/sync.tmpl
CHANGED
|
@@ -261,16 +261,37 @@ Với mỗi entry trong danh sách đó:
|
|
|
261
261
|
|
|
262
262
|
## Step 4 — Check `.gitignore`
|
|
263
263
|
|
|
264
|
-
|
|
265
|
-
- `.trace/` trong `.gitignore` của repo hiện tại (hoặc `.git/info/exclude`)
|
|
266
|
-
- `.living-docs/` trong `.gitignore` của **specs module** (khi `setup.spec_source` được set)
|
|
264
|
+
*Bước này kiểm **hai chiều ngược nhau**, và nhầm chiều là mất dữ liệu — đọc bảng trước:*
|
|
267
265
|
|
|
268
|
-
|
|
266
|
+
| Đường dẫn | Vai trò | Kỳ vọng |
|
|
267
|
+
|---|---|---|
|
|
268
|
+
| `{paths.trace_dir}` (`.trace/` hoặc `{spec_source}/.trace/`) | **AUTHORITATIVE** — TSV + `trace-history.jsonl`, không regenerate được | **PHẢI commit** — gitignore nó là **lỗi nghiêm trọng** |
|
|
269
|
+
| `.trace-mirror/` | bản sao tiện cho panel VS Code | phải gitignore |
|
|
270
|
+
| `.living-docs/` | report sinh ra | phải gitignore |
|
|
271
|
+
|
|
272
|
+
**4a. Cảnh báo mềm — mirror chưa gitignore.**
|
|
273
|
+
Kiểm `.trace-mirror/` trong `.gitignore` của repo hiện tại (hoặc `.git/info/exclude`), và `.living-docs/` trong `.gitignore` của **specs module** (khi `setup.spec_source` được set). Thiếu cái nào:
|
|
274
|
+
```
|
|
275
|
+
⚠️ Mirror chưa gitignore — chúng được sinh ra, đừng bao giờ commit:
|
|
276
|
+
echo ".trace-mirror/" >> .gitignore
|
|
277
|
+
echo ".living-docs/" >> {spec_source}/.gitignore # specs module (nếu có spec_source)
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
**4b. 🔴 Báo động — sổ gốc ĐANG bị bỏ qua.**
|
|
281
|
+
Phân giải `{paths.trace_dir}`; nếu nó nằm trong một git repo, chạy `git -C {repo} check-ignore -q {trace_dir}`. **Trúng** (exit 0) → in ngay, mức chặn:
|
|
269
282
|
```
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
283
|
+
🔴 NGUY HIỂM — sổ gốc trace ĐANG bị git bỏ qua: {paths.trace_dir}
|
|
284
|
+
Toàn bộ trạng thái theo dõi (spec_ver · gen_ver · implemented_by · test_count ·
|
|
285
|
+
dev_selftest · qc_status) VÀ trace-history.jsonl KHÔNG được lưu vào git.
|
|
286
|
+
Người khác clone repo về sẽ không thấy gì, và lịch sử thì KHÔNG dựng lại được.
|
|
287
|
+
|
|
288
|
+
Sửa:
|
|
289
|
+
1. Gỡ dòng khớp `.trace` khỏi .gitignore của {repo}
|
|
290
|
+
2. git -C {repo} add -f {trace_dir} && git -C {repo} commit -m "restore trace state"
|
|
291
|
+
Nguyên nhân thường gặp: bản trước v0.4.3 gọi panel mirror là `.trace` (trùng tên sổ gốc),
|
|
292
|
+
nên gợi ý "gitignore .trace/" của chính lệnh này có thể đã nhắm trúng sổ gốc.
|
|
273
293
|
```
|
|
294
|
+
> **Vì sao cần báo động này:** trước v0.4.3, mirror và sổ gốc **cùng tên `.trace`**. Khi dev mở thẳng spec repo làm workspace thì hai path bằng nhau — và Step 4 (bản cũ) gợi ý gitignore theo **tên**, không theo vai trò. Làm theo là mất sổ gốc, **im lặng**: máy vẫn chạy, dashboard vẫn có số; chỉ người thứ hai clone về mới phát hiện. Bản v0.4.3 đổi tên mirror thành `.trace-mirror` để cái bẫy biến mất, nhưng **dự án đã dính từ trước thì vẫn dính** — 4b là để tìm ra chúng.
|
|
274
295
|
|
|
275
296
|
---
|
|
276
297
|
|
|
@@ -280,12 +301,12 @@ Nếu thiếu cái nào:
|
|
|
280
301
|
|
|
281
302
|
**Phân giải Living Docs home (cùng quy tắc như `/validate-traces`):**
|
|
282
303
|
- `living_docs_dir` = `{spec_source}/.living-docs` nếu `setup.spec_source` được set, else `.living-docs` ở umbrella root. *(Specs module được mount trong mọi service workspace, nên panel phân giải nó kể cả khi dev mở một service submodule đơn.)*
|
|
283
|
-
- `panel_mirror` = `./.trace` ở gốc workspace hiện tại.
|
|
304
|
+
- `panel_mirror` = `./.trace-mirror` ở gốc workspace hiện tại. *(Cố ý KHÁC tên `.trace` — xem Step 4.)*
|
|
284
305
|
|
|
285
306
|
1. Với mỗi service trong danh sách **đã làm phẳng** ở Step 3 (gồm cả các submodule nằm dưới `by_prd_slug` — bỏ sót chúng là mất trace của các repo chia theo feature): nếu `{service.path}/.trace/` có file `.tsv` → copy chúng vào `{living_docs_dir}/{service-name}/` (tạo dir nếu cần).
|
|
286
307
|
2. Ghi merged `{living_docs_dir}/trace-report.json`:
|
|
287
308
|
- Tổng hợp TSV `.trace/` của mỗi service, thêm field `"service"` **và `"platform"`** (suy từ tên file `{UC-ID}-{platform}.tsv`) cho mỗi row, tính lại summary totals. **Không dedupe theo `sc_id` giữa các platform** — `web·SC1` và `system·SC1` là 2 row khác nhau; nhờ field `platform` dashboard hiển thị tách bạch coverage từng platform.
|
|
288
|
-
3. **Mirror tới panel location:** copy `{living_docs_dir}/trace-report.json` (+ TSV namespaced) → `{panel_mirror}/` để panel trong repo đang mở không rỗng. Skip nếu `panel_mirror` đã bằng `living_docs_dir
|
|
309
|
+
3. **Mirror tới panel location:** copy `{living_docs_dir}/trace-report.json` (+ TSV namespaced) → `{panel_mirror}/` để panel trong repo đang mở không rỗng. Skip nếu `panel_mirror` đã bằng `living_docs_dir`, hoặc nếu `{paths.trace_dir}` đã nằm trong workspace hiện tại (panel đọc thẳng ở đó). **KHÔNG** copy `trace-history.jsonl` — nó là dữ liệu tích luỹ, không phải thứ sinh lại được.
|
|
289
310
|
|
|
290
311
|
In kết quả sync:
|
|
291
312
|
```
|
|
@@ -344,18 +365,20 @@ Service Configs
|
|
|
344
365
|
→ create it so /dev-run-test works correctly
|
|
345
366
|
|
|
346
367
|
.gitignore
|
|
347
|
-
✅ .trace/
|
|
348
|
-
|
|
368
|
+
✅ .trace-mirror/ + .living-docs/ gitignored (mirror — sinh lại được)
|
|
369
|
+
✅ {paths.trace_dir}/ KHÔNG bị gitignore (sổ gốc — phải commit)
|
|
370
|
+
(hoặc: ⚠️ Thêm .trace-mirror/ vào .gitignore)
|
|
371
|
+
(hoặc: 🔴 NGUY HIỂM — sổ gốc {paths.trace_dir} đang bị gitignore, xem Step 4b)
|
|
349
372
|
|
|
350
373
|
Living Docs
|
|
351
|
-
✅
|
|
352
|
-
(
|
|
374
|
+
✅ {panel_mirror}/ synced — {N} TSVs across {S} services
|
|
375
|
+
(chạy /validate-traces để có report coverage đầy đủ)
|
|
353
376
|
|
|
354
377
|
Spec Manifest
|
|
355
378
|
✅ spec-manifest.yaml — {N} features indexed
|
|
356
379
|
|
|
357
380
|
---
|
|
358
381
|
Status : ✅ Complete | ⚠️ Warnings
|
|
359
|
-
Output Artifacts: updated .trace/ (
|
|
382
|
+
Output Artifacts: updated .trace-mirror/ (panel mirror), spec-manifest.yaml
|
|
360
383
|
Next : /validate-traces (full coverage check) | /generate-code {UC-ID} (start coding)
|
|
361
384
|
```
|
|
@@ -198,7 +198,7 @@ Tìm lệnh hiện tại trong bảng phase dưới đây và đánh dấu **pha
|
|
|
198
198
|
| Phase | Commands |
|
|
199
199
|
|-------|----------|
|
|
200
200
|
| Discovery | `/define-product` |
|
|
201
|
-
| PRD | `/generate-prd` · `/refine-prd` · `/review-context` (PRD) |
|
|
201
|
+
| PRD | `/generate-prd` · `/extend-prd` · `/refine-prd` · `/review-context` (PRD) |
|
|
202
202
|
| Design Spec | `/generate-design-spec` |
|
|
203
203
|
| BDD | `/generate-bdd` · `/review-context` (BDD) |
|
|
204
204
|
| Tech Design | `/generate-tech-docs` · `/map-testids` · `/review-tech-docs` |
|
|
@@ -223,6 +223,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
223
223
|
| /setup-ai-first | `/define-product` để bắt đầu feature đầu tiên |
|
|
224
224
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
225
225
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
226
|
+
| /extend-prd | `/refine-prd {prd-file}` (soi phần vừa thêm) rồi `/review-context {prd-file}` → PO duyệt → `/generate-bdd` **chỉ cho UC MỚI**; UC cũ dùng `/validate-traces --realign-prd-version {UC-ID}` |
|
|
226
227
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
227
228
|
| /review-context (PRD) | Khi 0 critical → PO đặt `Status: approved`, rồi FE/App: `/generate-design-spec {prd-file}` (→ design sign-off → BDD); BE: `/generate-bdd {prd-file}`. Còn critical/NEEDS_FIX → sửa PRD (giữ draft) |
|
|
228
229
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
@@ -248,7 +249,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
248
249
|
| /fix-bug | `/dev-run-test {UC-ID}` (dev_selftest vừa reset về not_run) → tạo PR; nếu fix một `{BUG-ID}` → QC chạy `/qc-run-test {UC-ID}` để verify + đóng bug |
|
|
249
250
|
| /debug | `/fix-bug {ticket-id}` nếu cần sửa |
|
|
250
251
|
| /report-bug | Gửi cho dev (`/fix-bug {BUG-ID}`); nếu thiếu coverage → `/propose-scenario {UC-ID}` |
|
|
251
|
-
| /propose-scenario |
|
|
252
|
+
| /propose-scenario | **Case A** (thiếu scenario cho AC có sẵn) → báo PO/Dev review trong `feedback/bdd-proposals/`; `/generate-bdd` tự chèn khi `Status: accepted`. **Case B** (requirement mới) → `feedback/prd-change-requests/` — PO phải đưa vào PRD trước, KHÔNG tự vào BDD được; `/validate-traces` nhắc lại kèm số ngày chờ chừng nào `Status: Open` |
|
|
252
253
|
| /learn | Tiếp tục làm việc — lesson áp dụng ở lệnh kế tiếp |
|
|
253
254
|
| /sync | `/validate-traces` để xem độ phủ đầy đủ; xử lý mọi `📥 tester feedback` được nêu |
|
|
254
255
|
| /update-framework | Review `git diff .agent/`, commit; `/sync` để đồng bộ nội dung dự án |
|