Migration Witness

Before and after agree.
Both are wrong.

A comparison can approve a migration that preserves a bug. Odin’s example checks both implementations against independently declared behavior, then tests whether that check can be fooled.

Equality is not the specification.

The same half-cent invoice passes through two implementations. In the shared-bug control, both return 1.00. Comparing only their outputs would find no difference.

Authored Java fixture · cases from the recorded experiment below
CandidateWhat actually happensRecorded evidence
Before · shared bugAcme | 1.00 | 2026-09-20

The original implementation rounds the amount incorrectly.

Inspect this case
After · shared bugAcme | 1.00 | 2026-09-20

The replacement agrees with the original. It is still rejected.

Inspect this case
Declared expectationAcme | 1.01 | 2026-09-20

Defined in cases.tsv, independently of either implementation.

Inspect this case

The contract must sit outside the change.

Seven declared cases cover rounding, Unicode, date boundaries and invalid inputs. An intentional blank-customer change is recorded separately. Broken Java remains inconclusive; it is not reported as a behavioral regression. This is a before/after acceptance mechanism, not an automated migration engine.

These examples test the acceptance mechanism. They do not measure an agent’s performance on unseen work.

Inspect the recording.

Recorded fixture run; the execution environment is identified below. These Java examples, candidate tests and corrections were authored for this demonstration. Selecting a case reads saved evidence; it does not execute code or an agent.

Recorded fixture run · GitHub Actions · 2026-10-11T05:47:47.528Z

Run 29bb03f4-8bc4-4d79-9e8e-fc92a604d1f2 · base source revision 6a375f0b5f0c0c26c9563613e5aa0cbb808c94b9

Uncommitted working tree; base revision does not identify these edits. Input hashes identify executed sources.

GitHub Actions recording · attempt 1

Declared invoice formatting cases in authored before/after Java fixtures; no automatic transformation.

Runtime and experiment boundaries
{
  "node": "v22.23.3",
  "java": "openjdk version \"21.0.12.1\" 2026-08-18 LTS\nOpenJDK Runtime Environment Temurin-21.0.12.1+1 (build 21.0.12.1+1-LTS)\nOpenJDK 64-Bit Server VM Temurin-21.0.12.1+1 (build 21.0.12.1+1-LTS, mixed mode, sharing)",
  "javac": "javac 21.0.12.1"
}
  • No ROI measured; no customer code or live model calls.
  • Seven declared preservation cases, not general program equivalence.
  • Intentional blank-customer validation change excluded from preservation denominator.
  • Trusted bundled sources only; owned temporary directories are not a security sandbox.
  • Hashes establish consistency, not authenticity against malicious artifact replacement.

Raw execution record · Source hashes and recording manifest

declared-preservation
7 / 7 cases

Both versions satisfy independent expected values and pairwise equality, excluding intentional change.

control-discrimination
4 / 4 controls

Positive acceptance, semantic rejection, shared-bug rejection and compile-inconclusive classification.

inconclusive-observations
1 / 41 observations

Includes deliberately invalid compilation; not counted as a detected behavior defect.

round-half-cent

rejected

Compared to declared independent expected invoice result.

Expected

Acme|1.01|2026-09-20

Actual

Acme|1.00|2026-09-20
Actual command transcript
command-7: javac -encoding UTF-8 -d <workdir>/semantic-regression <repo>/demos/migration-witness/fixtures/RegressionInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 485 ms
stdout:

stderr:


command-8: java -Dfile.encoding=UTF-8 -cp <workdir>/semantic-regression WitnessHarness RegressionInvoice <repo>/demos/migration-witness/fixtures/cases.tsv true false
cwd: <workdir>
completed; exit 1; 76 ms
stdout:
ASSERT	round-half-cent	FAIL	QWNtZXwxLjAwfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	FAIL	QWNtZXwtMS4wMHwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	RVJST1JfQ1VTVE9NRVI=
SUMMARY	8	2

stderr:

Acceptance concerns the stated evidence check. An expected rejection can demonstrate that the check works; it does not mean the tested behavior passed. Fixture results are not customer savings, held-out performance or a guarantee of broader correctness.

All recorded observations, including negative controls
baseline:round-half-cent · accepted

Compared to declared independent expected invoice result.

Expected

Acme|1.01|2026-09-20

Actual

Acme|1.01|2026-09-20

Execution receipt

command-3: javac -encoding UTF-8 -d <workdir>/baseline <repo>/demos/migration-witness/fixtures/BeforeInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 512 ms
stdout:

stderr:


command-4: java -Dfile.encoding=UTF-8 -cp <workdir>/baseline WitnessHarness BeforeInvoice <repo>/demos/migration-witness/fixtures/cases.tsv false false
cwd: <workdir>
completed; exit 0; 69 ms
stdout:
ASSERT	round-half-cent	PASS	QWNtZXwxLjAxfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	PASS	QWNtZXwtMS4wMXwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	R3Vlc3R8MS4wMHwyMDI2LTA5LTIw
SUMMARY	8	0

stderr:
baseline:unicode · accepted

Compared to declared independent expected invoice result.

Expected

Café 東京|12.50|2026-09-20

Actual

Café 東京|12.50|2026-09-20

Execution receipt

command-3: javac -encoding UTF-8 -d <workdir>/baseline <repo>/demos/migration-witness/fixtures/BeforeInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 512 ms
stdout:

stderr:


command-4: java -Dfile.encoding=UTF-8 -cp <workdir>/baseline WitnessHarness BeforeInvoice <repo>/demos/migration-witness/fixtures/cases.tsv false false
cwd: <workdir>
completed; exit 0; 69 ms
stdout:
ASSERT	round-half-cent	PASS	QWNtZXwxLjAxfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	PASS	QWNtZXwtMS4wMXwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	R3Vlc3R8MS4wMHwyMDI2LTA5LTIw
SUMMARY	8	0

stderr:
baseline:utc-day-boundary · accepted

Compared to declared independent expected invoice result.

Expected

Acme|0.00|2025-12-31

Actual

Acme|0.00|2025-12-31

Execution receipt

command-3: javac -encoding UTF-8 -d <workdir>/baseline <repo>/demos/migration-witness/fixtures/BeforeInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 512 ms
stdout:

stderr:


command-4: java -Dfile.encoding=UTF-8 -cp <workdir>/baseline WitnessHarness BeforeInvoice <repo>/demos/migration-witness/fixtures/cases.tsv false false
cwd: <workdir>
completed; exit 0; 69 ms
stdout:
ASSERT	round-half-cent	PASS	QWNtZXwxLjAxfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	PASS	QWNtZXwtMS4wMXwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	R3Vlc3R8MS4wMHwyMDI2LTA5LTIw
SUMMARY	8	0

stderr:
baseline:leap-day · accepted

Compared to declared independent expected invoice result.

Expected

Acme|-1.01|2024-02-29

Actual

Acme|-1.01|2024-02-29

Execution receipt

command-3: javac -encoding UTF-8 -d <workdir>/baseline <repo>/demos/migration-witness/fixtures/BeforeInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 512 ms
stdout:

stderr:


command-4: java -Dfile.encoding=UTF-8 -cp <workdir>/baseline WitnessHarness BeforeInvoice <repo>/demos/migration-witness/fixtures/cases.tsv false false
cwd: <workdir>
completed; exit 0; 69 ms
stdout:
ASSERT	round-half-cent	PASS	QWNtZXwxLjAxfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	PASS	QWNtZXwtMS4wMXwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	R3Vlc3R8MS4wMHwyMDI2LTA5LTIw
SUMMARY	8	0

stderr:
baseline:invalid-amount · accepted

Compared to declared independent expected invoice result.

Expected

ERROR_AMOUNT

Actual

ERROR_AMOUNT

Execution receipt

command-3: javac -encoding UTF-8 -d <workdir>/baseline <repo>/demos/migration-witness/fixtures/BeforeInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 512 ms
stdout:

stderr:


command-4: java -Dfile.encoding=UTF-8 -cp <workdir>/baseline WitnessHarness BeforeInvoice <repo>/demos/migration-witness/fixtures/cases.tsv false false
cwd: <workdir>
completed; exit 0; 69 ms
stdout:
ASSERT	round-half-cent	PASS	QWNtZXwxLjAxfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	PASS	QWNtZXwtMS4wMXwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	R3Vlc3R8MS4wMHwyMDI2LTA5LTIw
SUMMARY	8	0

stderr:
baseline:empty-amount · accepted

Compared to declared independent expected invoice result.

Expected

ERROR_AMOUNT

Actual

ERROR_AMOUNT

Execution receipt

command-3: javac -encoding UTF-8 -d <workdir>/baseline <repo>/demos/migration-witness/fixtures/BeforeInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 512 ms
stdout:

stderr:


command-4: java -Dfile.encoding=UTF-8 -cp <workdir>/baseline WitnessHarness BeforeInvoice <repo>/demos/migration-witness/fixtures/cases.tsv false false
cwd: <workdir>
completed; exit 0; 69 ms
stdout:
ASSERT	round-half-cent	PASS	QWNtZXwxLjAxfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	PASS	QWNtZXwtMS4wMXwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	R3Vlc3R8MS4wMHwyMDI2LTA5LTIw
SUMMARY	8	0

stderr:
baseline:invalid-date · accepted

Compared to declared independent expected invoice result.

Expected

ERROR_DATE

Actual

ERROR_DATE

Execution receipt

command-3: javac -encoding UTF-8 -d <workdir>/baseline <repo>/demos/migration-witness/fixtures/BeforeInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 512 ms
stdout:

stderr:


command-4: java -Dfile.encoding=UTF-8 -cp <workdir>/baseline WitnessHarness BeforeInvoice <repo>/demos/migration-witness/fixtures/cases.tsv false false
cwd: <workdir>
completed; exit 0; 69 ms
stdout:
ASSERT	round-half-cent	PASS	QWNtZXwxLjAxfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	PASS	QWNtZXwtMS4wMXwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	R3Vlc3R8MS4wMHwyMDI2LTA5LTIw
SUMMARY	8	0

stderr:
baseline:empty-customer · accepted

Declared intentional change: blank customer becomes ERROR_CUSTOMER; excluded from preservation.

Expected

Guest|1.00|2026-09-20

Actual

Guest|1.00|2026-09-20

Execution receipt

command-3: javac -encoding UTF-8 -d <workdir>/baseline <repo>/demos/migration-witness/fixtures/BeforeInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 512 ms
stdout:

stderr:


