« Phase 16 · Warmup · Track Overview
Lab 01 — The Operating Model, as Code
The problem
Two people share accountability for a platform. It is going well, and then:
- The error budget hits zero on the 18th. A feature the business has committed to a customer is ready. One owner says freeze; the other says ship. Neither is wrong, and there is no rule.
- An agent is ready for production. It is "basically done" — the runbook exists, the alerts are configured, nobody has actually tested either. Somebody has to say no, and saying no to a peer with no criteria is a personality contest.
- A decision made in March, by two people who both remember it differently, is questioned in September. One of them has left.
- Six months of post-mortems, forty action items, and nobody knows how many were done.
None of these are failures of goodwill. They are missing instruments. Shared accountability without shared mechanisms is two people blaming each other after an incident.
You build the instruments: an ORR that is a gate rather than a grade, an error-budget policy signed before the first breach, a decision router that says who must sign, ADRs that are immutable, a standing design-review checklist, and an incident tracker that measures the only thing that matters.
What you build
| # | Component | What it does |
|---|---|---|
| 1 | ORR_CRITERIA, OrrScorer | mandatory gates + weighted advisories; evidence required per row |
| 2 | ErrorBudgetPolicy | four states → permitted change classes, with expiring exceptions |
| 3 | classify_decision, REQUIRED_SIGNERS | reversibility decides who signs |
| 4 | classify_disagreement | factual vs values, from one question |
| 5 | AdrStore | immutable, superseded, negative consequences required |
| 6 | DesignReview, STANDING_RULES | the standing red flags from every phase in this track |
| 7 | IncidentTracker | mitigation ≠ resolution; action completion as the metric |
| 8 | FORUMS | five audiences, five different answers |
Key concepts
| Concept | Where | Why it matters |
|---|---|---|
| Mandatory criteria carry no weight | OrrCriterion.__post_init__ | weighting a gate invites trading it away |
| Any mandatory failure fails | OrrScorer.score | at 100% advisory; otherwise it is a negotiation |
| Evidence required per row | evidence_required | "yes" with no artifact is a belief |
| Silence is not a pass | unanswered → failure | else an ORR is completed by omission |
| Alerts tested by injecting failure | ORR-02 | an untested alert is a belief |
| The runbook rehearsed by an outsider | ORR-03 | the author can always follow their own runbook |
| Six agent-specific rows | category="agent" | evals, red-team, scopes, cost, band, evidence |
| Freeze still permits reliability | STATE_POLICY | else the freeze extends itself |
| Tighter states are subsets | STATE_POLICY | the policy is a prefix of the risk order |
| Exceptions need both owners | grant_exception | one owner cannot suspend the shared instrument |
| Exceptions expire | is_live | else it is a policy change nobody agreed to |
| Exceptions are counted | exception_rate | the health metric for the policy itself |
| Reversibility decides signers | classify_decision | both-on-everything cannot move |
| "What would change your mind?" | classify_disagreement | separates factual from values in a minute |
| Never average a values disagreement | — | the midpoint is worse than either option |
| One option is not a decision | propose | it is a description |
| Negative consequences required | accept | an ADR without the cost has not been thought about |
| Superseded, never edited | amend raises | editing rewrites history silently |
| The rules are standing | STANDING_RULES | so a tired reviewer still catches it |
| A rule that raises is a blocker | review | fail closed, as in Phase 09 |
| Mitigation is not resolution | resolve | conflating them is how incidents recur |
| An action needs a named human | add_action | "the team" completes nothing |
| Dropping needs a reason | drop | and dropped items leave the denominator |
| Completion rate is the measure | health | everybody writes post-mortems |
| Five forums, five answers | FORUMS | the same deck fails five different ways |
Files
| File | Role |
|---|---|
| lab.py | your implementation |
| solution.py | reference; python solution.py runs an eight-part worked session |
| test_lab.py | 113 tests |
| requirements.txt | pytest |
Run
pip install -r requirements.txt
pytest test_lab.py -v
LAB_MODULE=solution pytest test_lab.py -v
python solution.py
Success criteria
-
All 113 tests green against your
lab.py. - A mandatory criterion with a weight is rejected at construction.
- One mandatory failure fails the ORR at a 100% advisory score.
- An unanswered mandatory criterion is a failure, not a gap.
- A mandatory "yes" with no evidence fails, and the reason names what was required.
- Every tighter budget state permits a subset of the looser one.
-
Freeze still permits
EMERGENCY_FIXandRELIABILITY. - An exception needs both owners, a real reason, and expires.
- An exception is consumed once and covers only its own change class.
- Exceeding the exception rate is refused, saying the policy should be renegotiated.
- An irreversible decision recorded by one owner is rejected.
- Two positions with falsifiers are factual; neither is values; one is unclear.
- An ADR with one option is refused; with no negative consequences it cannot be accepted.
-
amendalways raises; supersession requires both ADRs accepted. - A design missing its blast radius, denial, degradation, artifacts or operator is blocked.
- Side-effecting tools with no idempotency or no autonomy band are blocked.
- A review rule that raises produces a blocker.
- An incident cannot be resolved before it is mitigated.
- A dropped action leaves the denominator; a completed one raises the rate.
-
All five JD forums are present with
wants,artifactandfails_when.
How this maps to the real stack
| This lab | The real thing | What we simplified |
|---|---|---|
OrrScorer | a readiness review in Confluence or ServiceNow, with a human panel | no workflow, no sign-off routing, no evidence attachment |
ErrorBudgetPolicy | an SLO platform plus a written policy plus a deploy gate | no integration with the pipeline; the rules are the point |
AdrStore | markdown ADRs in the repo, with adr-tools or MADR | no rendering, no search, no cross-linking |
DesignReview | a review template plus a human reviewer | rules on a structured doc; a real one reviews prose |
IncidentTracker | PagerDuty + Jira + a post-mortem template | no on-call, no paging, no incident comms |
FORUMS | an actual governance calendar | a briefing card per forum |
Honest limits. None of this replaces the conversation. The disagreement protocol classifies a disagreement; it does not resolve one, and the hard part — two people finding out they disagree about values and saying so plainly — is not code. The ORR scorer cannot tell whether the evidence link actually shows what it claims, so a determined team can pass it with plausible URLs; the defence is a human panel, which is why the real ORR has one. The error-budget policy assumes the budget number is trusted (Phase 14) and does nothing if the SLI is wrong. The design-review rules operate on a structured document, and requiring structure is itself an intervention a real organization may resist. And the completion-rate metric is gameable in the obvious way — drop the hard actions — which is why the drop reason is recorded and reviewed.
Extensions
- Wire the ORR to the deploy pipeline. A promotion that calls
score()and refuses. Then watch what happens the first time it blocks something urgent — that conversation is the real test. - Wire the budget policy to CI. The change class comes from a PR label; the budget comes from the SLO platform. Now the freeze is mechanical rather than an argument.
- Render ADRs to markdown in the repo, with the supersession chain as links. Architectural memory that a new joiner can actually read.
- Add a decision log to the disagreement protocol: every escalation, both positions, the resolution, and who committed. Then review it quarterly and see which disagreements recur.
- Generate the design-review template from the rules, so the document's fields and the checklist cannot drift apart.
- Track action items by age, not just completion — the oldest unresolved action is a better signal than the rate (Phase 12's break ageing, applied here).
- Build the forum briefing generator: given a forum name, assemble the artifacts that forum wants from the other phases' systems.
- A pairing rota for the ORR. The reviewer is never from the building team, and the rota is published — which is the same independence argument as Phase 15's validation.
Interview / resume bullets
- "Operated two-in-a-box with the Platform Product Owner under undivided accountability — shared roadmap, shared architectural decisions, shared pager — and built the instruments that make shared accountability survive a real disagreement rather than dissolve into one."
- "Signed a four-state error-budget policy before the first breach, with exceptions requiring both owners, a stated reason and an expiry — and tracked the exception rate as the health metric for the policy itself, which is what stops a policy being quietly replaced by a habit."
- "Introduced an ORR where any mandatory criterion fails the review at any advisory score, and where every criterion names the artifact that proves it — which turned 'ready for production' from a feeling into a checklist that a peer can apply without it becoming a personality contest."
- "Added six agent-specific ORR criteria a generic readiness review does not have: eval suite, red-team containment, tool-scope review, per-tenant cost ceiling, autonomy band, and evidence-pack generability."
- "Established a disagreement protocol that separates factual disagreements — resolved by measurement — from value disagreements, which are escalated with both written positions rather than averaged, because a design at the midpoint of two coherent positions is worse than either."
- "Made ADRs immutable and required negative consequences before acceptance, so architectural reasoning survived both owners and a successor could tell whether a trade-off still held."
- "Tracked post-mortem action completion as a first-class metric, with dropped items requiring an explicit reason — which is the only honest measure of whether a post-mortem culture is a process or a writing exercise."