codex-harness-engineering 0.1.4 → 0.1.6

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.
Files changed (34) hide show
  1. package/AGENTS.md +18 -6
  2. package/LICENSE +21 -0
  3. package/README.md +69 -6
  4. package/docs/harness-engineering/implementation-playbook.md +232 -286
  5. package/docs/harness-engineering/index.md +7 -4
  6. package/docs/harness-engineering/research-note.md +294 -274
  7. package/docs/harness-engineering/sources.md +166 -72
  8. package/package.json +9 -4
  9. package/scripts/install-skills.mjs +73 -15
  10. package/scripts/publish.sh +2 -2
  11. package/scripts/verify-harness.mjs +61 -4
  12. package/skills/acceptance-contract/SKILL.md +39 -49
  13. package/skills/acceptance-contract/agents/openai.yaml +2 -2
  14. package/skills/cleanup-harness/SKILL.md +48 -59
  15. package/skills/cleanup-harness/agents/openai.yaml +2 -2
  16. package/skills/creator-harness/SKILL.md +79 -95
  17. package/skills/creator-harness/agents/openai.yaml +2 -2
  18. package/skills/creator-harness/references/harness-artifacts.md +63 -62
  19. package/skills/lessons-harness/SKILL.md +68 -0
  20. package/skills/lessons-harness/agents/openai.yaml +4 -0
  21. package/templates/harness/AGENTS.md +77 -0
  22. package/templates/harness/feature_list.json +16 -0
  23. package/templates/harness/init.sh +15 -0
  24. package/templates/harness/lessons.md +18 -0
  25. package/templates/harness/memory/README.md +22 -0
  26. package/templates/harness/progress.md +33 -0
  27. package/templates/harness/rotate-state.mjs +131 -0
  28. package/templates/harness/verify-state.mjs +117 -0
  29. package/templates/team/roles/evaluator.md +43 -0
  30. package/templates/team/roles/implementer.md +29 -0
  31. package/templates/team/roles/planner.md +28 -0
  32. package/templates/team/sprint-template.md +36 -0
  33. package/templates/team/verify-team.mjs +71 -0
  34. package/templates/team/workflow.md +62 -0
@@ -1,370 +1,316 @@
1
- # Playbook triển khai harness
1
+ # Harness Implementation Playbook
2
2
 
3
- Playbook này chuyển năm bài OpenAI/Anthropic/Google thành quy trình thiết kế harness
4
- cho repository phần mềm.
3
+ Playbook này chuyển white paper thành quy trình triển khai thực tế trong một
4
+ repository phần mềm.
5
5
 
6
- ## Giả định
6
+ ## Mục tiêu
7
7
 
8
- - Repositorynguồn sự thật vận hành.
9
- - Bắt đầu bằng harness nhỏ nhất làm thay đổi hành vi agent.
10
- - "Done" nghĩa là có bằng chứng kiểm chứng được.
11
- - Con người đặt mục tiêu, ràng buộc, và tiêu chí; agent thực thi trong môi
12
- trường có state, tool, feedback, và guardrail.
8
+ Mục tiêu không phải dựng một hệ thống agent phức tạp ngay từ đầu. Mục tiêu
9
+ tạo được baseline đủ nhỏ để:
13
10
 
14
- ## Cây quyết định
11
+ - session mới khởi động được;
12
+ - agent biết việc nào đang mở;
13
+ - trạng thái không bị mất giữa các session;
14
+ - verify command chặn done sớm;
15
+ - runtime có thể quan sát khi cần [S1], [S2], [S3], [S4], [S5].
15
16
 
16
- Áp dụng từ ít phức tạp đến nhiều phức tạp.
17
+ ## Nguyên tắc khởi đầu
17
18
 
18
- | Tín hiệu | Can thiệp tối thiểu | Nguồn |
19
- | --- | --- | --- |
20
- | Task nhỏ, test | Agent đơn lẻ + acceptance criteria + lệnh verify | [S3] |
21
- | Task vượt một context | Feature list, progress log, git history, `init.sh` | [S2] |
22
- | Agent không biết chạy app | Setup script idempotent + smoke test đầu session | [S2] |
23
- | Code pass nhưng hành vi runtime fail | Browser/API/log/metric/trace check | [S1], [S2] |
24
- | Agent tự đánh giá quá lạc quan | Evaluator riêng + feedback cụ thể | [S4] |
25
- | Prompt mơ hồ hoặc app nhiều luồng | Planner + sprint contract + generator/evaluator | [S4] |
26
- | Throughput tạo drift kiến trúc | Lint, structural test, CI rule, cleanup định kỳ | [S1] |
27
- | Ràng buộc quá phức tạp để code thủ công | AutoHarness (yêu cầu LLM sinh wrapper bọc thực thi tự động) | [S5] |
28
- | Hành vi agent drift/cần tối ưu hóa vết chạy | Trajectory evaluation + LLM-as-a-judge + Meta-Evaluation (VeRO) | [S5] |
19
+ 1. Bắt đầu bằng harness nhỏ nhất thể.
20
+ 2. Đưa state ra khỏi chat history.
21
+ 3. Chỉ thêm tool khi failure mode thật.
22
+ 4. Biến rule lặp lại thành check chạy được.
23
+ 5. Ưu tiên dependency abstraction agent thể inspect, validate,
24
+ modify trực tiếp; tránh phụ thuộc opaque upstream [S1].
25
+ 6. Giữ artifact ngắn, vai, dễ quét trong session mới [S1], [S2], [S3].
29
26
 