command-4: java -Dfile.encoding=UTF-8 -cp <workdir>/baseline WitnessHarness BeforeInvoice <repo>/demos/migration-witness/fixtures/cases.tsv false false
cwd: <workdir>
completed; exit 0; 69 ms
stdout:
ASSERT	round-half-cent	PASS	QWNtZXwxLjAxfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	PASS	QWNtZXwtMS4wMXwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	R3Vlc3R8MS4wMHwyMDI2LTA5LTIw
SUMMARY	8	0

stderr:
candidate:round-half-cent · accepted

Compared to declared independent expected invoice result.

Expected

Acme|1.01|2026-09-20

Actual

Acme|1.01|2026-09-20

Execution receipt

command-5: javac -encoding UTF-8 -d <workdir>/candidate <repo>/demos/migration-witness/fixtures/AfterInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 486 ms
stdout:

stderr:


command-6: java -Dfile.encoding=UTF-8 -cp <workdir>/candidate WitnessHarness AfterInvoice <repo>/demos/migration-witness/fixtures/cases.tsv true false
cwd: <workdir>
completed; exit 0; 70 ms
stdout:
ASSERT	round-half-cent	PASS	QWNtZXwxLjAxfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	PASS	QWNtZXwtMS4wMXwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	RVJST1JfQ1VTVE9NRVI=
SUMMARY	8	0

stderr:
candidate:unicode · accepted

Compared to declared independent expected invoice result.

Expected

Café 東京|12.50|2026-09-20

Actual

Café 東京|12.50|2026-09-20

Execution receipt

command-5: javac -encoding UTF-8 -d <workdir>/candidate <repo>/demos/migration-witness/fixtures/AfterInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 486 ms
stdout:

stderr:


command-6: java -Dfile.encoding=UTF-8 -cp <workdir>/candidate WitnessHarness AfterInvoice <repo>/demos/migration-witness/fixtures/cases.tsv true false
cwd: <workdir>
completed; exit 0; 70 ms
stdout:
ASSERT	round-half-cent	PASS	QWNtZXwxLjAxfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	PASS	QWNtZXwtMS4wMXwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	RVJST1JfQ1VTVE9NRVI=
SUMMARY	8	0

stderr:
candidate:utc-day-boundary · accepted

Compared to declared independent expected invoice result.

Expected

Acme|0.00|2025-12-31

Actual

Acme|0.00|2025-12-31

Execution receipt

command-5: javac -encoding UTF-8 -d <workdir>/candidate <repo>/demos/migration-witness/fixtures/AfterInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 486 ms
stdout:

stderr:


command-6: java -Dfile.encoding=UTF-8 -cp <workdir>/candidate WitnessHarness AfterInvoice <repo>/demos/migration-witness/fixtures/cases.tsv true false
cwd: <workdir>
completed; exit 0; 70 ms
stdout:
ASSERT	round-half-cent	PASS	QWNtZXwxLjAxfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	PASS	QWNtZXwtMS4wMXwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	RVJST1JfQ1VTVE9NRVI=
SUMMARY	8	0

stderr:
candidate:leap-day · accepted

Compared to declared independent expected invoice result.

Expected

Acme|-1.01|2024-02-29

Actual

Acme|-1.01|2024-02-29

Execution receipt

command-5: javac -encoding UTF-8 -d <workdir>/candidate <repo>/demos/migration-witness/fixtures/AfterInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 486 ms
stdout:

stderr:


command-6: java -Dfile.encoding=UTF-8 -cp <workdir>/candidate WitnessHarness AfterInvoice <repo>/demos/migration-witness/fixtures/cases.tsv true false
cwd: <workdir>
completed; exit 0; 70 ms
stdout:
ASSERT	round-half-cent	PASS	QWNtZXwxLjAxfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	PASS	QWNtZXwtMS4wMXwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	RVJST1JfQ1VTVE9NRVI=
SUMMARY	8	0

stderr:
candidate:invalid-amount · accepted

Compared to declared independent expected invoice result.

Expected

ERROR_AMOUNT

Actual

ERROR_AMOUNT

Execution receipt

command-5: javac -encoding UTF-8 -d <workdir>/candidate <repo>/demos/migration-witness/fixtures/AfterInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 486 ms
stdout:

stderr:


command-6: java -Dfile.encoding=UTF-8 -cp <workdir>/candidate WitnessHarness AfterInvoice <repo>/demos/migration-witness/fixtures/cases.tsv true false
cwd: <workdir>
completed; exit 0; 70 ms
stdout:
ASSERT	round-half-cent	PASS	QWNtZXwxLjAxfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	PASS	QWNtZXwtMS4wMXwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	RVJST1JfQ1VTVE9NRVI=
SUMMARY	8	0

stderr:
candidate:empty-amount · accepted

Compared to declared independent expected invoice result.

Expected

ERROR_AMOUNT

Actual

ERROR_AMOUNT

Execution receipt

command-5: javac -encoding UTF-8 -d <workdir>/candidate <repo>/demos/migration-witness/fixtures/AfterInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 486 ms
stdout:

stderr:


command-6: java -Dfile.encoding=UTF-8 -cp <workdir>/candidate WitnessHarness AfterInvoice <repo>/demos/migration-witness/fixtures/cases.tsv true false
cwd: <workdir>
completed; exit 0; 70 ms
stdout:
ASSERT	round-half-cent	PASS	QWNtZXwxLjAxfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	PASS	QWNtZXwtMS4wMXwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	RVJST1JfQ1VTVE9NRVI=
SUMMARY	8	0

