Files
solution-erp/.claude/workflows/runs/2026-07-25-S152-h24-open-bookend/sub-ring2-S152.md
pqhuy1987 c2d01f0dce
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m30s
[CLAUDE] Docs: S152 closeout — bookend hình B trọn 2 đầu + owner (30)(31)(32) + queue memory-ops TRỌN (squash 20 wal:)
- Owner 3-quyết: (30) JUMP để-nguyên-theo-nhịp · (31) 4 persona +NEVER-block (restart ĐÃ THOẢ) · (32) vòng 1→5 AUTO — lô consent gỡ 9 site (5 H1 + ring1-tự-bắt + 3 trio; E-013 EXT)
- Memory-ops TRỌN: A1-A4/D1/D2/R1/B-series — A7 392/392 · mfe 20/20-100% lần đầu · lead-gap drain 24.728→16.485B · strike-ledger + WARN-latch (-Ack = owner-action)
- V4 sleep AUTO đầu: 1 shard thật/16 KÊU · ring4 đầu-đời TRƯỢT-4/5 → 4 fix gist (scribe sub-ring4-close vì return-only)
- Thư model re-stamp: 59ce1d0f → 9c909007 published (G-024a) — adap-report Đính-chính @S152 + sweep 13 bề-mặt LIVE
- Bookend @close: stale 6 FLAG + gap 2 FLAG → vá 8/8; ring2 8/8 ĐẠT (4-A pin-bản-cắt → slot 33) · ring1 48Đ/5T/59-claim
- M9 13 đơn-vị diary (3 S151-deep hồi-tố) · #53 ×10-chắc → tally 60-cận-dưới + errata subject-1b85713
- Session-log 2 run= + completeness-gate 5-vòng ĐẠT · HANDOFF segment S152 (carry 3-đóng/3-mới/23-giữ; slot 33/34)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-26 01:58:30 +07:00

