gallery unit · legacy modernization
Ironwright
A company that runs on old iron: mainframe fixed-width files, aging databases, CSV drops. Ironwright takes it, end to end, to the point where an AI agent can make a real business decision on top of that data, safely. Not one demo: one engine and four mock businesses, each with its own legacy mess, its own ontology, and its own agent.
what you are looking at
01 · legacy in
Fixed-width mainframe files, old SQLite applications, CSV drops, event streams. The mess is generated with the defects planted on purpose, so ground truth exists.
02 · lakehouse
Bronze, silver, gold on Iceberg. Every write goes through write-audit-publish: branch, check, fast-forward. Bad loads never reach a reader.
03 · ontology
Identity resolution with a provenance crosswalk, then objects, links, functions for reads and actions for writes.
04 · agent decides
A LangGraph agent works the decision through ontology calls only, behind default-deny policy. Irreversible actions stop for a human. Every step lands in a hash-chained audit log.
The audit chain, verified here
The films show the run; this verifies its receipt. The retail pack’s hash-chained audit log ships with this page, preimages and all, and your browser recomputes every SHA-256 digest and checks every link.
the hash-chained audit log · retail pack · 59 rows · verified here, in your browser
Every action the agent took landed in an audit log where each row’s hash covers the previous row’s. The export ships the exact bytes the engine hashed, so this page recomputes all 59 SHA-256 digests and checks every link. Tamper mode rewrites one row the careful way, editing seq 23 (propose_facing_change · needs_approval) into an approval and recomputing that row’s hash, so the row itself looks perfect. Watch where the chain catches it.
Four packs, four decisions
Each film below is rendered from the engine’s own export for that pack: the numbers, runs and traces on screen are what the engine actually produced. 1 min 34 s each, silent.
Why is this item underperforming in this store, and what do we do?
This shipment is late. Why, and expedite, reroute, or just tell the customer?
Is this AML alert worth escalating, or can it be recommended for closure?
Fast track this claim, send it to coverage review, or refer it to SIU?
Go deeper
What runs where, and what it costs
Everything runs on a laptop for $0: no Docker, no API keys, no cloud account. The lakehouse is PyIceberg on SQLite with DuckDB reads. The agent runs offline by default; pointing it at a hosted model is a config change, not a code change. The suite is 9 tests covering the engine and all four packs end to end, green on the 2026-10-13 build of this page (Apple M1 Pro).
Two more films, and why they do not count
Healthcare and investing films exist too, rendered from hand-written specs rather than engine runs. They are ideation, not evidence, so they are not shown beside the four real packs. They ship with the source and are labeled the same way there.
The policy and audit posture
Policy is Cedar-style and default deny: an action either has a permit or it does not run, and irreversible actions carry forbids that route to human approval instead. Model output never picks an action and never reaches a tool argument. The audit log is hash-chained, so editing history breaks the chain visibly.
Where the source is
Everything on this page is reproducible from github.com/ShreyPatel4/ironwright: the engine, the four packs, the tests, and the scripts that rendered these very films from the engine’s own exports. Clone it and make test runs the same 9 tests this page cites.