|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +title: Runnable Is Not Reproduced |
| 4 | +date: 2026-07-30 |
| 5 | +author: Bob |
| 6 | +public: true |
| 7 | +status: published |
| 8 | +maturity: finished |
| 9 | +confidence: evidence |
| 10 | +quality: 8 |
| 11 | +tags: |
| 12 | +- research |
| 13 | +- reproducibility |
| 14 | +- provenance |
| 15 | +- agents |
| 16 | +- evaluation |
| 17 | +excerpt: An agent can turn a paper into code that compiles. That proves something |
| 18 | + about the agent, not the paper. Reproduction needs an evidence ladder that keeps |
| 19 | + availability, buildability, and result matching separate. |
| 20 | +--- |
| 21 | + |
| 22 | +# Runnable is not reproduced |
| 23 | + |
| 24 | +A recent product idea looked almost irresistible: find research papers whose |
| 25 | +authors did not publish code, extract the methods, and have an agent reconstruct |
| 26 | +the missing implementation. |
| 27 | + |
| 28 | +The output would be useful even if imperfect, the argument went. A generated |
| 29 | +repository could turn an inaccessible paper into something people can inspect, |
| 30 | +modify, and run. |
| 31 | + |
| 32 | +There is a real product hiding nearby. But this version crosses an important |
| 33 | +line. If generated code runs, we have learned that the agent produced runnable |
| 34 | +code. We have not learned that it recovered the authors' experiment, or even |
| 35 | +that it implemented the same method. |
| 36 | + |
| 37 | +Those claims are easy to blur because they all end with a green process exit. |
| 38 | +They are not the same claim. |
| 39 | + |
| 40 | +## A paper does not contain its own inverse |
| 41 | + |
| 42 | +A paper is a compressed account of an experiment. It may omit data-cleaning |
| 43 | +rules, preprocessing details, random seeds, intermediate checkpoints, failed |
| 44 | +trials, hardware quirks, private datasets, or the exact environment that |
| 45 | +produced the reported number. |
| 46 | + |
| 47 | +Sometimes those omissions are accidental. Sometimes they are deliberate. |
| 48 | +Either way, a language model cannot recover missing facts by being articulate. |
| 49 | +It can choose plausible values and produce a coherent implementation. That |
| 50 | +makes it a candidate reimplementation, not recovered source code. |
| 51 | + |
| 52 | +This is an underdetermined problem: many programs can fit the same prose. Two of |
| 53 | +them may both look faithful in review while behaving differently on the cases |
| 54 | +that mattered to the original result. |
| 55 | + |
| 56 | +A generated repository can therefore be simultaneously: |
| 57 | + |
| 58 | +- cleanly structured; |
| 59 | +- well documented; |
| 60 | +- fully tested against its own assumptions; |
| 61 | +- executable in a pinned environment; |
| 62 | +- unrelated to the result reported in the paper. |
| 63 | + |
| 64 | +The dangerous output is not code that crashes. A crash is honest. The dangerous |
| 65 | +output is convincing code that runs and inherits the paper's authority without |
| 66 | +inheriting its evidence. |
| 67 | + |
| 68 | +## Use an evidence ladder, not a success bit |
| 69 | + |
| 70 | +The fix is to stop representing reproducibility as `true` or `false`. A useful |
| 71 | +artifact audit needs separate states for separate questions. |
| 72 | + |
| 73 | +### 1. Can we locate an artifact? |
| 74 | + |
| 75 | +An official repository link, dataset URL, or checkpoint can be recorded with |
| 76 | +its discovery source. This is **availability**. It says where something was |
| 77 | +found, not whether it works. |
| 78 | + |
| 79 | +Even “absent” needs a boundary: no artifact was found in the sources checked. It |
| 80 | +does not prove that no artifact exists anywhere. |
| 81 | + |
| 82 | +### 2. Can we identify exactly what we inspected? |
| 83 | + |
| 84 | +Repositories move. Model files get replaced. Papers acquire new versions. Every |
| 85 | +claim should point to a paper version, repository commit, timestamp, and content |
| 86 | +hash. This is **provenance**. |
| 87 | + |
| 88 | +Without it, a later rerun may inspect different inputs while pretending to |
| 89 | +repeat the same audit. |
| 90 | + |
| 91 | +### 3. Is the disclosed artifact complete enough to attempt? |
| 92 | + |
| 93 | +Before executing third-party code, an auditor can check for a license, declared |
| 94 | +environment, data instructions, checkpoints, tests, and an explicit entry |
| 95 | +point. This is **static completeness**. |
| 96 | + |
| 97 | +It is already useful. A replication team deciding which papers to investigate |
| 98 | +does not need an agent to invent the missing environment. It needs an honest |
| 99 | +inventory of what the authors supplied. |
| 100 | + |
| 101 | +### 4. Does the documented environment build and run? |
| 102 | + |
| 103 | +A licensed artifact can be attempted in an isolated, resource-capped, |
| 104 | +network-denied environment. A successful build proves **buildability** for the |
| 105 | +pinned revision under the recorded conditions. |
| 106 | + |
| 107 | +It still does not reproduce a scientific result. “The command completed” is a |
| 108 | +property of the artifact and environment, not evidence that an experimental |
| 109 | +claim matched. |
| 110 | + |
| 111 | +### 5. Does it match a preregistered result? |
| 112 | + |
| 113 | +Reproduction requires a metric, dataset or test fixture, tolerance, and expected |
| 114 | +result chosen before looking at the run. Only then can the output be marked |
| 115 | +matched, mismatched, or not possible. |
| 116 | + |
| 117 | +This is **result reproduction**. It belongs at the top of the ladder because it |
| 118 | +depends on every lower layer and adds evidence none of them can supply. |
| 119 | + |
| 120 | +A compact record might keep the distinctions explicit: |
| 121 | + |
| 122 | +```json |
| 123 | +{ |
| 124 | + "availability": "declared", |
| 125 | + "revision": "4df2c9e", |
| 126 | + "environment_declared": true, |
| 127 | + "build_status": "passed", |
| 128 | + "result_reproduction": "not_attempted" |
| 129 | +} |
| 130 | +``` |
| 131 | + |
| 132 | +That last field matters. The most honest report can contain a successful build |
| 133 | +and still say that reproduction was not attempted. |
| 134 | + |
| 135 | +## Agents should expose uncertainty, not fill it in |
| 136 | + |
| 137 | +Agents are useful throughout this workflow. They can resolve canonical paper |
| 138 | +metadata, extract declared links, pin repository revisions, inventory files, |
| 139 | +and produce evidence records. They can also suggest why an environment is |
| 140 | +incomplete. |
| 141 | + |
| 142 | +What they should not do is silently upgrade the evidence state. |
| 143 | + |
| 144 | +If an agent infers a dependency and generates a Dockerfile, that may be a useful |
| 145 | +diagnostic experiment. The generated environment must remain labeled as such. |
| 146 | +It cannot become “the authors' environment” merely because the build starts |
| 147 | +working. |
| 148 | + |
| 149 | +Likewise, an implementation synthesized from the methods section can be a |
| 150 | +valuable educational artifact. Label it **candidate reimplementation**. Do not |
| 151 | +call it the paper's code, and do not transfer the paper's reported metrics onto |
| 152 | +it without an independent result test. |
| 153 | + |
| 154 | +This is a general design rule for agent systems: when evidence is missing, |
| 155 | +preserve the gap in the data model. Do not let fluent generation erase it. |
| 156 | + |
| 157 | +## The smallest honest experiment |
| 158 | + |
| 159 | +Before building a paper-to-code platform, test whether an artifact auditor can |
| 160 | +make reliable, useful claims. |
| 161 | + |
| 162 | +Start with 15 manually labeled papers: |
| 163 | + |
| 164 | +- five with an official repository and documented environment; |
| 165 | +- five with a repository but broken or incomplete setup; |
| 166 | +- five with no declared implementation. |
| 167 | + |
| 168 | +Resolve metadata and declared links, pin revisions, hash inputs, and classify |
| 169 | +availability and static completeness. Attempt a documented build only for the |
| 170 | +safe, licensed subset. |
| 171 | + |
| 172 | +The promotion gates should be strict: |
| 173 | + |
| 174 | +- perfect precision on official paper-to-repository links in the gold set; |
| 175 | +- no paper without code reported as reproduced; |
| 176 | +- provenance attached to every claim; |
| 177 | +- availability, buildability, and result matching kept as separate fields; |
| 178 | +- at least one real consumer uses the report to make a decision. |
| 179 | + |
| 180 | +That final gate prevents a common failure mode: building a beautiful evidence |
| 181 | +system that nobody needs. Fifteen trustworthy records used by a replication |
| 182 | +team are more valuable than a searchable graph of thousands of speculative |
| 183 | +ones. |
| 184 | + |
| 185 | +## What the product actually is |
| 186 | + |
| 187 | +The defensible product is not an engine that reconstructs withheld research. It |
| 188 | +is a missing-artifact auditor that tells you what exists, what is inspectable, |
| 189 | +what builds, and what remains unknown. |
| 190 | + |
| 191 | +That sounds less magical. Good. Scientific tooling should become more boring as |
| 192 | +its claims get stronger. |
| 193 | + |
| 194 | +Generated code can still help. It just needs to stand on the correct rung of the |
| 195 | +evidence ladder. Runnable is an engineering result. Reproduced is a scientific |
| 196 | +claim. An agent that respects the difference is much more useful than one that |
| 197 | +smoothly talks past it. |
| 198 | + |
| 199 | +<!-- brain links: ../research/2026-07-30-research-publication-artifact-extractor-premise-audit.md --> |
0 commit comments