Skip to content

docs: sample Migration Verification Report from a real run (#59) - #216

Merged
amar-python merged 3 commits into
mainfrom
docs/59-sample-verification-report
Nov 10, 2026
Merged

amar-python merged 3 commits into
mainfrom
docs/59-sample-verification-report

Conversation

@amar-python

Copy link
Copy Markdown
Owner

What

A sample Migration Verification Report (docs/samples/MIGRATION_VERIFICATION_REPORT_SAMPLE.md) produced by a real run, plus the script that produces it and the raw evidence behind it.

Refs #59. Not Closes: whether this meets "a Defence buyer could review" is the product owner's call, and the repo rule is that issues close on clean evidence.

File Role
scripts/sample_verification_run.py Drives the running API, cross-checks it against the database, renders the report
docs/samples/orgs_sample.csv Synthetic T&E input: 10 rows, 4 deliberately defective
docs/samples/equipment_register.csv Synthetic dynamic-mode input: 8 clean rows
docs/samples/verification-run-evidence.json Raw API responses and database reads behind every figure
docs/samples/MIGRATION_VERIFICATION_REPORT_SAMPLE.md The report

"Every figure traceable to a real run"

Nothing in the report is typed by hand. The script renders it from the evidence it records. The run was against PostgreSQL 16.15, the live API (real sign-in, real tenant schema) and a fresh database, at code version 01602c1. Result: 12 of 12 checks pass (6 of 10 T&E rows loaded, 4 rejected exactly as designed; 8 of 8 dynamic rows loaded; duplicates refused; audit chain intact).

The checks can fail

Re-running the script against the now-populated database exits 1 and writes "NOT RECONCILED" with 3 failed checks. I did that before committing, so a green report is not the only outcome the harness can produce.

What the report deliberately does not claim

Section 8 of the report says so in its own words: synthetic data only, development configuration (observed during the run: unauthenticated requests return 200, and the API connects as the audit table's owner), developer-run rather than independent, no ASDEFCON/DID claim (#159 is still open), and re-upload in T&E mode is unsafe (#215).

Found along the way

Reviewer notes

  • Not run in CI. The script needs a live API and database, so it is a manual, repeatable procedure (steps in the script's docstring), not a test.
  • Markdown lint: markdownlint-cli2 reports 0 errors on the report.
  • Outputs contain run timestamps, so regenerating produces a different file; the counts and hashes are stable.

Generated by Claude Code

…on report (#59)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011T6Wqm1jLdq3ZEfuKdp9aM
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011T6Wqm1jLdq3ZEfuKdp9aM
Generated by scripts/sample_verification_run.py against a fresh PostgreSQL 16
database and the live API at code version 01602c1: 12 of 12 checks pass. The
raw responses and database reads behind every figure are in
docs/samples/verification-run-evidence.json.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011T6Wqm1jLdq3ZEfuKdp9aM
@amar-python
amar-python marked this pull request as ready for review November 10, 2026 00:50
@amar-python
amar-python merged commit d2c0cbe into main Nov 10, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants