Nó làm gì
batch-triage là phiên bản một lượt của triage, dành cho backlog có sẵn khi bạn nhận repo.
mattpocock-skills:triage của plugin xử lý một item vừa tới. Một backlog thừa kế có hình dạng
khác: hàng trăm item không rõ tuổi, do những người đã rời dự án viết, mô tả đoạn code đã dịch
chuyển từ lâu. Skill này phân loại từng item bằng cách đọc chính văn bản của item và đoạn code
item gọi tên, gộp các bản trùng mà cách diễn đạt đang che, đánh dấu item đã chết, rồi tạo ticket
trên tracker kèm label và quan hệ blocking. Luật của nó là rút ra, không bao giờ bịa ra: mọi
lượt phân loại đều trích văn bản của item hoặc code item gọi tên, và một item không phân loại được
từ bằng chứng sẽ rơi vào NEEDS-OWNER, một kết quả hợp lệ tốn đúng một dòng.
Vấn đề nó xử lý xuất hiện ngay ngày đầu Thomas làm việc trên một repo mới nhận: một backlog
thừa kế không có cạnh thì không có frontier. Câu truy vấn frontier trả về mọi ticket đã hết
blocker và còn trống assignee, nên trong một backlog không gì chặn gì, mọi ticket đều trông như
sẵn sàng cùng lúc và thứ tự rơi về phỏng đoán. Skill này còn mang theo một đính chính đo được
ngay trong harness này. Trước đây nó yêu cầu “the code map” bằng văn xuôi, và đó là lý do
CODE-MAP.md tồn tại nhiều tuần như một artifact mà một lượt grep theo tên file gọi là mồ côi,
trong khi một skill đã ship cần nó mỗi lượt chạy (AST-071). Hiện nó resolve từng item đối chiếu
với cây code hiện tại bằng rg và git log. Đó là điều nó lẽ ra phải nói từ đầu, vì một cái map
cũ sẽ sai đúng chỗ triage cần nó nhất: trên đoạn code đã dời hoặc đã chết.
Khi nào Thomas gọi nó
| Tình huống trước mặt bạn | Gọi cái nào |
|---|---|
| Một repo bạn đang nhận về đã có sẵn backlog | batch-triage, gọi đích danh, một lần cho mỗi repo |
| Một item mới vừa vào inbox | Không phải skill này. mattpocock-skills:triage mới là dạng một item một lượt |
| Backlog lớn hơn mức một lượt chạy hết | batch-triage chia lô theo khu vực và báo lại chỗ đã dừng |
| Một repo trống, chưa có backlog nào | Bỏ qua. Nó đọc thứ chưa tồn tại |
| Tracker và git đã lệch nhau kể từ đó | reconcile-tracker, skill đo trạng thái chứ không phân loại item |
Cần sẵn gì
docs/agents/triage-labels.mdtồn tại và được nạp trước tiên. Bộ label thuộc về project, dosetup-matt-pocock-skillstạo ra, nên bịa một bộ từ vựng song song bên trong skill này sẽ tách bộ label thành hai bản.- Cây code hiện tại, không phải một cái map của nó. Phần lớn quyết định triage phụ thuộc vào việc
đoạn code mà item gọi tên còn tồn tại hay không, nên từng item được resolve bằng
rgvàgit logtrên cây ở trạng thái hiện tại. - Thomas sở hữu skill này như một stage. Đây là skill do người gọi, chạy một lần cho mỗi repo và chạy lại khi đã cũ, và kết thúc ở lượt duyệt của chủ project. Một skill do người gọi không tự gọi được skill khác, đó là lý do vai này tồn tại.
- Có một adapter tracker đang hoạt động, vì các item còn sống sẽ trở thành ticket thật. Chọn adapter
nào (
github-issue-tracker,jira-issue-tracker,linear-issue-tracker) không đổi cách phân loại, chỉ đổi cách ghi ticket.
Nó để lại gì
| Kết quả | Nơi nó nằm lại |
|---|---|
| Số đếm theo từng lớp | Bản báo cáo, phát hành trước khi động vào tracker, để chủ project thấy hình dạng backlog vừa thừa kế |
Các item STALE và DONE kèm bằng chứng |
Chỉ nằm trong báo cáo. Đóng ticket chờ chủ project quyết định, vì đóng nhầm một item còn thật là sai lầm đắt nhất ở đây |
| Các nhóm trùng lặp | Bản báo cáo, gộp theo đường code và theo triệu chứng chứ không theo tiêu đề |
| Một item còn sống | Một ticket thật trên tracker, gắn label từ bộ từ vựng của project, ước lượng là một ticket hoặc một effort cần wayfinder |
| Một phụ thuộc rõ ràng của item này lên item kia | Một cạnh blocking trên tracker, đúng thứ câu truy vấn frontier đọc |
| Một item mà bằng chứng không phân định được | NEEDS-OWNER trong báo cáo, một dòng, không đoán |
| Ô assignee của mọi ticket vừa tạo | Để trống. Gán assignee là hành động claim, và nó thuộc về Thomas lúc dispatch |
Lỗi đã biết
Lấy từ harness/.agents/memory/recurring-failure-modes.md.
- AST-071 · promoted. Bảy lượt kiểm reachability hỏi xem một thứ có được gọi tên không, một
đường dẫn có tồn tại không, một địa chỉ có gọi được không. Không lượt nào hỏi có gì đọc thứ mà
gói này tạo ra hay không.
batch-triagelà ví dụ ngược ngay trong mục đó: nó yêu cầu “the code map” bằng văn xuôi, nên một lượt grep theo tên file tuyên bố artifact ấy là mồ côi trong khi một skill đã ship cần nó mỗi lượt chạy. Grep một cái tên không phải là đi tìm người tiêu thụ. Đã sửa: check 8 đòi một dòng trong registry viết tay gọi tên người đọc, vàbatch-triageđọc thẳng cây code thay vì đọc một cái map. - AST-050 · promoted. Đây không phải lỗi của chính skill này, nhưng nó rơi trúng file mà skill
này nạp đầu tiên: một regex quét cả loạt để viết lại
/triageđã viết luôn ba đường dẫndocs/agents/triage-labels.mdthành vô nghĩa, vì\bkhớp ở giữa đường dẫn. Bị bắt nhờ đọc diff, không phải nhờ lượt kiểm nào.
Đang chạy đúng nếu
- Mọi lượt phân loại đều trích văn bản của item hoặc code item gọi tên, và không có gì bị phân loại chỉ dựa vào tiêu đề.
- Bản báo cáo số đếm theo lớp tới tay chủ project trước khi bất cứ ticket nào được tạo hay đóng.
- Không item
STALEhayDONEnào bị đóng bởi chính lượt chạy này. Đó là đề xuất đang chờ chủ project. - Cạnh blocking được đặt ở mọi chỗ một item rõ ràng phụ thuộc vào item khác, vì một cạnh bỏ sót làm một ticket trở thành sẵn sàng quá sớm.
- Mọi ticket vừa tạo đều chưa gán ai, và Thomas chạy được câu truy vấn frontier trên kết quả ngay lập tức.
Nó nằm ở đâu trong chuỗi
batch-triage chạy sớm, bên cạnh stage bootstrap còn lại mà Thomas sở hữu:
/skills/bootstrap-glossary gieo bộ từ vựng từ code, còn batch-triage đọc backlog đối chiếu với
đúng đoạn code đó. Cả hai đều gọi đích danh, chạy một lần cho mỗi repo, và kết thúc ở lượt duyệt
của chủ project, nên không cái nào biến thành phần việc mà ai cũng tưởng người khác đã chạy. Kết
quả của nó đi thẳng vào câu truy vấn frontier trong thomas.md, và đó là chỗ /skills/dispatch-ticket
claim. Một item quá lớn cho một ticket thì chuyển sang mattpocock-skills:wayfinder và một session
Shaper; một item mới tới sau này thì chuyển sang mattpocock-skills:triage, không quay lại đây.