Research State
The research product treats disk as the long-term source of truth. Context is just working memory.
All persistent project state lives under:
text
.omr/research/Canonical Structure
text
.omr/research/
├── project.json # current stage and metadata
├── pipeline.yaml # gate configuration
├── HANDOFF.md # resumable narrative handoff
├── dispatch-log.jsonl # dispatch history
├── log.jsonl # decisions / transitions / verdicts
├── infrastructure.yaml # optional symlink to shared infra
├── ideas/
│ ├── candidates.md
│ ├── screening-1a.md
│ ├── idea-card.md
│ └── verification-1c.md
├── baseline/
│ ├── summary.md
│ ├── experiments.md
│ ├── method-details.md
│ ├── code-notes.md
│ └── reproduction-checklist.md
├── results/
│ ├── baseline-reproduction.md
│ ├── implementation-notes.md
│ ├── training-status.md
│ ├── analysis-verdict.md
│ ├── figures-manifest.md
│ └── postmortem.md
├── review/
│ ├── novelty-search.md
│ ├── r1-methodology.md
│ ├── r2-experiments.md
│ ├── r3-novelty.md
│ ├── reference-check.md
│ └── format-check.md
└── paper/
├── main.tex
└── figures/What Matters Most
| File | Why it matters |
|---|---|
project.json | The external stage mirror for status and recovery |
pipeline.yaml | Gate policy per stage |
HANDOFF.md | Human-readable resume context |
dispatch-log.jsonl | What got dispatched |
log.jsonl | Why the system made a decision |
Resume Model
When a session ends, the next session should be able to recover from:
project.jsonpipeline.yamlHANDOFF.md- specific files listed in
HANDOFF.md -> read_files
That is the intended recovery contract. A research session should never depend on old chat context alone.
Trace IDs
Each batch of related work should carry a trace ID such as:
text
run-a3f8It should appear in:
- dispatched tasks
log.jsonl- outputs produced by downstream agents
This is what makes debugging and recovery tractable.