@damphuquy/agent-init 1.4.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,56 +1,113 @@
1
1
  # Tiêu Chuẩn Kiểm Thử & Chiến Lược Khung Thử Nghiệm (Testing Context)
2
2
 
3
- <testing_context version="1.0">
3
+ <testing_context version="2.0">
4
4
 
5
5
  <overview>
6
- Hướng dẫn hiệu chỉnh kim tự tháp kiểm thử, chính sách cách ly, quy ước mock và khung kiểm tra tự động xuyên suốt hệ thống.
6
+ Hướng dẫn hiệu chỉnh kim tự tháp kiểm thử, chính sách cách ly, quy ước mock, vệ sinh fixture dữ liệu và khung kiểm tra tự động xuyên suốt hệ thống.
7
7
  </overview>
8
8
 
9
- ## 1. Kim Tự Tháp Kiểm Thử & Phân Loại (Test Pyramid & Classification)
9
+ ---
10
+
11
+ ## 1. Kim Tự Tháp Kiểm Thử & Phân Loại Tầng (Test Pyramid & Classification)
12
+
10
13
  <test_pyramid>
11
14
  <layer name="Unit Tests (Kiểm thử đơn vị)" path="tests/unit/">
12
- - Phạm vi: Logic nghiệp vụ thuần túy, domain models, hàm tiện ích, phân nhánh trường hợp biên.
13
- - Tốc độ thực thi: Rất nhanh (< 50ms mỗi test), không I/O mạng / đĩa / ngoại vi.
14
- - Chính sách mock: Mock toàn bộ ranh giới I/O, client bên ngoàigiao diện cổng (port interfaces).
15
+ - **Phạm vi:** Logic nghiệp vụ thuần túy, mô hình domain, hàm tiện ích, rẽ nhánh trường hợp biên.
16
+ - **Tốc độ & Ràng buộc:** Cực nhanh (< 50ms mỗi test). Không gọi mạng, không đọc/ghi đĩa I/O, không kết nối database thật.
17
+ - **Chính sách Mock:** Mock toàn bộ giao diện cổng (port interfaces), client ngoại viranh giới I/O.
15
18
  </layer>
16
19
 
17
20
  <layer name="Integration Tests (Kiểm thử tích hợp)" path="tests/integration/">
18
- - Phạm vi: Lưu trữ cơ sở dữ liệu, adapter gọi API bên ngoài, cấu hình framework.
19
- - Mức độ cách ly: Test containers tạm thời (ví dụ: Testcontainers) hoặc database test cách ly riêng cho từng suite.
20
- - Dọn dẹp (Teardown): Phải đảm bảo không rỉ dữ liệu hoặc trạng thái giữa các lần chạy test.
21
+ - **Phạm vi:** Adapter lưu trữ repository, truy vấn cơ sở dữ liệu, file migration, wrapper gọi HTTP client, cấu hình framework.
22
+ - **Cách ly:** Test containers tạm thời (ví dụ: Testcontainers), in-memory database, hoặc schema cách ly riêng cho mỗi worker chạy test.
23
+ - **Dọn dẹp (Teardown):** Bắt buộc phải đảm bảo dọn dẹp dữ liệu 100%, không để rò rỉ trạng thái giữa các lần chạy.
21
24
  </layer>
22
25
 
23
26
  <layer name="End-to-End Tests (Kiểm thử đầu-cuối)" path="tests/e2e/">
24
- - Phạm vi: Các luồng trải nghiệm người dùng trọng yếu, toàn bộ vòng đời HTTP/gRPC API, regression smoke tests.
25
- - Kiểm chứng: Xác thực tính toàn vẹn hợp đồng đầu-cuối xuyên suốt các subsystem.
27
+ - **Phạm vi:** Các luồng trải nghiệm người dùng trọng yếu, toàn bộ vòng đời API công khai, luồng xác thực auth hoàn chỉnh, regression smoke tests.
28
+ - **Kiểm chứng:** Xác thực tính toàn vẹn hợp đồng đầu-cuối xuyên suốt toàn bộ hệ thống.
26
29
  </layer>
27
30
  </test_pyramid>
28
31
 