30
- Nếu không failure mode cụ thể, chưa thêm lớp harness đó.
27
+ ## Rollout theo pha
31
28
 
32
- ## Harness tối thiểu
29
+ ### Pha 0: Audit hiện trạng
33
30
 
34
- Một repository chưa có harness nên bắt đầu bằng:
31
+ Kiểm kê:
35
32
 
36
- | Artifact | Mục đích | Nguồn |
37
- | --- | --- | --- |
38
- | `AGENTS.md` | Entry point ngắn: đọc gì, chạy gì, tránh gì | [S1] |
39
- | `README.md` | Mục tiêu dự án và lệnh cơ bản | [S1] |
40
- | `init.sh` hoặc lệnh setup | Khôi phục môi trường ở session mới | [S2] |
41
- | `feature_list.json` | Danh sách feature và trạng thái pass/fail | [S2] |
42
- | `progress.md` | Việc đã làm, verify đã chạy, việc tiếp theo | [S2] |
43
- | Git commit nhỏ, tả | Checkpoint để session sau đọc lại hoặc revert khi cần | [S2] |
44
- | Task runner | Lệnh chuẩn cho setup/test/lint/build/smoke | [S2], [S3] |
45
- | Test hoặc smoke test | Bằng chứng tối thiểu trước và sau sửa | [S2], [S3] |
33
+ - setup command hiện có;
34
+ - test command;
35
+ - CI;
36
+ - docs;
37
+ - failure mode đang gặp;
38
+ - artifact nào đã giữ state;
39
+ - artifact nào đang phình hoặc drift;
40
+ - dependency nào opaque làm agent khó inspect, validate, hoặc modify [S1], [S2].
46
41
 
47
- Không thêm planner, evaluator, telemetry stack, hoặc cleanup automation nếu
48
- chưa có failure mode yêu cầu.
42
+ Kết quả của pha này một danh sách ngắn các điểm cần chặn trước khi thêm
43
+ harness.
49
44
 
50
- Nếu phải chọn giữa prose thuần và state có cấu trúc cho tiến độ feature, ưu
51
- tiên dạng như `feature_list.json`: session mới dễ chọn một feature, giữ trạng
52
- thái pass/fail nhất quán, và tránh suy diễn lại từ ghi chú tự do [S2].
45
+ ### Pha 1: Minimum viable harness
53
46
 
54
- ## Quy chuẩn tạo harness cho project khác
47
+ Tạo các file tối thiểu:
55
48
 
56
- Áp dụng mục này khi đưa harness vào một repository sản phẩm hoặc nghiên cứu
57
- khác. Mục tiêu là tạo một baseline có thể tiếp tục qua session và phát hiện
58
- việc agent tuyên bố hoàn tất khi chưa cập nhật bằng chứng, không phải sao chép
59
- toàn bộ công cụ của repository mẫu [S1], [S2], [S3].
49
+ - `AGENTS.md`
50
+ - `README.md`
51
+ - `init.sh`
52
+ - `feature_list.json`
53
+ - `progress.md`
54
+ - `lessons.md`
55
+ - `memory/README.md`
60
56
 
61
- ### Chuẩn bắt buộc
57
+ Contract tối thiểu:
62
58
 
63
- | Thành phần | Contract tối thiểu | Cách kiểm tra |
64
- | --- | --- | --- |
65
- | `AGENTS.md` | Nêu thứ tự đọc, lệnh khởi động, lệnh verify, giới hạn local, rule cập nhật state | Session mới đọc được đường vào repo trong một lượt ngắn |
66
- | `README.md` | tả mục tiêu, bản đồ artifact, và lệnh vận hành chính | Các artifact trong harness có link hoặc đường dẫn tìm được |
67
- | `init.sh` hoặc lệnh tương đương | Chạy baseline rẻ, lặp lại được ở đầu session | Chạy thành công trên checkout sạch hoặc báo lỗi hành động được |
68
- | `feature_list.json` hoặc trạng thái cấu trúc tương đương | Mỗi capability có acceptance, verify command, status, evidence | Status chỉ chuyển sang verified sau khi lệnh liên quan pass |
69
- | `progress.md` | Mỗi vòng làm việc ghi task, artifact liên quan, kết quả verify và bước tiếp theo | Session mới xác định được công việc đang mở mà không cần chat history |
70
- | Test/verify command | Cưỡng chế invariant quan trọng thay vì chỉ ghi bằng prose | Lệnh verify fail khi invariant bị phá |
71
-
72
- Đây là diễn giải triển khai từ repository-local knowledge và mechanical
73
- guardrail của [S1], kết hợp state handoff và quy trình verify-before-status của
74
- [S2]. Với task nhỏ không thay đổi hành vi hay guardrail, project có thể chỉ
75
- dùng acceptance criteria và lệnh verify rõ theo nguyên tắc bắt đầu đơn giản
76
- của [S3].
77
-
78
- ### Contract cập nhật state
79
-
80
- Một project áp dụng harness nên định nghĩa **behavior artifact** là file làm
81
- thay đổi cách sản phẩm, package, test, guardrail, skill hoặc agent hoạt động.
82
- Ví dụ thường gặp: source code, `scripts/`, `tests/`, `skills/`, manifest
83
- package, workflow verify, và `AGENTS.md`.
84
-
85
- Khi task chạm behavior artifact:
86
-
87
- 1. Chạy baseline trước sửa và ghi lại trạng thái ban đầu nếu task có rủi ro
88
- hồi quy.
89
- 2. Nêu acceptance criteria và command kiểm chứng trước khi chuyển trạng thái.
90
- 3. Sau khi verify pass, cập nhật feature state với evidence cụ thể.
91
- 4. Thêm entry mới nhất vào progress, liệt kê behavior artifact đã đổi, command
92
- đã chạy, kết quả, và bước tiếp theo.
93
- 5. Chỉ tuyên bố hoàn tất hoặc commit checkpoint sau khi gate state và lệnh
94
- verify đều pass.
95
-
96
- Contract này ngăn hai failure mode: session sau mất dấu thay đổi đã làm và
97
- agent kết thúc sớm chỉ vì code/test cục bộ đã xanh trong khi state handoff chưa
98
- được cập nhật [S2]. Khi omission lặp lại, quy tắc này nên được mã hóa thành
99
- check chạy được thay vì phụ thuộc vào nhắc nhở prose [S1].
100
-
101
- ### Gate cơ học tối thiểu
102
-
103
- Project có thay đổi hành vi qua nhiều session nên đưa các invariant sau vào
104
- `verify` hoặc CI:
105
-
106
- | Invariant | Gate đề xuất |
107
- | --- | --- |
108
- | Artifact bắt buộc không bị mất | Fail khi thiếu `AGENTS.md`, state file, bootstrap hoặc docs map cần thiết |
109
- | Thay đổi hành vi không thiếu handoff | Nếu diff chạm behavior artifact, fail khi không có cập nhật feature state và progress |
110
- | Progress không dùng bằng chứng cũ | Entry progress mới nhất phải nêu behavior artifact đang đổi và command verify vừa chạy |
111
- | Feature không được đánh dấu sớm | Chỉ chấp nhận trạng thái verified khi có evidence gắn với verify command |
112
- | Quy tắc kiến trúc lặp lại | Dùng lint hoặc structural test thay cho review comment lặp lại |
113
-
114
- Phạm vi so sánh diff phải khớp workflow của project: nếu agent verify trước
115
- commit, có thể so với `HEAD`; nếu CI kiểm sau commit, phải so với base branch
116
- hoặc pull request base. Không chọn baseline diff mơ hồ vì gate sẽ cho qua đúng
117
- failure mode mà nó cần chặn.
118
-
119
- ### Checklist bootstrap
59
+ - `AGENTS.md` bản đồ vào repo theo progressive disclosure: lớp ngoài ngắn,
60
+ trỏ tới chi tiết sâu hơn, không phải manual dài [S1].
61
+ - `init.sh` khởi động lại môi trường hoặc smoke test rẻ nhất [S2].
62
+ - `feature_list.json` tả capability, acceptance, verify command, status,
63
+ evidence [S2].
64
+ - `progress.md` ghi việc đang làm, artifact liên quan, verify vừa chạy, bước
65
+ tiếp theo [S2].
66
+ - `lessons.md` ghi mistake, root cause, rule, status [S1], [S2].
67
+ - `memory/README.md` mô tả lớp lạnh, layout archive, và nhịp rotate [S1], [S2].
120
68
 
