Back to the work library

Read-only ERP checks with explicit missing-source results

ERP records drift, and a report built on drifted records can still look credible.

runningEvidence: reportedLibrary entry
Where
Purchasing and operations
Built from
2026
Source copy reviewed
Evidence status
Source copy checked on 8 September 2026. These historical statements have not been independently re-verified for this website.
On this page

The problem

ERP records drift, and a report built on drifted records can read as confident.

Drift is rarely dramatic. A vendor gets entered a second time under a different spelling. A unit of measure is set once during setup and never revisited. A field that was mandatory in the old system becomes optional in the new one, and nobody notices until a quarter of the records are missing it. Each of these is small on its own.

Together they decide whether a spend report, a reorder point or a vendor comparison can be relied on, and the ERP does not announce that the records underneath moved. The report still renders. The total still adds up. What changed is whether the number means what the reader thinks it means.

My role

I specified the checks and the rule that a check declines over a missing source, and I ratified each release; AI agents wrote most of the code under my gates.

What was built

The September source and delivery records describe 35 read-only checks over ERP data and a naming standard with 40 rules. A check that cannot read a required source declines instead of reporting a clean zero.

The checks produce findings. Approval of a naming fix regenerates the proposed change list; it does not apply the change by itself.

How it works

The checks are read-only. They read, they decide, they produce findings, and nothing in the ERP changes because one ran. That is what lets a check run on a schedule without a change-control conversation: nightly, against a frozen copy of the ERP.

The rule that carries the most weight is the refusal. A check that cannot read a required source declines instead of reporting a clean zero. An empty result and a clean result look identical on a page, and only one of them means the data is good. Refusing to collapse that difference is what makes the rest of the output worth reading.

Findings go to a person. An approved naming correction regenerates a proposed change list, and applying that list is a separate, recorded step. The separation is deliberate. A checker that can also quietly fix things becomes a system nobody can audit, and the first serious disagreement about a record turns into an argument about what the tool did last month.

Figures and their status
Bar chart of thirty-five read-only hygiene checks grouped by domain, each bar the share of records the check found, with the four checks that could not run on the frozen snapshot marked in words.
Figure 1. Thirty-five read-only checks on a frozen copy of the ERP, from the committed nightly page. Bars show the share of records each check found; a check that could not run on this snapshot says so instead of reporting a clean zero./media/erp-data-hygiene/hygiene-checks.svg.provenance.yaml

Evidence

The September release record contains an executed run of 35 hygiene checks with zero execution errors and records the nightly schedule. Zero execution errors does not mean zero findings.

The separately approved remediation workflow records decisions before changes. Its final business-record count remains unresolved and is omitted.

Observed results

No business outcome is published here. Nothing has been measured about what the errors cost, how long corrections took, or which decisions would have gone differently without the findings.

The measures that would settle it are ordinary ones, available to any business running checks like these: how many findings are open at the start and end of a period, how long a finding stays open, and how often the same correction has to be made twice. This entry claims none of them.

What this does not show

The checks are read-only and change nothing by themselves. The remediation was a separate, human-approved sweep.

Read-only is a design choice with a cost attached. The checks tell an operator what is wrong; they do not reduce the work of putting it right. A business with nobody assigned to act on findings will accumulate them, and a growing backlog of unread findings is its own kind of false confidence.

Relevant next action

If records disagree, duplicate or fall out of date, the data assessment and cleanup engagement begins by agreeing which source governs, what an exception costs and who resolves one. The same refusal discipline appears in the price baseline that declines to invent a saving and in reporting that traces a figure back to its records.

Figures and their status
Bar chart of thirty-five read-only hygiene checks grouped by domain, each bar the share of records the check found, with the four checks that could not run on the frozen snapshot marked in words.
Figure 1. Thirty-five read-only checks on a frozen copy of the ERP, from the committed nightly page. Bars show the share of records each check found; a check that could not run on this snapshot says so instead of reporting a clean zero./media/erp-data-hygiene/hygiene-checks.svg.provenance.yaml