Skip to content

Research State

All research state lives on disk in .omc/research/. This is the single source of truth for the entire system. When a session crashes, when context fills up, when you restart after a week — the state on disk is how the system knows where it left off.

Directory Structure

.omc/research/
├── pipeline.yaml              # Current stage, gate config, history
├── config/
│   ├── infrastructure.yaml    # GPU, storage, compute resources
│   ├── thresholds.yaml        # Monitoring thresholds
│   └── alerts.yaml            # Alert routing configuration
├── ideas/
│   ├── brainstorm.md          # Raw idea exploration
│   ├── candidates.yaml        # Ranked idea candidates
│   └── selected.yaml          # Final selected idea with rationale
├── design/
│   ├── plan.md                # High-level experiment plan
│   ├── baselines.yaml         # Baseline methods and sources
│   ├── ablations.yaml         # Ablation study design
│   └── metrics.yaml           # Evaluation metrics and targets
├── experiments/
│   ├── exp-001/
│   │   ├── config.yaml        # Hyperparameters, model config
│   │   ├── log.jsonl          # Training log (structured)
│   │   ├── results.yaml       # Final metrics
│   │   └── analysis.md        # Result interpretation
│   ├── exp-002/
│   │   └── ...
│   └── summary.yaml           # Cross-experiment comparison
├── papers/
│   ├── outline.md             # Paper outline
│   ├── related_work/
│   │   ├── papers.bib         # BibTeX entries
│   │   └── summaries.yaml     # Structured paper summaries
│   ├── drafts/
│   │   ├── v1.tex             # First draft
│   │   ├── v2.tex             # Revised draft
│   │   └── current.tex        # Symlink to latest
│   └── figures/
│       ├── descriptions.yaml  # Figure descriptions for generation
│       └── *.pdf              # Generated figures
├── reviews/
│   ├── idea_review.yaml       # Judge's idea evaluation
│   ├── code_review.yaml       # Cross-LLM code review
│   ├── paper_reviews/
│   │   ├── codex_review.yaml  # Codex review of paper
│   │   ├── claude_review.yaml # Claude review of paper
│   │   └── gemini_review.yaml # Gemini review of paper
│   └── meta_review.yaml       # Aggregated review verdict
└── logs/
    ├── orchestrator.log       # Orchestrator decision log
    ├── agent_health.yaml      # Last heartbeat per agent
    └── errors.log             # Error log with recovery actions

File Purposes

Pipeline State

FilePurposeUpdated By
pipeline.yamlCurrent stage, gate types, stage history, timestampsOrchestrator
infrastructure.yamlGPU count, memory, storage paths, compute budgetUser / Orchestrator
thresholds.yamlLoss thresholds, timing limits, quality barsOrchestrator / User
alerts.yamlWhere to send alerts (terminal, file, webhook)User

Research Artifacts

DirectoryPurposeWritten ByRead By
ideas/Idea exploration and selectionOrchestrator, Scout, JudgePlanner
design/Experiment design and baselinesPlannerCoder, Orchestrator
experiments/Training configs, logs, resultsCoder, MonitoringOrchestrator, Judge
papers/Paper drafts, references, figuresWriter, ScoutJudge, Orchestrator
reviews/All evaluation verdictsJudgeOrchestrator

System State

FilePurposeUpdated By
orchestrator.logDecision audit trailOrchestrator
agent_health.yamlHeartbeat timestamps per agentOMCC harness
errors.logErrors with attempted recoveryAll agents

Two-Tier Information Architecture

Tier 1: Context = Working Memory

What the LLM "remembers" in its current session. Fast but volatile. Limited by context window size.

Tier 2: Disk = Long-Term Memory

What's written to .omc/research/. Persistent, unlimited, survives everything. The source of truth.

What Goes Where

InformationTier 1 (Context)Tier 2 (Disk)
Current stage and taskYesYes (pipeline.yaml)
Full experiment planSummary onlyYes (design/plan.md)
Training logsLast few linesYes (experiments/exp-*/log.jsonl)
Paper draftCurrent sectionYes (papers/drafts/)
All past decisionsNoYes (orchestrator.log)
Agent healthLatest statusYes (agent_health.yaml)

The rule

If information matters, it must be on disk. Context is a cache that can be evicted at any time. Never rely on context alone for state that needs to survive a session restart.

Context Fills and Recovery

When a session's context window fills up:

  1. The session cannot continue — the LLM can no longer process new input
  2. Start a new session — this is expected, not an error
  3. The new session reads state from diskpipeline.yaml tells it the current stage, experiment files tell it what's been done
  4. Work resumes seamlessly — because all state is on disk, nothing is lost
mermaid
graph LR
    A[Session 1<br/>Context fills] -->|crash/restart| B[New Session]
    B -->|reads| C[".omc/research/"]
    C -->|rebuilds context| D[Session 2<br/>Continues work]

    style A fill:#fee2e2,stroke:#dc2626
    style B fill:#dbeafe,stroke:#2563eb
    style C fill:#fef3c7,stroke:#d97706
    style D fill:#dcfce7,stroke:#16a34a

Agents write summaries, not transcripts

When an agent completes a task, it writes a one-line summary plus structured output to disk — not a full transcript of its reasoning. This keeps disk state clean and scannable.

Next

AutoResearch — Multi-agent Deep Learning Research System