AI proposes, rules and humans dispose
Lab 11 built, tested, scanned, signed and rolled out BoxOffice behind a canary. Lab 12 put a model in the product. Where can a model help in the pipeline — and where must it never decide?
pull_request
ai-tests
mvn verify
v*
llm.py
complete_json(system, user, schema)
dict
qwen2.5-coder
output_config.format
Stable system (instructions + CONVENTIONS.md + ADRs) is cached; volatile user (diff, log) is untrusted data.
CONVENTIONS.md
L21 + ...
file, line, severity, category, confidence, title, explanation, suggestion
minor
low
event: COMMENT
Golden-set run while writing the lab: 5 reviews with claude-opus-5-5 ≈ US$ 0.06 in total.
claude-opus-5-5
>
>=
return 0
Oracle problem: a generated test asserts what the code does. If the hold expires at 8 min instead of 10, the test now protects the bug.
fix
contents: read
actions: read
open-pr
contents: write
pull-requests: write
git apply
--bare -p
--allowedTools "Read,Edit,Write,Bash(mvn -B *)"
--permission-mode dontAsk
--max-turns
--max-budget-usd
src/
@Test
ai-fix/<sha8>
concurrency
!startsWith(head_branch, 'ai-fix/')
workflow_run
GITHUB_TOKEN
The agent's transcript is uploaded always — you read it most when the agent failed.
git log previous..tag
#PR
Which error can the grounding check not catch?
pull_request_target
Pwn request: pull_request_target + checkout of the PR head + run it = the fork gets your secrets.
run: ... "${{ github.event.pull_request.title }}"
env:
<untrusted>
.github/ai/**
Pin third-party actions to a SHA (tj-actions/changed-files, March 2025). Lint with actionlint and zizmor.
40 comments: 12 , 18 . Gate it?
Outline: shared client; (1) PR review; (2) tests judged by mutation testing; (3) fix agent; (4) release notes; (5) explained canary; (6) security; (7) measure it.