Operational overview · current workflow

How a research batch runs

This page follows one bounded collection batch from its frozen plan to saved graph records. Each step is labeled as a local script, Codex research and judgment, or a human decision. It describes what is implemented now and where the path still needs orchestration.

Reviewed 14 October 2026 · Prototype documentation

A collection can have many runs; a completed batch does not mean the topic is complete. Detailed parameter contracts live in the project’s docs/RESEARCH_COLLECTION_RUNS.md.

Responsibilities and execution

Local scriptCodex inferenceHuman decisionMixed / not yet one-click

Local script means deterministic code that can be rerun and validated against saved files. Codex inference means the language model reads or interprets source material, makes a bounded scholarly judgment, or creates a structured packet. This does not mean the model has proved a claim. Human decision is reserved for starting or changing scope and exceptions that cannot safely be resolved from explicit evidence.

The intended operating model is: a person starts a run; scripts carry out repeatable data work; Codex handles source interpretation; the run pauses for a human only when a defined exception or failure needs a decision. The stages have saved inputs and outputs, but a single unattended controller remains planned.

One batch, step by step

Human starts

1. Start a bounded run

Select the collection, run purpose, seeds or assessed pairs, and named profile. The plan freezes the graph snapshot, parameters, target list and batch boundaries.

Local support: atlas.research_runs plan, validate, and dashboard status.

Local script

2. Select targets and check reuse

Traverse the selected graph under the saved neighborhood rules. Compare target pairs with current treatments, prior research decisions, source captures and the global draft library so already-covered work can be reused or skipped according to run type.

Local support: atlas.research_frontier, atlas.collection_assessment, pair-finding/history and run planning.

Local script

3. Discover roots and direct links

For tier 1, search the saved SEP/IEP indexes and exact-phrase fallback, score suitable roots, then inspect their pages for eligible direct links. The frozen profile controls root count, per-root followed-page allowance and depth; depth remains one.

Local support: atlas.research_source_discovery. Selection is a lead, not evidence that the page contains a treatment.

Local script

4. Freeze and validate the worklist

Deduplicate canonical URLs and versions, attach target and draft-reuse matches, preserve why each source was selected, and validate all document limits before fetching.

Local support: atlas.research_worklists; a worklist revision preserves the actual root and followed URLs.

Local script

5. Acquire source pages

Fetch only URLs in the frozen worklist. Save local HTML captures, hashes, response metadata, per-document timing and failures; reuse an existing verified capture where possible.

Local support: atlas.research_acquire. It does not infer, add graph records, or discover extra links.

Local script

6. Prepare readable source text

Convert acquired HTML into section-labeled reading copies and save counts and hashes in a receipt. This is formatting for review, not summarization.

Local support: atlas.research_text. Reading copies remain operational files; source provenance remains in the tracked artifacts.

Codex inference

7. Read and interpret

Read the bounded source pages, record a disposition for each, and extract concise supported treatments and relevant entities. Include dates with their basis and precision, source locators, limitations, and useful adjacent summaries. A passing mention is not a treatment or a reusable draft.

Output: a structured interpretation packet, not a direct database write.

Codex + local checks

8. Reconcile identities and route records

Compare proposed records with current graph identities and drafts. Decide whether each complete item belongs in this collection, should remain a global draft, is a duplicate, or needs an exception. Resolve dates and endpoint dependencies; do not invent dates or merge uncertain identities by label alone.

Codex supplies the evidence-based decisions; validators enforce fields, source links, date review and endpoint closure. Ambiguous identities or missing evidence are human-review exceptions.

Local script

9. Validate the packet

Check packet structure, one disposition per acquired page, citations to acquired sources, stable IDs, treatment dependencies, date-review completion and graph consistency. Validation errors block publication.

Local support: atlas.research_interpretation, atlas.page_harvest, and atlas.treatment_batch validators.

Local script

10. Save records and advance status

Save source-supported adjacent records to the shared draft library; publish selected, validated records as additive graph snapshots; pin manifests and receipts to the batch; then synchronize and close the run when its work is accounted for.

Local support: atlas.research_interpretation, atlas.treatment_batch, and atlas.research_runs sync/close. Publication is additive and provenance-preserving.

Post-hoc / exception

11. Inspect outcomes and handle exceptions

Review the Collection dashboard and Review workspace. Correct a wrong or weak record by marking it uncertain/removal-recommended and pruning it from the active graph; restore it if appropriate. Step in earlier only when a script fails, sources are insufficient, identity/dating is ambiguous, or the plan needs to change.

