Scenarios: the bot that agreed to sell a Tahoe for $1 (FailFest VH-022, Chevrolet of
Watsonville / Fullpath) and the deploy that lost $440M in 45 minutes (VH-056, Knight Capital).
Time: 60 minutes. Install: Python 3.11+, git; one pip install from source.
Skills needed: either. The plain-words path writes the rules as sentences and lets the tools render
them; the code path writes YAML and reads the sentences back.
Train: Fall 2026 · live works today; fall lands in the Fall release.
Wren says: if you don’t have an agent of your own, borrow the Matchmaker (the worked example) — the worksheet counts the same. If Python scares you, do steps 1–3 on paper and pair with a code-path 200 on Thursday.
| Step | Minutes | Status |
|---|---|---|
| 1 Read both cases | 5 | live |
| 2 List your agent’s three consequential actions | 10 | live |
| 3 Declare the policy | 10 | live |
| 4 Policy gate: validate it, build a bundle | 10 | live |
| 5 Read it, change one line, diff | 10 | live |
| 6 Gate one real call | 10 | live (tier-1 gate) → fall (SDK) |
| 7 Return | 5 | live |
1 · Read both cases (5 min) — live
VH-022. A dealership’s customer-service bot, prompted to “agree with anything the customer says”, agreed to sell a 2024 Tahoe for $1 and called it a legally binding offer. Gate: system prompts are not security boundaries; consequential commitments require deterministic rules, not LLM goodwill.
VH-056. Knight Capital deployed new trading code to seven of eight servers; the eighth ran old code with a repurposed flag. Forty-five minutes, $440 million. Gate: algorithmic systems with market-moving authority have deploy gating, kill switches and rehearsed rollback.
One is about the agent. One is about the pipeline that ships the agent. You will gate both.
2 · Your agent’s three consequential actions (10 min) — live
Pick something of yours that calls a tool: a chatbot, a script, a workflow, a coding agent. List the three actions it can take that would matter if it took them wrongly, and tier each:
| # | Action (as the system names it) | Who or what it affects | Tier | Reversible? |
|---|---|---|---|---|
| 1 | ______________ |
C_ | ☐ | |
| 2 | ______________ |
C_ | ☐ | |
| 3 | ______________ |
C_ | ☐ |
If none is C2 or above, your agent does not need a gate yet — write that down; it is a finding.
3 · Declare the policy (10 min) — live
Plain-words path. Write one sentence per action, in the corpus’s style — “a commitment to a customer is never made by the model alone.”
Code path. Put the three controls in policy.yaml (template beside this worksheet). Include one
C3 hold with an approver_role, and one C4 deny with a reason. Unknown actions are denied by
default; write that line too.
Whichever path you took, produce the other: read the YAML aloud as sentences, or have a colleague on the code path type your sentences in. Byte-identical receipts later depend on the rule being one rule.
4 · Policy gate — validate it, build a bundle (10 min) — live
pipx install git+https://github.com/aigovops-foundation/umbrella-govops # or: pip install .
umbrella-conformance check . # the policy gate: the rule is valid or it does not run
umbrella-conformance bundle --out ./out # a signable evidence bundle
umbrella-conformance verify ./out/bundle.tar.gz
Record: check ☐ passed ☐ failed (what it said: ____). Bundle path: ______
Fall: pipx install umbrella-conformance from PyPI; the gate vocabulary (tiers, decisions,
constraints, stop conditions) validated by name; the policy catalog accepts your file by PR.
5 · Read it, change one line, diff (10 min) — live
pip install git+https://github.com/aigovops-foundation/aigovops-lantern.git
lantern read -f markdown -r compliance ./out/<receipts>.ndjson
Now weaken one rule — turn the C3 hold into C1 allow — rebuild, and:
lantern diff -r engineer ./before.ndjson ./after.ndjson
Write what the diff said changed: ______________
Put the rule back. This is the Knight Capital gate: a policy change is itself a governed event. In your CI, the policy gate refuses the merge until a reviewer sees that diff. (Fall: the Lantern GitHub Action posts it on the PR.)
6 · Gate one real call (10 min) — live with the tier-1 gate · fall with the SDK
Live. The Foundation’s aigovops repo runs the gate alone with zero dependencies:
node packages/cli/src/cli.mjs up --tier 1 from a clone (see its README). Point one of your agent’s
tool calls through it for one run and keep the receipt it writes.
Fall. pip install aigovops-beacon · beacon gate init · wrap the call:
decision = gate.check(intent) — only the broker executes, and only what was approved.
Either way, record the one receipt: seq __ · decision ____ · action hash ____
7 · Return (5 min) — live
Open a PR that adds your policy.yaml to this repo under catalog/<your-system>/ (fall: the Umbrella
catalog). Write four sentences for the story pipeline: what the agent does, what it must never do, what
the gate said, what changed. Thursday: pair with a 100 and watch them get their first receipt.
No one left behind
| If you… | Then… |
|---|---|
| have no agent of your own | Borrow the Matchmaker worked example in this directory. Retrofitting a borrowed agent is the same practice; the mark says so. |
| cannot install anything (locked-down laptop) | Do steps 1–3 and 7 on paper; pair with a code-path 200 on Thursday who runs steps 4–6 with you on their machine. Your policy is still yours. |
| write policy but not code | Write the three sentences; the YAML template beside this worksheet has one line to change per sentence. Wren reads the YAML back to you as sentences. |
| write code but not policy | Fill the YAML; then read it aloud as sentences to one person before Thursday. If they frown, the rule is wrong, not the listener. |
| have ten minutes | Step 2 only — the three consequential actions, tiered. That table is the level’s real work; the rest is typing. |
Take-home: your policy in the catalog; one bundle; one diff; one refused downgrade. Next: Level 300 — Hold, when the agent touches people, money or rights.
Checklist — one page
One page. Tick as you go. · Scenarios VH-022 Chevrolet of Watsonville · VH-056 Knight Capital · 60 minutes · one install
Before
- I am a 100 (a host marked it).
- I have an agent, script, bot or workflow of my own that calls a tool.
- Python 3.11+ and git are installed.
Declare
- I listed my agent’s three consequential actions, tiered, with “reversible?” answered.
policy.yamlhas oneC3 holdwith an approver, oneC4 denywith a reason, anddefault: deny.- The rules exist in both forms — sentences and YAML — and say the same thing.
Policy gate
umbrella-conformance check .passed.umbrella-conformance bundleproduced a bundle;verifypassed on it.
Read · diff
lantern read -r compliancerendered the bundle.- I weakened one rule, rebuilt, ran
lantern diff, wrote down what it said, and put the rule back. - I know where in my CI the policy gate would refuse that downgrade.
Decide · prove
- One real tool call went through a gate (tier-1
aigovopsgate today; the SDK in Fall) and I have its receipt.
Return
- My
policy.yamlis in a PR to the catalog. - Four sentences for the story pipeline are written.
- Thursday: I paired with a 100 through their first receipt.
- A 300 or above marked me 200.