121
- Khi tạo harness cho repository mới:
69
+ ### Pha 2: Verify-before-status
70
+
71
+ Thêm gate để chặn done sớm:
72
+
73
+ - chỉ đánh dấu `verified` sau khi command verify pass;
74
+ - entry progress mới nhất phải nêu behavior artifact đã đổi;
75
+ - state change phải có evidence gắn với command vừa chạy;
76
+ - diff chạm behavior artifact thì không được thiếu progress/feature update
77
+ [S1], [S2].
78
+
79
+ ### Pha 3: Runtime observability
80
+
81
+ Chỉ thêm khi code pass nhưng behavior fail hoặc agent không thấy runtime:
82
+
83
+ - browser automation;
84
+ - API checks;
85
+ - log, metric, trace;
86
+ - database state checks [S1], [S2], [S4].
122
87
 
123
- 1. Kiểm setup, test, CI, tài liệu failure mode đang xảy ra.
124
- 2. Tạo artifact tối thiểu trong bảng chuẩn bắt buộc; không thêm evaluator hoặc
125
- automation khi chưa có lỗi tương ứng.
126
- 3. Viết một feature đầu tiên mô tả chính harness và command verify của nó.
127
- 4. Tạo smoke test rẻ nhất cho `init.sh` hoặc lệnh bootstrap tương đương.
128
- 5. Tạo ít nhất một negative test chứng minh gate fail khi bỏ state update hoặc
129
- phá invariant quan trọng.
130
- 6. Chạy verify, ghi evidence vào feature state và progress, rồi mới dùng
131
- harness cho task sản phẩm.
88
+ Mỗi tool thêm vào nên được tả như interface ràng tham số, ranh giới, và
89
+ dụ sử dụng để agent gọi đúng [S3].
132
90
 
133
- Negative test là bước quan trọng: một verifier chỉ pass trên baseline hợp lệ
134
- chưa chứng minh nó chặn được lỗi quy trình cần kiểm soát. Đây là cách thực thi
135
- nguyên tắc biến feedback lặp lại thành guardrail cơ học [S1], đồng thời giữ
136
- state handoff kiểm chứng được giữa các session [S2].
91
+ ### Pha 4: Evaluation separation
137
92
 
138
- ## Phân tầng nguồn sự thật
93
+ Chỉ thêm khi self-review hoặc chất lượng chủ quan là failure mode:
139
94
 
140
- Giữ artifact ngắn, đúng vai, và dễ quét trong session mới.
95
+ - generator riêng;
96
+ - evaluator riêng;
97
+ - rubric rõ;
98
+ - sprint contract nêu rõ phạm vi, tiêu chí done, và phương thức QA;
99
+ - evidence rõ cho evaluator [S4].
141
100
 
142
- | Artifact | Nên chứa | Không nên chứa | Nguồn |
143
- | --- | --- | --- | --- |
144
- | `AGENTS.md` | Bản đồ vào repo: đọc gì trước, lệnh nào chuẩn, điều gì bị cấm | Toàn bộ lịch sử dự án hoặc manual quá dài | [S1] |
145
- | `README.md` | Mục tiêu dự án, cấu trúc chính, cách chạy cơ bản | Task state ngắn hạn theo từng session | [S1] |
146
- | `feature_list.json` hoặc tương đương | Scope công việc và trạng thái pass/fail theo feature | Rule kiến trúc chung của repo | [S2] |
147
- | `progress.md` | Verify đã chạy, lỗi đang mở, bước kế tiếp | Chính sách bền vững lặp lại cho mọi task | [S2] |
148
- | Test, lint, structural check | Invariant cần cưỡng chế bằng máy | Giải thích dài dòng thay cho check chạy được | [S1] |
101
+ ### Pha 5: Mechanical guardrails
149
102
 
150
- Nếu một quyết định cần agent dùng lặp lại, nên sống trong repo và ở đúng
151
- artifact của nó; nếu chỉ nằm trong chat, session mới khó khôi phục đáng tin
152
- cậy [S1], [S2].
103
+ Chỉ thêm khi quy tắc kiến trúc hoặc quy tắc quy trình lặp lại:
153
104
 
154
- ## Bảo trì source of truth
105
+ - lint;
106
+ - structural test;
107
+ - CI rule;
108
+ - cleanup cadence;
109
+ - doc freshness hoặc cross-link checks [S1].
155
110
 
156
- Không nên dừng việc "có tài liệu". Với tri thức vận hành quan trọng, harness
157
- nên ưu tiên progressive disclosure và thêm check cơ học cho freshness,
158
- cross-link, hoặc độ khớp giữa map tài liệu và cấu trúc repo thực tế [S1].
111
+ ### Pha 6: Wrapper synthesis
159
112
 
160
- Trigger nên thêm check kiểu này khi:
113
+ Chỉ thêm khi rule quá phức tạp để viết tay hoặc chi phí runtime là vấn đề:
161
114
 
