Intellectual Frontiers

A Rerun of a Paper's Code Is Scored Before It Starts

Protocol for H1 and H2

This protocol implements the practical tests of H1 and H2 in the program. It measures whether an outside person can reach a paper’s reported numbers from its shared code, how long it takes and why it fails. It doesn’t show whether the paper’s conclusions are right.

Before you start

  1. Write down the sample frame: the journals, the publication window and the rule for "links to code". Write it before you search.

  2. Write down what counts as reaching a reported number: the same value to the precision the paper reports, or a stated tolerance for results that use random numbers.

  3. Write down the time limit for one rerun. The program’s H1 uses one working day of eight hours.

  4. Choose the people who do the reruns. A person who reruns a paper must not be an author of it.

  5. Record the computer, the operating system and the network access that each rerun uses.

Sampling

  1. Search the journals in the frame for papers that link to a code repository or a code archive.

  2. Exclude each paper whose code needs data that the rerunner cannot get under the paper’s own access terms. Record each exclusion and its reason.

  3. Choose papers from the remaining set at random. Record the random seed.

Mechanical checks, before the rerun

Do these checks for each repository before anyone tries to run it. Record each answer as yes, no or cannot tell.

  1. Is the release archived with a DOI, or another persistent identifier?

  2. Is the environment pinned: a lockfile, a container definition or a list of package versions?

  3. Does the data reference resolve to the data the paper cites?

  4. Is there one documented entry point: a command or a numbered list of steps?

  5. Are the outputs declared: does a file or a README map each table and figure to what writes it?

  6. Is a licence stated?

Do not change the answers after the rerun.

The rerun

  1. Start a clean environment with no software from earlier reruns.

  2. Follow the repository’s instructions as written. Record each step you take that the instructions do not state.

  3. Stop at the time limit.

  4. For each table and figure in the paper, record whether the rerun reached the reported number.

  5. If the rerun failed, record the first cause: code not reachable, environment not reproducible, data not reachable, code error, output differs, instructions missing, or time limit.

  6. Write the result record before you look at the mechanical-check scores of other repositories.

Failed reruns are reported with the same detail as successes

Report the share of papers that reached all their reported numbers within the time limit, the share that reached some, the time each rerun took, and the count of each first cause. For H2, report how well the mechanical-check score separates the reruns that succeeded from those that failed. Report the failed reruns with the same detail as the successful ones.

H1 fails if more than half of the sampled papers reach all their reported numbers within the time limit. H2 fails if the mechanical-check score separates successes from failures no better than chance.