A research notebook starts with five project-level files and two
indexes, then grows with the work. Evidence moves from a question through an experiment,
a processed run, a finding, and a publication claim that
cites the registered estimand it rests on. Human review gates separate preparation,
execution, interpretation, and promotion. The reference describes
experiment records and
plan records in detail.
workflow / setup
Set up or adopt a notebook
Install the notebook skill into the current project with the cross-agent installer:
npx skills use osteele/research-notebook@research-lab-notebook
Install globally for Claude Code and Codex
npx skills add osteele/research-notebook -g -a claude-code -a codex -s research-lab-notebook -y
Update this skill
npx skills update research-lab-notebook
Remove this skill
npx skills remove research-lab-notebook
From the research project, give the notebook skill one short instruction:
Use $research-lab-notebook to add a research notebook to this project. Jobs run through Slurm.
Research work may run through a local queue,
Dagu,
Pueue,
SkyPilot,
Slurm, or
Weft. Setup inspects the project and records
how agents submit work, read status and logs, retrieve outputs, cancel work, and mark its
evidence processed. It adds a processed-job ledger when the system lacks suitable processed
state. The prompt needs no ledger instruction.
Some agents use $research-lab-notebook for explicit invocation. In an agent
without that syntax, say “Use the installed research-lab-notebook skill” instead.
STATUS.mdcurrent orientation
QUESTIONS.mdknown, open, blocked
PRIORITIES.mdcurrent focus and queue
CHANGELOG.mdresults and decisions
CLAIMS.mdclaims and supporting evidence
experiments/README.mdexperiment index
findings/README.mdfinding index
Add other files only when they have a current job. The
structure reference
lists the available roles.
workflow / first reading
Walk the notebook before editing it
The baseline notebook has five files at its root and two indexed directories. Optional
records appear only when the project needs them. Research scripts and large outputs remain
beside the notebook in the project tree.
Open STATUS.md. Its snapshot names the current phase, established result, open work, next action, and navigation links.
Question
Follow the linked item in QUESTIONS.md. An RQ# entry names the falsifiable question, status, short answer when known, and evidence links.
Evidence map
Open experiments/README.md, then the experiment linked from the question. The index locates the record; the experiment owns its design, runs, results, and conclusion.
Synthesis
If the experiment links a dated finding, read it through findings/README.md. A finding combines evidence from several experiments and does not replace their records.
Argument
If the project is preparing a paper, trace the estimand into CLAIMS.md and then PUBLICATION.md. These files own claim strength and submission state.
Next work
Finish at PRIORITIES.md and any linked active plan. They state what is ready, what it gates, and where the next result must be recorded.
Recognize the common file shapes
Path
Shape
Purpose
STATUS.md
A short Snapshot field list and Navigation links
Orientation, not detailed evidence
QUESTIONS.md
Repeated ## RQ# entries with question, status, answer, and evidence fields
Stable inquiry IDs
experiments/EXP-*.md
Metadata followed by hypothesis, method, estimands, predictions, runs, results, conclusion, and artifacts
One experiment from design through interpretation
findings/YYYY-MM-DD-*.md
Dated metadata followed by claim, evidence, synthesis, scope, consequences, and sources
Immutable cross-experiment synthesis
PRIORITIES.md
One current focus, a short checkbox queue, and optional prediction table
Next actions and their gates
plans/*.md
YAML frontmatter followed by goals, phases, gates, state, and terminal disposition
Bounded work across phases or sessions
CLAIMS.md
A six-column claim table with direct experiment or estimand evidence
The paper-sized argument
The file-format reference
gives the complete contracts, including optional records. The experiment and plan pages give
the full schemas for the two records that change throughout their lifecycle.
workflow / arrival
Orient before changing the record
Read
Project instructions, STATUS.md, and the relevant research question.
Trace
Follow links to the experiment, finding, plan, or claim that owns the evidence.
Locate
Confirm the notebook's version-control boundary and the project's command runner.
Choose
Edit the authoritative record. Update indexes with links instead of copying its conclusion.
A new agent can reconstruct the work without chat history. STATUS.md points to
the active evidence and next actions; the owning records carry the details.
A question record an agent lands on from STATUS.md. From QUESTIONS.md, RQ1.
### RQ1. Are coexisting spaces separably represented?
**Question**: When a context establishes a base-world property `P` and a
counterfactual-world counterpart property `P′` for the *same* entity, are `P` and `P′`
**both** decodable, and separately, from activations over a single later mention of the
entity?
**Hypothesis**: For a capable model, both are decodable above chance at some
mid/late layer, and decodability is not pure recency …
**Experiments**: [[EXP-001-counterfactual-space-decodability]]
**Status**: supported — outcome (b) on Qwen2.5-3B (0.95/0.95), Qwen2.5-7B (0.92/0.91), and
pythia-2.8b (0.96/0.97), i.e. two architectures × three sizes; survives the recency control …
The status line carries the answer and its scope in one place; the numbers stay in the experiment the link names.
workflow / human decisions
Pause where judgment changes the research
Agents can prepare designs, preregistrations, analyses, and proposed decisions. A human
reviews the material before execution, before outcomes can influence the preregistration,
before interpretation becomes synthesis, before a gated follow-up runs, and before a claim
gains strength or scope. Record the decision in the owning experiment, plan, or claim update.
Human · gatedFollow-up approvalStop, revise, or run again
SynthesizeFindingCross-experiment evidence
HumanClaim promotionWording, status, scope
PublishSupported claimDirect experiment evidence
Gated The follow-up node is used only when evidence opens another branch. It never authorizes itself.
What a recorded pre-execution decision looks like when it later matters. From EXP-034b, after a secondary control failed.
Essential provenance for the not-post-hoc reading: the preservation cells were demoted to
secondary non-discriminating controls BEFORE wj3849 ran — peer vetting mail (2026-07-02
~01:39, with the explicit shared-router walk-through of why matched-frame preservation
cannot discriminate) and script commit e069ef7b (docstring: "kept only as secondary
non-disruption controls"), both prior to wj3849's dispatch. The failure is confined to that
pre-designated secondary control; the pre-registered discriminators (cross ratios ≤0.3,
angles) support dissociation.
The review decision is dated, attributed, and tied to a commit, so a reader can check that the demotion preceded the result rather than explaining it away.
workflow / evidence
Register, run, and process an experiment
Reserve a stable ID, write the design and its estimands, pause for design and preregistration
review, run a bounded job tagged with the ID, and process the result through the decision
rule before anything else depends on it. The experiment record's contract, the status
vocabulary, estimand registration, the register-and-run workflow, and the six processing
steps are on the experiments page,
with excerpts from EXP-034 and EXP-021.
workflow / synthesis
Synthesize evidence once
If the statement depends on
Write it in
One experiment
That experiment's conclusion
Several experiments
A dated record under findings/
A paper-sized assertion
CLAIMS.md, linked to direct evidence
A changing long analysis
reports/
A mechanism hypothesis
causal-models/, separate from observed findings
State observed values, uncertainty, effect sizes, tested scope, and threats to validity. In
the synthetic gradient-accumulation example on the
experiments page,
a finding combines EXP-001 and EXP-002, and a claim remains
provisional outside the tested simulator and batch range.
Promotion is a human decision. Present the exact claim wording, the estimands cited, the
synthesis, threats, role, paper key, and proposed scope before changing a claim to
supported or broadening it. A claim that cites a found estimand is
a found result and says so; making it confirmatory needs a fresh registered run.
When an experiment corrects a value, it states the superseded value beside the new one, and
the same session searches the notebook for both the old numbers and the experiment ID.
Findings found that way get a correction pointer or a superseding record; terminal plans
get a retraction notice beneath the passage that stated the value. Notebook edges point
forward, so nothing asks who relied on the old value unless the search does.
A claim row whose sentence carries its own scope. From CLAIMS.md, C001.
ID
Role
Claim
Status
Evidence
Paper
C001
major
In the tested Qwen, Pythia, Falcon3, Mistral, and OLMo settings, mental-space values use a frame-agnostic value slot, while a query-position router selects the relevant frame. Cross-builder causal transfer identifies a shared routing mechanism across the tested builder types.
live
EXP-006, EXP-010, EXP-034, EXP-034b
shared-router
Five model families are named in the claim, so a reader who opens only this row knows what
was tested. This notebook writes live where the contract writes
supported; the validator accepts the spelling with a warning.
A retraction that says what is withdrawn and what stands. From a finding dated 2026-09-02, after a cold audit found a slot confound in its first grid.
The reality arm's 0.031 was the artifact. With loc_other always mentioned second and never moved, it was an unattractive answer to "the key is now in the", so reality-arm errors went to the stale location instead. Counterbalancing mention order raises that share tenfold and collapses the asymmetry from ~13× to ~1.4×.
Retracted outright: the absolute rates as entity-binding rates, and their use as registered denominators in EXP-222.
Untouched: the plain accuracies. 0.854 for the moved object, 0.788 for the unmoved one, against a 0.333 three-way chance rate, with off-format at 0.002. These carry no cross-entity readout, so the slot confound cannot reach them.
The original headline stays in the file under a heading that says to read the correction
first. The superseded values are stated beside the new ones, and the record that consumed
them as denominators is named, which is what the sweep needs.
workflow / many sessions
Coordinate work with a plan
A file under plans/ is a version-controlled contract for one bounded research
objective, reviewed before execution and after each phase's evidence returns. A plan that
will end in a confirmatory claim seals its reserve at creation; a plan that closes writes its
completion report; a plan whose stated outcome an experiment later corrects gains a
retraction notice. The frontmatter and status vocabulary, the review-gate diagram, and the
three closing sections are on the plans
page, with excerpts from two of the notebook's plans.
workflow / literature
Archive cited references
Ask the installed skill to inspect a manuscript before downloading:
Use $download-research-references to preview the cited papers for this draft, then archive the authorized open-access copies.
The skill puts third-party papers and source notes under references/ and maintains
the annotated BIBLIOGRAPHY.md. It reserves papers/ for manuscripts
authored by the project, records source URLs, validates PDFs, avoids duplicates, and does not
bypass paywalls. Downloaded PDFs can remain ignored while tracked notes and source indexes
stay in version control.
workflow / operations
Operate and repair the record
These recipes name the evidence to read, the authoritative record to change, and the
condition for stopping.
Refresh status and priorities
Read
STATUS.md, QUESTIONS.md, PRIORITIES.md, active plans, and recent evidence.
Write
Short current-state and next-action pointers. Remove stale queue entries.
Done
Every active item points to an owner record and every blocked item names its blocker.
Process a sweep
Read
Runner terminal states, processed checks, run manifests, and the owning experiment.
Write
One outcome row per prediction, failures and anomalies, artifact pointers, indexes, then processed marks.
Done
Every terminal job links to durable evidence or remains explicitly unprocessed with a reason.
Correct or supersede a finding
Read
The dated finding, its source experiments, and the later evidence that changes it.
Write
A correction pointer for a factual error, or a new dated finding that supersedes the old one. Update claims and indexes.
Done
The historical record remains visible and current readers reach the newer conclusion.
Refute or retire a claim
Read
The claim, direct evidence, contradicting findings, promotion review, and publication text that uses it.
Write
The human-reviewed support status, scoped reason, counter-evidence links, and affected publication blockers.
Done
No active draft presents the claim more strongly than its evidence allows.
Resume, block, abandon, or close a plan
Read
The plan, current phase, terminal conditions, human gate decision, and evidence produced since its last update.
Write
Status, date, current phase, gate metadata, and one bounded next action. A completed plan needs a completion report and evidence; a superseded or abandoned plan needs a disposition and evidence. Their next action is empty.
Done
A new executor can continue or understand why the plan ended without chat history.
Resolve a duplicate experiment ID
Read
Both records, their runs tables, the runner's job listing filtered by tag and project, and any scripts or artifacts named for the ID.
Write
Renumber the side that never ran, add a revision letter to a follow-up, or merge a stub into the executed record. When both sides ran, renumber one and retag its jobs in the same change; a banner is the fallback when retagging costs too much.
Done
The ID resolves to one file, every job is tagged with the ID of the record that owns it, and no banner names an ID that has since moved.
Retract a stated value
Read
The experiment that corrects the value, the superseded numbers, and every notebook file the search for those numbers and the experiment ID returns.
Write
The new value beside the old one in the experiment; a correction pointer or superseding record on each finding; a dated retraction notice beneath the passage in each terminal plan, leaving the original text intact.
Done
No record presents the superseded value without the notice, and the notice points at the correcting record rather than restating it.
Reconcile notebook drift
Read
Version-control changes, record files, indexes, STATUS.md, and validator output.
Write
Missing authoritative evidence first, then thin pointers and lifecycle statuses.
Done
Links resolve, indexes are complete, ownership is unambiguous, and strict validation passes.
Move the notebook to its own repository
Read
Version-control boundaries, ignore rules, artifact paths, project instructions, and automation.
Write
The new tracked boundary, stable artifact references, and one project-instruction pointer to the notebook location.
Done
The notebook has one documented history and a fresh agent can locate and validate it from the code project.
Recover a missing ledger write
Read
The absent final record, backend job, preserved artifacts, and candidate evidence revision.
Write
If that revision already incorporates the exact job, add only the ledger record and cite it in notebook_revision.
Done
The processed check is idempotent and no experiment result or finding was duplicated.
workflow / close
Validate and hand work off
Validate
Run the notebook validator after structural edits.
Index
Update experiment and finding indexes, plus affected question and claim pointers.
Log
Add a changelog entry for a result, decision, failure, or publication milestone, not routine editing.
Commit
Make the record durable in the notebook's own version-control boundary.
Point
Leave STATUS.md and any active plan at a bounded next action.