162
- - `AGENTS.md` bắt đầu trỏ tới tài liệu đã đổi tên hoặc không còn đúng;
163
- - index trong `docs/` không còn phản ánh nơi source of truth thực sự nằm;
164
- - agent lặp lại việc đọc nhầm tài liệu cũ hoặc bỏ qua tài liệu mới;
165
- - review thường xuyên phát hiện policy trong prose nhưng không được cập nhật.
115
+ - wrapper code sinh tự động;
116
+ - policy thành code tĩnh;
117
+ - verify chặt trước khi chấp nhận [S5].
166
118
 
167
- Nếu drift này xảy ra nhiều lần, một tác vụ doc-gardening định kỳ hoặc lint nhẹ
168
- cho docs thường rẻ hơn việc nhắc lại trong prompt mỗi session [S1].
119
+ Bằng chứng từ AutoHarness cho thấy harness sinh tự động thể giúp một model
120
+ nhỏ hơn vượt model lớn hơn trên các môi trường thử nghiệm, nên đây là cách bù
121
+ năng lực mô hình chứ không chỉ là tối ưu chi phí runtime [S5].
169
122
 
170
- ## Vòng lặp session
123
+ ## Quyết định can thiệp
171
124
 
172
- Mỗi session agent dài hạn nên làm:
125
+ | Tín hiệu | Can thiệp tối thiểu | Khi nào dừng |
126
+ | --- | --- | --- |
127
+ | Task nhỏ, test rõ | Agent đơn lẻ + acceptance criteria + verify command | Khi pass test và state đã cập nhật [S3] |
128
+ | Vượt một session | Feature list + progress + git history + init.sh | Khi session mới có thể tiếp tục không cần chat history [S2] |
129
+ | Không biết chạy app | Setup script idempotent + smoke test | Khi session mới bootstrap được [S2] |
130
+ | Runtime fail | Browser/API/log/metric/trace | Khi hành vi thật đã quan sát được [S1], [S2], [S4] |
131
+ | Self-review yếu | Evaluator riêng | Khi rubric và evidence rõ [S4] |
132
+ | Scope mơ hồ | Planner + sprint contract | Khi generator và evaluator đồng thuận scope [S4] |
133
+ | Drift kiến trúc | Lint + structural test + cleanup | Khi rule được cưỡng chế bằng máy [S1] |
134
+ | Rule quá phức tạp | AutoHarness / synthesized wrapper | Khi wrapper chặn được hành vi sai trước runtime [S5] |
135
+
136
+ ## Session loop chuẩn
137
+
138
+ Mỗi session dài hạn nên chạy theo vòng này:
173
139
 
174
140
  1. Đọc `AGENTS.md`.
175
141
  2. Đọc `progress.md`.
176
- 3. Đọc `feature_list.json` hoặc artifact trạng thái tương đương.
177
- 4. Xem git history gần đây.
178
- 5. Chạy `init.sh` hoặc setup command.
179
- 6. Chạy smoke test rẻ nhất để biết repo có đang sạch không.
142
+ 3. Đọc `feature_list.json`.
143
+ 4. Xem git history gần nhất.
144
+ 5. Chạy `init.sh`.
145
+ 6. Chạy smoke test rẻ nhất.
180
146
  7. Chọn một feature/fix chưa verify.
181
147
  8. Viết acceptance criteria ngắn.
182
- 9. Triển khai thay đổi nhỏ nhất.
148
+ 9. Thực hiện thay đổi nhỏ nhất.
183
149
  10. Verify bằng lệnh hoặc quan sát đã nêu.
184
- 11. Chỉ đổi trạng thái feature sau khi verify pass.
185
- 12. Ghi progress commit nếu workflow yêu cầu.
150
+ 11. Chỉ đổi trạng thái sau khi verify pass.
151
+ 12. Nếu lỗi do agent gây ra, ghi lesson trước khi sửa tiếp.
152
+ 13. Ghi progress và commit checkpoint nếu workflow yêu cầu [S1], [S2].
186
153
 
187
- Vòng này trực tiếp xử lý lost context, done sớm, môi trường hỏng, thiếu kiểm
188
- thử đầu-cuối [S2].
154
+ Hai lưu ý về checkpointreset:
189
155
 
190
- Nếu harness thường chạy dài hoặc qua nhiều lần reset, thiết kế như thể
191
- context reset sẽ xảy ra thường xuyên: artifact khởi động phải đủ ngắn để quét
192
- nhanh, commit phải đủ rõ để đọc lại, setup phải đủ lặp lại để session mới
193
- không phụ thuộc ức hội thoại [S2], [S4].
156
+ - Commit tả progress update không chỉ để audit; chúng tạo checkpoint
157
+ để revert thay đổi xấu khôi phục working state sạch hơn [S2].
158
+ - Nếu state handoff đủ tốt, context reset giữa session chủ đích chứ không
159
+ phải mất mát: reset giúp model bám task thay vì trượt theo context anxiety
160
+ [S4].
194
161
 
