The paper PDF. Nothing else.
Not a publishable result. This mission exercises the reproduce stage. It does not produce a publishable result, and nothing that comes out of it is the network's first finding. Its two extractions predate the seal -- neither carries a seal_check, and the environment they ran in had the search channel open -- so the audit gap is permanent: nothing can show they were blind, now or later. The reproduce and re-read stages here run sealed; the extractions they rest on did not. The first sealed end-to-end result will be REPRO-002 or REPRO-007.
No paper on file. This mission cannot be run without someone attaching a PDF.
Permanently unknown. REPRO-001 ran before Phase 0 recorded what a session was given, so its paper arrived as an attachment that no hook could see and nothing hashed. The run is finished and those bytes are not recoverable, so what its two readings actually read cannot be established now or later. Recorded rather than papered over.
The package did not run. It produced 0 of the key file's targets. Every target it did not produce reads missing for that reason and no other: nothing was produced to compare.
Error: `starprep()` was removed in estimatr 2.0. It prepared fits for stargazer, which is no longer maintained. Use modelsummary, which reads `tidy()` and `glance()` and so works on every estimator in this package: modelsummary::modelsummary(list(fit1, fit2)) Execution halted -- raised at the first stargazer()/starprep() call, in the '###### CREATING TABLE 1 COLUMNS 1 & 2 ######' section (script line ~65-70), calling stargazer(table1.1, table1.2, ..., se = starprep(table1.1, table1.2, clusters = dta$country), ...). Rscript halts execution on this uncaught error; no code after this point ran.
This run installed current releases, because the package pins no versions. What it establishes is that the package does not run against today's dependencies — a fact about the software, dated to the day it ran, and not about the paper.
The package ran. It produced 43 of the key file's targets; a target it did not produce reads missing, which is an answer about the script and not about the paper.
This run pinned estimatr 1.0.6 and left everything else current. That is not the authors' environment and nobody knows what theirs was; it is one combination that has the code's missing pieces, and it never existed on anyone's machine.
43 targets · 43 missing · compared under v1.3 (proposed rule, not yet accepted)
| target | paper | package | |
|---|---|---|---|
| T001 | −0.60** | None | missing — the package produced no value for this target |
| T002 | −0.62** | None | missing — the package produced no value for this target |
| T003 | −0.66** | None | missing — the package produced no value for this target |
| T016 | (0.09) | None | missing — the package produced no value for this target |
| T017 | (0.09) | None | missing — the package produced no value for this target |
| T018 | (0.09) | None | missing — the package produced no value for this target |
| T019 | (0.09) | None | missing — the package produced no value for this target |
| T022 | (0.11) | None | missing — the package produced no value for this target |
| T023 | (0.11) | None | missing — the package produced no value for this target |
| T024 | 0.13 | None | missing — the package produced no value for this target |
| T025 | 0.15 | None | missing — the package produced no value for this target |
| T026 | 0.16 | None | missing — the package produced no value for this target |
| T028 | (0.23) | None | missing — the package produced no value for this target |
| T029 | (0.25) | None | missing — the package produced no value for this target |
| T030 | (0.25) | None | missing — the package produced no value for this target |
| T031 | 0.29 | None | missing — the package produced no value for this target |
| T032 | 0.30 | None | missing — the package produced no value for this target |
| T033 | 0.31 | None | missing — the package produced no value for this target |
| T034 | 0.31 | None | missing — the package produced no value for this target |
| T035 | 0.35** | None | missing — the package produced no value for this target |
| T036 | 0.36** | None | missing — the package produced no value for this target |
| T037 | 0.37** | None | missing — the package produced no value for this target |
| T038 | (0.43) | None | missing — the package produced no value for this target |
| T039 | 0.45 | None | missing — the package produced no value for this target |
| T040 | (0.50) | None | missing — the package produced no value for this target |
| T041 | (0.52) | None | missing — the package produced no value for this target |
| T042 | (0.53) | None | missing — the package produced no value for this target |
| T043 | 0.55 | None | missing — the package produced no value for this target |
| T044 | 0.94** | None | missing — the package produced no value for this target |
| T045 | 0.94** | None | missing — the package produced no value for this target |
| T046 | 0.96** | None | missing — the package produced no value for this target |
| T048 | 1,833 | None | missing — the package produced no value for this target |
| T049 | 1,836 | None | missing — the package produced no value for this target |
| T051 | 1,842 | None | missing — the package produced no value for this target |
| T052 | 1,842 | None | missing — the package produced no value for this target |
| T053 | 1.13* | None | missing — the package produced no value for this target |
| T054 | 1.54 | None | missing — the package produced no value for this target |
| T057 | 1.73** | None | missing — the package produced no value for this target |
| T058 | 1.89** | None | missing — the package produced no value for this target |
| T068 | 17.6 | None | missing — the package produced no value for this target |
| T075 | 2.10** | None | missing — the package produced no value for this target |
| T092 | 22.4 | None | missing — the package produced no value for this target |
| T094 | 75% | None | missing — the package produced no value for this target |
43 targets · 32 equal · 9 missing · 2 within-ulp · compared under v1.3 (proposed rule, not yet accepted)
| target | paper | package | |
|---|---|---|---|
| T001 | −0.60** | -0.59605715291876493 | equal |
| T002 | −0.62** | -0.61597337027540955 | equal |
| T003 | −0.66** | -0.65511489716496984 | equal |
| T016 | (0.09) | 0.092299578328647533 | equal |
| T017 | (0.09) | 0.091093250973301523 | equal |
| T018 | (0.09) | 0.088272469003882345 | equal |
| T019 | (0.09) | 0.093690759567855691 | equal |
| T022 | (0.11) | 0.10781617323094253 | equal |
| T023 | (0.11) | 0.10457632247278564 | within-ulp — 0.10457632247278564 rounds to 0.10; printed 0.11; one unit in the last place |
| T024 | 0.13 | None | missing — the package produced no value for this target |
| T025 | 0.15 | 0.15395647373224997 | equal |
| T026 | 0.16 | None | missing — the package produced no value for this target |
| T028 | (0.23) | 0.22946419011451966 | equal |
| T029 | (0.25) | 0.24468373891808601 | within-ulp — 0.24468373891808601 rounds to 0.24; printed 0.25; one unit in the last place |
| T030 | (0.25) | 0.25132483880452472 | equal |
| T031 | 0.29 | None | missing — the package produced no value for this target |
| T032 | 0.30 | 0.29597046227831025 | equal |
| T033 | 0.31 | 0.30845568431383907 | equal |
| T034 | 0.31 | 0.30864725044949293 | equal |
| T035 | 0.35** | 0.34874354482764464 | equal |
| T036 | 0.36** | 0.3602579430747489 | equal |
| T037 | 0.37** | 0.37065474859007125 | equal |
| T038 | (0.43) | 0.42908151073153072 | equal |
| T039 | 0.45 | None | missing — the package produced no value for this target |
| T040 | (0.50) | 0.49669746274814258 | equal |
| T041 | (0.52) | 0.51866276999632044 | equal |
| T042 | (0.53) | 0.53041344928357259 | equal |
| T043 | 0.55 | None | missing — the package produced no value for this target |
| T044 | 0.94** | 0.94306479455777481 | equal |
| T045 | 0.94** | 0.93990586553876698 | equal |
| T046 | 0.96** | 0.96371531580159564 | equal |
| T048 | 1,833 | 1833 | equal |
| T049 | 1,836 | 1836 | equal |
| T051 | 1,842 | 1842 | equal |
| T052 | 1,842 | 1842 | equal |
| T053 | 1.13* | 1.1309952960421084 | equal |
| T054 | 1.54 | None | missing — the package produced no value for this target |
| T057 | 1.73** | 1.7256178083084335 | equal |
| T058 | 1.89** | 1.8872670361966846 | equal |
| T068 | 17.6 | None | missing — the package produced no value for this target |
| T075 | 2.10** | 2.0966984497024401 | equal |
| T092 | 22.4 | None | missing — the package produced no value for this target |
| T094 | 75% | None | missing — the package produced no value for this target |
Declared for this mission and copied when its deposit arrived. Nothing on file records what the session actually ran under — an environment is selected by name in the runner's own account, and a name that matches nothing falls through to their default without saying so.
# 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. Both readings ran on night-shift-extract before any seal check existed, so neither carries one and the Seal check rows below say so. The 2026-08-20 probe of that environment found the search channel open at the environment layer and nine connectors available, so these two extractions cannot be shown to have been blind. Nothing here says they saw the paper's published numbers; nothing here rules it out either, which is the whole reason the check exists.