The goal is a post-hoc quality pass, with interruption for defined exceptions—not approval of every routine record.

What gets saved between steps?

HandoffSaved artifactWhy it matters
Plan → sourcesVersioned run and batch JSON, profile and input snapshot pinsRecreates which targets and settings the run used.
Discovery → acquisitionSource-choice receipts, frozen worklist revisions, local source captures and acquisition receiptShows what was selected, followed, reused, skipped or failed.
Acquisition → interpretationReading-copy receipt and interpretation packetConnects each summary and locator to a particular captured page.
Interpretation → graph/draftsValidated additive batch, manifest, draft-library update and run resultsSeparates published graph additions from reusable drafts and records their provenance.

SQLite serves the app, but committed JSON packets and source metadata are the reproducible research record. A lost local database can be rebuilt from the preserved source and additive artifacts.

Automation status

AreaCurrent stateRemaining work for routine unattended execution
Planning and reuseScripted, boundedInvoke the existing planner and reuse checks from one run controller; stop on stale inputs or invalid parameters.
Tier-1 source discovery and acquisitionScripted, deterministicChain discovery, worklist freeze, acquisition and text preparation with resumable receipts.
Source interpretationCodex-ledKeep interpretation as the explicit LLM stage. It is currently produced through this Codex workflow, not an automatic local model call.
Reconciliation and publicationValidated, partly orchestratedAutomatically run validators, route unambiguous ready items, publish, and advance status; stop on unresolved identity/date/provenance exceptions.
Human reviewPost-hoc + exception policyDefine exception thresholds and expose a clear paused/needs-attention state; retain removal and restoration as reversible corrections.

Codex currently performs the interpretive stages, while local scripts handle acquisition and validation. Model configuration is not a parameter of the current research runner. A future controller could coordinate these stages through their saved inputs and outputs; this is an implementation direction rather than a capability of the current dashboard.

Relationship review

Each source in a new interpretation packet records whether a specific relationship was found, none was supported, or the source was insufficient. Saved treatment summaries can also support original conceptual comparisons without another source crawl. These model-inferred parallels and contrasts retain their reasoning and source links, and remain distinct from historical response, adoption or influence. Unpublished relationship proposals stay with the source harvest for later reuse.

Timing and failure behavior

The research timing ledger records wall-clock intervals for source selection, worklist, acquisition, interpretation, text preparation, source reading, drafting, reconciliation, validation and publication. Automated scripts can also report their own elapsed time, such as fetch time per document. The ledger’s human-scale intervals may include waiting, review and handoffs; they are not measurements of model compute or private reasoning time.

When a stage fails, preserve its receipt and error, leave the batch at its last verified stage, and resume from the saved artifact rather than repeating successful acquisition. A run should pause only for explicit failures or unresolved evidence decisions. Budgets are ceilings, never quotas: a run reports shortfalls instead of claiming work it did not do.

Implementation references: docs/RESEARCH_COLLECTION_RUNS.md, docs/RESEARCH_WORKLISTS.md, docs/PAGE_HARVEST_PIPELINE.md, and atlas/research_timing.py.

From research to interpretation

A completed research run adds knowledge and decision history that can support further traversal, comparisons and articles. Story production is a separate workflow over a saved active graph snapshot. It selects accounts, plans sections and writes from existing research, preserving historical claims separately from editorial comparisons.

Stories: workflow and options describes these downstream stages; Purpose and approach explains how software, human direction and model judgment cooperate across the project.

Next workflow milestones

Resumable execution

A controller will determine the next unfinished stage from existing run state and validated receipts, carry out routine local steps, and prepare bounded interpretation work for Codex. The first increment is a read-only next-action planner. A later pilot will verify safe interruption, resumption and publication without duplicated work.

Source-section reuse

A coverage index will record which captured source sections were actually interpreted, under what scope and recipe, and which treatments or drafts resulted. Future collections can reuse those outputs and examine only the remaining gaps. Downloaded pages alone will not count as interpreted, and negative findings will retain their bounded scope.

Both milestones are planned. Their acceptance criteria include completed batches proposing no new work, interrupted batches preserving successful stages, and overlapping collections reusing valid interpretation outputs. They extend the current workflow without requiring an LLM API integration.

← Project guide · Graph model · Collections dashboard