Files
solution-erp/.claude/commands/ultra-on.md
pqhuy1987 00a1c67e55 [CLAUDE] Infra: W2 GOP-1-COMMIT - San-1 gate + PA-2a + roster 12->14 (2 monitor H24) + h24_cadence + counter + STATUS 2 row
Wave adap-6-broadcast W2 = 1 OWNER / 1 COMMIT co chu dich. Cac manh phu-thuoc nhau, tach ra la vo
duong dang chay (R2-C3): gate o W2 ma co o W3 => moi /fable-clone >=3 lane THROW ngay truoc khi W3 kip va.

(1) hmw.js - 1 EDIT, 4 viec
    - SAN-1 GATE co-khi-hoa: taskList>=3 && !args.run => THROW STOP-HARD.
      Truoc S121 san nay chi la CHU trong doc ("script no-fs KHONG tu ep") => phu thuoc lead NHO.
      Do that @S119: git grep args.run .claude/commands/ = 0 hit => 4/4 wrapper KHONG co => san danh-nghia.
      Vi sao >=3: chet giua run dai ma khong co runs/<run-id>/ => per-turn returns mat theo phien,
      CHI file tren dia song sot => /tiep §4 khong co vat-lieu cat-got => chay lai TU DAU (S118
      raw-Agent 7-spawn => 0 run-folder). THROW chu khong fail-soft (fail-soft = dut am-tham).
    - VALID_ROLES 12->14 (+lead-view-auditor +lead-omission-auditor).
    - PA-2a: TIER2_EXPECTED_FULL_ID = 'claude-opus-4-8'. La HANG-SO KHAI-BAO, KHONG phai co-che neo
      (neo-tai-spawn bat-kha-thi: param chi nhan alias; SE 0 full-id vi H8 all-inherit). Doc boi
      scripts/spawn-model-audit.ps1 (W1b) - thieu hang-so => script FAIL-LOUD.
    - H23 note CHUA-VERIFY giu nguyen nac: precedence spawn-param vs frontmatter khi CA HAI hien-dien
      = CHUA TUNG TEST; phan-biet duoc CHI o phien lead=Fable => DEFER, khong ban qua nac. + fix#8a chua thu.

(2) 4 co wrapper CUNG COMMIT voi gate (San-1 (c))
    fable-clone.md / fable-real.md / ultra-on.md => args.run: 0 -> 3 hit.
    Wrapper thu 4 = raw-invoke em-main: KHONG co file de gan co => duoc GATE chan truc tiep
    (chinh cu fault-inject duoi day di duong do). Khai that: gate chi phu hmw.js; nguong "hoac uoc
    >5 phut" KHONG co-khi-hoa duoc (script khong do truoc thoi-luong) => van la ky-luat lead;
    raw Workflow/Agent tool = ke CON-LAI khong gate duoc.
    + go so roster stale (view-stale-role-desc): "roster 12"/"12 sub"/"8-agent"/"9-agent" -> tro
    canonical docs/STATUS.md §Sub-agents (B1). session-start.md con "roster 12" = W3 so-huu, KHONG dung.

(3) 2 vai MOI - H24 §2(1), cookie-cutter frontmatter monitor san
    lead-view-auditor  = view LECH source (5 class view-*)
    lead-omission-auditor = cai BI THIEU (5 class gap-*)
    model:inherit / memory:project / maxTurns:18 / 8 tool read-only / NO Write-Edit / propose-only.
    KHONG gop vao tooling-auditor(H1)/harvest-curator(H2): H24 "gop la mat tieu-diem; can cap mat
    CHI danh cho lead". Tu-vung view/omission chon tranh va-cham (detectors:15 da so-huu
    derived-staleness; GAP qua-tai). 2 file 0-CR + block-scalar (giu ': ' N/A).

(4) memory-budget.json - single-source H24 §2(3)
    h24_cadence { light_every:6, deep_every:15, jump_on_class_repeat:3 } (anh chot Q2).
    lead_self_audit.flag_classes = enum DONG 10 class (5 view-* + 5 gap-*) - vai CAM tu che class
    (v2 M4: enum song trong dau 1 lane => worker khong bao gio thay => tu che => loang thong-ke).
    Honest-caveat giu de bao hub: hub dan "dung chep 3 con-so nay"; SE chon trung 6/15/3 = anh chot
    CO CHU-DICH lam khoi-diem, KHONG phai chep vo-thuc; re-tune sau chu-ky-2.

