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 sourceDirectory 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 buildIts browser route is /s/frontier-briefing. The harness does not automatically export PPTX, PDF slides, or an MP4.