# Amendments and provenance record for RULE 9160 (v5)

Append-only. Each entry is dated. The rule text `RULE_9160.md` is not edited.

## A1 (2026-10-13): provenance disclosure for the v5a freeze and fit

### Facts, verified on disk on 2026-10-13

1. **The rule file.** `RULE_9160.md` was last modified on 2026-10-10 at 20:40:19 CDT. Its sha256 is `8eb9af105542efc1a833b369cd9b460105754d6a1a2993ec20c071889dce9a07` and it has not changed since.
2. **Companion files never written.** The rule promises `RULE_9160.sha256`, `RULE_9160_v5a_inputs.sha256` and this file, all to be written before any v5 fit. Claude's summative worker never wrote them: an account usage limit stopped it on the evening of 2026-10-10. Codex's own manifest records all three as missing at freeze (`qa/codex_v5_ramp_readiness_5048/READINESS_MANIFEST_v*.json`, `rules_9160_companion_files_missing_at_freeze`). The rule's checklist item for the final design pins was also left unfilled.
3. **Who froze the rule.** Codex, not Claude, wrote the freeze record before the first fit: `qa/codex_factory_feed/v5_owner_continuation_4977/FROZEN_EXECUTION.json`. That record is timestamped 2026-10-10 22:03:21 CDT, has status `FROZEN_BEFORE_FIRST_OBSERVED_MODEL_CALL`, and pins `RULE_9160.md` at the sha256 above together with the continuation code. The first primary completion receipt (`primary_COMPLETED.json`) is timestamped 22:30:48. All sensitivity runs completed by 2026-10-11 00:51.
4. **Who ran the fits.** The v5a fits and pool were run by Codex using Claude's 9159/9160 code ("same-owner continuation" 4977/4980). Their outputs are in `qa/claude_summative_20261008/work_v5/profiles` and `work_v5/pool`. Codex also wrote `RESULTS_v5.md`. That report cites the 4980 pool. The later 5083 pool, which includes Sweden's corrected source data, is the version Codex froze for citation.

### What this means

- The rule content was pinned by hash before any v5a model call, and it has not changed since. The fixed reporting specification (`scaled | linear | w66 | all`) is the one the rule declares.
- **v5 is not preregistered.** The rule was written after v1–v4 results had been seen, as the rule itself says. Any text saying "hashed before fit" must name who hashed it (Codex's freeze 4977), and must state that the companion hash files were missing.
- **v5a (4980/5083) is not independent of v4.** It is the same estimator family on overlapping data. It must not be presented as corroborating v4.

### Required wording for papers and the Substack post

> The v5 rule (RULE 9160) was pinned by SHA-256 in an execution freeze written before the first model call (10 October 2026, 22:03 CDT). The rule was written after earlier versions' results had been seen, so v5 is a disclosed update, not a preregistered analysis.

## A2 (pending): v5c as a declared amendment

v5c adds the US coverage retry parts (9350–9356) and the Claude parts from 9370–9439 that pass their tests: matrix, literature and completeness builds. It enters only through this file, never by editing the rule.

The entry will declare, before any v5c fit:

- (a) the v5c input hashes;
- (b) the part roles, including `USA_FL_DOH_COUNTY_K_v2` superseding the frozen FL K part, the CHD-clients measures ranked as sensitivity, the Oregon 2008→09 method-break flag, and Japan Honda as sensitivity only;
- (c) that the planted-effect, placebo, negative-control and ramp gates are rerun on v5c with unchanged thresholds;
- (d) that v5a remains the reference result and v5c is reported beside it with a per-country weight table.

### A2 pre-declaration (2026-10-13, before any v5c fit): minimum observation span

Series observed in fewer than **4 distinct calendar years** inside the estimation window are **sensitivity-only** in v5c. They do not enter the primary pool.

- **Reason:** with a continuous trend and only 2–3 calendar years, period effects and the trend absorb nearly all of a step, so the series cannot identify a jump. That is a design property, not an outcome-based choice.
- **Disclosure:** the rule was prompted by the live-preview planted-effect diagnostics, which were run on real counts with planted steps. In those diagnostics Tunisia (3 school years) recovered only 5.6% of a planted ×1.25 step, and leaving it out returned the pooled planted error from −9.99% to −7.90%. The live-preview point estimates (update 4 strict: 0.981, calibrated 0.866–1.112) had already been seen on largely the same data when the rule was written, so it is not outcome-blind. The rule's effect on the headline is reported, both directions.
- **Reporting:** the v5c primary is reported with this rule. The same fit including short series is reported beside it as a declared sensitivity.
- **Affected series in the preview:** TUN_MOE_BS_AUTISM (3 years), MEX_EDOMEX_911_TEA (2 cycles) and MEX_SLP (3 years; it already had no eligible window). The rule applies to all series mechanically.

### A2 pre-declaration (2026-10-14, before any v5c fit): part roles and joins

**Supersessions in v5c only:**
- `CHL_DEIS_REM_A05_TEA_v2` replaces `CHL_DEIS_REM_A05_TEA`.
- `TZA_BEST_PREPRIMARY_REGION_v2` replaces `TZA_BEST_PREPRIMARY_REGION` and inherits its NC roles.
- `USA_FL_DOH_COUNTY_K_v2` replaces `USA_FL_DOH_COUNTY_K`.

**Continuation:** `BRA_INSS_BPC_F84_EXT2022` continues `BRA_INSS_BPC_F84` as one source, with 2022 = Jan–Sep (held part) + Oct–Dec (extension).

**Sensitivity only:**
- `USA_KS_*` district (derived counts);
- `POL_SEJM_8747_NFZ_F84` (different definition from `POL_NFZ_F84`);
- `PER_GRSM_HIS_MORBILIDAD_F84` (visits, not children);
- `FIN_LIT_KAFAMI2025` (same register as the held FIN series);
- `JPN_LIT_HONDA2005` (duplicates the held fits);
- the digitised literature series (`JPN_LIT_SASAYAMA2021`, `AUS_LIT_BOURKE2024`, `AUS_LIT_NIELSEN2024`, `GBR_LIT_CYBULSKI2021`) and the single-snapshot `USA_LIT_NEVISON2020/2026`;
- the CHD-clients Florida coverage.

**Exposure ranking:**
- `JPN_ESTAT_CHIIKI_HOKEN_PREF_VACC`: sensitivity exposure only.
- `NLD_RIVM_MUNICIPAL_COVERAGE`: ranks below the held `NLD_CBS` coverage.

**Descriptive only, not pooled:**
- Lithuanian national age-band rates;
- `IRN_BEHZISTI_CENTRE_CLIENTS` and `ZAF_DBE_EDSTATS_SNE_DISABILITY` (no age dimension);
- the single-year Hungarian county census;
- `IDN_DATAGOID_SLB_AUTIS_DISTRICT`.

**Source fixed-effect joins (not stacked weight):**
- `DNK_LIT_SCHENDEL2018` into the held DNK series;
- `KOR_LIT_YOO2022` into `KOR_HIRA` (overlapping-age cells dropped);
- `IND_DISE` into `IND_UDISEPLUS`.

**Exclusions:** Chihuahua primary 2019-20 (outlier, about 2.3× neighbours) and the EDOMEX inicial cells (denominator scope change).

**Level-to-age-band mappings:** as in `07_analysis_code/9452_live_parts.py` for ARG DiNIEE (special initial 3–5, special primary 6–12, integrated 3–17), CAN_ON (4–13, 14–17), MEX EDOMEX and QRO (3–5, 6–11, 12–14), and XKX (grade + 5).

**Design rules:** the minimum-span rule (≥4 calendar years) and the strict level choice apply at the design stage. The flag-on level promotion and the short-series-included fit are declared sensitivities.

**Note on these roles:** they were set from the parts' definitions and overlap, without looking at any part's estimate. Some were proposed by the preview agent after earlier preview pools had been seen.

### A2 pre-declaration (2026-10-14, before any v5c fit): single-cross-section measured coverage

A measured coverage part that covers only one or a few non-consecutive cohorts may not replace the modeled national path at those cohorts in the primary design. That covers `MEX_ENSANUT_STATE_COVERAGE` (3 surveys), `MEX_CENSIA_SRP_2013`, `ECU_INEC_SURVEY_COVERAGE` (3 surveys), the Chilean comuna rows of `CHL_DEIS_COVERAGE` (2013–15) and `BGD_DHS_DIVISION_VACC`. Replacing the path piecemeal would create artificial exposure jumps.

- **Primary design:** these parts enter as between-jurisdiction exposure contrasts only.
- **Declared sensitivity:** a separate design lets them replace the path.

Annual multi-year measured series are eligible as primary paths under the usual ranking: `ARG_DICEI_PROVINCE_COVERAGE` (2008/2011–2024), the Chilean region rows (2013–21), `KOR_KDCA_NIP_SIDO_COVERAGE`, `HUN_NNGYK_COUNTY_VACC`, `IND_NFHS5_*` (two survey rounds, so treated as cross-sections, i.e. contrasts only), `NPL_DOHS_DISTRICT_COVERAGE`, `CAN_ON_PHO_ISPA_COVERAGE` and `NLD`.

The rule was set from each part's cohort structure, before any v5c fit.

### A2 corrections and additions (2026-10-14, after the v5c_r2 provisional merge, before any v5c fit)

- **OMN_MOSD_DISABILITY_CARD** has an age-group × sex dimension, so it is **sensitivity**, not descriptive. Its registrations cover only 2020–22, so the minimum-span rule keeps it out of the primary pool in any case.
- **NC roles for the matrix-lane parts (9376–9396):** the lane declared them only in prose. The merge's documented fallback applies: hearing codes are sensitivity_nc, all other same-table non-autism categories are primary_nc. This matches the convention of the declared NC list.
- **Pre-programme zeros where the regional rollout date is ambiguous** (Ontario health units for rotavirus; Indian districts for rotavirus): the zero path stops before the EARLIEST introduction that could apply (PEI 2010 for Ontario; the 2016 four-state launch for India), so no post-programme cohort is ever set to zero. This is the conservative direction.

### A2 additions for the final increment (2026-10-14, before any v5c fit)

**Continuations as one source:** the `_EXT` time-depth parts continue their held parts, with overlap cells required to agree. The exceptions are:
- `POL_NFZ_F84_EXT`: new codes (youth psychiatric care), so a separate sensitivity source.
- `PER_MIMP_RNPCD_AGGREGATE_EXT`: a non-autism composite, so descriptive only.
- `FRA_RHEOP_AGE7_EXT`: the TED/CFTMEA codes stay separate from TSA.

**Flags:** TWN county autism (system break at 2020/21) and MUS (category break in 2021) carry reporting-break flags. Partial-year 2026 CHL cells are flagged provisional.

**Roles:** `MEX_DGIS_SECTORIAL_F84` is sensitivity, because its SSA rows duplicate `MEX_DGIS_SAEH` and its geography is facility state. `EGY_CAPMAS_NGO_DISABILITY` (NGO service beneficiaries), `PAN_IPHE_TGD_NATIONAL` and `BWA_STATSBOTS_SECONDARY_SEN` are primary-eligible only under the design rules (minimum span, eligible event windows).

### A2 consistency fix (2026-10-14, before any v5c fit)

`MOZ_DHS_PROVINCE_VACC` (5 DHS surveys) and `TZA_DHS_REGION_VACC` (2 DHS surveys) are single-survey cross-sections in the same sense as the listed ENSANUT, INEC, BDHS and NFHS parts. They join the cross-section list (`path_eligible=False`), so in the primary design they serve only as contrasts. This was set from the parts' cohort structure.

For the record: in the live preview, the flag-on promotion that used the TZA DHS region paths had flipped Tanzania's estimate (1.15 to 0.87). That result was visible when this fix was made, so the fix is disclosed here.

### A2 FINAL (pre-fit) (2026-10-14, before any v5c fit)

This entry finalises A2. It was written by Claude (the summative worker) on the coordinator's instruction, after the FINAL v5c input set had landed and after
`9500_summative_v5c_driver.py --final` had written the input manifest and the outcome-blind design. It carries the working text `work_v5c/A2_DRAFT.md` to its final form. `RULE_9160.md` is not
edited (sha256 `8eb9af105542efc1a833b369cd9b460105754d6a1a2993ec20c071889dce9a07`, unchanged). **No v5c fit of any kind has been run, on observed or on synthetic counts.** What has been run:
the outcome-blind design on the v5a tables (`--selftest-v5a`: the five design frames equal `work_v5/design` hash for hash) and the outcome-blind design on the final input set (`--final`). The
final snapshot copies the count column from the input, but the design code drops it before any design step, so no count entered any design decision.

#### A2.1 What v5c is, and what has been seen

* **Definition.** v5c = RULE 9160's v5a design plus the pre-declared v5b second stage (switch `V5B` on, RULE 9160 section V, kept on by the coordinator on 2026-10-13), run on the FINAL input set
  `*_v5c_r2.*` (CLAIMS row "Factory v5c FINAL input set", rebuilt after the A2 consistency fix; file names kept from the provisional v5c_r2), with the declarations of A2.3-A2.4. Every rule, run,
  gate, interval and sensitivity of RULE 9160 applies unchanged (A2.6).
* **Not preregistered; not independent of v4 or v5a.** Same estimator family on overlapping data, plus new parts (A1).
* **What was visible when this was written (disclosed).** Every v1-v5a result including Codex 5083 (v5a with Sweden's corrected counts: ratio 0.9626, RE 0.820-1.130, calibrated 0.827-1.120,
  declared-allowance 0.689-1.345, K = 32); the live preview (`qa/claude_live_pool_20261013`, scripts 9450-9452) through update 4 strict (ratio 0.981, calibrated 0.866-1.112, K = 40) and its flag-on
  promotion run, whose Tanzania estimate (1.15 to 0.87) was seen before the A2 consistency fix; the planted-effect diagnostics that prompted the minimum-span rule; the structure (never the counts) of
  every part; and the outcome-blind designs of `9500` on the partial merge, the provisional re-merge and the final set. The preview's registry is the source of most declarations below, so the v5c
  headline is NOT blind to the preview's direction.

#### A2.2 Inputs and the manifest (written BEFORE any v5c fit)

* **Order.** (1) the final input set landed (all 17 files below re-hashed on disk against the CLAIMS "CURRENT" hashes: 17 of 17 equal); (2) `9500 --final` wrote the declared tables, the snapshot, the
  outcome-blind design, `work_v5c/RULE_9160_v5c_inputs.sha256` and `work_v5c/design_pins_v5c.json` (2026-10-14 06:33:51 CDT); (3) this entry was appended AFTER the manifest. `AMENDMENTS_9160.md` is
  append-only and this entry quotes the manifest's hash, so the manifest cannot pin the whole file (circular): it pins the file's first 11154 bytes (`fa60d1e3ed4690446ff209e4be0bb8c204b636e91444f40475758158aeed45e0`); the fit's first stage
  stops if that prefix changed or if no "A2 FINAL (pre-fit)" entry follows it. (4) `9500 --fit` (not yet authorised) starts with that check, re-hashes every file the manifest lists and compares the
  design tables with the pins.
* **Input manifest** `work_v5c/RULE_9160_v5c_inputs.sha256`: 69 files (every file of the input set, the frozen v4 inputs, `exposure_preferred_v5b.parquet`, the 5077 Swedish source file,
  the declared tables, the snapshot manifest, `RULE_9160.md`, the code chain `9150`-`9160` and `9500`-`9503`) and the four design pins. **sha256 of the manifest: `e2e2b8771e62a4c8e4a55c9c265a856645d00a466e46fd4282a20216876deddf`.**
  sha256 of `work_v5c/design_pins_v5c.json`: `4025c0630bff00bc3b9eaeeb39a4ee2c495154b5c3d5d877faed3307631249be`. sha256 of `work_v5c/snapshot/manifest.json`: `df86a15250e8476d21fea70c484ec6b289ec67239ececb76c2b6c7354a97b022`.
* **Design pins** (9150 `frame_sha` of `work_v5c/design/*.parquet`): units `3dccabcf01200ecf82566d0da5928695978fe079adfb414ea86e7334144c90ab`; stacks `f10bed4dd9777adde8ebaf355ff5eaba097a9a748bd299ebf037b4d2d6956230`; placebo `5bc5fe8a0847ce90ca562c7397fd3e1c899aa8d4b4fb633194428f3a625d1e01`;
  ppath `ceabea1d4487fd71347f0a251d2a5e23f35b0f059e2284f21b5f4aaa2507c343`.
* **Code sha256.** `9500_summative_v5c_driver.py` `364a35a59fccef9c09aa55f25a5c20e703b05eb56a67e76f2b015c4cef54b26d`; `9501_v5c_declarations.py` `247dc9c2b14eab470f86dc5dde9677166dde38ee4f530bff1e1f6b243d37e44a`;
  `9502_v5c_headline_chart.py` `4295433cc6dad498c44574db33779016590244a3bc0ceaeda9849cdcab92de7d`; `9503_v5c_rehearsal.py` `837f1f77eca7bbf964a78486f24f561b064d9bef874e6ea002aeab23a9c5aa69` (the rehearsal was written but NOT run). The 9150-9160 chain
  is listed in the manifest; `9160_*` and `9159_*` were imported read-only.
* **Raw input set (final).**

| file (`qa/claude_factory_20261008/data/`) | sha256 |
|---|---|
| `cells_primary_v5c_r2.parquet` | `95692adb242c3a4c077f5f23f49e1bc898d916aaea88280d43a40ba806e196f0` |
| `cell_flags_v5c_r2.parquet` | `dd0d5a176e7a78c3bfc8ab965a9519ca1ca3de74f81b80b3f3b3332a1536b6ed` |
| `exposure_preferred_v5c_r2.parquet` | `31244d83ac2f6f5b29f40e931116b3f3475af56b4a81feb0dbd5716e205cd244` |
| `exposure_substate_v5c_r2.parquet` | `e1561a7521c5e841890f275f28300c0418732d2ab5443d5cc0615b6c2377de88` |
| `exposure_flags_v5c_r2.parquet` | `c128448bf81d038a11c2fb8a9207a2cb8b0abb011f5647acf36797a533e7b367` |
| `events_v5c_r2.parquet` | `7b296704f0e3a7bc1e27243f331c411d7b11b54c46068448875bf6fcac28a80d` |
| `events_primary_v5c_r2.parquet` | `4a5e1489ca65c0a5e0854ccd4edea9a8a94678133674560e17147c703f6b40e0` |
| `series_flags_v5c_r2.parquet` | `22e00d7825985938c85533d6fa0b490cadb41de4032c18f50185b67bb468b207` |
| `SOURCE_ROLES_v5c_r2.csv` | `3b0724d48de76528bb7fe304bb729e9df72b4e01dabb8c7d5be1bbdf54e5f3c3` |
| `NC_ROLES_v5c_r2.csv` | `8c3088610ee3899e5249658b689b5dc2bb975909d93c7b7c429e727371b01cfe` |
| `INVENTORY_v5c_r2.csv` | `44661642e94e76931b6c5bcb3dc497083c5827df5b93ad62ee3e69d1d3fe54c5` |
| `DATA_QUALITY_FLAGS_v5c_r2.csv` | `196dcb7d59562a73294eb7b63b01e6cfa87680150aedd809a53a886cc6a7d8ba` |
| `PRE_PROGRAMME_ZERO_v5c_r2.csv` | `f5ecee92e4e65233842c83dc40f218b48a80b99cc5b7b73d7b8cde74763c29b6` |
| `LEVEL_AGE_MAP_v5c_r2.csv` | `cb3bab01e2d07f620ec08d087ef67447fde707034328f9df7b7c4e4d20d9c003` |
| `EVENT_STATUS_v5c_r2.csv` | `bb2209b3f923f680fe75752954062de413e5dd2ed4274f134a780ee38f331676` |
| `EVENT_ADJUDICATION_v5c_r2.csv` | `ae25ed72fc2970bb2a4fdcb357031c23a6105b3e3042eb5564efb08d90383c56` |
| `VALIDATION_v5c_r2.json` | `78b396f1fc17bd759175740c6bc7b0298488b4bd62e2700f545d59d992ed2c5c` |

* Also pinned: `exposure_preferred_v5b.parquet` `8bec53253e4b632a2d7ca4dc8bf509727111e0636213d970526af9a6aedb6726` (the pre-v5c exposure table the cross-section exclusion can restore from; it restored 0 rows), the frozen v4 inputs
  (`cells.parquet`, `exposure.parquet`, `exposure_preferred_v4.parquet`, `EVENT_STATUS.csv`, `EVENT_STATUS_V4.csv`), `parts/POL_NFZ_F84_POWIAT/cells.parquet` (the v5b swap source), the 5077 Swedish file
  `0480d8e10f83c60875b138c44718f21e42ef4eec5d1ddf119a019bd527094977` and the declared NC list.
* **Declared tables** (built by `9500` from the raw tables and `9501`; deterministic):

| declared table (`work_v5c/declared/`) | sha256 |
|---|---|
| `cells_primary_v5c_r2.parquet` | `5a4c0f43b203739b5a47efc47034833a5afc5d7d37ed903126b3aec726f4dfac` |
| `cell_flags_v5c_r2.parquet` | `995ac6135f8da27aa16e2e95d0f9b06add77a9eb8a13183cb15493f73d5df675` |
| `exposure_preferred_v5c_r2.parquet` | `2e3781e072b9faff7b2752ae3bf472223909392432636329b86c5c6520e53371` |
| `SOURCE_ROLES_v5c_r2.csv` | `f49f78468dd31aac0cb59404e42b7d19e0df0ff3ffdb7419027361a06994a8df` |
| `INVENTORY_v5c_r2.csv` | `33c1679bf855de083366563f1ff34ad1b86ad2a42afd64dff7b6beecfe41ed4e` |
| `NC_ROLES_v5c_r2.csv` | `8c3088610ee3899e5249658b689b5dc2bb975909d93c7b7c429e727371b01cfe` |
| `promoted_extra_keys.parquet` | `407cd2ea989eac6ef7b0ad3b6938fdbcdd1b6671e23ea1502407bd98246b4b92` |
| `xsec_path_rows.parquet` | `6e52c9723879f45fc1ec433e3348c39bec05e9c85afd2fb59a0163e89fcffc4e` |

#### A2.3 Parts: roles and declared primary codes

Source: `9501_v5c_declarations.py` `PARTS` (107 entries, each with its reason there). A "primary" outcome part enters the primary design with its declared code(s); a tuple means separate slots
(separate units, never summed); every other role never enters the primary design. A registry role overrides the factory's `SOURCE_ROLES_v5c_r2` row where they differ (none differ in the final
build: `role_conflicts` is empty). The driver stops on an autism source with no declaration: there is none (`undeclared_sources` is empty).