(5) .claude/governance/.session-counter.json (NEW) - seed UNTICKED trung thuc
    Content-based (idempotent-key = HEAD sha), KHONG blind-increment: hook wal-flush auto-commit
    agent-memory/ MOI TURN => dem mu se vo nghia. Dat o .claude/governance/ CO CHU-DICH = ngoai
    3 path hook (.claude/WAL.md, agent-memory/, workflows/runs/) => khong bi quet vao commit wal:.
    counter=0 + last_ticked_*=null = SU THAT tai S121 (nghi-thuc tick land o W3); seed tick gia
    se lam phep do cadence dau tien noi doi - dung thu H24 sinh ra de bat.

(6) STATUS.md 2 row - CUNG LANDING roster (R3-M2: lech => detector BAO tren chinh thay doi cua H24)
    | Sub-agents | 12 -> 14 |
    | Policies | 216 | ROW MOI - GAP-3 can no de resolve token 'policy'.
    216 GROUND TU MA NGUON, khong chep tu spec: |MenuKeys.All| x |MenuKeys.Actions| = 54 x 4
    (Program.cs:82-89 AddPolicy loop; MenuKeys.cs:167 Actions=[Read,Create,Update,Delete]).
    => Policies la DERIVED = Menu keys x 4 => 2 row BUOC doi cung nhau (ghi thang vao row).

VERIFY LEAD TU DO (khong tin return):
  14/14/14 (roster / VALID_ROLES / agents-*.md tru README) = acceptance ② EOL.
  Glob tho = 15 => xac nhan R2-C1: acceptance CU "ls agents/*.md = 14" se FAIL tren impl DUNG.
  Hop-dong cheo W1<->W2 khep CA HAI chieu, do bang chinh script W1:
    detector H24-2: "h24_cadence missing" -> "M = h24_cadence.light_every = 6 (read from config)"
    spawn-model-audit: "expected constant missing" -> "[OK] expected = claude-opus-4-8 = owner-ratified"
    GAP-3 policy: MISSING -> 216, va BAT NGAY permission-matrix/SKILL.md:3 "writes 240 policy but
      canonical=216" (+:81 "writes 48") => TOTAL 49->50 (-1 fail-loud cadence, +2 policy) = so cong khop.
  eol-check tu nhan 2 vai moi: scoped 37->39 (dem bang glob, khong hardcode).
  FAULT-INJECT SAN-1 2 CHIEU (bai hoc W0.3: chi test 1 chieu thi dieu-kien viet nham van PASS):
    (b) 3 task + KHONG args.run -> THROW, agent_count=0, subagent_tokens=0, 14ms (chan TRUOC spawn)
    (a) 2 task + KHONG args.run -> gate IM, workflow launch binh thuong => khong over-fire, nguong
        dung la >=3. Neu viet nham `if (!wave)` thieu nguong thi /fable-real 1-lane se chet oan.

CHUA VERIFY (khai that, KHONG gia vo):
  14/14 spawn-probe SONG = PHAI chay SAU RESTART (registry = anh-chup khoi-phien; S120+S121 da do
  2 lan xac nhan KHONG hot-reload agent MOI). Static-check KHONG du (broadcast ④d).
  => 2 vai moi hom nay moi chi TON TAI tren dia + trong VALID_ROLES, chua chung duoc SPAWN duoc.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-15 13:04:21 +07:00

53 lines
8.5 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.

