All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m43s
Closeout 4 mục OUTWARD của wave S141-S142 (anh gật @S143): - adap-report 7/7 thư, đủ 5 trường REPORT-FORMAT LOCK, evidence đo thật - email hub báo-nấc (sha 6c94873f72e0, selftest_verify exit 0, log _index cùng lượt) - STAGE-2: 7 thư -> inbox/ai_infra/, _index 0 pending, cross-check 7/7 - squash K=8 wal: -> commit chốt Ngoài wave: agents/README skill-matrix thiếu 2 row H24 (drift S121) -> 15/17 thành 17/17. Nấc cao nhất khai được = executed-file/verified-pending-restart (trio CHƯA spawn). 2 phát hiện khai thẳng theo G-015 (chi tiết trong report + email): - whitelist `tools:` KHÔNG chặn ghi ở runtime: 6 vai read-only bị append Write+Edit - pull-lag do "watch broadcasts/inbox" canh nhầm chỗ TICK H24: counter 16->17 (S143), 3-điều-kiện OK-reachable, không fail-loud. Detector TOTAL 46 == baseline 46, 0 flag mới. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4.8 KiB
4.8 KiB
description, argument-hint
| description | argument-hint |
|---|---|
| Gửi email cross-project qua broadcasts/ (Harness 3 §N) cho SOLUTION_ERP (self=se). Ghi outbox/<to>/ repo MÌNH. §J2. Adopt AI_INFRA Harness 3 (2026-06-07). | <to_project> [category] [intent...] |
/send-email <to_project> — gửi email cross-project (Harness 3 · self=se)
🔴 Kênh DUY NHẤT (§N) · chỉ ghi repo MÌNH (§J2). self=
se. Detail: AI_INFRAbroadcasts/README.md§Harness 3 (pullcross_project_search).
Tham số
$1= to_project (BẮT BUỘC) ∈ 6 project ≠se(self/unknown → ABORT).$2= category ∈Governance·Agent·Memory·Rag·Mcp·Skill·Cmd·Coord(defaultCoord). ✅ infra-CC ACTIVE:category≠Coord+to≠ai_infra→ auto bản-2 vàooutbox/ai_infra/(bước 6b) để AI_INFRA giám sát infra-comms.
Project-path map (7 project — se dùng 6 ≠ self · path-coupling, web-migration sẽ bỏ)
| id | broadcasts root |
|---|---|
| ai_infra | D:\Dropbox\CONG_VIEC\AI_INFRA\broadcasts |
| vipix | D:\Dropbox\CONG_VIEC\VIPIX_MULTISITE_PROJECT\broadcasts |
| se | D:\Dropbox\CONG_VIEC\SOLUTION\SOLUTION_ERP\broadcasts (← self) |
| dyd | D:\Dropbox\CONG_VIEC\DAI_Y_DUOC\DH_Y_DUOC_SOURCECODE\DH_Y_DUOC\broadcasts |
| namgroup | D:\Dropbox\CONG_VIEC\NAMGROUP\SOURCECODE_CÔNG_TY\NAMGROUP\broadcasts |
| ashico | D:\Dropbox\CONG_VIEC\ASHICO\SOURCE_CODE_WEBSITE_ASHICO\broadcasts |
| bvaau | D:\Dropbox\CONG_VIEC\BENHVIEN_A_AU\SOURCE_CODDE\broadcasts |
Quy trình
- Validate
$1∈ 6 others (≠se/unknown) → else ABORT. - Soạn body markdown theo intent.
- id =
<YYYY-MM-DD>-se-to-<to>-<slug>(unique). - content_sha256 =
SHA256(body)canonical (strip ALL\r+ strip 1 leading newline — Y HỆT receive + khớpscripts/stamp_verify.pybản port LOCAL — KHÔNG trỏ hub-path nữa):$txt=[Text.Encoding]::UTF8.GetString([IO.File]::ReadAllBytes($f)) -replace "^\uFEFF",""; (($txt -replace "\r","") -split "(?m)^---\s*$",3)[2] -replace "^\n",""→ SHA256-UTF8. 🔴 CẤMGet-Content -Rawcho hash (PS 5.1 đọc UTF-8-no-BOM bằng ANSI → hash sai — S125 false-tamper). - Frontmatter:
id · from: se · to: <to> · category · type: broadcast|update|fix|report|request|coord · date · content_sha256 · nac: sent. - Ghi
broadcasts/outbox/<to>/<id>.md(Write tool, KHÔNG shell-write — chống mojibake). [chỉ repo MÌNH §J2] 6b. infra-CC (Harness-3 §N3) — NẾUcategory∈ {Governance·Agent·Memory·Rag·Mcp·Skill·Cmd} (≠Coord) VÀto≠ai_infra: ghi bản-2broadcasts/outbox/ai_infra/<id>-cc.md(Write tool — repo MÌNH = §J2-safe, KHÔNG ghi inbox ai_infra) — body +content_sha256Y HỆT primary; frontmatterid: <id>-cc · from: se · to: ai_infra · cc-of: <to> · category · type · date · content_sha256 · nac: sent. (Đã cóoutbox/ai_infra/.gitkeep.) → AI_INFRA pull qua/check-email se. 6c. 🔴 Selftest-stamp (H19-ack 2026-07-03 — chống sai-phương-pháp + sửa-sau-stamp): NGAY sau Write, recomputeSHA256(body-canonical)file vừa ghi (Y HỆT bước 4: split-frontmatter + strip-1-leading-newline + UTF8) → socontent_sha256frontmatter. Lệch → ABORT gửi + báo anh (KHÔNG log_index, KHÔNG relay). Khớp → tiếp. (Bài học: file2026-06-18-...harness-10...stamp bằng body KHÔNG-strip-newline → lệch canonical, AI_INFRA bắt; 12/13 file khác đúng. Bước này chẩn cả 2 lớp lỗi.)- 🔴 ƯU TIÊN chạy SCRIPT thay vì gõ tay:
python scripts/stamp_verify.py broadcasts/outbox/<to>/<id>.md— bản port LOCAL (hub-pathAI_INFRA/scripts/...chỉ còn là nguồn re-pull khi hub đổi §N canon). exit 0 = PASS → tiếp; exit 1 → đọc verdict:WRONG-METHOD= stamp sai phương-pháp (re-stamp canonical) ≠MISMATCH= nghi sửa-sau-stamp. Hai lớp lỗi này khác cách xử, đừng gộp. - Rút hash declared — CÙNG mẫu KHOAN-DUNG như
/check-email4(b):content_sha256:\s*"?([0-9a-fA-F]{8,64})"?(phủ có-ngoặc · không-ngoặc · rút-gọn ≥8-hex so bằng tiền-tố). 🔴 CẤM quote-strictcontent_sha256:\s*([0-9a-fA-F]+)— whiff dấu"⇒ rút rỗng ⇒ ABORT oan chính thư mình vừa ghi đúng (S141). Đầu-đọc gửi và đầu-đọc nhận PHẢI cùng một mẫu, lệch mẫu = hai bên cãi nhau về một file lành.
- 🔴 ƯU TIÊN chạy SCRIPT thay vì gõ tay:
- Log append
broadcasts/_index.md§OUTBOUND (+ 1 row tagccnếu có bản-2). - Báo. KHÔNG tự relay — bên nhận tự
/check-email se.
Luật
🔴 §N single-channel · 🔴 §J2 chỉ-ghi-repo-mình · from+to BẮT BUỘC · id unique · folder khớp to · infra-CC bản-2 (category≠Coord → outbox/ai_infra/, ghi repo MÌNH = §J2-safe). Outward content → reviewer-gate (no-overclaim G-015) trước relay.