Reproducibility by default: the code behind every figure

Reproducibility by default: the code behind every figure

Ask a lab to regenerate a figure from a paper they published two years ago and watch what happens. The script is on a former student's laptop. The data file has three near-identical versions. Nobody remembers which preprocessing was final. Reproducibility fails not from bad intent but from missing plumbing.

Provenance is attached, not archived

In Neutropic, every artifact — figure, table, report — carries its provenance with it:

  • The exact code that produced it, runnable again in one click.
  • The data snapshot it was computed from, hashed so drift is detected.
  • The sources behind every literature-derived claim, cited inline.

There is no separate "methods folder" to maintain, because the artifact is the record. Open any figure and press the { } button: the generating code, the dataset it read and the seed are right there.

The Reproducibility panel of a figure: the matplotlib code that drew it, reading the same pss_trial.xlsx the analysis used.
The Reproducibility panel of a figure: the matplotlib code that drew it, reading the same pss_trial.xlsx the analysis used.

The pipeline is visible while it runs

Reproducibility starts before the artifact exists. Each analysis step — loading the dataset, running code in the sandbox, writing the report — is shown in the chat as it happens, with the code expandable in place, so what the agent did is never a matter of reconstruction.

A statistics turn: dataset loaded, code run in the sandbox (expandable), report written — and the report itself names the pipeline it followed.
A statistics turn: dataset loaded, code run in the sandbox (expandable), report written — and the report itself names the pipeline it followed.

Annotate and revise without losing the chain

Reviewers and collaborators can annotate any artifact and request changes. A revision reruns the pipeline from the annotated point, producing a new version that remembers its parent — so "final_v3_REAL" filenames disappear, and the history of a result stays inspectable. Manuscripts inherit the same chain: every statistic in the draft points at the analysis that produced it, and the reference list is rebuilt from the session's stored sources.

![The manuscript's reference list, rebuilt from the session's sources so it matches exactly the [n] citations in the text.](/use-cases/06-references.png)

Built for how verification actually happens

When a reviewer questions a result, you don't reconstruct the analysis — you open it. When a collaborator joins, they don't ask which script made Figure 2 — they click it.

Reproducibility shouldn't be a virtue you practice. It should be a property of the tool.