stderr:
candidate:invalid-date · accepted

Compared to declared independent expected invoice result.

Expected

ERROR_DATE

Actual

ERROR_DATE

Execution receipt

command-5: javac -encoding UTF-8 -d <workdir>/candidate <repo>/demos/migration-witness/fixtures/AfterInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 486 ms
stdout:

stderr:


command-6: java -Dfile.encoding=UTF-8 -cp <workdir>/candidate WitnessHarness AfterInvoice <repo>/demos/migration-witness/fixtures/cases.tsv true false
cwd: <workdir>
completed; exit 0; 70 ms
stdout:
ASSERT	round-half-cent	PASS	QWNtZXwxLjAxfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	PASS	QWNtZXwtMS4wMXwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	RVJST1JfQ1VTVE9NRVI=
SUMMARY	8	0

stderr:
candidate:empty-customer · accepted

Declared intentional change: blank customer becomes ERROR_CUSTOMER; excluded from preservation.

Expected

ERROR_CUSTOMER

Actual

ERROR_CUSTOMER

Execution receipt

command-5: javac -encoding UTF-8 -d <workdir>/candidate <repo>/demos/migration-witness/fixtures/AfterInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 486 ms
stdout:

stderr:


command-6: java -Dfile.encoding=UTF-8 -cp <workdir>/candidate WitnessHarness AfterInvoice <repo>/demos/migration-witness/fixtures/cases.tsv true false
cwd: <workdir>
completed; exit 0; 70 ms
stdout:
ASSERT	round-half-cent	PASS	QWNtZXwxLjAxfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	PASS	QWNtZXwtMS4wMXwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	RVJST1JfQ1VTVE9NRVI=
SUMMARY	8	0

stderr:
semantic-regression:round-half-cent · rejected

Compared to declared independent expected invoice result.

Expected

Acme|1.01|2026-09-20

Actual

Acme|1.00|2026-09-20

Execution receipt

command-7: javac -encoding UTF-8 -d <workdir>/semantic-regression <repo>/demos/migration-witness/fixtures/RegressionInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 485 ms
stdout:

stderr:


command-8: java -Dfile.encoding=UTF-8 -cp <workdir>/semantic-regression WitnessHarness RegressionInvoice <repo>/demos/migration-witness/fixtures/cases.tsv true false
cwd: <workdir>
completed; exit 1; 76 ms
stdout:
ASSERT	round-half-cent	FAIL	QWNtZXwxLjAwfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	FAIL	QWNtZXwtMS4wMHwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	RVJST1JfQ1VTVE9NRVI=
SUMMARY	8	2

stderr:
semantic-regression:unicode · accepted

Compared to declared independent expected invoice result.

Expected

Café 東京|12.50|2026-09-20

Actual

Café 東京|12.50|2026-09-20

Execution receipt

command-7: javac -encoding UTF-8 -d <workdir>/semantic-regression <repo>/demos/migration-witness/fixtures/RegressionInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 485 ms
stdout:

stderr:


command-8: java -Dfile.encoding=UTF-8 -cp <workdir>/semantic-regression WitnessHarness RegressionInvoice <repo>/demos/migration-witness/fixtures/cases.tsv true false
cwd: <workdir>
completed; exit 1; 76 ms
stdout:
ASSERT	round-half-cent	FAIL	QWNtZXwxLjAwfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	FAIL	QWNtZXwtMS4wMHwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	RVJST1JfQ1VTVE9NRVI=
SUMMARY	8	2

stderr:
semantic-regression:utc-day-boundary · accepted

Compared to declared independent expected invoice result.

Expected

Acme|0.00|2025-12-31

Actual

Acme|0.00|2025-12-31

Execution receipt

command-7: javac -encoding UTF-8 -d <workdir>/semantic-regression <repo>/demos/migration-witness/fixtures/RegressionInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 485 ms
stdout:

stderr:


command-8: java -Dfile.encoding=UTF-8 -cp <workdir>/semantic-regression WitnessHarness RegressionInvoice <repo>/demos/migration-witness/fixtures/cases.tsv true false
cwd: <workdir>
completed; exit 1; 76 ms
stdout:
ASSERT	round-half-cent	FAIL	QWNtZXwxLjAwfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	FAIL	QWNtZXwtMS4wMHwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	RVJST1JfQ1VTVE9NRVI=
SUMMARY	8	2

stderr:
semantic-regression:leap-day · rejected

Compared to declared independent expected invoice result.

Expected

Acme|-1.01|2024-02-29

Actual

Acme|-1.00|2024-02-29

Execution receipt

command-7: javac -encoding UTF-8 -d <workdir>/semantic-regression <repo>/demos/migration-witness/fixtures/RegressionInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 485 ms
stdout:

stderr:


command-8: java -Dfile.encoding=UTF-8 -cp <workdir>/semantic-regression WitnessHarness RegressionInvoice <repo>/demos/migration-witness/fixtures/cases.tsv true false
cwd: <workdir>
completed; exit 1; 76 ms
stdout:
ASSERT	round-half-cent	FAIL	QWNtZXwxLjAwfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	FAIL	QWNtZXwtMS4wMHwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	RVJST1JfQ1VTVE9NRVI=
SUMMARY	8	2

stderr:
semantic-regression:invalid-amount · accepted

Compared to declared independent expected invoice result.

Expected

ERROR_AMOUNT

Actual