195
- Checkpoint thực dụng trước khi bắt đầu sửa code:
162
+ ## Artifact contract chi tiết
196
163
 
197
- - nếu `AGENTS.md` dài đến mức không quét nhanh được, rút nó về vai trò bản đồ;
198
- - nếu `progress.md` lặp lại policy chung, chuyển policy đó sang artifact bền
199
- vững hơn;
200
- - nếu feature list không nói rõ thế nào là pass, thêm bước verify cụ thể trước
201
- khi triển khai.
164
+ ### `AGENTS.md`
202
165
 
203
- ## Acceptance contract
166
+ Nên chứa:
204
167
 
205
- Dùng cho bug hoặc feature nhỏ.
168
+ - thứ tự đọc;
169
+ - lệnh khởi động;
170
+ - lệnh verify;
171
+ - quy tắc cập nhật state;
172
+ - giới hạn local;
173
+ - đường dẫn tới docs sâu hơn.
206
174
 
207
- ```markdown
208
- # Acceptance Contract
175
+ Không nên chứa:
209
176
 
210
- ## Scope
211
- - Feature/fix:
212
- - User-visible behavior:
213
- - Likely files:
177
+ - lịch sử dài;
178
+ - policy trùng lặp;
179
+ - hướng dẫn lan man [S1].
214
180
 
215
- ## Acceptance Criteria
216
- - [ ] ...
217
- - [ ] ...
181
+ ### `feature_list.json`
218
182
 
219
- ## Verification
220
- - Unit:
221
- - Integration:
222
- - Browser/API:
223
- - Log/metric/trace:
183
+ Nên có:
224
184
 
225
- ## Out of Scope
226
- - ...
227
- ```
185
+ - `id`;
186
+ - `title`;
187
+ - `status`;
188
+ - `acceptance`;
189
+ - `verify`;
190
+ - `evidence`.
228
191
 
229
- Contract nên ngắn hơn phần việc. Nếu dài hơn phần việc, chia nhỏ scope.
192
+ Chuyển `status` sang verified chỉ khi evidence gắn với verify command [S2].
230
193
 
231
- ## Sprint contract
194
+ ### `progress.md`
232
195
 
233
- Dùng khi task trải qua nhiều file, nhiều luồng runtime, hoặc chất lượng chủ quan.
196
+ Nên có:
234
197
 
235
- ```markdown
236
- # Sprint Contract
198
+ - context;
199
+ - relevant files;
200
+ - done;
201
+ - verification;
202
+ - next.
237
203
 
238
- ## Scope
239
- - Feature:
240
- - User path:
241
- - API/data path:
242
- - Likely files/modules:
204
+ Entry mới nhất phải nhắc đúng behavior artifact đang đổi [S2].
243
205
 
244
- ## Done Means
245
- - [ ] User can ...
246
- - [ ] API/data reflects ...
247
- - [ ] Error state handles ...
248
- - [ ] No regression in ...
206
+ ### `lessons.md`
249
207
 
250
- ## Verification
251
- - Unit:
252
- - Integration:
253
- - Browser/API:
254
- - Log/metric/trace:
208
+ Nên dùng cho mistake do agent gây ra.
255
209
 
256
- ## Evaluator Focus
257
- - Runtime behavior:
258
- - Negative cases:
259
- - UX/quality concerns:
210
+ Format tối thiểu:
260
211
 
261
- ## Out of Scope
262
- - ...
263
- ```
212
+ - Mistake
213
+ - Root cause
214
+ - Rule
215
+ - Status
264
216
 
265
- Sprint contract chuẩn chung giữa generator evaluator. giảm scope drift
266
- và làm feedback của evaluator cụ thể hơn [S4].
217
+ Khi cùng một rule lặp lại, promote vào `AGENTS.md` hoặc một gate [S1],
218
+ [S2].
267
219
 
268
- ## Planner, generator, evaluator
220
+ ### `memory/README.md`
269
221
 
270
- Chỉ dùng ba vai khi task đủ lớn.
222
+ Nên chứa:
271
223
 
272
- | Vai | Trách nhiệm | Không làm |
273
- | --- | --- | --- |
274
- | Planner | Chuyển prompt thành spec, scope, sprint contract | Viết toàn bộ code |
275
- | Generator | Triển khai phần nhỏ nhất theo contract | Mở rộng ngoài scope |
276
- | Evaluator | Kiểm thử runtime và báo lỗi cụ thể | Chỉ đọc diff rồi khen đạt |
224
+ - contract của lớp lạnh;
225
+ - layout archive;
226
+ - khi nào rotate;
227
+ - file nào hot file nào cold.
277
228
 
