# Discovery source contract

## Required header

```yaml
schema: shepherd.discovery-report/1
run: <run-id>
lane: <lane-id>
question: <one bounded external question>
role: discovery
source_list: [<ordered primary source identifiers>]
output_path: <one run-scoped report path>
budget: {tool_calls: <n>, seconds: <n>}
startup_skill: researching
skill_bundle_digest: <sha256>
task_digest: <sha256>
status: complete|partial|blocked
```

## Required sections

- `sources`: each source's canonical identifier, version/date, retrieval status, and evidence
  location; unavailable sources are explicit.
- `claims`: one claim per entry with exact citation and a separation between observed text and
  interpretation.
- `conflicts`: source/version contradictions, freshness gaps, and the selected disposition.
- `limits`: scope, budget, compatibility, and unresolved questions.
- `evidence`: report hash and all retained source pointers.

The report contains one answer and no hidden second deliverable. A claim without a citation is
an unresolved question. An output outside the declared path, an implementation edit, a nested
dispatch, or a budget-overrun result is invalid.
