Skip to content

K=1 rowwise pilot on the microcosm-built spine: clone, assign geography, measure per-area support (#495 increment 5) #761

Description

@juaristi22

Parent: #495 (workstream G of the UK-migration epic #665). Input: the swapped spine (#757, after #686/PR #747).

Why the epic's K table no longer applies

#495 sized the clone multiplier against the certified compact: a 535,080-row pool that "is already a 10× clone" (53,508 base ids × 10 tiers), giving ~823 rows per constituency at K=1 — already at US dense-arm scale (~775 records per CD).

The microcosm-built spine that replaces it is 52,846 households, not a 10× clone: (16,288 + 10,000) × 2 + 270, the record-count identity #747 proves exactly. At K=1 that is roughly 81 households per constituency, an order of magnitude below the figure the epic reasoned from. K must therefore be re-adjudicated from measured support on the new spine, and the epic's table re-derived rather than reused.

Scope

  1. Pilot input is the swapped spine, sha-pinned, with its declared weight kind and mass log — never the certified compact, and never upstream of the assembly seam.
  2. Dry-run first. tools/build_uk_rowwise_dataset.py --dry-run writes the full plan (rowwise_dry_run_plan.json): rows and bytes at each candidate K, exact expected per-constituency support from crosswalk populations × the pool's region mix, id-multiplier and source-lineage checks — no H5 written.
  3. Real K=1 build, no solve. Ladder assignment via assign_uk_geography_ladder + uk_geography_ladder_gate against the built full-UK artifact (build/uk/uk_oa_ladder_2021.npz, sha 9c6d56b9…, 239,023 OAs / 650 constituencies / 361 LADs): 650/650 assigned, zero missing-geography rows, avoid_constituency_collisions on.
  4. Fences carried, not laundered. The clone carries populace_household_weight_kind and populace_mass_log_json, refuses an input whose weight kind it does not recognize, and asserts exact mass conservation against the input.
  5. Source-lineage rule re-derived. The household_id mod 10^8 eFRS-grain lineage rule was written for the 10×-cloned pool; restate it for the new spine's id scheme so per-area "distinct source households" counts remain honest.
  6. Diagnostics as the deliverable: per-area minimum/median rows, distinct source households, ESS by area, region mix — the measurement that justifies the K ruling.
  7. Adjudicate and record K, with the measured support behind it and the rows/bytes/memory ceiling at that K.
  8. Feed Adjudicate the UK spine grain at the ingest/calibration seam #688. The pilot's measured pre- and post-clone grain is the evidence the grain adjudication has been waiting for.

Out of scope

  • Any solve, any target binding, any publication.

Acceptance

  • Dry-run plan and a real K=1 artifact both produced on the licensed machine, every rung appending a Logbook row.
  • Ladder gate green at 650/650, zero missing-geography rows, mass conserved exactly against the input, weight-kind and mass-log attrs present on the output.
  • A written K ruling citing its own measurement, and Adjudicate the UK spine grain at the ingest/calibration seam #688 answerable from the receipts.

🤖 Generated with Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions