Verification Checklist for AI-Assisted Empirical Work

Run before any result, citation, or claim is treated as final. Each item is pass or fail; a skipped item is a fail. The agent satisfies this checklist before a human reads the output.  ·  Project:   Date:

A. Citations

#CheckP/F
1Every citation was fetched from its source, never accepted from generation: the DOI or URL resolves
2Author names and title match the fetched source exactly
3Journal, year, volume, and pages match the fetched source
4The claim attributed to each paper appears in that paper

Unchecked citations accumulate hallucination debt: one fabricated reference becomes the foundation for claims built on top of it.

B. Code and estimators: the planted-truth routine

#CheckP/F
5The estimand is written down from the paper or canonical implementation before reading the generated code
6The low-visibility choices are named in the spec: comparison set, weighting, transformation window, indexing
7A controlled data-generating process exists with a planted true value for the target parameter
8The implementation recovers the planted value across many simulated draws, within a stated tolerance
9The simulated data break the easy symmetries (unequal group sizes, unbalanced timing, missing cells)
10The code was read line by line against the source on every weight, aggregation rule, and index

The kit's validate-estimator skill walks an agent through items 5–10. Some errors appear only in the reading, never in the simulation output.

C. Empirical claims

#CheckP/F
11Every number in prose traces to a computed value in a saved output file
12Every factual claim about external data names its source, and the source says what the claim says
13Anything published or shared externally received the highest scrutiny

End-of-session capture (five minutes, before closing)

What changed: files touched, functions added, results produced.

Why it changed: reasons behind non-obvious choices; constraints and trade-offs.

What comes next: concrete next tasks, written while still clear.

What failed: approaches rejected, each with its reason, so nobody re-explores a dead end.

Week-One Glossary

Ten terms from the first week of using Claude Code on an empirical project. Keep beside the keyboard; retire when they feel obvious.

commit
A saved snapshot of the project at a point in time, recorded by git with a short message saying what changed. A commit right after each working result makes any past state of the analysis recoverable.
diff
The line-by-line difference between two versions of a file: what was added, what was removed. Reading the diff is how AI-written changes get reviewed before they are trusted.
PR (pull request)
A proposed batch of commits packaged for review before it merges into the main line of the project. A coauthor can read exactly what changed in the analysis and approve it before it becomes the record.
.gitignore
A text file listing what git must never track: data files, credentials, caches, generated output. It keeps restricted-use microdata and API keys out of a repository that may one day ship publicly.
DuckDB
A database engine that runs inside a script or notebook, no server to install, and queries files directly with SQL. It aggregates a multi-gigabyte extract on a laptop without loading the whole file into memory.
parquet
A compressed, column-oriented file format for tabular data. Column types survive between sessions, so FIPS codes saved as strings stay strings, and large panels load fast.
FIPS
Federal Information Processing Standards codes: numeric identifiers for states (2 digits), counties (5), census tracts (11). The merge keys of US regional data; they carry leading zeros, so storing them as integers silently corrupts every merge downstream.
context window
The bounded amount of text a model can consider at once; every file read and every exchange consumes part of it. The window is a budget: reading ten files costs more than deeply analyzing one.
subagent
A helper the agent creates with its own separate context window; it executes a focused task and reports back a summary. Like delegating retrieval to an RA: dead ends stay in the helper's workspace, only the summary lands in the main session.
compaction
The automatic summarization Claude Code performs when a session nears its context limit. Summaries lose nuance: the decision survives, the three reasons an alternative was rejected may not. Decisions belong in notes files that persist.