ai-os · evolving agents labs
Everyone can generate. Almost nobody can tell you, six months later, whether the number in their README is still the number their code produces — and prove it to a stranger. You are the stranger. This page is the proof.
This is not the demo. It shows you nothing about how the system works — no flow, no agent, no step. The desk is the demo, and it is the one to open first. This page exists for afterwards, when you want to stop taking anybody's word for the numbers.
Nothing here is simulated. Every byte checked below is a real artifact
out of projects/coclea-sr and projects/hemo-verified,
embedded in this file verbatim. The checking runs in your browser: no network, no
server, no model. Save the page and it still works offline.
The code doing it is a second implementation, in a second
language, of projects/coclea-sr/verify_ledger.py — a verifier that
shares code with the thing it verifies is checking that the code is
self-consistent, not that the record is true. Both agree on these bytes;
scripts/verify-page/test.mjs is what says so.
Each ledger entry names the SHA-256 of the line before it, so the record is only as editable as the reader is incurious. Three properties per entry, and they are not the same property: the link holds, the line is its own canonical encoding, and the artifact it names still hashes to what it recorded.
Editing an entry and leaving the rest alone breaks exactly one link — the next one — and does not move the head, because the head is the hash of the last line. Re-chaining the tail hides every break and does move it. That is why a published head is worth having and why comparing heads alone is not a check.
A run lives in runs/<experiment>-<12 hex digits>/, and
those twelve digits are the beginning of the SHA-256 of the file inside it.
Nothing has to be trusted: hash the bytes, read the name.
A hash says the bytes are the ones recorded. It says nothing about whether
anything can read them. Python's json.dumps emits bare
NaN and -Infinity, which JSON does not have — so a run
can be perfectly intact and parse in no language but the one that wrote it. Two
attested artifacts are in that state, and one of them travels with this page.
Your browser refuses it for free. Python needed a deliberate
parse_constant to refuse its own output, and until somebody wrote
one, the check passed on exactly the files it existed to catch. That is
FRICTION F8.
The gate count is not a number somebody types. It is
len(distinct gates) and len(reports) over the report
artifacts — which is how it was caught saying 26 / 125 for six days after
it had become 28 / 135.
Every sentence below is quoted from the repository or the site. Each one is
resolved live out of the artifact that produced it, with the path it came from.
This is what scripts/check-coclea-results.py does in CI; here you
watch it happen.
Reproducibility is a claim about two runs, so it needs two artifacts. On the left is the H0 report as it was committed; on the right, the same report regenerated from the code that was committed beside it. Every number is bit-identical except one.
66 of A4's 98 measurements are exactly 0.0, so one
uncorrupted case sitting at 1.03e-13 in one build and 0.0
in another crosses into a 66-wide tie block and drags a rank statistic by 0.054.
The composite never moves, because A4 is a hard gate and contributes a pass/fail
against a threshold far above the noise floor — never its score. A statistic that
depends on a library version moves silently at the next upgrade, which is why the
artifact now records the environment it was produced on.
Generated by scripts/build-verify-page.py from the artifacts
themselves — a page maintained separately from its data stops being true within a
week, quietly, while continuing to look right.
Evolving Agents Labs · the demo — the desk, which is what the system looks like · the repository · what would make this matter