Skip to content
The Liberation Engine

Before the disaster / Lesson 2 of 3 · Decide

Would you trust the grid's winter reserve?

An official grid assessment offered four winter scenarios before a major cold snap. Take the operator's seat, rebuild each reserve, and decide what a public promise can honestly say before a separate session opens the later record.

What the agent made

Ran it for real with Claude Code 2.1.300 and OMP 18.11.0 on 2026-10-15. The first session started with no saved memory; each later session was a new one that kept only the files in the folder. Your result will differ.

Then a brand-new session used what it saved on new input: see the proof.

The same prompts in OMP made their own versions, every session recorded and checked: session 1 · Open the later outage record.

Make your own

  1. Get the files

    Download the practice folder (ZIP)

    Unzip it: you get a folder called cli-practice with 3 practice files. The frozen folder contains ERCOT's November 2020 winter assessment and an August 2011 FERC/NERC cold-weather investigation. The February 2021 outcomes are withheld until the reveal. It also has a for-later folder with the new files for the fresh sessions.

  2. Open your agent in that folder

    Open a terminal in cli-practice and type claude or omp --approval-mode always-ask. First time? Set up in about five minutes, with steps for Mac, Windows, and Linux.

  3. Paste this prompt

    Work inside this practice folder with only sara.txt, winter-2011.txt, and SOURCES.csv. These documents are frozen as of November 5, 2020. Do not alter the source files, read outside the folder, use the network or APIs, install packages, ask for a reply, or report later events. Python 3 standard library only. Do not use em dashes or en dashes.
    
    You are advising a neighborhood emergency planner on one question: should ERCOT's published winter reserve be represented as a guarantee for an extreme cold event? Extract the four scenario columns from the assessment rather than guessing from a headline. Reconcile total resources, peak demand, pre-outage reserve, the separate load, maintenance, thermal forced-outage and wind adjustments, and remaining operating reserve in each column. Compute the thermal forced-outage total at which the extreme-load case would mathematically exhaust operating reserve if its other assumptions remained fixed; make clear which outage definitions and additional common-cause risks cannot be bounded from this packet. Explain the earlier FERC/NERC winterization warning from its actual words, including the difference between a cumulative 2011 loss and a simultaneous outage, and propose a specific emergency preparedness decision without alleging motives or assigning a probability. Keep normal operating reserves distinct from an instantaneous operational guarantee. Every factual claim must carry an ST1 or ST2 citation and a working original-source URL from SOURCES.csv. No named-person claim without an exact dated primary-record quotation and URL.
    
    Write only model.py, analysis.json, check.py, and analysis.html. model.py must parse the original input text to calculate JSON, document its source ledger, all four scenarios and unknowns, and never copy constants from remembered results. check.py must independently read the source texts without importing or invoking model.py, calculate the decision-critical quantities by a separate method, verify JSON and tagged HTML values and cited URLs, reject swapped scenario columns, a cumulative 2011 outage presented as a concurrent figure, and a made-up winter-storm probability. Its --self-test must inject at least three different in-memory corruptions (such as a changed reserve, swapped column, removed source URL) and demonstrate that each is rejected. Run python3 model.py, python3 check.py, python3 check.py --self-test, and report exit codes.
    
    Make analysis.html a complete, self-contained offline evidence room rather than a generic dashboard. Start with the dated question and grounded answer, then one source-linked inline SVG zero-baseline horizontal bar chart for the four remaining operating reserves in MW, with directly readable values and source IDs. Show every baseline number as ordinary semantic HTML even with JavaScript off. Include one meaningful bounded scenario control: adjust hypothetical extra thermal forced outages in the extreme-load/extreme-outage case, recalculate remaining operating reserve and visibly identify the zero-crossing; keep the published column immutable next to this hypothetical. Label it a sensitivity, never a measured outage or prediction. The page should let a reader inspect the older report's actual warning and see which assumptions the SARA does not prove. Each original official source is a short named link carrying its URL, so the address survives offline even though opening it requires a connection. No external images, fonts, scripts, libraries or CDN. A touch or keyboard activation must visibly change the finding, not just its decoration; reset restores the baseline. At 360 pixels wide and wider, the page fits the screen and nothing scrolls sideways, not even inside a table, chart or timeline box; charts scale to the width; no word or amount ever breaks mid-word; narrow tables become stacked cards; each source shows as a short named link with its URL in the link, never printed as page text. Also check a 1280 pixel layout and reduced motion. Never rely on JavaScript for the main numbers, finding, or sources.

    The prompt asks the agent to stay in this folder; it cannot enforce that. Read each file change and command before you approve it.

  4. Check it yourself

    Open cli-practice/analysis.html in your web browser (double-click it), then:

    Human check: ST1: 82,513 minus 57,699 equals 24,814 MW before modeled uses; four scenario uses 8,616 / 18,922 / 13,895 / 23,462 MW leave 16,198 / 5,892 / 10,919 / 1,352 MW. The extreme-load/extreme-outage column assumes 9,879 MW thermal forced outages (5,339 plus 4,540); at fixed 9,509 MW extra load and 4,074 MW maintenance, 11,231 MW total thermal forced outages exhaust its reserve, 1,352 MW above that column's forced assumption. ST2's 29,729 MW 2011 loss is cumulative, not a simultaneous peak. Run independent checker and self-test; no later facts in the blind page.

    When we checked the recording above: 2026-10-14 re-record (360px prompt): exit 0, no changed inputs; in a clean rebuilt folder the lesson checks and self-tests all exit 0; findings match the lesson human check and the other tool's run; headless sweep at 360/375/390/800/1024/1280 with all disclosures open and after every control: no element past the edge, no sideways scroller, no printed URLs; controls change visible text; no external requests