**Primary outcome parts and their declared codes**

| source | declared primary code(s) | joined / note |
|---|---|---|
| `ARG_DINIEE_SPECIAL_ED_TEA` | `TEA_SPECIAL_SCHOOL`, `TEA_INTEGRATED` (separate slots) | - |
| `BGD_DPE_APSC_DISABILITY` | `BGD_APSC_AUTISTIC` | - |
| `BWA_STATSBOTS_SECONDARY_SEN` | `BWA_SEC_ASD` | - |
| `CAN_LIT_NEDSAC2012` | `NEDSAC_ASD` | - |
| `CAN_ON_SPED_EXCEPTIONALITY` | `ON_AUTISM` | - |
| `CHL_DEIS_REM_A05_TEA_v2` | `TGD_ADM_ALL` | supersedes `CHL_DEIS_REM_A05_TEA` |
| `COL_BOGOTA_SED_TEA` | `TEA` | - |
| `COL_DANE_EDUC_TEA_MUNI` | `TEA_enrolled` | - |
| `CZE_MSMT_KRAJ_ASD` | `CZE_MSMT_ZV_ASD`, `CZE_MSMT_MS_ASD` (separate slots) | - |
| `CZE_UZIS_PSYCHIATRICKA_PECE_EXT` | `F84_PSYCH_AMB` | - |
| `DNK_LIT_SCHENDEL2018` | `F84` | source fixed effect into `DNK_HBS_F84_COHORT` / `F84` |
| `EGY_CAPMAS_NGO_DISABILITY` | `EGY_NGO_ASD` | - |
| `FRA_LIT_DELOBELAYOUB2026` | `TSA_PDD` | - |
| `GBR_LIT_SMEETH2004` | `PDD_FIRST_GPRD` | - |
| `IND_DISE_CWSN_TYPE_GRADE` | `IND_DISE_AU_AUTISM` | source fixed effect into `IND_UDISEPLUS_R4007_CWSN` / `IND_RPWD_09_ASD` |
| `IND_UDISEPLUS_R4007_CWSN` | `IND_RPWD_09_ASD` | - |
| `KOR_LIT_YOO2022` | `F84_NHIS` | source fixed effect into `KOR_HIRA_F84_AGE5` / `F84` |
| `MEX_CHIH_911_TEA` | `MEX911_TEA_REG_GENERAL`, `MEX911_TEA_REG_INDIGENA` (separate slots) | - |
| `MEX_EDOMEX_911_TEA` | `MEX911_TEA_REGULAR` | - |
| `MEX_QRO_USEBEQ_TEA` | `MEX911_TEA_REGULAR`, `MEX911_TEA_CAM` (separate slots) | - |
| `MEX_SLP_ESPECIAL_TEA` | `MEX911_TEA_CAM`, `MEX911_TEA_USAER` (separate slots) | - |
| `MUS_DIGEST_SEN_IMPAIRMENT` | `MUS_SEN_ASD` | - |
| `NZL_LIT_VU2024` | `ASD_IDI_EVER` | - |
| `PAN_IPHE_TGD_NATIONAL` | `PAN_IPHE_TGD` | - |
| `PER_CONADIS_RNPCD_F84` | `F84_ANY_REG` | - |
| `POL_NFZ_F84` | `F84_AUT_ASP_ANYDX` | - |
| `RUS_FRC_ASD_MONITORING` | `RUS_FRC_RAS_ALL` | - |
| `TUN_MOE_BS_AUTISM` | `TUN_BS_AUTISM_ALL` | - |
| `TWN_MOHW_DISABILITY_AUTISM_COUNTY_EXT` | `TWN_DISAB_AUTISM` | - |
| `TZA_BEST_PREPRIMARY_REGION_v2` | `TZA_BEST_AUTISM` | supersedes `TZA_BEST_PREPRIMARY_REGION` |
| `TZA_BEST_PRIMARY_COUNCIL` | `TZA_BEST_AUTISM_INCL_STAGE` | - |
| `UGA_MOES_ABSTRACT_SNE` | `UGA_SNE_AUTISM` | - |
| `UKR_MEDSTAT_F84_OBLAST` | `F84.0-4` | - |
| `URY_INE_CENSO2023_TEA` | `ASD_dx` | - |
| `USA_LIT_NEVISON2018` | `CA_DDS_CODE1` | - |
| `USA_WY_WDE_DISTRICT_2000_2007` | `WY_AT` | - |
| `WLD_IDEA_PARTB_FAS_AUTISM` | `IDEA_B_AUT` | - |
| `WLD_IDEA_PARTB_TERRITORIES_AUTISM` | `IDEA_B_AUT` | - |
| `XKX_ASK_EDU30_SPECIAL_ED_ASD` | `XKX_EDU30_AUTISM` | - |

**Sensitivity-only** (outcome): `AUS_LIT_BOURKE2024`, `AUS_LIT_NIELSEN2024`, `CAN_AB_FSCD_CASELOAD`, `CAN_AB_SPED_CODE`, `COL_RISARALDA_SIMAT_TEA`, `DEU_BE_SENBJF_BEZIRK_FSP`, `DEU_BE_SENBJF_FSP_AUTISMUS`, `DEU_DESTATIS_F84_LAND`, `FIN_LIT_KAFAMI2025`, `FRA_HANDIDONNEES_ESMS_TSA_CHILDREN`, `GBR_LIT_CYBULSKI2021`, `HUN_KSH_CENSUS_DISABILITY_AGE`, `ISR_CBS_PUB1980_2023`, `JPN_LIT_HONDA2005`, `JPN_LIT_SASAYAMA2021`, `KEN_KNBS_SA_OPD_MORBIDITY`, `LTU_HI_VSN_F84_MUNICIPALITY`, `MEX_BC_CIFRAS_TEA`, `MEX_DGIS_SECTORIAL_F84`, `OMN_MOSD_DISABILITY_CARD`, `PER_GRSM_HIS_MORBILIDAD_F84`, `POL_GUS_BDL_52271`, `POL_NFZ_F84_EXT`, `POL_NFZ_F84_POWIAT`, `POL_SEJM_8747_NFZ_F84`, `TUR_TBMM_MEB_INCLUSION`, `URY_BPS_CSS131_TEA_PENSIONES`, `USA_KS_KSDE_PREVALENCE_DISTRICT`, `USA_LIT_NEVISON2020`, `USA_LIT_NEVISON2026`.
**Descriptive / out of scope:** `HUN_KSH_CENSUS2022_AUTISM_COUNTY`, `IDN_DATAGOID_SLB_AUTIS_DISTRICT`, `IRN_BEHZISTI_CENTRE_CLIENTS`, `LTU_HI_VSN_F84_NATIONAL_AGE`, `PER_MIMP_RNPCD_AGGREGATE_EXT`, `POL_NFZ_REFUND_NC`, `TUR_MEB_YEARBOOK_SPECIAL_ED`, `TUR_TBMM_MEB_RAM_DIAG`, `TUR_TBMM_MEB_SERM`, `TUR_TBMM_MOH_DIAG`, `TUR_TBMM_SGK_DIAG`, `ZAF_DBE_EDSTATS_SNE_DISABILITY`; `MYS_BPKHAS_AUTISM`, `UKR_MEDSTAT_F84_CHILD`.
**Continuations** (cells written under the held source id, overlap cells required to agree): `BRA_INSS_BPC_F84_EXT2022`, `CHL_DEIS_REM_A05_TEA_EXT`, `CHL_DEIS_REM_TEA_EXT`, `FRA_RHEOP_AGE7_EXT`, `KOR_NISE_SPECIAL_ED_ALL_EXT`, `KOR_NISE_SPED_NC_EXT`, `USA_CA_DDS_COUNTY_EXT`, `PER_INEI_ENDES_COVERAGE_EXT`.
**Ranked measured coverage parts** (never measured keys under the strict level rule; their keys count only in `level_promo`): `ARG_DICEI_PROVINCE_COVERAGE`, `CAN_ON_PHO_ISPA_COVERAGE`, `DNK_SSI_COVERAGE_LANDSDEL`, `HRV_CIJEP_PCV_COUNTY`, `HUN_NNGYK_COUNTY_VACC`, `ITA_PAT_COVERAGE_24M`, `JPN_MHLW_MR_COVERAGE`, `KOR_KDCA_NIP_SIDO_COVERAGE`, `MNG_NSO_IMMUNIZATION_AIMAG`, `NLD_CBS_50151NED`, `NLD_RIVM_MUNICIPAL_COVERAGE`, `NPL_DOHS_DISTRICT_COVERAGE`, `PER_INEI_ENDES_COVERAGE`, `TZA_MOH_HMIS_IMMUNIZATION`; the U.S. coverage retries 9350-9356 are one block
(`V5C_EXPOSURE`). `JPN_ESTAT_CHIIKI_HOKEN_PREF_VACC` is sensitivity exposure only and never ranked; `NLD_RIVM_MUNICIPAL_COVERAGE` ranks below `NLD_CBS_50151NED`.
**Single-cross-section parts** (A2.4 item 11): `MEX_ENSANUT_STATE_COVERAGE`, `MEX_CENSIA_SRP_2013`, `ECU_INEC_SURVEY_COVERAGE`, `CHL_DEIS_COVERAGE` (admin2 rows), `BGD_DHS_DIVISION_VACC`, `IND_NFHS5_DISTRICT_VACC`, `IND_NFHS5_STATE_VACC`, `MOZ_DHS_PROVINCE_VACC`, `TZA_DHS_REGION_VACC`.

#### A2.4 Declarations applied to the merge (9501; all outcome-blind)

1. **Supersessions.** `CHL_DEIS_REM_A05_TEA_v2` supersedes `CHL_DEIS_REM_A05_TEA`; `TZA_BEST_PREPRIMARY_REGION_v2` supersedes `TZA_BEST_PREPRIMARY_REGION` (FIX 4951; each `_v2` inherits the NC routing
   of its base id); `USA_FL_DOH_COUNTY_K_v2` supersedes the frozen FL K part and `USA_NY_DOH_COUNTY_2011_NYSIIS_v2` the frozen NY part, inside the factory's U.S. block.
2. **Source fixed-effect joins** (the factory's `join_fe_target` column agrees): `DNK_LIT_SCHENDEL2018` into `DNK_HBS_F84_COHORT`, `KOR_LIT_YOO2022` into `KOR_HIRA_F84_AGE5` (overlapping-age cells dropped),
   `IND_DISE_CWSN_TYPE_GRADE` into `IND_UDISEPLUS_R4007_CWSN`. The part's declared-code autism cells are relabelled into the held series; a part cell whose age range overlaps a held cell's (same level,
   jurisdiction, year) is a duplicate and is dropped; the rest carry a per-part nuisance regime (`SRC_<part>`) through the RULE 9158 R2.2 group-effect mechanism. The held series stays primary.
3. **Declared exclusions.** Chihuahua primary 2019-20 and the Estado de Mexico inicial-level cells: the final merge's cell flags already carry both, so the declared step excludes 0 further cells.
4. **Education level -> nominal age band** for cells with a level or grade-span label and no birth cohort: ARG special school `grade:PP` 3-5, `grade:1-7` 6-12, integrated `grade:PK-12` 3-17; Ontario `grade:JK-8`
   4-13, `grade:9-12` 14-17; Mexico 911 (EDOMEX, QRO) PP 3-5, 1-6 6-11, 7-9 12-14; Czech MSMT `grade:1-9` 6-14, pre-school 3-5 (the 9452 map; the factory's `LEVEL_AGE_MAP_v5c_r2.csv` holds the first 11 rows and
   applied them itself, so for those the declared step changes nothing; the Czech rows are applied by the declared step: 315 cells each). Kosovo `XKX_ASK_EDU30_SPECIAL_ED_ASD`: the age column holds the school GRADE
   and the factory adapter had turned it into `birth_cohort = year - label` (labels 6-17; labels 1-5 without a cohort); the declared transform sets age = grade + 5 and `birth_cohort = year - age` for all 1,836
   cells (A2 "XKX grade + 5"; Kosovo has no vaccine event in the register, so no stack results). The original label is kept in `src_locator`.
5. **National exposure broadcast, lowest rank.** Argentina's national preferred uptake rows are copied to every province of the DiNIEE part, filling only keys with no preferred row (tier 5.0; never replaces
   a row; not a measured key). The final set now also carries province-level measured series (`ARG_DICEI_PROVINCE_COVERAGE`), which the broadcast never replaces.
6. **Autism-specificity guard.** A primary part's declared code must be a code of the part's autism family and must not match
   `COMPOSITE|ALL_REG$|ALL_DISAB|ANY_DISAB|SPECIAL_ED_ALL|_MULTIPLE|_MENTAL|^ALL$|_TOTAL$|_ALL_PRINTED$`; in the declared run a refusal STOPS the build (none occurred).
7. **Sweden (5077) source correction.** The factory v5c tables still carry the pre-correction Swedish rows; v5c replaces `count`, `denominator`, `suppressed` and `src_locator` of `SWE_NPR_F84` by exact native key
   from the 5077 file (1,071 rows), so that v5c and v5a compare on the same Swedish input. The 5077/5083 event-label corrections are NOT imported: 20 of the 151 Swedish primary stacks differ from 5083's
   amended stacks in their product/event labels (the same 20 differ in v5a), none in count or path.
8. **Minimum observation span (pre-declaration of 2026-10-13).** A series observed in fewer than 4 distinct calendar years INSIDE the estimation window is sensitivity-only; mechanical, every series of every design
   run. Window = the cells that enter the primary window (w66) of at least one eligible stack of the series (union over its stacks). A run that loses series is re-designed for the affected overlap families
   without them, so the family level rule and the one-series-per-jurisdiction ranking act on the series that remain. `series_flags_v5c_r2` counts the span over ALL years and is read only for a cross-check
   (report: `span_rule_vs_factory_flags`); the driver's window-based count governs. Dropped at pin, primary run: 66 series (163 stacks) of
   BRA_SIA_F84, COL_DANE_EDUC_TEA_MUNI, ISR_CBS_ASD_REGISTRY, ITA_ISTAT_PSYDEV_MACROAREA, MEX_EDOMEX_911_TEA, NZL_MOH_DSS_DEMOGRAPHIC, TUN_MOE_BS_AUTISM, USA_MN_MDE_DISTRICT. **Disclosure:** prompted by the live-preview planted-effect diagnostics on real counts (Tunisia, 3 school years, recovered 5.6% of a planted x1.25 step); not
   outcome-blind. The same fit with the short series is the declared sensitivity `short_incl`.
9. **Level choice stays strict RULE 9160.** The family level rule reads the measured keys that the 9160 snapshot builds from the frozen `exposure.parquet` and the merge's `exposure_substate`, EXCLUDING the rows of
   the ranked coverage parts and of the single-cross-section parts: a new coverage part never promotes a family to a finer level by itself (the live preview's default). In the final set the new coverage parts live only in
   `exposure_preferred_v5c_r2`, which the key builder never reads, and the only new rows of `exposure_substate_v5c_r2` are the factory's U.S. block (kept as measured keys, as the v5a U.S. parts were). Counting the
   ranked parts' measured, non-broadcast keys is a rule change and runs only as the declared sensitivity `level_promo` (primary design, span rule on, for the 13
   countries of those parts, 913 promoted keys; pooled as a replacement composite by country).
