How it works What it refuses Who it is for

Twenty-one corrections in this corpus. One of them fixed a spelling mistake.

What filers actually correct, counted from the filings, across seven state commissions.

On 9 September 2025 the Kentucky Attorney General and KIUC filed Lane Kollen's direct testimony in case 2025-00113. Page 95 of that testimony, PDF page 98:

 7            their request for CPCN for Brown BESS. The Companies agree to take necessary

ky-2025-00113-kollen-direct-testimony-original.txt, line 4,608 · source PDF at psc.ky.gov

Two hundred and twenty-three PDF pages later, the same file reproduces the settlement that sentence describes:

         1.2.   Withdrawal of Cane Run Battery Energy Storage System ("BESS") CPCN

Request. The Utilities will withdraw their request for the Cane Run BESS without prejudice in

Same file, lines 13,566 and 13,568, PDF page 321. The two passages sit 670,104 characters apart in one 378-page filing.

Brown and Cane Run are different generating stations. Three weeks later:

Written Direct Testimony of their Witness Mr. Lane Kollen. The corrections are found on
page 95 of Mr. Kollen’s testimony, and changes original references to “Brown BESS” to now
read “Cane Run BESS.”

ky-2025-00113-kollen-correction-cover-letter.txt, lines 25–27 · source PDF at psc.ky.gov

Nobody needed the corrected version to find that. Page 95 says Brown BESS; section 1.2 of the settlement bound into the same PDF says Cane Run BESS; they describe one withdrawal. The document contradicted itself on the day it was filed. That is the pattern, and it is worth counting.

What I counted, and how

The corpus behind this site holds 102 public filings from eight jurisdictions, each with a provenance record naming its source URL, docket, filer, filing date and hash. Twenty of those filings correct an earlier one. One of the twenty, a Georgia Power refiling, corrects two quarterly reports at once, so there are twenty-one corrections, across nine dockets and seven state commissions.

That is the whole population, and the rule that makes it is one you can run: a filing that corrects an earlier filing whose date is on the record. For seventeen of the twenty-one the earlier version is in the corpus too. For the other four the date comes from the correction's own covering letter. Three corrected filings in the corpus are out because neither holds — the Indiana consumer counsellor's corrected exhibits for Alvarez, Gruca and Wright carry no notice saying what moved and no date for what they replace. Two more are out because they are not corrections: Duke refiling two reports into a new docket, and Ameren's amended stipulation, which is a renegotiated agreement.

To read each pair I split the file on newline, collapsed runs of whitespace on every line and stripped it, ran difflib.SequenceMatcher over the two line lists, and took every opcode that is not equal as one region. Then I read the regions. Where the filer's own notice says what changed, that governs and I quote it below.

import difflib, re

def lines(path):
    text = open(path, encoding="utf-8").read()
    return [re.sub(r"\s+", " ", l).strip() for l in text.split("\n")]

a = lines("data/real/mo-ET-2025-0184-michels-direct-testimony-original-public.txt")
b = lines("data/real/mo-ET-2025-0184-michels-substitute-direct-testimony-public.txt")
ops = difflib.SequenceMatcher(None, a, b, autojunk=False).get_opcodes()
print(len(a), sum(1 for op in ops if op[0] != "equal"))

Prints 2177 3. Every line number on this page is a one-based index into text.split("\n"). Do not use splitlines(): these files keep the PDF's form feeds, so splitlines() counts each page break as a line and shifts every number. In the Kollen file that is a drift of 377.

Sorting twenty-one corrections into kinds is a reading job, not a script, so the chart below is my judgement. Every filing behind every bar is named in this piece or in data/real/, so you can disagree with a specific row.

Twenty-one corrections by what the filer was fixing Horizontal bars, one per kind, longest first. A number or a figure that was wrong, six, none of which a check on the filing alone would have flagged. Something left out, four, none flagged. The redaction step broke it, four, of which two flagged. A pointer that moved, two, of which one flagged. The basis a figure was counted on, one, flagged. The wrong thing named, one, flagged. The wrong direction meant, one, flagged. The filer never says what, one, not flagged. A passage rewritten, one, not flagged. Six of the twenty-one flagged in total. corrections a number or a figure that was wrong 6 something left out 4 the redaction step broke it 4 a pointer that moved 2 the basis a figure was counted on 1 the wrong thing named 1 the wrong direction meant 1 the filer never says what 1 a passage rewritten 1 21 corrections · 6 of them flagged by a check that opens nothing but the filing itself
corrections in the category a check on the filing alone would have flagged it
No bar for spelling. Not one of the twenty-one was filed to fix a typo. The only spelling and grammar changes in the corpus ride along inside an errata filed to renumber exhibits, and there are three of them. Amber means what it means everywhere else in this product: not asserted, sent to a person. The four checks it stands for are listed below, and each one reads a single document.

