Outputs and history

Configuration, source snapshots, runs, and published outputs are stored separately. Read the manifest rather than assuming the newest directory name is the output you want.

Workspace layout

research-workspace/
├── frontier.yaml                   # active configuration
├── data/library/                  # local PDFs and optional .pdf.json metadata
├── .frontier/
│   ├── config-drafts/            # proposed, not active, YAML
│   ├── state/                    # Sync state and identity history
│   ├── cache/raw/                # source response snapshots
│   └── runs/<run-id>/
│       ├── 00-build/             # resolved config
│       ├── 01-sync/              # signals and topic observations
│       ├── 02-rank/              # candidates, evidence, delta, selection
│       ├── 03-brief/             # editable draft
│       ├── 04-review/            # review report and approved spec
│       ├── 05-render/            # render result
│       └── run-manifest.json
└── frontier_output/
    ├── discoveries/<run-id>.html
    └── briefings/<run-id>/
        ├── index.html
        ├── manifest.json
        └── papers/paper-1/
            ├── html/index.html
            └── slides/              # editable OpenSlide source

Directory names follow project.workspace_dir and project.output_dir; the tree shows their defaults. Files under a Run are created as stages execute. The Run manifest points to the resulting artifacts.

What changed?

01-sync/research-signals.jsonl records new or updated signals. For a topical search, 01-sync/topic-observations.jsonl also records every paper returned this time, including unchanged ones, so Rank can compare the same topic again. 02-rank/topic-delta.json stores scope, Gate, score, rank, and paper-status differences. A paper newly inside a changed date window is not necessarily newly published; a paper absent from a capped result set is not necessarily withdrawn. The Discovery HTML is a readable view of these artifacts.

The local selection server writes 02-rank/briefing-selection.json after validating the Run and candidate IDs. The HTML file alone is not the database or the selection source of truth.

After Briefing

05-render/render-result.json.public_output_dir identifies the published directory. The public manifest.json lists paths for each paper; the aggregate root view remains for compatibility. Rendering the same Run again publishes a numbered directory rather than replacing earlier output. The video preview currently belongs to the whole Run, not an individual paper.

To check an OpenSlide project, enter a paper's slides/ directory and run:

npm install
npm run sync:skills
npm run build

Its browser route is /s/frontier-briefing. The harness does not automatically export PPTX, PDF slides, or an MP4.