You can write Python
Run the supplied application and trace one request. Learn what belongs around generated code before you ask an agent to change it.
Begin with the baselineProf Rod’s lab · Build, test, inspect
Turn feature requests and bug reports into tested software with coding agents. Build the workflow, run it on a small application, and learn where human decisions are still needed.
Free lessons and source code. No course account required.
A dark software factory is a workflow in which coding agents implement software changes and automated checks decide whether a candidate can proceed. The aim is to reduce the human work needed for each change. Humans still choose the task, set the acceptance criteria and decide what the workflow is allowed to touch.
The software it produces can be an ordinary application. In this workshop, the application updates a synthetic customer’s contact details. There is no language model in its request path. The coding agent helps change the application; a separate checker judges what the resulting application does.
Start with a narrow question: can this workflow implement one specified change, show the evidence and refuse a bad result? A passing teaching exercise does not establish that it can maintain an arbitrary production system unattended.
Run the supplied application and trace one request. Learn what belongs around generated code before you ask an agent to change it.
Begin with the baselineTurn “don’t update the customer twice” into an acceptance contract. Check the receiving system’s ledger, not just the API response.
Write the change contractInvestigate uncertain writes and test the release decision itself. A deliberately faulty candidate should fail even when it reports success.
Inspect the failure exerciseOne application · Five lessons
You’ll get a runnable Python project, change requests, acceptance checks and worked solutions. Run the reference application without a model account. To generate your own candidate, use the supplied bounded builder with a paid Claude Code account.
You need a terminal, Python 3.11 or later on the host, a running Docker engine and enough Python to follow a function that calls an API. The containers use the pinned Python 3.13 image. All customer records are synthetic. Deployment stays in disposable local containers.
The email edition is being prepared. You can start now: all five lessons and the project are available below.
Run a contact-update service against a synthetic dependency. Inspect the evidence for a confirmed write and a lost response.
Specify duplicate-request handling, account boundaries and restart behavior before asking a coding agent to change the application.
Generate one candidate file, keep credentials outside its runtime and record every attempt without changing the acceptance checks.
Check the candidate against an independent effect ledger, then repeat the checks in a fresh disposable deployment.
Add reconciliation, inject a false confirmation and verify that the factory refuses to release the faulty application.
These existing articles explain the boundaries, evaluation choices and human effort that the workshop puts into practice.
Turn a customer request into a contract the builder cannot silently change.
Inspect a test revision and challenge the checker with a faulty candidate.
Choose a bounded task and decide what would make you stop it.
Give the reviewer evidence without inheriting the builder’s assumptions.
Design the environment around the behavior you need to observe.
Count verification and recovery work when judging an automated workflow.
The always-on agent book develops tools, memory and recovery inside an agent. Here, we examine the process around a coding agent: task definition, isolated execution, independent acceptance and release. The book gives useful background; it is not a prerequisite.
Learn
Save your progress with a free account.
Checking sign-in…
Cookie duty
The one he did not eat is a measurement cookie. Say yes and the site loads Google Analytics (GA4), which stores an identifier in your browser and lets us count which lessons get read.
Change your mind any time with Privacy choices in the footer. Read the Privacy Policy
Optional · newsletter
That is saved and settled. Separately, and this is marketing rather than measurement: Rod writes a weekly email — one lesson, one field note — sent through Kit. It has nothing to do with cookies, and skipping it costs you nothing.
We will send a confirmation email. Click the link in it and the next lesson finds you.