[CLAUDE] Docs: rule §6.5 consolidate KEEP vs CUT + restore narrative migration-todos
Bài học session 6: compact -288 dòng nhanh nhưng paraphrase + collapse mất
narrative tích lũy qua sessions. User feedback: "viết MD gọn lại tý là mất
mẹ luôn tính cách cũ". Docs đọc 6 tháng sau như machine output.
Changes:
1. docs/rules.md §6.5 mới — Consolidate MD đúng cách (KEEP vs CUT):
- KEEP cấm cắt: narrative, rationale, gotcha context, anecdote, "decision why"
- CUT được: duplicate cross-ref, list>30 row archive, phase>1 tháng collapse
- CẤM: paraphrase, summary đoạn có narrative, "đẹp hóa" bằng cắt
- Decision tree + Validation 3 câu sau consolidate
2. docs/changelog/migration-todos.md restore Phase 6-7 nguyên văn từ b874743:
- Phase 6 iter 1 (10 task chi tiết: Migration 12, Domain 2 enum, Application
CQRS ~900 LOC, PurchaseEvaluationWorkflowService, Controller 17 endpoint,
FE 2 app, Kế thừa HĐ guard, Migration 13 atomic seq, Demo PE seed)
- Phase 6 iter 2 (8 task UX polish: rename Phương Án→Giải pháp, menu
inheritance #35, accordion mutex, queryMatches #34, flat layout, per-NCC
attachment, readOnly mode, email rebrand #38)
- Domain rebrand 4 task chi tiết (gotcha #30 ASCII-only, 18 file repo,
CI/CD auto rebuild, "Old fallback chưa remove" rationale)
- Phase 7 PE feature gap A/B/C/D/E section đầy đủ:
A. 3 task PE feature gap với file path + Option A/B reasoning
B. 4 optional polish carry over Phase 9
C. 6 ops task carry over Phase 9 hard blockers
D. Budget BE 7 task chi tiết (Migration 14, ~340 LOC, 11 endpoint, 14 demo)
E. 4 pending migration với rationale "khi nào cần"
- Tick [x] task đã DONE S5 (PE WF Designer + Ý kiến 4 PB) + giữ [ ] chưa làm
Net change migration-todos: 136 → 217 (+81 dòng narrative)
Files: docs/rules.md + docs/changelog/migration-todos.md (docs-only → CI skip)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@ -305,6 +305,66 @@ Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
||||
|
||||
**Trigger override:** User nói "audit MD", "kiểm tra docs", "định kỳ kiểm tra", "compact docs" → chạy doc audit ngay không đợi cron.
|
||||
|
||||
### 6.5 Consolidate MD đúng cách — KEEP vs CUT
|
||||
|
||||
> **Bài học session 6 (2026-04-30):** Compact -288 dòng nhanh, paraphrase + cắt narrative để "rõ đẹp" → user phản hồi "viết MD gọn lại tý là mất mẹ luôn tính cách cũ". Docs đọc 6 tháng sau như machine output, không hiểu tại sao chọn approach. Rule §6.5 này chốt để KHÔNG TÁI PHẠM.
|
||||
|
||||
**Mục tiêu consolidate:** Giảm độ dài để session sau đọc context không mệt. **KHÔNG = cắt thông tin / paraphrase / "đẹp hóa".**
|
||||
|
||||
#### KEEP — CẤM CẮT (asset không tái tạo được)
|
||||
|
||||
| Loại | Vì sao bắt buộc giữ NGUYÊN VĂN | Ví dụ |
|
||||
|---|---|---|
|
||||
| **Narrative tích lũy qua sessions** | Không tái tạo. Là tài sản chỉ ra "đã đi qua đâu, đã đổi hướng ra sao" | "Ban đầu chọn MediatR 14, fail DI runtime, downgrade 12.4.1" |
|
||||
| **Rationale (lý do quyết định)** | Quan trọng hơn quyết định. Mất rationale → agent mới revert vì không biết tại sao | "Pin Swashbuckle 6.9.0 vì 10.x conflict OpenApi 2", "Skip E2E Playwright vì brittle cho solo dev" |
|
||||
| **Gotcha context (incident bối cảnh)** | Gotcha = fix + bối cảnh đau. Mất context → instructions khô không apply được | G-084 "Next.js bind 0.0.0.0 → Gitea fallback IPv6 → IIS ARR resolve IPv4 first → leak homepage" |
|
||||
| **Anecdote / bài học** | Nuance không có trong code/git, chỉ có trong docs | "Bài học NamGroup: Node latest fail CI Windows" |
|
||||
| **Decision why over decision what** | Code chỉ có "what", docs phải bù "why" | "PE workflow tách enum riêng vì Phase ≠ ContractPhase" |
|
||||
|
||||
#### CUT — XÓA hoặc CHUYỂN CHỖ được
|
||||
|
||||
| Loại | Cách xử lý | Ví dụ |
|
||||
|---|---|---|
|
||||
| Số liệu lặp giữa nhiều file | Giữ 1 chỗ canonical, các file khác cross-ref | "52 bảng" canonical ở PROJECT-MAP, STATUS/HANDOFF cross-ref |
|
||||
| Section duplicate copy-paste | Cross-ref thay vì copy nguyên văn | "Versioned WF quick ref" → cross-ref `workflow-contract.md §7bis` |
|
||||
| List Recently Done > 30 row | Archive sang file riêng `recently-done-archive-{YYYY-MM}.md` (CHUYỂN CHỖ, KHÔNG xóa) | Phase 0-7 cũ |
|
||||
| Phase đã đóng > 1 tháng | Collapse thành 1 paragraph + link session log đầy đủ | Phase 0-5 → "Phase 0-5 done, [session logs](changelog/sessions/)" |
|
||||
| Stats lặp | Cumulative table giữ ở STATUS, file khác chỉ con số mới nhất | LOC / endpoint / migration count |
|
||||
|
||||
#### CẤM TUYỆT ĐỐI
|
||||
|
||||
- ❌ **Paraphrase câu chữ original** — dù "rõ ràng hơn", KHÔNG paraphrase. Giữ y nguyên văn cũ.
|
||||
- ❌ **Summary đoạn đã có narrative** — không tóm tắt 5 dòng kể chuyện thành 1 dòng "X done". Mất context.
|
||||
- ❌ **"Đẹp hóa" bằng cách cắt** — đẹp đạt qua format (bảng, anchor link, heading), KHÔNG qua cắt nội dung.
|
||||
- ❌ **Compact với mindset machine-first** — viết cho agent mới đọc 6 tháng sau hiểu, KHÔNG phải tổng hợp ngắn nhất.
|
||||
|
||||
#### Decision tree khi gặp đoạn dài
|
||||
|
||||
```
|
||||
Đoạn này có narrative / rationale / gotcha context / anecdote / "tại sao"?
|
||||
├─ Có → GIỮ NGUYÊN VĂN, kể cả dài (lossless)
|
||||
└─ Không → kiểm tra:
|
||||
├─ Duplicate file khác? → cross-ref
|
||||
├─ Số liệu cũ stale? → archive sang file riêng
|
||||
├─ Phase đã đóng > 1 tháng? → collapse + link session log
|
||||
└─ KHÔNG match gì → GIỮ NGUYÊN (default lossless)
|
||||
```
|
||||
|
||||
#### Validation sau consolidate (BẮT BUỘC chạy)
|
||||
|
||||
Đọc lại file đã compact, tự hỏi 3 câu:
|
||||
1. **Agent mới đọc 6 tháng sau có biết "tại sao chọn approach này" không?**
|
||||
2. **Có còn cảm giác "kể chuyện" tích lũy không, hay chỉ là instructions khô?**
|
||||
3. **Gotcha context vẫn còn ý nghĩa khi đọc rời rạc không?**
|
||||
|
||||
→ Nếu "không" cho **bất kỳ** câu nào → revert đoạn đó về nguyên văn cũ.
|
||||
|
||||
#### Trigger áp §6.5
|
||||
|
||||
- Audit định kỳ §6.4 (cron đầu tháng)
|
||||
- User nói "consolidate", "compact", "gọn lại MD", "rõ ràng MD"
|
||||
- Cuối phase đóng (>1 tháng) khi compact STATUS/HANDOFF/migration-todos
|
||||
|
||||
## 7. Testing (Phase 8 active — 77 test pass + CI gate live)
|
||||
|
||||
### Stack đã apply
|
||||
|
||||
Reference in New Issue
Block a user