What the categories hold

A pointer that moved — 2

Ameren Missouri's witness Michels filed direct testimony on 14 May 2025 and a substitute five days later. The whole difference is three page footers citing the rule that keeps each page confidential: the original cites one authority three ways, 20 CSR 4240-2.135(2)(A)4,8 once and 20 CSR 4240-2.135(2)(A) twice, and the substitute makes all three (2)(A)4. Nothing else in 2,177 lines moved. In Mark Ellis's Utah errata two exhibit renumberings cross over — 2.2D becomes 6.1D, 2.1D becomes 6.2D — so the obvious rule, swap the 2 for a 6, gets both wrong.

A number or a figure that was wrong — 6

NIPSCO filed its 2021 performance metrics report on 1 July 2022 and a revision 46 days later:

After filing the 2021 Performance Metrics Report, NIPSCO discovered that 
the “DART” reported for 2020 and 2021 in Figure 2 on page 5 were 
incorrect.  Previously reported as 1.4 and 2.06, respectively, the numbers should 
have been 1.59 and 1.69, respectively.

in-44688-nipsco-compliance-filing-pmc-update-v2-revision.txt · source PDF at iurc.portal.in.gov

As reported, the injury rate rose 47 per cent in a year. As corrected, 6. The sentence that explains the rise is not touched. It reads the same in both filings: “NIPSCO’s DART rate was impacted by the number of COVID-19 related cases requiring employees to be off work while recovering.” The revision moved the figure and the data appendix under it and left the prose to argue a 47 per cent jump that the new numbers do not show.

The plainest of the six is Virginia. Dominion's application went in on 31 March 2025; 35 days later an errata said a digit had dropped out of Figure 1 on page 5 of Stan Blackwell's testimony, and billed sales to data centres for 2024 should read 24,248,543, not 4,248,543. The errata's own page prints a Gross Change of 660 per cent against a 2013 figure of 3,191,987, which is what 24,248,543 gives. The dropped-digit version gives 33. I cannot tell you whether the original printed 660 per cent beside 4,248,543, because the original application is not in this corpus and I have not opened it.

The redaction step broke it — 4

Four corrections exist only because somebody made a public version of a confidential document. Georgia Power's change flags, twice, are below. Virginia Staff pulled back three pages of Daniel Long's testimony that had been “erroneously designated as confidential”; Dominion's first Miller errata flipped three more the same way, on two other witnesses' pages. None of these is a mistake in the work. They are mistakes in the copy the public gets.

The basis a figure was counted on — 1

Billie LaConte's Utah testimony sets its own convention on page 2, then drops it:

39          x RMP is seeking to recover $185.7 million (total Company) or $82 million
40               (Utah-allocated) for ELI in the test year.1 RMP seeks recovery of its test-year

  […]

175           of $112.1 million in ELI expense for RMP’s 2023-2024 policy period.9  I understand

  […]

192           deferred ELI premium by $30.9 million.

ut-24-035-04-laconte-phase3-direct-testimony-original.txt, testimony lines 39–40, 175 and 192. The bullet on line 39 extracts as x; that is the PDF, not a typo · source PDF at pscdocs.utah.gov

Eighteen days later the amendment adds (total Company) at line 175, inserts a sentence giving the Utah share — 44.258 per cent, or $49.6 million — and turns $30.9 million into $5.8 million. Her covering letter gives the reason: the recommendation “needed to be updated to reflect only the Utah-allocated amount.” Table 1 and the 0.86 per cent midpoint the sentence rests on are unchanged in both versions; only the answer moves. The inserted sentence also pushes every numbered line from 184 down by one and renumbers footnotes 10 to 15 as 11 to 16, so every line cite written before 25 February now points one off.

Something left out — 4

Missouri's global stipulation came back two days later as CORRECTED, carrying the EXHIBIT A rate table it had shipped without. Duke's spring 2026 large-load report came back 85 days later: “We regret that due to a technical issue several ESAs were inadvertently omitted from the April 15, 2026 filing” — the attachments would not fit. And the Missouri Commission corrected its own order nine days after issuing it, because its summary of the revenue-sharing term left out a step. Ameren had to file a motion to get that one moved.

The three wording changes

They are not a category, because no filer filed for them. All three ride inside Mark Ellis's errata, which was filed to renumber his exhibits: whitepaper became white paper; infrequent-but-extreme lost its hyphens; recover insurable losses are recoverable in rates lost the duplicated verb. Three in 102 filings, and the hyphens are not in the errata notice at all.

