Skip to content

Registration: the first estimates report (forecast ledger entry 8) #288

Description

@MaxGhenis

REGISTRATION — the first estimates report (forecast ledger entry 8)

Registration

Class: registered estimates report (the class chartered by
docs/design/first_estimates_report.md, ratified at 6586b92,
amendment 1 at ee1221d, amendment 2 ratified at the implementation
merge 070cbb720cb2f10da7ffae8122a2269e58b39e6e — PR #285 nine
referee rounds; PR #286 nine referee rounds, final verdict SHIP with
the hardened-guard exploits replayed and held).

Output artifact: runs/first_estimates_v1.json with its paired
.env.json sidecar, integrity-bound by the primary's recorded sidecar
hash, written append-only by artifacts.write_new.

The canonical execution rule (§11, restated verbatim as the sole
normative wording):
one registered run; publishes_regardless;
no_self_rescue; at most one coordinator-adjudicated, report-first
retry solely for an external pre-output failure yielding no
estimate-bearing information
. A published v1, any changed
configuration byte, or a second failure of any kind requires fresh
registration
— there is no same-ceremony v2 path. Preparation,
invariant, compute, or publication aborts publish an append-only
incident record (first_estimates_incident.v1, the frozen nine-key
schema) before any further step. The durable attempt claim and the
retry-consumption marker enforce these terms across crashes.

The sealed invocation (amendment 2, restated verbatim): before any
populace_dynamics import, the runner self-re-executes the same
interpreter as python -I -B -X pycache_prefix=<fresh-empty-sentinel-directory> scripts/run_first_estimates.py <registered-arguments>; the launcher
procedure is the launchd user-domain topology of the candidate-3
record (one-shot LaunchAgent, RunAtLoad, AbandonProcessGroup,
ProcessType=Interactive, no KeepAlive, launcher spawns-and-exits,
runner-held caffeinate -sim, bootstrap → health check → bootout,
runner ending as a pid-1 orphan in no application coalition;
publication performed by the coordinator after exit).

Registered arguments:
--registration-reference <this issue's number as populace-dynamics#<n>> (the reference string is this registration's
identity; the coordinator validates it against the canonical byte
bound and binds the durable claim to it).

Frozen configuration (the coordinator hard-asserts or records)

  • Source: master
    070cbb720cb2f10da7ffae8122a2269e58b39e6e — a clean checkout; the
    guards refuse ANY tracked or untracked drift, ignored executable
    artifacts under the code roots, assume-unchanged/skip-worktree
    entries, redirected git routing, and an unsealed interpreter.
  • Design identity: 6586b92 + amendments ee1221d and the §11
    sealed-invocation restatement ratified at 070cbb7.
  • Candidate-3 binding: the gate runner's normative
    fit/preflight/materialization sequence with both CandidateSpec
    sha256s asserted against the registration-12 pins — family
    734a5b04f347c5d4904bbc6d5ab9a1c2876272d35284eedd2f450518acf1cec5,
    engine
    c9be28a28d6fcc3911723872386906af559f6d0e0d5c89a87f741a5b2c3eacd6
    (a mismatch aborts); unsplit population; draw indices 0-19
    (root seeds 5200+k per the RNG registry law).
  • Statutory parameters: policyengine-us 1.752.2 (path and content
    hashes recorded in the artifact); rate legs read from
    gov/irs/payroll/social_security/rate/{employee,employer}.yaml
    with the 6.2%/6.2%/12.4% fail-closed assertions and no fallback;
    the committed SSA COLA-history extraction
    data/external/ssa_cola_history.json, sha256
    12da7f0e0d33fc53eaa31567d86c3cc035a49feefc2e4695bceea3379c2a38db,
    determination-year keyed 1975-2022 (verified against the official
    SSA series at the PR Entry-8 implementation: the first-estimates statutory pipeline (design 6586b92) #286 round-2 review, all 48 rows), with
    coverage asserted for 1979-2022 exactly.
  • The staged inclusion law as ratified: Stage A DI screen over all
    persons; Stage B any-slice candidate universe; Stage C origins with
    the strict-< truncated-renormalized 6.B5.1 imputation under the
    code-frozen stock-imputation namespace; Stage D's five ordered
    predicates with the frozen excluded_* keys; the eligibility-era
    bound ≥ 1979; the 0.80 coverage rule; cutoff-before-imputation.
  • Ledgers: as-of AIME; eligibility-year PIA; months-based
    benefit_factor; stepwise COLA with dime flooring per the SSA
    application convention; no recomputation (affected count
    published); the payment-window triple intersection; nominal
    in-window revenue with wage-base capping and no expectation layers.
  • PSID staging: ~/PolicyEngine/psid-data (the label-verified
    readers' documented staging path).

Candid expectations (house rule)

Every dollar is frame-relative, pre-alignment, labor-income-proxy
— the design's three labels appear on every table, and the artifact's
closing claim is what the statutory formulas yield on the candidate-3
GATED_REALIZED reproduction panel, not what Social Security pays and
collects. No level anchor exists in-repo; no comparison to any
administrative total is made (the context ratio is
deferred_to_anchor_extraction by amendment 1). The registration
names what would look pathological rather than predicting magnitudes:
an empty or near-empty modeled_award universe, an exclusion class
absorbing the overwhelming majority of candidates, a coverage-ratio
distribution collapsing at the 0.80 boundary, or across-draw SDs
rivaling means. The odd-year earnings carry law and its affected-share
diagnostics accompany every annual table, with biennial companions.

Runtime and publication

Twenty draws of a 2014→2022 unsplit projection plus the statutory
pipeline — hours-scale. On completion (any verdictless outcome: this
class has no verdict), the coordinator commits the artifact pair on a
branch and opens the publication PR; forecast ledger entry 8
resolves at that PR's merge
(p50 2026-08-02). Incidents, if any,
publish to runs/first_estimates_incident_<n>.json and are
cross-referenced.

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