29
- ## 2. Chính Sách Khung Kiểm Thử (Test Harness Policies)
30
- <test_policies>
31
- <policy name="Determinism (Tính tiền định)">
32
- Tuyệt đối không có test chập chờn (flaky tests). Test không được phụ thuộc vào thời gian thực tế của đồng hồ hệ thống (sử dụng frozen clock hoặc fake timer) hay thứ tự thực thi ngẫu nhiên.
33
- </policy>
32
+ ---
33
+
34
+ ## 2. Ranh Giới Mocking & Các Phản Mẫu (Mocking Boundaries)
35
+
36
+ <mocking_boundaries>
37
+ <rule id="mock_at_architectural_boundary">
38
+ **Mock tại ranh giới kiến trúc, không bao giờ mock ở lõi.** Chỉ mock hạ tầng bên ngoài: HTTP API bên thứ ba, message broker, dịch vụ email, hoặc đồng hồ hệ thống.
39
+ </rule>
40
+
41
+ <rule id="do_not_mock_domain_or_sut">
42
+ Tuyệt đối không mock Hệ thống đang được kiểm thử (System Under Test - SUT) hoặc các thực thể domain / value objects thuần túy. Nếu một thực thể domain khó khởi tạo nếu thiếu mock, thiết kế đó đang bị thắt chặt và cần được tái cấu trúc (refactor).
43
+ </rule>
44
+
45
+ <rule id="verify_mock_interactions_sparingly">
46
+ Ưu tiên khẳng định dựa trên giá trị trả về và thay đổi trạng thái quan sát được hơn là kiểm tra số lần gọi hàm nội bộ (`toHaveBeenCalledTimes`), tránh việc gắn chặt test vào chi tiết triển khai ngầm.
47
+ </rule>
48
+ </mocking_boundaries>
49
+
50
+ ---
51
+
52
+ ## 3. Vệ Sinh Fixture Kiểm Thử & Data Factory (Fixture Hygiene)
53
+
54
+ <fixture_hygiene>
55
+ <rule id="data_factories_over_preseeded_db">
56
+ Sử dụng test factories (hoặc builder functions) rõ ràng với giá trị mặc định hợp lý thay vì phụ thuộc vào các file dump SQL seed tĩnh dùng chung dễ vỡ.
57
+ </rule>
58
+
59
+ <rule id="no_shared_mutable_fixtures">
60
+ Mỗi bài test bắt buộc phải tự khởi tạo dữ liệu của riêng mình. Tuyệt đối không chia sẻ trạng thái biến đổi hoặc biến test toàn cục giữa các bài test.
61
+ </rule>
62
+
63
+ <rule id="deterministic_teardown">
64
+ Luôn dọn sạch bản ghi database, tệp tạm thời hoặc đăng ký mock trong các hook `afterEach` / `teardown` để ngăn chặn lỗi dây chuyền sang các bài test khác.
65
+ </rule>
66
+ </fixture_hygiene>
67
+
68
+ ---
69
+
70
+ ## 4. Tính Tiền Định & Không Chấp Nhận Test Chập Chờn (Determinism)
71
+
72
+ <determinism>
73
+ <rule id="frozen_clock">
74
+ Tuyệt đối không sử dụng đồng hồ thực tế của hệ thống (`Date.now()`, `datetime.now()`) trong các khẳng định nhạy cảm về thời gian. Sử dụng frozen clock hoặc fake timer để đảm bảo kết quả tái lập tuyệt đối.
75
+ </rule>
76
+
77
+ <rule id="order_independence">
78
+ Các bài test bắt buộc phải chạy pass khi chạy riêng lẻ hoặc chạy theo thứ tự ngẫu nhiên (`--randomize`). Không bao giờ phụ thuộc vào việc bài test này phải chạy trước bài test kia.
79
+ </rule>
80
+
81
+ <rule id="no_arbitrary_sleeps">
82
+ Tuyệt đối không dùng lệnh chờ tùy tiện `sleep(1000)` trong test bất đồng bộ. Sử dụng helper kiểm tra định kỳ có timeout (`waitFor`, `eventually`) để hoàn thành ngay khi điều kiện kỳ vọng được thỏa mãn.
83
+ </rule>
84
+ </determinism>
85
+
86
+ ---
87
+
88
+ ## 5. Độ Chính Xác Của Khẳng Định (Assertion Precision)
89
+
90
+ <assertion_precision>
91
+ <rule id="exact_assertions">
92
+ Tránh các khẳng định mơ hồ (ví dụ: `expect(res).toBeTruthy()`). Luôn khẳng định cấu trúc giá trị chính xác, mã trạng thái HTTP và mã lỗi cụ thể.
93
+ </rule>
34
94
 
