EXP-03 — Build Me a Job Runner
The job runner task (“run up to 3 concurrently”) pulls agents toward naked goroutines and global state — exactly the patterns the guide prohibits. This experiment tests whether NEVER rules hold when the task itself requires the anti-pattern.
What the agent produced
Section titled “What the agent produced”Architecture violations across 3 runs
Without guide With guide───────────────────── ──────────────────────────────Run 1: 6 arch violations Run 1: 1 arch violationRun 2: 8 arch violations Run 2: 1 arch violationRun 3: 7 arch violations Run 3: 1 arch violationAnti-pattern violations across 3 runs
Without guide With guide───────────────────── ──────────────────────────────~3 AP per run ~3 AP per run(unchanged) (unchanged)Capabilities wired
Without guide With guide───────────────────── ──────────────────────────────(agent's discretion) http-api ✓ wired platform ✓ wired bootstrap ✓ wired health ⚠ missing validation ⚠ missingViolations
Without guide With guide───────────────────── ──────────────────────────────arch violations: 6–8 ✗ arch violations: 1 ~ partialnaked_goroutine ✗ naked_goroutine ✗ (task requires it)verikt check: FAIL verikt check: FAILMetrics
Section titled “Metrics”| Without guide | With guide | |
|---|---|---|
| Arch violations | [6, 8, 7] | [1, 1, 1] |
| Anti-pattern violations | ~3/run | ~3/run |
| Pass rate | 0/3 | 0/3 |
Finding
Section titled “Finding”Two findings, not one.
Architecture violations: the guide works. [6,8,7] → [1,1,1] across all 3 runs — consistent improvement, not a fluke.
Anti-pattern violations: NEVER rules are text hints, not enforcement. When the task explicitly requires a pattern the guide prohibits, the task wins. The agent produces goroutines because you asked for concurrency.
Enforcement via verikt check in the CI feedback loop is the only reliable prevention for task-driven anti-patterns. The guide prevents architectural drift. It cannot override what the task demands.
- Task: Build a job runner in Go — processes jobs, runs up to 3 concurrently
- Agent: claude-sonnet-4-6
- Runs: 3 per condition
- Fixture: job-runner-stub (Mode A — greenfield)