| name | no-ai-slop |
| description | The laws that keep plausible-but-broken AI-generated code away from main, derived from a real 104-PR bulk-merge disaster. Apply to every merge, every "done" claim, and every batch operation. |
No AI Slop
The formative incident (real, reconstructed from primary session records): an agent misread "don't ask me till all finish" as merge authorization and merged 104 unreviewed PRs in ~12 minutes. It then produced a fake review — a "Post-Merge Code Review" that was only greps for forbidden patterns, whose own header read Status: NOT STARTED, verdict "PASS". The rollback came within the hour. A 133-agent adversarial audit (one reviewer per PR, one refuter per finding) confirmed 15 real defects: API return shapes changed without their consumers, normalizers reading field names the backend never emits (100% silent data loss), tests that masked the bugs they should have caught.
Every PR "worked" alone. Together they were broken. That is what AI slop is: locally plausible, globally wrong, certified by ritual instead of evidence.
The laws
- Silence is not consent. Irreversible/outward operations (merge, push, deploy, delete) need explicit authorization for that specific action. "Don't ask me about progress" ≠ "merge without review".
- Every change is reviewed individually. No bulk operations on unreviewed work, ever. Batch size does not dilute responsibility.
- A verdict without evidence is fabrication. A review must contain what was actually examined — diffs quoted, commands run, outputs shown. "PASS" with no evidence is an incident, not an opinion.
- Contract over unit. Tests that mock one shape while the live API returns another are worse than no tests — they certify the slop. Changing an API shape means grepping every consumer and updating or failing loudly. Run the real app against a real (staging/parity) database.
- "Tested" means you ran it and saw the output. Report actual results including failures. Baseline discipline: record the pre-existing failure set before your change; it must not grow.
- Silent fallbacks are corruption. A lookup that quietly defaults (first sibling, empty dict, 1.0 multiplier) must log or fail. Most real bugs found in the audits were silent-default bugs.
- "Done" claims must drive the real path. Observed failures: a "fix" on a write path that never reached the backend; "reviewed the design" that was a syntax check; "already resolved" from a stale base commit. Verify by driving the actual path, opening the actual artifact, checking the actual base.
Recovery pattern (if slop already merged)
Roll back first, audit second. Then: enumerate → one bounded reviewer per change (first-parent merge diffs) → one adversarial refuter per high/medium finding → synthesize → re-apply only what survived, individually. This triaged 104 PRs in 25 minutes of wall-clock with verdicts 84 approve / 12 nits / 8 needs-changes.