---
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** và **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** và **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.
