Skip to content

comment_periods

Derived submission-date windows

One row per rule-derived group of source-reported date windows. A notice is a Register record with the Regulations.gov documents whose fr_doc_num resolves to it, or a Regulations.gov document without a resolved Register record. The builder groups candidate extensions when its title matcher flags extension/reopening language and an abstract's page citation or a qualifying shared RIN uniquely identifies an earlier notice with an overlapping or adjoining window; conflicting targets do not link. A gap starts a separate period. These are candidate relationships, not verified legal extensions or supersession. A docket or proceeding anchors a group (anchor_kind) but never merges two; Federal Register feed dockets (AGENCY_FRDOC_0001 and the like) anchor nothing. Keyed comment_period_id. Proceedings, dockets and RINs are JSON lists used for navigation. Built by build_comment_periods; all columns are VARCHAR.

Coverage. Derived, and bounded by its inputs: every federal_register record with a comments_close_on, every documents row with a comment end date, and every Register record such a document copies lands in exactly one period, anchored or not. Left out are windows that close before they open, placeholder closes (see data quality), and legacy Regulations.gov documents that state a comment end but neither a comment start nor a posting date (all closing by 2011); the builder logs each count. Live row counts come from describe_table. (measured 2026-09-28)

Data quality. For date-range discovery, test all three date columns (close_date, register_close_date and regulations_gov_close_date). They can concern different purposes, including comments, replies, objections, hearings or petitions; the builder does not classify legal submission purpose. close_date is the maximum normalized close among grouped records, not the legally controlling/current deadline. The source-specific columns retain each source's maximum; a difference is not resolved by choosing the later value. Base Federal Register dates remain historical statements of each dated publication, not current status, and Regulations.gov records can update independently. Inspect source filing instructions and later notices; neither title matching nor a shared docket/RIN proves legal effect. Extension/correction documents with NULL dates can exist outside these windows, and NULL does not establish no deadline. A close on or after 2050-01-01 is a placeholder and states nothing: the inputs hold no close from 2033 to 2049, and every later one is a stand-in (Regulations.gov's 2099 and 2100 dates, FDA's 2050-02-21 open dockets, Register year typos such as 3008 for 2008). A record whose only close is a placeholder, or whose window closes before it opens, adds no dates; it is listed only as its notice's Register record when a copy states a window. The formal rulespec export is the anchored rows (anchor_kind <> 'none'), since rulespec's CommentPeriod needs a proceeding or docket anchor; no export exists yet. A Regulations.gov document is a notice's copy only when its fr_doc_num says so, so a copy that omits it stands as its own notice: on the 2026-09-28 inputs about 2,950 such documents share a docket, close day and opening (within three days) with a Register notice. An extension stays its own period when it names its notice by neither page nor RIN, when its title says "extension of time for comments" (the title matcher misses that phrasing), or when its page or RINs name more than one open notice: one extension of two proposals (2022-13209 extends 2022-08993 and 2022-08994 under RINs 0910-AI28 and 0910-AI60) links to neither. A legacy Regulations.gov document whose posting date is decades early (see documents) opens its period that early.

  • Parquet file: comment_periods.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
comment_period_id VARCHAR Stable id of the period (comment_period_<24 hex>), from the records that open it.
proceeding_ids_json VARCHAR JSON array of the proceedings its notices belong to; [] when none resolves.
rins_json VARCHAR JSON array of the RINs its records state and its proceedings hold.
docket_ids_json VARCHAR JSON array of the Regulations.gov dockets anchoring it: those its Register record names, else those of its copies, else a Regulations.gov notice's own; never a feed docket. [] where the publishers place the notice in no docket (the Register names none and no copy sits in one, as for FCC-2026-2942-0001), which is not proof that none exists.
open_date VARCHAR Eastern day the period opens: the earliest opening among its records (a document's comment start, else its posting; a Register record's publication), YYYY-MM-DD.
close_date VARCHAR Maximum non-placeholder normalized close among grouped records, YYYY-MM-DD: the later of register_close_date and regulations_gov_close_date. Not a legally controlling/current deadline or a submission-purpose classification. Search all three dates; see data_quality.
source VARCHAR The sources of the dates it takes, +-joined: documents.comment_end_date and federal_register.comments_close_on.
opened_by_artifact_ids_json VARCHAR JSON array of public URLs of the records whose window opens the period on open_date.
evidence_ids_json VARCHAR JSON array of every record in the period, each in exactly one period: dated Register record ids (number@date), a notice's Register record included when only its copies state a window, and Regulations.gov document ids.
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:comment-periods: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.
unresolved_fr_references_json VARCHAR JSON array of unresolved Register number references attached to its evidence.
anchor_kind VARCHAR What anchors the period: docket when a docket does, proceeding when only a proceeding does, none when neither; the rulespec export takes the anchored rows.
register_close_date VARCHAR Latest comments_close_on of its Register records, YYYY-MM-DD; NULL when the Register states none.
regulations_gov_close_date VARCHAR Latest comment end (Eastern day) of its Regulations.gov documents, YYYY-MM-DD; NULL when none states one.