FunnyEnough — engineering notes
Notes on building with AI — the patterns that held up, and the ones that bit me.
-
The abstention gate: when an AI agent should say nothing
A scheduled agent on stale data won’t crash; it briefs you confidently off it. Here’s a deterministic freshness gate that decides when to stay quiet, and the tests that keep it honest.
-
My AI agent passed CI. My QA gate scored it 0.
AI code can pass CI and still feel wrong. A five-axis QA checklist that blocks test-passing screens which feel generic, untrustworthy, or inaccessible.
-
AI Agent Security Starts at the Context Boundary
Stop treating tool output as plain text. A practical boundary review for MCP servers, traces, red-team tests, and runtime AI-agent supply-chain risk.
-
Claude Fable 5: field notes and integration gotchas
Claude Fable 5 can refuse with a successful HTTP 200, or answer as Opus 4.8 if you let it. Day-one field notes, gotchas, and a migration checklist.
-
Lint your agent’s handoff file before it lies
Every long agent session ends with a handoff note, written by an amnesiac for an amnesiac. Mine was wrong before I saved it. Here’s how to make it checkable.
-
Five ESLint rules for React Native RTL bugs
React Native ships no RTL lint rules, and i18n plugins only flag untranslated strings. Five rules for the layout bugs that actually break right-to-left UIs.
-
Verifying AI Coding Agents: Receipts Beat Vibes
AI coding agents ship plausible work fast. Here’s how to make them prove which app, state, platform and screen they actually tested — receipts, not vibes.
-
I almost shipped a bug report I never tested
A token-saver was blamed for an agent committing a stale file. I wrote it up, then ran the test I’d skipped. The tool was innocent. The real cause was worse.
-
Guardrails over trust: shipping code from autonomous agents
In 2026 you assign a ticket and wake up to a finished pull request. Writing the code stopped being the hard part — trusting it is. How to stop trusting and start enforcing.