# adap-report — 2026-07-16-Governance-tang-luu-tru-so-cai-va-bai-hoc-instrument-dong-cung

> SISTER = SOLUTION_ERP. Report-format LOCK (5 trường). Sinh 2026-07-16 (S127, run `adap-dot-16-07`): ground-truth ở Giai đoạn B (fable-real single deep-pass, mọi anchor tự mở đĩa) → transcribe ở Giai đoạn D.
> Broadcast hub: type `new` · category `Governance` · targets `all-fit` · reviewer_gate hub `GO clean` (`wf_96616c03`) · content_sha256 `291550ffa295050825605ea852d1cbfced5fdef5bb9f44c4da8b0587df7cf12b`.
> Bản này KHÔNG chép công-cụ (mandate broadcast §1: "KHÔNG bảo bạn chép công-cụ"). FUNCTION-floor được adopt = BA CÂU HỎI thiết-kế, dùng làm lăng-kính kiểm-kê MỌI vòng lặp tự-động của SE.

## 1. id-broadcast

`2026-07-16-Governance-tang-luu-tru-so-cai-va-bai-hoc-instrument-dong-cung` (category: Governance · type: new · targets: all-fit · content_sha256 `291550ff…`). Nội dung hub: hub vừa xây xong tầng lưu-trữ tự-động cho hai sổ-cái lớn nhất của mình (nhật-ký phiên + sổ liên-lạc), và phát BA bài học vòng lặp tự-động — (1) trigger đọc một instrument ĐÔNG-CỨNG thì vòng lặp không bao giờ hội tụ; (2) "bảo-toàn byte" và "niêm-phong nội-dung" là HAI phép kiểm khác nhau, thiếu một là mù một lớp lỗi; (3) ĐO và LÀM phải là hai tầng tách rời, ngưỡng phải có phanh. Nhãn honest của hub: tầng này KHÔNG "giải trần" bộ-nhớ, chỉ thu gọn nền tĩnh để dành chỗ cho phần động.

## 2. nấc (G-011)

**executed** — hành-động adopt của bản này là TỰ-ÁP ba câu hỏi thiết-kế làm lăng-kính, kiểm-kê trên **7 vòng lặp tự-động** đang nuôi bộ-nhớ dài hạn của SE. Cuộc kiểm-kê ĐÃ CHẠY trọn ở Giai đoạn B của run này (từng anchor mở đĩa đối chứng, không suy từ lý-lẽ) → sản-phẩm executed = bảng 7×3 + ba kết-luận + một standing-note (§3).

- KHÔNG phải `agreed`: đã chạm việc thật (chạy inventory + rút kết-luận), không dừng ở mức "quyết áp".
- KHÔNG phải `n-a`: broadcast fit SE — SE có ≥7 vòng lặp tự-động thuộc đúng loại hub cảnh báo.
- KHÔNG tự khai `verified`: `verified` là AI_INFRA `/adap-audit` chấm cross-repo, không phải SE tự phong.
- Phần **seal-verify codify** (đề-xuất đóng gap ở §5) KHÔNG thuộc nấc executed này — nó đang OWNER-GATED, chờ anh (xem §5).

## 3. evidence

**Inventory 3-câu-hỏi × 7 vòng lặp SE** (Giai đoạn B — mọi anchor tự mở đĩa; giữ nguyên file:line). Ba câu hỏi = ba bài học hub (broadcast §5 "Cái chuyển được là BA CÂU HỎI"): **q1** ↔ bài-học-1 (instrument đông-cứng) · **q2** ↔ bài-học-2 (bảo-toàn-byte ⟂ niêm-phong) · **q3** ↔ bài-học-3 (ĐO ⟂ LÀM + phanh).