10. **Roles** as in A2.3. **Superseded** sources are excluded as in v3.
11. **Single-cross-section measured coverage (pre-declaration of 2026-10-14 and the A2 consistency fix).** `MEX_ENSANUT_STATE_COVERAGE`, `MEX_CENSIA_SRP_2013`, `ECU_INEC_SURVEY_COVERAGE`, `CHL_DEIS_COVERAGE` (admin2 rows), `BGD_DHS_DIVISION_VACC`, `IND_NFHS5_DISTRICT_VACC`, `IND_NFHS5_STATE_VACC`, `MOZ_DHS_PROVINCE_VACC`, `TZA_DHS_REGION_VACC`: measured coverage of one or a few non-consecutive cohorts (single surveys). They may not replace a
    path in the primary. **The 9160 design code has no "contrast-only" mode for exposure** (a jurisdiction's exposure is one path per country, level, jurisdiction and product from `exposure_preferred`; the K substate
    table serves only the U.S. K-proxy runs), so the primary is implemented as EXCLUSION OF THESE ROWS FROM PATH CONSTRUCTION. The merge ranks them at preference tier 8.0 (they never replace a base row: 0 base rows
    replaced) and lists all 12,611 rows in `exposure_flags_v5c_r2` with `path_eligible = False` (`CROSS_SECTION_COVERAGE_NOT_A_PATH`); 10,153 of
    them stay in `exposure_preferred` because no other row exists at their keys. The driver drops exactly those 10,153 rows from the declared `exposure_preferred` (it stops if its list of parts or the row count
    differs from the flags) and checks that the rows they could have beaten, restored from `exposure_preferred_v5b`, number 0. The surveys therefore contribute no between-jurisdiction contrast to
    the primary (a stated limitation: contrasts come from the modeled paths' own subnational variation). The Chilean comuna scope is every admin2 row of `CHL_DEIS_COVERAGE` (2007-09, 2012, 2013-15), the same set the
    merge flags. **Declared sensitivity `xsec_paths`:** the primary design (span rule on) for the countries of these parts (BGD, CHL, ECU, IND, MEX, MOZ, TZA) with the part rows restored from their part folders
    at their own measured tier (12,611 rows, replacing under the merge's tier rule) and with their 926 measured, non-broadcast keys counted as measured (a path at admin1 / admin2 can
    only act at a level that the family actually uses); pooled as a replacement composite by country. Annual multi-year measured series stay primary-eligible under the usual ranking (`ARG_DICEI_PROVINCE_COVERAGE`,
    the Chilean region rows, `KOR_KDCA_NIP_SIDO_COVERAGE`, `HUN_NNGYK_COUNTY_VACC`, `NPL_DOHS_DISTRICT_COVERAGE`, `CAN_ON_PHO_ISPA_COVERAGE`, `NLD_*`).
12. **Final-increment parts and their codes.** `BWA_STATSBOTS_SECONDARY_SEN` (`BWA_SEC_ASD`), `EGY_CAPMAS_NGO_DISABILITY` (`EGY_NGO_ASD`), `MUS_DIGEST_SEN_IMPAIRMENT` (`MUS_SEN_ASD`), `PAN_IPHE_TGD_NATIONAL`
    (`PAN_IPHE_TGD`, the pervasive-developmental-disorder condition row, the F84-wide count as FRA `TSA_PDD`; the programme caseloads are alternates), `TWN_MOHW_DISABILITY_AUTISM_COUNTY_EXT` (`TWN_DISAB_AUTISM`),
    `CZE_UZIS_PSYCHIATRICKA_PECE_EXT` (`F84_PSYCH_AMB`) are primary-eligible under the design rules only (A2 final increment); the codes are the part's own autism code, chosen by the driver author from the part
    structure (sex splits are other codes). New primary parts of the r2 set the preview never saw: `COL_DANE_EDUC_TEA_MUNI` (`TEA_enrolled`), `URY_INE_CENSO2023_TEA` (`ASD_dx`),
    `WLD_IDEA_PARTB_TERRITORIES_AUTISM` (`IDEA_B_AUT`), `XKX_ASK_EDU30_SPECIAL_ED_ASD` (`XKX_EDU30_AUTISM`).
13. **Declared sensitivity designs** (outcome-blind designs written; each pooled as a replacement composite on the headline specification like the 9160 sensitivities): `short_incl`, `level_promo`, `xsec_paths`
    (items 8, 9, 11), besides every sensitivity design of RULE 9160 (`sia_treated`, `sia_blank40`, `sia_treated_blank40`, `swap_deu`, `esp_grade_nat`, `scen_low`, `scen_high`, `deu_rv`, `nor_v4paths`, `us_no_sae`,
    `chl_no2025`, `swap_pol_powiat`) and the control and event runs (`nc`, `nc_sens`, `nc_events`, `nc_events_k`, `us_kproxy`, `aut_match`).

#### A2.5 The outcome-blind design at the pin

All designs below were built by `9500 --final` on the final input set; units and stacks are those of `work_v5c/design/{units,stacks}.parquet`, "countries" = countries with at least one eligible unit of that run,
the v5a columns are `work_v5/design`.

| design run | units | stacks | stacks with a known path | countries | v5a units | v5a stacks | v5a countries |
|---|---|---|---|---|---|---|---|
| `primary` | 11,050 | 95,311 | 84,317 | 39 | 9957 | 83281 | 34 |
| `nc` | 9,184 | 96,256 | 75,171 | 28 | 7149 | 83732 | 24 |
| `nc_sens` | 9,787 | 56,591 | 37,118 | 23 | 6546 | 36979 | 19 |
| `aut_match` | 4,217 | 30,677 | 25,635 | 26 | 4255 | 30692 | 22 |
| `nc_events` | 9 | 10 | 0 | 1 | 9 | 10 | 1 |
| `nc_events_k` | 36 | 37 | 28 | 1 | 36 | 37 | 1 |
| `us_kproxy` | 132 | 132 | 132 | 1 | 132 | 132 | 1 |
| `sia_treated` | 4,232 | 40,147 | 35,707 | 1 | 4271 | 40235 | 1 |
| `sia_blank40` | 1 | 13 | 12 | 1 | 16 | 87 | 1 |
| `sia_treated_blank40` | 228 | 1,786 | 1,549 | 1 | 570 | 3473 | 1 |
| `swap_deu` | 16 | 176 | 80 | 1 | 16 | 176 | 1 |
| `esp_grade_nat` | 1 | 5 | 1 | 1 | 1 | 5 | 1 |
| `scen_low` | 86 | 149 | 149 | 3 | 86 | 149 | 3 |
| `scen_high` | 86 | 149 | 149 | 3 | 86 | 149 | 3 |
| `deu_rv` | 16 | 272 | 96 | 1 | 16 | 272 | 1 |
| `nor_v4paths` | 15 | 103 | 0 | 1 | 15 | 103 | 1 |
| `us_no_sae` | 1,311 | 4,529 | 3,998 | 1 | 1316 | 4540 | 1 |
| `chl_no2025` | 2 | 26 | 24 | 1 | 2 | 26 | 1 |
| `swap_pol_powiat` | 266 | 1,155 | 479 | 1 | - | - | - |
| `short_incl` | 5,015 | 30,530 | 27,390 | 8 | - | - | - |
| `level_promo` | 331 | 2,511 | 1,584 | 8 | - | - | - |
| `xsec_paths` | 1,503 | 12,803 | 8,769 | 6 | - | - | - |

* **Primary vs v5a.** 11,050 units / 95,311 stacks against 9,957 / 83,281; 39 countries with an eligible unit (37 with a known
  exposure path), against 34 (33 with a known path; the v5a pool of Codex 5083 has K = 32). Entering the design: ARG, BGD, FSM, IND, MHL, PLW, UGA, UKR (known path: ARG, BGD, FSM, IND, MHL, PLW, UKR);
  leaving: ISR, ITA, NZL (the minimum-span rule). Unit level: 7,036 v5a units have an identical design here, 2,858 changed (2,834 of them Brazil: the `BRA_INSS_BPC_F84`
  continuation sums 2022 and lengthens the series), 1,156 are new (1,042 Brazil, 48 Argentina DiNIEE, 25 Ukraine oblasts), 63 removed.
* **Against live preview update 4 strict** (K = 40, ratio 0.9810; 10,066 units / 83,965 stacks): 1,049 units here only (Brazil
  1,042, Colombia 7), 65 in the preview only (the span rule: ISR, NZL, TUN; also Brazil
  55, USA 5, Italy, Mexico). Every known-path country here was pooled in the preview. Against update 3 (K = 38): 1,074 here only, 64 preview only.
* **Span rule.** Series dropped from the primary run: 66 (163 stacks); from `nc`: 213; `nc_sens`: 84; `aut_match`: 57. Against the merge's
  `series_flags_v5c_r2` (36,237 series flagged over all years, 69 sources): the driver drops series of 8 sources, 7 of them also flagged by the merge; `ITA_ISTAT_PSYDEV_MACROAREA` is
  dropped because only its in-window span is below 4.
* **Declared primary parts with no eligible primary unit at the pin** (19 of the primary-role parts that are series of their own; reasons from `design/exclusions.parquet`): outranked in an overlap family or
  placed at another level of it (`RUS_FRC_ASD_MONITORING`, `TZA_BEST_PRIMARY_COUNCIL`, `TZA_BEST_PREPRIMARY_REGION_v2`, `CHL_DEIS_REM_A05_TEA_v2`, `USA_LIT_NEVISON2018`, `NZL_LIT_VU2024`, `USA_WY_WDE_DISTRICT_2000_2007`,
  `URY_INE_CENSO2023_TEA`, `CZE_UZIS_PSYCHIATRICKA_PECE_EXT`); cells that cannot be placed on cohorts, i.e. form-labelled or all-age stocks (`BWA_STATSBOTS_SECONDARY_SEN`, `EGY_CAPMAS_NGO_DISABILITY`,
  `MUS_DIGEST_SEN_IMPAIRMENT`, `PAN_IPHE_TGD_NATIONAL`, `TWN_MOHW_DISABILITY_AUTISM_COUNTY_EXT`, `MEX_EDOMEX_911_TEA`); the minimum span (`TUN_MOE_BS_AUTISM`, and the 2-3 cycles of `MEX_EDOMEX_911_TEA`, `MEX_SLP_ESPECIAL_TEA`);
  no stack for lack of an event in the register (`XKX_ASK_EDU30_SPECIAL_ED_ASD`, `WLD_IDEA_PARTB_TERRITORIES_AUTISM`). These parts therefore add no weight to the primary pool; they remain in the declared tables and in the
  sensitivity designs where they qualify.
* **Sweden.** 151 stacks in v5c, v5a and 5083; 20 differ from 5083 in product/event labels (item 7).

#### A2.6 Unchanged from RULE 9160 (restated, thresholds as they were)

* **Design.** RULE 9160 sections N, C, E, X, P, V and S, including the level rule per overlap family, U.S. sub-state tiers (U1-U6), the Norway pre-programme-zero fix, `no_isr_pcv`, `chl_no2025`, `nor_v4paths`,
  `us_no_sae`, `esp_grade_nat` and (switch on) `swap_pol_powiat`, plus the three declared sensitivities above; the declared control list routed by `NC_ROLES_v5c_r2` (`nc` = primary_nc, `nc_sens` =
  sensitivity_nc; the matrix-lane parts use the merge's documented fallback: hearing codes sensitivity_nc, all other same-table non-autism categories primary_nc); the matched autism side `aut_match`.
* **Pooling.** RE by country, tau = 0.33 (scaled), kernel envelope (linear / quadratic / spline w66), three intervals: RE, declared-allowance (RE plus 0.15^2), placebo-calibrated (placebo offsets 7-12, 9154 ML
  variance components). Headline: scaled | linear | w66 | all.
* **Gates, thresholds unchanged.** G1 planted per-child 1.25 and 1.5 recovered within 10% of ln r (scaled) with the real weights; placebo coverage: the RE-pooled placebo step covers 0 at 95% in at least 5 of 6
  offsets; the co-primary contrast's planted-effect gate (autism side only, within 10% in delta) and placebo-contrast coverage (at least 5 of 6); negative-control events U5; RULE 9158d ramp test. A failed gate
  is reported as failing; nothing is refitted to pass it.
* **Co-primary contrast variance.** As RULE 9160 N4: v(delta_c) = v_autism,c + v_control,c (independent sum). Codex's 5083 pool used the 4976 joint-covariance attachment for the same contrast; the 9160 code does
  not. The v5c fit as written uses the independent sum (stated; a covariance variant would be a further declared sensitivity).
* **Pre-programme zeros** are the merge's own rule (`PRE_PROGRAMME_ZERO_v5c_r2.csv`; where the regional rollout date is ambiguous the zero path stops before the earliest introduction that could apply).

#### A2.7 Reporting

* **v5a remains the reference result** (the Codex 5083 pool), as in A2 (d). v5c is reported BESIDE it, never in its place, as "v5c (declared amendment A2)".
* **Per-country weight table** (`pool/country_weights_v5c_vs_v5a.csv`, written by `--fit`): each country's random-effects weight share in v5a and in v5c, the change, the country ratio and its interval in each, stacks and
  units in each, whether the country entered or left the pool, plus `v5c_vs_v5a_headline.json`.
* **Also beside v5a:** the co-primary contrast and its gates, `nc_sens`, the sensitivities, the ramp test, the planted-effect and placebo diagnostics, and the list of parts that entered with units and stacks.
* **Figure.** `figs/9500_v5c_event_study_headline.{png,svg}` in 9159 house style, titled by a rule fixed here: "Rose" if the declared-allowance 95% interval lies entirely above 1, "Fell" if entirely below 1, otherwise
  "Did Not Rise".
* **Headline status** (RELEASE_PLAN_v4 section 6 switches the release headline to v5c "once it passes its gates"; A2 (d) keeps v5a as the reference): this entry does not change (d); which of the two governs the
  paper's headline is the coordinator's decision, to be made before the results are seen.

#### A2.8 Engineering and workload

* **Wrapper.** `9500` wraps `9160_summative_v5_run.py` / `9159_summative_v4_run.py` / the 9160 ramp module and runs their `profile_task`, `cmd_pool`, `cmd_contrast`, `cmd_chart` and ramp code unchanged; it changes only
  how data are read and held (batch-wise pyarrow reads with one Python object per distinct string, lean index dictionaries with identical content, early release of tables no later run reads, workers that read only their
  own units' cells) so that the process tree stays under 12 GB RSS. `--selftest-v5a` reproduces the v5a design tables byte for byte with these changes in (peak tree RSS 8.5 GB); the `--final` prepare peaked at
  10.9 GB (the report stage reads the 24.5-million-row jump-path table). At most 3 worker processes, runs in sequence, `python -I`, deterministic (pooling twice, compared; fixed partition and chunk order).
* **Workload.** 2,201,149 stack-config profile rows over all runs (primary 1,275,897, `nc` 391,914, `aut_match` 264,893, `nc_sens` 93,709, `short_incl`
  57,920, `sia_treated` 75,854, `xsec_paths` 21,572, the rest 19,390).
  Serial rate 9.72 ms per row from the v5a receipts (4977): 5.9 h serial; about 2.2 h with 3 workers if the scaling of 2.7 holds (not measured: no fit has been run). The v5a "27 minute"
  primary receipt reflects reuse of 9,762 of 9,957 units from the v4 cache; a fresh fit of the primary design is about 3.4 h serial.
* **Optional reuse (RULE 9160 V4, by hash)** from v5a can only help the primary run: at most 672,679 of its 1,275,897 rows belong to units with a design identical to v5a's (upper bound; cells must also hash identically).
  The `--reuse-bound` count of identical units stopped at the 12 GB cap on this design (its structure-only pass loads the whole cell table).

#### A2.9 Choices made by the driver author, for the coordinator to confirm before `--fit`

(Any change after this entry is a new dated entry; the manifest and pins above are for the design as written.)

1. Sweden 5077 source correction in v5c (item 7), on by default; the event-label differences against 5083 are the 20 stacks named there.
2. Co-primary contrast variance: independent sum (A2.6) versus the 4976 joint covariance used by Codex's 5083 pool.
3. Headline status of v5c versus v5a (A2.7).
4. Argentina's national broadcast (item 5).
5. The span window (item 8): the primary window of the eligible stacks (union), applied to every run including the controls; the merge's all-years flags are not used.
6. Item 11: the primary is exclusion from path construction because the design code has no contrast-only mode; `xsec_paths` counts the restored parts' measured keys; the comuna scope is all admin2 rows.
7. Codes for the parts of item 12 (the driver author's choice from part structure).
8. The Oregon 2008->09 method-break flag lives in `exposure_flags_v5c_r2`; the 9160 design does not read exposure flags, so the flag changes no fit unless a sensitivity is declared.
9. The AMENDMENTS_9159 P4 "most precise gated version" supplement was not produced by the v5a driver and is not part of `9500 --fit`.
10. Profile reuse from v5a: off unless the coordinator says otherwise (A2.8).

### A2.9 coordinator confirmations (2026-10-14, before `--fit`; no design change, so the manifest and pins stand)

1. The Sweden 5077 source correction stays on.
2. The co-primary contrast variance uses the independent sum, as A2.6 declares. The matched contrast already failed its planted gate in v5a and stays report-only unless it passes in v5c.
3. Headline: per the author's decision of 13 October, v5c becomes the headline if it passes its gates (planted-effect at ×1.25/×1.5 within 10%, placebo offsets, NC and ramp as declared). Otherwise v4 stays the headline and v5c is reported as a failed-gate update.
4. Argentina's national broadcast setup (item 5) and the span window (item 8, union of the primary windows) are confirmed.
5. Cross-section exclusion from path construction (item 11) is confirmed.
6. The codes for the item-12 parts are confirmed. All are autism-specific: BWA_SEC_ASD, TEA_enrolled, F84_PSYCH_AMB, EGY_NGO_ASD, MUS_SEN_ASD, PAN_IPHE_TGD, TWN_DISAB_AUTISM, ASD_dx, IDEA_B_AUT, XKX_EDU30_AUTISM.
7. Profile reuse from v5a stays OFF: every profile is fitted fresh.
8. Minimum-span consequences: the rule moves ISR (ISR_CBS_ASD_REGISTRY), ITA (ISTAT macro-area), NZL (DSS) and TUN into the declared `short_incl` sensitivity. It is kept as declared. One-snapshot cohort series confound age-specific diagnosis steps with cohort steps, so the rule is an identification rule. It was not revised after its country consequences became visible.

### A3 ADOPTED (2026-10-14, by the coordinator, before any v5c result was seen; the A2 fit is still running)

The text below is adopted verbatim from `work_v5c/event_corrections_check/A3_AMENDMENT_TEXT.md` (the independent verification is in `VERIFICATION.md` in that folder), with one addition.

**Addition to A3.5 item 1:** every `U2164:MEX_*_COVERAGE_COLLAPSE_2013` row that rests on WHO's antigen-wide 2013 administrative-method-change note gets the same treatment as HepB, RV and Hib: F = NULL, coverage_measurement_candidate. The driver enumerates them and lists them in the re-fit report. Other countries' COVERAGE_COLLAPSE rows are NOT changed (A3.5 item 4).

**Reporting:** three results are reported side by side: v5c as declared (A2, the original events; this is also the declared `ev_orig` sensitivity), v5c with A3 applied, and v5a (5083). Per the author's rule, the **headline is v5c with A3 applied** if it passes its gates. Codex's 5935 Chile first-stage claim was checked and not adopted (moot: those events never lead a stack).

#### A3.1 What is amended and on what evidence

Ten rows of `events_primary_v5c_r2` (3,905 rows, sha `4a5e1489…`) are replaced by exact `event_id` with the values in A3.2. Source: the Codex 5950 overlay (`56d8379c…`, owner intake `f4eaa381…`, feed `24e38255…`), re-checked against RIVM (LCI factsheet; news 7 Mar 2019), Public Health Ontario (IMD in Ontario 2024, p1), Resolución 124 exenta (BCN, 26 Jan 2022), the MINSAL SRP guideline p8 and FAQ, the ISP pneumococcal bulletin p5, the WHO/UNICEF Mexico profile (2022 revision), and the WHO JRF introduction table. Hashes: `SOURCES_MANIFEST.csv`. A3 changes no outcome, exposure or cell data.

#### A3.2 Exact corrections to apply

Common to all ten rows: keep the v5c_r2 columns; store the old row as JSON in a side table `events_typed_v5c_r3` (the 5950 overlay columns go there); `new_independent_K = 0`; q_pre, q_post and jump stay NULL; the old `expected_jump` is retained as a descriptive field and is not used as a first stage.

| event_id | `event_type` | `product` | `date` | `first_affected_cohort` (F) | other typed fields |
|---|---|---|---|---|---|
| U2164:NLD_MENACWY_WITHDRAWAL_2007 | reporting_transition_candidate | NULL | NULL | **NULL** | role REPORTING_PROVENANCE_NOT_TREATMENT. Provenance: MenC 2002-2018; MenACWY from 2018-05-01 (1 dose at 14 months, 1 at 14 years); adolescent catch-up births 2001-2005, invitations 2018-19 |
| U2164:CAN_MENACWY_ELIGIBILITY_EXPANDED_2004 | reporting_transition_candidate | NULL | NULL | **NULL** | role REPORTING_PROVENANCE_NOT_TREATMENT. Provenance (Ontario only): Men-C-C at about 1 year from 2005; Men-C-ACYW in grade 7 from 2009 |
| CHL_MMR_schedule_change_2022 | schedule_change | MMR | 2022-01-03 | **NULL** | dose 2; age 36 months; rule "turning 36 months on or after 2022-01-03 with one prior SRP dose"; derived reference birth date 2019-01-03 (not a boundary); replaces the first-grade second dose |
| CHL_PCV_schedule_change_2017_PCV13 | schedule_change | PCV | NULL | **NULL** | PCV10 to PCV13; Metropolitana early 2016 (2, 4, 6, 18 months); national 2017-11 (2, 4, 12 months) |
| U2164:MEX_HEPB_COVERAGE_COLLAPSE_2013 | coverage_measurement_candidate | HEPB | NULL | **NULL** | candidate_year 2013; WHO: administrative-method change in 2013 |
| U2164:MEX_HEPB_COVERAGE_COLLAPSE_2017 | shortage | HEPB | NULL | **NULL** | policy_date_start 2017-09, policy_date_end 2017-11; scope text "state, dose and cohort reach not stated by WHO" (do **not** use "limited") |
| U2164:MEX_ROTAVIRUS_ROTARIX_COVERAGE_COLLAPSE_2013 | coverage_measurement_candidate | RV | NULL | **NULL** | brand NULL; candidate_year 2013 |
| U2164:LTU_PCV13_INTRODUCTION_2014 | introduction | PCV (valency attribute PCV10) | 2014-10-01 | 2014 (partial cohort) | eligible births from 2014-08-01; doses 2, 4, 12-15 months. Flag: birth cutoff and valency not independently verified (A3.4) |
| U2164:LTU_ROTAVIRUS_ROTATEQ_INTRODUCTION_2018 | introduction | RV | 2018-09-01 | 2018 (partial) | brand NULL; eligible births from 2018-07-01; first dose at 2 months |
| U2164:LTU_MENACWY_INTRODUCTION_2018 | introduction | MENB | 2018-07-01 | 2018 (partial) | eligible births from 2018-05-01 (one press extract says 2018-05-02); doses 2, 4, 12-15 months |

#### A3.3 What is not applied

1. The word "limited" for MEX 2017: not in the WHO text, and the fall is survey-corroborated.
2. Codex's "superseded product" strings `PCV13`, `ROTATEQ`, `ROTARIX` as old values: the stored values are `PCV`, `RV`, `RV`.
3. The overlay's `HOLD_ALL_TEN` status as a design switch. The design code has no first-stage hold hook, and for Chile the hold changes nothing: the two Chile events are never the lead event, so p for all 4 Chilean primary stacks comes from `CHL_HEPA_eligibility_change_2018` and `CHL_HEPB_BIRTH_schedule_change_2019`. The status stays in the typed side table as information.
4. The 5935 and 5938 statement that Chile's first stage was first-dose MMR or generic PCV. Not adopted (VERIFICATION section 3, section 5 item 1).
5. The overlay `product` strings `PCV10` and `MENB` are not written to `events_primary`: `PCV10` has no exposure rows; use `PCV` plus a valency attribute.

#### A3.4 Items I could not verify, and their treatment

Default for UNVERIFIABLE items: keep the original design behaviour and add a sensitivity with Codex's version.

| Item | Why unverified | Treatment |
|---|---|---|
| LTU PCV 1 Aug 2014 birth cutoff and PCV10 valency | NVSC and SAM pages returned 403 to Python and WebFetch; one press article gives the cutoff | Applied as flagged typed fields. **Zero design effect**: the only LTU unit has 0 stacks in every run (7-18 age band; no fully-pre or mostly-post cohort positions for any F of 2013 or later) |
| LTU MenB 1 May vs 2 May cutoff; later schedule date; launch brands | blocked pages; secondary extracts only | As above |
| MenC at 14 months, 2002-2018 (NLD) | not stated in the pages I fetched | Typed provenance only; no design effect |
| MEX 2017 replacement cohort | needs Mexican schedule and HepB product reach | F stays NULL in the primary. **Optional declared sensitivity `mex_stockout_F2017`**: the 4 F2016 MEX stacks re-coded at F=2017 (my derivation from schedule ages 2, 4, 6 months in the 2164 field; not source-verified) |
| Hitos del PNI 2024 PDF (Chile 2017/2022 milestones) | 403 to me; reached only via the 1797 registry | Not needed for A3: the dates used come from Res. 124, the MINSAL guideline and the ISP bulletin, which I read |

The A2 fit now running, which uses the v5c_r2 event table, serves as the "original events" sensitivity (`ev_orig`). No extra fit is needed for it.

#### A3.5 Sibling rows handled with the amended rows (so the lead does not switch silently)

1. `U2164:MEX_HIB_COVERAGE_COLLAPSE_2013`: F = NULL, `coverage_measurement_candidate`. Reason: the same WHO sentence ("The method to obtain administrative coverage changed in 2013", Hib3 page 16). Otherwise it becomes the lead of the 4 F2012 MEX primary stacks, with a weaker p path (max abs 0.135 against HepB's 0.415).
2. `U2164:MEX_HEPA_ELIGIBILITY_RESTRICTED_2017`: row unchanged. Declared consequence: after A3 the 4 F2016 MEX primary stacks are led by it and have no p path (p-unknown), so they leave the scaled headline.
3. `U2164:NLD_MENACWY_INTRODUCTION_2002` (1 primary stack, lead): flagged only. RIVM says monovalent MenC was used in 2002-2018, so the MENACWY label is wrong. Decide separately; do not change in A3.
4. Not extended: the other 259 `COVERAGE_COLLAPSE` events (9,062 primary stacks led, 8,765 of them `BRA_MCV2_COVERAGE_COLLAPSE_2019`). The Mexico treatment rests on WHO's antigen-wide method-change note, which these rows lack.

#### A3.6 Design and re-fit consequences

Predicted from the saved tables; to be confirmed by re-running the design with the new events tag (`events_primary_v5c_r3`):

| | before | after A3 |
|---|---|---|
| Primary stacks | 95,311 | 95,248 (-59 CAN; -4 MEX F2012) |
| Primary units | 11,050 | 11,050 (no unit loses all stacks) |
| p-known primary stacks | 84,317 | 84,308 (-1 CAN Ontario; -4 MEX F2012 vanish; -4 MEX F2016 become p-unknown) |
| Chile primary stacks | 26 (units CHL_DEIS_F84, CHL_DEIS_REM_TEA) | 26; the 4 stacks with the MMR or PCV13 label lose one entry from `events`; F and p unchanged |
| NLD, LTU | no stacks use the events | unchanged |

- Other runs with changes: `nc`, `nc_sens`, `aut_match`, `level_promo` (CAN stacks vanish), and `short_incl`, `xsec_paths`, `nc`, `nc_sens`, `aut_match` (MEX; 70 `xsec_paths` MEX stack rows). Chile's 1,353 `xsec_paths` stack rows change in label only.
- Only 63 units change in stacks or lead (59 CAN + 4 MEX). Re-fit those; reuse the rest by hash (RULE 9160 V4). The 2 Chile units likely reuse their profiles.
- Report the A3 headline beside A2 (v5c as declared) and v5a, with the per-country weight changes for CAN, MEX and CHL. State that Chile's weight change is expected to be nil for p.

#### A3.7 Reporting language

- The 10 rows are described as "event-register corrections confirmed against official sources", not as new events. No corrected row adds an independent K.
- The Chile first-stage hold is reported as moot for the current stacks. State that Codex's 5935 trace attributed first stages to co-events, and that this was checked and not adopted.
- Brazil MCV2 2019 and Canada HepB 2013 are listed as unamended `COVERAGE_COLLAPSE` leaders (A3.5 item 4), for the coordinator's decision.


### A3 pins (pre-refit) (2026-10-14, appended by Claude before any A3 profile was fitted; no v5c result had been read when this entry was written)

This entry records the A3 inputs, design pins, code and reuse rule BEFORE the A3 refit, as A3.6 and the A3 ADOPTED reporting rule require. The A3 refit reads the A3 manifest and pins below, and its first stage (`check`, 9510 `check_pins_a3`) re-hashes every manifest file, the four design-frame pins and this file's pinned prefix, and stops if this entry is absent.

**1. Event tables (built by `9509_v5c_a3_events.py` from the unmodified factory `v5c_r2` files; the factory files are not touched).**

| file | sha256 |
|---|---|
| `events_primary_v5c_r3.parquet` (3,905 rows) | `5084fdead87d5f71b3ac4f11d50a3ec2c7a21dafed6f38661543f79766ac01bb` |
| `events_v5c_r3.parquet` (3,960 rows) | `3756904527439adf7bc6ab4ab14b11697e016e5416f58db7127f8984798c47c2` |
| `events_typed_v5c_r3.parquet` (side table: 10 overlay rows + the MEX Hib sibling, old row as JSON) | `d8af0600541bdc97cede16a98310337551fa2118de7ee6591dc57aebca0f3fce` |
| `A3_MEX_2013_ROWS.csv` | `2bf4853a32d70b47fc1407001582f83bc73ddb10b42821dc4b5e1cead1c15b0b` |

Inputs: `events_primary_v5c_r2` `4a5e1489ca65c0a5e0854ccd4edea9a8a94678133674560e17147c703f6b40e0`; `events_v5c_r2` `7b296704f0e3a7bc1e27243f331c411d7b11b54c46068448875bf6fcac28a80d`; overlay `56d8379caa38a00855d0669654bbef4dd7bc4ccd3329df99ab3da1121bb911da`; A3 amendment text `7b1df50ac0a0ae3313b9a9c59a3dcbcbeaaeceba1121584f06e2cda65941e2a5`. Eleven rows change (the ten of A3.2 plus the MEX Hib sibling of A3.5 item 1).

**MEX 2013 rows that rest on WHO's antigen-wide 2013 method-change note (the addition to A3.5 item 1), all set to F = NULL, `coverage_measurement_candidate`:**
`U2164:MEX_HEPB_COVERAGE_COLLAPSE_2013`, `U2164:MEX_HIB_COVERAGE_COLLAPSE_2013`, `U2164:MEX_ROTAVIRUS_ROTARIX_COVERAGE_COLLAPSE_2013`. These are the only `MEX_*_COVERAGE_COLLAPSE_2013` rows in either event table. The other MEX collapse rows (BCG 2019, MCV2 2019, HepB 2017 shortage) do not carry the method-change note and are unchanged except HepB 2017 (F = NULL per A3.2).

**2. A3 input manifest and design pins.**

| item | value |
|---|---|
| manifest `work_v5c_a3/RULE_9160_v5c_inputs.sha256` (= `_A3.sha256`; 72 files) | sha256 `d2416c645c3a13edc788c7fa7112bdaf6f9b1d075ab5407529413fd6e4117789` |
| design pins file `work_v5c_a3/design_pins_v5c.json` (= `design_pins_v5c_A3.json`) | sha256 `6d8a365246d66ca7f9af59e51b375f7c50eef1fe855652bfddbd730ffa598d53` |
| design frame `units` | `879bc76ec3d17aee3888310e4e825e51ceb97a64d53c7b167d32911de9155f79` |
| design frame `stacks` | `2c07b163b24440ef0e011b1eb9df739f708ff88331fdbc845b5451a050fca3bd` |
| design frame `placebo` | `c505f687ff0f7bcfe2d24405fc7eaff9ca3ce82c21b9877d95619f0121800ce3` |
| design frame `ppath` | `676031dc1db0dcf62cbe28267ab4c7c020a521a9354718f2a6440f9009f3c06a` |
| fit-chain sha256 (the 9150-9160 files in the manifest plus the declared fit configurations; the code key of the reuse rule) | `7ffc6ae84f8f946e29cfd16dcafd6e55dd746428115680c2bfb2c35695dccde4` |

The snapshot, the declared tables and the cell data of the A3 run are byte-for-byte the A2 inputs; only the two event tables differ (the 9507 diff compares the cell hashes of all 157,577 units and finds them identical).

**3. Code (sha256).**

| file | sha256 | role |
|---|---|---|
| `9500_summative_v5c_driver.py` | `364a35a59fccef9c09aa55f25a5c20e703b05eb56a67e76f2b015c4cef54b26d` | driver, unchanged since A2 |
| `9501_v5c_declarations.py` | `247dc9c2b14eab470f86dc5dde9677166dde38ee4f530bff1e1f6b243d37e44a` | declarations, unchanged since A2 |
| `9502_v5c_headline_chart.py` | `4295433cc6dad498c44574db33779016590244a3bc0ceaeda9849cdcab92de7d` | headline chart, unchanged since A2 |
| `9509_v5c_a3_events.py` | `85bb454aeb91d0719b98f22079d6ec2c188b41b70af30d2a33b732ae99d20b4c` | builds the r3 event tables |
| `9510_v5c_a3_driver.py` | `745b68796f151a2ee62495fb813537e5c8188b9959eea20fc8692d089949f1fa` | A3 wrapper: r3 events, A3 pins, exact-reuse profile stage |
| `9507_v5c_a3_design_diff.py` | `0fe68c891613a25bc676f4683acbfe9a2c8ec5368f71a537f8816c78dd423585` | design diff (read-only report; not a fit input) |
| `9508_v5c_reuse_index.py` | `34130082c41e8e5393b47b23a0344005080d65834b97627d8534d3f0157e307d` | reuse-key index and plan (read-only report) |
| `9511_v5c_unit_frame_fix.py` | `d190790a78dd6c4487f3ef2456a7a6847d348ad0ccb71dcd085a1f7d9f36aa03` | chl_no2025 reader repair (section 5) |
| `9512_v5c_a2_resume.py` | `799ba1b2246059efbccb7727ed117a31100feef6f59361369693b47cc0225a97` | A2 resume launcher (pinned driver + 9511) |
| `9513_v5c_a3_fit.py` | `6e48cc66c5d07e9fc5a7370914c2d6bda4e5d4eaa8e02ada9566c50f826e7df5` | A3 fit launcher (9510 + 9511) |

**4. Design effect of A3 (9507 diff, outcome-blind; `work_v5c_a3/A3_DIFF/`).** 349 of 157,577 units change in design (CAN 287, MEX 62; primary 63, nc_sens 96, level_promo 59, aut_match 52, nc 40, xsec_paths 35, short_incl 4). 1,779 stacks change (1,367 label-only changes of events and products; 348 removed; 62 change lead event, p path or p class; 2 change the clean flag). Primary stacks 95,311 to 95,248; primary units 11,050. Profile rows to refit 9,138 of 2,200,178 (0.4 percent); 2,191,040 are reused.

**5. Reuse rule (RULE 9160 V4, as declared in A3.6).** A profile row from the as-pinned A2 run (`work_v5c`) is reused in an A3 run if and only if all three keys are identical: (a) the unit design hash (`_fit_signatures`: cell signature, unit skey/run/offset/n_cells, each stack's F and ok flags, its p path, the placebo dates), (b) the cell hash (the streamed per-series hash of the raw snapshot rows, plus the flag tables) and (c) the code hash (the fit-chain sha256 above; the A2 and A3 manifests list identical 9150-9160 files, and `9510` refuses to reuse otherwise). `9510` also refuses to reuse unless every A2 run is sealed. Changed units are refit in every run; the pooling, the placebo and gate summaries, the chart bootstrap and the ramp are recomputed from the full A3 profile set (they depend on the global pooled step and are not reused). The reuse receipt is written to `work_v5c_a3/reuse_receipt_a3.json`.

**6. Repair of the `chl_no2025` fit reader (engineering defect; no estimator change; applies to A2 and A3).** The A2 fit stopped on 2026-10-14 at 10:12 CDT in run `chl_no2025` after sealing 19 runs. `profile_task` asserts that the cells the reader supplies equal the design's `n_cells`; for `CHL_DEIS_F84` the design has 72 cells and the reader supplied 75, because the design drops the Chile cells with year 2025 (`CHL_2025_PROVISIONAL`, RULE_9160 E) and the fit reader's `unit_frame` does not. The same stop occurred in the Codex v5a continuation and was repaired in `5003_finish_chile_and_matched_owner_profiles.py`. The repair (`9511`) removes the cells of country CHL with year >= 2025 for units of run `chl_no2025` only, at the point where the design applies the rule, and leaves every other run on the original path; with it both `chl_no2025` units meet their `n_cells` assertion (72 of 72 and 47 of 47) and `unit_frame` is byte-identical to the original on a primary run. No pinned file was edited; the A2 resume (`9512`, 2026-10-14 10:23 CDT) and the A3 refit (`9513`) both install the repair at import. The chain files 9150-9160 and the driver 9500 keep their pinned hashes.


### A3 pins addendum (pre-refit): the A2 fit is complete; second engineering repair; superseded launcher hashes (2026-10-14, appended by Claude before any A3 profile was fitted)

This addendum changes no event, design pin, manifest file, estimator, gate or declared rule. It replaces three code hashes of the entry "A3 pins (pre-refit)" above (section 3: `9511`, `9512`, `9513`) and records the second repair found when the A2 fit reached the pool stage on real data for the first time. The A2 profile fit had finished (every run sealed) when the defect was found, and the A2 pooled headline was read after the repair; the A3 inputs, pins and reuse rule above were fixed before that and are unchanged.

**Second repair (the short_incl composite).** At the first pool stage (2026-10-14 10:40 CDT) the driver 9500 `composite_v5c` stopped with `AttributeError: 'DataFrame' object has no attribute '_ofam'`: it selects the primary profile rows that the declared `short_incl` run replaces with `base._ofam.isin(set(add._ofam))`, but the profile frames returned by 9159 `load_profiles` carry no `_ofam` column (the outcome-family key `ofam` lives in `units.parquet`; `outcome_family` is the coarse label `autism`). The repair in `9511` (`install_composite`) applies the declared rule (A2: the primary design with the short series, for the families that have any) with the family taken from `units.parquet` by `unit_id`: primary profile rows whose unit's `ofam` is one of the `ofam` values of the `short_incl` units are dropped and the `short_incl` rows are appended; every other composite (including `level_promo`) stays on the 9500 path. No pinned file was edited. The pool stage was re-run from the sealed profiles (A2 resume: `--fit --from-stage pool`); the pooled outputs, determinism check (pooling twice identical) and gates of the A2 run are those of that re-run.

| file | sha256 (current; replaces the row of the same name in section 3) |
|---|---|
| `9511_v5c_unit_frame_fix.py` (repairs: chl_no2025 cell mask; short_incl composite; `install_all`) | `f2f0040658909af196fd19b147a776d43e589811826f74ae114974b9723610b3` |
| `9512_v5c_a2_resume.py` (A2 resume launcher; installs both repairs) | `19ed5af089c1b693400ca25b24160c01ad9f1f96a142053cc96288a224191e0c` |
| `9513_v5c_a3_fit.py` (A3 fit launcher; installs both repairs) | `a5d3ef14f353f0bdd51f0d3fd79708f8a7608c27576104f44bf8dcd675f16cb6` |

The `chl_no2025` profiles of the A2 run were fitted with the first repair only (the profile stage); the second repair acts only in the pool stage, so no A2 profile depends on it. The A2 output hashes are in `work_v5c/A2_OUTPUT_HASHES.sha256` (as pinned, pre-A3).

### A4 pre-declaration (2026-10-14 ~12:30 CDT, before any v5d input exists): v5d same-day update

- **Scope:** v5d = v5c with A3 applied, plus every new part posted with a passing test by **15:00 CDT** on 2026-10-14, from v5d staging lanes A (9640–9659) and B (9660–9679) and any earlier built-but-unmerged part. Parts posted after the cutoff wait for a later update.
- **Rules unchanged:**
  - RULE_9160 and all of A1–A3 apply unchanged: roles by lane declaration and the A2 conventions, minimum span ≥4 calendar years in window, strict level choice, cross-section coverage as contrast only, and `_EXT2` continuation of held parts with exact overlap agreement.
  - Gates are unchanged: G1 planted ×1.25/×1.5 within 10%, G2 placebo offsets, and ramp.
- **Fit:** only units whose design, cell or code hash differs from the v5c-A3 run are refitted; all other profiles are reused exactly (RULE 9160 V4). The v5d input manifest and design pins are appended here before the refit.
- **Headline:** v5d becomes the headline if it passes its gates; otherwise v5c-A3 stays the headline. v5c-A3, v5c-A2 and v5a are reported beside it.
- **Disclosure:** the v5c-A2 headline (0.972) had been seen when this entry was written. A4 changes no rule, only which data enter.

### Timeline note (2026-10-14 ~13:00 CDT), clarifying A3 adoption timing (answering an external review)

- **~08:01:** the independent verification of the Codex corrections finished, with the A2 fit at chunk 6 of 22 of the primary run.
- **Before 08:26:** the coordinator appended A3 ADOPTED (at 08:26 the A3 event build was already running).
- **~10:40:** A2 reached its pool stage. The fit agent read the first A2 pooled numbers then, after an engineering repair.
- **~11:26:** the coordinator first read the A2 results.

So A3 was adopted about two hours before any v5c pooled result existed. The A3 pins (pre-refit) entry was written later, after the A2 pool had been read; that entry states this.

The review-requested sensitivities added on 14 October (v5a countries only, no microstates, no single-stack countries, no coverage-collapse leaders, joint-covariance contrast, calibrated-interval coverage, attenuation-corrected point) are **post hoc**. Results files report them separately from the declared sensitivities, and they do not change the headline rule.


### A3 refit record (2026-10-14, appended by Claude after the A2 and A3 fits and the reporting files)

**Timeline of the entries above, from file times and logs (CDT), correcting the timeline note.** The "A3 pins (pre-refit)" entry was appended at about 10:27, while the A2 profile stage was still running (it ended 10:38:31; the A2 pool stage first ran 10:38:31 to 10:40:33 and stopped on the `_ofam` defect without writing results; the first A2 pooled outputs were written 10:44:41 to 10:50:21). No pooled v5c result existed when that entry was written, as it states. The "A3 pins addendum" was appended at about 11:12, after the A2 pooled headline (0.972) had been read in the fit log at 10:50; it states this. The A3 refit started at 11:19:28.

**A3 fit.** Run 1 (11:19 to 12:00): check stage (78 manifest files re-hashed, pins equal, both amendment entries on record), profile stage with exact reuse (9,138 of 2,200,178 profile rows refitted, 2,191,040 reused; 157,228 of 157,577 units identical), pool twice (identical), weights, chart, and the ramp up to placebo unit 4500 of 5184, where the process ended without an error message (no guard stop, no out-of-memory; the system logged ephemeral-port exhaustion at 12:10). Run 2 (12:14:42 to 12:35:46) resumed from the ramp stage and refitted the ramp from the sealed profiles, then drew the figure. The pooled outputs and the chart outputs are those written by run 1; the ramp and figure outputs are those of run 2. `FIT_LOG_v5c.json` of the A3 folder lists only run 2.

| item | A3 (headline version) | A2 as declared (`ev_orig`) |
|---|---|---|
| per-child RR (declared-allowance CI) | 0.973 (0.698 to 1.357) | 0.972 (0.697 to 1.354) |
| RE CI / calibrated sensitivity | 0.834 to 1.136 / 0.853 to 1.111 | 0.833 to 1.134 / 0.851 to 1.109 |
| countries / stacks / K_eff | 37 / 39,548 / 24.90 | 37 / 39,557 / 24.90 |
| G1 planted x1.25 and x1.5 (scaled) | -8.4% and -6.9%: pass | -8.3% and -6.8%: pass |
| G2 placebo offsets 7-12 (RE-pooled) | 6/6: pass | 6/6: pass |
| ramp | validated (slope -0.93% per cohort; planted +0.1%) | validated (slope -1.14%; planted +0.2%) |
| pooled twice identical | yes: pool `5915e0e03f6ec803af0bec727c5de0e2e30c5160517bd0d32813659ac13f7004`, contrast `72b2934af6152877899b016282196152360d7b8492dd2bdc616782937577b9d2` | yes: pool `4bdb367291f0d4e52cd9b73c481bf5ffc71ca6deb916f9715f3c03d74afac9e1`, contrast `2d68f08b7475bd95b72049746ca06a1c90f14ddf8792016b95022fabf06faad3` |

The headline gate rule passes for A3, so v5c with A3 applied is the headline (`release.headline_is_v5c = 1` in `qa/claude_release_v4/v5c_numbers.json`). The optional A3.4 sensitivity `mex_stockout_F2017` was not run. The A3 manifest lists 78 files (the A3 pins entry says 72: a miscount; its manifest sha256 is correct).

**Output hashes.** `work_v5c_a3/A3_OUTPUT_HASHES.sha256` (sha256 `5b82f2d3992ada4da4cfc100a4d8bea4ee2a8de94e21bee7368506afac350562`) and `work_v5c/A2_OUTPUT_HASHES.sha256` (sha256 `afe44fb1c02ae3601888284a5720d6f75c05ce62a36d21e0606fc045b736ac41`) list the pooled, chart-point, ramp, figure and reporting files of each version; `RESULTS_v5c.md` `aa0a81c8b9ad09dc802890836a9a3b4d42d1ed00c0fc77649f1bfaa9575fefaf`; `v5c_numbers.json` `06a7d8c69028ff1452dd0618eddaed9970a5dc0f56544e2111b7ff7eaa4d6915`; `posthoc_v5c.json` `049375ef6cc68d49abdd3650276b50f96d36714dd762b9b627cf442be0078583`.

**Post-fit reporting code (not fit inputs; sha256).** `9504_v5c_weight_chart.py` `7ca300a0b9cd04d5136938ac6e502a1532d2529ff56a64df72ac452572dc46be`; `9505_v5c_numbers.py` `9bd9beeedbb3bde678b1d627aa48d4e4953f471a117d5d57a9fce6bd4b467e69`; `9506_v5c_results.py` `b2b3f3acd4936df4a26a0577270289b7b7c515f05a36620e8eef80b27554a31e`; `9514_v5c_a3_headline_chart.py` `59d5a310d2c3689d8d839a759d036355e69b3085a6ef4897ee5b75b7d35bc175`; `9515_v5c_posthoc.py` `eb976ba7ffa3d7faf8f4464395178c41d473d4e02207eba8de24ab12a317c22c`. The pinned `9502` chart code was not edited: the public wording (title "No Detectable Change in Autism After Vaccine Schedule Changes", per-child relative risk and declared-allowance interval in the subtitle, three-line footer) is applied by `9514` around the unchanged `9502.main`, and the fit pipeline's own stage output keeps the 9502 wording.

**Reporting changes and post hoc sensitivities (2026-10-14; no estimator, rule, event or data change).** After the Kimi and Grok reviews the coordinator adopted the declared-allowance interval as the lead interval, the calibrated interval as a sensitivity with its caveats, the new chart title, and disclosures (a) to (j) (`work_v5c/review_20261014/REVIEW_RESPONSE_20261014.md`). The review-requested sensitivities (v5a countries only, no microstates, no single-stack countries, no coverage-collapse leaders, calibrated-interval coverage at the placebo offsets, the attenuation-corrected point estimate, and the joint-covariance contrast) are post hoc, computed at the pool stage only from the sealed profiles by `9515`, reported apart from the declared sensitivities. The joint-covariance contrast is not available on the v5c design: the 4969 mapping is pinned to the v5a design and covers 3,894 of the 7,685 jurisdiction keys of the v5c matched runs.

### A5 robustness battery for the per-child conversion (declared 2026-10-14, ~13:30 CDT, BEFORE any of these is computed)

The author kept the label 'per-child relative risk'. This battery tests the three things the label rests on:
- the uptake path p;
- the mixture model 1 + p(r − 1);
- the outcome definition.

Every test runs on the sealed v5c-A3 profiles (and later on v5d), at the pool stage or as stack-level meta-regression, with no refits unless stated. Every result is reported, whatever its direction. These are robustness checks, not new headline rules.

**P. Uptake-path quality.** Each test reports the per-child RR, the allowance interval and effective K.
- P1: measured-p stacks only (method = measured or measured_crosswalk) vs modeled-p stacks only.
- P2: excluding stacks whose jump rests on modeled pre-programme zeros.
- P3: excluding countries whose p is only a national broadcast (no subnational variation).
- P4: large-jump stacks only (post − pre p ≥ 0.30), where the conversion is least sensitive to p error.
- P5: analytic measurement-error band. If the true p = k × the p used, for k = 0.7, 0.85, 1.15 and 1.3, the per-child log-RR is rescaled about 1/k. Report the resulting RR range.

**M. Mixture model.**
- M1: dose-response meta-regression of stack-level raw log-steps on the stack's p jump (Δp), with a country random effect. Under the model the raw step ≈ ln(1 + Δp(r − 1)), so the intercept should be ≈ 0 and the slope gives r. Report the intercept (CI), the implied r, and whether a model with an intercept fits better.
- M2: tertiles of Δp. Report the per-child RR in each tertile. Under the model these should agree.
- M3: alternative link. Compare the per-child RR from the exact mixture inversion with the log-linear exp(β·p) approximation.

**O. Outcome and system.**
- O1: per-child RR by outcome system (school census, claims or outpatient, hospital, registry, benefits), with a heterogeneity test.
- O2: per-child RR by product of the lead event (PCV, MMR/MCV, rotavirus, HepB, Hib/penta, varicella, other), with a heterogeneity test.
- O3: drop Brazil; drop the United States; drop each of the top-5 weight countries in turn.

**G. Gate recovery by stratum.** Planted ×1.25 recovery within the P1 strata (measured vs modeled p) and the O1 strata, to show whether attenuation differs by exposure quality.

**Interpretation, fixed now.**
- The per-child label is supported if all of the following hold: the P1, P2, P3 and P4 estimates' allowance intervals overlap the headline's; the M1 intercept CI includes 0; the M2 tertile estimates agree (heterogeneity p > 0.05); and no single O3 exclusion moves the RR outside the headline's allowance interval.
- If any of these fails, the paper says so, and that failure goes into the limitations.


### A3 refit record, update (2026-10-14 about 13:05 CDT, appended by Claude): reporting-script changes after the record, and the re-hash

* `9504_v5c_weight_chart.py` was re-run on both folders after a version-label parameter was added for the v5d (A4) run. The A3 weight-chart SVG was re-rendered (only the SVG date metadata differs; the PNG and the values CSV are identical), so `work_v5c_a3/A3_OUTPUT_HASHES.sha256` was rebuilt: its sha256 is now `517041b9a836d1f80c4e6025cc63fda96519f62f61dce9d9859bafb7ea21cf45`, which supersedes `5b82f2d3...` quoted in the record above; every file it lists verifies. `work_v5c/A2_OUTPUT_HASHES.sha256` (`afe44fb1...`) is unchanged and verifies.
* The post-fit reporting scripts were generalised so that a v5d run can be reported beside v5c-A3, v5c-A2 and v5a (a `--a4` option in 9506, `hist.a3.*` keys and a dynamic version label in 9505, an A4 version in 9514). They change no A2 or A3 output: `RESULTS_v5c.md` (`aa0a81c8b9ad09dc802890836a9a3b4d42d1ed00c0fc77649f1bfaa9575fefaf`) and `v5c_numbers.json` (`06a7d8c69028ff1452dd0618eddaed9970a5dc0f56544e2111b7ff7eaa4d6915`) regenerate byte for byte (entries identical). Current sha256: `9504_v5c_weight_chart.py` `e65935fb5a9c4c93f61e707634603d53d9fb11289799a4040cf07ff23044573d`; `9505_v5c_numbers.py` `a571a8c714bcfb36012635ce2255bd0897624db1e22eccddf5d42c0a98af0998`; `9506_v5c_results.py` `91d2de8855310730b700f2100afe92fec6103c4933603ed5eecbea0fd61f7fac`; `9514_v5c_a3_headline_chart.py` `aa7ede9181712538b03a517973e6c987fe0c2e93809d0163cda9fe784b2cf69a`; `9515_v5c_posthoc.py` unchanged. These supersede the hashes of the same files in the record above.
* The v5d (A4) preparation scripts (9516 to 9519) are not inputs of any v5c fit; their hashes will be recorded in the "A4 pins (pre-refit)" entry.


### A3 refit record, update 2 (2026-10-14 about 13:25 CDT, appended by Claude): numbers-file defect for the hist.v4.* keys, fixed

**Defect (found by the staging agent).** `9505_v5c_numbers.py` re-read every base-ledger key whose source file lies in `work_v4` from the CURRENT fit, which included the ten historical keys `hist.v4.*` (rr, re_lo, re_hi, cal_lo, cal_hi, outer_lo, outer_hi, n_stacks, n_countries, K_eff). The numbers files written before this fix therefore showed the current headline (A3 0.973, A2 0.972) where the v4 release headline 0.965 belongs. This did not touch any pooled result, gate, chart or RESULTS file, only the release-ledger keys.

**Fix.** Every `hist.v4.*` and `hist.v5a.*` key is now copied verbatim from the base release numbers (`qa/claude_release_v4/v4_numbers.json`: the v4 RULE_9159 release values and the 5083 SUMMARY values) and is never re-read from a fit folder; only current-version keys (release, a2, a3, hist.a2, hist.a3, nc_coprimary, sens, headline and the like) come from the fit. The writer now asserts that every historical key equals the base value and that `hist.v4.rr` equals 0.965 (the v4 file value 0.9650212401080678), and fails the write otherwise. `hist.v5a.*` were already verbatim (their source is the 5083 SUMMARY).

**Keys that changed (value before to value after), identical for the A3 release file and the A2 file:** `hist.v4.rr` 0.9733 (A2: 0.9717) to 0.9650; `re_lo` 0.8342 to 0.8100; `re_hi` 1.1356 to 1.1497; `cal_lo` 0.8530 to 0.8116; `cal_hi` 1.1106 to 1.1475; `outer_lo` 0.6984 to 0.6854; `outer_hi` 1.3566 to 1.3588; `n_stacks` 39,548 (A2: 39,557) to 35,235; `n_countries` 37 to 27; `K_eff` 24.90 to 18.76. The old A2 numbers file also carried a wrong `release.headline_version_label` ("v5c with A3 applied"); the fixed A2 file says "v5c as declared (A2)". No other key changed.

**Files.** `qa/claude_release_v4/v5c_numbers.json` (A3, headline version) was rewritten: sha256 `59ffc9f1aa1868ad2f02e209fd65cdf216f2056f1b71b0f91973026a987e8c54` (the file it replaces, `06a7d8c6...`, is kept as `work_v5c_a3/v5c_numbers_before_hist_fix.json`). The A2 file was regenerated under a new name and the old one kept: `work_v5c/v5c_numbers_A2_as_declared_fixed.json` sha256 `f0ae3efc7883f8b8f433f65515d7811a3cbcfcdb0b1b1d709c0d1267a292530c` (old `v5c_numbers_A2_as_declared.json` unchanged, listed in `A2_OUTPUT_HASHES.sha256`; the fixed file's hash is in `work_v5c/A2_NUMBERS_FIXED.sha256`). `work_v5c_a3/A3_OUTPUT_HASHES.sha256` was rebuilt: sha256 `62ddd1a90f226152f9d63efe646c5cb2403d4373b06613042c94ce18b766bb75`, which supersedes `517041b9...` and `5b82f2d3...`. `9505_v5c_numbers.py` sha256 `7996d5874d8b5eae00dc75e6435689373da75f635f29de1a7501c0b864888b75` supersedes `a571a8c7...`. `RESULTS_v5c.md` is unchanged. The key-completeness check against the release templates still passes (no missing key).


### A3 refit record, update 3 (2026-10-14 about 13:40 CDT, appended by Claude): headline chart whiskers, numbers file location, and the final hashes

* **Chart (coordinator, 2026-10-14).** The headline chart drawn by `9514_v5c_a3_headline_chart.py` now draws, at each event time, the declared-allowance 95% interval as the whiskers (exp(est +- 1.96 sqrt(var_re + 0.15^2)), the same definition as the headline's allowance interval) and keeps the thick bars sampling-only; the footer note reads "Note: Random-effects by country; whiskers are 95% intervals including a declared shared-bias allowance; bars are sampling-only." The pinned 9502 whiskers (placebo-calibrated) are no longer drawn in the public charts; the values CSVs carry both. No estimate changed. The y-axis (0.6 to 1.62) holds the wider whiskers (0.70 to 1.41) without clipping. `9514_v5c_a3_headline_chart.py` sha256 `dbaefc783826562f1f2967f87b0bf703fd73eea429691c2e725c86ddc6ec561e` supersedes `aa7ede91...`.
* **Numbers file.** The corrected A3 numbers file (update 2) is at `work_v5c_a3/v5c_numbers.json` and, byte for byte, at `qa/claude_release_v4/v5c_numbers.json`: sha256 `59ffc9f1aa1868ad2f02e209fd65cdf216f2056f1b71b0f91973026a987e8c54`. The release merge (`9321_merge_release_numbers.py`) reads the first path.
* **Final hashes.** `work_v5c_a3/A3_OUTPUT_HASHES.sha256` sha256 `074b7c88073b495df6058632b3ce2e49dc0db0d44f00ef9c39ad1395f40282c8` and `work_v5c/A2_OUTPUT_HASHES.sha256` sha256 `ccdf80d0bc306a7ec7333cc75cab6ade1a8971555239597558d4c1708f2728c9` (both verify; they list the A3 headline chart `9514_v5c_event_study_headline_A3.png` `8677ca41547fcdc4ce97b25a9b8dcc3565a137dd368fa6c9cbc2c7beb3dc53d3` and the fixed A2 numbers file); these supersede the manifest hashes quoted in the entries above.
* **Correction to update 2.** The statement there that the key-completeness check against the release templates "still passes" held for the templates as they stood when the file was written. The templates were revised afterwards (keys `disc.*`, `v4.*` and `a5.*`); the `disc.*`, `v4.*`, `hist.a2.*` and `sens.short_incl.*` keys are produced by the release merge `9321` from this file, the base ledger and the A2 file, and the `a5.*` keys belong to the A5 battery, so they are not expected in the numbers file.

### Timeline note correction (2026-10-14 ~13:30 CDT)

The earlier timeline note said the 'A3 pins (pre-refit)' entry was written after the A2 pool had been read. That is wrong:
- The pins entry was appended at **about 10:27 CDT**, before any pooled v5c result existed.
- The **A3 pins addendum** (about 11:12) is the one written after the A2 pooled headline had been read. It changed only engineering code hashes.

A3 adoption (before 08:26) and the A3 pins both preceded every v5c pooled result.

### A6 maximal-inclusion sensitivity (declared 2026-10-14 ~14:00 CDT, before computation; author request)

A supplement-only sensitivity, `max_incl`, run on the v5d inputs. It includes every held series the design can place on birth cohorts. It drops these restrictions:

- (i) the minimum-span rule: series with 2–3 calendar years enter;
- (ii) cross-section coverage as contrast only: survey coverage replaces paths;
- (iii) strict level choice: the measured-level promotion applies;
- (iv) sensitivity-only roles for outcome parts that are NOT duplicates of a primary part, meaning not the same register, children or rows. Literature digitisations, derived counts (USA_KS) and different-definition series (POL_SEJM, MEX_DGIS_SECTORIAL, PER_GRSM_HIS) enter with a source fixed effect.

What stays in place:
- duplicates of a primary source stay out;
- parts without any age, grade or cohort dimension cannot be placed by the design, so they are listed but cannot enter;
- planted-effect, placebo and ramp diagnostics are reported for `max_incl`, but it has no headline role whatever they show.

The fit refits only the units that are new or changed relative to v5d and reuses the rest exactly. It reports the estimate, the RE CI (the headline interval type), the calibrated and allowance sensitivities, K_eff, countries, stacks, and per-country weights beside v5d.


### A3 refit record, update 4 (2026-10-14 about 13:32 CDT, appended by Claude): the random-effects interval leads; tipping points

**Author decision (relayed by the coordinator, 2026-10-14).** The RANDOM-EFFECTS interval (declared between-country SD tau 0.33) leads, paired with a tipping-point statement; the declared-allowance interval (RE plus shared SD 0.15) and the placebo-calibrated interval are labelled sensitivities. This supersedes the allowance-first reporting decision of the earlier update entries. No estimator, rule, event or data change; no estimate changed.

**Headline (v5c with A3 applied):** per-child RR 0.973, random-effects 95% CI 0.834 to 1.136 (sensitivities: declared-allowance 0.698 to 1.357; placebo-calibrated 0.853 to 1.111); 37 countries (27 with weight above 1%), 39,548 stacks, K_eff 24.9.

**Tipping points** (closed form from the headline row: est = -0.02700, RE variance 0.006190; shared-bias SD s on the log scale with variance var_re + s^2): the 95% upper limit reaches 1.25 at s = 0.1005 and 1.50 at s = 0.2062; the 95% lower limit reaches 0.80 at s = 0.0618. Reference values: the upper end of the placebo-step shared-SD profile CI is 0.075 (95% limits 0.787 to 1.204 at that value); the ramp model estimates a shared SD of 0.19 (profile CI 0.085 to 0.415; limits 0.650 to 1.456 at the estimate); the A2 ramp gives 0.185 (0.08 to 0.41). So the placebo-step upper limit lies below the +25% tipping point and above the 0.80 tipping point, and the ramp-model estimate lies above the +25% tipping point and below the +50% one. For the A2 run the tipping points are 0.1016, 0.2071 and 0.0603.

**Files and hashes.** Chart: whiskers are the random-effects 95% CIs at each event time, bars sampling-only; subtitle "Pooled per-child relative risk 0.973 (95% CI 0.834-1.136)" and "37 countries (27 with weight above 1%); effective number of countries 24.9"; footer note "Random-effects by country (between-country SD 0.33); whiskers are 95% CIs; bars are sampling-only" (`figs/9514_v5c_event_study_headline_A3.png` `75480c448a29547445eb1bbf69e671050a72b7baf57798968f06ddb97a5c62df`). `RESULTS_v5c.md` `51229b214830d5a95bb42e9f9bbf9aa1b43869a07fdc9e248dd59a25f95032ca` leads with the RE interval, puts the tipping-point paragraph right after the headline and lists the allowance and calibrated intervals as labelled sensitivities. `v5c_numbers.json` (at `work_v5c_a3/` and, identical, at `qa/claude_release_v4/`) `6c9159db36efa655c326e16b226ada58e7882815e973f150a0af01c4f3b2eacf` adds `headline_interval_type` = "random_effects", `headline.lo` / `headline.hi` = the RE interval, `headline.re_hi_pct` / `re_lo_pct` and `tip.*` (`sd_upper_125`, `sd_upper_150`, `sd_lower_080`, `placebo_shared_upper`, `ramp_shared_sd`, `ramp_shared_lo`, `ramp_shared_hi` and the limits at the reference values); the hist fix and its assertion are kept. `pool/tipping_points_v5c.json` `3adaeb08d9ab65967c286c769f76f7d3bdd7f26384860264bc051c663077a89e`. Fixed A2 numbers file `f5395d69de367275f7c2a592bd5fd8870049a5ade64a90b544f21ab8a2d5110c`. Manifests: `A3_OUTPUT_HASHES.sha256` `a6ccc3d5b49e0c9f4a5d7a13c17c8234e091b5eb19e043ebe84e0f22ef90cf4a` and `A2_OUTPUT_HASHES.sha256` `deabf2267ac63bafc06aba7465e1c3bb581912fe4c73c8a879487ae0b3428fb6` (both verify; they supersede the earlier manifest hashes). Reporting scripts: `9505_v5c_numbers.py` `a45948459d2d349425f69d6e21332ef25340706e67b7c5fe25af8691aeaae02d`; `9506_v5c_results.py` `06adee58389df0f9c0c16e34c65dc0f7d73412ae2096b7de4c08058debefe5fd`; `9514_v5c_a3_headline_chart.py` `b7e8e19387e4f3ec6f838c45018721b6833ca1fc249f46b12250a7afae639f26`; `9515_v5c_posthoc.py` `9a4c9d8a5c45c691c305cba5680e55c576c95b4de81af95cde85085983bf0d2d`.

### A3 refit record, update 5 (2026-10-14 about 14:25 CDT, appended by Claude): release-lane figures, co-primary contrast chart points, max_incl alias keys, v5d/A6 driver state

No estimator, rule, event, data or interval change; no estimate changed. This entry records files added or edited after update 4.

**Co-primary contrast chart points (post hoc, reporting only).** `9515_v5c_posthoc.py --root work_v5c_a3 --contrast-chart` re-runs the 9159 chart passes (same chart rows and Panel-B estimating equations as the headline chart) on the matched autism run (`aut_match`) and the control run (`nc`), forms per country and event time the matched autism step minus the matched control step (variances add), and pools across countries by random effects (declared tau 0.33). Output `chart/contrast_points_v5c.csv` (`87552bc70185d6295f6db5d53d99080512537e60ac104762af9fdd0417334017`), with the chart rows `chart/chart_rows_v5c_am.parquet` and `chart/chart_rows_v5c_ncm.parquet`. The pooled contrast it reproduces is the one in `pool/contrast_v5.json`: matched difference 0.912, RE 95% CI 0.758 to 1.098 (24 countries, K_eff 16.9). A joint-covariance contrast is NOT available: the 4969 jurisdiction mapping pinned to v5a covers 3,894 of the 7,685 v5c matched-run jurisdiction keys. The contrast chart's whiskers are therefore the sum-of-variances RE intervals, the same type as the pooled contrast.

**Release-lane figures (byline copy for Substack in `figs_release/`, byline-free journal and supplement copies in `figs_release/nobyline/`; PNG at 300 dpi and SVG; whiskers RE 95% CIs, bars sampling-only; script `9514_v5c_a3_headline_chart.py --root work_v5c_a3 --extra-figs --a2-root work_v5c`):** Figure 15 `9160_coprimary_contrast_event_study`; journal Figure 14 replacement `9160_planted_effect_A3` (recovers about 92% of the planted log-step: x1.25 91.6%, x1.5 93.1%); Supplement S116 `9160_supp_country_weights_A3`; S117 `9160_supp_sensitivities_A3`; S118 `9160_trend_robustness_A3`. S119 (the gated most precise version) is NOT replaced: the gated ranking is not part of the declared v5c fit (A2.9 item 9), so the v4 chart stays. Mapping: `figs_release/FIGURE_MAP_A3.json` and, in the release folder, `qa/claude_release_v4/figure_map_v5c_a3_entries.json` (`69f02b5e924e825b15f4e7e1ef2bdbbc74f2dcd775c917ff4b54815768cddf0b`); the staged template `figure_map.json` was not edited.

**Numbers file.** `9505_v5c_numbers.py` (`12656eff4b847b1edf3b058acff1f0c9e1ecd5204ad9452d40f04b1a002c9ea6`) now also emits `max_incl.outer_lo` and `max_incl.outer_hi` (aliases of `max_incl.allowance_lo/hi`; the S79 template needs them) when `pool/max_incl_v5c.json` exists. The A3 root has no max_incl fit, so `v5c_numbers.json` is unchanged (`6c9159db36efa655c326e16b226ada58e7882815e973f150a0af01c4f3b2eacf`, both copies). `hist.a3.*` keys are emitted when `--a3-root work_v5c_a3` is passed (the v5d run).

**Script hashes now.** `9514_v5c_a3_headline_chart.py` `996096929f881c407ccbeceede1cecfa5b8b6a22fe4d100176155e077fbbe06a`; `9515_v5c_posthoc.py` `f062ea1d6bc24a6120392c7c867ff83b7f7064918224ff2e2449fdcfaf67024b`; `9506_v5c_results.py` `b15c921055223b26d1d7dfc6502a170c0963cd55cc8722fc59d7a85b421762e4`; `9504_v5c_weight_chart.py` `e65935fb5a9c4c93f61e707634603d53d9fb11289799a4040cf07ff23044573d`; `9511_v5c_unit_frame_fix.py` `f2f0040658909af196fd19b147a776d43e589811826f74ae114974b9723610b3` (unchanged). v5d/A6 driver (not yet used on real v5d inputs; to be pinned in 'A4 pins (pre-refit)'): `9516_v5d_a4_driver.py` `b4ea1d3e9dffa50d90dce94f221ba5705ca128121bcde90c8fb23d51f3e6b82f`; `9517_v5d_events.py` `fc8eb6a391c8d5ac4e648a49d1e30406fdcb441e4bbc9bc44738b09de0dfd6d1`; `9518_v5d_declarations.py` `e183f179d6c0b54a406d585a45c08d229c40f65bcf3ce91433f4a47290587236`; `9519_v5d_fit.py` `c136ecc8d17ac828bf0190fe74ca1258e3212fe9a3a49ea293f7c05afd3b67aa`. The self-tests of the v5d pipeline on the v5c_r2 inputs are still running at the time of writing (folders `work_v5c_v5d_selftest`, `work_v5c_v5d_selftest2`; scratch, not deliverables).

**Re-hash.** `work_v5c_a3/A3_OUTPUT_HASHES.sha256` was extended to 80 files (adds the contrast points, the two chart-row tables and every file in `figs_release/` and `figs_release/nobyline/`); every earlier line still verifies (`sha256sum -c`). Hash of the hash file: `abf225dc5b5c4992105ad5e8b66fcade204c8473b7de5cfc7e2986d3d4052f5d`.

### A4 pins (pre-refit) (2026-10-14 about 21:05 CDT, appended by Claude before any v5d profile was fitted; no v5d result exists)

This entry records the v5d inputs, design pins, code and reuse result BEFORE the v5d refit, as the A4 pre-declaration requires. The v5d fit (`9519_v5d_fit.py --fit`, which runs `9516` and the 9500 pipeline) first re-hashes every manifest file and the four design-frame pins, checks that the pinned prefix of this file is unchanged (first 93,448 bytes, sha256 `567868a05d505fde7d14380ac1fc4dd94da95c6bfcf7c8c6c476c7fd2ff9aab2`), and stops if this entry is absent. It changes no rule, gate, estimator or role.

**1. Input set.** The factory v5d input set (`qa/claude_factory_20261008/data/*_v5d.*`; CLAIMS row "Factory v5d input set", built 15:13 CDT, within the 15:00 lane-test cutoff of the A4 pre-declaration). `cells_primary_v5d` `f7e0233468420631edcd380b52c7719c4920e1f6fd9253a87c08c377625ed4e9` (12,082,858 cells, 734 more than v5c_r2); `exposure_preferred_v5d` `5f9ed2d71c82eb0d25a11a22ae54c5378e09e7d5660d7854737ba25b0ce15892`; the other factory hashes are in that CLAIMS row. The declared tables written by `9518` from those files are in `work_v5c_v5d/declared/` and are listed with their hashes in the manifest. **New primary-role outcome cells:** `HKG_DH_CAS_NEW_DIAGNOSES` and `NZL_NZHS_ASD_CHILDREN` (candidate primary, breaks flagged), plus `ISR_NII_AUTISM_BY_BIRTH_YEAR` (placebo only, cohorts 1985–1995). Two single cross-sections were added as contrasts (path_eligible False, A2 rule). There are no new age-band maps, grade offsets, national broadcasts or declared exclusions. The other new parts enter as sensitivity, descriptive or continuation rows under the lane declarations in that CLAIMS row; the 29 sensitivity-role parts of A6 enter only the `max_incl` design.

**2. Event tables (9517).** These are byte-identical to the A3 r3 tables: no new part adds an event. `events_primary_v5d_a4.parquet` `5084fdead87d5f71b3ac4f11d50a3ec2c7a21dafed6f38661543f79766ac01bb` (3,905 rows); `events_v5d_a4.parquet` `3756904527439adf7bc6ab4ab14b11697e016e5416f58db7127f8984798c47c2` (3,960 rows); `A4_NEW_EVENTS.csv` `7eb70257593da06f682a3ddda54a9d260d4fc514f645237f5ca74b08f8da61a6`; build record `A4_EVENTS_BUILD.json` `cde045febf9d2b5371af8277d872da36eada3bf546a46dacac148323c6aa129b`.

**3. Manifest and design pins.**

| item | value |
|---|---|
| manifest `work_v5c_v5d/RULE_9160_v5c_inputs.sha256` (= `_A4.sha256`; 78 files plus header) | sha256 `01e6c2f3bd3c90dce5c5da61d213576e0665e05f084bea1dad98fe18e94b435b` |
| design pins file `work_v5c_v5d/design_pins_v5c.json` (= `design_pins_v5c_A4.json`) | sha256 `90a64adfd5be5b01135f4dbc7cc48875d4f056bcd5194e7b22cf60052f9bfb41` |
| design frame `units` | `8eab371a0d2d1715ff376918b594e7b631a8a941426c9f4053bcc147b9f1a168` |
| design frame `stacks` | `4fa17ba758caa2ac325ea57fc6819ae59c5f9be815b5d24becda28a06f7fa66a` |
| design frame `placebo` | `727d6bc97844514319946370c5dc55e72e3b472df3bb70f93b39223bb08b05b1` |
| design frame `ppath` | `63566bb76b97dedf20319d0f1041e2125da08746d16245c537f2fee5b158dfbf` |
| fit-chain sha256 (the code key of the reuse rule; identical to the A3 run) | `7ffc6ae84f8f946e29cfd16dcafd6e55dd746428115680c2bfb2c35695dccde4` |

`--final` ran from 15:39 to 17:03 CDT, with a peak tree RSS of 10.5 GB (log `work_v5c_v5d/logs/final_run1.log`).

**4. Code (sha256; all in the manifest).**

| file | sha256 | note |
|---|---|---|
| `9500_summative_v5c_driver.py` | `364a35a59fccef9c09aa55f25a5c20e703b05eb56a67e76f2b015c4cef54b26d` | unchanged since A2 |
| `9501_v5c_declarations.py` | `247dc9c2b14eab470f86dc5dde9677166dde38ee4f530bff1e1f6b243d37e44a` | unchanged since A2 |
| `9502_v5c_headline_chart.py` | `4295433cc6dad498c44574db33779016590244a3bc0ceaeda9849cdcab92de7d` | unchanged since A2 |
| `9509_v5c_a3_events.py` | `85bb454aeb91d0719b98f22079d6ec2c188b41b70af30d2a33b732ae99d20b4c` | unchanged since A3 |
| `9510_v5c_a3_driver.py` | `745b68796f151a2ee62495fb813537e5c8188b9959eea20fc8692d089949f1fa` | unchanged since A3 |
| `9511_v5c_unit_frame_fix.py` | `f2f0040658909af196fd19b147a776d43e589811826f74ae114974b9723610b3` | unchanged since the A3 addendum |
| `9516_v5d_a4_driver.py` | `b4ea1d3e9dffa50d90dce94f221ba5705ca128121bcde90c8fb23d51f3e6b82f` | as recorded in A3 update 5 |
| `9517_v5d_events.py` | `fc8eb6a391c8d5ac4e648a49d1e30406fdcb441e4bbc9bc44738b09de0dfd6d1` | as recorded in A3 update 5 |
| `9518_v5d_declarations.py` | `293d34091c5fd373ac9392655ef37381b2e3db5dd51cdb3a1cdb96f341ba0f65` | **replaces** `e183f179…` of A3 update 5; last edited 15:38:59 CDT, before `--final` started at 15:39:55 and before any v5d design existed. This is the version that wrote the declared tables. |
| `9519_v5d_fit.py` | `c136ecc8d17ac828bf0190fe74ca1258e3212fe9a3a49ea293f7c05afd3b67aa` | as recorded in A3 update 5 |
| `9507_v5c_a3_design_diff.py` | `0fe68c891613a25bc676f4683acbfe9a2c8ec5368f71a537f8816c78dd423585` | read-only report |
| `9508_v5c_reuse_index.py` | `34130082c41e8e5393b47b23a0344005080d65834b97627d8534d3f0157e307d` | read-only report |

**5. Design effect and reuse (9507, outcome-blind; `work_v5c_v5d/A4_DIFF/`, summary sha256 `1beaed0932a9a81ccdd69e21910f5fbd63c4f7acbd852037e7f595029408aaf6`).**
- **Units.** 156,686 have changed cells, 32,133 are new and 891 have a changed design.
- **Stacks.** 114,389 change: 111,366 new (mostly `max_incl`) and the rest jump-path, p-path or clean-flag changes. 644 events are involved.
- **Primary run.** 11,052 units, 95,257 stacks and 1,275,702 profile rows.
- **Reuse.** None: 0 of 2,200,705 profile rows can be reused, so the 9508 plan is moot. Every unit's cell hash differs from A3 because the reuse rule hashes the cell-flag table into every unit's cell key (9508: "the cell-flag and SIA-blank tables (what classification reads)"), and `cell_flags_v5d` differs from the A3 table because new parts were added.
- **Consequence.** The rule as declared therefore requires a full refit. No unit is reused on the strength of a narrower key. Estimated time: 5.94 serial hours, about 2.2 hours with 3 workers.

**6. Fit.**
- **Command:** `python -I -X utf8 9519_v5d_fit.py --fit --workers 3 --tag v5d`.
- **Engineering limits:** 3 workers is the driver's cap; the 12 GB tree-RSS guard applies; BelowNormal priority.
- **Stages:** profiles, pool (run twice and compared), weights, chart, ramp, figure.
- **Afterwards:** the A6 `max_incl` stage (`9519 --max-incl-fit`; `9515 --max-incl-ramp`; `9515 --max-incl`), then the A5 battery (`9710 --root work_v5c_v5d`), then the reporting scripts (9504, 9514, 9515 `--tipping-only`, 9505, 9506 `--a4`).
- **Headline rule:** v5d becomes the headline only if it passes G1, G2 and the ramp. Otherwise v5c-A3 stays the headline. v5c-A3, v5c-A2 and v5a are reported beside v5d.

### A4 pins addendum: worker count (2026-10-14 about 21:45 CDT, appended by Claude; no v5d profile is sealed and no v5d result exists)

This addendum is engineering only. It changes no input, design pin, manifest file, event, estimator, gate or rule.
- **First launch stopped.** The first launch (`9519 --fit --workers 3`, log `work_v5c_v5d/logs/fit_run1.log`) passed the check stage. Its reuse step found 0 identical units of 189,710 design rows, as recorded in section 5 above. It was then stopped during primary chunk 1 of 22: no chunk or run had been sealed and nothing had been pooled.
- **Why.** The three fit workers were each using 100% of a core while the main process was idle. The fit is compute-bound, and 29 of the 32 logical cores were unused because of the cap of 3 workers in 9500 `cmd_fit`.
- **Relaunch.** `python -I -X utf8 9520_v5d_fit_fast.py --fit --workers 14 --tag v5d` with `V5D_NO_REUSE=1` (log `fit_run2.log`). `9520_v5d_fit_fast.py` sha256 `39a2c580666c418b64f14e6ee8613ab02c3761f21e1ec0b581a0cedc3bc53368`.
  - 9520 loads 9519 unchanged, so the 9516 declarations and the 9511 repairs are the same.
  - It replaces 9500 `cmd_fit` with a verbatim copy that differs only in two places: the profile stage receives `--workers` instead of `min(workers, 3)`, and the tree-RSS guard is 24 GB instead of 12 GB (a worker holds about 0.5 GB). The chart and ramp stages keep the cap of 3.
- **Why the profiles are unchanged.** Within each checkpoint chunk (CHUNK_ROWS unchanged), 9500 `run_partitioned` splits the tasks by a fixed greedy partition, runs `profile_task` (a pure function of one task) and reassembles the results in task order. The profiles therefore do not depend on the worker count.
- **Pins.** No pinned file is edited, and the check stage re-hashes the manifest as before.
- **Reuse.** `V5D_NO_REUSE` (an option of the pinned 9516) skips only the nine-minute reuse hash, whose result (0 reusable rows) is already on record. The fit is the full refit that the reuse rule requires.

### A7 pre-declaration (2026-10-14 about 21:45 CDT, before any v5d result exists): v5e same-day update ("every obtainable source")

Written at the author's request for a complete result, before any v5d profile was sealed. The v5c-A2 (0.972) and v5c-A3 (0.973) results had been seen; no v5d or v5e result had been.

- **Scope.** v5e = the v5d input set plus every factory part built after the A4 cutoff (Claude v5e staging, the Codex GPT build round of 14 October evening, and any Codex part in factory format) that has a FULL (non-quick, two-run determinism) PASS of its v5e test (`9799`, `9839`, `9859`, `9879`, `9899`, `9924`, `9949` or `9999`) written by the **v5e cutoff, 2026-10-15 02:00 CDT**.
  - Parts that pass later wait for a later update.
  - Rows that exist only outside the factory format (for example a table not written by `Adapter.write`) do not enter.
- **Roles (declared from registry text and part structure, never from counts).**
  - A continuation (`_EXT`/`_EXT2`/`_EXT3`) of a held part takes the held part's role, provided its overlap check recorded exact agreement.
  - Exposure parts follow the A2 coverage conventions: measured coverage with ≥4 birth cohorts per panel can be a path, and single cross-sections are contrasts only.
  - A new outcome source that does not continue a held part enters the primary design only if the coordinator declares it primary in a dated addendum before the v5e fit, from its registry text. Otherwise it enters as sensitivity, in `max_incl` only.
  - Descriptive parts never enter a fit.
- **Rules unchanged.** RULE_9160 and A1–A4 apply unchanged (minimum span ≥4 calendar years, strict level choice, cross-section coverage as contrast only, A3 event corrections). The gates are G1, G2 and the ramp. The reuse rule is RULE 9160 V4 as declared. Profiles are fitted with the 9520-type worker launcher (engineering only).
- **Headline.** v5e becomes the headline if it passes its gates. Otherwise v5d does, if it passes its own; otherwise v5c-A3. Every completed version is reported beside the headline.
- **Time limit.** If the v5e fit and its reporting files are not complete by 2026-10-15 08:30 CDT (the author's departure), the release goes out with the best completed version and v5e follows as an update.
- **Inputs on record before the fit.** The v5e input manifest, design pins and the list of admitted parts (with their test results) are appended here before the v5e refit, as for A3 and A4.

### A7 pins (pre-refit) (2026-10-15 about 01:20 CDT, appended by Claude before any v5e profile was fitted; no v5e result exists. The v5d (A4) result had been seen: 0.976, random-effects 95% CI 0.838-1.135.)

This entry records the v5e inputs, design pins, code and reuse source BEFORE the v5e refit, as the A7 pre-declaration requires.

- **Check stage.** The fit (`9523_v5e_fit.py --fit`, which runs 9521, the 9516 copy for v5e) re-hashes every manifest file and the four design-frame pins. It refuses to run without this entry.
- **Rules.** The roles, rules and gates are those of A7 and A1-A4, unchanged.
- **Cutoff.** The cutoff is 2026-10-15 02:00 CDT. The admitted set below was fixed at the factory merge (2026-10-14 23:04 CDT), when every v5e test had a FULL-mode report. The GPT build round had closed at about 22:40 and no other builder was active. Any part that passes a full test after the merge but before 02:00 will be listed in a later entry; it enters only a later update.
- **Prepare.** `9523_v5e_fit.py --final --tag v5e` ran twice. Run 1 stopped at the 9501 consistency check, because the declarations listed all 34 auto-declared cross-section sources while the merge flags carry only ranked sources. After the fix in 9522 (ranked sources only), run 2 completed at 01:16:46, with a peak tree RSS of 11.1 GB. The primary design has 11,169 units, 95,462 stacks and 41 countries; v5d had 11,052 units and 95,257 stacks.
- **Reuse (RULE 9160 V4, as declared and unchanged).** The source is the sealed v5d run `work_v5c_v5d`. Both runs have the same fit chain (`7ffc6ae8...`). The cell-flag table of v5e is byte-identical to that of v5d (`cell_flags_v5e` = `cell_flags_v5d` = `6e8487e2...`). A unit is therefore reused only if its design hash AND its cell hash (raw series rows plus flag tables, streamed) are identical to those of its v5d counterpart, and every other unit is refitted. The fit log and `reuse_receipt_a4.json` record the reuse count. The pool, gates, chart and ramp are recomputed from the full v5e profile set.
- **Workers.** 14 profile workers (the 9520-type launcher, engineering only).

**Admitted parts (107; FULL test pass, report written before the cutoff and after the part's last build):** `AGO_DHS_API_SUBNATIONAL_VACC_EXT3`, `ARG_CABA_TEA_SECONDARY`, `AUS_NCIRS_STATE_COVERAGE_M12`, `AUS_NCIRS_STATE_COVERAGE_M24`, `AUS_NDIS_AUTISM_NATIONAL_JUNE`, `BDI_DHS_API_SUBNATIONAL_VACC_EXT2`, `BEL_FL_TYPE9_PROV_EXT2`, `BEN_DHS_API_SUBNATIONAL_VACC_EXT2`, `BFA_DHS_API_SUBNATIONAL_VACC_EXT3`, `BGD_BANBEIS_SECONDARY_AUTISM_ED2`, `CAF_DHS_API_SUBNATIONAL_VACC_EXT3`, `CAN_MB_STAMANT_AUTISM_PROGRAMMES`, `CHL_DEIS_REM_P2_NANEAS_TEA`, `CHL_MINEDUC_COURSE_SPED`, `CMR_DHS_API_SUBNATIONAL_VACC_EXT2`, `COD_DHS_API_SUBNATIONAL_VACC_EXT3`, `COG_DHS_API_SUBNATIONAL_VACC_EXT2`, `COM_DHS_API_SUBNATIONAL_VACC_EXT2`, `ECU_MINEDUC_DISABILITY_CANTON`, `EGY_DHS_API_SUBNATIONAL_VACC_EXT2`, `ERI_DHS_API_SUBNATIONAL_VACC_EXT3`, `EST_TAI_PKH4_F84_DISCHARGES`, `ETH_DHS_API_SUBNATIONAL_VACC_EXT2`, `ETH_ESAA_AUTISM_MODERN`, `FIN_STATFIN_AUTISM_SCHOOL_LEVEL`, `GBR_ENG_COVER_MMR_NATIONAL_EXT`, `GBR_ENG_HES_CHILD_CANCER_EXT2`, `GBR_ENG_SEN_ASD_NATIONAL_EXT2`, `GBR_LIT_TAYLOR2013`, `GHA_DHS_API_SUBNATIONAL_VACC_EXT3`, `GIN_DHS_API_SUBNATIONAL_VACC_EXT3`, `GMB_DHS_API_SUBNATIONAL_VACC_EXT2`, `HKG_EDB_INTEGRATED_AUTISM_STAGE`, `HKG_EDB_SEN_EXT2`, `HKG_EDB_SEN_GRADE_2020_2022`, `HKG_EDB_SEN_SCHOOL_LEVEL`, `IDN_PROFIL_KESEHATAN_EXT2`, `IND_DISE_AUTISM_GRADE_2012`, `ISL_STATICE_HEI09403_AUTISM_SERVICE`, `ISR_LIT_RAZ2015`, `ITA_ATS_BERGAMO_ASD_INC_0_19`, `ITA_ISTAT_PSYDEV_MACROAREA_EXT2`, `JOR_DHS_API_SUBNATIONAL_VACC_EXT2`, `JPN_LIT_SAITO2020`, `KEN_DHS_API_SUBNATIONAL_VACC_EXT3`, `LSO_DHS_API_SUBNATIONAL_VACC_EXT3`, `LVA_SPKC_AUTISM_CHILD_REGISTER`, `MAR_DHS_API_SUBNATIONAL_VACC_EXT2`, `MDG_DHS_API_SUBNATIONAL_VACC_EXT3`, `MKD_SSO_AUTISM_WELFARE_AGE`, `MLI_DHS_API_SUBNATIONAL_VACC_EXT2`, `MRT_DHS_API_SUBNATIONAL_VACC_EXT2`, `MWI_DHS_API_SUBNATIONAL_VACC_EXT3`, `MYS_MOH_HEALTH_INDICATORS_EXT2`, `MYS_MOH_HEALTH_INDICATORS_EXT2_PREVBIRTHS`, `NAM_EMIS_ASD_WG_2020_2023`, `NER_DHS_API_SUBNATIONAL_VACC_EXT3`, `NGA_DHS_API_SUBNATIONAL_VACC_EXT2`, `NLD_CBS_GGZ_PDD_ADULT_EXT2`, `NZL_MOH_NIR_REGION_M12`, `NZL_MOH_NIR_REGION_M24`, `NZL_MOH_NIR_REGION_M60`, `RWA_DHS_API_SUBNATIONAL_VACC_EXT2`, `SEN_DHS_API_SUBNATIONAL_VACC_EXT2`, `SLE_DHS_API_SUBNATIONAL_VACC_EXT2`, `TCD_DHS_API_SUBNATIONAL_VACC_EXT2`, `TJK_FORM12_F84`, `TWN_CDC_COUNTY_COVERAGE_EXT2`, `TWN_MOHW_DISABILITY_AUTISM_NATIONAL_AGE`, `TWN_NTPC_SPED_YEARBOOK`, `TZA_BEST_SECONDARY_FORM_EXT`, `UGA_DHS_API_SUBNATIONAL_VACC_EXT2`, `UGA_MOES_SECONDARY_SNE`, `USA_AK_DOH_REGION_19_35M_EXT2`, `USA_AK_DOH_REGION_5_6Y_EXT2`, `USA_AL_ALSDE_DISTRICT_EXT2`, `USA_AZ_ADE_PEA_EXT2`, `USA_CA_CDPH_CHILDCARE_COUNTY_EXT2`, `USA_CO_CDE_AU_EXT2`, `USA_FL_FDOE_ESE_DISTRICT_EXT2`, `USA_IA_IDPH_CHILDCARE_AUDIT_COUNTY_EXT2`, `USA_IA_IDPH_K12_AUDIT_COUNTY_EXT2`, `USA_IDEA_PARTB_STATE_NC_EXT`, `USA_IL_GLENBROOK225_AUTISM`, `USA_KS_KDHE_COUNTY_K_EXT2`, `USA_MA_DESE_DISTRICT_EXT2`, `USA_ME_CDC_COUNTY_K_EXT2`, `USA_MN_MDH_CHILDCARE_COUNTY_2020_25_EXT2`, `USA_NJ_DOH_COUNTY_K_EXT2`, `USA_NJ_DOH_COUNTY_PREK_EXT2`, `USA_NY_OMH_PCS_AUTISM_REGION_OCT`, `USA_NYC_DOE_AUTISM_GRADE`, `USA_OR_ODE_EIECSE_EXT2`, `USA_PA_ACHD_SCHOOL_ALLGRADES_EXT2`, `USA_PA_PENNDATA_LEA_EXT2`, `USA_TN_TDH_COUNTY_K_EXT2`, `USA_TN_TDH_REGION_24M_EXT2`, `USA_TX_DSHS_CE_COUNTY_EXT2`, `USA_TX_DSHS_CE_DISTRICT_EXT2`, `USA_TX_DSHS_K_DISTRICT_EXT2`, `USA_TX_TEA_DISTRICT_EXT2`, `USA_WI_DPI_GRADE_EXT2`, `USA_WY_WDH_COUNTY_19_35M_EXT2`, `XKX_ASK_EDU42_REGULAR_AUTISM`, `ZAF_DHS_API_SUBNATIONAL_VACC_EXT2`, `ZMB_DHS_API_SUBNATIONAL_VACC_EXT2`, `ZWE_DHS_API_SUBNATIONAL_VACC_EXT3`.

**Candidate parts not admitted (1):** `TZA_BEST_SECONDARY_FORM` (PARTS_TEST_9859.json: lane test FAILED).

**Roles (A7, registry text and part structure):** `AGO_DHS_API_SUBNATIONAL_VACC_EXT3` descriptive; `ARG_CABA_TEA_SECONDARY` sensitivity; `AUS_NDIS_AUTISM_NATIONAL_JUNE` sensitivity; `BDI_DHS_API_SUBNATIONAL_VACC_EXT2` descriptive; `BEN_DHS_API_SUBNATIONAL_VACC_EXT2` descriptive; `BFA_DHS_API_SUBNATIONAL_VACC_EXT3` descriptive; `BGD_BANBEIS_SECONDARY_AUTISM_ED2` sensitivity; `CAF_DHS_API_SUBNATIONAL_VACC_EXT3` descriptive; `CAN_MB_STAMANT_AUTISM_PROGRAMMES` sensitivity; `CHL_DEIS_REM_P2_NANEAS_TEA` sensitivity; `CHL_MINEDUC_COURSE_SPED` descriptive; `CMR_DHS_API_SUBNATIONAL_VACC_EXT2` descriptive; `COD_DHS_API_SUBNATIONAL_VACC_EXT3` descriptive; `COG_DHS_API_SUBNATIONAL_VACC_EXT2` descriptive; `COM_DHS_API_SUBNATIONAL_VACC_EXT2` descriptive; `ECU_MINEDUC_DISABILITY_CANTON` sensitivity; `EGY_DHS_API_SUBNATIONAL_VACC_EXT2` descriptive; `ERI_DHS_API_SUBNATIONAL_VACC_EXT3` descriptive; `EST_TAI_PKH4_F84_DISCHARGES` descriptive; `ETH_DHS_API_SUBNATIONAL_VACC_EXT2` descriptive; `ETH_ESAA_AUTISM_MODERN` sensitivity; `FIN_STATFIN_AUTISM_SCHOOL_LEVEL` sensitivity; `GBR_LIT_TAYLOR2013` sensitivity; `GHA_DHS_API_SUBNATIONAL_VACC_EXT3` descriptive; `GIN_DHS_API_SUBNATIONAL_VACC_EXT3` descriptive; `GMB_DHS_API_SUBNATIONAL_VACC_EXT2` descriptive; `HKG_EDB_INTEGRATED_AUTISM_STAGE` sensitivity; `HKG_EDB_SEN_GRADE_2020_2022` sensitivity; `HKG_EDB_SEN_SCHOOL_LEVEL` sensitivity; `IDN_PROFIL_KESEHATAN_EXT2` descriptive; `IND_DISE_AUTISM_GRADE_2012` sensitivity; `ISL_STATICE_HEI09403_AUTISM_SERVICE` descriptive; `ISR_LIT_RAZ2015` sensitivity; `ITA_ATS_BERGAMO_ASD_INC_0_19` sensitivity; `ITA_ISTAT_PSYDEV_MACROAREA_EXT2` sensitivity; `JOR_DHS_API_SUBNATIONAL_VACC_EXT2` descriptive; `JPN_LIT_SAITO2020` sensitivity; `KEN_DHS_API_SUBNATIONAL_VACC_EXT3` descriptive; `LSO_DHS_API_SUBNATIONAL_VACC_EXT3` descriptive; `LVA_SPKC_AUTISM_CHILD_REGISTER` sensitivity; `MAR_DHS_API_SUBNATIONAL_VACC_EXT2` descriptive; `MDG_DHS_API_SUBNATIONAL_VACC_EXT3` descriptive; `MKD_SSO_AUTISM_WELFARE_AGE` sensitivity; `MLI_DHS_API_SUBNATIONAL_VACC_EXT2` descriptive; `MRT_DHS_API_SUBNATIONAL_VACC_EXT2` descriptive; `MWI_DHS_API_SUBNATIONAL_VACC_EXT3` descriptive; `MYS_MOH_HEALTH_INDICATORS_EXT2` descriptive; `MYS_MOH_HEALTH_INDICATORS_EXT2_PREVBIRTHS` descriptive; `NAM_EMIS_ASD_WG_2020_2023` sensitivity; `NER_DHS_API_SUBNATIONAL_VACC_EXT3` descriptive; `NGA_DHS_API_SUBNATIONAL_VACC_EXT2` descriptive; `NLD_CBS_GGZ_PDD_ADULT_EXT2` sensitivity; `RWA_DHS_API_SUBNATIONAL_VACC_EXT2` descriptive; `SEN_DHS_API_SUBNATIONAL_VACC_EXT2` descriptive; `SLE_DHS_API_SUBNATIONAL_VACC_EXT2` descriptive; `TCD_DHS_API_SUBNATIONAL_VACC_EXT2` descriptive; `TJK_FORM12_F84` sensitivity; `TWN_MOHW_DISABILITY_AUTISM_NATIONAL_AGE` sensitivity; `TWN_NTPC_SPED_YEARBOOK` sensitivity; `TZA_BEST_SECONDARY_FORM_EXT` sensitivity; `UGA_DHS_API_SUBNATIONAL_VACC_EXT2` descriptive; `UGA_MOES_SECONDARY_SNE` sensitivity; `USA_AZ_ADE_PEA_EXT2` sensitivity; `USA_CA_CDPH_CHILDCARE_COUNTY_EXT2` sensitivity; `USA_IA_IDPH_CHILDCARE_AUDIT_COUNTY_EXT2` sensitivity; `USA_IA_IDPH_K12_AUDIT_COUNTY_EXT2` sensitivity; `USA_IL_GLENBROOK225_AUTISM` sensitivity; `USA_KS_KDHE_COUNTY_K_EXT2` sensitivity; `USA_ME_CDC_COUNTY_K_EXT2` sensitivity; `USA_MN_MDH_CHILDCARE_COUNTY_2020_25_EXT2` sensitivity; `USA_NJ_DOH_COUNTY_K_EXT2` sensitivity; `USA_NJ_DOH_COUNTY_PREK_EXT2` sensitivity; `USA_NYC_DOE_AUTISM_GRADE` sensitivity; `USA_NY_OMH_PCS_AUTISM_REGION_OCT` descriptive; `USA_PA_ACHD_SCHOOL_ALLGRADES_EXT2` sensitivity; `USA_TN_TDH_COUNTY_K_EXT2` sensitivity; `USA_TX_DSHS_CE_COUNTY_EXT2` sensitivity; `USA_TX_DSHS_CE_DISTRICT_EXT2` sensitivity; `USA_WY_WDH_COUNTY_19_35M_EXT2` sensitivity; `XKX_ASK_EDU42_REGULAR_AUTISM` sensitivity; `ZAF_DHS_API_SUBNATIONAL_VACC_EXT2` descriptive; `ZMB_DHS_API_SUBNATIONAL_VACC_EXT2` descriptive; `ZWE_DHS_API_SUBNATIONAL_VACC_EXT3` descriptive.

**Automatic _EXT continuations:** BEL_FL_TYPE9_PROV_EXT2 -> BEL_FL_TYPE9_PROV (automatic _EXT continuation, join); GBR_ENG_COVER_MMR_NATIONAL_EXT: no held part with the stem id GBR_ENG_COVER_MMR_NATIONAL: standalone source; GBR_ENG_HES_CHILD_CANCER_EXT2 -> GBR_ENG_HES_CHILD_CANCER (automatic _EXT continuation, join); GBR_ENG_SEN_ASD_NATIONAL_EXT2 -> GBR_ENG_SEN_ASD_NATIONAL (automatic _EXT continuation, join); HKG_EDB_SEN_EXT2 -> HKG_EDB_SEN (automatic _EXT continuation, join); TWN_CDC_COUNTY_COVERAGE_EXT2: no held part with the stem id TWN_CDC_COUNTY_COVERAGE: standalone source; USA_AK_DOH_REGION_19_35M_EXT2 -> USA_AK_DOH_REGION_19_35M (automatic _EXT continuation, join); USA_AK_DOH_REGION_5_6Y_EXT2 -> USA_AK_DOH_REGION_5_6Y (automatic _EXT continuation, join); USA_AL_ALSDE_DISTRICT_EXT2 -> USA_AL_ALSDE_DISTRICT (automatic _EXT continuation, join); USA_CO_CDE_AU_EXT2 -> USA_CO_CDE_AU (automatic _EXT continuation, join); USA_FL_FDOE_ESE_DISTRICT_EXT2 -> USA_FL_FDOE_ESE_DISTRICT (automatic _EXT continuation, join); USA_IDEA_PARTB_STATE_NC_EXT -> USA_IDEA_PARTB_STATE_NC (automatic _EXT continuation, join); USA_MA_DESE_DISTRICT_EXT2 -> USA_MA_DESE_DISTRICT (automatic _EXT continuation, join); USA_OR_ODE_EIECSE_EXT2 -> USA_OR_ODE_EIECSE (automatic _EXT continuation, join); USA_PA_PENNDATA_LEA_EXT2 -> USA_PA_PENNDATA_LEA (automatic _EXT continuation, join); USA_TN_TDH_REGION_24M_EXT2 -> USA_TN_TDH_REGION_24M (automatic _EXT continuation, join); USA_TX_DSHS_K_DISTRICT_EXT2 -> USA_TX_DSHS_K_DISTRICT (automatic _EXT continuation, join); USA_TX_TEA_DISTRICT_EXT2 -> USA_TX_TEA_DISTRICT (automatic _EXT continuation, join); USA_WI_DPI_GRADE_EXT2 -> USA_WI_DPI_GRADE (automatic _EXT continuation, join).

**Continuation overlap checks:** `BEL_FL_TYPE9_PROV_EXT2` -> `BEL_FL_TYPE9_PROV`: 0 shared keys, 0 disagree, 30 rows written; `GBR_ENG_HES_CHILD_CANCER_EXT2` -> `GBR_ENG_HES_CHILD_CANCER`: 0 shared keys, 0 disagree, 368 rows written; `GBR_ENG_SEN_ASD_NATIONAL_EXT2` -> `GBR_ENG_SEN_ASD_NATIONAL`: 0 shared keys, 0 disagree, 33 rows written; `HKG_EDB_SEN_EXT2` -> `HKG_EDB_SEN`: 0 shared keys, 0 disagree, 384 rows written; `USA_AL_ALSDE_DISTRICT_EXT2` -> `USA_AL_ALSDE_DISTRICT`: 0 shared keys, 0 disagree, 13851 rows written; `USA_CO_CDE_AU_EXT2` -> `USA_CO_CDE_AU`: 269 shared keys, 0 disagree, 69 rows written; `USA_FL_FDOE_ESE_DISTRICT_EXT2` -> `USA_FL_FDOE_ESE_DISTRICT`: 0 shared keys, 0 disagree, 146 rows written; `USA_IDEA_PARTB_STATE_NC_EXT` -> `USA_IDEA_PARTB_STATE_NC`: 0 shared keys, 0 disagree, 8060 rows written; `USA_MA_DESE_DISTRICT_EXT2` -> `USA_MA_DESE_DISTRICT`: 0 shared keys, 0 disagree, 796 rows written; `USA_OR_ODE_EIECSE_EXT2` -> `USA_OR_ODE_EIECSE`: 0 shared keys, 0 disagree, 9 rows written; `USA_PA_PENNDATA_LEA_EXT2` -> `USA_PA_PENNDATA_LEA`: 0 shared keys, 0 disagree, 1910 rows written; `USA_TX_TEA_DISTRICT_EXT2` -> `USA_TX_TEA_DISTRICT`: 0 shared keys, 0 disagree, 3681 rows written; `USA_WI_DPI_GRADE_EXT2` -> `USA_WI_DPI_GRADE`: 0 shared keys, 0 disagree, 22789 rows written.

**Single cross-sections declared at merge (A2 definition, new sources only; 47 source x level groups):** `AGO_DHS_API_SUBNATIONAL_VACC_EXT3`, `BDI_DHS_API_SUBNATIONAL_VACC_EXT2`, `BEN_DHS_API_SUBNATIONAL_VACC_EXT2`, `BFA_DHS_API_SUBNATIONAL_VACC_EXT3`, `CAF_DHS_API_SUBNATIONAL_VACC_EXT3`, `CMR_DHS_API_SUBNATIONAL_VACC_EXT2`, `COD_DHS_API_SUBNATIONAL_VACC_EXT3`, `COG_DHS_API_SUBNATIONAL_VACC_EXT2`, `COM_DHS_API_SUBNATIONAL_VACC_EXT2`, `EGY_DHS_API_SUBNATIONAL_VACC_EXT2`, `ERI_DHS_API_SUBNATIONAL_VACC_EXT3`, `ETH_DHS_API_SUBNATIONAL_VACC_EXT2`, `GHA_DHS_API_SUBNATIONAL_VACC_EXT3`, `GIN_DHS_API_SUBNATIONAL_VACC_EXT3`, `GMB_DHS_API_SUBNATIONAL_VACC_EXT2`, `JOR_DHS_API_SUBNATIONAL_VACC_EXT2`, `KEN_DHS_API_SUBNATIONAL_VACC_EXT3`, `LSO_DHS_API_SUBNATIONAL_VACC_EXT3`, `MAR_DHS_API_SUBNATIONAL_VACC_EXT2`, `MDG_DHS_API_SUBNATIONAL_VACC_EXT3`, `MLI_DHS_API_SUBNATIONAL_VACC_EXT2`, `MRT_DHS_API_SUBNATIONAL_VACC_EXT2`, `MWI_DHS_API_SUBNATIONAL_VACC_EXT3`, `NER_DHS_API_SUBNATIONAL_VACC_EXT3`, `NGA_DHS_API_SUBNATIONAL_VACC_EXT2`, `RWA_DHS_API_SUBNATIONAL_VACC_EXT2`, `SEN_DHS_API_SUBNATIONAL_VACC_EXT2`, `SLE_DHS_API_SUBNATIONAL_VACC_EXT2`, `TCD_DHS_API_SUBNATIONAL_VACC_EXT2`, `TWN_CDC_COUNTY_COVERAGE_EXT2`, `UGA_DHS_API_SUBNATIONAL_VACC_EXT2`, `ZAF_DHS_API_SUBNATIONAL_VACC_EXT2`, `ZMB_DHS_API_SUBNATIONAL_VACC_EXT2`, `ZWE_DHS_API_SUBNATIONAL_VACC_EXT3`.

**Factory v5e:** cells_primary 12,134,984 rows (52,126 new; by source {"BEL_FL_TYPE9_PROV": 30, "GBR_ENG_HES_CHILD_CANCER": 368, "GBR_ENG_SEN_ASD_NATIONAL": 33, "HKG_EDB_SEN": 384, "USA_AL_ALSDE_DISTRICT": 13851, "USA_CO_CDE_AU": 69, "USA_FL_FDOE_ESE_DISTRICT": 146, "USA_IDEA_PARTB_STATE_NC": 8060, "USA_MA_DESE_DISTRICT": 796, "USA_OR_ODE_EIECSE": 9, "USA_PA_PENNDATA_LEA": 1910, "USA_TX_TEA_DISTRICT": 3681, "USA_WI_DPI_GRADE": 22789}); errors 0; warnings 1.

| factory file | sha256 |
|---|---|
| `DATA_QUALITY_FLAGS_v5e.csv` | `1d3c5a2756e673f01b6f824f03681568e2edaa226418115f9bf772a82259881f` |
| `EVENT_ADJUDICATION_v5e.csv` | `ae25ed72fc2970bb2a4fdcb357031c23a6105b3e3042eb5564efb08d90383c56` |
| `EVENT_STATUS_v5e.csv` | `bb2209b3f923f680fe75752954062de413e5dd2ed4274f134a780ee38f331676` |
| `INVENTORY_v5e.csv` | `40ca818896652f4e83c60f31d2085e2079fe3ce94d743d7fb1c173f60a66bb56` |
| `LEVEL_AGE_MAP_v5e.csv` | `cb3bab01e2d07f620ec08d087ef67447fde707034328f9df7b7c4e4d20d9c003` |
| `NC_ROLES_v5e.csv` | `a455a81b691481d7c88f8c6afd3147817e62b114ab1154cce5a3587c7aed8694` |
| `PRE_PROGRAMME_ZERO_v5e.csv` | `64699e2aaf0b17123653b40bf40c59598172cf416b4938efe9e88cd52aa58d69` |
| `SOURCE_ROLES_v5e.csv` | `b376d0e08ed453a3debaa09a86b0c22e34d6b7f5358b453b534f8dc2074355f9` |
| `cell_flags_v5e.parquet` | `6e8487e2420a7dae1b22ae69eacb3cafc31a0bd2f62c19c335bccc2190e07895` |
| `cells_primary_v5e.parquet` | `411fcdcdb84e5739f4268370626f3ca648d7d9ff48aca37e2273f0bab6d99875` |
| `events_primary_v5e.parquet` | `ae9d3862996027537e33998ea1941f40e72cbc7fed03ee2dd943f7626d1ab02e` |
| `events_typed_v5e.parquet` | `d8af0600541bdc97cede16a98310337551fa2118de7ee6591dc57aebca0f3fce` |
| `events_v5e.parquet` | `7457f0836794b5c7b07bd330371c50b3574589419a90d218cdafbf12ee11661d` |
| `exposure_flags_v5e.parquet` | `8d8cc4aeb91a7853c6ad6c0c160bef5cc9eaa096195289c5e710b70397e3d908` |
| `exposure_preferred_v5e.parquet` | `46fd2ddbb9fa338f25b4464029ec93da8e32946a36e59c1fa52480085ecde153` |
| `exposure_substate_v5e.parquet` | `a1c2e0ea8ad0b3a9d1b4bc5ec827eea96d166827a1fb25c2469e4a1dfb8962a2` |
| `series_flags_v5e.parquet` | `f3956ca6fe2ee3b3e4b658395bb23bc514d7413770c8cb4acf01686ee871fcdf` |

| item | value |
|---|---|
| manifest `work_v5c_v5e/RULE_9160_v5c_inputs.sha256` | `e4eae5d9a9f00739c00eb553a5790b3b9c14ba5f1b5a15db2d4f76896de788b5` |
| design pins file | `3743d032747b6c346745eb7d95aeafd39471b68f7e59f55faec53b87b5667ebf` |
| design frame `units` | `7ec6e1a16b0164101f7254a355cd0af2cca71c9efb8d31277d9e18c0daf74355` |
| design frame `stacks` | `1f10146a04a6b450d7a5c27372bd3871d444e0cc754f7fa7ff80a6d3d08ce7e8` |
| design frame `placebo` | `d30da77f9ad6f9a3e87dd01ad2217d61c5116ff5cbaa1712fc9d04f0c61b91bc` |
| design frame `ppath` | `43929303da7e71c4da0fbae6c7546b012776ae9422ad35146e23d2374ce8d1fa` |
| fit chain | `7ffc6ae84f8f946e29cfd16dcafd6e55dd746428115680c2bfb2c35695dccde4` |

Declarations: {"parts_added": 3, "parts": ["HKG_DH_CAS_NEW_DIAGNOSES", "ISR_NII_AUTISM_BY_BIRTH_YEAR", "NZL_NZHS_ASD_CHILDREN"], "age_band_map_added": 0, "grade_offsets_added": 0, "national_broadcast_added": 0, "single_cross_section_added": 2, "declared_exclusions_added": 0, "v5e_parts_added": 0, "v5e_single_cross_section_added": 1, "v5e_single_cross_section": ["TWN_CDC_COUNTY_COVERAGE_EXT2"]}

| code | sha256 |
|---|---|
| `9109_factory_build_data.py` | `fd6be78f7e5663eed5d81e23db87ca2e0fca758942576f7fba318409d28d3214` |
| `9500_summative_v5c_driver.py` | `364a35a59fccef9c09aa55f25a5c20e703b05eb56a67e76f2b015c4cef54b26d` |
| `9501_v5c_declarations.py` | `247dc9c2b14eab470f86dc5dde9677166dde38ee4f530bff1e1f6b243d37e44a` |
| `9510_v5c_a3_driver.py` | `745b68796f151a2ee62495fb813537e5c8188b9959eea20fc8692d089949f1fa` |
| `9511_v5c_unit_frame_fix.py` | `f2f0040658909af196fd19b147a776d43e589811826f74ae114974b9723610b3` |
| `9516_v5d_a4_driver.py` | `b4ea1d3e9dffa50d90dce94f221ba5705ca128121bcde90c8fb23d51f3e6b82f` |
| `9517_v5d_events.py` | `fc8eb6a391c8d5ac4e648a49d1e30406fdcb441e4bbc9bc44738b09de0dfd6d1` |
| `9518_v5d_declarations.py` | `293d34091c5fd373ac9392655ef37381b2e3db5dd51cdb3a1cdb96f341ba0f65` |
| `9520_v5d_fit_fast.py` | `39a2c580666c418b64f14e6ee8613ab02c3761f21e1ec0b581a0cedc3bc53368` |
| `9521_v5e_a7_driver.py` | `a7b6bca68cad24ef97ae36a97c6db0042d6442b6bbc085c26dba2a58749dbdda` |
| `9522_v5e_declarations.py` | `a77a2126e462be570e1da5f5922a2e82a19d69d4537e6802724ad9ada557a089` |
| `9523_v5e_fit.py` | `d22cb7383bac9cbd107f0e8d4a047cf868920e0146406c6a21739e79f42daf90` |
| `9999_test_v5e_gpt_parts.py` | `e30b3c967ccf67102b7ac2a770b2b5600c1ff582859f0ed35508e6089af637a6` |
| `9799_test_v5e_parts.py` | `01cba2c8980ee4840c311ebe401f9f4ebd1a5955521579a7ece381fcb40c4b02` |


### A7 refit record (2026-10-15 about 03:15 CDT, appended by Claude after the v5e fit and its reporting files)

- **Cutoff verified.** The last test report (PARTS_TEST_9999.json) was written at 2026-10-14 23:00 CDT, before the factory merge (23:04) and the 02:00 cutoff. At 03:10 the factory gate still admits exactly the 107 parts merged. No part passed a full test between the merge and the cutoff.
- **Fit.** `9523_v5e_fit.py --fit --workers 14 --tag v5e --reuse-from work_v5c_v5d` ran from 01:17 to 01:58:46 CDT (exit 0; log `work_v5c_v5e/logs/fit_run1.log`).
  - The check stage re-hashed 149 manifest files; the design pins were equal and the A7 entry was on record. (The log line reads 'A4 pins' because 9521 copies 9516's message text; the marker it checks is 'A7 pins (pre-refit)'.)
  - Reuse (RULE 9160 V4): 171,440 of 190,665 design rows had identical design and cell hashes to v5d. Refitted units by run: primary 213 of 11,169; nc 176; nc_sens 117; us_no_sae 197; short_incl 199; xsec_paths 21; aut_match 9; every other run 0.
  - Pooling twice was identical. The tree RSS peaked at 13.1 GB.
- **Headline (v5e passes its gates, so it is the result under A7):** per-child RR 0.973.
  - Random-effects 95% CI 0.836–1.131.
  - Sensitivities: shared-bias allowance 0.699–1.354; placebo-calibrated 0.855–1.107.
  - 40 countries (28 above 1% weight); K_eff 26.04; 39,753 stacks.
  - G1 planted ×1.25 / ×1.5 within 10%; G2 placebo 6/6; ramp validated.
  - Earlier versions: v5d 0.976 (0.838–1.135), v5c-A3 0.973, v5c-A2 0.972, version 4 0.965.
- **Tipping points:** a shared-bias SD of 0.102 is needed before the upper end reaches 1.25, and 0.207 before it reaches 1.5. The ramp model's shared SD is 0.185.
- **A6 max_incl (supplement):** 0.961 (95% CI 0.835–1.107), 44 countries. 13,344 units: 2,220 fitted and 11,124 reused from the v5e primary run.
- **A5 battery:** 6 of 7 checks pass. M1 fails (the REML intercept of the dose-response check is +0.18, CI +0.10 to +0.26), as it did for v5c-A3 and v5d. Leaving out any one of the five largest countries keeps the RR between 0.970 and 0.977.
- **Reporting.** The numbers file is `qa/claude_release_v4/v5e_numbers.json` (byte copy at `work_v5c_v5e/v5c_numbers.json`), and the results file is `RESULTS_v5e.md` (written by 9998).
  - Script changes after the A7 pins (reporting only, no fit input): 9505 (`--v5d-root` and the v5e label), 9514 (`--version A7`), and the v5e post-fit chain order (A6 report, then ramp, then report again).
  - The v5d chain ran the A6 ramp before the A6 pool. That step was re-run in order at 00:41–01:05, and the v5d numbers file was regenerated.
- **Publication.** None. The author's instruction of 2026-10-14 23:10 was to deliver files only.
