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 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 |
|---|---|---|
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. |