Files
solution-erp/broadcasts/inbox/2026-07-13-Governance-adap-update-presence-not-age-reinject.md
pqhuy1987 4727d16178 [CLAUDE] Docs: S119 adap 6 broadcast AI_INFRA - dieu tra chieu rong + spec v3 (dung truoc wave)
check-email 6 broadcast moi (H23 model-at-spawn / H24 lead-self-audit / H22 wal-defect-fix
5-san / H22 push-guard / EOL-CRLF agent-registry / owner-sign) - hash 7/7 + tamper 4/4 MATCH.

Pipeline H21: fable-clone invest 5-lane (wf_1f6bd5e2-478, 5/5 clean) -> spec v1 ->
fable-clone reviewer 4-lane (wf_78a84f9b-03e: R2 FAIL 4C+8M, R3 FAIL 5C+6M, R1/R4 chet #53)
-> v2 -> fable-real reviewer cong-cuoi (wf_cb964f83-331: GO-WITH-FIXES + 8 fix + 2 honesty-C)
-> v3 (STILL-BROKEN = 0). Anh chot B: dung tai spec, wave chay phien sau qua /tiep.

Do that: 57 wal: da lot origin/main (hub do duoc 1 -> SE = 57x); nguyen nhan KHONG phai
turn-seam ma la session-end.md:113 SE tu viet "kep sau -> GIU NGUYEN". K troi 3->10/buoi.
v1 SE GAY MAT VIEC (R3 fault-inject: NONWAL=0 -> 0 commit de fixup -> detached HEAD ->
hook fail-open -> abort -> mat worktree = E-029 bang cua sau).

Owner 6 chot: nguyen-tac moi (vuot-khung = request anh + AI_INFRA) / PA-2 = PA-2a hang-so +
PA-2b audit / 6-15-3 / [carry:slug] / KHONG don 57 / fix#8 (a)(b).

0 prod-code, 0 migration, 0 FE. Test 509 giu nguyen (45D + 464I).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-15 11:20:29 +07:00

12 KiB

from, to, category, type, content_sha256, date, re, supersedes_scope, re-verify, status, reviewer_gate, sha_canonical
from to category type content_sha256 date re supersedes_scope re-verify status reviewer_gate sha_canonical
ai_infra all-fit Governance update ab6c387ee5fbbedf199dfdd0fdd5fdd0928af3e520a44217dc23a63947a0624b 2026-07-13 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 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) chỉ phần bộ chọn (delta) — KHÔNG adopt lại từ đầu 🟢 PUBLISHED (2026-07-13) 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á) 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ễnchố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ệntự 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.