Medical imaging, inverse problems, and the evaluation of AI systems. I work at both ends — the applied mathematics and the code that checks whether it survived contact with data. Most of what is public here is a harness: something built to prove its own headline number wrong, which says so in the README when it succeeds. The methods work sits mainly in unreleased repositories; what you can read below is the part I can show.
Recent examples of that working: on TopCoW a random assignment of fragments cut the break rate as much
as the repairs I had built, so topocheck ships that baseline as
one of its five checks — if your repair does not beat random, it prints beats random: False;
and a reproduction of an official CT pipeline needed seven undocumented layers before its number
matched, each one written down in
DEBUGGING.md.
Four of the five are bugs found by reading someone else's source, each submitted with a reproduction and a before/after table. The merged one is the smallest of them; I list it first only because it is the one a reader can verify in a click.
| Where | What | Status |
|---|---|---|
| InternScience/MLEvolve | #8 a data-leakage guard, on by default, compared floats with == — so the 117 lines behind it had never once run · #9 the memory block sorted minimise-metrics backwards, so the model was shown the worst sibling and told it was the best |
open |
| InternScience/InternAgent | #27 a task was configured to maximise test-set MSE, so a worse error scored as progress and was rewarded. One character | open |
| ResearAI/DeepScientist | #110 pytest aborted collection on a clean checkout — 56 test files lost to one undeclared optional import, in a repository whose CONTRIBUTING tells you to run exactly that |
open |
| github/awesome-copilot — GitHub's own collection | research-harness-engineer, an agent definition for running research as a falsification loop · #2938 fixes a row in their contributor table that overflows its own width |
merged, and on the contributor wall |
| Project | What it does, and the number it stands on |
|---|---|
| breakthrough-harness | Make a research agent hard to fool. Adapters for nine stacks; every claim in the README is asserted by a test. Works with DeepSeek Harness with nothing to copy — its skill provider scans .agents/skills, which this repo already has. |
| ct-reconstruction-harness | Reproduce the LoDoPaB-CT baselines from scratch (FBP 31.05 vs official 30.19; TV-Adam 33.83 vs 33.36), then a generate-and-select loop finds TGV at 34.51 held out, against a published 34.41. Every guard is run against a deliberately broken operator. |
| ifeval-reproduction | Reproducing a published IFEval score on one shared GPU. Three arms and a pre-registration chain that CI re-hashes on every push. The third arm looked like an 11-point gain from thinking mode until the paired test showed the first arm scores the same on those same prompts — the subsample was easier. |
| topocheck | Five checks for topology-aware segmentation claims — including the random-repair baseline that beat every learned repair I tried. |
| scholarcheck · sciglyph · docxaudit | On PyPI, and installed by people I have never met. Verify citations before a reviewer does; publication figures that check their own layout; find what a converter silently dropped. |
| worldmodel-from-scratch | Build a world model in an afternoon, then measure where it breaks. The README separates claims that hold on any machine from those that do not, and CI checks only the first kind. |
| world-model-map | A researcher's map of open-source world models — what each one actually claims, what its authors say it cannot do, and an evidence grade per entry. CI re-resolves every citation. |
| kakeya-conjecture-lab | An interactive lab for the Kakeya conjecture. The dimension meter recomputes its own numbers in the test suite, so the page cannot drift from the mathematics. |
Stars are a poor signal at this size, so here is clone traffic instead.
A correction I had to make to my own table. GitHub counts every Actions checkout as a clone, and
my CI runs on push. In the first version of this section, between 13% and 56% of each repository's
"clones" were my own workflows — worldmodel-from-scratch showed 250 clones by 64 people, of which
about 140 were CI. The first column now counts only days on which no workflow ran in that
repository at all. That reorders the table completely and cuts the largest figure from 64 people
to 5. The raw totals sit beside it so you can see the size of the correction instead of taking my
word for it.
You cannot re-run these yourself, because the traffic endpoint is visible only to a repository's
owner. So the raw API response — every day, with that day's CI-run count — is committed to
data/traffic.json. Each badge is a live shields.io query against that file, not
a picture of a number, and its history
shows the figures accumulating over time. The PyPI badges link to
pypistats.org, which is public: those three numbers
you can check without me.
| Repository | People who cloned it, CI excluded (2026-09-04) | Raw total | PyPI / month |
|---|---|---|---|
| docxaudit | |||
| scholarcheck | |||
| kakeya-conjecture-lab | — | ||
| sciglyph | |||
| world-model-map | — | ||
| topocheck | — | ||
| worldmodel-from-scratch | — | ||
| breakthrough-harness | — | ||
| ct-reconstruction-harness | too new to have traffic | — | — |
Most of the methods work is in unreleased repositories, because a paper or a filing is still open. It is described only in outline: an idea in submission is easy to take and hard to get back. This section exists so the public half of the page is not mistaken for the whole of it.
Four lines are open at the moment. Between them they cover guarantees for medical image segmentation, what a pre-treatment image can and cannot establish about a treatment decision, image synthesis for adaptive radiotherapy, and prognostic markers in functional imaging. One has a patent filed against it; two are with reviewers; one is written and held.
What they have in common is the part I would rather be judged on than the individual results: each began with a measured ceiling and a random baseline before any method was built, each carries a shuffled or permuted control wherever one is definable, and each has a written record of the attempts that did not survive those checks. Several lines were closed on exactly that basis, which is why there are four here rather than a dozen.
Happy to go into any of it properly in a conversation.
Numbers go to disk before sentences are written about them. Every guard is run against a deliberately broken input and has to fail for the right reason before it counts. When a result does not survive that, the repository says so — the honest number is more useful than the flattering one.