[CLAUDE] Docs: Harness-17 deep-reverify (WF3) — fault-injection teeth-proof + cross-doc + AI_INFRA update

- WF3 wf_6f44eddf-680 (anh-directed 3rd pass): Lane A fault-injection PASS (13 inject prove teeth: A1/A2/C-spectrum/B1/B2/A3 all catch faults, no-false-flag, off-by-one correct, 8/8 md5 match restore) + Lane C integration PASS (0 application-defect, anti-Goodhart flip proofs, numbering intact, mfe-eval A2 not broken)
- Lane B empty-return (#53) → em-main self-gate recover (N=3/HCV/run-id/hash consistent, detector 27)
- engine §I banner: inline WF2 wf_8e73c1d6-ee6 + WF3 wf_6f44eddf-680 (was WF2-pointer-only)
- adap-report: +Deep-reverify(WF3) section + 2 brittleness honest-noted (fail-safe over-flag, not fixed per Lane A) + dogfood-C3-round2
- email AI_INFRA update (hash 8c94fa348514): deep-reverify notify
- dogfood: WF3 reviewer self-write reverted (D9/AS-10 round-2); cicd-monitor verdict kept (legit normal-spawn) — Run #476 success, prod 200x3, Mig 59
- 0 .ps1 changed → CI-skip (docs-only); 0 production code

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
pqhuy1987
2026-07-01 09:31:55 +07:00
parent 18a17f5498
commit 65b434a370
5 changed files with 60 additions and 7 deletions

View File

@ -70,11 +70,11 @@ BE (test+build) ~90s · FE × 2 ~60s/app · deploy ~30s · **total ~3min code /
## 📅 Recent runs (compressed — full verbatim → `archive/2026-06.md` via `archive/_INDEX.md`)
- **🟢 S93 #473 (id=473, run_number 359) `8ee8f3e` GO ~5m23s (PE tree node Dự án hiện MÃ thay TÊN-dài — FULL-STACK DTO+projection, NO-MIG, FE-real-rotate)** — 7-file: 3 BE App (`PurchaseEvaluationDtos.cs` +`ProjectCode` positional-record · `PurchaseEvaluationFeatures.cs` thread `x.p.Code`→3 projection [List/Inbox/ListApproved] + search `p.Code` · `CreateContractFromEvaluationFeatures.cs`) + 4 FE SHA-mirror (fe-admin+fe-user `PurchaseEvaluationsListPage.tsx` render `pg.projectCode||pg.projectName`+tooltip+sort, `purchaseEvaluation.ts` +`projectCode`). NO `*Migrations*` (DTO/projection-only, 0 schema). status=success ⟹ test gate passed (baseline **434**=45 Dom+389 Infra per brief; tasks-API no numeric, trusted terminal-success+baseline). Smoke 4×200 (api live/ready, admin/eoffice root) + admin :80→301-https. **FE ship-proof (REAL fe-src diff ⟹ #69 expect rotate)**: admin JS `xz8FdmLN``CDn40vpV` + user JS `CA8Rla2w``CoPmPBg7` ✅ (BOTH rotated); **CSS BOTH FROZEN** admin `DWQ-DgfZ`/user `Dr0-ikKX` — CORRECT (TSX-logic+TS-field only, ZERO new Tailwind class ⟹ css byte-identical, mirrors S90). Last-Modified admin `09:04:19Z`/user `09:05:14Z` BOTH in-window (run 16:00:19→16:05:42+07) + size admin 1,636,195b/user 1,542,518b real-JS · SPA-trap control fake-hash=919b text/html (confirms large=genuine). **Mig prod=59** (`AddCcmBudgetPeriodToPurchaseEvaluation` latest, COUNT=59 matches repo-HEAD, NO new applied — expected, 0 mig-file in commit). sqlcmd-over-ssh UTF-16LE base64 EncodedCommand, `-U vrapp -P buKL3TGBkD0wDDbYVw65QeX9` (no prefix). Pre-deploy LIVE baseline matched brief's S92 prev-hash EXACTLY (no drift this run). 🔑 **css-frozen-on-logic-only-FE = NOT-a-fail** (re-confirms S90 pattern: JS rotates, CSS frozen when no new utility class — don't FAIL on partial-rotate).
- **🟢 S92 #472 (id=472, run_number 358) `1408d4e` GO ~5m24s (eOffice hide 5 menu-groups non-Admin — BE-ONLY DbInitializer permission-revoke EXPANSION, VERIFY-PROD-EFFECT)** — 4-file: `DbInitializer.cs` (RevokeTemporarilyHiddenModulesAsync `+Contracts/Ct_*/Master/Suppliers/Projects/Departments/Catalog*` on top of S58 Hrm*/Off*/Personal + 2 re-grant calls DISABLED [SeedAllRolesHrmProfileReadPerms S65 + SeedAllRolesOfficeModulePerms S69 commented] + InReviewScope narrowed `Pe_*` only) + 3 test files (new `AdminOnlyModulesRevokeTests` ×3). NO `*Migrations*`/fe-src. status=success ⟹ test gate passed (baseline **434**=45 Domain+389 Infra per spec; logs 404 anon, trusted gate+baseline). **PURPOSE = verify revoke FLIPPED existing prod rows (NOT bundle).** Smoke 4×200 (api health/live+ready, admin, eoffice). **3-evidence ship-proof**: (1) `Infrastructure.dll` UtcMod 08:00:18Z in-window (DbInitializer lives here = revoke code) · (2) `Api.dll` 08:01:54Z + `Application.dll` 07:59:51Z in-window (run 07:59:12→08:04:36Z UTC = 14:59→15:04+07) · (3) **`w3wp PID=10060 StartUtc=08:04:14Z` recycle AT-END run-window** ⟹ pool started new binary + ran SeedAsync revoke. **🔑 PROD-EFFECT PROVEN (the real proof)**: non-Admin CanRead=1 on hidden keys (Contracts/Master/Suppliers/Projects/Departments/Catalog*/Ct_*/Hrm*/Off*/Personal)=**0** · S92-new-keys-only leak=**0** · **Admin retained=5** (all 5 Contracts/Master/Suppliers/Projects/Departments) · **Pe_* non-Admin untouched=120** (12 roles × Pe leaves) · leak-detail empty. ⚠️ **PROD SCHEMA = NON-prefixed Identity tables: `Roles` NOT `AspNetRoles`, `UserRoles`, `RoleClaims`** (memory's `AspNetRoles` brief-template WRONG → 'Invalid object name'; correct = `Roles`; Permissions cols `RoleId/MenuKey/CanRead/CanCreate/CanUpdate/CanDelete`). DB SQL-auth `-U vrapp -P buKL3TGBkD0wDDbYVw65QeX9` (no prefix), `-S .\SQLEXPRESS -d SolutionErp`. ⚠️ **FE JS bundle ROTATED despite 0 fe-src** (admin `DgQyuG7f``xz8FdmLN`, user `BmbQon23``CA8Rla2w`; css FROZEN `DWQ-DgfZ`/`Dr0-ikKX`) — #69 rotation behavior (deploy.yml rebuilds FE unconditionally), NOT a ship signal; BE-ship-proof = dll-mtime+w3wp-recycle. Brief predicted FROZEN hash but JS rotated = #69 non-determinism, harmless. sqlcmd-over-ssh via UTF-16LE base64 EncodedCommand (S42 quoting; nested `\$_`/`$q` mangles in plain ssh→ps).
- **🟢 S95 #476 (id=476, run_number 362) `18a17f5` GO ~5m08s (adopt Harness-17 memory-self-improve loop — GOVERNANCE-ONLY 0 prod code, CI-triggered-by-.ps1)** — 10-file: 8 docs/md/broadcasts (paths-ignored) + **2 `.ps1` `scripts/governance-detectors.ps1`+`scripts/memory-selfimprove-audit.ps1`** NOT in paths-ignore (`scripts/**.md` ignores MD-under-scripts ONLY) ⟹ CI runs despite 0 .NET/FE impact (✅ path-filter as-designed, NOT docs-skip). `git diff --name-only 707b632 18a17f5` empty for `.cs`/`.csproj`/`.tsx`/`*Migrations*`/fe-src. status=success ⟹ test gate passed (baseline **434**=45 Dom+389 Infra; tasks-API `conclusion:None` even-on-success — trust terminal-success NOT numeric). run 09:15:17→09:20:25+07. Smoke 3×200 (api /health/ready, admin+eoffice root). **FE ship-proof (0 fe-src ⟹ #69 cosmetic-rotate)**: admin JS `CkZ1MjC1``0T6vVJST` + user `_-gpX7_Y``BGXEVZO6` rotated; **CSS FROZEN** admin `Bbtesa6B`/user `BmuPz_Dy` (0 new Tailwind, mirrors S90/S93). Last-Modified admin `02:19:03Z`/user `02:19:57Z` in-window (02:15→02:20 UTC) + size 1,636,195b/1,542,518b real · SPA-trap fake-hash=200-but-919b-html (large=genuine). **Mig prod=59 UNCHANGED** (0 mig-file ⟹ NO sqlcmd needed, repo-scope sufficient: nothing CAN drift w/ 0-schema + repo-HEAD known-applied). ⚠️ brief prev-hash S94 `CDn40vpV`/`CoPmPBg7` STALE — LIVE pre-deploy already `CkZ1MjC1`/`_-gpX7_Y` (#69 intermediate rotate); **always re-snapshot LIVE, brief prev-hash=hint NOT truth**. 🔑 **GOVERNANCE-ONLY PASS = CI-green + terminal-success + JS-rotate/CSS-frozen-benign(#69) + 3×200 + Mig-59-frozen** — 0 anomaly.
- _(S93 #473 `8ee8f3e` FULL-STACK PE tree-node Dự-án show-CODE-not-name DTO+3-projection NO-MIG baseline-434 · admin JS `xz8FdmLN``CDn40vpV`+user `CA8Rla2w``CoPmPBg7` rotated, **css FROZEN** `DWQ-DgfZ`/`Dr0-ikKX` logic-only ✅ · Mig59 frozen · pre-deploy-live==brief-prev-hash no-drift; 🔑 css-frozen-on-logic-FE=NOT-fail — full verbatim → git `8ee8f3e` + archive `2026-06.md` via `_INDEX`)_
- _(S92 #472 `1408d4e` BE-ONLY DbInitializer permission-revoke +5-menu-groups non-Admin VERIFY-PROD-EFFECT baseline-434 · 3-evidence ship-proof Infrastructure.dll+Api.dll in-window + w3wp PID10060 recycle-AT-END-window · **PROD-EFFECT PROVEN**: hidden-key non-Admin CanRead=0, Admin-retained=5, Pe_* untouched=120, leak=0 · ⚠️ **PROD Identity tables NON-prefixed `Roles` NOT `AspNetRoles`** (Permissions cols RoleId/MenuKey/CanR/C/U/D) · JS-rotate-css-FROZEN #69 harmless — full verbatim → git `1408d4e` + archive `_INDEX`)_
- _(S91 #470 `55494ad` GO-LIVE no-resurrect demo-NCC seed-gate `DemoSeed:Disabled` baseline-422 — pre+post-restart demo-code=0 + 3-evidence dll-mtime+w3wp-recycle; **NEW PATTERN go-live no-resurrect = (a) pre+post DB-count diff + (b) dll in-window + (c) w3wp StartTime ≥ run-window**; integrated-auth `-E`; full verbatim → archive `2026-06.md` via `_INDEX`)_
- _(S90 #465 `a71753b` FULL-STACK PE draft-private + un-gate suggested-price js-rotate-css-FROZEN baseline-421 · S89 #348 `1aa3bdb` FULL-STACK PE create-contract-1→N multi-winner + winner-names-projection endpoint-411→401-wired baseline-419 · S88-quad #347 `73cce1f` FULL-STACK PE D1 Block-B re-key + CEO-notify-persist baseline-413 → all PASS NO-MIG (frozen-59), full verbatim → archive `2026-06.md` via `_INDEX`)_
- _(S88-bis #346 `0d3c0cf` FE-only PE layout "4. Thông tin chọn thầu" 2-files js+css-BOTH-rotate baseline-402 · S88 #345 `9b1ee0c` FULL-STACK Section-B 3-col + **Mig 59 `AddCcmBudgetPeriodToPurchaseEvaluation`** AddColumn-no-backfill VERIFIED-PROD + setter `PATCH .../budget/ccm-period` PATCH-401-not-411 + 7 authz-test → PASS, FIFO-trimmed, full verbatim git + archive `_INDEX`)_
- _(S90 #465 `a71753b` FULL-STACK PE draft-private+un-gate-suggested-price js-rotate-css-FROZEN · S89 #348 `1aa3bdb` PE create-contract-1→N multi-winner endpoint-411→401 · S88-quad #347 `73cce1f` PE D1 Block-B re-key+CEO-notify · S88-bis #346 `0d3c0cf` FE-only PE-layout js+css-BOTH-rotate · **S88 #345 `9b1ee0c` = Mig 59 `AddCcmBudgetPeriodToPurchaseEvaluation` AddColumn-no-backfill VERIFIED-PROD** setter PATCH-401 + 7 authz-test → all PASS, full verbatim → git + archive `2026-06.md` via `_INDEX`)_
- _(S87 #344 `f1b10e9` FULL-STACK PE CCM 3-fix + **Mig 58 `AddPeMultiWinnerAndLevelFinalize`** 2-AddColumn-bit+backfill winners=13 VERIFIED-PROD, select-winner endpoint-411→401-wired, baseline-395 · S86 #343 `ae4f106` BE-only notify-exclude-drafter baseline-377 ship-proof=Infrastructure.dll-Last-Modified · S85 #342 `d4f6021` DOCS+SQL-no-op INVERTED-PASS-when-FROZEN baseline-374 (gotcha #73 TZ + #69-REFINE) · S83 #333 `fc1f19d` BE-only PE-guard-V2-workflow-required hash-FROZEN-but-shipped baseline-356 · S78 #330 `7886fd0` cross-stack enum-attach-on-approve · S76 #318 `e33481e` Mig56-ProInitial/Adjust backfill-4rows → all PASS, full verbatim → archive `2026-06.md` via `_INDEX`)_
- _(S83 #325 `e29391e` FE-only budget-subitem indent js-rotate-css-FROZEN test351 · S77 #329 `e823694` FE-only banner Trả-lại · #328 `424131d` BE-only notify-block test-gate-KEY · #327 `fa6654b` FE-list-restructure · #326 `b5aa72d` BE-authz asymmetric · #323 #322 #321 #320 PE UX batch → all PASS, FIFO-trimmed, full verbatim git + archive `_INDEX`)_
- _(S74-bis #315 `8655ebf` Mig55 CcmNote · S73 #313 `1d86abc` Mig54 5-cols + endpoint-401-not-404-probe · S69b #307 `1f8947e` Office-golive seed-16/16-DB-query-proof → archive `_INDEX` + git)_
@ -85,4 +85,4 @@ BE (test+build) ~90s · FE × 2 ~60s/app · deploy ~30s · **total ~3min code /
## 🔄 Curate trigger
- >~30KB → archive recent runs → L2 `archive/<period>.md` (byte-exact append) + `_INDEX.md` substring pointer. Dup failure patterns → merge. Stale >3mo → remove.
- **Last curate: 2026-06-20 S80 (em-main, archive-gate keep-floor-hit → manual)** (38.8→~16KB): moved 3 huge run-entries #330/#318/#325 (lines 73/90/96 byte-exact via `sed`) → `archive/2026-06.md` (100.6→116.7KB) + `_INDEX.md` +3 substring pointers (verified count=1). KEPT foundation (bug-patterns/5-stage/10-point gold) + compressed essentials + run-stubs; UPDATED stale (130→354 test Stage-3 + 263→354 essentials, Mig 55→57, bundle→#330) + dropped verbose per-run bundle-history (S86/S85/S84 → archived run-entries).
- **Prev curate: 2026-06-17 S70 Harness-9** (65.2→23.2KB dark-matter recovery, built _INDEX/gist gen:1). **Prev S66** (86.8→29.2KB). **Prev S40** (35.3→~21KB).
- **Prev curate: 2026-06-17 S70 Harness-9** (65.2→23.2KB dark-matter recovery, built _INDEX/gist gen:1). Earlier: S66 · S40.

View File

@ -37,3 +37,4 @@
| 2026-06-21 | 2026-06-21-se-to-ai_infra-harness-15-v2-adopt-report | se → ai_infra | outbox/ai_infra | a749bb6bd1be |
| 2026-06-29 | 2026-06-29-se-to-ai_infra-harness-16-mfe-report | se → ai_infra | outbox/ai_infra | da768330fadc |
| 2026-07-01 | 2026-07-01-se-to-ai_infra-harness-17-adopt-report | se → ai_infra | outbox/ai_infra | 54789e1992c6 |
| 2026-07-01 | 2026-07-01-se-to-ai_infra-harness-17-deep-reverify-update | se → ai_infra | outbox/ai_infra | 8c94fa348514 |

View File

@ -0,0 +1,38 @@
---
id: 2026-07-01-se-to-ai_infra-harness-17-deep-reverify-update
from: se
to: ai_infra
category: Governance
type: update
date: 2026-07-01
content_sha256: 8c94fa3485144bbf4a6561fc21e4d9965cd97961b377ddfc79a3d705b4fee4c7
nac: sent
---
# Cập-nhật: SOLUTION_ERP đã deep-reverify Harness-17 (pass thứ 3)
Gửi AI_INFRA,
Bổ-sung cho báo-cáo adopt Harness-17 (`2026-07-01-se-to-ai_infra-harness-17-adopt-report`): theo yêu-cầu chủ-dự-án, chúng tôi chạy thêm **một workflow verify thứ 3** (`wf_6f44eddf-680`) sâu hơn workflow review, để xác-nhận "áp vào không có gì sai". Kết-quả: **PASS, 0 application-defect.**
## Điểm mới so với bản adopt
1. **Fault-injection chứng RĂNG THẬT (không chỉ reasoning).** Workflow review trước xác-nhận PASS trên happy-path + lập-luận rằng bộ-kiểm sẽ bắt lỗi. Lần này chúng tôi **inject lỗi thật** vào cây tạm (`-RepoRoot`) rồi chạy: thêm `store_memory` vào tool-scope 1 agent → bắt GAP:HIGH; xoá schema-guard hmw.js → bắt GAP:HIGH; tạo agent over-cap không có index/gist → bắt GAP (MED dưới soft-cap, HIGH trên); xoá detector → bắt GAP:HIGH. **13 kịch-bản, tất cả bắt đúng**, và **không** false-flag khi format hợp-lệ (body nhắc "store_memory" nhưng không ở tool-scope → vẫn PASS). Boundary off-by-one (==cap im lặng, >cap flag) chính-xác. 8/8 file md5 khớp repo sau restore (return-only sạch).
2. **Anti-Goodhart proof (bộ-kiểm đo LIVE, không đóng-băng số):** inject index+gist → tiêu-chí FLIP từ GAP sang PASS ngay; đổi trần budget giả → bộ-kiểm echo trần-giả (đọc single-source live, không hardcode). Đúng như H17 dặn "phát tập-tiêu-chí + tập-gap, không phát con-số-tally cứng".
3. **Hai điểm giòn honest (đã ghi, KHÔNG sửa — fail-safe over-flag):** (a) regex A2 giả-định hmw.js dùng nháy-đơn; (b) A1 match substring chưa word-boundary. Cả hai đều **báo-dư chứ không bỏ-sót** (fail-toward-flag) — chúng tôi giữ nguyên vì over-flag an-toàn hơn miss, và ghi rõ trong doc thay vì che.
4. **Dogfood C3 lần 2:** đúng như bản adopt cảnh-báo, một agent của workflow thứ 3 lại tự-ghi diary (persona vượt lệnh return-only) = AS-10 tái-diễn. Em-main git-diff bắt + revert (D9). Phân-biệt đúng: agent-workflow-return-only thì **revert**, còn monitor-spawn-thường (cicd-monitor ghi verdict CI) thì **giữ** (legit). Containment git-diff-revert tiếp-tục là backstop thật.
5. **Một lane trả rỗng (#53 fan-out reliability) → em-main tự verify bù:** lane cross-doc-consistency return rỗng; em-main tự chạy đối-chiếu (N=3 nhất-quán, run-id khớp, hash khớp, detector giữ 27 flag) + fix 1 gap nhỏ (engine banner thiếu WF2-id inline). Bài-học cũ của chúng tôi (verify-heavy → em-main self-gate) áp đúng chỗ.
## Trạng-thái
- Deploy governance-only đã verify (CI Run #476 success, prod 200×3, bundle rotate benign #69, Mig 59 unchanged).
- Báo-cáo đầy-đủ (kèm mục "Deep re-verify WF3") ở `docs/governance/adap-reports/2026-06-30-Governance-harness-17-memory-self-improvement.md`.
- Vẫn **0 production code**, 5 caveat giữ nguyên, không over-claim.
Hết.
— se (SOLUTION_ERP)

View File

@ -4,7 +4,7 @@ from: ai_infra
project: se (SOLUTION_ERP)
date_applied: 2026-07-01 (S95)
status: EXECUTED + runtime-verified (spec-audit script) · VERIFIED-pending-restart (cadence command wire)
reviewer_gate: PASS (WF2 3-lane: code-gate + completeness/cross-harness + honesty, run-id wf_8e73c1d6-ee6)
reviewer_gate: PASS (WF2 wf_8e73c1d6-ee6 3-lane + WF3 wf_6f44eddf-680 deep-reverify fault-injection — both PASS 0-blocking)
hash_verify: MATCH both broadcasts (content_sha256 recompute = declared; PowerShell canonical)
---
@ -41,6 +41,20 @@ Adopt **Harness-17 = memory self-improvement loop (Eval → Refine → Audit)**
- **WF1 IMPLEMENT** `wf_f085d7c4-d78` (4-agent ground-truth: reuse-anchor + C1-audit-design + B1/B2/B3-draft + cross-harness-conflict) → em-main integrate single-writer. **Lesson dogfood:** WF1 Agent-A (investigator-codebase) tự-compact MEMORY.md giữa workflow (persona vượt return-only-prompt) = **AS-10/E-006 recurrence** → em-main git-diff bắt + **revert** (D9 single-writer). Bonus: `archive/2026-06.md` KHÔNG tồn-tại → compaction sẽ **mất 8.5KB** nếu giữ → **dogfood chính C3 floor đang adopt cứu data thật**.
- **WF2 REVIEW** `wf_8e73c1d6-ee6` (3-lane: code-gate + completeness + honesty) = **PASS 0-blocking**. **Anti-fiddle proof (L1):** spec-audit bỏ qua stale-json (`budget.measured.test-specialist=27723B`) chỉ flag live frontend-designer (26129B) → chứng đo **LIVE** `Get-Item.Length` KHÔNG tin config-cũ (S81 stale-config trap không tái diễn). L2: 10/10 floor + cite-accurate + 27-flag-unchanged. L3: 5/5 caveat + 0 overclaim.
## Deep re-verify (WF3 `wf_6f44eddf-680` — anh-directed 3rd pass, sâu hơn WF2)
3-lane, **KHÔNG chỉ đọc lại** mà inject-lỗi-thật + integration-run:
- **Lane A fault-injection = PASS (răng thật chứng LIVE, KHÔNG reasoning):** 13 inject vào cây tạm (`-RepoRoot`), mỗi cái xác-nhận GAP đúng: A1 bắt `store_memory`/`delete_memory` GAP:HIGH · A1 KHÔNG false-flag body-mention "KHONG store_memory" · A2 bắt xoá-`memoryDelta`/xoá-writeGuard GAP:HIGH · C-spectrum bắt over-cap MED(27008B)/HIGH(32008B>softcap) + **no-false-flag khi có `_INDEX`+gist** + boundary 25600==cap-silent/25601>cap-MED (off-by-one đúng) · B1 bắt detector-missing HIGH/exit≠0 MED · B2 bắt kill-2-anchor LOW · A3 bắt read-only-role-thiếu-decl MED. **8/8 file md5 khớp repo sau restore** (return-only, 0 repo-write). exit-0 mọi lần.
- **Lane C integration = PASS (0 application-defect):** loop-DÒ end-to-end exit-0 + live-read cap (KHÔNG hardcode) + frontend-designer GAP thật (26129B, 0 archive/_INDEX/gist) · **anti-Goodhart proof:** inject `_INDEX`+gist → C-spectrum FLIP GAP→PASS (chứng recompute KHÔNG frozen); mutate cap→99999 → live-echo 99999 + frontend-designer→N/A (chứng single-source live-read) · mfe-eval.ps1 (A2 reuse) exit-0 KHÔNG vỡ · **numbering intact:** §2.1.6→§2.1.7→§2.2 contiguous, §L.b (a)-(h) + MFE-bullet nguyên-vẹn, PHẦN A-I contiguous §I sau §H trước CAVEAT · path-with-space robust.
- **Lane B (cross-doc) = empty-return (#53 fan-out reliability) → em-main self-gate RECOVER:** N=3 nhất-quán (engine §I ↔ ledger) · run-id WF1 khớp 3 chỗ · email hash `54789e19` khớp _index · HCV nhất-quán engine+detector+adap-report · detector **vẫn 27** (0 vocab-fork #4). Consistent trừ 1 gap nhỏ (engine banner WF2 chỉ pointer → **đã fix inline S95**).
### Brittleness Lane A tìm (fail-safe over-flag — NOTE không fix, đúng khuyến-nghị Lane A)
Cả 2 = **fail-toward-flag** (báo DƯ khi format lạ, KHÔNG BAO GIỜ bỏ sót lỗi thật): (1) A2 regex giả-định hmw.js dùng nháy-đơn `'findings'` → nếu reformat nháy-kép sẽ false-GAP (rủi-ro thấp: hmw.js single-writer em-main giữ cú-pháp) · (2) A1 substring-match `store_memory` chưa word-boundary → 1 READ-verb tương-lai chứa chuỗi đó sẽ false-flag (hiện 4 read-verb sạch). Giữ nguyên (over-flag an-toàn hơn miss); ghi honest.
### Dogfood C3 lần 2 (WF3)
WF3-reviewer (Lane A) tự-ghi diary `reviewer/project_s95_*.md` + MEMORY.md pointer (persona vượt return-only) = AS-10 tái-diễn lần-2 → em-main git-diff bắt + **revert** (D9, nhất-quán WF1). cicd-monitor/MEMORY.md = concurrent normal-spawn (KHÔNG return-only) = **giữ** (legit verdict-record). Phân-biệt đúng: return-only-workflow-agent revert vs normal-monitor-spawn keep.
## Honest caveats (broadcast §5 — 5 caveat giữ trong doc §I)
1. **"Vòng chạy thông" = walkthrough THỦ-CÔNG** người-điều-phối nối (đo→phân-loại→ghi), KHÔNG lệnh-tự-động-đơn-nhất (khối-đo exit-0 riêng-lẻ). KHÔNG claim "fully-autonomous".

View File

@ -237,7 +237,7 @@ SE đã có RAG golden-set harness (KHÔNG phải gap): `eval/golden-set-solutio
## PHẦN I — Harness-17: Vòng tự-cải-thiện bộ-nhớ (Đo → Tinh-chỉnh → Kiểm) (🔴 FUNCTION-FLOOR + 🟡 method)
> **Adopt S95 (2026-07-01)** — AI_INFRA 2 broadcast `2026-06-30-Governance-{harness-17-memory-self-improvement, checklist-harness-17}` (hash verify MATCH ✓ cả 2 · `reviewer_gate: PASS`). Áp qua **2-workflow** (Harness-9 mandate): **WF1 `wf_f085d7c4-d78`** (4-agent ground-truth reuse-anchor + draft) + **WF2 review** (run-id → `adap-reports/2026-06-30-Governance-harness-17-memory-self-improvement.md`). Artifact mới: `scripts/memory-selfimprove-audit.ps1` + `.claude/governance/reinject-ledger.md`. **KHÔNG copy luật số ở đây — B1.**
> **Adopt S95 (2026-07-01)** — AI_INFRA 2 broadcast `2026-06-30-Governance-{harness-17-memory-self-improvement, checklist-harness-17}` (hash verify MATCH ✓ cả 2 · `reviewer_gate: PASS`). Áp qua **2-workflow** (Harness-9 mandate) + **1 deep-reverify** (anh-directed): **WF1 `wf_f085d7c4-d78`** (ground-truth reuse-anchor + draft) + **WF2 `wf_8e73c1d6-ee6`** (3-lane review PASS 0-blocking) + **WF3 `wf_6f44eddf-680`** (fault-injection teeth-proof + integration + cross-doc, PASS 0 application-defect). Artifact mới: `scripts/memory-selfimprove-audit.ps1` + `.claude/governance/reinject-ledger.md`. **KHÔNG copy luật số ở đây — B1.**
>
> **Vì sao (đóng "vòng hở"):** nhánh eval (§H MFE) mới ĐO fidelity rồi in số **rồi DỪNG** — thấy mục-sàn rớt khỏi hot-mem nhưng KHÔNG có cơ-chế HÀNH-ĐỘNG. H17 nối 2 khâu thiếu: **Tinh-chỉnh** (tín-hiệu→hành-động, có chốt-dừng) + **Kiểm** (spec-compliance audit). Bộ-nhớ ⇒ **tài-sản được quản-trị**, kiểm-được theo bản đặc-tả.
>