- STATUS mega-line prepend S95 (H17 adopt 3-workflow + 10/10 floor + 2 commit + cicd #476) + In-Progress→S95 + bundle-hash live 0T6vVJST/BGXEVZO6 (cicd re-snapshot, was stale S85) - HANDOFF S95 brief + NEXT (frontend-designer distill = H17 loop finding · monthly re-tier) - error-ledger: AS-10 recurrence S95 (E-006, WF1+WF3 self-write reverted 4th fire; instruction-fix NOT 100% — WF3 explicit-return-only STILL self-wrote → git-diff = net) + Active-Guard git-diff-containment 4/4 held - session log 2026-07-01-S95-harness17-adopt.md - user-memory: +feedback_faultinjection_proves_teeth (reusable verify pattern) - 0 production code; 434 test unchanged; docs-only CI-skip Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
31 KiB
STATUS — Snapshot hiện tại
Update rule: trước khi bắt đầu 1 task → ghi row
🔥 In Progress. Xong →✅ Recently Done. Tiering rule (S40): chỉ giữ state hiện tại + 3 session gần nhất ở file này. Session cũ hơn →docs/changelog/sessions/. Full history pre-S40 →docs/_archive/STATUS-preS40-fullhistory.md. (Tránh over-context — xóa double, không cắt nội dung.)
Last updated: 2026-07-01 (S95 — Harness-17 adopt (Vòng tự-cải-thiện bộ-nhớ Đo→Tinh-chỉnh→Kiểm) — governance-only 0 prod code, em-main-led + 3-workflow fan-out (HMW-mode ON). /check-email AI_INFRA (0 directed mới; H16 đã áp trọn S93) → /adap-apply H17 (2 broadcast hash-MATCH · reviewer_gate:PASS). 10/10 mục 🔴 sàn ĐẠT: REUSE-cite A2=§H MFE/C3=D9/CG-2=value_protect/archive=§A; build mới scripts/memory-selfimprove-audit.ps1 (C1 spec-audit NO-API exit-0, runtime-verified bắt frontend-designer over-cap GAP thật) + .claude/governance/reinject-ledger.md (B2 CG-1 N=3, tách khỏi budget.json) + engine §I codify + session-start §2.1.7/session-end §L.b(c) wire + HCV alias no-seed (coverage 3-nghĩa, detector vẫn 27). 3-workflow (run-id bằng-chứng): WF1 wf_f085d7c4-d78 ground-truth + WF2 wf_8e73c1d6-ee6 3-lane review PASS 0-blocking + WF3 wf_6f44eddf-680 deep-reverify (fault-injection 13-inject chứng-răng-thật + integration + cross-doc, 0 application-defect). 2 commit: 18a17f5 (adopt — cicd Run #476 PASS prod 200×3, bundle rotate admin 0T6vVJST/user BGXEVZO6, Mig 59 unchanged) + 65b434a (deep-reverify docs-only CI-skip). adap-report + 2 email AI_INFRA (hash 54789e19 adopt + 8c94fa34 deep-reverify-update). Dogfood C3 4-fire: AS-10 WF1+WF3 self-write reverted (git-diff net = backstop THẬT; instruction-fix NOT 100% — WF3 explicit-return-only STILL self-wrote → E-006 recurrence S95, guard HELD 4/4, 0 escape; cicd-monitor diary KEPT = normal-spawn legit). Lessons: fault-injection-via--RepoRoot-temp chứng checker-teeth (không chỉ happy-path PASS) · Lane B #53 empty-return → em-main self-gate recover · workflow-agent persona-write stochastic → git-diff mandatory. State GIỮ NGUYÊN: Mig 59 · 88 bảng · 434 test · gotcha 76 · menu 54 · prod 17 user/7 NCC. NEXT em: frontend-designer distill (WATCH strike-1 = H17 loop's live finding) · monthly re-tier mega-line + ef-core SKILL Mig→59 + 3 vocab-fork (2026-07-01 due). → log 2026-07-01-S95-harness17-adopt.md) · Prev S94 (S94 — (1) anh-directive nâng cap lead 220K→380K (memory-budget.json canonical · SE-override lead KHÔNG còn AI_INFRA-parity, subs giữ 60K/50K · mark H-15 v4-delta RC-pqhuy1987-29-06-2026-23-25-50 · flush 3 derived echo ACTIVE-MARKS/session-start §2.1.6/engine §G adopt-delta · MFE verified live-read 380K). (2) re-tier 2 mega-line (fix Read-25K/call OOM + token-cost ~169K/220K): STATUS 389→89 dòng (mega-line 59.6K→7.1K char) · HANDOFF 732→12 dòng · live 332KB→34KB (−90%) · session ≤S90 → docs/_archive/STATUS-HANDOFF-tier-S94-2026-06-29.md 0 byte-loss (new+archive=orig+995B pointer) · backup git+scratchpad · detector 27=baseline 0-broken-pointer · conservation spot-check PASS. (3) MFE eval-all baseline (đầu phiên): LEAD coverage-FIT 29-item/380K=0.92% · age-band 0-cut · Goodhart strikes-21/RCA-9 flat=no-lie · SUB per-role ≥85% (cicd/test-spec/FD 100% · impl-backend 94% · impl-frontend 85% · 3 prose-role N/A) · judge-scaffold-only honest. (4) nạp full Phase-1 read-set (budget 380K cho phép): +PROJECT-MAP +workflow-contract +migration-todos. commit 5f61b03 pushed docs-only CI-skip. Lesson: trần budget ⟂ harness Read-25K/call = 2 khóa ĐỘC-LẬP — cap-raise KHÔNG unblock mega-line Read (cần re-tier); mega-LINE = tooling-breaker (ưu-tiên) vs mega-FILE nhiều-dòng = chỉ token-cost; re-tier = archive-không-cắt + assert head+tail==orig 0-loss. em-main solo (governance single-writer, 0 sub, 0 fan-out). State GIỮ NGUYÊN: Mig 59 · 88 bảng · 434 test · gotcha 76 · menu 54 · bundle admin CDn40vpV/user CoPmPBg7 · prod 17 user/7 NCC. → log 2026-06-29-S94-cap-380k-retier-megaline.md) · Prev S93 (S93 — (1) PE cây Duyệt NCC node Dự án hiện MÃ dự án thay tên dài (anh Kiệt FDC) prod-verified Run #473 8ee8f3e: BE thread ProjectCode (DTO + 3 projection List/Inbox/ListApproved + search) + FE 2-app SHA-mirror (render projectCode||projectName+tooltip+sort) NO-MIG; grep bắt construction-site#3 thoát replace_all (cardinality-grep-all-consumer); build 3× + test 434; bundle admin xz8FdmLN→CDn40vpV/user CA8Rla2w→CoPmPBg7. (2) adopt Harness-16 MFE (memory-fidelity-EVAL) 2-workflow PASS, 0 production code 9580098: WF1 wf_4c63e1bd (ground-truth + bắt BLOCKING vocab-fork: memory-fidelity = H6.7 memoryDelta-routing ≠ H16 coverage-eval → đặt MFE + alias-map §H KHÔNG seed $aliasSets) + WF2 wf_13e3d35a 3-lane PASS (code-gate denom-29-re-derived to-the-digit + READ-ONLY-budget proof 1-write-op + honesty 5-floor + leading-verb-trap adversarial-probed-DEFEATED); scripts/mfe-eval.ps1 deterministic NO-API ASCII#30 (LEAD coverage-FIT 29-item/220K=1.5% + age-band-flag-not-cut + Goodhart strikes-21/RCA-9 · SUB per-role ĐO-THẬT impl-backend 94%/impl-frontend 85%/reviewer 88% · prose-role→N/A KHÔNG 0%) + judge-SCAFFOLD-only (honest: số chưa-nghĩa tới khi age-mature+independent-judge) + budget:mfe config + eval/mfe/ seed-12-stable-id + engine §H + artifact-row + C3-comment + wire session-start §2.1.6/session-end §L.b(c) opt-in + agents/README S93 + adap-report ×2 + email AI_INFRA hash da768330. AS-10 2nd-fire dogfood: WF1 3-agent (return-only) residual agent-memory caught+reverted (E-006 recurrence, guard HELD); WF2 explicit-return-only-prompt → 0 residual (instruction-fix). #53 recover-from-disk (WF1 sub return-rỗng nhưng ghi diary trước). user-MEMORY compact 23.7→7.8KB (hook). Lessons: cardinality-change-grep-all-consumer · vocab-collision-check-on-adopt (2-workflow review bắt, 1-workflow trượt) · AS-10-instruction-fix (prompt override frontmatter + git-diff net) · MFE đóng-vòng detector-D1-OOM-đầu-phiên. State THẬT: Mig 59 · 88 bảng · 434 test (45D+389I) · gotcha 76 · menu 54 · bundle admin CDn40vpV/user CoPmPBg7 · prod 17 user/7 NCC. 🔴 NEXT anh: restart CLI (MFE opt-in + wire session-start/end + agents/README no hot-reload) · UAT eoffice node Dự án hiện mã. NEXT em: monthly 2026-07-01 (2 ngày) GẤP re-tier STATUS/HANDOFF mega-line (detector D1 OOM do bloat = tooling vỡ, STATUS line 61K-char/HANDOFF 46K-char KHÔNG Read/Edit) + ef-core SKILL Mig→59 + docs/CLAUDE Budget-removed + 3 vocab-fork alias-map + curate test-specialist/FD L1 WATCH. Pending product: Section B cột Dự-án wire · Ngưỡng giá CEO Mig 54 Designer UAT · "C" chuyển phiếu→dự án chờ spec. → log 2026-06-29-S93-pe-projectcode-harness16-mfe.md) · Prev S92 (S92 — Ẩn 5 nhóm menu (Hợp đồng + Danh mục + Nhân sự + Văn phòng số + Cá nhân) CHỈ Admin thấy trên eoffice — em-main-led verify+review+deploy, 1 commit prod-verified 1408d4e, BE-only no-migration, HMW-mode ON: anh /session-start thấy WIP S92 uncommitted (dated hôm nay) → AskUserQuestion chốt "verify + hoàn thiện + deploy". RevokeTemporarilyHiddenModulesAsync mở rộng predicate +Contracts/Ct_* +Master/Suppliers/Projects/Departments/Catalog* (cộng dồn S58 Hrm*/Off*/Personal) + TẮT 2 re-grant public (S65 HRM + S69 Office) → revoke = bước permission CUỐI trong SeedAdminPermissionsAsync (ungated, durable mỗi restart, gotcha #75) + thu hẹp InReviewScope→chỉ Pe_. PE giữ nguyên cho user (Pe_ không match predicate; master-data GET any-auth → form PE vẫn chọn Dự án/NCC/Hạng mục dù menu Danh mục ẩn). +AdminOnlyModulesRevokeTests 3 (non-Admin revoked 4 cờ / Admin untouched / PE preserved). Verify chain: test 431→434 (45D+389I, full-suite 0 fail) · seed-chain-order verified (revoke last + prod-durable) · predicate coverage verified (5 nhóm đủ; Forms/Reports/PurchaseEvaluations sibling top-level giữ-hiện đúng; no over-match) · reviewer PASS (5 attack vector A-E independ re-derive, 15/15 trên 3 class, 0 blocking). FYI intended-by-spec, 0 live impact: role CatalogManager (hiện 0 user — S89 xóa hết test user) cũng bị thu Danh mục; re-enable cần carve-out predicate. State THẬT: Mig 59 · 88 bảng · 434 test (45D+389I) · gotcha 76 · menu 54 · bundle admin xz8FdmLN/user CA8Rla2w (JS rotate #69, CSS frozen) · prod 17 user/7 NCC. cicd Run #358 PASS prod-verified (sqlcmd: non-Admin 0 leak / Admin 5 giữ / Pe_* 120 untouched; ship-proof = dll-mtime + w3wp-recycle 08:04Z). 🔴 NEXT anh: UAT eoffice login user non-admin → xác nhận KHÔNG còn thấy Hợp đồng/Danh mục/Nhân sự/VP số/Cá nhân (chỉ Duyệt NCC + Dashboard) · ⚠️ restart CLI (carry budget v3 + /user-mark-* + cadence). NEXT em: monthly audit 2026-07-01 (2 ngày) re-tier STATUS/HANDOFF mega-line + flush ef-core/Budget docs + vocab alias-map. → log 2026-06-29-S92-admin-only-modules.md) · Prev S91 (S91 — buổi go-live LỚN em-main-led, 4 commit prod-verified + backup local — go-live chính thức 26/06 anh Kiệt SOL-IT Phase-01 PRO+CCM. #1 159b69d guide Word bỏ "Từ chối" 2 chỗ + fix 12 caption Hinh→Hình [app gỡ Từ chối S60, guide đã phát công ty stale; unpack→XML→repack giữ 13 ảnh, verify python-docx]. #2 ba42c59 wipe go-live scripts/s91-wipe-golive.sql: xóa 16 PE+16 PeWorkItemBudgets+94 notif+19 NCC demo, GIỮ 7 NCC thật+17 user+master, reset PeSeq→A/001 [backup SolutionErp_S91_pregolivewipe.bak + 2 guard PE>16-abort/NCC≠19-rollback + AskUserQuestion scope]. #3 55494ad gate SeedDemoMasterData sau DemoSeed:Disabled — root-cause: seed ungated per-code resurrect 18 NCC demo mỗi restart → prod skip → verify demo_codes=0 qua 2 restart [gotcha #75]. #4 e81e87f user tự đổi mật khẩu: BE ChangePasswordCommand + POST /auth/change-password [Identity verify pass-cũ, fail-PasswordMismatch→field CurrentPassword] + FE 2-app ChangePasswordDialog/TopBar + 10 test; fix CS0104 ValidationException ambiguous [FluentValidation vs custom]. + backup local backups/SolutionErp_golive_clean_2026-06-26.bak 21MB + accounts.txt 17 tk [.gitignore +backups/+*.bak]. State THẬT: Mig 59 · 88 bảng · 431 test [45D+386I, +10 ChangePassword] · gotcha 76 [+#75 seed-resurrect +#76 deploy-config-từ-.example] · menu 54 · bundle admin DgQyuG7f/user BmbQon23 · prod 17 user/7 NCC/70 dự án/71 hạng mục/0 PE-HĐ. Lessons: wipe-không-bền-nếu-không-gate-reseed [#75 root>symptom] · deploy render Production.json từ .example KHÔNG file-gitignored [#76] · em-main-led security-feature báo-trước + test-specialist + build/test gate thay fan-out [#53 cicd garbled-return→em-main self-verify-prod; test-specialist độc-lập bắt CÙNG CS0104] · Chrome-MCP screenshot kẹt SPA-SignalR document_idle [carry #74, guide-ảnh defer — anh "tự check"]. 🔴 NEXT anh: ⚠️ restart CLI · review guide docx Word · đóng 2 tab eoffice em mở. NEXT em: curate test-specialist L1 OVER [carry] · monthly 2026-07-01 [re-tier mega-line + ef-core Mig→59 + Budget-removed docs/CLAUDE]. → log 2026-06-26-S91-golive-wipe-changepw-backup.md) · (session ≤S90 đã tách → docs/_archive/STATUS-HANDOFF-tier-S94-2026-06-29.md + docs/changelog/sessions/; re-tier S94)
🎯 CURRENT STATE (verified S40)
| Metric | Value | Note |
|---|---|---|
| Migrations | 59 | +S87: Mig 58 AddPeMultiWinnerAndLevelFinalize (PurchaseEvaluationSupplier +IsWinner bit multi-winner backfill từ SelectedSupplierId + ApprovalWorkflowLevel +AllowApproverFinalize bit cấp-KẾT-THÚC-quy-trình AUTO; 2 AddColumn + 1 backfill, no new table) + Mig 59 AddCcmBudgetPeriodToPurchaseEvaluation (PE +CcmBudgetPeriodAmount decimal(18,2)? — NS kỳ-này cột CCM cho Section B 3-cột; 1 AddColumn nullable, no backfill, no new table). +S77: Mig 57 AddPeSuggestedPriceNotes (PE +ProSuggestedPriceNote +CcmSuggestedPriceNote nvarchar(1000) — ô ghi chú giá đề xuất PRO/CCM giải-thích Min/Max · additive-nullable, 0 backfill, no new table; absolute-set role-gate mirror Mig 54/55). +S76: Mig 56 AddProBudgetSplitToPeWorkItemBudget (PeWorkItemBudget +ProInitialAmount+ProAdjustmentAmount decimal(18,2)? — cột PRO "Ban hành lần đầu"+"V0/hiệu chỉnh" mirror CCM Initial/Adjustment; AddColumn additive + Sql() data-migrate ProInitial=ProEstimate 4 rows prod gotcha #64; no new table). +S74: Mig 55 AddCcmNoteToPeWorkItemBudget (PeWorkItemBudget +CcmNote nvarchar(1000) — "Ghi chú từ CCM" mirror ProNote · additive-nullable, 0 backfill, no new table). +S73: Mig 54 AddPeSuggestedAndApprovedPrice (PE +5 cột giá đề xuất PRO Min/Max + CCM + giá chốt ApprovedPriceAmount/Source — additive-nullable, 0 backfill, prod-verified Run #313). +S69: Mig 53 AddPeUrgentAndCeoApprovalThreshold (PE +IsUrgentByPro/Ccm cờ gấp + ApprovalWorkflow +CeoApprovalThreshold ngưỡng CCM duyệt-final · 3 AddColumn no new table). Prev S65: Mig 51 AddDepartmentParentId (Department.ParentId loose-Guid no-FK — org-tree) + Mig 52 AddHoSoLinkToPurchaseEvaluation (PE HoSoLink nvarchar(1000) hyperlink NAS) — cả 2 AddColumn-only, no new table (tables giữ 88). Prev Mig 50 ReplaceBudgetModuleWithPeWorkItemBudgets (bảng PeWorkItemBudgets per-gói-thầu + DROP module Budget cũ + backfill BudgetManual→BudgetPeriod TRƯỚC DropColumn + DROP PE/Contracts.BudgetId; gotcha #63/#64). Prev Mig 49 PE WorkItemId (S57bis) |
| SQL tables | 88 | re-ground S62 (cicd sys.tables Run #286 — Mig 50 XÓA module Budget (drop nhiều bảng) + CREATE PeWorkItemBudgets → net 93→88) |
| Master data (prod) | 71 WorkItems PMH-only S59 | 62 Projects + WorkItems = ĐÚNG 71 mã PMH (S59: wipe 15 demo + rename format anh Kiệt MAT-1..16/SUB-1..30/MEP-SUB-1..9/MEP-EQU-1..16, Name "STT nhóm tên") + Suppliers 22 (3 real + demo; POST mở any-auth S59 quick-add). Transactional testing data wiped S59 (PE/HĐ/Notif = 0 baseline, phiếu thật từ A/001). Provenance scripts/master-import-data.generated.md |
| API endpoints | ~253 | +1 S54 GET /it-tickets/assignable-staff (capability endpoint); +3 S52 (attendances/report + report/excel + it-tickets/{id}/assign) |
| FE pages | 68 | unchanged S54 (ItTicketsPage reassign = in-place 2 app); +1 S52 AttendanceReportPage |
| Menu keys | 54 | +1 S69 Off_Dashboard (landing Văn phòng số). Prev re-ground S61 (MenuKeys.cs const — Mig 50 gỡ 4 Bg_* Budget menu cũ). Prev 57 (S58) |
| Tests | 434 PASS | 45 Domain + 389 Infra · 0 fail / 0 skip · S92 +3 (AdminOnlyModulesRevokeTests ẩn 5 nhóm menu chỉ Admin — non-Admin revoked-4-cờ / Admin untouched / Pe_* preserved) · S91 +9 (ChangePassword self-service BE+test) · S89 +3 (PeDraftVisibilityTests IDOR nháp riêng-tư) · S88 +17 (D1 financials/CEO-notify/HoSoLink null-safe +11 · D2 create-contract multi-winner +6) · S87 +25 (Mig 58 net +18: PeMultiWinnerTests sum + PeSelectWinnerClearTests multi-update + PeSubmitGuardAndBypass budget=0 + PeApproverFinalizeTests 5 auto-finalize [từng 7, −2 khi opt-in→auto rework] + PeCcmThresholdFinalize/PeWorkItemBudget collateral; Mig 59 +7 PeCcmBudgetPeriodSetterAuthzTests role-gate Admin |
| Gotchas | 76 | +2 S91 (#76 deploy render config từ .example KHÔNG phải file-gitignored → prod thiếu setting tới khi điền tay · #75 seed ungated per-code RESURRECT data đã-wipe mỗi restart → gate sau env-flag DemoSeed:Disabled + verify-by-restart-thật). +1 S90 (#74 Chrome-MCP screenshot kẹt SPA-SignalR document_idle → PowerShell CopyFromScreen + Win32 lọc-process-chrome.exe). +2 S85 (#72 lệch giờ +7h — DateTime lưu UTC nhưng serialize thiếu 'Z' → FE new Date()=local → UtcDateTimeJsonConverter global ép UTC-with-Z · #73 UpdateDraft absolute-set CLEAR field SÓT khỏi pattern null-safe = bug-class S42 → guard if (request.X is not null)). +1 S78 #71 (thêm enum value vào entity DÙNG-CHUNG → pollute UI/guard phân-loại theo PROXY-predicate supplierId===null thay vì enum tường minh; file-khi-duyệt purpose=5 lẫn "Bảng so sánh" + false-pass submit-guard → grep mọi field-proxy predicate loại value mới + build-verify TỪNG app; em-main grep no-leak bắt trước deploy). +1 S76 #70 (FE absolute-set echo field anh-em từ server-snapshot + invalidate() fire-and-forget → cửa-sổ stale-echo mất-dữ-liệu khi lưu 2 ô liên-tiếp; guard useIsFetching gate nút Lưu tới khi refetch land; reviewer workflow bắt, impl self-review sót). +1 S72 #69 FE bundle-hash non-deterministic + deploy.yml rebuild-FE-unconditional → bundle rotate kể cả commit governance (SPA-fallback-200 trap; cicd Run #312). +2 S69: #67 Tailwind v4 accent palette thiếu stop (teal/violet/amberx/greenx chỉ 50/100/500/600/700; dùng -300 → teal/violet rơi DEFAULT Tailwind sai-hệ, amberx/greenx drop hẳn — build PASS, phải soi dist CSS) · #68 IDE TS diagnostic giữa background-agent/workflow = snapshot dở-dang (TS server bắn mỗi save), chỉ tin build SẠCH sau-cùng (2× session này: re-skin + PE-FE đều false-alarm). Prev +1 S68 #66 Tailwind v4 rule element thô h1-h4{color:#0b1220} viết NGOÀI @layer thắng utility text-white → heading render đen; fix ĐIỂM text-white! (important, grep dist confirm), KHÔNG move @layer (load-bearing ~30+ heading toàn app). Prev +1 S65 #65 build csproj con (vd SolutionErp.Api.csproj) ≠ dotnet build SolutionErp.slnx (gồm tests) → miss test-compile khi đổi chữ ký record command (CreateDepartmentCommand +ParentId) → CI CS7036 FAIL-gated Run #291 (deploy chặn, prod nguyên — test-gate làm đúng việc). Fix: build full slnx trước push BE signature-change. Prev +2 S61: #63 EF scaffold tự sinh RenameColumn SAI-semantics khi drop+add cùng type (test xanh không bắt — SQLite EnsureCreated không replay migration) · #64 dotnet ef database update áp Design-DB 0-rows ≠ Dev-DB → data-migrate Sql() chạy thật lần đầu trên prod. Prev +2 S59 (#61 sqlcmd -f 65001 · #62 rename natural-key UPDATE trước deploy) |
| User memory | 31 | +S84 feedback_derived_flush_execution (derived→canonical flush = em-main execution KHÔNG gate user-confirm; monitor INFORM-only ≠ cần-anh-duyệt; chỉ ĐỔI-con-số/policy = quyền anh). +S79 feedback_canonical_spec_over_broadcast (adap pull canonical-command/§P đừng phỏng-theo broadcast + report-before-stamp dogfood + residual own-diary OK). +S75 feedback_harness11_engine (engine governance tự-bảo-trì + gotcha #30-via-Edit + multi-workflow-verify + git-add-specific lesson). re-ground S71 (H1 disk-count: 25 feedback_* + 3 project_*; STATUS "21" stale từ S64). +S71 feedback_harness10_run_trace (run-trace + 3 lesson). Prev +1 S64 feedback_harness7_outward_writing_quality; re-grounded S54 base 19 |
| Skills | 6 | 3 domain + 3 ops |
| Sub-agents | 11 | all-inherit top-tier (Harness-8 S66 06-16 — thay thế two-tier H4): em main Fable 5 (1M) Max (fallback Opus 4.8 1M, Fable suspended H5) · cả 11 sub model: inherit (7 demoted claude-opus-4-8 flip S66; SE không có helper/gopher rẻ → cả 11 lên top-tier) · effort Max. 9 product/quality + 2 monitor INFORM-only. Nấc H8 = executed-file VERIFIED-pending-restart. Prev two-tier H4 runtime-verified S57bis (spawn-test 2 chiều). |
| RAG chunks | 2429 | re-verify S80 (list_projects — alive, +6 vs S63's 2423). Stale last_indexed 05-29 (S42-S62 via store_memory stopgap; full re-index = AI_INFRA op cần VOYAGE_API_KEY). |
Bundle hash live (prod): admin 0T6vVJST · user BGXEVZO6 (S95 — Run #476 18a17f5 H17 governance-only deploy; bundle rotate benign #69 CSS-frozen, prod 200×3, Mig 59 unchanged; cicd re-snapshot LIVE — pre-deploy CkZ1MjC1/_-gpX7_Y, mega-line S93 CDn40vpV/CoPmPBg7 đã bị deploy trung-gian rotate từ S94). Prev S85 — admin aKuNip19 · user BUsL0HeQ (S85 — Run #341 49ac086 lệch-giờ TZ serialize UTC-with-Z; FE frozen #339+#341 BE-only. Chuỗi ~10 deploy #334→#341 buổi UAT anh Kiệt CV PRO: #334 5a61254 batch CV PRO 6-fix → #335-#338 6 vòng UAT → #339 1263c0d workflow-preserve bug-class S42 → #341 49ac086 TZ; #342 d4f6021 docs+cicd BE-frozen, bundle giữ-nguyên gotcha #69-REFINE). Prev S78 — admin CsJetgZH · user BVS0ApIm (S78 — Run #330 7886fd0 PE attach-file khi duyệt; bundle ROTATE từ S77 BqKD3Y23/Cn-i349D dù NO migration enum-only — gotcha #69 non-determ rebuild; cicd ship-proof byte-stable + fake-hash control). Prev S77 — admin BqKD3Y23 · user Cn-i349D (S77 — Run #329 e823694 banner Trả-lại; cuối chuỗi 10 deploy #320→#329 cùng ngày, cicd PASS each: #320 pill DsSg6RRz-era → #321 focus → #322 revert → #323 Mig57+notes CPm4LTqm/BWJUAqEI → #324 số-âm-đỏ C6fx-0ea/N3sW4Div → #325 indent BhnNMucS/B1VebpXc → #326 cờ-gấp-asymmetric DwXqn37C/COXMCv7E → #327 decouple B0gboSAg/DbDg7pM- → #328 notify (BE-only, FE frozen) → #329 banner BqKD3Y23/Cn-i349D). Prev S76 — admin jOqxW4-p · user DbsznVvR (S76 — Run #319 21d1f4e bảng lưới <table> ngân sách viền-ô; chuỗi S76 cùng ngày: #318 e33481e feature ma-trận-3-cột + badge quyền-NS BhFDF9IJ/BAkuRl3C → #319 jOqxW4-p/DbsznVvR, cicd PASS each, smoke 3×200, Mig 56 applied prod #318). Prev S74 — admin BYF5vIMJ · user CB-tiRxd (S74 — Run #315 8655ebf Mig 55 CcmNote, cicd PASS ~4m54s: Mig 55 applied prod CcmNote nvarchar(1000) nullable · sys.tables 88 · smoke 4×200 · 0 regression). Prev S73 — admin Bv3jUCNo · user BWlMBQz6 (Run #314 6aa4dcb FE empty-candidates guard fix; chuỗi 2 deploy: #313 1d86abc feature OlNyG9OD/DSzSLVtL → #314 Bv3jUCNo/BWlMBQz6, cicd PASS each). Prev S72 — admin fc_xkNpJ · user DP-tBcg0 (Run #312 governance commit 18fced6; bundle ROTATE do non-deterministic hash + deploy rebuild-FE-unconditional (gotcha #69) — 0 FE source change, prod state/DB GIỮ NGUYÊN). Prev S69 — admin BgNCjwsG · user CBvh0vtf (Run #308 PE cờ gấp + ngưỡng CCM; chuỗi 4 deploy session: #305 Văn phòng số foundation → #306 re-skin 10 page → #307 Office golive (BE-only) Wt54PHYl/B99fMU6X → #308 BgNCjwsG/CBvh0vtf). Prev S68 — admin CNUv1jxY · user CpOskeS1 (S68 — Run #304 37752eb fix tên đen→trắng; chuỗi #303 6983609 D532XZKG/CuFaBoWt → #304 CNUv1jxY/CpOskeS1, cicd PASS each). Prev S67 — admin CcrZqfht/user DniDFUB_ (S67 — 6 deploy Run #297→#302; admin rotate chuỗi #298xkSz9BfE→#300PxiZQkaw→#301I1fpLeYw→#302**CcrZqfht** · user #297BumgrwCJ→#300B36hGoKd→#301DrQYkzh0→#302**DniDFUB_**; #299 tests BE-only cả 2 frozen, cicd PASS each). Prev S65 — admin BDwV5d0X/user DbVv6rsf (Run #293-295). Prev S62 admin 0xKYGhhf/user C81ZdG9G (Run #286). Prev S59: admin B1DtNT9C · user D6uF3Mln (Run #282 792c030 FINAL — bỏ nút Thêm hạng mục; ships kèm 80b64dd gỡ Điều khoản TT, #281 cancelled-benign ancestor-verified). Chuỗi S59 cùng ngày: #280 69997da (BKy_8OO9/XcZ6PRyA, ships kèm f21c55d table-fixed #279-cancelled) · #278 9c330d2 self-approve+quick-add-NCC (BSh2fG2X/D22KfpPc, authz probe 4/4) · #277 faed59f SearchableSelect (ex7Tc92G/DzUeSk96) · #276 c869d26 rename 71 PMH (BBA0KSWu/DzdTI18G) · #275 bbd1554 dọn demo WorkItems (FROZEN BE-only) · #274 0eafcd3 tree 4 tầng (DuU7OTym/DWyeTzf3) · #273 56882ac wipe + tree v1 (R9uGRxvw/DikfX1RD). Prev S58: Run #386 3ebaf84 admin DMm9rtNA/user BUkOMn_Y (chi tiết session log S58).
Phase: ✅ Phase 10 COMPLETE · ✅ Phase 11 product backlog ĐÓNG TRỌN · ✅ Văn phòng số (E-Office) golive S69 (foundation PURO + re-skin 10 page + public read+create 16-key allow-list mọi role) prod-verified · ✅ PE cờ gấp PRO/CCM + CCM duyệt-final theo ngưỡng (Mig 53 S69) prod-verified · ✅ PE ngân sách MA TRẬN 3 cột Dự án/PRO/CCM (bảng lưới <table>) + badge quyền-NS theo role trong Workflow Designer & flow Duyệt NCC (Mig 56 S76) prod-verified · ✅ PE UX batch S77 (10 deploy) — cờ GẤP pill mọi danh sách+inbox · focus/inline+overlay decouple+"Xem mở rộng" · ô ghi chú giá đề xuất PRO/CCM (Mig 57) · số phân cách + số-âm-đỏ-ngoặc + indent mục con · cờ gấp GẮN=NV/GỠ=Trưởng phòng · chuông báo người duyệt · banner Trả-lại — prod-verified · ✅ PE đính kèm file khi DUYỆT (S78, Run #330) — người duyệt tải file lên lúc duyệt thay vì Trả lại; migration-free reuse-enum ApprovalAttachment=5 — prod-verified · 🚫 Phase 9 Ops blocked (anh main coordinate — anh dừng).
⚠️ Count drift fixed S40: endpoints ~223→211, FE pages 53→65, menu keys 85→~53. Tables 84 confirmed correct (DbSet 77 + Identity 7). 3 số "khó fake" (mig/gotcha/git) luôn đúng. Cause: số "incremented mỗi session" over/under-count optimistic — re-ground định kỳ.
🔥 In Progress (S95)
| Task | Owner | Status |
|---|---|---|
S95 — Harness-17 adopt (Đo→Tinh-chỉnh→Kiểm) + 3-workflow deep-verify — ✅ DONE, pushed 18a17f5+65b434a; chi-tiết ở mega-line đầu file + session log 2026-07-01-S95-* |
👤 em main | ✅ done (S95 closeout) |
| Frontend-designer distill (H17 loop's live finding: MEMORY.md 26129B over-cap, WATCH strike-1) | 👤 em main | ⚪ pending (strike-2 hoặc anh chỉ đạo) |
✅ Recently Done (newest on top — 3 session; cũ hơn → session logs)
Chi-tiết 3 session gần nhất (S93/S92/S91) = mega-line đầu file. Detail S75↓ đã tách (re-tier S94) →
docs/_archive/STATUS-HANDOFF-tier-S94-2026-06-29.md+ bản đầy-đủdocs/changelog/sessions/.
🎯 Next up
✅ Phase 11 — Polish/wire skeleton (COMPLETE S52)
- ✅ P11-A wire ApproveV2 + LevelOpinions 4 module — DONE S42 (prod).
- ✅ P11-B LeaveBalance business logic — DONE S43 (Mig 42, prod).
- ✅ P11-C Vehicle+Driver catalog — DONE S51 (Mig 44/45, prod).
- ✅ P11-D ItTicket round-robin assign + SLA timer — DONE S52 (Mig 46,
dcf76f8, prod). Dept-IT pool +ItTicketSlaJobno-auto-transition. Follow-up minor: reassign-UI defer (endpoint/assignsẵn). - ✅ P11-E AttendanceReport + Excel + OtPolicy multiplier — DONE S52 (
6a66429, prod). Admin-only, weighted-OT-hours (no salary field → quy-đổi-giờ not pay, MVP). Follow-up: menu-key promote (hiện via button). - ✅ P11-F CodeGen atomic MaTicket — DONE S52 (
6a66429, prod). gen-on-CreateIT/2026/NNN.
🔧 Maintenance backlog
- RAG re-ingest
solution_erpS42-S43 content (store_memory stopgap live; full re-index = AI_INFRA op) - ✅ gotcha #57 LeaveType+ShiftPattern+OtPolicy filtered-unique DONE S51 (Mig 45, 3 HRM catalog — OtPolicy bị bỏ sót khỏi backlog "2 catalog", bắt được via grep + test-before 5 case). ⬜ EXT (worktree session, Mig 46): Department/Supplier/Project (Master, confirmed-reachable via global query-filter quirk); ContractClause/MeetingRoom/EmployeeProfile = SKIP (audit-verified not-reachable).
- Skill + doc drift audit cron — ✅ 2026-06-01 DONE (S44) — 42 count-drift fixes + AI_INFRA bundle adopt; next 2026-07-01
🚫 Phase 9 Ops (blocked — anh main coordinate)
- SMTP email outbound · Rotate prod creds · SQL auto-backup (backup-sql.ps1 ready, chờ Task Scheduler register) · UAT 2-3 user 1 tuần
🚨 Blockers / risks
- ⚠️ Email SMTP chưa có — blocker notification outbound
- ⚠️ Credentials trong chat — rotate trước go-live thật
- ⚠️ SQL backup chưa auto — risk data loss (script ready, chờ register)
- ⚠️ UAT real user chưa chạy — risk edge-case bug
- ⚠️ Cert
api.solutions.com.vnexpire ~2026-07-23 (auto-renew ~06-23)
🔑 Credentials + URLs
Prod login: admin@solutions.com.vn / Admin@123456 (⚠️ rotate sau login đầu)
- API prod
https://api.solutions.com.vn(/health/live+/health/ready) · devhttp://localhost:5443(/swagger) - Admin FE prod
https://admin.solutions.com.vn· dev:8082 - User FE prod
https://eoffice.solutions.com.vn· dev:8080 - Gitea
https://git.baocaogiaoduc.vn/vietreport-admin/solution-erp· SSHssh vietreport-vps - SQL prod
.\SQLEXPRESS/SolutionErp· dev(localdb)\MSSQLLocalDB/SolutionErp_Dev
Session history: S0→S39 full detail trong
docs/changelog/sessions/+docs/_archive/STATUS-preS40-fullhistory.md. File này chỉ giữ state hiện tại + 3 session gần nhất.