| # | Vòng lặp | q1: trigger đọc instrument SỐNG? | q2: bảo-toàn-byte + NIÊM-PHONG? | q3: ĐO/LÀM tách + phanh? |
|---|---|---|---|---|
| 1 | wal-flush Stop-hook (`.claude/hooks/wal-flush.ps1`) | SỐNG — `git diff --cached --quiet` per-path (:17-18) mỗi turn; sau commit diff rỗng → hội tụ | không move; git commit = content-addressed sha (niêm-phong máy sẵn) | ĐO=:17-18 / LÀM=commit :20-23 chỉ khi cand>0; phanh = rebase-interlock :12 + fail-open :2 |
| 2 | memory-archive-gate.ps1 (planner L1-cap) | SỐNG — PASS-1 đo byte MEMORY.md trên đĩa mỗi run (header :11-15); tunables đọc live từ budget `archive_gate` (:44-51) | ⚠️ **GAP THẬT** — gate = DRY-planner (:6-7 "Does NOT move"); MOVE do em-main TAY; A7 chỉ verify pointer-resolve + file-exists + size>0 (:16-19) ≠ niêm-phong nội-dung; byte-preserve = kỷ-luật tay (vd budget:153 tooling-auditor S106 "moved-not-cut md5-verified") | ĐO=planner / LÀM=người; phanh đủ 3 tầng: A4 hysteresis 0.85 + A5 keep_floor 5 + A6 strike 2 (budget:34-37) |
| 3 | crystallized-backfill.ps1 | SỐNG — đo byte `hotload_sources` tươi mỗi run (:105-115); KHÔNG đọc `budget.measured` | n/a — DRY print-only; pour = em-main tay per-session | ĐO=print plan / LÀM=tay; phanh = precondition `target>0 AND headroom>0` (:126-131); target = owner-authority (budget:74) |
| 4 | governance-detectors.ps1 | SỐNG — đọc docs live + config `h24_cadence` từ budget; key thiếu → **FAIL-LOUD đo-0, cấm default** (:833-845) | n/a — flag-only, không move | ĐO-only by design; LÀM=em-main; INFORM-not-enforce |
| 5 | measure-agent-memory.ps1 | Script đo SỐNG (`Get-Item .Length` :14-23, stdout-only :36-41 — KHÔNG tự ghi budget); NHƯNG snapshot transcribe vào `budget.measured` (:144) = ĐÔNG-CỨNG giữa 2 lần chạy. **Đã được né đúng cách:** consumer `memory-selfimprove-audit.ps1:18` + `:110` khai "budget.measured is STALE — re-measure on disk / ignored"; archive-gate cũng đo live ⇒ **0 trigger tự-động đọc snapshot** (display/bookkeeping-only) | n/a | ĐO-only |
| 6 | sleep-recovery L2 gist (`.claude/commands/sleep-recovery-memory-l2.md`) | SỐNG — trigger tay HOẶC INFORM-only đọc `last_sleep_at` (budget:4); field do CHÍNH command set sau run (Phase 4.4, :54) = instrument phản-ứng hành-động vòng lặp; skip file đã có `.gist.md` (:59) → hội tụ | DERIVE additive KHÔNG move (verbatim ở-lại-đĩa :28); seal-analog = coverage-diff GATE (budget l2_gist rule :29) + reviewer Fidelity (G-001) — kiểm NGƯỜI/AI, chưa máy | ĐO=Phase 0.2 detect / LÀM=nén reviewer-gated; phanh = double-distill guard `distill-gen≥1` REFUSE (:60) + guard-rỗng |
| 7 | curate L1→L2 (nghi-thức em-main closeout) | SỐNG — trigger = size L1 đọc thật lúc closeout (MEMORY.md curate log: hook-triggered @23.9KB/@21.4KB) + planner loop-2 đo live | ⚠️ **GAP cùng lớp loop-2** — "byte-exact append" + append-only (budget l2_verbatim :24) = kỷ-luật TAY; không phép niêm-phong máy sau move | ĐO=planner / LÀM=người; phanh = A4/A5/A6 + value_protect advisory (budget:38-41) |

**Ba kết-luận inventory:**

- **q1 (↔ bài-học-1 "instrument đông-cứng"):** KHÔNG có quả bom instrument-đông-cứng loại hub trong SE — mọi trigger đều đọc số đo SỐNG (đọc byte đĩa hoặc git-diff tươi mỗi lần chạy). Snapshot đông-cứng DUY NHẤT là `budget.measured` (memory-budget.json:144), nhưng nó có **0 consumer tự-động**: bị ignore chủ-động, bằng-chứng `memory-selfimprove-audit.ps1:18` + `:110` khai thẳng "budget.measured is STALE — re-measure on disk"; archive-gate và crystallized-backfill đều đo live, KHÔNG đọc snapshot. **Standing-note (chốt lại thành luật soi-được):** CẤM wire bất kỳ trigger tương-lai nào vào `budget.measured` — nếu về sau cần dùng, phải **tái-cơ-sở** đúng như bài hub (lấy số gốc − phần đông-cứng + giá trị sống đo từ byte hiện tại), tuyệt đối không lấy snapshot làm điều kiện kích-hoạt.
- **q2 (↔ bài-học-2 "bảo-toàn-byte ⟂ niêm-phong"):** GAP THẬT tập trung ở đúng **2 vòng CÓ MOVE — loop-2 (archive-gate) và loop-7 (curate L1→L2)**. Hai vòng này có bảo-toàn-byte ở mức **kỷ-luật TAY** + pointer-check A7 (resolve + file-exists + size>0), nhưng **KHÔNG có niêm-phong máy** (kiểm: kho-mới = kho-cũ + phần-thêm đúng từng byte, và khối-được-dời là chuỗi con nguyên văn của phần-thêm). Đây đúng là lớp lỗi hub cảnh báo: bảo-toàn-byte MÙ trước một byte bị lật-giá-trị cùng độ dài. Năm vòng còn lại KHÔNG move (DRY-plan / flag-only / derive-additive / commit content-addressed) nên không có bề mặt lỗi này.
- **q3 (↔ bài-học-3 "ĐO ⟂ LÀM + phanh"):** MỌI vòng có phần LÀM đều đã tách tầng ĐO/LÀM và có phanh sẵn — hysteresis (A4 0.85) / keep-floor (A5 =5) / strike (A6 =2) / precondition target>0∧headroom>0 / distill-gen-guard / rebase-interlock. Không vòng nào để "đo xong làm luôn" không phanh.

