Evidence Draft
Triggers & routing
- Trigger: evidence draft, evidence pack, claim candidates, concrete comparisons, evidence snippets, provenance, 证据草稿, 证据包, 可引用事实.
Build deterministic outline/evidence_drafts.jsonl packs from briefs + notes + optional evidence bindings.
Compatibility mode is active: this migration preserves the existing JSONL contract while moving evidence-quality policy, sparse-evidence routing, and evaluation-anchor rules into references/ and assets/.
Load Order
Always read:
references/overview.md
references/evidence_quality_policy.md
Read by task:
references/block_vs_downgrade.md when deciding whether thin evidence should block drafting or only downgrade claim strength
references/evaluation_anchor_rules.md when evaluation tokens, protocol context, or numeric claims are weak
references/examples_sparse_evidence.md for evidence-thin pack calibration
references/source_text_hygiene.md when paper self-narration or generic result wrappers are leaking into pack snippets / claim candidates
Machine-readable assets:
assets/evidence_pack_schema.json
assets/evidence_policy.json
assets/source_text_hygiene.json
- repo-wide
assets/limitation-signals.json — shared polarity rules that keep
resolved failures and positive improvements out of limitation slots
Inputs
Required:
outline/subsection_briefs.jsonl
papers/paper_notes.jsonl
citations/ref.bib
Optional but recommended:
papers/evidence_bank.jsonl
outline/evidence_bindings.jsonl
Outputs
Keep the current output contract:
outline/evidence_drafts.jsonl
- optional human-readable mirrors under
outline/evidence_drafts/
Script Boundary
Use scripts/run.py only for:
- deterministic joins across briefs / notes / evidence bank / bindings
- snippet extraction and provenance assembly
- policy-driven
blocking_missing / downgrade_signals / verify_fields materialization
- pack validation and Markdown mirror generation
Do not treat run.py as the place for:
- filler bullets that make thin evidence look complete
- hidden sparse-evidence judgment that is not inspectable from
references/ / assets/
- reader-facing narrative prose
Output Shape Rules
Keep these stable:
- preserve the existing top-level pack fields already used by downstream survey pipelines
claim_candidates must remain snippet-derived
concrete_comparisons must remain genuinely two-sided; if one cluster has no usable highlight, drop the card and surface thin evidence upstream instead of fabricating an A-vs-B contrast
- snippet sampling should stay cluster-aware: when a subsection has explicit clusters, evidence selection should avoid collapsing onto one route just because its abstracts contain louder result sentences
- sparse evidence should surface as explicit blockers / downgrade signals / verify fields, not filler bullets
- citation keys must remain constrained to
citations/ref.bib
Compatibility Notes
Current mode is reference-first with deterministic compatibility:
assets/evidence_policy.json defines pack thresholds and sparse-evidence routing
assets/evidence_pack_schema.json documents/validates the stable pack shape
assets/source_text_hygiene.json owns this Skill's wrapper cleanup, while the
repo-wide assets/limitation-signals.json owns limitation polarity across
paper-notes, evidence-draft, and writer-context-pack
scripts/run.py still materializes the existing JSONL + Markdown outputs, but no longer pads sparse sections with generic caution prose
Quick Start
uv run python .codex/skills/evidence-draft/scripts/run.py --workspace <workspace>
Execution Notes
When running in compatibility mode, scripts/run.py currently reads:
outline/subsection_briefs.jsonl
papers/paper_notes.jsonl
citations/ref.bib
- optionally
papers/evidence_bank.jsonl and outline/evidence_bindings.jsonl
assets/evidence_policy.json and assets/evidence_pack_schema.json
Script
Quick Start
uv run python .codex/skills/evidence-draft/scripts/run.py --workspace <workspace>
All Options
--workspace <dir>
--unit-id <id>
--inputs <path1;path2>
--outputs <path1;path2>
--checkpoint <C*>
Examples
uv run python .codex/skills/evidence-draft/scripts/run.py --workspace <workspace>
Troubleshooting
- If packs look complete despite thin evidence, inspect
assets/evidence_policy.json and references/block_vs_downgrade.md before changing Python.
- If evaluation bullets are generic, inspect
references/evaluation_anchor_rules.md and the policy asset.
- If claims are strong but evidence is abstract/title-only, downgrade via
downgrade_signals and verify_fields rather than adding narrative caveats.
1---2name: evidence-draft3description: Create per-subsection evidence packs (NO PROSE): claim candidates, concrete comparisons, evaluation protocol, limitations, plus citation-backed evidence snippets with provenance.4---56# Evidence Draft78## Triggers & routing910- **Trigger**: evidence draft, evidence pack, claim candidates, concrete comparisons, evidence snippets, provenance, 证据草稿, 证据包, 可引用事实.111213Build deterministic `outline/evidence_drafts.jsonl` packs from briefs + notes + optional evidence bindings.1415Compatibility mode is active: this migration preserves the existing JSONL contract while moving evidence-quality policy, sparse-evidence routing, and evaluation-anchor rules into `references/` and `assets/`.1617## Load Order1819Always read:20- `references/overview.md`21- `references/evidence_quality_policy.md`2223Read by task:24- `references/block_vs_downgrade.md` when deciding whether thin evidence should block drafting or only downgrade claim strength25- `references/evaluation_anchor_rules.md` when evaluation tokens, protocol context, or numeric claims are weak26- `references/examples_sparse_evidence.md` for evidence-thin pack calibration27- `references/source_text_hygiene.md` when paper self-narration or generic result wrappers are leaking into pack snippets / claim candidates2829Machine-readable assets:30- `assets/evidence_pack_schema.json`31- `assets/evidence_policy.json`32- `assets/source_text_hygiene.json`33- repo-wide `assets/limitation-signals.json` — shared polarity rules that keep34 resolved failures and positive improvements out of limitation slots3536## Inputs3738Required:39- `outline/subsection_briefs.jsonl`40- `papers/paper_notes.jsonl`41- `citations/ref.bib`4243Optional but recommended:44- `papers/evidence_bank.jsonl`45- `outline/evidence_bindings.jsonl`4647## Outputs4849Keep the current output contract:50- `outline/evidence_drafts.jsonl`51- optional human-readable mirrors under `outline/evidence_drafts/`5253## Script Boundary5455Use `scripts/run.py` only for:56- deterministic joins across briefs / notes / evidence bank / bindings57- snippet extraction and provenance assembly58- policy-driven `blocking_missing` / `downgrade_signals` / `verify_fields` materialization59- pack validation and Markdown mirror generation6061Do not treat `run.py` as the place for:62- filler bullets that make thin evidence look complete63- hidden sparse-evidence judgment that is not inspectable from `references/` / `assets/`64- reader-facing narrative prose6566## Output Shape Rules6768Keep these stable:69- preserve the existing top-level pack fields already used by downstream survey pipelines70- `claim_candidates` must remain snippet-derived71- `concrete_comparisons` must remain genuinely two-sided; if one cluster has no usable highlight, drop the card and surface thin evidence upstream instead of fabricating an A-vs-B contrast72- snippet sampling should stay cluster-aware: when a subsection has explicit clusters, evidence selection should avoid collapsing onto one route just because its abstracts contain louder result sentences73- sparse evidence should surface as explicit blockers / downgrade signals / verify fields, not filler bullets74- citation keys must remain constrained to `citations/ref.bib`7576## Compatibility Notes7778Current mode is reference-first with deterministic compatibility:79- `assets/evidence_policy.json` defines pack thresholds and sparse-evidence routing80- `assets/evidence_pack_schema.json` documents/validates the stable pack shape81- `assets/source_text_hygiene.json` owns this Skill's wrapper cleanup, while the82 repo-wide `assets/limitation-signals.json` owns limitation polarity across83 `paper-notes`, `evidence-draft`, and `writer-context-pack`84- `scripts/run.py` still materializes the existing JSONL + Markdown outputs, but no longer pads sparse sections with generic caution prose8586## Quick Start8788- `uv run python .codex/skills/evidence-draft/scripts/run.py --workspace <workspace>`8990## Execution Notes9192When running in compatibility mode, `scripts/run.py` currently reads:93- `outline/subsection_briefs.jsonl`94- `papers/paper_notes.jsonl`95- `citations/ref.bib`96- optionally `papers/evidence_bank.jsonl` and `outline/evidence_bindings.jsonl`97- `assets/evidence_policy.json` and `assets/evidence_pack_schema.json`9899## Script100101### Quick Start102103- `uv run python .codex/skills/evidence-draft/scripts/run.py --workspace <workspace>`104105### All Options106107- `--workspace <dir>`108- `--unit-id <id>`109- `--inputs <path1;path2>`110- `--outputs <path1;path2>`111- `--checkpoint <C*>`112113### Examples114115- `uv run python .codex/skills/evidence-draft/scripts/run.py --workspace <workspace>`116117## Troubleshooting118119- If packs look complete despite thin evidence, inspect `assets/evidence_policy.json` and `references/block_vs_downgrade.md` before changing Python.120- If evaluation bullets are generic, inspect `references/evaluation_anchor_rules.md` and the policy asset.121- If claims are strong but evidence is abstract/title-only, downgrade via `downgrade_signals` and `verify_fields` rather than adding narrative caveats.