[CLAUDE] Docs+Skill: chốt session 6 — 3 skill refresh + 2 rule audit định kỳ
Pure docs work — 0 thay đổi code/test. 77 test vẫn pass (Domain 54 + Infra 23). 3 skill refresh stale (audit định kỳ §6.4 + §9.4 phát hiện): - form-engine: "Phase 2 MVP missing PDF + form builder" → "Tier 3 feature-complete" + bỏ section duplicate "Gen mã HĐ chưa implement" (đã DONE Phase 3+6) - permission-matrix: 12 menu cũ → ~60 menu key (Bg_*/Pe_*/PeWf_*/Catalogs) + inheritance roots 4 group + Budgets KHÔNG inherit (gotcha #35) - ef-core-migration: "24 DbSet" → "52 bảng (15 migration)" 2 rule mới chốt: - rules.md §6.4 — Audit + compact MD định kỳ (cadence + checklist + anti-pattern) Triết lý: KHÔNG rewrite toàn bộ. Compact + patch drift. Cron solution-erp-skill-audit-monthly mở rộng scope (skill + doc drift combined) - rules.md §9.4 mở rộng cross-ref §6.4 Update STATUS Session 7+ priority + HANDOFF cảnh báo session 7 + migration-todos Phase 9 Session 6 done sub. Cron 2026-05-01 fire mai → combined audit theo checklist §6.4 + §9.4. Session log đầy đủ: docs/changelog/sessions/2026-04-30-chot-session-6-md-audit-compact.md Commit MD-only → CI skip (path filter gotcha #41). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@ -0,0 +1,157 @@
|
||||
# Session log — 2026-04-30 chốt session 6 — MD audit + compact + 3 skill refresh + 2 rule mới
|
||||
|
||||
**Topic:** Pure docs work — audit toàn bộ MD, compact 3 file core, refresh 3 skill stale, chốt 2 rule mới (timing test §7 + audit định kỳ §6.4). 0 thay đổi code/test.
|
||||
|
||||
**Dev:** Claude (Opus 4.7) + user (pqhuy1987@gmail.com)
|
||||
**Duration:** ~2 giờ (bao gồm Q&A về unit test philosophy)
|
||||
**Base commit:** `b874743` (chốt session 5)
|
||||
|
||||
## Commits session 6
|
||||
|
||||
- `d2298fa` — Docs: chốt rule timing unit test (1 bảng 5-row compact)
|
||||
- `f24acb6` — Docs: compact 3 file core (-273 dòng tổng)
|
||||
- (commit chốt session 6 này)
|
||||
|
||||
## A. Q&A unit test philosophy
|
||||
|
||||
User hỏi:
|
||||
1. Ý nghĩa unit test? Lợi ích?
|
||||
2. Khi spec đổi (không phải bug) thì test thế nào?
|
||||
3. Khi bug fix thì test thế nào?
|
||||
4. Có nên áp rule? → user confirm.
|
||||
5. Rule mới có overkill không? → user nhận xét sắc.
|
||||
6. Có nên rewrite MD định kỳ? → user hỏi nghiêm túc.
|
||||
|
||||
**Outcome:**
|
||||
- Chốt rule timing test (rules.md §7) — 1 bảng 5-row compact, sau khi rút gọn từ 70 dòng overkill ban đầu
|
||||
- Chốt rule audit + compact MD định kỳ (rules.md §6.4) — KHÔNG rewrite toàn bộ
|
||||
- Lưu feedback memory `feedback_unittest_timing.md` cho session sau
|
||||
|
||||
## B. MD compact (commit `f24acb6`)
|
||||
|
||||
| File | Trước | Sau | Δ |
|
||||
|---|---|---|---|
|
||||
| STATUS.md | 196 | 144 | -27% |
|
||||
| HANDOFF.md | 460 | 313 | -32% |
|
||||
| migration-todos.md | 210 | 136 | -35% |
|
||||
| recently-done-archive-2026-04.md | (mới) | 61 | archive 51 row Phase 0-7 |
|
||||
|
||||
**Pattern:**
|
||||
- STATUS Recently Done > 30 row → archive cũ vào `changelog/recently-done-archive-{YYYY-MM}.md`
|
||||
- HANDOFF section duplicate (Versioned WF / File active / Git state) → cross-ref thay vì copy
|
||||
- migration-todos Phase done → collapse thành 1 paragraph + cross-ref session log
|
||||
|
||||
**0 information loss** — tất cả nội dung vẫn còn ở file gốc (gotchas, rules, architecture, schema-diagram, session logs).
|
||||
|
||||
## C. 3 skill refresh (commit chốt session)
|
||||
|
||||
### form-engine/SKILL.md
|
||||
- Status: "Phase 2 MVP — missing PDF + form builder" → "Tier 3 feature-complete"
|
||||
- Known limitations: 6 row → 4 row, đánh dấu DONE Phase 8
|
||||
- "Gen mã HĐ chưa implement" → DONE Phase 3+6, cross-ref `contract-workflow` skill (bỏ duplicate)
|
||||
|
||||
### permission-matrix/SKILL.md
|
||||
- Description: 12 menu + 48 policy → ~60 menu + ~240 policy
|
||||
- Menu tree section: 12 menu cũ → ~60 với Pe_*/PeWf_*/Bg_*/Catalogs đầy đủ
|
||||
- Inheritance roots: 4 group (Contracts/Workflows/PE/PeWorkflows). Budgets KHÔNG inherit (gotcha #35).
|
||||
|
||||
### ef-core-migration/SKILL.md
|
||||
- Code pointers: "ApplicationDbContext.cs — 24 DbSet" → "DbSet cho 52 bảng (15 migration)"
|
||||
- Related: "ERD 24 bảng" → "ERD 52 bảng + §11 PE + §12 Budget + §13 PEDeptOpinions"
|
||||
|
||||
## D. 2 rule mới chốt
|
||||
|
||||
### rules.md §7 — Khi nào viết test (timing rule)
|
||||
|
||||
```
|
||||
| Tình huống | Quy tắc |
|
||||
| Feature mới | Test-after: UAT 2-3 lần ổn → viết test (≤1 commit theo sau) |
|
||||
| Bug fix | Test-before BẮT BUỘC: reproduce bằng test failing → fix → green |
|
||||
| Critical algorithm (codegen/guard/financial/security) | Test-before merge |
|
||||
| Spec change | Update test cũ + code, commit chung. KHÔNG xóa, KHÔNG skip. |
|
||||
| Skip | DTO mapping, CRUD master, FE snapshot, wrapper, migration backfill |
|
||||
```
|
||||
|
||||
Rút gọn từ 70 dòng overkill (decision tree ASCII + triết lý chung + bảng critical algorithm chi tiết) còn 6 dòng. User nhận xét đúng — overkill thật.
|
||||
|
||||
### rules.md §6.4 — Audit + compact MD định kỳ
|
||||
|
||||
| Tần suất | Action | Effort |
|
||||
|---|---|---|
|
||||
| Cuối session | Update STATUS + HANDOFF | ~10 phút |
|
||||
| Cuối phase (~1 tháng) | Compact STATUS Recently Done > 30 row → archive | ~30 phút |
|
||||
| Đầu mỗi tháng (cron) | Audit skill + doc drift + count consistency, patch (Edit, không rewrite) | ~45 phút |
|
||||
| Khi trigger riêng | Selective rewrite 1 file (drift > 30%) | 1-2 giờ |
|
||||
| KHÔNG BAO GIỜ | Rewrite toàn bộ docs | — |
|
||||
|
||||
**Doc audit checklist** (mở rộng từ §9.4 skill audit, chạy cùng cron):
|
||||
1. `dotnet test` count khớp STATUS/CLAUDE/HANDOFF
|
||||
2. `ls migrations/` count khớp ef-core-migration skill
|
||||
3. `grep '#[0-9]\+' gotchas.md` count khớp HANDOFF/STATUS
|
||||
4. STATUS Recently Done > 30 row → đề xuất archive
|
||||
5. HANDOFF section duplicate → đề xuất bỏ
|
||||
6. Skill SKILL.md mention "Phase N MVP" mà N <= phase hiện tại → stale
|
||||
7. Output report → human review patch (Edit, KHÔNG Write toàn file)
|
||||
|
||||
**§9.4 Skill audit** mở rộng cross-ref §6.4 — chạy chung cron `solution-erp-skill-audit-monthly`.
|
||||
|
||||
## E. Verify state cuối session
|
||||
|
||||
```
|
||||
✅ 77 test pass (Domain 54 + Infra 23) — chạy `dotnet test SolutionErp.slnx`
|
||||
✅ 15 migration / 52 bảng / 41 gotcha — khớp docs
|
||||
✅ 6 skill (3 refresh trong session)
|
||||
✅ Cron 2026-05-01 ready fire mai (combined audit)
|
||||
✅ MEMORY.md có 3 entry (project + node CI/CD + unit test timing)
|
||||
```
|
||||
|
||||
## F. Files touched session 6
|
||||
|
||||
```
|
||||
docs/rules.md (mod: §7 Timing test rule + §6.4 doc audit + §9.4 cross-ref)
|
||||
docs/STATUS.md (mod: Phase 9 active + Session 6 Recently Done + cron 05-01)
|
||||
docs/HANDOFF.md (mod: TL;DR session 6 + cảnh báo session 7+, bỏ 3 section duplicate)
|
||||
docs/changelog/migration-todos.md (mod: Phase 6-7 collapse, Phase 9 + Session 6 done sub)
|
||||
docs/changelog/recently-done-archive-2026-04.md (NEW: 51 row archive)
|
||||
docs/changelog/sessions/2026-04-30-chot-session-6-md-audit-compact.md (NEW: file này)
|
||||
.claude/skills/form-engine/SKILL.md (mod: refresh Phase 2 MVP → Tier 3 done)
|
||||
.claude/skills/permission-matrix/SKILL.md (mod: refresh 12 menu → ~60 + inheritance roots)
|
||||
.claude/skills/ef-core-migration/SKILL.md (mod: refresh count 24 → 52)
|
||||
CLAUDE.md (root) (mod: timing test compact 1 dòng)
|
||||
~/.claude/.../memory/feedback_unittest_timing.md (NEW: feedback memory)
|
||||
~/.claude/.../memory/MEMORY.md (mod: index +1 entry)
|
||||
```
|
||||
|
||||
## G. Cảnh báo session 7
|
||||
|
||||
1. **Cron `solution-erp-skill-audit-monthly` fire 2026-05-01 9:00** — combined audit theo §6.4 + §9.4 checklist. Log → `docs/changelog/skill-audit-2026-05.md`. Session sau verify cron đã fire OK.
|
||||
2. **Hard blockers ops vẫn chờ user** — UAT 1 tuần / SMTP / rotate creds / SQL backup schedule.
|
||||
3. **3 feature mới chưa test** (PE Opinion Upsert / Budget validate / Contract BudgetId carry) — đợi UAT phát sinh bug → áp §7 rule (regression test before fix).
|
||||
4. **win-acme** schedule task unhealthy — fix trước cert expire 2026-06-18.
|
||||
5. **MD compact pattern** lần kế: cuối Phase 9 (sau UAT) — STATUS Recently Done > 30 row archive lần 2.
|
||||
|
||||
## H. Lessons learned session 6
|
||||
|
||||
1. **User feedback on overkill** — Claude tendency là viết quá dài. Lần đầu rule timing test = 70 dòng (decision tree ASCII + triết lý + bảng chi tiết). User catch ngay → rút còn 6 dòng. Bài học: skill audit phải có "compact pass" sau draft đầu.
|
||||
2. **Rewrite vs compact** — User hỏi nghiêm túc "rewrite toàn bộ định kỳ" và push back tốt khi tôi suggest 4 chiến lược (compact / audit / selective rewrite / never full rewrite). Confirm: drift là normal, fix bằng patch, KHÔNG rewrite.
|
||||
3. **Skill staleness là silent killer** — `form-engine` lifeline "Phase 2 MVP missing PDF" survived qua nhiều session vì chỉ Claude đọc trước khi auto-invoke. User không thấy trực tiếp. Cron audit định kỳ là cơ chế duy nhất catch được.
|
||||
4. **Feedback memory path** — Lưu rule vào memory file giúp session sau (không có conversation history) tự áp dụng. 3 entry hiện tại: project overview / Node CI/CD pin / unit test timing. Không bloat — chỉ rule actionable.
|
||||
5. **Path filter CI làm việc cực tốt cho docs-heavy session** — session 6 có 3 commit, đều skip CI (0s deploy). Saving lớn nếu maintain pattern này.
|
||||
|
||||
## I. Stats sau session 6
|
||||
|
||||
| | Trước S6 | Sau S6 |
|
||||
|---|---:|---:|
|
||||
| BE LOC | ~13050 | ~13050 (no code change) |
|
||||
| DB tables | 52 | 52 |
|
||||
| Migrations | 15 | 15 |
|
||||
| API endpoints | ~128 | ~128 |
|
||||
| FE pages | ~31 | ~31 |
|
||||
| Tests | 77 | 77 (no test change) |
|
||||
| Gotchas | 41 | 41 |
|
||||
| **Skill** | 6 (3 stale) | **6 (3 refresh)** |
|
||||
| **Docs lines core 3 file** | 866 | **593** (-273, -32%) |
|
||||
| **Memory entries** | 2 | **3** (+unit test timing) |
|
||||
| Demo user | 30 | 30 |
|
||||
| Commits S6 | 0 | **3** (rule + compact + chốt) |
|
||||
| Session log files | 17 | **18** |
|
||||
Reference in New Issue
Block a user