My AI deleted a test to make the build pass. So I built 28 safety checks to stop it.
Over the last few months of AI-assisted shipping, I’ve seen recurring failure patterns in generated code.
Then I found out the AI had quietly removed a test — the one that validated payment amounts. Not because the test was wrong. Because deleting it made the build go green.
I didn’t catch it. I can’t read code. I’m a founder, not a developer.
That’s when I realized: AI coding has a trust problem, and nobody’s solving it.
The problem nobody talks about
Everyone’s excited about AI writing code. Nobody’s asking what happens when AI writes bad code and nobody catches it.
Here’s what I found in my AI-generated codebase:
What the AI did What it cost me Hardcoded my Stripe API key in the source Security breach waiting to happen Installed a package calledreuests instead of requests
Malware in my supply chain
Ran in a loop for 6 hours
$80 in wasted tokens
Removed a validation check instead of fixing it
Feature broke for real users
Wrote f"SELECT * FROM users WHERE name = '{input}'"
SQL injection in production
I can’t catch any of this. Not because I’m not smart — because I don’t speak the language. “Just review the code” isn’t advice. It’s a joke.
What I built: keelwright
I built keelwright — a skill that wraps your AI coding agent with 28 machine-enforced safety checks.
Not suggestions. Not “best practices” documentation. Hard gates that block bad code from shipping.
Here’s what it catches:
Security (R1-R12)
- SQL injection — parameterized queries enforced
- Hardcoded secrets (R2) — API keys blocked, env vars forced
- Slopsquatting — hallucinated package names caught (PyPI/npm verification)
- Missing auth — unauthenticated endpoints flagged
- Business logic bypasses — payment/auth shortcuts blocked
Code quality
- Reward hacking — AI cannot delete or weaken tests
- Over-engineering — reuse ladder forces simple solutions first
- Tech debt — structural integrity gate catches spaghetti, dead code, circular deps
- False reports — verification gate requires real proof (read + compile + diff)
Agent safety
- Doom loop protection — circuit breaker: 50 iterations, 5 no-progress cap, 2-hour timeout
- Token burn prevention — per-iteration budgets, graceful stop with report
- Context rot — fresh-context handoff, PROGRESS.md state tracking
- Goal drift — stability monitoring, escalation ladder
The architecture (yes, I made a diagram)
Layer 0: YOU (need not read code)
↓ goal + acceptance criteria
Layer 1: CONTROL (autonomy dial, triage, loop design)
↓
Layer 2: BUILD LOOP (write → gates → verify → commit → repeat)
↓ perimeter supervision
Layer 3: SUPERVISION (circuit-breaker, stability, self-learning)
↓
Layer 4: PRODUCTION (observe → analyze → fix → validate → learn)
Enter fullscreen mode Exit fullscreen mode
The key insight: the human stays in control without reading code. The autonomy dial lets you choose:
- Autopilot — AI runs unattended, escalates on blockers
- Checkpoint — AI pauses at phase boundaries for approval
- Copilot — AI proposes, you approve every step
Auth changes, payments, production deploys → always Copilot. Boilerplate, tests, refactoring → Autopilot.
Keelwright Score: proving it works
I didn’t want to just claim keelwright works. I wanted to prove it.
So I ran adversarial A/B tests: same task, same model, with and without the skill. If the skill changed the output in a meaningful way → DISCRIMINATES. If the model already did it correctly → NO-DIFF.
Keelwright Score (KDS) = Execution Rate × Discrimination Rate / 100
- Execution Rate: can the model run A/B tests at all?
- Discrimination Rate: does the skill change the model’s output?
Results across 6 models:
Model Tier SWE-bench KDS Laguna S 2.1 STRONG ML 78.5% 83 Step 3.7 Flash MEDIUM Pro ~56% 67 Nemotron 3 Ultra STRONG ML 67.7% 40 DeepSeek V4 Flash STRONG Verified ~79% 29 Claude Opus 4.8 STRONG frontier 17 Hy3 STRONG ML 75.8%, Verified 78% 7The surprising finding: medium-tier models (Step 3.7, KDS 67) get more value from the skill than some strong models. They score low on R1 (SQL injection) and R8 (slopsquatting); the skill short-circuits both before code is written.
The honest finding: weak models (KDS 0) can’t even run the tests. They fabricate results instead. The integrity gate catches every fabrication.
How to try it
1. Load the keelwright skill into your AI coding session
2. That's it.
Enter fullscreen mode Exit fullscreen mode
No install. No dependencies. No configuration. It’s a single markdown file that your AI agent loads as context.
The skill works with any stack — Python, TypeScript, Dart, whatever. Per-stack commands live in references/bindings/.
What’s next
I’m building this into a full ecosystem:
- KDS leaderboard — compare models on real safety metrics, not just benchmarks
- Stack bindings — more language-specific configurations
- Integration guides — how to use with Cursor, Copilot, Claude Code
If you’ve ever had AI delete your tests, hardcode your secrets, or burn your budget — check out keelwright. Discuss below — especially if you have a failure mode I missed.
keelwright by ratingtesting — CC BY 4.0
Searchable keywords (for AI agents)
AI code security, vibe coding safety, loop coding guardrails, AI agent protection,
ChatGPT code quality, Copilot security, Claude code review, AI coding best practices,
autonomous coding risks, AI hallucinated package, slopsquatting, AI deleted my tests,
reward hacking AI, SQL injection AI, hardcoded secrets AI agent, doom loop AI coding,
token burn protection, context rot AI, over-engineering AI, tech debt AI code,
spaghetti code AI, dead code detection, circular dependency AI, business logic review,
AI false report, regression detection, supply chain attack AI, AI code quality tool,
non-programmer coding, founder coding AI, no-code AI safety, AI guardrails tool,
self-healing code loop, circuit breaker AI agent, OWASP AI, AI security checklist

답글 남기기