# Item 703 Repurchase Evidence - Methodology (item703-repurchase-evidence-2025-09-30-r1)

## 1. Universe
The issuer universe is the Persistfolio Historical Cohort Release 1.1 (S&P 500 membership reconstruction, 2004-09-30 to 2025-09-30) combined with the Item 703 working identity overlay (sha256 `ca22f01424779e8c26fe2d14724f5a36a454f61a80726fff9db982cd7c82bd36`): 978 securities, of which 5 have no resolvable CIK, giving 971 distinct CIKs. A filing is examined when its scope date falls inside a membership window of the filer (43,397 filings); the other 24,209 EDGAR 10-K/10-Q filings of these CIKs are out of scope. The scope date is the filing's verified period of report (periodVerification `effectivePeriodEnd`, which is also the fiscal-period key). Where the period cannot be established (verification status CONFLICT_UNRESOLVED or UNVERIFIED_IMPLAUSIBLE, 79 filings) the filing has no fiscal-period key and scope falls back to its filing date; those filings are published with a blank `period_of_report`. The join basis is CIK × period; the universe is never widened to non-members.

## 2. Source and retrieval
For each in-scope filing the primary document is fetched from SEC EDGAR (www.sec.gov/Archives) with a declared User-Agent, at no more than 3 requests per second per worker, with exponential-backoff retries. Every retrieval records the payload byte length and SHA-256 (published in the ledger). A body with fewer than 200 characters of visible text is a retrieval failure, never evidence of absence. An apparent absence of Item 703 is accepted only after a second, fresh, independent retrieval that returns HTTP 200, passes the same integrity floor, again locates no Item 703 section, and is byte-identical (same SHA-256). Any disagreement is a RETRIEVAL_FAILURE, never NO_RELEVANT_DISCLOSURE.

## 3. Location and extraction
The Item 703 section is located by its heading and by the SEC column-header signature of its table. Candidate tables pass a semantic admission gate (a table must carry the SEC column semantics, not merely a phrase such as "average price paid"). Column identity is derived from each caption's meaning, never from position or from the filer's own (a)/(b)/(c) markers, and a table whose captions cannot establish all four SEC columns is refused rather than guessed. Header rows with empty captions, metadata/units rows and displaced row labels are handled by explicit gates that either map the row safely or refuse the table. When the standard extractor refuses every candidate, a grid-aligned extractor may recover the table; it too refuses rather than drops a row that carries reported evidence. Display scale ("in thousands", "in millions") is applied only where the filer's own table states it and it can be placed on specific cells; otherwise the cell is left unscaled and the fact is withheld.

## 4. What is recorded
Every row of the extracted table becomes one fact with the exact cell text, its typed status, the number as printed, and any evidenced scale. Nothing is coerced: a dash is a dash, not zero. Narrative disclosures are never converted into facts. The classification layer (activity status, programme relation, economic mechanism) is Persistfolio's interpretation and is kept separate from the reported values.

## 5. Fail-closed release rules
A fact is released only when its filing is PROCESSED and no review rule fires. Review rules include: unparseable cells, unrecognised row labels, unresolved month normalization, unresolved display scale, and four release-safety invariants that preserve the fact exactly but withhold it:
- **IMPOSSIBLE_REPORTED_VALUE** - a negative value in any of the four SEC columns (none of them can be negative).
- **MULTI_PERIOD_AGGREGATE** - a label that explicitly names a multi-month span (quarter, three/six/nine/twelve months, 13/14/26/39/52 weeks, year-ended, year-to-date, fiscal year) while carrying one normalized month.
- **SUSPICIOUS_COLUMN_MAPPING** - a price-shaped value (2-4 decimals, below 2,000) in column (c) while (b) is empty, or a whole number of 10,000 or more in the average-price column (b).
In addition, an evidence-adjudicated, exact-accession quarantine of 13 filings (`adjudicated_unsafe_tabular_filings.json`) whose source tables were read directly and shown to be mis-extracted is dispositioned REVIEW with zero facts. The quarantine matches exact filing keys only, never an issuer or a pattern.

## 6. Certification
The release gate (`scripts/item703/analysis/releaseGateAudit.ts`) is run unchanged on the full manufacturing run; see CERTIFICATION_REPORT.md.

Known limitations are listed in LIMITATIONS.md.

