$npx -y skills add WILLOSCAR/research-units-pipeline-skills --skill evidence-draftCreate per-subsection evidence packs (NO PROSE): claim candidates, concrete comparisons, evaluation protocol, limitations, plus citation-backed evidence snippets with provenance. Trigger: evidence draft, evidence pack, claim candidates, concrete comparisons, evidence snippets
| 1 | # Evidence Draft |
| 2 | |
| 3 | Build deterministic `outline/evidence_drafts.jsonl` packs from briefs + notes + optional evidence bindings. |
| 4 | |
| 5 | 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/`. |
| 6 | |
| 7 | ## Load Order |
| 8 | |
| 9 | Always read: |
| 10 | - `references/overview.md` |
| 11 | - `references/evidence_quality_policy.md` |
| 12 | |
| 13 | Read by task: |
| 14 | - `references/block_vs_downgrade.md` when deciding whether thin evidence should block drafting or only downgrade claim strength |
| 15 | - `references/evaluation_anchor_rules.md` when evaluation tokens, protocol context, or numeric claims are weak |
| 16 | - `references/examples_sparse_evidence.md` for evidence-thin pack calibration |
| 17 | - `references/source_text_hygiene.md` when paper self-narration or generic result wrappers are leaking into pack snippets / claim candidates |
| 18 | |
| 19 | Machine-readable assets: |
| 20 | - `assets/evidence_pack_schema.json` |
| 21 | - `assets/evidence_policy.json` |
| 22 | - `assets/source_text_hygiene.json` |
| 23 | |
| 24 | ## Inputs |
| 25 | |
| 26 | Required: |
| 27 | - `outline/subsection_briefs.jsonl` |
| 28 | - `papers/paper_notes.jsonl` |
| 29 | - `citations/ref.bib` |
| 30 | |
| 31 | Optional but recommended: |
| 32 | - `papers/evidence_bank.jsonl` |
| 33 | - `outline/evidence_bindings.jsonl` |
| 34 | |
| 35 | ## Outputs |
| 36 | |
| 37 | Keep the current output contract: |
| 38 | - `outline/evidence_drafts.jsonl` |
| 39 | - optional human-readable mirrors under `outline/evidence_drafts/` |
| 40 | |
| 41 | ## Script Boundary |
| 42 | |
| 43 | Use `scripts/run.py` only for: |
| 44 | - deterministic joins across briefs / notes / evidence bank / bindings |
| 45 | - snippet extraction and provenance assembly |
| 46 | - policy-driven `blocking_missing` / `downgrade_signals` / `verify_fields` materialization |
| 47 | - pack validation and Markdown mirror generation |
| 48 | |
| 49 | Do not treat `run.py` as the place for: |
| 50 | - filler bullets that make thin evidence look complete |
| 51 | - hidden sparse-evidence judgment that is not inspectable from `references/` / `assets/` |
| 52 | - reader-facing narrative prose |
| 53 | |
| 54 | ## Output Shape Rules |
| 55 | |
| 56 | Keep these stable: |
| 57 | - preserve the existing top-level pack fields already used by downstream survey pipelines |
| 58 | - `claim_candidates` must remain snippet-derived |
| 59 | - `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 |
| 60 | - 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 |
| 61 | - sparse evidence should surface as explicit blockers / downgrade signals / verify fields, not filler bullets |
| 62 | - citation keys must remain constrained to `citations/ref.bib` |
| 63 | |
| 64 | ## Compatibility Notes |
| 65 | |
| 66 | Current mode is reference-first with deterministic compatibility: |
| 67 | - `assets/evidence_policy.json` defines pack thresholds and sparse-evidence routing |
| 68 | - `assets/evidence_pack_schema.json` documents/validates the stable pack shape |
| 69 | - `scripts/run.py` still materializes the existing JSONL + Markdown outputs, but no longer pads sparse sections with generic caution prose |
| 70 | |
| 71 | ## Quick Start |
| 72 | |
| 73 | - `uv run python .codex/skills/evidence-draft/scripts/run.py --workspace <workspace>` |
| 74 | |
| 75 | ## Execution Notes |
| 76 | |
| 77 | When running in compatibility mode, `scripts/run.py` currently reads: |
| 78 | - `outline/subsection_briefs.jsonl` |
| 79 | - `papers/paper_notes.jsonl` |
| 80 | - `citations/ref.bib` |
| 81 | - optionally `papers/evidence_bank.jsonl` and `outline/evidence_bindings.jsonl` |
| 82 | - `assets/evidence_policy.json` and `assets/evidence_pack_schema.json` |
| 83 | |
| 84 | ## Script |
| 85 | |
| 86 | ### Quick Start |
| 87 | |
| 88 | - `uv run python .codex/skills/evidence-draft/scripts/run.py --workspace <workspace>` |
| 89 | |
| 90 | ### All Options |
| 91 | |
| 92 | - `--workspace <dir>` |
| 93 | - `--unit-id <id>` |
| 94 | - `--inputs <path1;path2>` |
| 95 | - `--outputs <path1;path2>` |
| 96 | - `--checkpoint <C*>` |
| 97 | |
| 98 | ### Examples |
| 99 | |
| 100 | - `uv run python .codex/skills/evidence-draft/scripts/run.py --workspace <workspace>` |
| 101 | |
| 102 | ## Troubleshooting |
| 103 | |
| 104 | - If packs look complete despite thin evidence, inspect `assets/evidence_policy.json` and `references/block_vs_downgrade.md` before changing Python. |
| 105 | - If evaluation bullets are generic, inspect `references/evaluation_anchor_rules.md` and the policy asset. |
| 106 | - If claims are strong but evidence is abstract/title-only, downgrade via `downgrade_signals` and `verify_fields` rather than adding narrative caveats. |