# adap-report — 2026-07-19-Agent-ensemble-depth-axis-deepen-on-contested

> SE (SOLUTION_ERP) · nhóm-B backlog wave S149(+1) · lane L3.
> Bản này de-facto đã xử @S144 (disposition per-khoản) và **đóng nhãn O-2 @S149**. Báo cáo theo TỪNG KHOẢN F1–F4, không gộp số tổng (`C14-disposition-per-khoan.md:49-54`).

## 1. id-broadcast

`2026-07-19-Agent-ensemble-depth-axis-deepen-on-contested` (type **update**, nối bản ensemble 2026-07-03 · `content_sha256` `f05eba5b8e8c5ac733bc1f8038b07ea9d365723b1fb6832362fb0683fd883199` · `reviewer_gate` PASS-W-FIXES folded + máy-verify 49/49 — đọc từ frontmatter inbox, chưa sha-recompute hôm nay).

## 2. nấc G-011

**executed** — posture đã chọn và phần WIDTH đã có máy; **F1-phần-SÂU chuyển từ `BLOCKED-by-O-2` sang `N/A-by-posture`**, và **một vế acceptance của chính quyết định đó còn TRƯỢT** (`verified-pending`, bảng dưới hàng F1). Không gộp thành một nhãn.

## 3. evidence (đo THẬT — bảng per-khoản F1–F4, floor `depth-axis:38-43`)

| # | Khoản (floor hub) | Nấc SE | Bằng-chứng đo được |
|---|---|---|---|
| **F1** | Trục sâu owner-gated + posture tự chọn + **clamp trần cứng** + assert tổng-lượt ≤ trần | **KÉP: executed (WIDTH) · N/A-by-posture (SÂU)** — kèm 1 vế acceptance TRƯỢT | **WIDTH:** canonical `.claude/agent-memory/memory-budget.json:9-13` khối `hmw_width` — `"cap": 20` · `"mechanism": "loud-skip"` · `"ratified": "2026-07-24"`; mirror code `.claude/workflows/hmw.js:148` `const WIDTH_CAP = 20` + clamp thật `:149-156`. **SÂU:** posture **A (KHÔNG DỰNG)** chốt @S149 — `runs/2026-07-24-S149-owner-gated-3-khoan/gate-synthesis.md:3` *"O-2 nguồn thật = depth-axis (KHÔNG phải goi-chot) → posture-A"*; phương-án A mô-tả tại `spec-owner-gated-3-khoan-24-07-2026.md:44` (*"giữ width-only + depth qua owner-gated per-invocation… 0 dòng code"*). ⇒ `assert tổng-lượt ≤ trần` **không còn đối-tượng để assert** = N/A-by-posture, KHÔNG phải behind. 🔴 **Vế TRƯỢT — đo hôm nay:** acceptance K2 (`spec-owner-gated-3-khoan-24-07-2026.md:67`) đòi **2 vế**: (a) `grep -rn 'BLOCKED-by-O-2' <spec-mới>` = 0 → **ĐẠT** (spec `spec-adap-backlog-25-07-2026.md` 0 hit; 14 hit còn lại đều nằm trong run-folder LỊCH SỬ S144/S149, là vết không phải spec sống); (b) posture ghi ≥1 dòng ở `docs/governance/harness-11-engine.md` → **TRƯỢT: `grep -ic "trục sâu"` = 0 hit** |
| **F2** | Đào điểm-nóng KHÔNG đào-tất; worker tầng-2 KHÔNG tổng-hợp | **n-a (by posture)** | @S144 là "N-A hiện tại — SE chưa có trục sâu" (`C14-disposition-per-khoan.md:33`). Sau posture-A, lý do đổi từ *"chưa có"* thành *"cố ý không dựng"* ⇒ n-a **theo project-fit**, không phải behind. Cửa sâu của SE = `/fable-real` · `/fable-clone` per-invocation (owner-gated), đúng vế escape mà chính hub bắt phải giữ (`depth-axis:55` *"điểm sàn adopt = có trục sâu bật-được + có escape width-only"*) — 🔸 xem caveat §5 về việc SE đọc "bật-được" theo nghĩa nào |
| **F3** | Chống-mỏ-neo tường-minh (worker tầng-2 = con TƯƠI, "đồng-ý-lại = 0 điểm") | **n-a (by posture) + nợ ĐÃ chuyển thành luật chung** | Cùng lý do F2 (`C14:34`). 🔴 Nhưng bệnh mỏ-neo **đã fire thật ở trục khác** (refute do em-main làm — người đã đọc tầng-1, không phải con tươi): nợ đó không bị bỏ, đã nâng thành **luật-chung #9** (O-4a) trong spec đợt-11 v2 — dẫn theo `sub-invest-backlog.md:31` |
| **F4** | **Cận-ngân-sách LOUD** (vượt → BỎ + báo RÕ, không throw, không lặng-thầm) | **executed** | `.claude/workflows/hmw.js:152` in `🔴 VƯỢT TRẦN WIDTH — taskList=… > trần=…` · `:154` in `🔴 LANE BỊ BỎ: …` liệt kê đích danh lane bị bỏ · `:156` `A.taskList = A.taskList.slice(0, WIDTH_CAP)` — **cắt rồi chạy tiếp, không `throw`**. Canonical ghi cùng nghĩa: `memory-budget.json:10` *"Co-che = LOUD-skip: … in 4 dong 🔴 (KHONG throw, KHONG lang-thinh)"*. Khớp verbatim floor `depth-axis:43` *"không văng lỗi"* |

