Skip to content

agency_lifecycle_stats

Time to final rule by agency

The Aalen-Johansen cumulative incidence of a final rule, withdrawal competing (decision 54a), per agency and for all agencies (agency_code NULL), overall, routine, non-routine and per routine family: the first day it reaches each quartile, NULL where it never does, with a 95% interval from the log-log band. A cell under 30 rules keeps its row, suppressed, with no estimates; the Parquet metadata states the estimator exactly. Routine families exist for FAA, EPA and USCG only; for every other agency non_routine equals all. Cells pool every proposal year and no cohort cell is published; for a cohort (proposals since 2015, say), select its rulemaking_lifecycles rows by proposal_date and estimate it the same way. A rule is a docketed proceeding, so a Register proposal naming several dockets counts once per docket and the band treats them as independent. Keyed (agency_code, stratum). Built by build_agency_lifecycle_stats; counts and days are INTEGER.

Coverage. Derived from rulemaking_lifecycles with a survival outcome, every proposal year together (no cohort window), per agency_code as the proceeding states it (no department roll-up: HHS, CMS and FDA are separate cells). A cell covering fewer than 30 rules is suppressed. (measured 2026-09-27)

Data quality. On 2026-09-27 every unsuppressed estimate equalled R's multi-state survfit.

  • Parquet file: agency_lifecycle_stats.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
agency_code VARCHAR The agency the cell covers; NULL for all agencies together.
stratum VARCHAR The rules counted: all, routine, non_routine, or one routine family.
rules INTEGER Lifecycles in the cell with a survival outcome.
finals INTEGER How many of them became final.
withdrawals INTEGER How many of them were withdrawn.
censored INTEGER How many of them were still open at censor_date.
suppressed BOOLEAN Whether the cell has fewer than 30 rules and so carries no estimates.
q1_days INTEGER First day the cumulative incidence of a final reaches 25%; NULL where it never does or the cell is suppressed.
q1_lower_days INTEGER Lower end of the 95% interval of q1_days: the first day the band's upper edge reaches 25%; NULL where it never does or the cell is suppressed.
q1_upper_days INTEGER Upper end of the 95% interval of q1_days: the first day the band's lower edge reaches 25%; NULL where it never does.
median_days INTEGER First day the cumulative incidence of a final reaches 50%: the median time to final; NULL where it never does or the cell is suppressed.
median_lower_days INTEGER Lower end of the 95% interval of median_days: the first day the band's upper edge reaches 50%; NULL where it never does or the cell is suppressed.
median_upper_days INTEGER Upper end of the 95% interval of median_days; NULL where the band's lower edge never reaches 50%.
q3_days INTEGER First day the cumulative incidence of a final reaches 75%; NULL where it never does or the cell is suppressed.
q3_lower_days INTEGER Lower end of the 95% interval of q3_days: the first day the band's upper edge reaches 75%; NULL where it never does or the cell is suppressed.
q3_upper_days INTEGER Upper end of the 95% interval of q3_days; NULL where the band's lower edge never reaches 75%.
censor_date DATE The lifecycles' censor date, where the estimates' open rules are censored.
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:agency-lifecycle-stats: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.