ERROR_AMOUNT

Execution receipt

command-7: javac -encoding UTF-8 -d <workdir>/semantic-regression <repo>/demos/migration-witness/fixtures/RegressionInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 485 ms
stdout:

stderr:


command-8: java -Dfile.encoding=UTF-8 -cp <workdir>/semantic-regression WitnessHarness RegressionInvoice <repo>/demos/migration-witness/fixtures/cases.tsv true false
cwd: <workdir>
completed; exit 1; 76 ms
stdout:
ASSERT	round-half-cent	FAIL	QWNtZXwxLjAwfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	FAIL	QWNtZXwtMS4wMHwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	RVJST1JfQ1VTVE9NRVI=
SUMMARY	8	2

stderr:
semantic-regression:empty-amount · accepted

Compared to declared independent expected invoice result.

Expected

ERROR_AMOUNT

Actual

ERROR_AMOUNT

Execution receipt

command-7: javac -encoding UTF-8 -d <workdir>/semantic-regression <repo>/demos/migration-witness/fixtures/RegressionInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 485 ms
stdout:

stderr:


command-8: java -Dfile.encoding=UTF-8 -cp <workdir>/semantic-regression WitnessHarness RegressionInvoice <repo>/demos/migration-witness/fixtures/cases.tsv true false
cwd: <workdir>
completed; exit 1; 76 ms
stdout:
ASSERT	round-half-cent	FAIL	QWNtZXwxLjAwfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	FAIL	QWNtZXwtMS4wMHwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	RVJST1JfQ1VTVE9NRVI=
SUMMARY	8	2

stderr:
semantic-regression:invalid-date · accepted

Compared to declared independent expected invoice result.

Expected

ERROR_DATE

Actual

ERROR_DATE

Execution receipt

command-7: javac -encoding UTF-8 -d <workdir>/semantic-regression <repo>/demos/migration-witness/fixtures/RegressionInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 485 ms
stdout:

stderr:


command-8: java -Dfile.encoding=UTF-8 -cp <workdir>/semantic-regression WitnessHarness RegressionInvoice <repo>/demos/migration-witness/fixtures/cases.tsv true false
cwd: <workdir>
completed; exit 1; 76 ms
stdout:
ASSERT	round-half-cent	FAIL	QWNtZXwxLjAwfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	FAIL	QWNtZXwtMS4wMHwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	RVJST1JfQ1VTVE9NRVI=
SUMMARY	8	2

stderr:
semantic-regression:empty-customer · accepted

Declared intentional change: blank customer becomes ERROR_CUSTOMER; excluded from preservation.

Expected

ERROR_CUSTOMER

Actual

ERROR_CUSTOMER

Execution receipt

command-7: javac -encoding UTF-8 -d <workdir>/semantic-regression <repo>/demos/migration-witness/fixtures/RegressionInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 485 ms
stdout:

stderr:


command-8: java -Dfile.encoding=UTF-8 -cp <workdir>/semantic-regression WitnessHarness RegressionInvoice <repo>/demos/migration-witness/fixtures/cases.tsv true false
cwd: <workdir>
completed; exit 1; 76 ms
stdout:
ASSERT	round-half-cent	FAIL	QWNtZXwxLjAwfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	FAIL	QWNtZXwtMS4wMHwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	RVJST1JfQ1VTVE9NRVI=
SUMMARY	8	2

stderr:
shared-bug-baseline:round-half-cent · rejected

Compared to declared independent expected invoice result.

Expected

Acme|1.01|2026-09-20

Actual

Acme|1.00|2026-09-20

Execution receipt

command-9: javac -encoding UTF-8 -d <workdir>/shared-bug-baseline <repo>/demos/migration-witness/fixtures/BeforeInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 474 ms
stdout:

stderr:


command-10: java -Dfile.encoding=UTF-8 -cp <workdir>/shared-bug-baseline WitnessHarness BeforeInvoice <repo>/demos/migration-witness/fixtures/cases.tsv false true
cwd: <workdir>
completed; exit 1; 74 ms
stdout:
ASSERT	round-half-cent	FAIL	QWNtZXwxLjAwfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	FAIL	QWNtZXwtMS4wMHwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	R3Vlc3R8MS4wMHwyMDI2LTA5LTIw
SUMMARY	8	2

stderr:
shared-bug-baseline:unicode · accepted

Compared to declared independent expected invoice result.

Expected

Café 東京|12.50|2026-09-20

Actual

Café 東京|12.50|2026-09-20

Execution receipt

command-9: javac -encoding UTF-8 -d <workdir>/shared-bug-baseline <repo>/demos/migration-witness/fixtures/BeforeInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 474 ms
stdout:

stderr:


command-10: java -Dfile.encoding=UTF-8 -cp <workdir>/shared-bug-baseline WitnessHarness BeforeInvoice <repo>/demos/migration-witness/fixtures/cases.tsv false true
cwd: <workdir>
completed; exit 1; 74 ms
stdout:
ASSERT	round-half-cent	FAIL	QWNtZXwxLjAwfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	FAIL	QWNtZXwtMS4wMHwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	R3Vlc3R8MS4wMHwyMDI2LTA5LTIw
SUMMARY	8	2

stderr:
shared-bug-baseline:utc-day-boundary · accepted

Compared to declared independent expected invoice result.

Expected

Acme|0.00|2025-12-31

Actual

Acme|0.00|2025-12-31