Which errors survive a review

Proofreading is the check every filer already runs, and it works. That is why nobody in this corpus filed an errata to fix a typo. Typing mistakes rarely survive proofreading, and the three that did travelled as passengers on an errata filed for something else.

The twenty-one survive because they read correctly. Brown is a real plant, $30.9 million a real figure, OCS 2.1D a well-formed exhibit number, 20 CSR 4240-2.135(2)(A) a real rule, 4,248,543 a real-looking megawatt-hour count. Each is the wrong one of a set of right-looking things, so a spell-check passes it, and so does a language model asked whether the sentence reads right — because it does. Then they sit in the record.

Days from filing to correction, twenty-one corrections A dot for each of the twenty-one corrections, placed on an axis of days from the original filing to the correction. The values are 2, 2, 5, 7, 9, 11, 14, 18, 21, 21, 21, 21, 27, 28, 35, 42, 46, 68, 82, 85 and 103 days. The median is 21. The four longest are Walmart's inverted prefix at 68 days, Georgia Power's third IRP errata at 82, Duke's omitted service agreements at 85, and Georgia Power's third-quarter change flags at 103. 0 20 40 60 80 100 days the error stood in the public record before the correction was filed median 21 days 2 Missouri stipulation · Virginia Miller 68 Walmart interclass 82 · 85 Georgia IRP · Duke ESAs 103 Georgia Power change flags
Median 21 days, longest 103. Georgia Power's third-quarter large-load report sat in the public docket with broken change flags for 103 days. Walmart's inverted prefix took 68, and it was findable in the original with no second document.

Five of Georgia Power's IRP errata paragraphs name the data request that surfaced the problem. The utility did not find those; somebody asking a question did, months in.

Six of the twenty-one were visible on day one

Not in hindsight, and not by comparing versions: from the one document, on the day it was filed, by four checks that open no second file.

1. One thing, named more than one way

Collect every reference to the same rule, exhibit or event and compare the strings. Michels cites one rule three ways in three page footers. Kollen calls one withdrawal Brown BESS on page 95 and Cane Run BESS in the settlement bound into the same PDF. Catches two.

2. A term whose prefix inverts its meaning, used both ways

Interclass is between rate classes, intraclass within one. Lisa Perry's testimony says interclass twice and intraclass once about the same subsidies, the odd one out on page 20, one page before a correct use in the same argument. It took Walmart 68 days. Run it on inter/intra, gross/net, total/allocated. Catches one.

3. A money figure with no basis, where the document names a basis elsewhere

LaConte sets the convention on page 2, marking $185.7 million (total Company) against $82 million (Utah-allocated), then gives $112.1 million and $30.9 million bare. A document that sets its own convention and breaks it is a stronger signal than any style rule. Catches one.

4. A change column where every cell says the same thing

Georgia Power's third-quarter public attachment carries 535 standalone Y lines in twenty unbroken runs of 42, 39, 21 and 5 rows, each length five times: 107 project rows across five change columns, every cell flagged. The fourth quarter gives 5 × 106 = 530. The corrected refiling covering both quarters has 186 flags in 110 runs, 67 of them a single row; the first and second quarters of 2025 carry 88 and 44, in 67 and 35 runs. A column that never once says no is not a column. Catches two.

Georgia Power, 4 March 2026: “The error resulted from a formula being inadvertently disturbed by the Company’s redaction process used to create the public disclosure version.”

The other fifteen need a second document, or knowing the plant is called Cane Run.

What to do on Monday

Take the last thing your team filed and run those four over it. Grep does the first two, a spreadsheet the fourth, and the third is a list you read.

That installs nothing and buys nothing. On this corpus it finds six of the twenty-one corrections on the day of filing. Those six actually waited 5, 18, 21, 21, 68 and 103 days.

The honest note

I build Verbatim, which reads successive versions of a proceeding and refuses to assert a claim whose citation does not verify against the source. That is the bias here: I went looking for what a version comparison misses.

Three limits. Twenty-one is a small number, and 102 filings I chose are not a sample of anything. Three more corrected filings are left out because they never say what moved. And every count comes from text extracted from PDFs: the Kollen correction was rescanned, so most of what a raw diff reports between the two versions is the scanner disagreeing with itself — 21 ,751,906 against 21,751,906, hundreds of times. I read those out by hand. Somebody else reading them would not land on exactly twenty-one.

Every passage in a boxed extract above is a verbatim substring of the file it names, checked by a script that reads both, with the extraction damage left in. Quotations inside a paragraph are the same words with the line breaks and column padding collapsed. Every number is reproducible from data/real/ with difflib and no network.