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
#
Check
P/F
1
Every citation was fetched from its source, never accepted from generation: the DOI or URL resolves
☐
2
Author names and title match the fetched source exactly
☐
3
Journal, year, volume, and pages match the fetched source
☐
4
The 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
#
Check
P/F
5
The estimand is written down from the paper or canonical implementation before reading the generated code
☐
6
The low-visibility choices are named in the spec: comparison set, weighting, transformation window, indexing
☐
7
A controlled data-generating process exists with a planted true value for the target parameter
☐
8
The implementation recovers the planted value across many simulated draws, within a stated tolerance
☐
9
The simulated data break the easy symmetries (unequal group sizes, unbalanced timing, missing cells)
☐
10
The 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
#
Check
P/F
11
Every number in prose traces to a computed value in a saved output file
☐
12
Every factual claim about external data names its source, and the source says what the claim says
☐
13
Anything 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.