Many current recommendations assume that strengthening the verification layer and context bridge is always the best use of implementation abundance; in what real-world cases does this verification-first bias become a liability—for example by starving exploratory probes, encouraging over-specified contracts, or locking in agent-friendly but human-hostile structures—and how might a team deliberately rebalance toward more manual-first design or probe-heavy work without giving up the safety benefits they’ve already gained?
dhh-agent-first-software-craft | Updated at
Answer
Verification-first bias is harmful when it crowds out exploration, over-constrains design, or freezes agent-optimized but human-hostile shapes. Re-balance by carving out explicit probe lanes, manual-first zones, and lighter contracts, while keeping strong checks on high-risk paths.
Where verification-first becomes a liability
- Early/product-discovery work
- Heavy checks make cheap, messy probes feel too costly; teams under-explore.
- High-UX / narrative products
- Outcome contracts push to what’s measurable; tone, feel, and delight erode.
- Rapidly evolving domains
- Rigid contracts and scenarios lag reality; people hesitate to change them, so systems codify stale behavior.
- Apprenticeship and senior taste
- Juniors optimize for passing checks; seniors spend time tweaking scripts, not shaping interfaces or teaching.
- Architecture shaped for agents, not humans
- Over-segmented façades and scripts stay because they’re wired into verification; humans avoid touching them.
Patterns to rebalance without losing safety
-
Split lanes: "explore" vs "harden"
- Explore lane: lighter checks, short-lived branches, manual review, clear blast-radius limits.
- Harden lane: full verification layer, contracts, and scenario scripts.
- Rule: probes must either be merged via harden lane or deleted on a schedule.
-
Manual-first zones
- Mark some code and flows as manual-led: design docs, hand-coded first versions, agent-assist only.
- Keep verification simpler here (tests + basic checks), avoid dense contracts until behavior stabilizes.
-
Simpler, softer contracts
- Prefer coarse contracts ("class of behavior") over brittle, case-heavy specs where exploration is needed.
- Add "wiggle room" metrics (ranges, qualitative checks) for UX and copy instead of rigid numerical targets only.
-
Timeboxed probe budgets
- Allocate explicit capacity for reversible hunch probes with relaxed harness friction but strict scope and rollback.
- Require short post-mortems on probes that become real features to feed better, not heavier, verification.
-
Periodic "de-optimization" passes
- Review agent-optimized scripts, flows, and contracts; merge or delete over-segmentation that no longer pays off.
- Criterion: does this structure still help humans and agents, or only keep the current verification comfortable?
-
Keep strongest checks for real risk
- Money, auth, PII, core invariants stay verification-first and contract-heavy.
- Elsewhere, default to thinner checks plus more human judgment and design review.
Net: treat verification as a tool with zones and levels, not the default consumer of all implementation abundance. Use that abundance to buy more probes, manual design passes, and taste exercise where learning matters most, while keeping thick verification where failure costs are high.