35
- <policy name="Clean State (Trạng thái sạch)">
36
- Mỗi bài test phải tự khởi tạo dữ liệu seed hoặc fixtures riêng của mình. Không bao giờ giả định sẵn các dòng dữ liệu trong database.
37
- </policy>
95
+ <rule id="actionable_failure_messages">
96
+ Khi viết assertion tùy biến, cung cấp thông báo lỗi ràng chỉ ra dữ liệu đầu vào điều kiện bất biến nào đã bị vi phạm.
97
+ </rule>
98
+ </assertion_precision>
38
99
 
39
- <policy name="Assertion Precision (Độ chính xác của khẳng định)">
40
- Tránh các khẳng định mơ hồ (ví dụ: `expect(res).toBeTruthy()`). Luôn khẳng định cấu trúc chính xác kỳ vọng, mã trạng thái HTTP (status code) và loại lỗi.
41
- </policy>
100
+ ---
42
101
 
43
- <policy name="Fast Feedback (Phản hồi nhanh)">
44
- Toàn bộ bộ unit test phải hoàn thành trong vòng dưới 30 giây. Các bộ integration test chậm phải được phân vùng rõ ràng.
45
- </policy>
46
- </test_policies>
102
+ ## 6. Ánh Xạ Lệnh Kiểm Tra (Verification Commands Mapping)
47
103
 
48
- ## 3. Ánh Xạ Lệnh Kiểm Tra (Verification Commands Mapping)
49
104
  <verification_commands>
50
105
  <!-- Giữ đồng bộ với <validation_commands> trong AGENTS.md -->
51
- <command type="unit">Chạy bộ kiểm thử unit test nhanh</command>
52
- <command type="integration">Chạy kiểm thử tích hợp integration/e2e</command>
53
- <command type="coverage">Chạy kiểm tra độ bao phủ test coverage</command>
106
+ <command type="unit">Chạy bộ kiểm thử unit test nhanh (< 30 giây toàn bộ)</command>
107
+ <command type="integration">Chạy kiểm thử tích hợp integration/e2e cách ly</command>
108
+ <command type="typecheck">Chạy kiểm tra kiểu tĩnh (0 lỗi, strict mode)</command>
109
+ <command type="lint">Chạy linter và kiểm tra format (0 cảnh báo)</command>
110
+ <command type="coverage">Chạy báo cáo độ bao phủ test coverage và ngưỡng tối thiểu</command>
54
111
  </verification_commands>
55
112
 
56
113
  </testing_context>
@@ -1,28 +1,117 @@
1
- # Tiêu Chuẩn Triển Khai & Khung Kiểm Thử (Implementation Standards)
1
+ # Tiêu Chuẩn Triển Khai & Khung Kỹ Thuật (Implementation Standards)
2
2
 
3
- <implementation_standards version="1.0">
3
+ <implementation_standards version="2.0">
4
4
 
5
5
  <description>
6
- Quy chuẩn chất lượng kỹ thuật, an toàn kiểu dữ liệu (type safety)kiểm thử cho codebase này.
6
+ Quy chuẩn chất lượng kỹ thuật, an toàn kiểu dữ liệu, kiến trúc sạch thực thi phòng thủ cho codebase. Dùng chung cho mọi dự án.
7
7
  </description>
8
8
 
9
- ## 1. An Toàn Kiểu Dữ Liệu & Vệ Sinh Code (Type Safety & Code Hygiene)
10
- <conventions>
9
+ ---
10
+
11
+ ## 1. An Toàn Kiểu Dữ Liệu & Phân Tích Tĩnh (Type Safety & Static Analysis)
12
+
13
+ <type_safety>
11
14
  <rule id="strict_typing">
