Triggers & routing
- Trigger: screening, title/abstract screening, inclusion/exclusion, screening_log.csv, literature screening, inclusion/exclusion.
- Use when:
evidence-reviewscreening stage (C2/C3), protocol has been locked and passed HUMAN approval. - Skip if: not yet
output/PROTOCOL.md(or protocol has not passed sign-off). - Network: none.
- Guardrail: each record contains the decision and rationale; remain auditable (do not treat "unread/uncertain" as inclusion).
Transforms an approved protocol plus candidate pool into an auditable screening log.
Inputs
Required:
output/PROTOCOL.md
Candidate pool:
papers/papers_raw.jsonlpapers/papers_dedup.jsonl- or
papers/core_set.csv
Output
papers/screening_log.csv
Contract
Each row must include at least:
paper_idtitleyearurldecisionreasonreason_codesreviewerdecided_at
Script boundary
scripts/run.py should:
- parse protocol clauses
- choose the current candidate pool
- emit one deterministic row per candidate
It should not invent new protocol rules.
Acceptance
- output exists
- every candidate has one row
- every row has decision plus protocol-grounded reason code
Non-goals
- full-text extraction
- synthesis writing