433 lines
37 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# sub-ring2-audit — S152 @open bookend (KIỂM vòng soi-lead H24)
> Vai: **vai-KIỂM độc-lập trên OUTPUT của 2 con-đo H24** (`lead-stale-auditor` + `lead-gap-auditor`). Tao KIỂM 2 con-đo — tao **KHÔNG soi LEAD trực-tiếp** (đó là việc của chúng).
> Propose-only. File này = artifact duy-nhất tao ghi. **APPEND TỪNG MỤC NGAY** (anti-#53, bài S151 của chính tao: verdict phải dán ra đĩa THEO TỪNG mục).
> Mỗi số kèm **LỆNH** sinh ra nó. Số không tái-dựng được ⇒ phán **"không dùng được"**, KHÔNG phán "bịa".
---
## §0 — PIN + fail-safe (nghĩa-vụ (i)): H24 CÓ chạy phiên này
```bash
cd .claude/workflows/runs/2026-07-25-S152-h24-open-bookend && wc -c *.md
# 4578 machine-baseline.md
# 1597 run.md
# 16263 sub-harvest-S152.md
# 21793 sub-lead-gap-S152.md <-- PIN 2 (lead giao "~21,9KB" -> khop)
# 22284 sub-lead-stale-S152.md <-- PIN 1 (lead giao "22.284B" -> khop CHINH XAC)
# 20435 sub-tooling-S152.md
```
- **PIN-1 `sub-lead-stale-S152.md` = 22.284B** — khớp **byte-chính-xác** con số lead giao. TỒN TẠI, không rỗng.
- **PIN-2 `sub-lead-gap-S152.md` = 21.793B** — lead giao "~21,9KB"; đĩa 21.793B = 21,3 KiB / 21,79 KB. Sai-số nhãn-tròn, cùng bậc ⇒ **coi là khớp**, nhưng ghi rõ chênh (anti-"nghe-lời-khai").
- **Nền `machine-baseline.md` = 4.578B** TỒN TẠI ⇒ tao đọc số máy làm nền, không chạy lại việc máy đã làm (trừ cái tao CHỦ Ý tái-dựng).
-**fail-safe KHÔNG kích. Có measure H24 tươi ⇒ tao ĐƯỢC chấm.** (Nếu 1 trong 2 PIN thiếu/rỗng thì luật của tao là NO-OP + CẤM ĐẠT-ảo.)
**Tuần-tự C4b (mày phải chạy SAU cặp H24):**
```bash
ls -la --time-style=+%H:%M:%S *.md
# 20:30 machine-baseline.md · 20:30 run.md · 20:46 sub-harvest · 20:47 sub-lead-stale · 20:48 sub-lead-gap · 20:49 sub-tooling
```
⇒ mtime 2 PIN = **20:47 / 20:48**; tao khởi-động sau đó ⇒ `mtime(output tao) > mtime(H24 return)` **THOẢ**. Không song-song.
**Ranh tao TỰ ÁP (khai trước để chấm được cả tao):** `sub-harvest-S152.md` + `sub-tooling-S152.md` cùng folder = **turf `ring1-audit`**, tao **KHÔNG mở**. `.claude/agent-memory/{trio}` = turf `harness-audit`. Diff-code = `reviewer`.
---
## §1 — Enum-check 5/5 + TÁI-DỰNG SỐ #1: `class_repeat.counts` vs số máy lead khai
### (a) 2 vai có tự chế class ngoài enum 11 không? → **KHÔNG. 5/5 hợp-lệ.**
```bash
python -c "import json,io; d=json.load(io.open('.claude/agent-memory/memory-budget.json',encoding='utf-8-sig'));
fc=d['lead_self_audit']['flag_classes']; print(len(fc)); [print(' ',k) for k in fc]"
# 11: view-stale-count · view-stale-status · view-stale-header · view-stale-role-desc · view-residual-asym
# · gap-carry-dropped · gap-carry-aged · gap-owner-specifics · gap-decision-sunk · gap-underfill · gap-incident-unrecorded
```
| FLAG | class 2 vai gán | ∈ enum-11? |
|---|---|---|
| stale FLAG-1 | `view-stale-count` | ✅ #1 |
| stale FLAG-2 | `view-residual-asym` | ✅ #5 |
| stale FLAG-3 | `view-residual-asym` | ✅ #5 |
| gap FLAG-1 | `gap-carry-dropped` | ✅ #6 |
| gap FLAG-2 | `gap-carry-dropped` | ✅ #6 |
Cả 2 bảng Tally cũng chỉ liệt **đúng 5 class view-\*** và **đúng 6 class gap-\*** = phân-hoạch khít enum, **0 class lạ, 0 class thiếu**. Ghi thêm 2 điểm KHEN có bằng-chứng (không phải khen suông):
- Cả hai vai **tự chặn META-COUNT đúng luật**: stale ghi *"2 instance CÙNG MỘT GỐC-LOẠI, đừng đọc thành 2 lần tái-phát"* (`:246`); gap ghi *"2 FLAG cùng class KHÔNG cộng 2"* (`:206`). ⇒ nghĩa `class_repeat` = **số LẦN class fire**, không phải số FLAG.
- gap **từ chối mở class mới** cho INFORM-1 (`:161` *"KHÔNG xin mở class mới … bịa class là vi-phạm luật vai"*) — đúng lằn enum ĐÓNG.
### (b) TÁI-DỰNG SỐ #1 — máy ghi tally có ĐÚNG như lead khai? **KHỚP 11/11.**
Lead khai: FIRE `view-stale-count` 3→4 · `view-residual-asym` 3→4 · `gap-carry-dropped` 5→6; RESET 5 class (stale-status 4→0 · header 2→0 · role-desc 2→0 · carry-aged 2→0 · decision-sunk 5→0).
```bash
python -c "import json,io; c=json.load(io.open('.claude/governance/.session-counter.json',encoding='utf-8-sig'))['class_repeat']['counts'];
print(len(c)); [print(' %-28s %r (%s)'%(k,v,type(v).__name__)) for k,v in c.items()]"
# 11
# view-residual-asym 4 (int) · view-stale-count 4 (int) · gap-carry-dropped 6 (int)
# gap-decision-sunk 0 · view-stale-status 0 · gap-owner-specifics 0 · gap-carry-aged 0
# gap-incident-unrecorded 0 · view-stale-header 0 · view-stale-role-desc 0 · gap-underfill 0
```
Đối chứng từng dòng với pre-state ở `machine-baseline.md:44`: 3+1=**4** ✅ · 3+1=**4** ✅ · 5+1=**6** ✅ · 4→0 ✅ · 2→0 ✅ · 2→0 ✅ · 2→0 ✅ · 5→0 ✅ · 3 dòng vốn 0 giữ 0 ✅.
**11/11 dòng khớp**, và số máy khớp **đúng Tally 2 vai đề-xuất** (view-stale-count 1 FLAG⇒fire-1 · view-residual-asym 2 FLAG⇒fire-1 · gap-carry-dropped 2 FLAG⇒fire-1). Máy KHÔNG cộng 2 cho 2-FLAG-cùng-class ⇒ **luật chống META-COUNT có RĂNG ở tầng máy**, không chỉ trong văn.
### (c) 🟢 Nợ S151 của chính tao ĐÃ TRẢ (kiểm lại chứ không tin diary)
Diary tao @S151 escalate **D-2: `counts` 10-key / enum 11 — thiếu `gap-underfill`**. Đo lại hôm nay: `len(counts)=11``gap-underfill` CÓ mặt, kiểu `int`. ⇒ **D-2 CLOSED có bằng-chứng.** Invariant "counts chỉ chứa SỐ" (commit `2f39a7e`) còn nguyên: **11/11 = `Int32`**, 0 chuỗi.
⇒ đối lập với S150 (khi đó counts **lạc-hậu 9 dòng** vì máy chưa chạy): phiên này `h24-signal-write` **đã chạy exit-0 và ăn thật**.
### (d) 🔸 Một lệch nhãn-khoá cần lead biết (KHÔNG phải FLAG của 2 vai — turf tooling/H1)
```bash
python -c "...; print('_frozen_until_owner in counter:',raw.count('_frozen_until_owner'))" # -> 0 hit
python -c "...; print('frozen:',raw.count('frozen'), 'light_at:',raw.count('light_at'))" # -> frozen 1 · light_at 4
grep -o 'jump_on_class_repeat' .claude/agent-memory/memory-budget.json # -> nằm trong h24_cadence (=3), KHÔNG trong lead_self_audit
```
- Lead giao tao "frozen=False": đúng theo nghĩa **không có khoá** — nhưng khoá S150 tên `_frozen_until_owner` nay **0 hit** ⇒ khoá đã GỠ (khớp `machine-baseline.md:44` "khoá frozen ĐÃ GỠ"), không phải "có key = False". Nêu để lần sau đừng đọc "False" thành "key tồn tại".
- `jump_on_class_repeat=3` sống ở `h24_cadence`, **không**`lead_self_audit` ⇒ gap-auditor `:215` viện-dẫn số 3 là **ĐÚNG GIÁ-TRỊ**, chỉ không nêu đường-dẫn. Không trừ điểm.
---
## §2 — VERDICT PER-FLAG (nghĩa-vụ (ii)): 5 FLAG, chấm từng cái, KHÔNG gộp
> Luật tao tự áp: verdict = **nội-dung FLAG có thật trên đĩa hay không** + **class có đúng enum**. Khuyết-tật của *bằng-chứng* (số sai nhãn, tập-đo hẹp, cite lệch file) ghi RIÊNG thành **khuyết-tật ngoài FLAG** — không dùng nó đánh trượt FLAG có ruột đúng, cũng không tha.
### FLAG-1 (stale) `view-stale-count` MED → **ĐẠT**
**view — tao tự đọc nguyên-văn, không chép lời khai:**
```
python -c "import io; s=io.open('docs/HANDOFF.md',encoding='utf-8').read().split(chr(10))[6]; i=s.find('(29)'); print(len(s)); print(s[i:i+430])"
# 1401
# (29) 3 carry già máy vừa bắt lại (uat-s134-luyke streak **8** · uat-s133-budget-freeze **10**
# · hook-vs-budget-cap **13** — số tươi @close S151, segment mới +1; số 7/9/12 là lúc đo @giữa-phiên)
# — close-sweep hay giữ tiếp?
```
⇒ view **ĐÚNG như FLAG khai**: 8/10/13 in đậm, bộ 7/9/12 bị dán nhãn "@giữa-phiên" (= cũ).
**TÁI-DỰNG SỐ #2 — tao TỰ VIẾT LẠI detector từ `scripts/governance-detectors.ps1:892-916` (đọc source rồi implement; KHÔNG copy python của vai-stale, KHÔNG chạy lại .ps1):**
```
python -c "
import io,re
raw=io.open('docs/HANDOFF.md',encoding='utf-8').read()
rx=re.compile(r'(?m)^\*\*(?:[^\x00-\x7F]+\s*)?NEXT\s+(?:anh|em)\b')
marks=[m.start() for m in rx.finditer(raw)]
segs=[raw[marks[i]:(marks[i+1] if i+1<len(marks) else len(raw))] for i in range(len(marks))]
cx=re.compile(r'\[carry:([a-z0-9][a-z0-9._-]*)\]')
cl=[]
for s in segs:
ks=[]
for m in cx.finditer(s):
if m.group(1) not in ks: ks.append(m.group(1))
if ks: cl.append(ks)
for k in cl[0]:
n=0
for c in cl:
if k in c: n+=1
else: break
if n>=6: print('FIRE %-24s streak=%-3d total-presence=%d'%(k,n,sum(1 for c in cl if k in c)))
print('mark-lines=',[raw.count(chr(10),0,m)+1 for m in marks])
print('segs=%d carry-lines=%d universe=%d'%(len(segs),len(cl),len(cl[0])))
print('keys ABOVE mark[0] =',len(set(cx.findall(raw[:marks[0]]))))"
# FIRE hook-vs-budget-cap streak=12 total-presence=13
# FIRE uat-s133-budget-freeze streak=9 total-presence=9
# FIRE uat-s134-luyke streak=7 total-presence=7
# mark-lines= [7,8,29,33,34,37,38,42,43,46,47,50,51,54,55,96,121,122]
# segs=18 carry-lines=15 universe=29
# keys ABOVE mark[0] = 26
```
**12/9/7 CONFIRMED bằng code độc-lập** (khớp `machine-baseline.md:27`, khớp FLAG). Bộ **8/10/13 KHÔNG tồn tại** dưới ngữ-nghĩa streak. **FLAG có thật.**
**Tao đi xa hơn FLAG 1 bước — và nó làm FLAG MẠNH hơn:** tao thử CỨU bộ 8/10/13 bằng câu hỏi *"có thước nào cho ra 13 không?"*`total-presence` (số carry-line chứa key, không cần liên-tiếp) của `hook-vs-budget-cap` = **13**. Nhưng 2 key kia total-presence = **9 và 7** ⇒ nếu view dùng thước đó thì phải ghi 7/9/13, không phải 8/10/13. ⇒ giả-thuyết "view dùng thước khác" **BỊ BÁC**; giả-thuyết vai-stale ("một mô-hình +1 sai áp cho cả bộ") **GIỮ**. Trùng 1/3 là ngẫu-nhiên.
**Cơ-chế "+1 KHÔNG xảy ra" — verify TRỰC TIẾP trên source (phần mạnh nhất của FLAG):** `:893-897` dựng `$segs` **từ `$marks[0].Index` trở đi**; đo được `marks[0]` = **LINE 7**, và `HANDOFF:6` (khối re-stamp @S151, **26 slug** = đúng `keys ABOVE mark[0] = 26`) nằm **TRÊN** nó ⇒ **loại trọn khỏi phép đo**. ⇒ mệnh-đề *"segment mới +1"***sai CƠ-CHẾ**, không chỉ sai số. Vai-stale phán đúng.
**Khuyết-tật ngoài FLAG: 0** — mọi số nó nêu (kể cả `segments=18 carry-lines=15`) tao tái-dựng 1:1.
---
### FLAG-2 (stale) `view-residual-asym` MED → **ĐẠT** (+2 khuyết-tật ngoài FLAG)
**TÁI-DỰNG SỐ #3 — bundle-hash, 2 lệnh ĐỘC-LẬP + MỞ RỘNG tập-đo sang file vai-stale không grep:**
```
# L1: grep, dem theo dong
grep -n -o 'B2j1LQ-v\|C3wbJegk\|BVCukFP5\|DoxyEOxh' docs/STATUS.md docs/HANDOFF.md | sort | uniq -c
# L2: python, dem doc-lap per-line (khong dung grep)
python -c "
import io
for f in ['docs/STATUS.md','docs/HANDOFF.md']:
for i,l in enumerate(io.open(f,encoding='utf-8').read().split(chr(10)),1):
h={t:l.count(t) for t in ['B2j1LQ-v','C3wbJegk','BVCukFP5','DoxyEOxh'] if t in l}
if h: print('%-16s :%-4d %s len=%d'%(f,i,h,len(l)))"
```
**Hai lệnh KẾT QUẢ Y HỆT:**
| bề-mặt | cặp | đọc-được |
|---|---|---|
| `STATUS:6` · `STATUS:465` · `HANDOFF:13` | **S147 `B2j1LQ-v`/`C3wbJegk`** | đúng **3** surface — khớp 3 nguồn FLAG khai |
| `STATUS:455` | **S134 `BVCukFP5`/`DoxyEOxh` ×2** | **0** lần cặp S147 ⇒ **FLAG có thật** |
| `STATUS:491/:497/:514/:528` | S134 (cũ) | recap **S141S143 / S140 / "State GIỮ NGUYÊN" ×2** — frozen, đúng như FLAG khai |
| **MỚI: `HANDOFF:31/:35/:40`** | S134 (cũ) | vai-stale **KHÔNG grep HANDOFF cho cặp cũ** — tao grep thêm |
**Mở rộng tập-đo KHÔNG phá FLAG (khai cả 2 chiều):** 3 hit mới đều mở đầu `**Prev S140:**` / `**Prev S138S139:**` / `**Prev S134:**`**recap đóng-băng hợp-lệ** (trap#3), không phải bề-mặt sống. ⇒ mệnh-đề *"S147 sửa 3 bề-mặt, bỏ đúng 1"* **giữ hiệu-lực**; tao ghi 3 hit này thành **VERIFIED-CLEAN** để phiên sau đừng flag oan.
**Vị-trí `:455` — verify chứ không tin lời khai:**
```
python -c "
import io,re
L=io.open('docs/STATUS.md',encoding='utf-8').read().split(chr(10))
[print(i,l[:80]) for i,l in enumerate(L,1) if re.match(r'^#{1,3} ',l) and 430<i<470]"
# 437 ## CURRENT STATE (baseline S40 — re-ground sống liên tục, mốc gần nhất S151)
# 462 ## Recently Done (S151 — 2026-07-25)
```
`:455` nằm **TRONG §CURRENT STATE** (437 < 455 < 462); bảng canonical `441-453`, `:454` trống, `:455` = dòng bundle *"ngay dưới bảng canonical"* **CHÍNH XÁC**. Đây cái làm FLAG đáng MED thật: không phải recap, **ô hiện-hành**.
**Khuyết-tật ngoài FLAG:**
- **D-a (số sai NHÃN):** FLAG ghi *"TOÀN BỘ 13.120 ký-tự của dòng này"*. Đo: `len(s)` = **12.381 ký-tự** · `len(s.encode('utf-8'))` = **13.120 byte** 13.120 **BYTE** bị gọi "ký-tự". Cùng lớp bẫy byte-vs-char cắn @S130. Không phá kết-luận, nhưng số phải đúng nhãn mới dùng lại được.
- **D-b (tập-đo hẹp hơn lời khẳng-định):** câu *"bỏ đúng 1 bề-mặt"* nêu sau khi chỉ grep cặp **trong STATUS**. Muốn nói "đúng 1" phải quét cả HANDOFF (tao quét: may 3 hit kia đều frozen). **kết-luận đúng nhờ thực-tế, không nhờ phép đo.**
---
### FLAG-3 (stale) `view-residual-asym` MED → **ĐẠT** (bằng-chứng khít nhất trong 5 FLAG)
**TÁI-DỰNG SỐ #4 — offset trên `.claude/agents/README.md:5`:**
```
python -c "
import io
s=io.open('.claude/agents/README.md',encoding='utf-8').read().split(chr(10))[4]
print('chars=%d bytes=%d'%(len(s),len(s.encode('utf-8'))))
for n in ['lead DEFAULT Opus 5 MAX','superseded-VALUE','Lead runtime = per-session owner-choice','Lineage:']:
print(' off=%-6s %s'%(s.find(n),n))"
# chars=1830 bytes=2000
# off=179 lead DEFAULT Opus 5 MAX
# off=296 superseded-VALUE
# off=1224 Lead runtime = per-session owner-choice
# off=1662 Lineage:
```
**4/4 offset khớp CHÍNH XÁC** (179/296/1224/1662) + `line len = 1830` khớp. Điểm chốt FLAG được xác-nhận bằng **thứ-tự offset**: `Lineage:` 1662 > 1224 ⇒ cụm in-đậm ở 1224 **KHÔNG nằm trong** mệnh-đề lineage; nhãn tuyết duy-nhất ở off **265** thuộc mệnh-đề TRƯỚC. **FLAG có thật, cơ-chế đúng.**
**Tao đọc nguyên ngữ-cảnh 1224 để TỰ THỬ BÁC (không chấm qua offset suông):**
> `**Lead runtime = per-session owner-choice (Fable ↔ Opus); lịch-sử flip-chain lead = canonical [docs/STATUS.md §Sub-agents]**`
- Vế sau **CÓ trỏ canonical** cho phần lịch-sử ⇒ **tình-tiết giảm-nhẹ thật**, vai-stale không nêu, tao ghi vào.
- Nhưng vế đầu vẫn là **khẳng-định thì-hiện-tại về runtime**, in đậm, **đối-lập trực-diện** với chính dòng đó ở off 179 (`superseded-VALUE`). ⇒ **MED giữ**, không hạ.
**Khuyết-tật ngoài FLAG: 0.**
---
### FLAG-1 (gap) `gap-carry-dropped` MED-HIGH → **ĐẠT** (+2 khuyết-tật ngoài FLAG; tao BỔ-SUNG positive-control mà vai-gap thiếu)
**TÁI-DỰNG SỐ #5 — B-token trên `HANDOFF:8` (NEXT em), 2 regex độc-lập:**
```
python -c "
import io,re
s=io.open('docs/HANDOFF.md',encoding='utf-8').read().split(chr(10))[7]
print('chars=%d'%len(s))
print('M1 ->',sorted(set(int(x) for x in re.findall(r'\bB(\d{1,2})\b',s))))
print('M2 ->',sorted(set(re.findall(r'B\d{1,2}',s))))
print('B3 on line8?',('B3' in s))"
# chars=1372
# M1 -> [1, 2, 4, 5, 7, 10]
# M2 -> ['B1','B10','B2','B4','B5','B7']
# B3 on line8? False
```
**{B1,B2,B4,B5,B7,B10}, 0 B3** — khớp tuyệt-đối. **Lane lead: B3 VẮNG, xác nhận.**
**Lane owner** (B3 ghi rõ "→ owner + lead"): slot NEXT anh `HANDOFF:7` = `(4)(5)(6)(7)(11)(12)(13)(14)(15)(20)(21)(22)(26)(27)(28)(29)`; tao đã đọc nguyên slot (29) ở FLAG-1 và (26) ở FLAG-2 ⇒ 0 slot mang B3. **0 route trên CẢ HAI lane: CONFIRMED.**
**🔴 Tao thêm POSITIVE-CONTROL mà vai-gap KHÔNG chạy — chỗ tao gia-cố FLAG:**
```
for r in database-agent harvest-curator office-document tooling-auditor; do printf "%-18s %s\n" "$r" \
"$(grep -c -iE 'anti-pattern|NEVER|KHÔNG BAO GIỜ' .claude/agents/$r.md || true)"; done
# database-agent 0 · harvest-curator 0 · office-document 0 · tooling-auditor 0
for r in reviewer ring2-audit lead-stale-auditor lead-gap-auditor; do printf "%-20s %s\n" "$r" \
"$(grep -c -iE 'anti-pattern|NEVER|KHÔNG BAO GIỜ' .claude/agents/$r.md || true)"; done
# reviewer 8 · ring2-audit 1 · lead-stale-auditor 2 · lead-gap-auditor 2
```
⇒ 4 vai = **0**, 4 vai đối-chứng = **8/1/2/2****pattern CÓ RĂNG**; "0" là **vắng thật**, không phải regex chết. Vai-gap chỉ chạy vế-0 — regex hỏng thì cũng in 0 y hệt và không ai biết (bài `feedback_faultinjection_proves_teeth`). **B3 KHÔNG phải dương-giả: CONFIRMED-máy.**
**git-claim kiểm được:**
```
git log --oneline -3 --name-only -- .claude/agents/
# 1b85713 (closeout S151) -> CHI .claude/agents/README.md
# 398d343 (S149-S150) -> README + harness-eval + harness-refine + lead-gap + lead-stale + ring1/ring2/ring4
```
*"closeout S151 chỉ chạm README, 4 persona KHÔNG sửa"* **CHÍNH XÁC**.
**Khuyết-tật ngoài FLAG:**
- **D-c (số KHÔNG DÙNG ĐƯỢC như nhãn):** vai-gap ghi `grep -oE '\bB3\b.{0,60}' docs/HANDOFF.md docs/STATUS.md → 6 hit`. Tao chạy **đúng lệnh literal đó****10**; pattern trần `\bB3\b` → cũng **10**. Phân-rã: HANDOFF **6** + STATUS **4** ⇒ số 6 = **count của MỘT file trong HAI file được nêu****"không dùng được"** như nhãn. 🔴 Tao **KHÔNG phán "bịa"**: cơ-chế hợp-lý (báo số file đầu), và **kết-luận không đổi** — tao đọc ngữ-cảnh **10/10** hit: HANDOFF `:52 :53 :65×2 :68×2` = B3 mega-line tách-dòng S126/S130; STATUS `:452 :563 :578×2` — trong đó **`:452` là TÊN DETECTOR `C2/B3`** (nghĩa thứ 3!). ⇒ *"TẤT CẢ là B3 KHÁC"* **HELD trên tập-đo ĐẦY ĐỦ**, mạnh hơn bản gốc.
- **D-d (cite lệch tập-đo):** vai-gap dẫn `"B3 VERIFY→APPEND"` làm ví-dụ nghĩa-khác — grep 2 file nó đo → **0 hit**. Nghĩa đó **CÓ THẬT** nhưng ở nơi khác: `.claude/agents/harness-refine.md:57` · `agents/README.md:241` · `governance/ACTIVE-MARKS.md:3`. ⇒ ví-dụ đúng, **địa-chỉ gán sai**.
---
### FLAG-2 (gap) `gap-carry-dropped` MED → **ĐẠT phần "datum không tới đích"** · 🔴 **1 khuyết-tật NẶNG ngoài FLAG (nhãn "lỗi" trái với chính config)**
**TÁI-DỰNG SỐ #6 — `87693` có mặt ở đâu:**
```
grep -rn -oE '87\.?693' docs/HANDOFF.md docs/STATUS.md .claude/WAL.md \
.claude/governance/ACTIVE-MARKS.md docs/changelog/sessions/2026-07-25-1930-S151-*.md
# (rong) = 0 hit -> khop dung 5 so 0 vai-gap khai
grep -rln --include=*.md -E '87\.?693' .
# runs/2026-07-25-S151-h24-open-bookend/machine-baseline.md
# runs/2026-07-25-S151-h24-open-bookend/sub-lead-gap-S151.md
# runs/2026-07-25-S151-trio-memory/harness-eval-return.md
# runs/2026-07-25-S151-trio-memory/instruments-S151.md
# runs/2026-07-25-S152-h24-open-bookend/sub-lead-gap-S152.md <- chinh file no
```
**87.693 chỉ sống trong run-folder** (artifact phiên), **0 bề-mặt bền***"vế MỚI không tới đích"* **CONFIRMED**.
**Slot đích — đọc nguyên-văn:**
```
python -c "
import io; s=io.open('docs/HANDOFF.md',encoding='utf-8').read().split(chr(10))[28]; i=s.find('(26)')
print('chars=%d off=%d'%(len(s),i)); print(s[i:i+300])
print('reserve=%d harness_floor=%d'%(s.count('reserve'),s.count('harness_floor')))"
# chars=8780 off=8530
# (26) **`crystallized_backfill.target` 210000 > headroom đo tươi 190.437 tok** => chỉ-báo underfill
# **hỏng mẫu-số** … anh **hạ target / tuyên ASPIRATIONAL / giữ** (số = quyền anh) `[carry:underfill-mau-so]`.
# reserve=0 harness_floor=0
```
⇒ slot (26) TỒN TẠI, chỉ chứa vế cũ, **0 `reserve` · 0 `harness_floor`***"NỬA VẮNG"* **CONFIRMED**. `grep -c harness_floor docs/HANDOFF.md` = **1**, hit đó đúng là lịch-sử *"Owner-directed: `harness_floor` 30K→100K + measured→55K"* ⇒ khớp `:95-96`.
**🔴 KHUYẾT-TẬT NẶNG (tao tự đi đọc config — vai-gap KHÔNG dẫn dòng này):** `.claude/agent-memory/memory-budget.json``harness_floor._owner_override_note`, **nguyên-văn**:
> *"CAVEAT (honest, unchanged): harness_floor is an ACCOUNTING/AWARENESS figure (separate house, A3 anti-double-count); **it is NOT actively subtracted by the current scripts** (mfe-eval.ps1 / crystallized-backfill.ps1 govern via token_governor caps, not this floor). **If owner wants 100K wired as an ACTIVE reserve subtracted from headroom, that is a separate change.**"*
Lệnh: `python -c "import json,io; print(json.load(io.open('.claude/agent-memory/memory-budget.json',encoding='utf-8-sig'))['harness_floor']['_owner_override_note'])"` · walk-tree xác-nhận `harness_floor.rounded_up_tokens = 100000``crystallized_backfill.target = 210000`.
⇒ Việc script **không trừ** reserve là **có khai, có chủ-đích, đang chờ owner****KHÔNG phải "lỗi"**. Vai-gap `:96` viết *"không ghi **lỗi KHÔNG-TRỪ**"* và `:99` *"mỗi lần đo lại là một lần tái-khẳng-định **mẫu-số hỏng**"* ⇒ **nhập một tiền-đề (trừ mới đúng) mà chính config phủ-định**.
🔸 Nghịch-lý đáng ghi: **dòng config nó bỏ sót lại là bản MẠNH NHẤT của chính luận-điểm nó** — câu *"that is a separate change"* = **một cửa quyết-định owner tường-minh**, và cửa đó cũng **vắng** khỏi slot (26). Dẫn được câu đó thì FLAG-2 thành "thiếu đúng cái owner-hook mà config chỉ tên", khỏi cần nhãn "lỗi".
⇒ Verdict: **ĐẠT** (vật thiếu THẬT, class đúng, đích được chỉ-định tồn tại và trống) · **kèm khuyết-tật khung-diễn-giải phải sửa TRƯỚC khi lead chép vào HANDOFF** — chép nguyên "mẫu-số hỏng / lỗi không-trừ" là **đưa tiền-đề sai vào bề-mặt bền**, đúng cái class `view-*` mà vai kia đang bắt.
---
## §3 — Verify 2 disposition-BÁC: bác ĐÚNG hay bác để né việc?
> Đây là chỗ dễ gian nhất của con-đo: gọi một thứ là "dương-giả" thì nó biến mất khỏi tally mà không ai kiểm. Tao chấm **cả hai chiều**: bác có căn-cứ không, VÀ có phải né-việc không.
### D-0 — `broken-gotcha-ref` #91 (máy C1 MED) → **BÁC ĐÚNG**
```
python -c "
import io,re
s=io.open('docs/changelog/sessions/2026-07-25-1930-S151-bootstrap-trio-auto-fixes.md',encoding='utf-8').read().split(chr(10))[24]
print('chars=%d'%len(s))
print('bare \"gotcha 91\" =',len(re.findall(r'gotcha 91',s)), '| \"#91\" =',len(re.findall(r'#91',s)))
for m in re.finditer(r'[\"“”\`][^\"“”\`]{0,40}gotcha 91[^\"“”\`]{0,40}[\"“”\`]',s): print('ENCLOSED ->',m.group(0))"
# chars=274 | bare "gotcha 91" = 1 | "#91" = 0 | ENCLOSED -> "gotcha 91"
grep -c '^### [0-9]\+\.' docs/gotchas.md # -> 83 (tail -3 -> ### 81. / ### 82. / ### 83.)
```
Ngữ-cảnh nguyên-văn tao đọc: *"…(**"gotchas 111.616B"** lùi match "11") → chốt `(?!\d)`. Live: #111 tắt, **positive-control "gotcha 91" giữ răng."*
**Ba căn-cứ ĐỘC-LẬP xác nhận vai-stale bác đúng:**
1. **Enclosure use⟂mention có thật, đo được:** literal `gotcha 91` nằm **trong ngoặc-kép** (regex enclosure của tao bắt được) ⇒ vai-trò **mention** (tên một fixture test), không phải **use** (viện-dẫn một gotcha).
2. **Không có cặp view↔source nào lệch:** câu đó không khẳng-định "có 91 gotcha"; `gotchas.md` max **83** không mâu-thuẫn mệnh-đề *"fixture tên `gotcha 91` vẫn bị bắt"*.
3. 🔸 **Tao bắt thêm 1 điểm vai-stale bỏ qua — nó làm luận-điểm bác MẠNH hơn:** dòng đó có **0 lần** xuất-hiện token `#91`. Máy in *"cites **#91**"* ⇒ **chính lời buộc-tội của máy đã thêm dấu `#` không có trên đĩa**. Cái bị so với "max 83" thậm chí không phải một citation dạng `#N`.
**Có phải né-việc không? KHÔNG** — vai-stale vẫn **chuyển turf tường-minh** (INFORM discriminator `"..."`/`` ` `` cho lane máy, kèm đánh-đổi "mention thật-sự-stale trong ngoặc sẽ lọt"). Đúng nấc: nó không sửa detector (turf H1), không giấu.
**Tao tự thử xếp lại class khác:** `view-residual-asym`? — cần một đợt-sửa một-phía; ở đây **không có bề-mặt anh em nào** để bất-đối-xứng. `view-stale-count`? — cần view trỏ **số cũ của cùng đại-lượng**; đây là **literal đầu vào test**. ⇒ **0 class trong enum-11 khớp** ⇒ *"MED này không sinh FLAG lead-view nào"* **ĐÚNG**.
### D-1 — RAG 2447-vs-2448 → **BÁC ĐÚNG** (tao đo LIVE độc-lập, không đọc baseline)
**TÁI-DỰNG SỐ #7 — tao tự gọi MCP, không tin `machine-baseline.md:41`:**
```
mcp__rag-unified__list_projects
# -> solution_erp: chunk_count = 2448 ; last_indexed_at = 2026-05-29T23:26:13 (stale-known)
```
⇒ live **2448** xác nhận độc-lập.
**3 bề-mặt STATUS — tao grep chính-xác, không tin liệt-kê:**
```
for n in 2447 2448 2441; do grep -rn -o "$n" docs/STATUS.md docs/HANDOFF.md .claude/commands/session-start.md; done
# 2447 -> STATUS:6 · STATUS:453 · STATUS:465 (dung 3, 0 noi khac, 0 hit trong HANDOFF)
# 2448 -> STATUS:6 · STATUS:477 <-- BAO DONG cua tao
# 2441 -> STATUS:453
```
🔴 **Tao tưởng bắt được bất-đối-xứng nội-bộ ngay trên `:6` — rồi TỰ BÁC:**
```
python -c "...; print(s[m.start()-130:m.start()+90]) for m in re.finditer('2448',s)"
# STATUS:6 -> "... sha re-anchor `2448393` ..." <- COMMIT SHA, khong phai chunk-count
# STATUS:477 -> "... commit `2448393` + (re-anchor @S151 ...)"
```
⇒ **BROKE nghi-vấn của chính tao.** `:6` chỉ có **một** giá-trị chunk = 2447. Mệnh-đề *"ba bề-mặt đồng-thanh 2447, 0 bất-đối-xứng nội-bộ"* **HELD**. Ghi ra đây để phiên sau khỏi đi lại đúng cái báo-động-giả này.
**🔸 Tao bổ-sung bằng-chứng vai-stale KHÔNG có — nó biến "phán đoán hợp-lý" thành "có số":** chuỗi lịch-sử trong recap đóng-băng của STATUS là **đơn-điệu tăng theo phiên**:
```
grep -rn -oE 'RAG [*]{0,2}24[0-9][0-9]' docs/STATUS.md
# :340 2431 · :352 2431 · :319 2433 · :283 2434 · :223 2436 · :201 2437 · :177 2438 · :145 2439 · :6/:465 2447
```
⇒ **đại-lượng này THẬT SỰ là bộ-đếm runtime tăng đơn-điệu, mỗi closeout +N** — đúng luận-điểm 1 và 3 của vai-stale (*"flag này không bao giờ resolve bền"*). BÁC **có nền số**, không phải né.
**Consumer — tao verify nguyên-văn thay vì tin trích:**
```
sed -n '294p' .claude/commands/session-start.md
# "- `mcp__rag-unified__list_projects` - verify collection `proj_solution_erp` con song
# (chunk-count so LIVE voi row \"RAG chunks\" trong `docs/STATUS.md` §CURRENT STATE - B1,
# KHONG chep so o day; 🧊 moc cung \"~3076\" cu = thuoc hong, ...)"
```
+ row `RAG chunks` ở `:453` **nằm trong §CURRENT STATE** (437 < 453 < 462, đo ở §2). ⇒ INFORM của vai-stale (*"cấu-trúc so-khớp-tuyệt-đối này sẽ LUÔN lệch ở lần mở phiên kế"*) **chính xác về cơ-chế**, và dòng đó **đã tự gỡ** thước cứng cũ ⇒ nó biết vấn-đề, chỉ chưa có ngưỡng. Đúng turf tooling. **Không né.**
---
## §4 — FALSIFY-LOG (nghĩa-vụ (iii)): 7 phép thử phủ-định · **4 HELD / 3 BROKE**
> Luật tao tự áp (bài S149/S150 của chính tao): **phép thử của tao cũng phải bị falsify**. 3/7 phép dưới đây là tao đi bác **chính nghi-vấn của tao** — và cả 3 đều BROKE, tức tao suýt tạo báo-động-giả.
| # | Phép thử phủ-định | Kết |
|---|---|---|
| **F1** | **Bác cơ-chế của gap INFORM-1.** Nó nói *"universe = nhóm segment line 8+11+24+28"*; tao nghi sai vì detector lấy `carryLines[0]`. Đo: liệt kê 15 carry-line kèm dòng-bắt-đầu ⇒ `carryLines[0]` = segment mở tại **line 8**, **trải dài tới line 28** (mark kế ở line 29) và chứa tag ở đúng **8/11/24/28** = **29 key**. Đối-chứng: **union toàn bộ 15 carry-line = 36 key ≠ 29** ⇒ số 29 của nó là **universe thật**, không phải union bừa. | 🔴 **BROKE** (nghi-vấn của TAO sai; gap **ĐÚNG**) |
| **F2** | **Cứu bộ 8/10/13 của view** bằng giả-thuyết "vai-stale dùng sai thước": thử thước `total-presence` (không cần liên-tiếp) ⇒ **7/9/13**. Không khớp 8/10/13. Thử `streak` ⇒ 7/9/12. Không thước nào ra 8/10. | **HELD** (stale FLAG-1 đứng) |
| **F3** | **Phá "bỏ đúng 1 bề-mặt"** của stale FLAG-2 bằng cách grep cặp bundle CŨ trong **HANDOFF** (file nó không quét) ⇒ ra thêm **3 hit `:31/:35/:40`**. Đọc ruột: cả 3 mở đầu `**Prev S140:**`/`**Prev S138S139:**`/`**Prev S134:**` = recap đóng-băng hợp-lệ. | **HELD** (FLAG đứng; tập-đo hẹp nhưng kết-luận đúng) |
| **F4** | **Bác D-1** bằng "STATUS:6 có cả 2448 ⇒ có bất-đối-xứng nội-bộ!" ⇒ đọc ngữ-cảnh: `2448393` = **commit SHA**. | 🔴 **BROKE** (báo-động-giả của TAO) |
| **F5** | **Bác con số "6 hit" của gap** bằng chạy **đúng lệnh literal** của nó ⇒ **10**; pattern trần cũng **10** (HANDOFF 6 + STATUS 4). | 🔴 **BROKE số** (nhưng **kết-luận HELD** trên tập đầy-đủ 10/10) |
| **F6** | **Bác B3-blind-spot** bằng nghi *"grep chết nên in 0"*: chạy **positive-control** 4 role-file khác ⇒ **8/1/2/2**. | **HELD** (pattern có răng, 0 là vắng thật) |
| **F7** | **Bác honest-zero `view-stale-role-desc`** bằng săn tên-vai đã CHẾT: STATUS còn `lead-view` ×7 · `lead-omission` ×6 · `h24-audit` ×2 · `tooling-harvest-audit` ×1 · `sleep-audit` ×1. Đọc từng ngữ-cảnh ⇒ **toàn bộ là narrative lịch-sử / dòng RENAME-lineage `:452`**, 0 câu luật thì-hiện-tại. Đối chiếu: **20/20 tên vai trên đĩa đều có trong `agents/README`**. | **HELD** (0-fire đúng; **M-1@S150 của chính tao ĐÃ được vá**) |
---
## §5 — THÁCH-CLEAN (nghĩa-vụ (iv), BẮT BUỘC): nhắm class tuyên 0-fire + 3 chỗ khai "Không soi"
> Bài S150 của chính tao: **CLEAN nguy nhất nằm ở class con-đo tự tuyên 0**, không ở class nó fire nhiều. Phiên này tao soi **5 mũi**; 3 mũi ra CLEAN thật (ghi rõ để khỏi báo oan), **2 mũi ra thứ hai vai KHÔNG có**.
### 🔴 M-1 — **FLAG BỊ SÓT**: `view-stale-count` instance thứ HAI (tally #53 = **50 vs 53**) rơi đúng KHE giữa 2 vai
**Vật:**
```
grep -o 'tally chốt 50' docs/HANDOFF.md docs/STATUS.md
# docs/HANDOFF.md:5 (segment S151, LIVE) "tally chốt 50"
# docs/STATUS.md:6 (header CURRENT, LIVE) "tally chốt 50"
# docs/STATUS.md:463 (Recently Done S151) "tally #53 = 50 (derive)"
git log --format=%s | grep 'tally #53'
# 1b85713 "... (tally #53=53, AS-17 promote)" <-- BAT DOI XUNG
python -c "print(33+5+7+5)" # 50 <- derive-from-body theo chinh than so: qua-S148 33 + S149 5 + S150 7 + S151 5
grep -o '×50 qua S151' .claude/auto-memory/MEMORY.md # 1 hit (auto-memory dong tinh 50)
```
⇒ **3 bề-mặt doc + auto-memory nói 50** (và phép cộng derive-from-body ra **đúng 50**), **1 bề-mặt bền là commit-subject nói 53**. Một trong hai sai; commit-subject **bất-biến** nên vá = 1 dòng đính-chính, không phải rewrite.
**Vì sao đây là FLAG THẬT của vòng H24 chứ không phải tao lấn việc:**
- Class khớp **`view-stale-count`** (enum #1) — cùng class vai-stale **ĐÃ fire** phiên này. Tức không phải mở class mới, mà là **instance thứ 2 bị bỏ**.
- 🔴 **Vai-gap đã nêu ĐÍCH DANH vai nhận** — `sub-lead-gap-S152.md:194`: *"lệch SỐ tally: `HANDOFF:5` 'tally chốt 50' vs commit `1b85713` 'tally #53=53' vs auto-memory '×50 qua S151' — số-cũ/số-lệch ⇒ **turf `lead-stale-auditor`**, tao KHÔNG nhận."*
- **Vai-stale KHÔNG hề nhận:** `grep -c 'tally chốt\|1b85713\|derive-from-body' sub-lead-stale-S152.md` → **0**. Hit `#53` duy-nhất trong file nó là chữ *"anti-#53"* ở `:5` (luật ghi của chính nó).
**🔴 Phát hiện CƠ-CHẾ (giá-trị hơn cả cái FLAG) — nghi-thức chữa S149 KHÔNG THỂ chạy được ở cấu-hình này:**
```
ls -la --time-style=+%H:%M:%S runs/2026-07-25-S152-h24-open-bookend/sub-lead-*.md
# 20:47:33 sub-lead-stale-S152.md <-- ghi xong TRUOC
# 20:48:45 sub-lead-gap-S152.md <-- moi day turf sang, SAU 72 giay
```
⇒ Vai-gap đẩy turf **sau khi** vai-stale đã đóng file **72 giây**. Bài S149 của tao (*"honest-zero đẩy-turf phải nêu ĐÍCH DANH vai nhận"*) **đã được tuân-thủ đúng chữ** — và vẫn rơi, vì **vai nhận không tồn tại nữa ở thời-điểm được gọi tên**. ⇒ Nghi-thức đó **cần-nhưng-không-đủ**: với 2 vai chạy song-song, người nhận khả-thi **duy nhất** là **lead** (hoặc tao). **Đề-nghị sửa luật:** turf-handoff phải ghi *"→ lead: chuyển cho X phiên SAU"*, không phải *"→ X"*.
### 🔴 M-2 — Khuyết-tật SỐ có hệ-thống của `lead-stale-auditor`: **byte bị gọi là "ký-tự", ×2 lần**
```
python -c "
import io
H=io.open('docs/HANDOFF.md',encoding='utf-8').read().split(chr(10))
S=io.open('docs/STATUS.md',encoding='utf-8').read().split(chr(10))
print('STATUS:455 chars=%d bytes=%d'%(len(S[454]),len(S[454].encode('utf-8'))))
print('HANDOFF:29 chars=%d bytes=%d'%(len(H[28]),len(H[28].encode('utf-8'))))"
# STATUS:455 chars=12381 bytes=13120 <- no ghi "13.120 ky-tu"
# HANDOFF:29 chars=8780 bytes=10389 <- no ghi "mega-line 10.389 ky-tu"
```
⇒ **2/2 con số độ-dài dòng trong báo-cáo của nó đều là BYTE mang nhãn "ký-tự"**, lệch **+6,0%** và **+18,3%**. Một lần là typo; **hai lần cùng chiều cùng lớp = công-cụ đo của nó trả byte** (đúng lớp bẫy `Get-Content` no-Encoding @S130 đã ghi trong auto-memory). Không phá kết-luận nào, nhưng vai này **chuyên trách "số lệch"** ⇒ đơn-vị của chính nó phải chuẩn thì số mới tái-dụng được.
### 3 mũi soi ra CLEAN THẬT (ghi để khỏi báo oan — honest-zero của TAO, kèm lệnh)
- **`view-stale-header` 0-fire + trục H24-3 (chỗ vai-stale khai "không đo lại phiên này")** → **CLEAN**. `docs/STATUS.md` có **0** chuỗi `Last updated` (⇒ 0 nhãn phiên để lệch); `docs/HANDOFF.md` có **5** (`:5 :10 :13 :22 :27`) và cái **mới nhất `:5` = "2026-07-25 tối (S151…)"** — đúng phiên closeout gần nhất, đang @open S152 nên **chưa được phép là S152**. 3 cái dưới đều mang tiền-tố `(kỳ S149S150)` / `(kỳ S147)` = **nhãn kỳ tường-minh**, không phải header tụt hậu.
- **`view-stale-role-desc` 0-fire** → **CLEAN** (F7): 20 file trên đĩa, **20/20 tên có mặt trong `agents/README`**; tên-vai đã chết chỉ còn trong lineage/narrative. 🔸 1 datum không thành FLAG: `investigator-api` **không xuất-hiện lần nào trong `docs/STATUS.md`**, và ô canonical `:452` chỉ nêu đích-danh **12/20** vai — nhưng ô đó **không tự khai là bảng liệt-kê đầy-đủ** (nó khai SỐ, và số 20 đúng) ⇒ **không đủ yếu-tố phát flag**, chỉ đặt lên bàn.
- **`.claude/commands/session-end.md` (chỗ vai-stale khai "chỉ chạm qua grep VC-4")** → **CLEAN trên trục tao soi được**: 0 hit cả 5 tên-vai đã chết (`lead-view`/`lead-omission`/`h24-audit`/`tooling-harvest-audit`/`sleep-audit`), và **0 chỗ chép số roster**. 🔸 Vế còn nợ khai thẳng: `session-end.md:251` **đang nằm trong 15 LOW derived-stale của máy** (`machine-baseline.md:23`) — máy phủ chỗ đó, tao không phủ toàn-diện.
### Mũi thứ 5 — gap honest-zero `gap-incident-unrecorded = 0`: **đúng LUẬT, nhưng đúng chỗ M-1 nứt**
Tao verify vế nó khai: `grep -o 'AS-17' docs/governance/error-ledger.md | wc -l` → **4** · `docs/HANDOFF.md` → **3** ⇒ sự-cố S151 (garble ×5/6, skeleton-rỗng) **CÓ vết bền thật** ⇒ honest-zero **hợp-lệ, không phải né**. Nhưng **con số của chính sự-cố đó** (tally 50 vs 53) là thứ nó **đẩy đi** và không ai nhận ⇒ ranh *"sự-cố có được ghi không"**"số của sự-cố có đúng không"* là ranh **đúng luật** nhưng **hở ở mối nối** — xem M-1.