The paper PDF. Nothing else.
This is the environment file as it stands today, not a record of this run. The run predates environment capture, so what it actually had on hand was never recorded and cannot be recovered.
# Unit brief
- `paper_id`: NS-EXAM-001
- Paper identity: *Can't We All Just Get Along? How Women MPs Can Ameliorate Affective
Polarization in Western Publics*, American Political Science Review. Confirm the attached PDF
is this paper before starting; if it is not, halt and deposit a finding.
- Paper: the PDF attached to this session. It is the only document in scope.
- `document_scope`: **main-text** — the attached PDF only. Supplementary sections S1–S11 exist
as a separate file and are **not** in scope for this job. Do not seek them out.
- `inclusion_rule_version`: v1.2
- `trigger_list_version`: v1
- `brief_schema_version`: v1
- Deposit target: **`night-shift-network/inbox`** — the repository this session is connected to.
- Replication package: not provided, not in scope. Do not seek it out.
---
# `extract` — job prompt v1
Governing versions: **`inclusion_rule` v1.2 · `trigger_list` v1 · `brief_schema` v1.**
## Your job
You are extracting the reported numbers from one published paper. You read the paper, enumerate
every printed numeral against the written rules below, classify each one, and deposit a single
file. That is the whole job.
You never: open or download the replication package, execute any code, judge whether any value
is close to anything, assign a tolerance or a verdict, compute or certify ledger totals, or
round anything.
## Inputs
Your workspace contains the unit brief and the paper. The brief states: `paper_id`, the paper
file path(s), `document_scope` (exactly which documents you enumerate — main text, or main plus
listed supplementary files), and the governing rule versions. Work only on the documents
`document_scope` names.
If the brief is missing, a named document is absent or unreadable, or the brief's rule versions
do not match the versions above: **halt and deposit a finding.** Do not fill gaps in yourself.
If the brief and this prompt conflict: record the conflict as a finding and follow this prompt.
Never investigate the conflict.
## Phase 1 — structure map
Map the document(s) before reading for numbers:
- Every table, with panel and spanning-header resolution recorded as an explicit ruling —
"Table 3 read as two panels, rows 1–8 and 9–16." One ruling per table.
- Every figure, and whether it carries printed annotations — numerals printed as data: value
labels, printed means, annotated coefficients. Axis tick labels and scale markings are
scaffold, not annotations.
- Section and appendix layout for every document in `document_scope`.
Emit the structure map. Coordinates in later phases anchor to it.
## Phase 2 — numeral inventory
Enumerate **every printed numeral in scope**, working section by section through every document
`document_scope` names. **Enumerate the prose, not just the tables:** the running text of the
introduction, results, and discussion — including the sentences where the authors state
magnitudes, means, SDs, ranges, and percentages — is part of the inventory. When you finish a
section, record in your notes that its prose has been swept.
Record per numeral: the **verbatim string as printed** (sign, decimal places, separators,
percent signs — no normalization), its `source_locator` against your Phase 1 structure map, its
printed precision, and any hedge word attached ("about", "approximately", "roughly").
Locator grammar — use exactly these forms:
- prose: `text:<section>/para<N>/occ<N>` — `<section>` is a lowercase slug taken from your
Phase 1 structure map (`abstract`, `intro`, `data`, `results`, `discussion`). No `sec` prefix.
- table cell: `table:<T>/row:<R>/col:<C>`
- standard error and kin: `table:<T>/row:<R>/col:<C>.se` — a dot suffix on the cell it belongs
to. Also `.ci_low`, `.ci_high`, `.p`. An SE shares its coefficient's cell; it does not get one
of its own.
- table note: `table:<T>/note:<N>/occ:<M>` — `occ` is the ordinal within that note. A note
containing four numerals produces four locators, never one.
- figure: `fig:<F>/annot:<A>`
List your section slugs explicitly in the structure map so the coordinates are stable.
**In scope:** numerals in body prose, table cells, and figure annotations (numerals printed as
data). A printed range enumerates as its two endpoint numerals, uniformly.
**Out of scope:** pagination; table and figure numbering; footnote and endnote markers; equation
and section numbering; years in citations or the reference list; axis tick labels and scale
markings; publication apparatus — masthead, DOIs, ISSNs, editorial dates, license versions,
running headers and footers; numerals functioning as notation inside identifiers or operators,
e.g. `(t − 1)`.
Apply the rule as written. If a numeral is one the rule neither includes nor excludes, or two
readings are defensible with no tiebreak: record a **rule finding** (locator, the readings,
which you applied) and continue under the rule as written. Never patch the rule mid-run.
## Phase 2b — trigger sweep
One pass over the same text for number-words attached to sample-defining constructions. Fixed
lexicon: cardinal and ordinal number-words. **`trigger_list` v1:** *at least, at most, fewer
than, more than, restricted to, dropped, excluded, excluding, retained, we retain only,
conditional on, with a minimum of.*
Matches are recorded as **parameter candidates only** — never targets, never restatements, never
entries in the numeral inventory. If you meet a sample-defining construction the list misses:
record it as a rule finding and continue. Never extend the list mid-run.
## Phase 3 — classification and linking
Classify every inventoried numeral against this rule and nothing else:
**A target is a number the paper reports as an output of the authors' own analysis of their own
data, recorded at its most precise printed occurrence.**
- Drops literature-review figures, policy background, anything attributed to a cited source, and
design inputs.
- Every printed cell of every results table is a target, typed. No judgment about which results
matter.
- A numeral printed as data on a figure is a target. A value that would have to be read off an
axis is not.
- A number in prose appearing in no table is a target. In-text descriptive statistics — means,
SDs, ranges, percentages the authors report from their own data — are targets when no more
precise occurrence exists.
**A restatement** is a coarser printed occurrence of an existing target; it links to the
canonical (most precise) target's ID. Restatements are defined only for targets.
**A parameter** is a design input — a choice, or a fact about the data going in, rather than a
quantity computed from it. Sample thresholds, draw counts, seeds, and printed significance
thresholds (`p<0.05` and kin are always parameters). A parameter repeated across sections is a
parameter at every occurrence, each with its own locator; nothing links them.
**Dataset-scope counts (v1.2, rule F9).** A count describing what data went in — number of
units, countries, coverage years, span — stated in a data or sample section is a **parameter**.
The same kind of quantity printed as a results-table cell, such as a per-model N, is a
**target**: an estimation N is produced by the fitting after deletions and restrictions, so it
is an output of the analysis rather than a description of the corpus. The line: does the
quantity describe the data going in, or is it computed from the data?
**Position sets the presumption (v1.2).** A numeral printed in a results section is presumed a
target. Classing it as a parameter or as excluded requires a written `reason` recorded against
that numeral — not a general remark, a reason on that row. Silence is not a judgment.
**Excluded-with-reason:** anything else, with its reason stated per numeral.
Assign each target a `type` and a human-readable `label` — what quantity it is, in words. IDs are
your reading order; they carry no meaning beyond this extraction.
## Output — one artifact
Deposit a single `extraction.yaml`:
```yaml
extraction:
paper_id: …
document_scope: … # restated from the brief
inclusion_rule_version: v1.2
trigger_list_version: v1
brief_schema_version: v1
structure_map: [per-table and per-figure entries, each ruling stated]
inventory: [{locator, verbatim, precision, hedge}]
classification: [{locator, class: target|restatement|parameter|excluded, id, label, type, links_to, reason}]
parameter_candidates: [{locator, construction, verbatim}]
rule_findings: [{locator, description, reading_applied}]
notes_per_section: [prose-swept confirmations]
```
**Required fields.** Every `classification` row must carry `locator`, `class`, and `label`.
Rows with `class: target` must also carry `id` and `type`. Rows with `class: restatement` must
carry `links_to`. Rows with `class: parameter` or `class: excluded` must carry `reason` when the
locator falls in a results section, and may omit it otherwise. `inventory` rows must carry
`locator`, `verbatim`, and `precision`; `hedge` may be null. A row missing a required field is
an incomplete extraction, not a stylistic choice — the coordinate join needs `links_to` to
follow restatements and needs `id` to pair targets.
Do not total the classes. Do not state whether the ledger balances — the ledger is computed from
your file, not by you. **Nothing about completeness blocks deposit.** If you believe something is
missing or unresolvable, say so in `rule_findings` and deposit anyway.
Deposit by PR to the repository named in the brief. One commit, one file, a one-line PR
description. Do not read anything already in that repository — you have no reason to, and the
brief names every input you need.
## Sealed — what you do not do
- No code executed; no replication package opened, downloaded, or referenced.
- No verdicts, no tolerances, no closeness judgments, no rounding — verbatim strings only.
- No totals, no balance certification. The arithmetic is not yours.
- No reading of anything outside your workspace; no repository exploration beyond the paths the
brief names.
- No patching the rule, no extending the trigger list — findings instead.
- No self-scheduled check-ins, no polling. Blocked or ambiguous means: record the finding, finish
what the rules reach, deposit.
- Nothing shipped that was not asked for: no scripts, no tooling, no extra files, no second PR.
Rule F9 drove 21 of 27 disagreements between the two extractions. F9 is ruled in v1.2 and is a replay-class change — the stored files answer it without re-running.