Skip to content

rulemaking_lifecycles

Rulemaking lifecycles

One row per docketed proceeding (owner decisions 54-56c): its earliest proposal, the earliest the Register dates, else its upload-dated one (decision 54d), the earliest final strictly after it, or what else its events make (kind), with survival columns (outcome, duration_days, censor_date) for time-to-final estimates, Unified Agenda status and routine-family strata. A docket-less proceeding is one Register document that cannot pair and is left out. Keyed proceeding_id; joins proceedings on it and is joined by lifecycle_events. Built by build_lifecycles; dates are DATE, counts INTEGER and flags BOOLEAN. Replaces the documents-based rollup withdrawn on 2026-09-23.

Coverage. Derived, and bounded by its inputs: every docketed proceeding, paired from its cleaned lifecycle_events and censored at the day its inputs end. (measured 2026-09-28)

Data quality. A Regulations.gov document that states no Register number in fr_doc_num, or whose stated number resolves to no Register row, is dated by its upload, which for a legacy document can be years after the rule: on snapshot_9b2c770e's inputs 262 lifecycles anchor on such a document, 74 of them upload pairs outside survival (docs/ontology.md). A proposal typed only by Regulations.gov (lifecycle_events.source = 'regulations_gov', an unnumbered upload) can be a petition for rulemaking, a state program submission or an information-collection notice the Register files under another type: on snapshot_62318069's inputs 515 survival lifecycles since 2015 anchor on one (352 open); a Register number its title names is not read as its identity. Where the proceeding also holds the Register's proposal, the Register's anchors (54d); an upload keeps its anchor when a final falls between the two or the Register's is a comment-period extension or correction, so an earlier proposal whose Register copy is missing may still anchor on its later re-proposal (FDA's 1978 OTC-monograph dockets re-proposed in the 1990s). A final that finalizes another docket's proposal is paired in its own proceeding only and the proposal stays open: a RIN never groups dockets (56a), and the Register's docket labels are often an agency's own (2026-15833 names 'CMS-1849-F and CMS-0062-F' and no RIN). A Register proposal naming several dockets anchors one lifecycle per docket (502 proposals behind 2,358 of 35,327 survival rows on snapshot_62318069's inputs; EPA 20%). A posting Regulations.gov flags withdrawn (documents.withdrawn) anchors nothing: it was misfiled, duplicated, moved or replaced, and the Register publishes an agency's withdrawal of a rule as a document of its own. For routine_family pesticide_tolerance the proposal is usually EPA's notice that it received a pesticide petition (FFDCA 408(d)(3)), typed Proposed Rule, not a proposal of rule text: 443 of the 459 EPA tolerance lifecycles proposed since 2020 on snapshot_448e6d9a's inputs. Time to final then runs from the receipt notice, and proposal_form does not tell the two apart. FDA's notices that it filed a food or color additive petition ("Filing of Food Additive Petition", "… Color Additive Petition") are the same case with no stratum: the Register types them Proposed Rule (its action, "Notification of petition.", is not carried by federal_register), routine_family is NULL, and on snapshot_55d396ee's inputs 64 of the 199 FDA lifecycles proposed since 2018, and 130 of the 831 in the published FDA cell, anchor on one. Match the proposal's Register title (filing of … petition) to set them apart. A count of lifecycles counts docketed proceedings, not rulemakings: FNA's three open lifecycles on that snapshot are one RIN, 0584-AF22, in dockets FNA-2026-0034, -0166 and -0201; count distinct proceedings.rin for rulemakings.

  • Parquet file: rulemaking_lifecycles.parquet, in the snapshot that materialized/rulemaking/latest.json names
  • MCP query_sql support: Configured; requires an available artifact.
  • Publication status: Not established by this schema page or its measurement date.
  • Row count: Not stated here; the MCP describe_table reply gives the live count under publication.
Column Type Description
proceeding_id VARCHAR The docketed proceeding the lifecycle reads; joins proceedings.proceeding_id.
agency_code VARCHAR The proceeding's agency code.
kind VARCHAR What its events make: finalized (a final strictly after the proposal), companion (a Register-dated final on the proposal's Register day, 54b; no survival outcome), upload_pair (an upload-dated proposal and a final that day, 54c; no survival outcome), withdrawn (a Register or Agenda withdrawal on or after the proposal, no later final), open (censored at censor_date), final_without_observed_proposal or no_anchor.
proposal_date DATE Day of the earliest proposed event; NULL without a proposal.
proposal_document_id VARCHAR The proposal's document: a dated Register record id (number@YYYY-MM-DD) when the Register dates a proposal of the proceeding, else a Regulations.gov document id (decision 54d).
proposal_form VARCHAR The proposal's form from its title: proposed, advance_proposed, comment_period or correction.
final_date DATE Day of the final the lifecycle pairs or anchors on; NULL without one.
final_document_id VARCHAR The final's document, spelled as proposal_document_id is.
final_form VARCHAR The final's form from its title: final, interim_final, direct_final or correction.
finals_before_proposal INTEGER Finals dated before the proposal, counted and never paired; NULL without a proposal.
withdrawal_date DATE Day of the withdrawal that makes it withdrawn; NULL otherwise.
withdrawal_document_id VARCHAR The withdrawal: a dated Register record id, or the agenda item id (urn:rkaf:us:rin:<rin>) of an Agenda withdrawal.
withdrawal_source VARCHAR Who withdrew it: federal_register or unified_agenda.
outcome VARCHAR Its survival outcome: final, withdrawn (a competing outcome) or censored; NULL for a kind outside survival.
duration_days INTEGER Days from the proposal to the final, the withdrawal or censor_date; NULL without an outcome.
censor_date DATE The generation's last event day, capped at the run's day, where open lifecycles are censored; one date in every row.
open_signal VARCHAR What the latest Unified Agenda entry of its specific RINs says (agenda_completed_final, agenda_completed_withdrawn, agenda_completed_other, agenda_long_term, agenda_active, agenda_dropped_off), else not_on_agenda or no_specific_rin.
routine_family VARCHAR The routine family the proposal's own title names (the final's without a proposal; the proceeding's with no anchor), read at time zero so the stratum never depends on the outcome (decision 55a): airworthiness_directive, airspace, state_air_plan, pesticide_tolerance (pesticide-petition receipts included), coast_guard_local; NULL otherwise.
agenda_priority VARCHAR That Agenda entry's priority_category (e.g. Economically Significant); NULL without one.
agenda_major VARCHAR That Agenda entry's major (Yes, No or Undetermined); NULL without one.
specific_rins_json VARCHAR JSON array of the RINs the proceeding's docket-side evidence alone holds.
anchored_by_specific_rin BOOLEAN Whether its proposal or final anchor joined the proceeding by specific RIN (decision 56c).
pre_2008_coverage BOOLEAN Whether it is anchored before 2008, when Regulations.gov coverage is thin; NULL without an anchor, or for an upload pair from 2008 on.
method VARCHAR How the row was asserted; deterministic (computed by rule) throughout.
actor_id VARCHAR The builder that asserted the row, with its version (spicy-regs:rulemaking-lifecycles:v<n>), bumped when its published rows change.
run_id VARCHAR The materialization run that built the snapshot (e.g. rulemaking-20260927T062656Z).
asserted_at VARCHAR When that run asserted the row, as a UTC ISO 8601 instant.
supersedes_id VARCHAR Id of a prior row this one continues; always NULL here: lifecycles are recomputed each snapshot and continue no prior row. proceedings.supersedes_id differs: there a continuing proceeding names its own id.