12
- Toàn bộ các hàm, phương thức và thuộc tính class bắt buộc phải có chú thích kiểu dữ liệu (type annotations) rõ ràng. Sử dụng union types hiện đại (`int | None` hoặc `string | null`) tránh dùng `Any`/`any` không định kiểu trừ khi giao tiếp với payload bên ngoài thô.
15
+ Toàn bộ các hàm, phương thức và thuộc tính class bắt buộc phải có chú thích kiểu dữ liệu (type annotations) rõ ràng. Sử dụng union types hiện đại (`int | None` hoặc `string | null`). Tránh dùng `Any`/`any` không định kiểu trừ khi giải dữ liệu đầu vào thô chưa xác thực tại cổng biên.
16
+ </rule>
17
+
18
+ <rule id="explicit_return_types">
19
+ Luôn khai báo kiểu trả về tường minh cho các hàm và phương thức public để áp đặt hợp đồng lúc biên dịch (compile-time) và ngăn ngừa hiện tượng suy luận kiểu bị mở rộng vô ý.
20
+ </rule>
21
+
22
+ <rule id="no_suppression">
23
+ Tuyệt đối không tắt lỗi linter, formatter hoặc type-checker bằng comment bỏ qua nội dòng (`# type: ignore`, `eslint-disable`, `@SuppressWarnings`) để vượt qua cổng kiểm tra giả tạo. Phải xử lý triệt để nguyên nhân gốc rễ.
13
24
  </rule>
25
+ </type_safety>
26
+
27
+ ---
28
+
29
+ ## 2. Kiến Trúc Sạch & Độ Thuần Khiết Domain (Clean Architecture & Domain Purity)
30
+
31
+ <clean_architecture>
32
+ <rule id="dependency_rule">
33
+ Chiều phụ thuộc (dependency) chỉ được phép hướng vào lõi Domain bên trong. Các tầng domain bên trong tuyệt đối không import hay phụ thuộc vào framework hạ tầng, database hoặc UI bên ngoài.
34
+ </rule>
35
+
14
36
  <rule id="domain_purity">
15
- nguồn trong các tầng domain phải thuần khiết với 0 phụ thuộc vào hạ tầng bên ngoài (zero external infrastructure dependencies).
37
+ Logic nghiệp vụ cốt lõi, thực thể domain và value objects phải thuần khiết 100% với 0 tác dụng phụ (zero side-effects), không thực hiện I/O tệp hệ thống và không gọi mạng.
16
38
  </rule>
17
- <rule id="immutability">
18
- Ưu tiên các mô hình bất biến (immutable models) cho các sự kiện domain (domain events), value objects và DTOs.
39
+
40
+ <rule id="ports_and_adapters">
41
+ Định nghĩa giao diện trừu tượng (ports) trong tầng application/domain cho lưu trữ dữ liệu, API bên ngoài và nhắn tin. Triển khai các driver cụ thể (adapters) độc quyền trong các package hạ tầng (infrastructure).
42
+ </rule>
43
+
44
+ <rule id="no_premature_abstraction">
45
+ Không tự ý đưa vào các lớp trừu tượng mang tính suy diễn, dynamic factory hoặc lớp trung gian bắc cầu không cần thiết cho các tiện ích đơn chức năng đơn giản.
46
+ </rule>
47
+ </clean_architecture>
48
+
49
+ ---
50
+
51
+ ## 3. Xử Lý Lỗi & Nguyên Tắc Thất Bại Sớm (Error Handling & Fail-Fast)
52
+
53
+ <error_handling>
54
+ <rule id="fail_fast_at_boundaries">
55
+ Kiểm tra hợp lệ toàn bộ tham số, payload và biến môi trường ngay tại điểm vào của hệ thống. Từ chối dữ liệu sai lệch ngay lập tức trước khi gọi vào logic nghiệp vụ.
56
+ </rule>
57
+
58
+ <rule id="no_silent_swallowing">
59
+ Tuyệt đối không sử dụng `catch {}` rỗng, `except: pass` hoặc bắt ngoại lệ mà không ghi log. Mọi ngoại lệ bị bắt phải được xử lý, chuyển đổi thành lỗi domain có định kiểu hoặc lan truyền (propagate) sạch sẽ.
60
+ </rule>
61
+
62
+ <rule id="typed_domain_errors">
63
+ Tạo các class lỗi domain rõ ràng kèm mã lỗi đọc được bằng máy (ví dụ: `ResourceNotFoundError`, `ValidationError`, `ConcurrencyConflictError`) thay vì ném ra các exception chung chung.
19
64
  </rule>