Execution receipt

command-9: javac -encoding UTF-8 -d <workdir>/shared-bug-baseline <repo>/demos/migration-witness/fixtures/BeforeInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 474 ms
stdout:

stderr:


command-10: java -Dfile.encoding=UTF-8 -cp <workdir>/shared-bug-baseline WitnessHarness BeforeInvoice <repo>/demos/migration-witness/fixtures/cases.tsv false true
cwd: <workdir>
completed; exit 1; 74 ms
stdout:
ASSERT	round-half-cent	FAIL	QWNtZXwxLjAwfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	FAIL	QWNtZXwtMS4wMHwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	R3Vlc3R8MS4wMHwyMDI2LTA5LTIw
SUMMARY	8	2

stderr:
shared-bug-baseline:leap-day · rejected

Compared to declared independent expected invoice result.

Expected

Acme|-1.01|2024-02-29

Actual

Acme|-1.00|2024-02-29

Execution receipt

command-9: javac -encoding UTF-8 -d <workdir>/shared-bug-baseline <repo>/demos/migration-witness/fixtures/BeforeInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 474 ms
stdout:

stderr:


command-10: java -Dfile.encoding=UTF-8 -cp <workdir>/shared-bug-baseline WitnessHarness BeforeInvoice <repo>/demos/migration-witness/fixtures/cases.tsv false true
cwd: <workdir>
completed; exit 1; 74 ms
stdout:
ASSERT	round-half-cent	FAIL	QWNtZXwxLjAwfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	FAIL	QWNtZXwtMS4wMHwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	R3Vlc3R8MS4wMHwyMDI2LTA5LTIw
SUMMARY	8	2

stderr:
shared-bug-baseline:invalid-amount · accepted

Compared to declared independent expected invoice result.

Expected

ERROR_AMOUNT

Actual

ERROR_AMOUNT

Execution receipt

command-9: javac -encoding UTF-8 -d <workdir>/shared-bug-baseline <repo>/demos/migration-witness/fixtures/BeforeInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 474 ms
stdout:

stderr:


command-10: java -Dfile.encoding=UTF-8 -cp <workdir>/shared-bug-baseline WitnessHarness BeforeInvoice <repo>/demos/migration-witness/fixtures/cases.tsv false true
cwd: <workdir>
completed; exit 1; 74 ms
stdout:
ASSERT	round-half-cent	FAIL	QWNtZXwxLjAwfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	FAIL	QWNtZXwtMS4wMHwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	R3Vlc3R8MS4wMHwyMDI2LTA5LTIw
SUMMARY	8	2

stderr:
shared-bug-baseline:empty-amount · accepted

Compared to declared independent expected invoice result.

Expected

ERROR_AMOUNT

Actual

ERROR_AMOUNT

Execution receipt

command-9: javac -encoding UTF-8 -d <workdir>/shared-bug-baseline <repo>/demos/migration-witness/fixtures/BeforeInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 474 ms
stdout:

stderr:


command-10: java -Dfile.encoding=UTF-8 -cp <workdir>/shared-bug-baseline WitnessHarness BeforeInvoice <repo>/demos/migration-witness/fixtures/cases.tsv false true
cwd: <workdir>
completed; exit 1; 74 ms
stdout:
ASSERT	round-half-cent	FAIL	QWNtZXwxLjAwfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	FAIL	QWNtZXwtMS4wMHwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	R3Vlc3R8MS4wMHwyMDI2LTA5LTIw
SUMMARY	8	2

stderr:
shared-bug-baseline:invalid-date · accepted

Compared to declared independent expected invoice result.

Expected

ERROR_DATE

Actual

ERROR_DATE

Execution receipt

command-9: javac -encoding UTF-8 -d <workdir>/shared-bug-baseline <repo>/demos/migration-witness/fixtures/BeforeInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 474 ms
stdout:

stderr:


command-10: java -Dfile.encoding=UTF-8 -cp <workdir>/shared-bug-baseline WitnessHarness BeforeInvoice <repo>/demos/migration-witness/fixtures/cases.tsv false true
cwd: <workdir>
completed; exit 1; 74 ms
stdout:
ASSERT	round-half-cent	FAIL	QWNtZXwxLjAwfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	FAIL	QWNtZXwtMS4wMHwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	R3Vlc3R8MS4wMHwyMDI2LTA5LTIw
SUMMARY	8	2

stderr:
shared-bug-baseline:empty-customer · accepted

Declared intentional change: blank customer becomes ERROR_CUSTOMER; excluded from preservation.

Expected

Guest|1.00|2026-09-20

Actual

Guest|1.00|2026-09-20

Execution receipt

command-9: javac -encoding UTF-8 -d <workdir>/shared-bug-baseline <repo>/demos/migration-witness/fixtures/BeforeInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 474 ms
stdout:

stderr:


command-10: java -Dfile.encoding=UTF-8 -cp <workdir>/shared-bug-baseline WitnessHarness BeforeInvoice <repo>/demos/migration-witness/fixtures/cases.tsv false true
cwd: <workdir>
completed; exit 1; 74 ms
stdout:
ASSERT	round-half-cent	FAIL	QWNtZXwxLjAwfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	FAIL	QWNtZXwtMS4wMHwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	R3Vlc3R8MS4wMHwyMDI2LTA5LTIw
SUMMARY	8	2

stderr:
shared-bug-candidate:round-half-cent · rejected