Then prove it: fresh sessions

Each run below is a brand-new session, recorded for real in Claude Code. It remembers nothing from the run before except the files saved in the folder, so the short prompt is the whole instruction.

2 · Open the later outage record

Before this run, copy the files from for-later/reveal in the ZIP into cli-practice: OUTCOME_SOURCES.csv, investigation-2021.txt, outages-2021.txt.

Quit the agent, start it again in cli-practice, and paste only this:

Work inside this practice folder. Read the frozen ST1 and ST2 documents and your previous outputs first, then read investigation-2021.txt, outages-2021.txt, and OUTCOME_SOURCES.csv. Leave all inputs and previous outputs untouched. No network, APIs, reads outside the folder, installs, or replies. Python 3 standard library only. Do not use em dashes or en dashes. This is a fresh session: never pass later observations off as knowable on November 5, 2020.

Write only reveal.json, reveal.html, and reveal-check.py. Make a self-contained offline HTML evidence room with two dated columns, what the 2020 assessment could support and what the later ERCOT and FERC/NERC reports established. Independently calculate the original scenario reserves from ST1, then compare the extreme thermal forced-outage assumption with ERCOT's later peak total unavailable generation and its component categories. Do not quietly equate a nameplate-capacity outage across all fuels, including existing outages, with forecast thermal forced outages. FERC/NERC also uses expected-capacity units for an average over two days: display it separately and do not call it the hourly peak. Put the observed peak next to the original modeled assumption with a clearly labeled unit and scope mismatch, and explain why their subtraction is illustrative, not a simulated real-time reserve shortfall. Differentiate actual observed peak demand from the later estimate of unconstrained demand, and do not infer an exact blackout-free supply gap or a single cause of every outage. Cite ST1-ST4 with working original URLs for each key claim. No named-person claim without an exact dated primary-record quotation and URL.

Include an inline source-linked zero-baseline SVG comparison in MW, all key numbers and limitations as ordinary HTML with scripts off, and a meaningful tap/keyboard accessible disclosure or comparison control that exposes the source evidence behind a consequential comparison. No external dependencies. At 360 pixels wide and wider, the page fits the screen and nothing scrolls sideways, not even inside a table, chart or timeline box; charts scale to the width; no word or amount ever breaks mid-word; narrow tables become stacked cards; each source shows as a short named link with its URL in the link, never printed as page text. Respect reduced motion and include a useful 1280 pixel layout. A visibly different evidence state must result from the interaction; baseline figures remain accessible with JavaScript disabled.

reveal.json must carry the independently recomputed old scenarios, separate dated later observations, source IDs/URLs, and explicit incomparable measurements and unknowns. reveal-check.py independently re-reads original and revealed source excerpts without importing model.py, checks JSON and tagged HTML key values, rejects 2021 facts in the as-of column or a nameplate peak masquerading as thermal forced outage, and self-tests three separate in-memory corruptions. Run python3 reveal-check.py and python3 reveal-check.py --self-test; report exit codes.

Human check: ST4's preliminary April 27 report shows 52,037 MW peak unavailable nameplate capacity on February 16 around 8 a.m., including 7,650 MW existing, 27,567 weather, 6,130 fuel, 7,457 equipment, 1,459 transmission, 512 miscellaneous, and 1,262 frequency. The other cause categories sum to 44,387 MW at that peak; they are not an identified thermal-only forced-outage peak. ST1 modeled 9,879 MW thermal forced outages in its most extreme printed column. Both 52,037 and 44,387 have different fuel, capacity and outage scope, so the gaps cannot be subtracted as actual operating reserves. ST3 reports an average 34,000 MW unavailable based on expected capacity over February 15-17, not a peak; 69,871 MW observed peak demand and 76,819 MW estimated without load management. Check both dated columns, comparison interaction, and independent checker plus self-test.

When we checked the recording: 2026-10-14 re-record (360px prompt): exit 0, no changed inputs; in a clean rebuilt folder the lesson checks and self-tests all exit 0; findings match the lesson human check and the other tool's run; headless sweep at 360/375/390/800/1024/1280 with all disclosures open and after every control: no element past the edge, no sideways scroller, no printed URLs; controls change visible text; no external requests

Do it for real

For a live grid plan, obtain the latest operator forecast, generation availability, fuel constraints, emergency-notification protocol, and local medical needs. Do not make a safety assurance from one seasonal table. Confirm protective action with the responsible grid and emergency-management professionals.

Why an agent, not a chat window

The agent transcribes a difficult four-column PDF table into reproducible arithmetic, isolates its load and outage assumptions, uses a prior official investigation to challenge the decision, and tests its own display with an independent source-reading checker. The later record enters only in a fresh session.

Go deeper

Why the prompt is written this way

The recorded runs

ToolModelFirst run tookFiles madeSessions
Claude Code 2.1.300claude-opus-5-515 min 04 s4first session + 1 later
OMP 18.11.0not logged by this tool20 min 20 s4first session + 1 later

Both answered no: the published winter reserve is not a guarantee for an extreme cold event, and both put the zero crossing at 1,352 MW of extra thermal forced outages, 11,231 MW in total. Each page pairs a slider with 250 MW step buttons and a reset beside the unchanged published column. On the reveal, Claude Code switches among three comparisons of the later outage measures; OMP gives every original and later figure its own source disclosure and adds a button that removes outages that existed before the storm. Claude Code's self-tests rejected 14 and 6 deliberate corruptions, OMP's 14 and 9.

Push it further