Skip to content

UK review queue: 17 open PRs, suggested merge order, and what is blocked on whom #104

Open

Description

@vahid-ahmadi

@MaxGhenis @DTrim99 — 17 of my PRs are open, all green and mergeable. Rather than ping each one, here is the whole queue in one place with what each of you is actually needed for.

State

PRs
Approved by @DTrim99, awaiting @MaxGhenis #75, #81, #49, #64, #65, #66, #67, #68, #51, #91, #92, #93
Awaiting both #95, #100, #101, #102, #103

All 17 pass pytest · ruff format and typecheck · build, build deterministically, and leave a clean tree.

Suggested merge order, and why it matters

I merged all twelve of the original branches in sequence on a scratch branch to find out. Two things came out of it:

  1. build_db.py conflicts on nearly every merge — six branches insert a step at the same anchor, and the conflict region splits a step tuple, so a both-sides union produces invalid Python. That is the good case; the bad case drops a step and ships a database missing a lane while every test passes. OBR policy effects → DB ingest: 266 claims, four macro-effect metrics #81 carries a guard that refuses a chain importing an ingest it never runs, so merging OBR policy effects → DB ingest: 266 claims, four macro-effect metrics #81 early protects the rest.
  2. lanes.json conflicts are not real — it is a derived feed both sides append to. Regenerate from a build rather than hand-merging.
#75 → #81          (#81 carries #75; merge #81 early for the guard)
#49 → #64          (#64 stacks on #49)
#65, #68, #51, #66, #67    (independent)
#91 → #92          (#92 stacks on #91)
#93, #95, #100, #101, #102, #103   (independent)

One ordering constraint that is not obvious: uk_thinktanks must run before produce_uk — #91 changed produce_campaign_uk's blocked-family reasoning on the basis that Resolution Foundation claims now exist. The current insertion point satisfies it.

@MaxGhenis — three things only you can unblock

  1. Mode-3 case schema + UK battery: UKMOD/EUROMOD lane groundwork #49's mode-3 table design. You offered to pair on it and I took you up rather than guessing: the case/result table, writer, exporter and the status/diagnosis split are deliberately not in Mode-3 case schema + UK battery: UKMOD/EUROMOD lane groundwork #49 or Official-calculator oracles (mode 3): closed-set extension, dated-reading provenance, calculator work list #64. SCHEMA.md records the open shape. Whenever suits.
  2. UK compute campaign, run 1: execute the mode-1 counterpart pipeline on the certified bundle #76–UK compute campaign, run 5: PE-UK static LSR counterparts to OBR's 19 supply-side scorings (#55 step 2–3) #80, the compute campaign. You're holding them on UK counterpart compute pipeline (managed sims, pe_gap-degrading registry) #51, which is now repaired and approved. This is the one that matters most — see below.
  3. OBR policy costings (mode 2): registry, offline certified compute, staging, descriptive comparison #56 and Add KFF eligible-uninsured moments and Medicaid 100% take-up reform rows #69, your own branches. Both still track data/scorecard.db and their ci.yml has neither the determinism check nor the no-drift gate, so they are running a pre-The database leaves git: derived artifact, built in CI, published to Supabase storage #74 workflow. OBR policy costings (mode 2): registry, offline certified compute, staging, descriptive comparison #56 matters beyond itself because OBR costings divergence decomposition: axes registry + identity-checked pipeline (#59) #67 consumes its COMPARISON.csv. Fix is git merge origin/main; I haven't pushed to your branches.

@DTrim99 — five you haven't seen

#95, #100, #101, #102, #103. #95 is the one I'd most like your eye on: it uses pull_request_target, which is the sharp trigger, so the "never checks out or executes PR code" property is the thing to check hardest.

The number behind all of this

The UK side has 15,858 external claims and 14 with a PE result — 0.09%. The US side is 19.3%. Nothing in this queue changes that except the compute campaign; the lanes make the denominator bigger. If only one thing moves this week, it should be #51 landing and #76–#80 being released.

Activity

  1. MaxGhenis commented on Sep 1, 2026

    @MaxGhenis
    Contributor

    Reviewer-lane status (Sept 1) — the re-gates resume from here

    The reviewer lane went dark after the 8/20 gate sweep; surveyed the full queue tonight. Acknowledging the ball has been in this court on every row of this issue's table — and the response quality across the batch was genuinely strong: findings answered within ~48 hours, probes reproduced as pinned regression tests, and three separate self-caught defects in your own fixes (#51's undecoded EnumArray, #66's always-firing version pin, #101's rewrite). Nothing about the wait reflects on the work.

    Re-gate order for the next working sessions, following this issue's tested merge order plus response readiness:

    1. UK counterpart compute pipeline (managed sims, pe_gap-degrading registry) #51 first — the UK compute campaign, run 1: execute the mode-1 counterpart pipeline on the certified bundle #76–UK compute campaign, run 5: PE-UK static LSR counterparts to OBR's 19 supply-side scorings (#55 step 2–3) #80 campaign-run hold hinges on its verdict, and "the one that matters most" is right (UK PE-coverage 0.09% vs 19.3% US). The 8/22 repair + 8/24 real-engine verification are exactly the shape the gate asked for; verdict comes from probing, not reading.
    2. OBR published economic effects of policy: AS2023–AB2025 packages, supply-side scorings, March 2026 decisions (external side) #75 → OBR policy effects → DB ingest: 266 claims, four macro-effect metrics #81 — so OBR policy effects → DB ingest: 266 claims, four macro-effect metrics #81's build_db refuse-unrun-ingest guard protects the five build-chain branches behind it (your empirical merge-order finding).
    3. Mode-3 case schema + UK battery: UKMOD/EUROMOD lane groundwork #49 → Official-calculator oracles (mode 3): closed-set extension, dated-reading provenance, calculator work list #64, then Reform-validation population: country dimension (per-release regression history for policyengine-uk) #65, HMRC ready reckoner (mode 2): registry, offline compute, full-population triage #66, OBR costings divergence decomposition: axes registry + identity-checked pipeline (#59) #67, HMT distributional analysis (mode 2, distributional): Budget 2025 external side — chart-only scope, honestly #68; Re-home the reform-validation backfill from cal-diag #112 (org-side re-push of #23) #53 after Reform-validation population: country dimension (per-release regression history for policyengine-uk) #65 lands per the 8/27 sequencing note.
    4. The post-8/20 batch: Ingest the two harvested-but-unused UK think-tank families: IFS + Resolution Foundation (#86) #91 → ONS effects of taxes and benefits (mode 1, distributional): the decile-incidence population HMT publishes only as charts (#90) #92 (stacked), Minimum wage coverage and bite (mode 1): the first external check on PE-UK's minimum-wage machinery (#88) #93, Stop a stale branch from skipping the CI gates it was approved under #95 (the pull_request_target trigger gets the sharp-eyes pass), then the Budget cluster Autumn Budget 2026 scoreability registry: ready before 28 October (#96) #100–DWP workplace pension participation: the first pensions claims in the UK scorecard (#98) #103 on the corrected heads, then Rail fares freeze: the engine ships both legs of the counterfactual (#105) #107, Bus fare cap: an earned gap, and the near-miss that nearly made it false (#106) #108, NICs salary sacrifice cap: carried, scoreable, and not assumption-neutral (#109) #110, Intern claim provenance: publications + reforms side tables #114.

    Standing notes:

    🤖 Generated with Claude Code

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