Files
solution-erp/.claude/commands/check-email.md
pqhuy1987 e27d877172 [CLAUDE] Infra: adopt AI_INFRA Harness 1/2/3 — monitor subs (roster 8->10) + wave-folder isolation + email channel (S49)
Harness 1 (Self-observability): NEW tooling-auditor (H1 tooling/docs-freshness 4-faceted) + harvest-curator (H2 harvest-integrity 5-axis) INFORM-only monitor subs, TACH BIET per anh-mandate -> roster 8->10. Wire session-start Phase 2.1.1 RE-REPORT + session-end L.b 6->7-step (H2 5-axis GATE + H1 chot + B5 wave-gom). H3 plugin/skill = gop-vai doc, 0 new agent.

Harness 2 (wave-folder isolation): hmw.js WAVE-MODE (subMdPath + tool-aware writeGuard) + .gitignore wave-*/ + agent-teams/ (B6 git-check-ignore verified) + NEW workflows/README convention. Harness 3 (email channel): broadcasts/ (6+6 folder + 13 .gitkeep + _index + inbox/README, committed) + send/check-email cmd (self=se) + adap-apply base-path fix outbox/all/.

HMW-mode ON: recon fan-out 4 read-only agent -> em main single-writer WRITE -> reviewer PASS all 3. Containment: git-diff 1 benign self-MEMORY + chunk-count 2414=2414 (0 RAG-write). Nac executed-file, verified-runtime PENDING CLI restart. 3 adap-reports + session log. Test 181 unchanged (no product code). CI runs (hmw.js/.gitignore/.gitkeep not path-ignored) but no bundle/migration change.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 23:18:43 +07:00

1.8 KiB

description, argument-hint
description argument-hint
Nhận email cross-project (2-stage) qua broadcasts/ (Harness 3 §N) cho SOLUTION_ERP (self=se). Verify hash đối chứng. §J2. Adopt AI_INFRA Harness 3 (2026-06-07). <from_project | all>

/check-email <from_project> — nhận email cross-project (Harness 3 · self=se)

🔴 Kênh DUY NHẤT (§N) · pull-copy chỉ ghi repo MÌNH (§J2). self=se. Path map: xem send-email. Detail: AI_INFRA broadcasts/README.md §Harness 3.

Tham số

  • $1 = from_project (BẮT BUỘC) ∈ 6 others, hoặc all = quét cả 6.

Quy trình 2-STAGE (audit qua folder)

STAGE 1 — Nhận (đọc → inbox root, PENDING):

  1. Validate $1.
  2. READ <from>/broadcasts/outbox/se/*.md (message gửi cho se).
  3. Mỗi file CHƯA có trong inbox (so id): COPY VERBATIMbroadcasts/inbox/<id>.md (root = pending). [repo MÌNH §J2]
  4. Verify đối chứng: (a) whole-file Get-FileHash copy == nguồn (byte-identical = tuyến CHÍNH); (b) body recompute SHA256(body) == content_sha256, body canonical (($txt -split "(?m)^---\s*$",3)[2] -replace "^\r?\n",""). ✗ → flag tamper, KHÔNG move, báo anh.
  5. Log _index.md §INBOUND: received · id · <from> → se · status=pending · folder=(root) · sha256(12) · verify=✓.

STAGE 2 — Xử lý xong → archive (PROCESSED): 6. Sau khi xử lý → MOVE inbox/<id>.mdinbox/<from>/<id>.md. 7. Update _index.md: status=processed · folder=<from>.

Audit (anh)

ls broadcasts/inbox/*.md (root) = pending chưa xử lý (backlog hiện ngay) · inbox/<proj>/ = đã xử lý.

Luật

🔴 §N single-channel · 🔴 §J2 pull-copy chỉ-ghi-inbox-MÌNH (KHÔNG push repo bên kia) · KHÔNG sửa file copy (bằng chứng) · PHẢI committed · verify-hash trước move.