**File path (artifact executed):** `docs/governance/adap-reports/2026-07-16-Governance-tang-luu-tru-so-cai-va-bai-hoc-instrument-dong-cung.md` (chính bản này = sản-phẩm của nấc executed). **commit-sha:** điền từ `git log` sau commit closeout wave-2 (`[CLAUDE] Docs:` — batch 5 adap-report đợt 16-07); tại thời điểm ghi, report chưa commit nên KHÔNG khai sha khống (§C5 no-fake).

## 4. tailored-gì + skip-gì-vì-sao

- **FUNCTION-floor adopt FULLY — BA CÂU HỎI làm lăng-kính:** đúng thứ hub chỉ định là "cái chuyển được" (broadcast §5). SE port nguyên ba câu hỏi và chạy nó thành một cuộc kiểm-kê 7 vòng × 3 câu (§3). Đây là floor, giữ đủ.
- **SKIP = ngưỡng/số/công-cụ của hub (n-a-theo-mandate, KHÔNG phải behind):**
  - Broadcast tự đóng lối chép tool ("KHÔNG bảo bạn chép công-cụ" §1) và tự khai "Con số ngưỡng của hub không chuyển được" (§5) — nên KHÔNG có tool/số nào là floor để adopt.
  - SE **đã có phanh riêng từ H11**, khác ĐƯỜNG nhưng cùng CHỨC-NĂNG với phanh hub: A4 hysteresis 0.85 (phanh trễ, dừng dưới ngưỡng để không rung quanh mốc) · A5 keep_floor 5 (sàn giữ, không dọn sạch) · A6 strike 2 (đếm strike trước khi hành động) — memory-budget.json:34-37. Vì thế chép ngưỡng hub vào là thừa và sai project-fit; SE giữ số của mình.
- **FORM tailored theo roster/topology SE:** lăng-kính áp lên **7 vòng lặp CỤ THỂ của SE** (wal-flush hook · archive-gate planner · crystallized-backfill · governance-detectors · measure-agent-memory · sleep-recovery L2 · curate L1→L2) — KHÔNG hardcode "hai sổ-cái" của hub. Cơ chế move của SE = **em-main tay** (không phải hàm-move tự-động của hub), nên câu q2 được diễn dịch thành "có phép niêm-phong máy sau move tay không" — và câu trả lời trung thực là CHƯA (xem §5).

## 5. honest-caveat

- **seal-gap loop-2 + loop-7 CHƯA vá.** Hai vòng có MOVE (archive-gate DRY-planner + curate L1→L2) hiện chỉ có bảo-toàn-byte **kỷ-luật tay** + pointer-check A7; **KHÔNG có niêm-phong máy** (đọc-lại-sau-ghi để chứng: kho-mới = kho-cũ + phần-thêm đúng byte, và khối-được-dời là chuỗi con nguyên văn). Nghĩa là hôm nay SE vẫn **mù đúng lớp lỗi** mà bài-học-2 của hub chỉ ra — một byte bị lật-giá-trị cùng độ dài trong khối-được-dời sẽ lọt qua phép bảo-toàn-byte. Bản này KHÔNG tự nhận đã đóng gap.
- **Đề-xuất đóng gap = OWNER-GATED, chờ anh (KHÔNG build ở wave này).** Codify một bước **seal-verify sau move** vào nghi-thức curate: md5 file-kho trước và sau khi dời + `Select-String -SimpleMatch` đầu và cuối khối-được-dời trong archive để chứng substring-containment (kho-mới chứa nguyên văn khối-dời). Đây là mức **NGHI-THỨC / doc-checklist**, CHƯA viết tool — đúng mandate broadcast "KHÔNG bảo bạn chép công-cụ". Mục này nằm ở `owner-gated-proposals-dot-16-07.md` số (iii), chờ anh chốt **codify-vào-checklist vs defer**. Tới khi anh chốt, gap loop-2+7 vẫn để MỞ (không tự-đóng bằng lời).
- **Scope-caveat kiểm-kê:** inventory phủ 7 vòng lặp tự-động NUÔI BỘ-NHỚ dài hạn — KHÔNG quét mọi script one-shot ngoài phạm-vi đó. `budget.measured` (memory-budget.json:144) là snapshot đông-cứng-by-design nhưng an-toàn HÔM NAY nhờ 0 automated reader (selfimprove-audit.ps1:18,110 khai ignore); standing-note ở §3 là phanh chặn wire tương-lai — KHÔNG phải bằng chứng "đã có phép niêm-phong".
- **Nấc-honesty:** `executed` = cuộc kiểm-kê đã chạy + kết-luận đã rút, KHÔNG hơn. Không có runtime-restart cần chứng (đây là doc/analysis, không đụng agent/command `.md`), nhưng cũng KHÔNG leo lên `verified` — chờ AI_INFRA `/adap-audit` chấm cross-repo.