Compared to declared independent expected invoice result.

Expected

Acme|1.01|2026-09-20

Actual

Acme|1.00|2026-09-20

Execution receipt

command-11: javac -encoding UTF-8 -d <workdir>/shared-bug-candidate <repo>/demos/migration-witness/fixtures/AfterInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 548 ms
stdout:

stderr:


command-12: java -Dfile.encoding=UTF-8 -cp <workdir>/shared-bug-candidate WitnessHarness AfterInvoice <repo>/demos/migration-witness/fixtures/cases.tsv true true
cwd: <workdir>
completed; exit 1; 96 ms
stdout:
ASSERT	round-half-cent	FAIL	QWNtZXwxLjAwfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	FAIL	QWNtZXwtMS4wMHwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	RVJST1JfQ1VTVE9NRVI=
SUMMARY	8	2

stderr:
shared-bug-candidate:unicode · accepted

Compared to declared independent expected invoice result.

Expected

Café 東京|12.50|2026-09-20

Actual

Café 東京|12.50|2026-09-20

Execution receipt

command-11: javac -encoding UTF-8 -d <workdir>/shared-bug-candidate <repo>/demos/migration-witness/fixtures/AfterInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 548 ms
stdout:

stderr:


command-12: java -Dfile.encoding=UTF-8 -cp <workdir>/shared-bug-candidate WitnessHarness AfterInvoice <repo>/demos/migration-witness/fixtures/cases.tsv true true
cwd: <workdir>
completed; exit 1; 96 ms
stdout:
ASSERT	round-half-cent	FAIL	QWNtZXwxLjAwfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	FAIL	QWNtZXwtMS4wMHwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	RVJST1JfQ1VTVE9NRVI=
SUMMARY	8	2

stderr:
shared-bug-candidate:utc-day-boundary · accepted

Compared to declared independent expected invoice result.

Expected

Acme|0.00|2025-12-31

Actual

Acme|0.00|2025-12-31

Execution receipt

command-11: javac -encoding UTF-8 -d <workdir>/shared-bug-candidate <repo>/demos/migration-witness/fixtures/AfterInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 548 ms
stdout:

stderr:


command-12: java -Dfile.encoding=UTF-8 -cp <workdir>/shared-bug-candidate WitnessHarness AfterInvoice <repo>/demos/migration-witness/fixtures/cases.tsv true true
cwd: <workdir>
completed; exit 1; 96 ms
stdout:
ASSERT	round-half-cent	FAIL	QWNtZXwxLjAwfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	FAIL	QWNtZXwtMS4wMHwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	RVJST1JfQ1VTVE9NRVI=
SUMMARY	8	2

stderr:
shared-bug-candidate:leap-day · rejected

Compared to declared independent expected invoice result.

Expected

Acme|-1.01|2024-02-29

Actual

Acme|-1.00|2024-02-29

Execution receipt

command-11: javac -encoding UTF-8 -d <workdir>/shared-bug-candidate <repo>/demos/migration-witness/fixtures/AfterInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 548 ms
stdout:

stderr:


command-12: java -Dfile.encoding=UTF-8 -cp <workdir>/shared-bug-candidate WitnessHarness AfterInvoice <repo>/demos/migration-witness/fixtures/cases.tsv true true
cwd: <workdir>
completed; exit 1; 96 ms
stdout:
ASSERT	round-half-cent	FAIL	QWNtZXwxLjAwfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	FAIL	QWNtZXwtMS4wMHwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	RVJST1JfQ1VTVE9NRVI=
SUMMARY	8	2

stderr:
shared-bug-candidate:invalid-amount · accepted

Compared to declared independent expected invoice result.

Expected

ERROR_AMOUNT

Actual

ERROR_AMOUNT

Execution receipt

command-11: javac -encoding UTF-8 -d <workdir>/shared-bug-candidate <repo>/demos/migration-witness/fixtures/AfterInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 548 ms
stdout:

stderr:


command-12: java -Dfile.encoding=UTF-8 -cp <workdir>/shared-bug-candidate WitnessHarness AfterInvoice <repo>/demos/migration-witness/fixtures/cases.tsv true true
cwd: <workdir>
completed; exit 1; 96 ms
stdout:
ASSERT	round-half-cent	FAIL	QWNtZXwxLjAwfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	FAIL	QWNtZXwtMS4wMHwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	RVJST1JfQ1VTVE9NRVI=
SUMMARY	8	2

stderr:
shared-bug-candidate:empty-amount · accepted

Compared to declared independent expected invoice result.

Expected

ERROR_AMOUNT

Actual

ERROR_AMOUNT

Execution receipt

command-11: javac -encoding UTF-8 -d <workdir>/shared-bug-candidate <repo>/demos/migration-witness/fixtures/AfterInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 548 ms
stdout:

stderr:


command-12: java -Dfile.encoding=UTF-8 -cp <workdir>/shared-bug-candidate WitnessHarness AfterInvoice <repo>/demos/migration-witness/fixtures/cases.tsv true true
cwd: <workdir>
completed; exit 1; 96 ms
stdout:
ASSERT	round-half-cent	FAIL	QWNtZXwxLjAwfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	FAIL	QWNtZXwtMS4wMHwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	RVJST1JfQ1VTVE9NRVI=
SUMMARY	8	2

stderr:
shared-bug-candidate:invalid-date · accepted

Compared to declared independent expected invoice result.

