How dp builds software
The development workflow, step by step — for a developer who has never seen dp.
The whole flow
Claude writes the code — programs carry it out
1Action
one unit of work
2Coding session
Claude writes the fix and its test
3Tester
runs the e2e test
4Releaser
stage, then prod
5Node agent
installs on each box
When anything goes red
1Red test, release or install
2Fail stream
one record per root cause
3Fail session
Claude fixes the cause
4Test again
Step 1 · the action
Every piece of work is one action
what it isexample name
Actionone unit of work261018-action-dp-store-harness
Groupone package's actions, tested and released together261012-group-pkg-dp-node-agent-20
Projectgroups that serve one goal261017-proj-franska-besiktning
People read the dated name. Everything else links by _id, which never changes.
Step 2 · the stages
Eight stages, in order, none skipped
1
new
filed
2
fixed
the code is written
3
test-created
the e2e step that proves it exists
4
local-tested
green on the tester
5
stage-released
running on stage
6
stage-tested
green on stage
7
prod-released
running in production
8
done
finished
Stages 1–3: the coding session. Stages 4–8: the tester and the releaser.
Step 3 · the coding session
A coding session is Claude, running headless
Runsclaude -p, stream-json in and out
Kept alive byrun_headless_session.ts
Processone systemd unit per session
Binds2.6 s (3.4 s with a terminal)
Memory263 MB (340 MB with a terminal)
1takes one action (take)
2works in its own Linux overlay work tree
3writes the fix; code.typecheck comes back clean
4writes the action's e2e step; fixed → test-created
5commits with one Action: line, pushes, takes the next
Step 4 · when a session is done
A session is done when the facts say so
its actions
at test-created — the tester moves next
or parked
on a question to Adrian — he moves next
its commits
on master
sessions.declare_done questions 0 · tasks 0 · actions 0 · commits 0 · other 0
The mesh counts the same facts. Zero on both sides closes the session; otherwise it answers, for example: “tasks: you declared 0, the mesh reads 2”
Step 5 · the test starts itself
The last action in starts the group's test
Action A
test-created
Action B
test-created
Action C
test-created — arrives last
Action D
parked on a question
C arrives → the test starts. D holds nothing back.
The group locks; D moves to the package's next group.
Arming on the first action split Workwear's 41 review actions into 11 groups — 11 test runs and 11 releases for one review (13 October). gate_arm_verdict.ts
Step 5 · tester, releaser, node agent
Three programs take turns — nobody watches
1
Tester
runs the e2e steps on dp-box-reviewer and climbs the actions
2
Releaser
stage, then prod — prod is locked 06:00–20:00 on weekdays
3
Node agent
each box installs the published package
Each step is started by the one before. Nothing polls.
The test gate was once a model session reading the board every two minutes. Now it is run_test_gate.ts, and a model opens only on red. settle_parents.ts, operate.ts
Step 6 · failures
Every red goes to one place: the fail stream
1a red test, release or install is published as a failure
2repeats of one error fold into one record
3a new error: one Haiku call matches it to a known root cause
4each root cause gets one fail session — at most 3 at once
✓it fixes the cause, starts the test again, closes itself
Step 7 · the reasoning
Claude only where judgement is needed
Claude — judgement
coding an action
diagnosing and fixing a failure
Plain code — events
starting a test and running it
releasing to stage and prod
installing on each box
closing a session
Step 7 · the rules
Four rules hold it together
1
Done is a fact
a stage, a green test, an answer from Adrian — never a sentence
2
Root cause, no fallbacks
measure the cause before the fix; a fallback hides the defect
3
The rulebook
every correction becomes a rule — 541 in dp-brain/rulebook
4
Hooks
26 checks run before every shell command; a breach is refused with the right command
Your day
What a developer does day to day
Steer the sessions
give a session its order
answer the questions on actions
approve from a before/after picture
read the fail stream
Code by hand — the same steps
take the action; read the rulebook slice
fix; code.typecheck clean
write the e2e step; climb to test-created
commit with Action:, push — then it is the tester's
→ / click for next · N notes · F full screen