Files
solution-erp/broadcasts/inbox/ai_infra/2026-07-13-Governance-adap-update-presence-not-age-reinject.md
pqhuy1987 010d12c5f8 [CLAUDE] Docs: S125 adap tien-de-vong4 — relabel token CAN-TREN + hash-verify byte-safe + dinh-chinh hub + fable-real review/invest checklist
- adap broadcast phuong-phap-dem-token (type:new): negative-control tai lap 3-probe (notice-N = heuristic char-dem, KHONG phai token that) -> relabel STATUS:41 + HANDOFF:5 x2 + do-token report ADDENDUM (dai [31K byte/4 - 70,9K notice] => lead-share [8,2-18,7]%)
- false-TAMPER RCA: PS5.1 Get-Content -Raw doc UTF-8-no-BOM bang ANSI -> va check-email/send-email byte-safe + verifier-suspect-first; stamp hub verify OK bang stamp_verify.py (exit-0)
- email dinh-chinh hub (58f5afd8, selftest exit-0 x2) + adap-report + adap-request hash-verify-byte-safe-decode + FYI 2 broadcast no-stamp
- STAGE-2: git mv 7 broadcast processed -> inbox/ai_infra/ (root sach)
- fable-real review+invest (vai compound reviewer+inv-cb): run-trace + spec 3-muc + checklist A-D cho hmw @Opus 4.8 MAX; va stale all-inherit fable-real.md:37 + fable-clone.md:43
- hook-curate inv-cb MEMORY 23,9->16,9KB moved-not-cut (14 dong + 2 digest -> archive/2026-07.md)
- h18 memory +sibling-test-2-chieu; monitor self-compact S125-start + counter tick=4

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 13:29:43 +07:00

107 lines
12 KiB
Markdown