278
- Evaluator tốt phải nêu bằng chứng: screenshot, DOM state, API response, database
279
- state, log, trace, hoặc command output. Feedback nên nói tiêu chí nào fail và
280
- bước sửa tiếp theo là gì [S4].
229
+ Không nên chứa:
281
230
 
282
- Bên cạnh đó, áp dụng **đánh giá vết thực thi (Trajectory Evaluation)** để đánh giá cả
283
- chuỗi hành động suy luận của agent (tool calling sequence, logic steps) thông qua
284
- **LLM-as-a-judge** tự động để chấm điểm hiệu năng thực tế. Có thể dùng **VeRO (Meta-Evaluation)**
285
- để chạy một vòng lặp tối ưu hóa tự động cấu trúc prompt/tool dựa trên các vết chạy lỗi [S5].
231
+ - state tác vụ đang mở;
232
+ - ghi chú ngắn hạn theo session.
286
233
 
287
- ## Legibility map
234
+ ## Bootstrap checklist
288
235
 
289
- Khi agent không thấy hành vi thật, bổ sung tín hiệu theo bảng sau.
236
+ Khi tạo harness cho repository mới:
290
237
 
291
- | Khu vực | Tín hiệu | Cách verify |
292
- | --- | --- | --- |
293
- | UI | Browser automation, screenshot, DOM snapshot | Chạy user path chính |
294
- | API | Request/response, contract test | Gọi endpoint và kiểm dữ liệu |
295
- | Backend | Structured log, metric, trace | Quan sát lỗi, latency, span |
296
- | Data | Schema, seed, query kiểm tra | Kiểm state trước/sau action |
297
- | Build | Build log, CI log | Chạy lệnh chuẩn |
298
- | Architecture | Import boundary, structural test | Chạy lint/test guardrail |
238
+ 1. Kiểm setup, test, CI, docs, failure mode.
239
+ 2. Tạo artifact tối thiểu.
240
+ 3. Viết feature đầu tiên tả chính harness.
241
+ 4. Tạo smoke test rẻ nhất cho `init.sh`.
242
+ 5. Tạo negative test cho thiếu state update hoặc phá invariant.
243
+ 6. Chạy verify, ghi evidence, rồi mới dùng harness cho task sản phẩm [S1],
244
+ [S2].
245
+
246
+ ## Gate tối thiểu
247
+
248
+ Nên fail khi:
249
+
250
+ - thiếu artifact bắt buộc;
251
+ - diff chạm behavior artifact nhưng thiếu update state;
252
+ - progress mới nhất không nêu behavior artifact và verify command;
253
+ - feature bị đánh dấu sớm;
254
+ - rule kiến trúc lặp lại nhưng chưa bị mã hóa thành gate [S1], [S2].
299
255
 
300
- Legibility nghĩa tín hiệu cần thiết nằm trong tầm đọc của agent, không phải
301
- thêm log tùy tiện [S1].
256
+ ## Khi nào chưa nên thêm lớp mới
302
257
 
303
- Legibility cũng áp vào lựa chọn stack abstraction. Nếu hai giải pháp tương
304
- đương về yêu cầu sản phẩm, ưu tiên giải pháp có API ổn định, hành vi dễ kiểm
305
- chứng, và phần quan trọng nằm trong repo thay vì ẩn sau upstream khó quan sát.
306
- Khi agent thường xuyên kẹt ở một thư viện opaque, đó là tín hiệu xem lại
307
- abstraction chứ không chỉ siết prompt [S1].
258
+ Chưa thêm planner, evaluator, telemetry stack, hoặc automation nếu:
308
259
 
309
- ## Guardrail cơ học
260
+ - task nhỏ;
261
+ - đường đi rõ;
262
+ - failure mode chưa xuất hiện;
263
+ - state handoff hiện tại đã đủ [S3].
310
264
 
311
- Khi một rule quan trọng lặp lại, đưa nó từ prose sang check.
265
+ ## Khi nào phải xem lại harness
312
266
 
313
- dụ:
267
+ Xem lại harness khi:
314
268
 
315
- - cấm dependency đi ngược layer;
316
- - yêu cầu parse dữ liệu ở boundary;
317
- - yêu cầu structured logging luồng quan trọng;
318
- - giới hạn file size nếu drift kích thước gây hại;
319
- - chặn update feature status nếu verify chưa pass;
320
- - chạy smoke test trước merge;
321
- - dùng AutoHarness để tự động sinh lớp bọc thực thi (code harness) khi môi trường có quá nhiều luật phức tạp hoặc khó kiểm soát bằng linter tĩnh [S5]. Lớp bọc này lọc và chặn các hành vi vi phạm trước khi thực thi [S5];
322
- - biên dịch chính sách quyết định thành code tĩnh (Harness-as-Policy) để thực thi nhanh và tiết kiệm token ở runtime [S5].
269
+ - model mới làm orchestration cũ không còn load-bearing;
270
+ - docs code drift nhau;
271
+ - session mới phải đoán quá nhiều;
272
+ - cleanup không còn theo kịp throughput [S1], [S4].
323
273
 
