Files
solution-erp/docs/governance/vocab-alias-map.md
pqhuy1987 e9124fc6de
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m30s
[CLAUDE] Docs: S125-S126 closeout GOP — H23-precedence DO (spawn-param THANG hard-pin, /fable-real SONG) + sweep all-inherit va 15+3+5 + gotcha #83 + hub-mail h23-result
- NHOM A restart-verify: A1 tier:'fable' tren reviewer pin-opus -> resolved claude-fable-5 (spawn-param THANG); A2 no-tier -> claude-opus-4-8 DU lead=Fable (pin an runtime); A3 autoMemory WRITE-path OK (project_h23_spawn_precedence.md moi).
- B1 sweep all-inherit floor-song: 15 dong/5 file + 3 cung-lop lot-pattern + 5 dong H23-stale o 3 command-file (H1 bat) -> VA HET; spawn-model-audit Section-D flush H8->S124 + effort-check (fault-inject 2-chieu PASS, 14 duong-gia -> 0); governance-detectors C3 seed +worker-tier-pin; re-grep 0 floor-song; suite 45 = baseline 0-new.
- vocab-alias-map §3 canonical flip -> worker-tier-pin (all-inherit/two-tier = 2 alias cu); STATUS:6 FROZEN-diary label (het H24-3 lag); STATUS:25 + agents/README:5 sync.
- Email hub h23-precedence-test-result stamp 945cf3ad (reviewer-gate FAIL bat 3 loi truoc stamp -> gotcha #83 aggregate-cumulative) + _index cung luot.
- B3/B4 owner-gated: soan b3-b4-owner-gated-proposals.md CHO ANH (mega-line retier + budget:74 wording) — 0 apply.
- Closeout: harvest 4 lane + 2 monitor (H2 GATE PASS 5/5, 0/29 orphan; H1 3/4 clean + 5-spot fix) + curate moved-not-cut reviewer/inv-cb + carry disposition (DONG 2: restart-s124, h23-fable-test-postrestart; MO re-stamp 9) + H24 counter=5 + pilot H22 D5 (pause-roundtrip + hook-fire re-verified; cross-model PENDING).
- Governance/tooling-only: 0 prod-code, 0 mig, test 509 GIU, bundle FROZEN.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 15:19:08 +07:00

74 lines
7.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Vocab Alias-Map — Bản đồ Thuật ngữ Tương đương
> **Mục đích:** Đây là nguồn duy nhất (single source) ghi lại các cặp thuật ngữ ĐỒNG NGHĨA trong SOLUTION_ERP — một khái niệm nhưng đang tồn tại dưới hai cái tên (canonical hiện hành ↔ alias lịch sử đã bị thay thế). Tài liệu phục vụ đợt kiểm tra trôi-nghĩa (drift audit) hằng tháng: khi detector `scripts/governance-detectors.ps1` (kiểm tra C3 — vocab-fork) phát cờ báo "hai biến thể cùng sống side-by-side", người rà soát mở file này để tra ngay đâu là từ chuẩn, đâu là từ cũ, và lý do đổi tên.
>
> **Chủ sở hữu ghi (single-writer):** em-main. Tài liệu **append-only** — chỉ thêm dòng mới khi phát sinh cặp thuật ngữ mới, KHÔNG viết lại các mục cũ. Sub-agent chỉ đọc, không được sửa (tuân thủ nguyên tắc D9 single-writer).
>
> **Phạm vi:** Chỉ ghi các cặp thật sự là MỘT khái niệm hai tên (fork-để-hợp-nhất). KHÔNG ghi các từ trùng-mặt-chữ nhưng khác nghĩa (ví dụ "memory-fidelity", "coverage", "audit") — những từ đó đã được phân biệt bằng ngữ cảnh trong `harness-11-engine.md` PHẦN H/I và cố ý KHÔNG seed vào detector.
---
## ⚠️ Lưu ý nền tảng — vì sao alias vẫn còn xuất hiện đầy trong repo
Phần lớn số lần alias xuất hiện là **hợp lệ theo lịch sử — KHÔNG phải drift cần sửa**. Các file dưới đây **ĐÓNG BĂNG (frozen), tuyệt đối không viết lại**:
- `docs/changelog/sessions/**` — nhật ký từng session (ghi lại đúng từ ngữ tại thời điểm đó).
- `docs/_archive/**` — snapshot STATUS/HANDOFF đã archive verbatim.
- `docs/governance/adap-reports/**` — báo cáo adoption đã chốt.
- `.claude/workflows/runs/**` — vết chạy workflow (run-trace), git-tracked bất biến.
- `broadcasts/inbox|outbox/**` — thư liên-team đã gửi.
Một session-log viết "two-tier" hồi S60 là **đúng sự thật lịch sử** — nó phản ánh mô hình còn hiệu lực khi đó. Không được sửa ngược quá khứ. Do vậy alias sẽ **mãi mãi còn tồn tại** trong các file đóng băng, và detector C3 (quét TOÀN BỘ `docs/**` + `.claude/**` *.md, KHÔNG loại trừ file frozen) sẽ **vẫn tiếp tục báo cờ MED** cho mỗi cặp — đây là trạng thái **documented-known**, không phải lỗi tồn đọng. Việc "làm sạch" chỉ áp dụng cho các file **đang-sống (live-editable)**: `docs/STATUS.md`, `docs/HANDOFF.md`, các `SKILL.md`, `agent-memory/**/MEMORY.md` (bản HOT, không phải archive), và các doc governance đang bảo trì.
---
## Bảng thuật ngữ tương đương
### 1. `run-trace` (chuẩn) ↔ `wave-folder` (alias cũ)
| Thuộc tính | Giá trị |
|---|---|
| **Canonical (hiện hành)** | `run-trace` — thư mục cô lập bộ nhớ mỗi lần chạy workflow tại `.claude/workflows/runs/<id>/` |
| **Alias (đã thay thế)** | `wave-folder` / `wave-*` — tên cũ của cùng thư mục cô lập đó |
| **Đổi tên bởi** | Harness-10 (Session 72, 2026-06-18) — đổi cấu trúc `wave-*` sang mô hình run-trace phẳng (`sub-*.md` + `*-synthesis.md`) git-tracked |
| **Ghi chú frozen** | Session-log/adap-report/runs cũ giữ nguyên "wave-folder" — đúng lịch sử, không sửa |
### 2. `Ngân sách PRO` (chuẩn) ↔ `Dự trù PRO` (alias cũ)
| Thuộc tính | Giá trị |
|---|---|
| **Canonical (hiện hành)** | `Ngân sách PRO` — nhãn cột/badge PRO trong ma trận ngân sách PE (module PurchaseEvaluation) |
| **Alias (đã thay thế)** | `Dự trù PRO` — nhãn cũ trước khi anh Kiệt (FDC) yêu cầu đổi |
| **Đổi tên bởi** | Session 65 (2026-06-16) — anh Kiệt Zalo: "Dự trù PRO → Ngân sách PRO"; áp dụng row + badge trên cả 2 app (fe-admin + fe-user), SHA256-mirror |
| **Ghi chú kỹ thuật** | Field BE gốc `PeWorkItemBudget.ProInitialAmount` ("Ban hành lần đầu") + `ProAdjustmentAmount`; nhánh `ProEstimateAmount` cũ đánh dấu LEGACY (Mig 56 migrate → ProInitialAmount). Còn 1 comment mã nguồn stale ở `PurchaseEvaluationDtos.cs:324` ("badge dự trù PRO") — chỉ là comment, KHÔNG phải nhãn FE đang render; có thể dọn khi tiện, không bắt buộc |
| **Ghi chú frozen** | Session-log S65 và bản archive giữ "Dự trù PRO" — đúng lịch sử |
| **Lưu ý mở rộng** | `PeWorkItemBudget` là tên ENTITY (khái niệm khác — bảng ngân-sách-per-gói-thầu), KHÔNG phải alias của nhãn PRO. "PRO" = Procurement (phòng Mua hàng), không phải viết tắt khác |
### 3. `worker-tier-pin` (chuẩn) ↔ `all-inherit` · `two-tier` (2 alias cũ, 2 đời)
| Thuộc tính | Giá trị |
|---|---|
| **Canonical (hiện hành)** | `worker-tier-pin` — 14/14 sub-agent frontmatter `model: opus` + `effort: max` (worker-tier gán-cứng, KHÔNG theo lead); lead = frontier-class owner-choice per-session; Fable cho 1 vai CHỈ qua lượt lệnh `/fable-real`·`/fable-clone` hoặc per-task `tier:` — spawn-param THẮNG hard-pin (đo S126 2026-07-16, `runs/2026-07-16-S126-adap-spec-execute/runtime-verify-synthesis.md`) |
| **Alias (đã thay thế — đời 2)** | `all-inherit` — mọi sub-agent kế thừa model lead (chất-lượng > chi-phí; Harness-8, S66S123) |
| **Alias (đã thay thế — đời 1)** | `two-tier` — mô hình 2 tầng (lead promote-inherit vài agent / demote-pin số còn lại về Opus; Harness-4) |
| **Đổi tên bởi** | Owner-decision **S124** (2026-07-15, adap `erratum-h8`) — thay all-inherit bằng worker-tier-pin. Trước đó: Harness-8 (S66, 2026-06-16) thay two-tier bằng all-inherit |
| **Ghi chú frozen** | adap-report/session-log ≤S66 giữ "two-tier", S66S123 giữ "all-inherit" — đúng lịch sử tại thời điểm đó |
---
## Quy trình cập nhật (khi thêm cặp mới)
1. Chỉ append 1 mục `### N.` mới bên dưới, KHÔNG sửa mục cũ.
2. Ghi đủ 4 trường: **canonical · alias · đổi-tên-bởi (Harness/Session) · ghi-chú-frozen**.
3. Nếu muốn detector nhận-biết cặp mới, seed vào `$aliasSets` trong `scripts/governance-detectors.ps1` (C3). Lưu ý: detector CHỈ grep, KHÔNG đọc file này — xem mục dưới.
---
## Về việc detector có "im" sau khi tạo file này không
**KHÔNG.** Detector C3 (`scripts/governance-detectors.ps1`) là **pure-grep**: `$aliasSets` được hard-code trong script (dòng ~350-354), và C3 báo cờ mỗi khi ≥2 biến thể của một set còn sống trong corpus. Nó **KHÔNG đọc bất kỳ alias-map file nào**. Vì các file frozen (mãi mãi chứa alias) nằm trong phạm vi quét, cờ MED cho cả 3 cặp sẽ **vẫn còn** — nay chuyển trạng thái thành **documented-known** (đã có tài liệu giải thích tại đây), không còn là drift lạ.
> Câu "resolve: … or record an alias-map in docs/governance" trong output detector là **gợi ý cho con người**, KHÔNG phải hook tự-động. Muốn detector THẬT-SỰ ngừng báo cặp nào, phải sửa `$aliasSets` (bỏ set đó) — nhưng làm vậy sẽ mất khả năng phát hiện fork tương lai, nên **không khuyến nghị**.
> **Cảnh báo self-match:** File `vocab-alias-map.md` này tự thân chứa cả 6 thuật ngữ ở dạng live → nếu KHÔNG loại trừ, nó sẽ tự-đóng-góp thêm 1 file live cho MỖI biến thể và khiến detector đếm sai. Cần thêm đường dẫn `docs/governance/vocab-alias-map.md` vào `$ExcludeExact` trong `governance-detectors.ps1` (đặt cạnh `harness-11-engine.md` đã được loại trừ sẵn) để tài liệu này không tự-match. Đây là bước bắt buộc khi commit file.