Expected

ERROR_DATE

Actual

ERROR_DATE

Execution receipt

command-11: javac -encoding UTF-8 -d <workdir>/shared-bug-candidate <repo>/demos/migration-witness/fixtures/AfterInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 548 ms
stdout:

stderr:


command-12: java -Dfile.encoding=UTF-8 -cp <workdir>/shared-bug-candidate WitnessHarness AfterInvoice <repo>/demos/migration-witness/fixtures/cases.tsv true true
cwd: <workdir>
completed; exit 1; 96 ms
stdout:
ASSERT	round-half-cent	FAIL	QWNtZXwxLjAwfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	FAIL	QWNtZXwtMS4wMHwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	RVJST1JfQ1VTVE9NRVI=
SUMMARY	8	2

stderr:
shared-bug-candidate:empty-customer · accepted

Declared intentional change: blank customer becomes ERROR_CUSTOMER; excluded from preservation.

Expected

ERROR_CUSTOMER

Actual

ERROR_CUSTOMER

Execution receipt

command-11: javac -encoding UTF-8 -d <workdir>/shared-bug-candidate <repo>/demos/migration-witness/fixtures/AfterInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 0; 548 ms
stdout:

stderr:


command-12: java -Dfile.encoding=UTF-8 -cp <workdir>/shared-bug-candidate WitnessHarness AfterInvoice <repo>/demos/migration-witness/fixtures/cases.tsv true true
cwd: <workdir>
completed; exit 1; 96 ms
stdout:
ASSERT	round-half-cent	FAIL	QWNtZXwxLjAwfDIwMjYtMDktMjA=
ASSERT	unicode	PASS	Q2Fmw6kg5p2x5LqsfDEyLjUwfDIwMjYtMDktMjA=
ASSERT	utc-day-boundary	PASS	QWNtZXwwLjAwfDIwMjUtMTItMzE=
ASSERT	leap-day	FAIL	QWNtZXwtMS4wMHwyMDI0LTAyLTI5
ASSERT	invalid-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	empty-amount	PASS	RVJST1JfQU1PVU5U
ASSERT	invalid-date	PASS	RVJST1JfREFURQ==
ASSERT	empty-customer	PASS	RVJST1JfQ1VTVE9NRVI=
SUMMARY	8	2

stderr:
compile-failure · inconclusive

Compilation did not produce runnable evidence; never a semantic defect.

Expected

Executable Java implementation

Actual

{
  "status": "completed",
  "exitCode": 1
}

Execution receipt

command-13: javac -encoding UTF-8 -d <workdir>/compile-failure <repo>/demos/migration-witness/fixtures/BrokenInvoice.java <repo>/demos/migration-witness/fixtures/WitnessHarness.java
cwd: <workdir>
completed; exit 1; 278 ms
stdout:

stderr:
<repo>/demos/migration-witness/fixtures/BrokenInvoice.java:1: error: illegal start of type
public class BrokenInvoice { public static String render( { return "broken"; } }
                                                          ^
1 error

Reproduce on your machine.

From the repository root, with Node 22 and JDK 21 installed. Runs trusted bundled fixtures locally.

node demos/migration-witness/run.mjs --out /tmp/migration-witness.json

Read the demo source and limitations

Bring one decision to the bench.

A proposed pilot for a team deciding whether this evidence would improve its engineering review.

Proposed delivery cap: 16 engineering hours for this bounded scope, subject to input review and agreement. A planning hypothesis, not a service promise or measured saving.

Good fit
One bounded Java component with observable outputs and a proposed replacement.
You bring
Trusted before/after sources; runtime and dependency assumptions; approved examples and intentional changes.
You take away
An independent acceptance suite, before/after comparison and a separate register of approved behavior changes.
Acceptance to agree
Both versions meet each agreed preservation example; pairwise equality alone is insufficient; intentional changes have explicit approval.
Outside this pilot
Automatic rewriting, general equivalence, dependency-wide compatibility, deployment and savings guarantees.

Measure whether it earns its place.

Agree a comparable baseline, acceptance criteria and a stop condition before work starts. Record setup, execution, human review and rework time, plus tool costs and the full cost of labor. Compare total effort and accepted outcomes; disclose unresolved work.

The demo establishes a mechanism to inspect. Whether it reduces your team's cost or risk is a pilot question. Agree scope, fees, access, data handling and delivery terms before sharing code or data. The brief is a manual preparation step; nothing is sent automatically.

What must remain true after your next change?

Bring a bounded upgrade and the behavior your users depend on. We can turn those expectations into a separate acceptance suite, expose shared bugs and intentional changes, and leave your reviewers with a repeatable comparison.

The proposed work is the acceptance system around your workflow: an explicit contract, checks that can reject a plausible but wrong result, and a record another engineer can reproduce. The small Java example above makes one part of that approach inspectable.

Discuss your acceptance problem

Part of a larger engineering problem.

When agents produce more changes, someone still has to decide which changes deserve acceptance. Odin explores that decision from the rule to the observed outcome.

Blueprint Conformance Engine
Published architecture constraints checked against code. Public, reproducible examples.
A passing pipeline was not yet a verified release
Our internal release account follows coverage artifacts, a qualified image and a user journey. Author-reported; its private receipts are not independently inspectable here.
These Witness experiments
Public adversarial examples: tests that miss defects, matching implementations that share a bug, and corrections that lose required checks.