20
- </conventions>
65
+ </error_handling>
21
66
 
22
- ## 2. Kiến Trúc Kiểm Thử (Test Architecture)
23
- <test_structure>
24
- - `tests/unit/`: Các bài test nhanh, cách ly cho domain models, logic cốt lõi và mock adapters.
25
- - `tests/integration/`: Các bài test luồng đầu-cuối với dịch vụ kiểm thử hoặc database nội bộ.
26
- </test_structure>
67
+ ---
68
+
69
+ ## 4. Bất Biến & An Toàn Khi Chạy Đồng Thời (Immutability & Concurrency Safety)
70
+
71
+ <concurrency_and_immutability>
72
+ <rule id="immutable_data_structures">
73
+ Ưu tiên các cấu trúc dữ liệu bất biến (`dataclass(frozen=True)`, `readonly` interface, hoặc `Readonly<T>`) cho các sự kiện domain, cấu hình và DTO.
74
+ </rule>
75
+
76
+ <rule id="no_shared_mutable_state">
77
+ Tránh sử dụng biến toàn cục có thể thay đổi (mutable globals), cache trạng thái cấp module hoặc singleton có trường biến đổi. Truyền dependency rõ ràng thông qua hàm khởi tạo (Dependency Injection).
78
+ </rule>
79
+
80
+ <rule id="safe_async_lifecycle">
81
+ Luôn xử lý dọn dẹp và từ chối lỗi bất đồng bộ (async error rejection/cancellation) cẩn thận. Thiết lập timeout rõ ràng cho mọi lệnh gọi mạng hoặc truy vấn cơ sở dữ liệu.
82
+ </rule>
83
+ </concurrency_and_immutability>
84
+
85
+ ---
86
+
87
+ ## 5. Giám Sát & Vệ Sinh Ghi Log (Observability & Logging Hygiene)
88
+
89
+ <observability_hygiene>
90
+ <rule id="structured_logging">
91
+ Sử dụng ghi log có cấu trúc (structured logging) kèm ngữ cảnh dạng key-value (`task_id`, `user_id`, `component`) thay vì nối chuỗi văn bản thuần túy.
92
+ </rule>
93
+
94
+ <rule id="no_credential_leakage">
95
+ Không bao giờ ghi log dữ liệu nhạy cảm: mật khẩu, tokens, API keys, cookies hoặc thông tin nhận dạng cá nhân (PII).
96
+ </rule>
97
+
98
+ <rule id="clean_production_diff">
99
+ Xóa sạch toàn bộ debug log tạm thời (`console.log`, `print()`, `debugger`, `dump()`) trước khi đề nghị ký duyệt Gate G3.
100
+ </rule>
101
+ </observability_hygiene>
102
+
103
+ ---
104
+
105
+ ## 6. Quản Lý Tài Nguyên Phòng Thủ & Dọn Dẹp (Resource Management & Teardown)
106
+
107
+ <resource_management>
108
+ <rule id="deterministic_teardown">
109
+ Luôn quản lý con trỏ tệp (file handles), kết nối mạng socket và transaction database bằng các cấu trúc giải phóng tiền định (`try...finally`, Python `with`, TypeScript `using`, hoặc RAII nguyên bản của ngôn ngữ).
110
+ </rule>
111
+
112
+ <rule id="isolated_test_state">
113
+ Mỗi fixture kiểm thử phải tự tạo và tự dọn sạch trạng thái tạm thời của mình. Không để sót lại dữ liệu rác sau khi chạy xong test.
114
+ </rule>
115
+ </resource_management>
27
116
 
28
117
  </implementation_standards>
@@ -1,24 +1,101 @@
1
- # Giao Thức Phân Công & Điều Phối Subagent (Orchestration Protocol)
1
+ # Giao Thức Phân Công & Điều Phối Subagent (Subagent Orchestration Protocol)
2
2
 
3
- <orchestration_protocol version="1.0">
3
+ <orchestration_protocol version="2.0">
4
4
 
5
5
  <description>
6
- Hướng dẫn phân công nhiệm vụ, cách ly và phối hợp subagent trong các task phức tạp.
6
+ Hướng dẫn kỹ thuật phân công nhiệm vụ, lập phạm vi và phối hợp subagent trong các tác vụ phức tạp nhiều giai đoạn. Dùng chung cho mọi dự án.
7
7
  </description>
