[CLAUDE] Docs: S110 adopt H21 + model-tier-v3 — engine-đắt per-invocation (/fable-real|/fable-clone <vai> <đề-bài>, marker RETIRED) + spec-file 3-mục K.E + MTv3 lead owner-choice + triage-S5 env-dependent; WF wf_0c3b307f-a64 3-worker-Opus + invest/reviewer Fable PASS_WITH_FIXES 5M-fixed + email 01d9096e + 2 adap-report + STAGE-2 ×4

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
pqhuy1987
2026-07-11 20:39:15 +07:00
parent 162f0b9dc5
commit debe82fce5
25 changed files with 566 additions and 112 deletions

View File

@ -1,15 +1,40 @@
---
description: Về Fable-clone mode (H19, MẶC-ĐỊNH) — 2 vị-trí phán-quyết (reviewer + investigator-codebase) chạy ensemble tier-2-mạnh-nhất (N lane đa-lăng-kính CÙNG vai + em-main refute+synthesize) thay top-model thật. Xóa marker fable-real-mode.on. Cặp /fable-real.
description: /fable-clone <vai> <đề-bài> — ENGINE-ĐẮT LỆNH-B per-invocation (H21): vai anh GÁN chạy ENSEMBLE tier-2-mạnh-nhất (N lane đa-lăng-kính CÙNG 1 VAI qua hmw.js parallel + em-main refute+synthesize) cho đề-bài đó — KHÔNG marker, KHÔNG mode persist. Thiếu/sai vai → em main hỏi lại anh 1 dòng, KHÔNG tự chọn. Cặp /fable-real.
argument-hint: <vai roster 12> <đề-bài phán-quyết> — vd "reviewer rà commit X" · "investigator-codebase truy bug Y"
---
# /fable-clone — Về Fable-clone (ảo / ensemble, MẶC-ĐỊNH) cho 2 vị-trí phán-quyết (H19)
# /fable-clone — ENGINE-ĐẮT LỆNH-B: 1 vai × ENSEMBLE tier-2 (per-invocation, H21)
> Cặp **`/fable-real`**. 🔴 restart Claude Code sau khi tạo/sửa (no hot-reload).
> Xóa marker `.claude/fable-real-mode.on` (Remove-Item; không có → "đã ở ảo-mode sẵn"). Về **MẶC-ĐỊNH**: 2 vị-trí phán-quyết chạy **ensemble tier-2** = "bản sao Fable" — để dành quota top-model cho lead.
> **Ảo-ensemble = reuse HMW** (hmw.js `parallel` multi-lane + em-main P3/P4 refute+synthesize) — pattern đã dogfood **S101 WF2** (3-lane reviewer bắt README:51 stale-label mà token-exact sweep sót, commit `f229b07`). KHÔNG cần build engine mới.
> Cặp **`/fable-real`** (lệnh-A single top-model). 🔴 restart Claude Code sau khi tạo/sửa (no hot-reload).
> **Adopt H21 S110 (2026-07-11)** — supersede semantics **toggle-marker H19 (S101)**. KHÔNG còn mode-ảo mặc-định để "về", KHÔNG còn marker: cả 2 lệnh giờ = engine-đắt **per-invocation**, chỉ SỐNG trong lượt anh gõ.
> 📘 **Runbook:** [`docs/governance/fable-real-runbook.md`](../../docs/governance/fable-real-runbook.md) · 🔧 **Guard §K:** [`docs/governance/harness-11-engine.md`](../../docs/governance/harness-11-engine.md) §K (engine).
## 🔴 Guard (§K engine — bất-biến cả 2 mode)
- **N lane CÙNG 1 vai phán-quyết** (reviewer HOẶC investigator-codebase, multi-lens), KHÔNG mixed-roster fan-out.
- **N lane RETURN-only** → em-main single-writer ghi 1 MEMORY entry + nhãn engine (H19 §5).
- Phạm-vi CHỈ 2 vị-trí; lead + mọi vai khác KHÔNG đụng (H19 §3).
- Bật/tắt mode = quyền anh (gõ lệnh), KHÔNG auto.
**Vai + đề-bài lượt này:** $ARGUMENTS
## 🔴 Semantics per-invocation (H21 ①/②)
- **`/fable-clone <vai> <đề-bài>`** = vai anh gán chạy **ENSEMBLE tier-2-mạnh-nhất** = **N lane đa-lăng-kính CÙNG 1 VAI** (qua HMW `parallel`) + em-main **refute + synthesize** (P3/P4) = "bản sao Fable". Rẻ quota top-model, giữ tầng phản-biện chống-đồng-thuận-sai.
- **Hiệu-lực CHỈ lượt đó** — **KHÔNG còn "về mặc-định"**, KHÔNG marker, KHÔNG persist (H19 mode thật/ảo đã retired H21). Lượt sau muốn ensemble = gõ lại lệnh.
## 🔴 Vai BẮT BUỘC ∈ roster 12 (H21 ②)
`investigator-codebase` · `investigator-api` · `implementer-backend` · `implementer-frontend` · `frontend-designer` · `database-agent` · `office-document` · `test-specialist` · `reviewer` · `cicd-monitor` · `tooling-auditor` · `harvest-curator`.
- **Thiếu `<vai>` HOẶC vai ngoài roster** → em main **hỏi lại anh 1 dòng**, **KHÔNG tự chọn vai**.
- ⚠️ **Limitation lệnh-B × 2 vai monitor:** `tooling-auditor` · `harvest-curator` **`hmw.js` VALID_ROLES (10 vai)** → ensemble qua hmw sẽ **fail-soft rơi default-subagent** (mất persona + memory-pack, chỉ WARN log). Cần ensemble cho 2 vai này → em main báo anh (bổ sung VALID_ROLES = đổi code, chờ anh duyệt) HOẶC dùng lệnh-A `/fable-real`.
- 🔒 **Honest-note (a/b):** bảo-đảm = **owner-gated tầng lệnh + kỷ-luật lead**, **KHÔNG code-enforced**; lệnh/alias = cách anh **gán vai nhanh**, hệ **KHÔNG tự chọn vai**.
## 🔴 Spec-file 3-mục BẮT BUỘC mỗi run (H21 ①)
Mỗi lần chạy engine-đắt PHẢI kết-tinh 1 spec theo pipeline **propose → verify → ghi → thực-thi**:
1. **Engine propose-only** — vai chạy ensemble đề-xuất [đề-bài · cách làm · checklist]. Engine KHÔNG tự ghi.
2. **Lead verify** — lead soi + chỉnh (P3/P4 refute + synthesize N lane).
3. **Lead ghi** file `.claude/workflows/runs/<run-id>/spec-<tên-tính-năng>-<dd-mm-yyyy>.md`**3 heading cố-định:** ① Tính-năng/đề-bài · ② Cách implement · ③ Checklist (vai + deliverable + acceptance **ĐO ĐƯỢC**).
4. **Worker thực-thi THEO spec** — spec bơm **QUA ARGS/prompt** (worker KHÔNG tự Read file).
- 🔒 **Honest-note (c):** file spec do **LEAD ghi SAU khi verify** — engine KHÔNG tự ghi.
- 🔒 **Honest-note (d):** run **chấm/verify CŨNG sinh spec-file** (kế-hoạch xử issue = "cách làm" cần kết-tinh).
## 🔴 Guard ensemble (§K engine — 3 floor-fidelity)
- **ảo-ensemble = N lane CÙNG 1 vai phán-quyết** (multi-lens trên 1 vai), **KHÔNG** mixed-roster fan-out (`hmw.js` VALID_ROLES = **10 vai** — 2 monitor ∉ list, xem limitation trên; KHÔNG gate vai — all-inherit **che** leak tới khi Fable về + phân-tầng).
- **N lane RETURN-only**; em-main **single-writer** (B3) ghi **1 MEMORY entry** đúng vai đó + **gắn nhãn engine đã dùng** (hmw SCHEMA `memoryDelta` KHÔNG field engine → em-main stamp @P3 harvest).
- **Một vai = một trí-nhớ** dù N lane (chống AS-10 fragment N-lane).
## 🔴 Floor model-tier v3 + lead-discipline
- **Lead = frontier-class do ANH chọn per-session** {Fable 5 | Opus 4.8 — **1M MAX**}; **CẤM Sonnet/Haiku-class ghế lead**. Engine-đắt per-invocation = đường DUY NHẤT nâng 1 vai lên hạng-nhất.
- ⚠️ **Lead KHÔNG tự ý gọi engine-đắt****kể cả khi HMW-mode ON**; chỉ chạy khi anh gõ lệnh.

