One sentence, then tests that can fail
A specialist job fits in one sentence a teammate can reject. If you need a paragraph of hedges, you do not have a job yet — you have a chatbot pitch.
This chapter's job: Label a failing CI job as flake, product-bug, or needs-human from the log tail and the job name.
That sentence already excludes "explain the failure," "file the issue," and "page whoever is on-call." Those are later tools. The adapter only has to emit one label in a stable shape.
Acceptance tests are the rest of the job card. Write them so a wrong label fails them:
- Output is exactly one of the three labels — no prose wrapper, no fourth bucket.
- A test that failed once, passed on rerun, and shows no product assertion, labels
flake. - A deterministic assertion failure in application code labels
product-bug. - A prod deploy job, a secret scan, or an unknown infra 500 labels
needs-human.
If you cannot write test 2 without arguing for twenty minutes, the label set is still mush. Fix the definitions before you collect examples. The job.md in specialist-adapter-receipt/ is where that sentence and those tests live.
Filter-memo voice packs and agency "weekly status → client memo" formatters are the same shape of job. They are not this chapter's living artifact. Keep the CI-triage labeler so the receipt continues the agent-studio ticket.