8
8
 
9
- ## 1. Nguyên Tắc Phân Công (Delegation Principles)
10
- <delegation_rules>
11
- <rule id="explicit_scope">
12
- Luôn chỉ định danh sách file chính xác, chữ ký hàm (function signatures) và định dạng đầu ra có cấu trúc kỳ vọng.
9
+ ---
10
+
11
+ ## 1. Tiêu Chí Phân Công & Phân Luồng Tác Vụ (Delegation Criteria)
12
+
13
+ <delegation_criteria>
14
+ Subagent chỉ nên được khởi tạo có chủ đích cho các tác vụ con có ranh giới rõ ràng, đòn bẩy cao. TUYỆT ĐỐI KHÔNG khởi tạo subagent cho các bước thực thi nhỏ nhặt, tầm thường.
15
+
16
+ ### Khi nào NÊN ủy quyền cho Subagent:
17
+ - **Khảo sát chuyên sâu độc lập (Research Spikes):** Tìm hiểu thư viện lạ, kiểm toán hệ thống cũ (legacy), hoặc đọc tài liệu mà không làm rác cửa sổ ngữ cảnh của Agent cha.
18
+ - **Kiểm toán chất lượng chuyên biệt:** Kiểm toán lỗ hổng bảo mật độc lập, đánh giá khả năng tiếp cận (accessibility - a11y), hoặc rà soát lint/format nghiêm ngặt.
19
+ - **Viết kiểm thử trực giao độc lập:** Viết các bài kiểm thử đơn vị độc lập hoặc fixtures khung test cho một hợp đồng giao diện đã được đóng băng.
20
+ - **Thực thi các lát cắt song song, không chồng chéo:** Triển khai các thành phần độc lập tác động lên các ranh giới tệp riêng biệt hoàn toàn.
21
+
22
+ ### Khi nào Agent cha BẮT BUỘC tự thực hiện (KHÔNG phân công):
23
+ - **Đánh đổi & Ra quyết định kiến trúc:** Soạn thảo các phương án trong `decision.md` và trình ký Gate 1.
24
+ - **Hợp đồng Task Master & Lập kế hoạch:** Định nghĩa `task.md`, hợp đồng lát cắt trong `plan.md` và trình ký Gate 2.
25
+ - **Cổng chất lượng & Phê duyệt của người dùng:** Thực hiện kiểm toán Gate 3 và sinh bản bàn giao cuối cùng `handoff.md`.
26
+ - **Tương tác làm rõ với người dùng:** Bất kỳ trao đổi nào cần sự định hướng hoặc phê duyệt trực tiếp từ con người.
27
+ </delegation_criteria>
28
+
29
+ ---
30
+
31
+ ## 2. Ranh Giới Ngữ Cảnh & Quy Tắc Khoanh Vùng (Context Containment)
32
+
33
+ <context_containment>
34
+ <rule id="explicit_file_manifest">
35
+ Luôn cung cấp cho subagent danh sách đường dẫn tệp cụ thể cần đọc hoặc chỉnh sửa. Tuyệt đối không ra lệnh mơ hồ như "hãy khám phá dự án" hay "quét toàn bộ codebase".
36
+ </rule>
37
+
38
+ <rule id="port_and_interface_focus">
39
+ Giới hạn dữ liệu đầu vào của subagent trong phạm vi các giao diện cổng (port interfaces), thực thể domain và bộ test đi kèm. Tránh đưa các chi tiết hạ tầng không cần thiết vào prompt của subagent.
40
+ </rule>
41
+
42
+ <rule id="structured_output_contract">
43
+ Luôn yêu cầu định dạng đầu ra có cấu trúc từ subagent (ví dụ: unified git diff, danh sách phát hiện phân loại theo Confirmed/Observed/Hypothesized, hoặc bảng markdown).
44
+ </rule>
45
+ </context_containment>
46
+
47
+ ---
48
+
49
+ ## 3. Đồng Thời, Cách Ly & Quyền Ghi File (Concurrency & Isolation)
50
+
51
+ <concurrency_and_isolation>
52
+ <rule id="zero_write_collision">
53
+ Nhiều subagent TUYỆT ĐỐI KHÔNG BAO GIỜ được cấp quyền ghi vào cùng một file hoặc cùng một bảng cơ sở dữ liệu đồng thời. Sửa đè file gây ra xung đột merge và lỗi hồi quy âm thầm.
54
+ </rule>
55
+
56
+ <rule id="read_only_by_default">
57
+ Mặc định subagent ở chế độ CHỈ ĐỌC (read-only) bất cứ khi nào có thể (khảo sát, đọc code, kiểm toán). Chỉ cấp quyền ghi khi các file mục tiêu hoàn toàn độc lập và thuộc quyền quản lý của riêng subagent đó.
58
+ </rule>
59
+
60
+ <rule id="workspace_isolation">
61
+ Nếu môi trường hỗ trợ không gian làm việc cách ly (branch hoặc worktree mode), hãy sử dụng để thử nghiệm các spike thăm dò nhằm bảo vệ cây làm việc chính luôn sạch sẽ.
62
+ </rule>
63
+ </concurrency_and_isolation>
64
+
65
+ ---
66
+
67
+ ## 4. Đồng Bộ Trạng Thái & Tích Hợp Lại Về Agent Cha (State Synchronization)
68
+
69
+ <state_synchronization>
70
+ <rule id="parent_owns_master_state">
71
+ Subagent TUYỆT ĐỐI KHÔNG trực tiếp chỉnh sửa các artifact quản lý của Agent cha (`task.md`, `state.md`, `review.md`). Chỉ Agent cha mới có thẩm quyền tổng hợp kết quả của subagent vào các tệp trạng thái master.
72
+ </rule>
73
+
74
+ <rule id="verification_before_acceptance">
75
+ Khi subagent trả về mã nguồn đã sửa đổi hoặc kết quả khảo sát, Agent cha phải trực tiếp kiểm tra git diff và chạy lệnh verifier của lát cắt tương ứng trước khi chấp nhận kết quả.
76
+ </rule>
77
+
78
+ <rule id="evidence_crystallization">
79
+ Trích xuất các bằng chứng đã xác minh từ báo cáo của subagent và ghi vào `state.md > <verification_evidence>`. Loại bỏ các log hội thoại tạm thời của subagent để bảo vệ sự tinh gọn của ngữ cảnh.
80
+ </rule>
81
+ </state_synchronization>
82
+
83
+ ---
84
+
85
+ ## 5. Điều Phối Phản Ứng, Giới Hạn & Phục Hồi Lỗi (Coordination & Recovery)
86
+
87
+ <coordination_and_recovery>
88
+ <rule id="no_polling_loops">
89
+ Tuyệt đối không viết vòng lặp kiểm tra trạng thái (`while true; sleep 5; check_status`) để chờ subagent. Dựa vào cơ chế đánh thức qua tin nhắn phản ứng (reactive message wakeup) của hệ thống khi subagent hoàn thành.
13
90
  </rule>