324
- Guardrail chỉ nên bảo vệ invariant thật. Rule quá rộng tạo nhiễu và làm agent
325
- tối ưu quanh check thay vì quanh mục tiêu [S1], [S3].
274
+ ## Mẫu rollout thực tế
326
275
 
327
- ## Cleanup
276
+ ### Tuần 1
328
277
 
329
- Khi throughput tăng, cleanup phải có trigger và verify.
278
+ - dựng minimum viable harness;
279
+ - thêm smoke test;
280
+ - thêm feature đầu tiên;
281
+ - thêm state update contract [S1], [S2].
330
282
 
331
- Trigger hợp lý:
283
+ ### Tuần 2
332
284
 
333
- - cùng một helper xuất hiện nhiều lần;
334
- - feature bypass architecture boundary;
335
- - progress log lặp lại cùng lỗi;
336
- - evaluator liên tục bắt cùng nhóm defect;
337
- - code mới tạo workaround thay vì sửa nguyên nhân.
285
+ - thêm verify gate;
286
+ - thêm negative test;
287
+ - chuẩn hóa progress entry;
288
+ - chuẩn hóa evidence [S1], [S2].
338
289
 
339
- Cleanup task nên có scope, acceptance criteria, verification, và rollback path.
340
- Đây là garbage collection cho codebase agent-first [S1].
290
+ ### Tuần 3
341
291
 
342
- ## Ablation harness
292
+ - thêm runtime observability nếu cần;
293
+ - thêm evaluator nếu self-review yếu;
294
+ - thêm cleanup rule nếu drift bắt đầu xuất hiện [S1], [S4].
343
295
 
344
- Sau khi model hoặc tooling thay đổi, xem lại harness:
296
+ ### Tuần 4+
345
297
 
346
- | Lớp | Câu hỏi ablation |
347
- | --- | --- |
348
- | Feature list | Nếu bỏ, agent đánh dấu xong sớm không? |
349
- | Progress log | Nếu bỏ, session mới có mất context không? |
350
- | `init.sh` | Nếu bỏ, agent có mất thời gian đoán setup không? |
351
- | Browser/API check | Nếu bỏ, runtime defect có tăng không? |
352
- | Evaluator | Nếu gộp vào generator, chất lượng có giảm không? |
353
- | Planner | Nếu bỏ planner, scope có drift không? |
354
- | Guardrail | Nếu tắt rule, vi phạm có xuất hiện lại không? |
355
- | AutoHarness | Nếu dùng code tĩnh thay vì gọi LLM ở runtime, latency và cost có giảm đáng kể mà vẫn giữ được chất lượng không? [S5] |
356
- | Trajectory Eval | Nếu không chấm vết chạy mà chỉ chấm kết quả tĩnh, ta có bỏ sót các lỗi tiềm ẩn trong suy luận của agent không? [S5] |
298
+ - promote lessons lặp lại thành guardrail;
299
+ - re-check docs freshness;
300
+ - loại bỏ lớp harness không còn giá trị [S1], [S4].
357
301
 
358
- Giữ phần rẻ và hiệu quả. Loại bỏ orchestration đắt nếu không còn tạo outcome
359
- tốt hơn [S4].
302
+ ## Anti-patterns
360
303
 
361
- ## Definition of done
304
+ - Đưa quá nhiều policy vào `AGENTS.md`.
305
+ - Dùng prose thay cho gate.
306
+ - Mark verified trước verify.
307
+ - Để state trong chat thay vì file.
308
+ - Thêm evaluator trước khi có failure mode rõ.
309
+ - Giữ wrapper cũ dù model mới không còn cần nó [S1], [S2], [S4], [S5].
362
310
 
363
- Một thay đổi harness hoàn thành khi:
311
+ ## Kết luận triển khai
364
312
 
365
- - scope acceptance criteria rõ;
366
- - lệnh hoặc quan sát verify đã chạy;
367
- - state/progress chỉ cập nhật sau verify;
368
- - guardrail mới gắn với failure mode thật;
369
- - tài liệu chỉ cite `[S1]-[S5]`;
370
- - không còn placeholder hoặc nguồn ngoài phạm vi.
313
+ Nếu áp dụng đúng thứ tự, harness tốt nhất thường là harness nhỏ nhất có thể
314
+ giữ được state, verify, observability. Mọi lớp thêm vào đều phải trả lời
315
+ được một failure mode thật. Nếu không, nó chỉ làm hệ thống nặng hơn mà không
316
+ làm agent đáng tin hơn [S1], [S2], [S3], [S4], [S5].