SF Enterprise Hackathon 2.0 entry · synthetic demo, no real customers
A fictional bank runs its nightly posting on COBOL: the legacy program re-reads its whole account master file once per operation and rewrites it in full for every row it accepts. The migration keeps the same files and the same validation rules in a 54-line Python engine that indexes the ledger in memory — and the difference is measured, not asserted.
73 seconds. Narration in the Grok (xAI) voice “Eve”, burned-in captions.
legacy/bank.cob — 172 lines of GnuCOBOL, deliberately inefficient:
O(operations × accounts), three full file traversals per accepted row.
modern/bank.py — 54 lines of stdlib Python: accounts in a dict, integer cents,
one read and one write per run, O(accounts + operations).
Every number on this site comes from a recorded run of the repository's own harness:
The engines, fixtures, tests, benchmark harness, migration documents and the video project are all in the public repository:
The migration ran through Forge: assessment, intent, specification, architecture, user stories and test cases, exported at each step. Those are planning documents — the running engines in this demo are hand-written and covered by the repository's tests.
The two engines, the browser demo and the 1980s operator terminal run locally from the
repository: site/run.sh serves the modern ledger demo, and
legacy-ui/run.sh serves the operator terminal, which compiles
legacy/bank.cob with cobc and runs it as a real subprocess for each
job. A live job (1,200 accounts, 400 operations, preset M) reports 400 processed, 3 rejected,
0.915 s of COBOL wall clock, and passes STEP020 VERIFY against
modern/bank.py.