View File

@ -1,27 +1,41 @@
---
description: BẬT Fable-real mode (H19) — 2 vị-trí phán-quyết (reviewer=cổng-cuối + investigator-codebase=ground-truth) chạy SINGLE top-model THẬT (deep pass) thay ensemble ảo. /fable-clone về mặc-định. Gõ = anh CONSENT nâng 2 vị-trí lên top-model chế-độ thật (H19 §4, không tự-động).
argument-hint: (trống = bật thật-mode · hoặc kèm task phán-quyết đầu tiên)
description: /fable-real <vai> <đề-bài> — ENGINE-ĐẮT LỆNH-A per-invocation (H21): vai anh GÁN chạy 1 LẦN SINGLE top-model THẬT (Fable 5; outage → single-Opus-1M/run) deep-pass cho ĐÚNG đề-bài đó, hiệu-lực CHỈ lượt đó — KHÔNG marker, KHÔNG mode persist. Thiếu/sai vai → em main hỏi lại anh 1 dòng, KHÔNG tự chọn. Cặp /fable-clone.
argument-hint: <vai roster 12> <đề-bài phán-quyết> — vd "reviewer rà-soát commit X" · "investigator-codebase truy nguồn bug Y"
---
# /fable-real — BẬT Fable-real (thật / single top-model) cho 2 vị-trí phán-quyết (H19)
# /fable-real — ENGINE-ĐẮT LỆNH-A: 1 vai × SINGLE top-model deep-pass (per-invocation, H21)
> Cặp **`/fable-clone`**. 🔴 restart Claude Code sau khi tạo/sửa (command `.md` no hot-reload).
> 📘 **Runbook vận hành** (hàm/biến/checklist 2 lane × 2 mode + AC 8-tiêu-chí + anti-patterns): [`docs/governance/fable-real-runbook.md`](../../docs/governance/fable-real-runbook.md) (S108 — first-real-run dogfooded).
> **Adopt H19 (S101, 2026-07-03)** — floor-change model-tier, RC-stamp `RC-pqhuy1987-03-07-2026-17-46-35` (`ACTIVE-MARKS.md`). Gõ lệnh = **anh CONSENT** cho 2 vị-trí phán-quyết chạm **top-model chế-độ THẬT** (single deep run) — KHÔNG tự-động, CHỈ khi anh gõ (H19 §4/§9 point-2).
> **Mode persist qua marker:** `/fable-real` → em main tạo `.claude/fable-real-mode.on` (Write) → SỐNG qua session/compact. `/fable-clone` xóa (về ảo mặc-định). marker = source-of-truth · **gitignored** (KHÔNG commit — tránh thật-mode kẹt-ON khi clone = burn quota top-model).
> Cặp **`/fable-clone`** (lệnh-B ensemble). 🔴 restart Claude Code sau khi tạo/sửa (command `.md` no hot-reload).
> **Adopt H21 S110 (2026-07-11)** — supersede semantics **toggle-marker H19 (S101)**. KHÔNG còn `.claude/fable-real-mode.on`, KHÔNG còn mode persist qua session/compact: engine-đắt CHỈ SỐNG trong **lượt anh gõ lệnh** này.
> 📘 **Runbook vận-hành** (hàm/biến/checklist per-invocation + AC + anti-patterns): [`docs/governance/fable-real-runbook.md`](../../docs/governance/fable-real-runbook.md).
> 🔧 **Guard ensemble / single-writer:** [`docs/governance/harness-11-engine.md`](../../docs/governance/harness-11-engine.md) §K (engine).
**Task phán-quyết đầu (nếu có):** $ARGUMENTS
**Vai + đề-bài lượt này:** $ARGUMENTS
## 🔴 Phạm-vi SÀN (H19 §3 — bất-biến, KHÔNG lan sang vai khác)
- CHỈ **2 vị-trí phán-quyết**: `reviewer` (cổng rà-soát cuối — adversarial + thử-phá + phân-xử) + `investigator-codebase` (ground-truth/xác-minh sự-thật — truy bằng-chứng gốc chống bịa + RCA). KHÔNG vai khác.
- **Lead** luôn top-model (tuyệt-đối KHÔNG đụng). **Mọi vai khác** (implementer/test/cicd/frontend-designer/…) giữ model mặc-định như cũ.
- Đổi mode CHỈ khi anh gõ lệnh — KHÔNG auto theo số-dư/cảm-tính (giữ quyết-định-khách-quan, mark `RC-…10-29-09`).
## 🔴 Semantics per-invocation (H21 ①/②)
- **`/fable-real <vai> <đề-bài>`** = vai anh gán chạy **1 LẦN top-model THẬT** (sâu nhất, đắt nhất) cho ĐÚNG đề-bài đó. Fable up = single-Fable; Fable **outage** (H5, lỗi `"Model isn't available"`) = single-**Opus-1M** fallback **theo từng lần chạy** (KHÔNG mode toàn-cục).
- **Hiệu-lực CHỈ lượt đó** — hết lượt là hết. KHÔNG marker, KHÔNG persist. Lượt sau muốn engine-đắt = gõ lại lệnh.
## Cơ-chế 2 mode (H19 §4)
- **Fable-real (thật, marker CÓ):** 2 vị-trí chạy **1 lần top-model trực-tiếp** (sâu nhất, đắt nhất). Fable up = single-Fable; Fable down (H5) = single-Opus-1M fallback **theo từng lần chạy** (KHÔNG đổi mode toàn-cục).
- **Fable-clone (ảo, marker VẮNG = mặc-định):** 2 vị-trí chạy **ensemble tier-2-mạnh-nhất** — N lane đa-lăng-kính **CÙNG 1 vai** (qua HMW `parallel`) + em-main **refute + synthesize** (P3/P4) → "bản sao Fable". Rẻ quota top-model, giữ tầng phản-biện chống-đồng-thuận-sai.
## 🔴 Vai BẮT BUỘC ∈ roster 12 (H21 ②)
`investigator-codebase` · `investigator-api` · `implementer-backend` · `implementer-frontend` · `frontend-designer` · `database-agent` · `office-document` · `test-specialist` · `reviewer` · `cicd-monitor` · `tooling-auditor` · `harvest-curator`.
- **Thiếu `<vai>` HOẶC vai ngoài roster** → em main **hỏi lại anh 1 dòng** ("engine-đắt cần vai đích-danh — vai nào?"), **KHÔNG tự chọn vai**.
- 🔒 **Honest-note (a):** "không tự chọn vai" = tầng **KỶ-LUẬT owner-gated** (anh phải gõ vai) — **KHÔNG claim code-enforced**.
- 🔒 **Honest-note (b):** lệnh/alias = cách anh **GÁN VAI NHANH**, vẫn phải anh gõ — hệ **KHÔNG tự chọn vai**.
## 🔴 Guard ensemble (§K engine — 3 floor-fidelity, WF1 `wf_5f308fd8-744` bắt)
- **ảo-ensemble = N lane CÙNG 1 vai phán-quyết** (multi-lens trên 1 vai), **KHÔNG** mixed-roster fan-out (hmw.js VALID_ROLES nhận cả 10 vai, KHÔNG gate — all-inherit che leak tới khi Fable về).
- **N lane RETURN-only**; em-main single-writer (B3) ghi **1 MEMORY entry** đúng vai đó + **gắn nhãn engine đã dùng** (H19 §5 — hmw SCHEMA `memoryDelta` KHÔNG có field engine → em-main stamp @P3 harvest).
- Một vai = một trí-nhớ dù chạy thật/ảo/engine nào (chống AS-10 fragment N-lane).
## 🔴 Spec-file 3-mục BẮT BUỘC mỗi run (H21 ①)
Mỗi lần chạy engine-đắt PHẢI kết-tinh 1 spec theo pipeline **propose → verify → ghi → thực-thi**:
1. **Engine propose-only** vai chạy top-model đề-xuất [đề-bài · cách làm · checklist]. Engine KHÔNG tự ghi.
2. **Lead verify** — lead soi + chỉnh nội-dung propose.
3. **Lead ghi** file `.claude/workflows/runs/<run-id>/spec-<tên-tính-năng>-<dd-mm-yyyy>.md`**3 heading cố-định:** ① Tính-năng/đề-bài · ② Cách implement · ③ Checklist (vai + deliverable + acceptance **ĐO ĐƯỢC**).
4. **Worker thực-thi THEO spec** — spec bơm **QUA ARGS/prompt** (worker KHÔNG tự Read file).
- 🔒 **Honest-note (c):** file spec do **LEAD ghi SAU khi verify** — engine KHÔNG tự ghi.
- 🔒 **Honest-note (d):** run **chấm/verify CŨNG sinh spec-file** (kế-hoạch xử issue = "cách làm" cần kết-tinh).
## 🔴 Floor model-tier v3 (broadcast 2026-07-11)
- **Lead = frontier-class do ANH chọn per-session** {Fable 5 | Opus 4.8 — cả hai **1M MAX**}. **CẤM lớp model thấp (Sonnet/Haiku-class) ngồi ghế lead.**
- **Engine-đắt per-invocation = đường DUY NHẤT nâng 1 vai lên hạng-nhất**, chỉ trong lượt lệnh anh gõ. Ngoài lệnh, mọi vai giữ model roster mặc-định (**H8 all-inherit** — cả 12 sub `model: inherit` theo lead).
- ⚠️ **Lead KHÔNG tự ý gọi engine-đắt****kể cả khi HMW-mode ON**. Engine-đắt chỉ chạy khi anh gõ `/fable-real|/fable-clone <vai> <đề-bài>`.
## 🔴 Guard (§K engine — bất-biến)
- **Single deep-pass RETURN-only**; em-main **single-writer** (B3) ghi **1 MEMORY entry** đúng vai đó + **gắn nhãn engine đã dùng** (hmw SCHEMA `memoryDelta` KHÔNG field engine → em-main stamp @P3 harvest).
- **Một vai = một trí-nhớ** dù chạy thật/ảo/engine nào (chống AS-10 fragment). Guard ensemble N-lane đầy-đủ (khi cặp `/fable-clone` chạy) → §K.

View File

@ -24,17 +24,25 @@ Em main đọc `.claude/hmw-mode.on` → **BÁO ngay đầu response** (anh kh
> 🚦 **T4 + H6.1 (governed-ultracode, adopt S63):** keyword "workflow"/"ultracode" = **QUYỀN hỏi** khi **mode-OFF** (+ "chạy workflow" → em **TỪ CHỐI + nhắc gõ `/ultra-on`**). 🟢 **Mode-ON (H6.1): task SUBSTANTIVE (≥2 bước độc-lập · multi-file · sweep/audit/review/migration/research/verify-heavy) → em TỰ author+chạy Workflow HMW (KHÔNG cần gõ "workflow"; marker-ON = consent); TRIVIAL (<2-3' · 1-file · hỏi-đáp · governance-authoring single-writer) → solo.** CẤM native `/effort ultracode` (mất guard).
## 📋 BƯỚC 0.5b — Fable-real/clone mode marker check (H19 — adopt S101)
## 📋 BƯỚC 0.5b — Engine-đắt per-invocation (H21 — adopt S110, supersede H19 marker)
Em main đọc `.claude/fable-real-mode.on` **BÁO ngay** (mode phán-quyết 2 vị-trí `reviewer` + `investigator-codebase`):
- **Marker TỒN TẠI** → **🔴 Fable-real mode = ON** — 2 vị-trí phán-quyết chạy SINGLE top-model THẬT (deep pass). `/fable-clone` về ảo-ensemble.
- **Marker KHÔNG có** → **🟢 Fable-clone mode (MẶC-ĐỊNH, ảo)** — 2 vị-trí chạy ensemble tier-2 (N lane CÙNG vai + em-main synthesize) khi heavy-judgment. `/fable-real` bật thật.
**KHÔNG còn mode/marker để đọc** `.claude/fable-real-mode.on` **retired S110** (H19 marker-toggle nghỉ). Engine-đắt (nâng 1 vai lên hạng-nhất) **CHỈ chạy trong lượt anh gõ lệnh**, KHÔNG persist qua session/compact:
- **`/fable-real <vai> <đề-bài>`** → lệnh-A: vai anh gán chạy **SINGLE top-model THẬT** deep-pass, 1 lượt.
- **`/fable-clone <vai> <đề-bài>`** → lệnh-B: vai anh gán chạy **ENSEMBLE tier-2** (N lane CÙNG vai + em-main synthesize), 1 lượt.
- **Vai anh gán đích-danh ∈ roster 12**; **thiếu/sai vai → em main hỏi anh, KHÔNG tự chọn**.
- **Mỗi run sinh spec-file 3-mục** (engine propose → **lead verify + ghi** `.claude/workflows/runs/<run-id>/spec-<tên>-<dd-mm-yyyy>.md` → worker thực-thi THEO spec bơm qua args). ⚠️ **Lead KHÔNG tự ý gọi** engine-đắt (kể cả HMW-mode ON).
> 🚦 **H19 §3 scope:** mode CHỈ đổi model 2 vị-trí phán-quyết (reviewer=cổng-cuối · investigator-codebase=ground-truth) — **lead + mọi vai khác KHÔNG đụng**. Đổi mode = quyền anh gõ lệnh (KHÔNG auto/số-dư). ⚠️ **Vacuously-inert dưới all-inherit + Fable-outage** (2 vị-trí đã top-model) → báo-mode để future-proof + nhắc anh khi Fable về + phân-tầng. (Reader này đóng gap WF2-Lane-A "marker write-only": marker giờ có consumer.) **Runbook thao-tác 2 lane (hàm/biến/checklist) →** `docs/governance/fable-real-runbook.md` (S108).
> 🧊 **Lịch-sử:** H19 marker-toggle + 2-vai-cố-định (reviewer + investigator-codebase), S101→S110 → **retired H21**; 2 lệnh chuyển **per-invocation** (vai anh gán bất-kỳ ∈ roster 12). Chi-tiết → [`harness-11-engine.md`](../../docs/governance/harness-11-engine.md) §K + [`fable-real-runbook.md`](../../docs/governance/fable-real-runbook.md).
## 📋 BƯỚC 0.6 — Model-availability check (H5 — adopt S63)
## 📋 BƯỚC 0.6 — Model-availability check (H5 — adopt S63 · MTv3 reword S110)
Em main xác nhận **lead model resolve được** đầu session. Lead SE = **Fable 5 (1M) Max** (per H4). **DOWN** = lỗi `"Model isn't available — claude-fable-5[1m]"` → fallback **`/model claude-opus-4-8[1m]`** (Opus 4.8 · 1M · Max — top-tier, KHÔNG hạ §A1; **KHÔNG sửa frontmatter agent**promote `inherit` tự theo lead → two-tier tạm collapse single-tier Opus, **revert-FREE** khi Fable về). Phản xạ THỦ-CÔNG (không hook tự-switch). ✅/⚠️ **Runtime = per-session (Fable ↔ Opus, outage-driven)** — Fable DOWN → H5-fallback Opus tự-kích revert-free (KHÔNG sửa frontmatter); Fable UP → tự về. **Lịch-sử flip-chain đầy-đủ (S98→nay) = canonical [`docs/STATUS.md` §Sub-agents]** (🔴 S106 gộp 1-chain per anh-confirm — reader này KHÔNG enumerate/cập-nhật mỗi flip; chống churn 4-file/flip). BƯỚC 0.6 probe MỖI phiên xác-định runtime SỐNG (per-session — KHÔNG tin note phiên trước, KHÔNG steady-state).
Em main xác nhận **lead model resolve được** đầu session. **Lead = frontier-class do ANH CHỌN per-session** {**Fable 5 (1M) Max** | **Opus 4.8 (1M) Max**}**owner-choice hợp-lệ CHÍNH THỨC** (đổi giữa phiên OK, ghi 1 dòng session-record); **CẤM lớp model thấp (Sonnet/Haiku-class) ngồi ghế lead** (§A1 floor).
**Outage-path (H5, GIỮ):** lead-model DOWN = lỗi `"Model isn't available — claude-fable-5[1m]"` → fallback **`/model claude-opus-4-8[1m]`** (Opus 4.8 · 1M · Max — top-tier, KHÔNG hạ §A1; **KHÔNG sửa frontmatter agent** — promote `inherit` tự theo lead → two-tier tạm collapse single-tier Opus, **revert-FREE**). Phản-xạ THỦ-CÔNG (không hook tự-switch).
**Outage đóng:** phiên **ĐẦU TIÊN** sau đó em main hỏi anh **ĐÚNG 1 DÒNG** ("model hạng-nhất resolve lại — giữ hạng-hai hay đổi?"), **hỏi 1 lần, không lặp** (thay auto-revert cũ). **Flip-record từ nay gắn nhãn {owner-choice | outage}** khi ghi: **owner-chọn-hạng-hai ≠ outage → 0 caveat / 0 nghĩa-vụ revert**; chỉ outage-fallback mới mang caveat tạm-thời.
**Lịch-sử flip-chain đầy-đủ (S98→nay) = canonical [`docs/STATUS.md` §Sub-agents]** (🔴 S106 gộp 1-chain per anh-confirm — reader này KHÔNG enumerate/cập-nhật mỗi flip; chống churn 4-file/flip). **BƯỚC 0.6 probe MỖI phiên** xác-định runtime SỐNG (per-session — KHÔNG tin note phiên trước, KHÔNG steady-state).
## Phase 1 — READ (load context)