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 thatmaterialized/rulemaking/latest.jsonnames - MCP
query_sqlsupport: 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_tablereply gives the live count underpublication.
| 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. |