From 88bd8e666ddbb179bb30eb3de987df4d716e69cb Mon Sep 17 00:00:00 2001 From: pqhuy1987 Date: Mon, 13 Jul 2026 13:01:14 +0700 Subject: [PATCH] [CLAUDE] Docs: S115 presence-not-age adopt closeout (STATUS/HANDOFF/session-log/synthesis/WAL) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Session-end closeout for S115 (AI_INFRA presence-not-age selector guardrail + rec-3 hmw.js STOP-HARD, shipped 81b59f0, CI #385 PASS). STATUS + HANDOFF mega-line blurb, session-log, ensemble-synthesis (closes H10/HCV gate), WAL reset to clean template. No canonical-count change (Mig 65 / 89 tables / 486 tests / gotcha 81). Owner backfill target 210K + reviewer/cicd harvest already in 81b59f0. §5.0 squashed the trailing wal: flush. Co-Authored-By: Claude Opus 4.8 --- .claude/WAL.md | 2 +- .claude/agent-memory/cicd-monitor/MEMORY.md | 25 ++++++------ .../cicd-monitor/archive/2026-07.md | 7 ++++ .../cicd-monitor/archive/_INDEX.md | 4 ++ .../ensemble-synthesis.md | 25 ++++++++++++ docs/HANDOFF.md | 2 +- docs/STATUS.md | 2 +- .../2026-07-13-S115-presence-not-age-adopt.md | 38 +++++++++++++++++++ 8 files changed, 89 insertions(+), 16 deletions(-) create mode 100644 .claude/workflows/runs/2026-07-13-presence-not-age-adopt/ensemble-synthesis.md create mode 100644 docs/changelog/sessions/2026-07-13-S115-presence-not-age-adopt.md diff --git a/.claude/WAL.md b/.claude/WAL.md index 5bd0d97..d9d8f95 100644 --- a/.claude/WAL.md +++ b/.claude/WAL.md @@ -1,6 +1,6 @@ # WAL — auto-generated, không sửa tay updated: — | session: — | branch: — -goal: (trống — không có mạch dở; S114 PE multi-NCC per hạng mục SHIP PROD d436af2 + closeout 16a199f done) +goal: (trống — không có mạch dở; S115 presence-not-age adopt SHIP 81b59f0 + CI #385 PASS + closeout done) chain: (rỗng) diff --git a/.claude/agent-memory/cicd-monitor/MEMORY.md b/.claude/agent-memory/cicd-monitor/MEMORY.md index 1447672..00432a9 100644 --- a/.claude/agent-memory/cicd-monitor/MEMORY.md +++ b/.claude/agent-memory/cicd-monitor/MEMORY.md @@ -12,9 +12,9 @@ Read-only CI/CD + post-deploy verifier SOLUTION_ERP. Polls Gitea Actions API, ve --- -## S114 (2026-07-12) deploy verify — em-main-solo (cicd garble #53) +## ⚠️ cicd-lane return-garble tracker (#53) -[on-behalf: cicd-lane garble return #53 → em-main-solo curl-verify] Commit `d436af2` PE multi-NCC per hạng mục. **PASS:** bundle rotate ×2 admin `acprMqfB`→`D51OYyGV` / user `Ck3BTDdA`→`BVdssm5S` · byte-verify `detailId`+`select-winner`+`hạng mục` PRESENT (1.65MB real-size) · smoke health/admin/eoffice 3/3 200 · POST /select-winner bogus 401-live · Mig 65 applied (API-healthy=migrations-ran-startup). cicd-lane garble = trả memory-curation "Compressing S112/S111" thay verdict (×5/6-tổng tái phạm dai — [[feedback_agent_return_garble_recover]] root-cause curate-at-return) → em-solo recover. [engine: cicd-spawn garble→em-solo · Opus-S114] +cicd-spawn đôi khi trả memory-curation slice ("Compressing S112/S111") thay verdict (×5/6 qua S114; cumulative ×18 all-agents → [[feedback_agent_return_garble_recover]], root-cause = curate-at-return). Recover: em-main-solo curl-verify. **S115 (#385) cicd-lane CLEAN-return no-garble — verdict delivered OK.** --- @@ -26,9 +26,9 @@ Read-only CI/CD + post-deploy verifier SOLUTION_ERP. Polls Gitea Actions API, ve - **#25 IIS WebSocket** — `notification-hub/negotiate` 401/404 prod. Fix: WebSocket module enable `web.config` site api (skill `iis-deploy-runbook`). - **#48 SQLite tie-break** — `OrderByDescending(CreatedAt).First()` pick wrong khi 2+ `.Add()` cùng frozen-clock. Fix: discriminator filter BEFORE OrderBy. - **Bundle hash unchanged = ship FAIL** — push+action success nhưng prod không đổi. Verify via INDEX.HTML ref (`curl -s https://admin.solutions.com.vn/ | grep -oE '/assets/index-[A-Za-z0-9_-]+\.(js|css)'`), NOT by GETting a hash-named asset directly. ⚠️ verify MUST sau status=success (Run #242 false-positive: check khi "running" → stale hash). - - **🔴 #69 (S72 Run #312) — FE bundle hash NON-DETERMINISTIC per rebuild.** `deploy.yml` `Remove-Item fe-*\* -Exclude web.config` + `Copy-Item dist\*` runs UNCONDITIONALLY every run (path-filter gates whole-workflow trigger, NOT per-step). Identical FE source ⟹ DIFFERENT hash each deploy (Vite/rolldown non-reproducible chunk-id). PROVEN: governance-only `18fced6` (0 files in fe-*/src) rotated BOTH bundles. ⟹ "BE-only/governance ⟹ bundle frozen" is FALSE; rotation EXPECTED every deploy. **To detect REAL FE change, diff `fe-*/src` in commit/range, NOT hash delta.** + - **🔴 #69 (S72 #312) — FE bundle hash NON-DETERMINISTIC per rebuild.** `deploy.yml` `Remove-Item fe-*\* -Exclude web.config`+`Copy-Item dist\*` runs UNCONDITIONALLY every run (path-filter gates whole-workflow, NOT per-step). ⟹ "BE/governance ⟹ frozen" can be FALSE; rotation possible every deploy. **To detect REAL FE change, diff `fe-*/src` in commit/range, NOT hash-delta.** - **⚠️ SPA-fallback 200 trap (S72):** server rewrites `/*`→`/index.html` so GET `/assets/index-.js` returns **200** even for fake hash (control `ZZdoesnotexist0.js`→200, size~919b text/html). Old-hash-still-200 MEANINGLESS. RELIABLE signal = parse index.html `