---
description: BẬT HMW-mode SOLUTION_ERP — task LỚN chạy Workflow fan-out (roster ĐẦY-ĐỦ — số vai canonical ở docs/STATUS.md §Sub-agents, KHÔNG chép số) + sub giữ ký ức slice + verify-before-memory-write (no-overwrite-unverified) + harvest LIỀN sau mỗi workflow. /ultra-off để tắt. Gõ = anh CONSENT chạy Workflow (deliberate on-ramp).
argument-hint: (trống = bật mode · hoặc kèm task lớn đầu tiên)
---
# /ultra-on — BẬT HMW-mode (SOLUTION_ERP)
> Cặp **`/ultra-off`**. 🔴 restart Claude Code sau khi tạo/sửa (command `.md` no hot-reload).
> Gõ lệnh này = **CONSENT chạy Workflow fan-out** · scope **CHỈ repo SOLUTION_ERP** (S1 — KHÔNG fan-out repo/corpus khác) · workflow-agent **inherit lead-model** (H6.2 — top-tier; lead = frontier-class anh chọn per-session {Fable 5 | Opus 4.8 — 1M MAX}, MTv3 S110; **H8 all-inherit** S66 · role-less→inherit S63).
> **Mode persist qua marker:** `/ultra-on` → em main tạo `.claude/hmw-mode.on` (Write) + vào mode → SỐNG qua session/compact. `/ultra-off` xóa. **`/session-start` đọc marker → BÁO anh ON/OFF** (khỏi quên đang ở mode đốt-token). marker = source-of-truth · **gitignored** (KHÔNG commit — tránh mode kẹt-ON khi clone = on-ramp ungoverned).
**Task đầu (nếu có):** $ARGUMENTS
## 🚦 Keyword = QUYỀN, KHÔNG phải LỆNH (T4 — bài học 515K-token false-trigger)
- Chữ "workflow" / "ultracode" trong câu anh HOẶC trong reminder harness = **MỞ QUYỀN hỏi** (eligibility-to-ask), **KHÔNG** auto-run Workflow.
- Mode-OFF + anh nói "chạy workflow" → em main **TỪ CHỐI + nhắc anh gõ `/ultra-on`**, KHÔNG tự chạy.
- 🔴 CẤM dùng native `/effort ultracode` (nó auto-author+run workflow MỌI task — KHÔNG checkpoint / KHÔNG memory-harvest / KHÔNG scope-guard = ngược thiết kế). HMW = home-built orchestrator-workers, **marker-gated**.
- 🟢 **H6.1 (governed-ultracode, adopt S63) — mode-ON = auto-HMW:** mode ON → task **SUBSTANTIVE** (≥2 bước độc-lập · multi-file · sweep/audit/review/migration/research/verify-heavy) em main **TỰ author+chạy Workflow** (KHÔNG cần anh gõ "workflow"; marker-ON = standing consent — vẫn checkpoint INFORM `{số agent·vai·task}` rồi chạy NGAY). Task **TRIVIAL / governance-authoring single-writer** → solo (chống token-nổ). Ranh giới = "workflow có giúp THẬT không"; nghi-ngờ nghiêng workflow, KHÔNG workflow 1-câu-hỏi-đáp. = lấy sự-tiện native ultracode + GIỮ guard HMW. (H6.7 role+memory-fidelity ĐÃ là floor sẵn: `agentType ∈ VALID_ROLES` + `memoryDelta`→agent-memory single-writer B3.)
## Phân loại (em main mỗi task)
- **HMW (LỚN):** fan-out nhiều file/nguồn — sweep · audit · cross-stack review · mass migration · multi-source research. Số task THOẢI MÁI (harness queue theo slot, KHÔNG cap cứng) · spawn **ĐÚNG VAI** (`agentType` ∈ VALID_ROLES; role lạ ∉ VALID_ROLES → `hmw.js` THROW STOP-HARD + báo owner (REC-3 2026-07-13); role-less null → inherit lead).
- **Thường (nhỏ):** <30min · 12 file · hỏi-đáp Agent-tool spawn lẻ / solo theo `.claude/agents/README.md` decision-tree, KHÔNG HMW.
## VALID_ROLES (roster SOLUTION_ERP — số vai canonical → [`docs/STATUS.md`](../../docs/STATUS.md) §Sub-agents, B1 KHÔNG chép số ở đây)
`investigator-codebase` · `investigator-api` · `implementer-backend` · `implementer-frontend` · `test-specialist` · `reviewer` · `cicd-monitor` · `frontend-designer` · `database-agent` · `office-document` (+S107) · `tooling-auditor` · `harvest-curator` (+S110 anh-directed monitor vẫn INFORM-only, lane RETURN-only) · `lead-view-auditor` · `lead-omission-auditor` (**+S121 W2** 2 monitor H24 lead-self-audit, INFORM-only propose-only; class-flag = enum ĐÓNG `lead_self_audit.flag_classes` `.claude/agent-memory/memory-budget.json`, nhịp = `h24_cadence` cùng file)
> Role lạ ∉ VALID_ROLES → `hmw.js` **THROW (STOP-HARD)** + báo owner thêm vai (REC-3 2026-07-13; fail-soft cũ "đứt âm-thầm" đã bỏ); role-less null → inherit lead. Windows MAX_PATH (Dropbox nested) → KHÔNG `isolation:worktree`.
## Quy trình HMW — vai trò từng phase
| Phase | Ai | Làm |
|---|---|---|
| **P0** prep | 👤 em main | đọc MEMORY sub liên quan **memory-pack SLICE/vai** (KHÔNG full) + `taskList` + chụp **chunk-count Qdrant baseline** + git status sạch |
| **P1** decide | sub liên quan (full memory) | recommend approach + **acceptance-checklist** em main chốt plan |
| 🔴 **P1-run** scaffold | 👤 em main | **BẮT BUỘC khi `taskList.length ≥ 3`** (Sàn-1 H22, cơ-khí-hoá S121 W2): scaffold `.claude/workflows/runs/<run-id>/` (TRACKED) + `run.md` kèm **`## taskList snapshot`** truyền `args.run = { name, dir }`. **Thiếu cờ + ≥3 task ⇒ `hmw.js` THROW STOP-HARD.** Script chạy JS-sandbox **KHÔNG filesystem** tự không tạo folder được đây lý-do gate nằm em-main chứ không script. Bỏ qua chết giữa run **mất trace** (per-turn returns chết theo phiên; **chỉ file trên đĩa sống sót**) `/tiep` §4 phải chạy lại TỪ ĐẦU thay cắt-gọt. 🔸 Ngưỡng *"hoặc ước >5 phút"* KHÔNG cơ-khí-hoá được phần đó kỷ-luật lead. 🔸 raw `Workflow`/`Agent` tool = **kẽ CÒN-LẠI** không gate được từ đây |
| **checkpoint** (inform) | 👤 em main | BÁO `{số agent · vai · task}` @inform set `args.checkpointApproved=true` fan-out NGAY (marker-ON=consent; anh interrupt nếu sai KHÔNG chờ confirm từng lần) |
| **P2** execute | Workflow `hmw` | fan-out agent: **memory-pack injected** qua `args` + `agentType` + schema. DEFAULT read/analyze; write = file-disjoint. **H8 all-inherit** (S66): role-có-frontmatter inherit top-tier lead · per-task `tier:'opus'` escape-hatch (`tier:'fable'` CHỈ trong lượt lệnh engine-đắt anh H21 S110) |
| **P3** harvest | 👤 em main (single-writer) | **NGAY sau P2** VERIFY delta + APPEND-only vào MEMORY.md **mọi agent tham gia** (B3) |
| **P4** final | sub quality (full memory) | reviewer PASS/FAIL · cicd-monitor drift · investigator verify · implementer/test scope return delta |
| **→** | 👤 em main | synthesize + **git-diff** + **chunk-count check** + commit (anh OK) |
## 🧠 KỶ LUẬT KÝ ỨC (cốt lõi — M1..M5 + R1)
- **B1 (M1) ức:** agent vai X memory-pack **slice của đúng sub X** (qua `args`; script KHÔNG đọc file lead đọc `.claude/agent-memory/X/MEMORY.md` @P0 rồi bơm @P2). KHÔNG full memory.
- **B2 (M4) đúng chỗ + harvest-LIỀN:** delta vai X `.claude/agent-memory/X/MEMORY.md`. Harvest NGAY sau MỖI workflow (KHÔNG gom cuối session) memory mọi agent fresh TRƯỚC lần spawn kế. Tốc-độ KHÔNG override B3.
- **B3 (M3) KHÔNG ghi đè nếu chưa kiểm tra:** em main = **single-writer**, VERIFY delta **APPEND-only**; KHÔNG overwrite/sửa/xóa entry trừ khi verified; delta nghi ngờ **pending-verify** (không nhập). *(Generalize: memory cũ = tài sản.)*
- **R1 return contract:** mỗi agent return `findings` + `memoryDelta{task,verdict,learned,surprise}` (bắt buộc) + `checklistEvidence` (tùy). Agent **CHỈ return** KHÔNG tự ghi ức kênh nào.
- **M5 prereq (verify-ONLY, KHÔNG re-author):** `store_memory` đã strip khỏi MỌI sub (broadcast `Memory-store-memory-strip-global`, applied S47) kênh RAG-write mechanized-blocked. Re-verify intact: `grep store_memory .claude/agents/*.md` **0** dòng `tools:`.
### 🔴 Enforcement THẬT (G-015 — KHÔNG overclaim)
- **Mechanized** = CHỈ `store_memory` gỡ khỏi allowlist (tool RAG-write đó **không-gọi-được**). KHÔNG = agent "read-only".
- *"KHÔNG ghi file MEMORY.md"* = **prompt-rule, CHƯA mechanized** sub vẫn giữ `Bash` (+ `Write/Edit` vai write) = kênh ghi MỞ (Bash ghi file bất kỳ / curl thẳng Qdrant `:6333`).
- **Containment thật = defense-in-depth:** `git diff` post-P2 (bắt file-write) + **chunk-count Qdrant pre/post-P2** (bắt RAG-write). Lỗ residual (ghi ngoài-repo / Qdrant net-zero-delta) sandbox / strip-`Bash` khỏi vai read-only = **defer** (Bash cần cho audit).
**Guards:** S1 scope-repo-mình · S2 checkpoint-throw (`hmw.js` GIỮ anti-accidental) · S3 sub-KHÔNG-spawn-sub · B3 + harvest-liền · git-diff + chunk-count post-P2 · same-model · số-task-thoải-mái + spawn-đúng-vai · KHÔNG bỏ P3.