Compare commits
3 Commits
0d912ad184
...
8fa2fcccb2
| Author | SHA1 | Date | |
|---|---|---|---|
| 8fa2fcccb2 | |||
| f8376cfcf4 | |||
| 58b20ea441 |
@ -1,27 +1,9 @@
|
||||
# WAL — auto-generated, không sửa tay
|
||||
updated: 2026-07-12 | session: S112 | branch: main
|
||||
goal: 2 mạch song song — (A) Supplier Excel-import BUILD→close→deploy · (B) PE sign-off change review→implement→DEPLOY (anh-directed "deploy luôn")
|
||||
goal: (trống — không có mạch dở; S112 deploy 2 feature hoàn tất + committed + prod-verified Run #496)
|
||||
|
||||
chain A (Supplier import):
|
||||
[x] BE DONE build EXIT-0 ✅ + case-fix (OrdinalIgnoreCase) verified
|
||||
[x] test-specialist DONE (aac55f3d): SupplierExcelImportServiceTests 10 test → dotnet test 450 PASS (440→450), 0 prod-bug; case-collation test có RĂNG (SQLite BINARY → dedup ở service không dựa DB)
|
||||
[x] FE DONE (a513): SupplierImportDialog 2-app byte-identical + SuppliersPage nút Import; npm build ×2 PASS
|
||||
[x] close-review wf_75d6149b-9f7 GO-WITH-ADJUSTMENTS (2/2): 6-axis BE PASS + FE wiring+enum-int+mirror PASS + Mig63-prod-safe + 4NCC-reimport-fill-nulls-safe
|
||||
[x] APPLY adjust: bake 30 header token ✓ + .Normalize(FormC) ✓. FE guard = DEFER minor (BE-safe 403, follow-up)
|
||||
[x] dotnet test PASS 458 (45D+413I) — PE+Supplier all-green, Case-9 confirms bake đúng
|
||||
[x] reviewer pre-commit GO (0 must-fix, implement khớp design; nits: 2 stale-comment + FE-guard-defer). #53-garble mid-check → em byte-verify token-match + SendMessage-resume → verdict clean
|
||||
[x] commit a829d0d(PE) + e100ef0(Supplier) + PUSH main ✓ (e9afe77..e100ef0) → Gitea Actions DEPLOY triggered
|
||||
[!] cicd-monitor (BG) verify: test-gate 458 + FE bundle-hash ×2-app + Mig 63 prod + smoke 200
|
||||
[ ] cicd PASS → closeout (governance commit CI-skip + harvest). 🔴 UAT heads-up anh Kiệt: A1 bỏ auto-terminal-on-submit (phiếu 1-bước creator-là-cấp-cuối nay cần bấm Duyệt). Defer: FE-guard + 2 stale-comment + test-NormalizeJoin-FormC
|
||||
chain:
|
||||
(rỗng)
|
||||
|
||||
chain B (PE sign-off change):
|
||||
[x] investigate wf_fd8f2bfe-9f6 + anh Kiệt chốt 6 decision: (1)A1-bypass-subordinate-only+creator-ký-tay (2)no-hard-guard-single-person (3)EDGE-5-hard-lock-DaDuyet (4)1-nút (5)opinion-history (6)phiếu-mới-only
|
||||
[x] close-review wf_7df56b89-7bb GO-WITH-ADJUSTMENTS (2/3 lane, L3 garble): A1 Min-rule OK · EDGE-5 guard đỉnh-method SVC:53 (L2 refine, chặn admin-override :290) · history=Changelog-MVP · 🔴 A1 MỞ CEO-skip MỚI (finalize-flag) L2-catch
|
||||
[x] anh Kiệt chốt 3 oQ: (oQ1)finalize-theo-quyền → KHÔNG guard, tôn-trọng AllowApproverFinalize · (oQ2)"Admin đầy-đủ-nhất" → EDGE-5 guard chỉ chặn NON-ADMIN (admin+system EXEMPT, giữ override+edit+un-terminal), oQ3 resolved
|
||||
[x] BE implement DONE (ab2db8c6): A1(minOwn+pointer-stop) + EDGE-5(guard-top TransitionAsync :57-71 !isAdmin&&!isSystem) + history(Changelog log trước overwrite) + no-finalize-guard. dotnet build 0-err. 401 pass/4-fail (4 = EXPECTED old-bypass-test cần →A1; CHANGE2/4 break 0 test). FE ~0 (empty-box render handles A1)
|
||||
[!] test-specialist (BG) UPDATE 4 bypass-test→A1 + ADD coverage: A1-happy · non-contiguous · EDGE-5(non-admin-throw/admin-pass/system-pass) · history-Changelog(re-sign-nonempty→row, first/empty→none)
|
||||
[ ] reviewer pre-commit → commit+push → cicd DEPLOY PE prod (gates pass). Minor defer: suppress history-log cho placeholder "(duyệt — không ý kiến)"
|
||||
|
||||
next: chờ FE-Supplier(BG) + PE-close-review(BG wf) land → synthesize; PE: review GO → fan-out implement → deploy. Supplier: FE → close-review → deploy
|
||||
verify: Supplier build+450test PASS(DONE)+header-baked ; PE review GO-GATE + implement build+test PASS + cicd prod-verify TRƯỚC khi coi deploy xong
|
||||
side: harness_floor 30K→100K + measured 21K→55K (S112)
|
||||
next: (trống)
|
||||
verify: (trống)
|
||||
|
||||
@ -17,6 +17,13 @@ Read-only INTERNAL audit SOLUTION_ERP codebase. Tools: Read, Grep, Glob, Bash +
|
||||
|
||||
---
|
||||
|
||||
## 🆕 2026-07-12 (S112) — 2 fable-clone invest ensemble (Opus MAX, RETURN-only) `[engine: fable-clone-ensemble · Opus-S112]`
|
||||
Em-main harvest @closeout (H2 gate — lanes RETURN-only, content verbatim ở `runs/2026-07-12-S112-{supplier-excel-import,pe-signoff-save-advance}/sub-invest-*.md`).
|
||||
- **task:** (A) Supplier Excel-import mapping/approach/edge `wf_e2f23a84` · (B) PE sign-off save-advance current-flow/change-design/reject `wf_fd8f2bfe`; 3 lane/ensemble.
|
||||
- **verdict:** cả 2 PASS_WITH_CONCERNS. Supplier 27/27 field bijective (30 cột→27, 2 audit-col=owner-call). PE design = **sửa 1 CHỖ** gỡ/gate `ApplyDrafterBypassOnSubmitAsync`.
|
||||
- **learned:** dedup Code `Ordinal` vs DB unique-index **CI-collation** → normalize case TRƯỚC dedup+store (MAJOR, cả-3-lane-SÓT, reviewer bắt); PE "comment-own-box→save→advance" cơ-chế ĐÃ có sẵn, chặn = bypass-feature S60 cần đảo.
|
||||
- **surprise:** Supplier Approach-B (extend seed) ĐÃ SHIP prod (Mig 62, 4 NCC live — invest bắt spec-"partial" SAI); PE EDGE-5 latent→**REACHABLE** (drafter forge Reject phiếu DaDuyet của mình). ⚠️ sub-file naming swapped (harvest reads content). Tag `[s112, fable-clone-ensemble, supplier-mapping, pe-bypass-a1, edge5-reachable]`.
|
||||
|
||||
## 📋 Patterns proven (apply confidently)
|
||||
|
||||
### Schema scan via sqlcmd
|
||||
|
||||
@ -89,7 +89,7 @@
|
||||
"measured_token_estimate": 55000,
|
||||
"_s112_remeasure_note": "S112 (2026-07-12) RE-MEASURE — supersedes the S81 ~21K figure, which was a UNDER-COUNT (owner flagged 'why is SE so little vs sisters 60K+'). Byte-measured session-start DISK-inject floor = 57,595B (root CLAUDE.md 13,638 + docs/CLAUDE.md 10,222 + commands/session-start.md 23,669 + user-memory MEMORY.md 10,066) = ~14.4-19.2K tok ALONE. PLUS harness-INJECTED tool-schema + framing + MCP-instructions + deferred-tools + skills-catalog (~50 tool defs + 4 MCP blocks + ~90 deferred + ~60 skills), NOT byte-countable locally, ~30-50K tok. => FULL session-start floor ~45-70K tok, matching the fleet's measured ~60-71K (sister harness_floor_est @S103=71,364). The old 21K was the anomaly: S81 GUESSED the harness block at only ~5K(tool)+2K(framing) AND counted a small 'lead-pasted slice ~5-9K' instead of the full dual-CLAUDE.md + 23.7KB session-start body + user-memory inject. 55000 = honest mid estimate (~19K byte-measured + ~36K harness-injected-est). measured_token_estimate stays an ESTIMATE (harness block not locally byte-countable), not a false-precise number.",
|
||||
"rounded_up_tokens": 100000,
|
||||
"_owner_override_note": "S112 (2026-07-12) owner-directive: rounded_up_tokens raised 30000->100000 = OWNER-SET RESERVE (project-owner authority per token_governor.role_boundary_note + mark RC-pqhuy1987-21-06-2026-01-58-01), NOT a re-measurement -- measured_token_estimate stays 21000 (the honest S81 estimate). Rationale: reserve headroom for the grown fixed per-spawn overhead (roster 11->12 agents, +office-document, +2 monitor, more MCP tool-schemas, richer lead-pasted slices at the 380K read-set). CAVEAT (honest): harness_floor is an ACCOUNTING/AWARENESS figure (separate house, A3 anti-double-count) documented here; 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. Re-measure available on request to check the true current floor.",
|
||||
"_owner_override_note": "S112 (2026-07-12) owner-directive: rounded_up_tokens raised 30000->100000 = OWNER-SET RESERVE (project-owner authority per token_governor.role_boundary_note + mark RC-pqhuy1987-21-06-2026-01-58-01), NOT a re-measurement (100K != a measured floor). NOTE: measured_token_estimate was subsequently re-measured 21000->55000 THIS SAME SESSION (S112, see _s112_remeasure_note) after the owner asked why SE's floor read so low vs sisters -- this override_note predates that re-measure; the live field is 55000. Rationale: reserve headroom for the grown fixed per-spawn overhead (roster 11->12 agents, +office-document, +2 monitor, more MCP tool-schemas, richer lead-pasted slices at the 380K read-set). CAVEAT (honest): harness_floor is an ACCOUNTING/AWARENESS figure (separate house, A3 anti-double-count) documented here; 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. Re-measure available on request to check the true current floor.",
|
||||
"components_note": "persona(measured 1.3K-4.0K, DIRECTLY via Get-ChildItem byte-count of .claude/agents/*.md, NOT via measure-agent-memory.ps1 which only sizes agent-memory tiers) + tool-schema(est ~5K) + framing(est ~2K) + lead-pasted base-slice(est ~5-9K; em-main injects CLAUDE.md/README-slice + task ctx) + prompt(est ~1K). README decision-tree corpus = 32704B but em-main pastes a SLICE, not whole. The ~21K sum is SE's OWN reasoning over SE's OWN agents (persona byte-measured + each harness-injected sub-component estimated independently); it lands NEAR AI_INFRA's ~21K because the toolset family is identical (Read/Write/Edit/Bash/Grep/Glob/Skill/RAG), NOT because borrowed. SE's governing cap = 100K (owner-set reserve S112 2026-07-12; was 30K round-up), independent of AI_INFRA's figure."
|
||||
},
|
||||
"token_governor": {
|
||||
|
||||
@ -0,0 +1,14 @@
|
||||
# RUN — Supplier import close-review (đóng-spec + adjust + GO/NO-GO)
|
||||
|
||||
- **folder:** `2026-07-12-S112-supplier-import-close-review` · session S112 · lead Opus 4.8 MAX
|
||||
- **command:** `/fable-clone review đóng-spec` Supplier (anh-directed) → adjust → deploy
|
||||
- **mode:** HMW review-ensemble 2 reviewer lanes (BE+adjust / FE+e2e+deploy) · `wf_75d6149b-9f7`
|
||||
- **spec:** `spec-supplier-close-review-12-07-2026.md`
|
||||
|
||||
## synthesis — GO-WITH-ADJUSTMENTS (em-main; 2/2 lane clean)
|
||||
> ⚠️ sub-file naming swap: `review-L1-BE-adjust.md` chứa Lane L2 (FE/deploy) content · `review-L2-FE-deploy.md` chứa Lane L1 (BE) content (journal-order ≠ lane-order; harvest reads content).
|
||||
|
||||
- **L1 (BE):** 6/6 axes PASS (case-fix OrdinalIgnoreCase preview+confirm · fill-nulls-safe · all-or-nothing · parser abs-cell-index · Mig 63 reversible 3-file · wire). ADJUST: bake 30 real-token + `.Normalize(FormC)`.
|
||||
- **L2 (FE/deploy):** FE wiring + enum-int byte-exact + 2-app byte-identical mirror + Mig 63 prod-safe PASS · 4-NCC re-import fill-nulls no-dup. 🟠 catch: FE Import-button guard `Suppliers/Create` rộng hơn endpoint `Admin/CatalogManager` (BE-safe 403, UX-only).
|
||||
- **3 ADJUST:** (1) bake 30 real-token `RealFileHeaderTokens` (em-main byte-verify — byte-identical, all NFC) · (2) `.Normalize(FormC)` de-risk NFD file-thật · (3) FE-guard DEFER (non-blocking).
|
||||
- **OUTCOME EXECUTED:** adjust 1+2 applied, FE-guard deferred → **shipped Run #496 PASS** (bundle `Cixlt_MA`/`BhBOG1dn`, Mig 63 prod, 458 test, reviewer pre-commit GO). Harvest @closeout (H2 GATE S112).
|
||||
File diff suppressed because one or more lines are too long
@ -173,7 +173,7 @@ SE đã có RAG golden-set harness (KHÔNG phải gap): `eval/golden-set-solutio
|
||||
> 🔑 **Cốt-lõi:** ngân-sách bộ-nhớ = **mức TẬN-DỤNG-TỐI-THIỂU phải đạt, KHÔNG phải trần để dè-xẻn.** Tiết-kiệm-token = **quên-việc** (rơi trạng-thái giữa phiên) = KHÔNG tiết-kiệm thật (làm-lại tốn HƠN — cùng họ Goodhart §F.4/§6.6). Khoảng-trống quan-sát hay rơi đúng vào **chính LEAD** (lead tự-nạp kiến-trúc/luật nhưng bỏ quên trạng-thái-công-việc) → §G.2(c) vá đúng chỗ đó.
|
||||
|
||||
### G.1 — Mô-hình = SÀN cố-định + 3 tầng được-quản-lý (A1/A2/A3)
|
||||
- **SÀN-harness (A1, đo-được):** phần cố-định mỗi spawn = tool-schema + framing + persona/role + lead-pasted base-doc-slice + prompt. **SE TỰ đo (KHÔNG mượn số AI_INFRA):** persona đo-thật `.claude/agents/*.md` (4.3KB–13.3KB ≈ 1.3K–4.0K tok /3.3); tool-schema+framing harness-injected **SE ước-lượng-riêng** (trùng AI_INFRA ~21K vì **cùng-họ-toolset** Read/Write/Edit/Bash/Grep/Glob/Skill/RAG, **KHÔNG mượn-số**) → **floor ≈ 21K measured-estimate → owner-set reserve 100K (S112 2026-07-12, was round-up 30K; cap RIÊNG SE)** (`memory-budget.json:harness_floor`). Honest: persona = đo-thật-byte; phần harness-injected = ƯỚC-LƯỢNG (không byte-count cục-bộ được).
|
||||
- **SÀN-harness (A1, đo-được):** phần cố-định mỗi spawn = tool-schema + framing + persona/role + lead-pasted base-doc-slice + prompt. **SE TỰ đo (KHÔNG mượn số AI_INFRA):** persona đo-thật `.claude/agents/*.md` (4.3KB–13.3KB ≈ 1.3K–4.0K tok /3.3); tool-schema+framing harness-injected **SE ước-lượng-riêng** (trùng AI_INFRA ~21K vì **cùng-họ-toolset** Read/Write/Edit/Bash/Grep/Glob/Skill/RAG, **KHÔNG mượn-số**) → **floor ≈ 55K measured-estimate (S112 re-measure — 21K cũ under-count: đoán tool-schema+framing ~7K thực ~30-50K) → owner-set reserve 100K (was round-up 30K; cap RIÊNG SE)** (`memory-budget.json:harness_floor`). Honest: persona = đo-thật-byte; phần harness-injected = ƯỚC-LƯỢNG (không byte-count cục-bộ được).
|
||||
- **A3 tách-nhà chống-đếm-trùng:** persona + lead-docs thuộc **SÀN**, KHÔNG đếm vào L1-managed. L1-managed = own agent-memory + archive `_INDEX` + work-state block (`memory-budget.json:harness_floor._note`).
|
||||
- **3 tầng managed (A2 — cập-nhật v3 §G.5):** Tầng-1 = **HOT-FEED LỚN per-role** (lead **220K** · agent-ký-ức **60K** · agent-workflow **50K** — **anh-set FULL AI_INFRA parity S83 v3**, supersede self-shrink S82; nạp đầy 4 bucket WIP·lỗi-lặp·tồn-đọng·quyết-định-chờ) · L2/L3 **BỎ TRẦN** (on-demand, no artificial tier-cap, chỉ chặn bởi cửa-sổ-ngữ-cảnh model). 🔴 con-số = **quyền CHỦ-DỰ-ÁN (anh)** — em-main THỰC-THI-đúng-số + BÁO-% (KHÔNG tự-tinh-chỉnh), xem §G.4/§G.5 (`token_governor`).
|
||||
|
||||
|
||||
Reference in New Issue
Block a user