A1.06 · Meet the project: Portal · dive 2
Zero to production
Zero is an empty repository plus the one given branded-id store. Production is a deployed, supervised, multi-surface, observable Portal — reached only when every required rung has shipped.
Production is not “the code is written.” It is the set of properties a running system must have for students to depend on it: deployed, supervised, multi-surface, observable, reliable. Switch the view on the right to see what zero has and lacks, and what production demands.
Zero vs production · switch the endpoint
What “zero” is and what “production” demands
Zero is the smallest honest starting point: an empty repository and the single given component — the branded-id store. The store mints and decodes a typed id, and that is the whole system. Nothing is deployed, nothing is supervised, nothing is observed, and there is one surface: a function call inside a test.
Production is a deployed, supervised, multi-surface Portal: the store, an event-sourced engine behind one facade, a Phoenix web app, a Telegram bot, and a student dashboard. The word names a set of properties a running system must have, not a moment the code reaches. To call the Portal production, it must be deployed where students reach it, supervised so a failed part is restarted, multi-surface so it is reachable on more than one surface, observable so a failure is visible, and reliable as a consequence of the first four.
- zero
- An empty repository plus the one given branded-id store. One component, one surface (a test call); no deployment, supervision, or observability.
- production
- A deployed, supervised, multi-surface, observable Portal: store, engine behind one facade, Phoenix web, Telegram bot, dashboard.
- property
- A condition a running system must hold — deployed, supervised, multi-surface, observable, reliable — not a line of code that exists.
- the gap
- The distance from zero to production, measured as the required properties still absent. Closed rung by rung (the next section).
The OTP supervision that makes “supervised” true is taught by the companion /elixir course; this course cites it, it does not re-teach it.
The gap is closed rung by rung
The distance from zero to production is not crossed in one leap. Each production property is its own thin rung — deploy the store, supervise it, add the web surface, add the bot, add the dashboard, make each observable — and production is reached only when every required rung has shipped. A single attempt to deliver the whole platform at once is the big-bang failure mode (A1.01.2): the work is unprovable until the end, so it is unprovable for too long.
Step through the rungs to fill the production-readiness bar. The readout shows how many rungs have shipped, what fraction that is, the next rung still owed, and whether production is reached. Production turns on at the last rung, not part-way: an almost-deployed, half-supervised Portal is not in production.
Production-readiness · ship the required rungs
Production turns on at the last rung, not part-way — the gap from zero is crossed by thin increments, and an almost-deployed Portal is not in production.
Zero to production on the Portal
At zero, the only thing that works is the store, exercised in a test. It mints a typed id and decodes it back — one component, one surface, no deployment. Every production property is absent.
# Zero: the whole system is the branded-id store, called in a test. id = Portal.ID.generate(:user) # => "USR0NbAb1xcFCy" decoded = Portal.ID.decode(id) decoded.type # => :user decoded.timestamp # the embedded mint time # Production: the store is one of five components — engine behind one facade, # Phoenix web, Telegram bot, dashboard — deployed, supervised, observable. # Each property is its own rung; production is reached when every rung has shipped.
To reach production, each property is added as its own thin rung. Deploy the store; supervise it so a failed part is restarted; add the Phoenix web surface; add the Telegram bot; add the student dashboard; make each surface observable. Production is reached when every required rung has shipped — the same thin-increment discipline the whole course argues, run on one project end to end.
The principle
Define the finish line as properties a running system must hold, then close the distance with thin increments. Production is reached only when every required property is present — not in one leap.
On the Portal
Zero is the empty repo plus the store; production is the deployed, supervised, multi-surface, observable Portal — and each property (deploy, supervise, web, bot, dashboard, observable) is its own rung.
Production is a set of properties, not a moment; the gap from zero is crossed rung by rung, and the Portal carries that crossing end to end.
Recap — two endpoints, one thin-increment crossing
Zero is an empty repository plus the one given branded-id store: one component, one surface, no deployment. Production is a deployed, supervised, multi-surface, observable Portal — the store, the engine behind one facade, the Phoenix web app, the Telegram bot, and the dashboard. Production names a set of properties, not a moment, and the gap between the endpoints is closed rung by rung, reached only when every required rung has shipped. The next dive isolates the unit of that crossing: one rung at a time.
Next in A1.06: A1.06.3 · One rung at a time — the single thin increment that moves the Portal one step toward production, built and proven before the next.
References
Primary sources for production as a set of properties reached by thin increments, and where it connects in the course.
Sources
- Humble, J. & Farley, D. — Continuous Delivery — production-readiness as a property of the deployment pipeline, reached incrementally.
- Hunt, A. & Thomas, D. — The Pragmatic Programmer — small steps and a running, deployable system over a big-bang finish.
- Beck, K. — Extreme Programming Explained — continuous integration and frequent, small releases toward a deployable whole.
Related in this course
- A1.06 · Meet the project: Portal — the module hub.
- A1.01.2 · Big-bang specs — the leap this dive crosses by increments instead.
- A1.04 · Two layers: roadmap and specs — the layers each rung carries.
- A1 · Why an Agile Agent Workflow — the chapter.