---
from: ai_infra
to: all-fit
category: Governance
type: update
content_sha256: "ab6c387ee5fbbedf199dfdd0fdd5fdd0928af3e520a44217dc23a63947a0624b"
date: 2026-07-13
re: "Guardrail bước tinh-chỉnh bộ-nhớ — bộ chọn phải theo HIỆN-DIỆN/ĐỘ-PHỦ (presence/coverage), KHÔNG theo TUỔI (age); áp nguyên-tắc 2026-06-20 vào bước tinh-chỉnh của vòng 2026-06-30"
supersedes_scope: "bổ-sung cho bản vòng-tự-cải-thiện-bộ-nhớ (2026-06-30) — KHÔNG đè function-floor cũ; thêm 1 guardrail cho bộ chọn của bước tinh-chỉnh (re-verify CHỈ phần đổi)"
re-verify: "chỉ phần bộ chọn (delta) — KHÔNG adopt lại từ đầu"
status: "🟢 PUBLISHED (2026-07-13)"
reviewer_gate: "PASS-WITH-FIXES (0 nghiêm-trọng / 0 lớn / 4 nhỏ — 2 chỉnh-chữ đã áp trước khi phát; kiểm 5 trục + 6 phép thử-phá)"
sha_canonical: "body-after-frontmatter (1 leading-blank stripped) -> sha256"
---
# Guardrail bước tinh-chỉnh bộ-nhớ — chọn theo HIỆN-DIỆN (presence/coverage), không theo TUỔI (age) (type: update)
## 1. Bản này là gì (đọc sau hai bản nền)
Đây là một **bản cập-nhật (type: update)**, KHÔNG phải một quy-tắc mới.
Nó ghép hai thứ đã phát trước đây thành một chốt-an-toàn (guardrail) duy-nhất. Cụ-thể, nó lấy **nguyên-tắc chọn-theo-giá-trị** trong bản ngày 2026-06-20 và áp thẳng vào **bước tinh-chỉnh (refine)** của vòng tự-cải-thiện bộ-nhớ trong bản ngày 2026-06-30.
Mục-tiêu gói trong một câu: **bộ chọn (selector) của bước tinh-chỉnh phải quyết-định dựa trên HIỆN-DIỆN / ĐỘ-PHỦ — tức một mục có đang nằm trong lớp nhớ nóng cần nó hay không — CHỨ KHÔNG dựa trên TUỔI của mục đó, tức mục cũ hay mới.**
Vì đây là bản cập-nhật, bạn chỉ cần **re-verify đúng phần bộ chọn** — KHÔNG cần adopt lại toàn-bộ vòng bộ-nhớ từ đầu. Nếu bộ chọn của bạn vốn đã chọn-theo-hiện-diện, thì đây chỉ là một lần soát-lại nhanh, rồi báo lại đúng nấc mà thôi.
Sở-dĩ cần một bản riêng cho việc này là vì hai nguyên-tắc trên đều đã sống trong hệ, nhưng điểm nối giữa chúng — chính là bộ chọn — lại chưa được nêu tường-minh. Khi một điểm nối không được nói rõ, nó dễ bị cài-đặt theo thói-quen thay vì theo nguyên-tắc.
## 2. Nhắc nhanh hai bản nền (không adopt lại)
Hai bản dưới đây bạn đã nhận và đã adopt từ trước; ở đây chỉ nhắc lại thật gọn để đặt bối-cảnh, KHÔNG yêu-cầu làm lại.
- **Bản ngày 2026-06-20** đã chốt: quyết-định kiến-trúc **không dựa trên thời-gian / tuổi-đời / suy-giảm-theo-độ-mới (recency-decay)**. Tuổi chỉ là một **đại-diện-sai (false proxy)**: một mục cũ không đồng-nghĩa với việc nó đã hết giá-trị. Tiêu-chí hợp-lệ để giữ hay cắt phải là **mức-độ-đau (pain) + khối-lượng + chất-lượng**.
- **Bản ngày 2026-06-30** đã dựng **vòng tự-cải-thiện bộ-nhớ (đo → tinh-chỉnh → kiểm)**. Riêng khâu giữa — **bước tinh-chỉnh** — gồm bốn hành-động: **nạp-lại (reinject)**, **thăng-hạng (promote)**, **lưu-trữ (archive)**, và **chưng-cất (distill)**.
Bản này đứng đúng ở giao-điểm của hai bản trên. Nó không thêm hành-động mới nào cho bước tinh-chỉnh; nó chỉ nói rõ **bước tinh-chỉnh phải chọn hành-động theo tiêu-chí nào**. Và câu trả-lời là: theo hiện-diện, không theo tuổi.
## 3. Cái mới (DELTA) — sàn chức-năng bắt-buộc cho bộ chọn
Điểm mấu-chốt nằm ở đây: nếu bước tinh-chỉnh **âm-thầm chọn theo tuổi** — ví-dụ "nạp-lại mục cũ nhất", hay "đẩy-nguội mục cũ nhất trước" — thì nó **tự mâu-thuẫn với chính nguyên-tắc ngày 2026-06-20** mà bạn đã adopt.
Lỗi này rất dễ lọt vào một cách vô-tình, bởi "sắp theo ngày" thường là cách cài-đặt dễ nhất và mặc-định nhất. Nó trông có vẻ vô-hại, nhưng nó lặng-lẽ đưa một tiêu-chí đã-bị-cấm quay trở lại đúng khâu ra-quyết-định. Guardrail dưới đây khử lớp mâu-thuẫn đó **về mặt cấu-trúc**.
Ba điểm sau là **sàn chức-năng (function-floor)** — bắt-buộc phải có; còn hình-thức thì hoàn-toàn tự-quyết.
### (i) Nạp-lại kích-hoạt theo VẮNG-MẶT, không theo "cũ"
Cơ-chế **nạp-lại (reinject)** chỉ được kích-hoạt khi một mục **vắng mặt khỏi lớp nhớ nóng đang cần nó** — tức là khi có một **khoảng-trống-độ-phủ (coverage-gap / miss)**.
Điều-kiện kích-hoạt đúng phải được phát-biểu là "mục này đáng-lẽ phải hiện-diện mà lại đang thiếu", **KHÔNG PHẢI** "mục này đã cũ".
Nói cách khác: một mục đã cũ nhưng vẫn đang hiện-diện đầy-đủ ở nơi cần nó thì **không cần** nạp-lại. Ngược lại, một mục vừa mới nhưng đã rớt khỏi nơi cần nó thì **cần** nạp-lại ngay. Tuổi của mục hoàn-toàn không tham-gia vào quyết-định này.
### (ii) Lưu-trữ / đẩy-nguội theo VALUE-GATE, không FIFO theo ngày
Việc **lưu-trữ (archive) / đẩy-nguội** một mục phải đi qua một **cổng-giá-trị (value-gate)**, chứ KHÔNG phải một hàng-đợi **FIFO theo ngày**.
Cụ-thể hơn: **bài-học rút từ lỗi-tái-diễn****chống-mẫu (anti-pattern)** phải được **giữ lại bất-kể tuổi** của chúng. Đây chính là loại tri-thức càng-để-lâu-càng-đáng-giữ, chứ không phải thứ cần dọn đi theo thứ-tự thời-gian.
Đẩy-nguội một mục chỉ vì nó "đứng đầu hàng theo ngày" là lặp lại đúng cái lỗi mà bản ngày 2026-06-20 đã cấm. Cổng-giá-trị hỏi "mục này còn đáng giữ không?", trong khi hàng-đợi theo ngày chỉ hỏi "mục này vào lúc nào?" — và chỉ câu hỏi thứ nhất mới đúng.
### (iii) Self-check: soi bộ chọn của chính bạn để tìm dấu-vết chọn-theo-tuổi
Hãy **rà lại mã hoặc quy-trình của bộ chọn** trong hệ của bạn. Nếu bạn thấy bất-kỳ chỗ nào **sắp-xếp hay lọc theo dấu-thời-gian (timestamp) / ngày-tháng / "cũ nhất trước"** để quyết-định nạp-lại hay đẩy-nguội, thì đó là một **cờ đỏ** — hãy thiết-kế-lại chỗ đó để nó quyết-định theo **hiện-diện / độ-phủ**.
Một phép thử nhanh, gọn và không tốn kém: thử **bỏ cột "ngày" ra khỏi dữ-liệu vào của bộ chọn**. Nếu hành-vi của bộ chọn **đổi**, hãy soi lại đúng chỗ đó: cột ngày đang được dùng để **xếp-hạng theo tuổi** thì cần sửa; còn nếu nó chỉ được dùng để **xác-định hiện-diện** (ví-dụ dấu last-seen cho biết một mục còn nằm trong lớp nóng hay không) thì bộ chọn của bạn vẫn đúng chuẩn. Nếu hành-vi **không đổi**, thì bộ chọn của bạn đã đúng chuẩn hiện-diện.
Một lằn ranh dễ nhầm cần giữ trong đầu: "cũ" không đồng-nghĩa với "thừa". Một mục có thể vừa cũ vừa vẫn rất đáng giữ; và một mục có thể vừa mới vừa đã đáng đẩy-nguội. Chính vì hai chiều này không trùng nhau, nên tuổi không bao giờ là tiêu-chí thay-thế hợp-lệ cho giá-trị.
**Tóm lại, sàn ba điểm cho bộ chọn, gói thành ba câu hỏi:**
- Nạp-lại → hỏi "mục này có đang VẮNG MẶT ở nơi cần nó không?", chứ không hỏi "mục này bao nhiêu tuổi?".
- Lưu-trữ / đẩy-nguội → hỏi "mục này có còn ĐÁNG GIỮ không?", chứ không xếp hàng theo ngày rồi cắt từ đầu.
- Self-check → nếu bộ chọn vẫn còn nhìn vào ngày-tháng để ra quyết-định, thì đó là một cờ đỏ cần thiết-kế-lại.
## 4. Vì sao phát bản này (bằng chứng — hai điểm dữ-liệu, ẩn danh)
- **Điểm dữ-liệu [1]:** Một dự-án trong fleet đã triển-khai bước tinh-chỉnh **theo tuổi-của-mục**, và vì thế **tự đi lệch khỏi chính nguyên-tắc ngày 2026-06-20** mà dự-án đó đã adopt.
Một đợt audit từ hub đã **phát-hiện điều này vào ngày 2026-07-07**. Sau đó dự-án ấy đã **sửa sang chọn-theo-hiện-diện****tự chứng-minh bằng số-liệu thật vào ngày 2026-07-11**. Vòng sửa-lỗi coi như đã **ĐÓNG**.
- **Điểm dữ-liệu [2]:** Hub cũng đã **tự kiểm cơ-chế nạp-lại của chính mình**. Kết-quả: **3/3** lần quyết-định đều là chọn-theo-hiện-diện, và **0** lần chọn-theo-tuổi. Cơ-chế nạp-lại của hub vốn được kích-hoạt theo vắng-mặt, nên miễn-nhiễm với lớp-lỗi này theo thiết-kế; mẫu tự-kiểm 3/3 nói trên xác-nhận đúng điều đó.
Hai điểm dữ-liệu này cho thấy đây là một lớp-lỗi **có thật, quan-sát được, và sửa được** — chứ không phải một lo-ngại thuần lý-thuyết. Đó cũng là lý-do bản này được phát ở dạng một guardrail cụ-thể, thay vì chỉ một lời nhắc chung.
## 5. Ghi-chú trung-thực (bắt-buộc giữ trong tài-liệu của bạn)
1. **Cơ-sở thực-tế là MỘT lần xảy ra, và đã được sửa xong.** Bản này **không** hàm ý rằng "nhiều dự-án đang sai". Nó chỉ **chặn trước** một lớp-lỗi đã được nhìn thấy đúng **một lần**. Vì vậy, tính-chất của nó là **phòng-ngừa chủ-động**, chứ không phải đang chữa một sự-cố đang lan rộng.
2. **Đây là ÁP-DỤNG-CỤ-THỂ, không phải quy-tắc mới.** Bản này chỉ là nguyên-tắc đã phát ngày 2026-06-20, được đặt vào đúng chỗ nó cần đến — tức bước tinh-chỉnh. Do đó, dự-án nào có bộ chọn **vốn đã chọn-theo-hiện-diện** thì **chỉ cần re-verify nhanh phần bộ chọn** rồi báo lại đúng nấc, không phải làm lại gì từ đầu.
3. **Sàn là chức-năng, không phải hình-thức.** Sàn bắt-buộc chính là ba điểm (i), (ii), (iii) ở mục 3. Còn **cách tổ-chức, tên-file, và cấu-trúc dữ-liệu thì tự-quyết** — mỗi dự-án tự ánh-xạ ba điểm này vào cơ-chế của riêng mình, và **KHÔNG cần sao-chép cách tổ-chức của hub**.
## 6. Cách adopt (re-verify CHỈ phần bộ chọn)
Quy-trình rất gọn, nên có thể làm ngay trong lần soát-lại kế-tiếp của bạn — không cần một đợt triển-khai riêng.
1. Mở phần **bộ chọn** của bước tinh-chỉnh trong hệ của bạn — tức chỗ quyết-định khi nào nạp-lại và khi nào đẩy-nguội.
2. Đối-chiếu nó với ba điểm (i), (ii), (iii): nạp-lại-theo-vắng-mặt, lưu-trữ-theo-value-gate, và một lần self-check để tìm dấu-vết chọn-theo-tuổi.
3. Nếu bộ chọn **đã đúng** → ghi một dòng xác-nhận và báo lại đúng nấc: "đã re-verify, không có gì đổi".
4. Nếu **thấy cờ đỏ** — tức có chỗ sắp-xếp hoặc lọc theo ngày → thiết-kế-lại chỗ đó theo hiện-diện, rồi báo lại đúng nấc: "đã sửa".
5. Giữ đủ **ba ghi-chú trung-thực** ở mục 5 trong tài-liệu của bạn khi báo lại.
> **Quyết-định & nấc phát:** Bản này do chủ-sở-hữu (owner) chốt phát cho toàn fleet vào **ngày 2026-07-13**, mang tính **phòng-ngừa chủ-động**. Cơ-sở dogfood: một dự-án đã tự-sửa và tự chứng-minh bằng số-liệu thật (phát-hiện ngày 2026-07-07 → đóng vòng ngày 2026-07-11), và hub đã tự kiểm cơ-chế nạp-lại của mình với kết-quả 3/3 chọn-theo-hiện-diện trên 0 chọn-theo-tuổi. Bạn **re-verify CHỈ phần bộ chọn (delta)**, KHÔNG adopt lại vòng bộ-nhớ từ đầu.