**Neo commit:** 🔴 `hmw.js` và `memory-budget.json` mang thay-đổi này **chỉ nằm trong commit `wal:`** (`72d2d1b` / `611b41f`), **không phải ancestor của `origin/main`** (`2f39a7e`). Bản này neo bằng **file:dòng trên đĩa**; cite sha `wal:` bị cấm theo bài học `2026-07-18-Governance-model-tier-h23-precedence-tested-update.md:26`. Commit durable gần nhất chạm `hmw.js` = `8b6df0a` (S146) — **trước** khi `WIDTH_CAP=20` land, không dùng làm neo.

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

- **Tailored — posture:** hub tự chọn "TRẦN (sâu+rộng nhất) + dial-down + lệnh MAX"; **SE chọn ngược lại: opt-in-off / width-only**, đúng quyền `depth-axis:55` (*"KHÔNG bắt buộc default nào"*). Căn cứ nêu tại `spec-owner-gated-3-khoan-24-07-2026.md:44`: bản `depth-cost` của chính hub đo mode "thật" **thắng ở ~1/10 giá**, mà SE **đã có** mode thật owner-gated (`/fable-real`) ⇒ dựng thêm engine sâu là trả giá cho thứ đã có đường rẻ hơn.
- **Tailored — trần WIDTH 16 → 20:** lý do ghi ngay trong canonical `memory-budget.json:15` (`_why_20_not_16`): trần này không chặn concurrency (engine đã cap `min(16, cpu-2)`) mà chặn **đốt token nhầm**; roster SE = 20 vai nên cap 16 cắt 4 lane, ép chia 2 đợt vô cớ. Rủi ro khai thẳng ngay tại đó: 8 lane @S149 ≈ 1,06M token ⇒ 20 lane ước ~2,5M.
- **Skip F2/F3 = n-a theo project-fit**, không phải behind — SE cố ý không dựng trục sâu (posture-A). Nếu sau này dựng, 2 khoản này sống lại nguyên văn.

## 5. honest-caveat

- 🔴 **Nhãn "O-2 RESOLVED" đã có, VẬT-CHỨNG codify thì CHƯA.** Acceptance K2 (`spec-owner-gated-3-khoan-24-07-2026.md:67`) đòi ≥1 dòng posture trong `docs/governance/harness-11-engine.md`; đo hôm nay = **0 hit**. Nghĩa là posture-A hiện chỉ sống trong run-folder S149, **không có ở nhà canonical của engine** — ai đọc engine-doc sẽ không biết SE đã chọn gì. Đây đúng lớp *"vắng-mặt trông giống ổn"*: nhãn RESOLVED làm khoản này **trông như đã đóng trọn**. ⇒ nấc phần này = **verified-pending**, còn 1 dòng phải land.
  🔸 Ghi-chú phối-hợp: theo spec wave, phép grep này thuộc việc **C-f của lane L4**; L3 tự đo vì kết-luận của chính report này phụ thuộc vào nó. Hai lane có thể ra **hai số** — lead nên đối chứng thay vì tin một phía.
- 🔴 **Trần 20 KHÔNG phải "owner chốt".** `memory-budget.json:14` `_ratified_by` ghi rõ: **OWNER-DELEGATED → LEAD-DECIDED @S149** (anh trả đúng hai chữ *"Trả lời 4 câu"* = uỷ-quyền; lead quyết). Bản này giữ nguyên phân biệt đó, **không** nâng thành owner-chốt — chính file canonical cảnh báo rằng ngay phiên đó đã có một bug tự nâng ADOPT-theo-floor thành "owner chốt".
- 🔸 **"Escape width-only luôn còn" của SE là escape mặc-định, không phải công-tắc.** Hub hình dung một trục sâu **bật-được** rồi tắt về rộng; SE **không có trục sâu trong engine** — chiều sâu đi qua lệnh owner đích danh (`/fable-real`, `/fable-clone`), per-invocation, không persist. SE đọc floor `depth-axis:55` là **đã đạt** ở nghĩa chức-năng (có đường đào sâu + có đường rộng), nhưng nếu hub tính floor theo nghĩa *"cùng một engine, cờ bật/tắt"* thì SE **không khớp** — khai thẳng để hub phán, không tự phong.
- 🔸 **Clamp WIDTH chưa re-fault-inject sau khi số đổi 16 → 20.** Luật SE tại `spec-owner-gated-3-khoan-24-07-2026.md:47` là *"nếu số đổi → re-run fault-inject 2-chiều"*; `gate-synthesis.md:4` ghi có `K8 4-chiều / K9 5/5` @S149. Lane này **không tự chạy lại** trong wave (ngoài phạm vi task) ⇒ trạng-thái fault-inject của con số 20 là **kế thừa từ báo cáo S149, chưa lane nào tái-chứng hôm nay**.
- 🔸 **Drift con-trỏ:** `C14:32` cite `hmw.js` C8b không kèm số dòng; số dòng thật đo hôm nay là `:148-156`. Cite cũ `hmw.js:185` (writeGuard, dùng ở khoản khác) nay đo lại ra `:225` — file đã dịch dòng. Report này dùng **số đo hôm nay**, không chép số cũ.
- 🔸 **Nấc dừng ở `executed`, KHÔNG `verified`** (`adap-report.md:31`).