14
91
 
15
- <rule id="context_containment">
16
- Không cấp quyền truy cập repository không giới hạn; giới hạn ngữ cảnh của subagent trong phạm vi các bộ test suite liên quanhợp đồng giao diện cổng.
92
+ <rule id="retry_budget_enforcement">
93
+ Nếu subagent gặp lỗi công cụ hoặc thất bại lặp đi lặp lại, áp dụng nghiêm ngặt ngân sách thử lại tối đa 3 lần. Nếu cạn ngân sách, ghi dấu vết lỗi vào `state.md > <failure_memory>` dừng lại báo cáo người dùng.
17
94
  </rule>
18
95
 
19
- <rule id="no_polling">
20
- Dựa vào chế đánh thức qua tin nhắn phản ứng (reactive message wakeup) của hệ thống khi subagent hoàn thành việc thực thi.
96
+ <rule id="teardown_and_cleanup">
97
+ Giải phóng sạch sẽ các subagent nhàn rỗi hoặc bị lỗi. Đảm bảo toàn bộ tệp nháp tạm thời (scratch) hoặc branch thử nghiệm do subagent tạo ra được dọn dẹp trước khi hoàn thành lát cắt.
21
98
  </rule>
22
- </delegation_rules>
99
+ </coordination_and_recovery>
23
100
 
24
101
  </orchestration_protocol>