Now accepting pilot engagements

Stateam Products — Parity

Move off legacy without losing the evidence.

Parity converts legacy statistical and analytics software and COBOL into R and Python — and then proves the result reproduces your original output, cell for cell, before anything ships.

The problem

Migrations don't stall on translation. They stall on proof.

Translating a program is the easy half, and it is getting easier every quarter. The hard half is convincing a QA function, an auditor or a regulator that the new number is the same number. That is where budgets and timelines actually go.

01

The differences are silent

Legacy statistical languages round half away from zero; R and Python round half to even. A missing value sorts below every number on the old platform and drops out on the new one. Each difference produces a plausible number, not an error message.

02

COBOL is worse

Packed-decimal arithmetic is exact and truncates by default. Floating point does not. On a balance, an interest accrual or a benefit calculation, that difference is money.

03

Verification is manual

Double programming and cell-by-cell review consume senior time on every output, every time. It is the largest line in most modernisation budgets and the least automated.

What Parity is

Five modules, one set of rules

Parity is software, not a services engagement. The deterministic half — the comparison, the statistics, the environment lock and the gate — runs inside your environment against your own programs. The conversion step is agent-assisted, so source you convert is sent to a hosted model; the deployment guide covers running the deterministic half on its own where that is not acceptable.

Convert

Legacy statistical and analytics software and COBOL scanned into a risk register that names the constructs needing attention, by line number, plus a traceability matrix with a row for every DATA/PROC step or COBOL paragraph — carried through to the R and Python replacement.

Analyze

Dataset profiling and analysis that states its assumptions on the page, and surfaces data-quality findings before they reach a conclusion.

Lock

Every package version pinned per project, recorded in a lockfile and a Dockerfile, so a result computed today can be recomputed in three years.

Evidence

Systematic literature search and meta-analysis that reports what it cannot show as clearly as what it can.

Gate

Nothing is released until the comparison passes. The gate is a deterministic script with an exit status — it does not negotiate, and it is the same gate for every module.

The acceptance bar

What "verified" means here

Parity compares your original output against the converted output cell by cell and classifies every difference. Three of the four classes block release. The default tolerance is zero — numbers must match exactly as displayed, after rounding.

Clinical cells are rarely bare numbers. 142 (78.5%) is decomposed into its literal text and its numeric tokens: the text must match exactly, the numbers to a declared tolerance. A non-zero tolerance is written into the run settings and flagged by the gate for justification in your validation summary, so the decision leaves a trace rather than living in someone's shell history.

ClassWhat it meansSeverity
VALUEA number differs beyond tolerance, or one side is missingBlocking
TEXTWording or layout differs — a label, a footnote, a headerBlocking
STRUCTURERow or column counts differ, or a row cannot be pairedBlocking
FORMATSame value, different rendering — 0.5 against 0.50Advisory

The line that matters: the comparison is not a model

A language model helps write the replacement code and explains its reasoning. Every statistic Parity computes, and every cell-by-cell comparison, comes from deterministic code you can read, run and re-run — never from a model. Reviewer agents will hand-check a value and tell you what they think, which is useful, but their opinion is advice to a human. It is not the comparison, and it is not the number in your report. That boundary is why we built Parity rather than wrapping a chatbot.

Coverage

Two source languages. One verification spine.

The comparison engine does not know or care what produced the file it is checking. Adding a language means adding a source scanner and a semantics register — not rebuilding the verification layer.

Statistical and analytics platforms → R and Python Clinical and regulatory reporting. The scanner flags ROUND half-away-from-zero, LAG inside conditional blocks, MERGE and the other constructs that change a number quietly. The semantics register behind it covers DATA step behaviour, missing-value ordering and denominator conventions for the programmer and the reviewer.
COBOL → Python (and R where appropriate) Mainframe estates in insurance, banking and government. The scanner flags COMP-3 packed decimal, truncation wherever ROUNDED is absent, PERFORM THRU fall-through, REDEFINES, OCCURS DEPENDING ON and signed overpunch. EBCDIC collation is covered in the semantics register.
Why Python leads for COBOL Exact fixed-point arithmetic is not native to R. Where a cent matters, Python's decimal type is the defensible target — and we say so rather than pretending both languages are equivalent for financial arithmetic.

Evidence

Testable claims, tested

Statistics cross-checked

The meta-analysis module reproduces the published metafor reference example — dat.bcg, risk ratio, REML — to four decimal places on the effect estimate, standard error, confidence bounds and τ², and to two on I². Checked against the published values, not against itself.

Language-agnostic, demonstrated

The same comparison engine was run against fixed-width COBOL report output and caught a one-cent difference in a single cell — a blocking VALUE finding — with an identical-pair control passing cleanly. It is a small fixture, and it ships inside the test suite so you can run it yourself.

Built to be validated

Module runs write a dated directory with a manifest and SHA-256 checksums over their inputs and outputs, so a later reader can prove nothing moved. Directories are append-only by convention, and the deployment guide shows how to enforce it with filesystem permissions. The documentation maps Parity's artefacts to the IQ, OQ and PQ questions a validation function will ask.

Straight answers

Where the boundaries are

A vendor that tells you exactly what its product does, and where the judgement stays with you, is a vendor whose other claims you can weigh.

A passing gate is not a correct conclusion

It means the run is intact and self-consistent, and that the converted output matches the original. Whether the original analysis was the right one is a judgement, and a human signs it.

The scan is not the safety net

The risk register flags the constructs worth looking at first, by line number, and no static scan catches everything. What actually catches a changed number is the comparison against your original output — which is why Parity does not stop at the scan.

Bitwise identity has a limit

Numerical libraries differ between machines and move the last decimals of model fitting. Where that matters, the pinned container is the unit of reproducibility, not the lockfile alone.

Getting started

A first engagement takes one table

  • You pick one signed-off output. A table you have already delivered from your legacy statistical platform, or one report from a COBOL estate, with its original output.
  • We convert and verify it. R and Python implementations, diffed cell by cell at zero tolerance, with the risk register and traceability matrix.
  • You review the evidence. The diff report, the traceability matrix and the gate verdict — the artefacts a reviewer would ask for.
  • You decide on the programme. Scope the rest against real evidence rather than a proposal.

Pilot engagement

One table,
end to end

Fixed scope, two to three weeks. The fee is credited in full against a licence bought within 90 days. Talk to us and we will scope it against your programme.

capture@stateam.net

(609) 865-7683

Ships with a user guide Technical documentation Deployment guide IQ/OQ/PQ mapping Automated verification suite