Agentic Development

Staff engineer defines constraint engineering for reliable AI workflows

Ian Johnson has published a book and built an internal factory to manage AI coding agents using deterministic infrastructure. He argues that constraining non-deterministic models through layered controls is essential for reliable software delivery.

· 1 source · Constraint engineering

Ian Johnson, a staff software engineer at Parental, has built an internal 'factory' to manage AI coding agents. The system is written in Python and UV, functioning as a deterministic distributed queue with a dead letter queue and retry loops, rather than an inferential orchestrator. It uses the Claude SDK to dispatch agents as jobs, ensuring no inference occurs within the factory itself. Each job has specific input and output criteria; for example, a card cannot enter review until executed with a zero exit code. Johnson uses a 'charter'—agent-specific configuration files like .claude or agents.md—to constrain model behavior. He notes that the factory allows for parallelized work by persisting state to disk, avoiding limitations described by Fred Brooks. The team uses this for backend changes with unit tests, while interactive sessions are reserved for UI/UX work. Johnson is currently porting this factory to a tool called '3i', which handles distributed systems concerns.

Johnson has also published a book titled 'Harness Engineering: Building Reliable Workflows Around Non-Deterministic Agents,' available on LeanPub. The book outlines patterns for constraining AI agents through three layers: the charter, the harness, and the factory. He categorizes 'loop engineering' and 'graph engineering' as sub-disciplines of 'constraint engineering.' At Parental, the adoption of AI agents has altered testing and onboarding practices. The team uses a TDD loop where the model writes tests first, presenting a list of potential test cases for human review before implementation. A 'prove step' requires the agent to run the feature end-to-end and document the result before staging deployment. For onboarding, new team members spend three days using the charter as a tutor. Johnson argues that pair programming remains vital, especially for junior developers, to teach them the 'tells' seniors use. He warns that without concerted effort to support juniors through AI-assisted pair programming, the industry may face a talent shortage in five to six years.