Fork delivery decisions — September 22, 2026
Mike answered the open delivery questions in the fork output ledger and consolidated backlog on September 22, 2026. Each entry states the question in terms of what users get, the decision, and the work it sets. The ledger owns status and pins, the backlog the order of work, and the execution log the dated narrative (decision 16); this record holds only decisions and how their meaning changed. Decisions 14–29 were delegated on 2026-09-23 (below).
| # | Question | Decision | Consequence |
|---|---|---|---|
| 1 | Should people get bill history back to earlier Congresses, not just the current one? | Publish the broad family, labelling inherited values. | Accept the 11,021 URLs absent from raw BILLSTATUS but inherited from the same bill identity with proven lineage, provided each carries an inherited-provenance label. Reconcile the newer public 119th Congress rows into the 419,839-bill candidate, then publish. Unblocks the 18 T09 tables, T16 subjects and the narrow bill writer, and vote/press bill links. |
| 2 | Which term does a vote count toward on the day one Congress ends and the next begins? | Half-open terms, with a unique inclusive-end fallback. | Match term_start <= vote_date < term_end; only where that finds no term, accept an inclusive end if it yields exactly one term. On the frozen 1,573-vote selection this resolves 15 of 18 unmatched rows with no ambiguity (all 1,855 inclusive ambiguities fall on 2025-01-03); the remaining three Not Voting rows (G000578 2025-01-03, S001157 twice on 2026-04-22) stay explicitly unmatched. Evidence: votes-qualification/complete-member-join-replay.json. |
| 3 | Should people be told which public tables are verified? | Leave as is. | No per-table verification status is added to the catalog or MCP metadata, and scheduled runs keep publishing before audit. The ledger remains the record of qualification. |
| 4 | How should we answer "how long does this agency take to finalize a rule?" | Wait for source-linked rulemaking relationships. | rulemaking_lifecycles stays unpublished; do not patch the earliest-proposal/earliest-final pairing. Derive timing from the T17 outputs (proceedings, rule_targets, …) once their five parents qualify. |
| 5 | What should people see when a member's committee is not in the committee list? | Source-backed aliases. | Retain the complete Congress.gov committee listing and details, map the 138 assignments across fourteen converted codes only through source-backed aliases (House select hs/hl, joint committees, JSIK00), and keep any still unresolved visible as not listed. Never match by name: the Joint Economic Committee has several codes. |
| 6 | How should people get the text of court opinions? | Link out only. | Do not build or host court_opinion_bodies; the ~109 GB build and its capacity plan are dropped. The published clusters' cluster_id and absolute_url are the route to text through CourtListener. No MCP fetch tool is added. Remove the output from the intended set and its ledger/backlog rows. |
| 7 | How complete must public comments be before improvements are published? | Publish in cohorts. | Publish the six-agency repair after independent review, then continue agency by agency, ACF next (129,052 comment originals, 380,321,010 bytes, fully listed). |
| 8 | Which court cases should the dockets table cover? | Keep the APA-only selection. | The first answer (opinion-linked dockets) was given without the earlier approval of the APA-899 scope recorded in court-dockets-qualification/MANUAL-AUDIT.md; asked again, Mike kept APA-only. The published 11,459-row selection stands, the full 71,677,647-row bulk set stays private, and clusters reach any case through cl_docket_id and absolute_url. |
| 9 | Do people need the parties and lawyers in each case? | Fetch a bounded subset. | Bulk exports omit party/attorney tables. Acquire them from the CourtListener API for an explicitly scoped subset with a token and retained responses. The subset is not yet chosen; the natural candidate is the published 11,459-row APA selection. PACER is not used. |
| 10 | Should contractor (SAM) and lobbying data come back? | SAM first, then lobbying. | Resume SAM through spicy-docs' bulk-extract path once source-specific access is confirmed, with a bounded retained initial load; then lobbying. The workflows already forward SAM_API_KEY and LDA_API_KEY, but neither secret is set on the fork yet. |
| 11 | What happens to the unpushed spicy-docs and spicy-regs commits? | Pushed. | spicy-docs 1dc7701..54ddbea to civictechdc/spicy-docs; spicy-regs 4f78b32..0f038f2 to mikewolfd/spicy-regs. Scheduled runs now use that code. |
| 12 | How should the stalled daily docket refresh be fixed? | Use a CourtListener token. | The scheduled rollup-courtlistener run timed out on 2026-09-21 and 2026-09-22 under HTTP 429 retries. The workflow already forwards COURTLISTENER_API_TOKEN; the token from the workspace .env (COURTLISTENER_API_KEY) passed an authenticated request and is now the fork's secret. Local runs still need it exported under the COURTLISTENER_API_TOKEN name the reader uses. |
| 13 | Keep the 54.6 GB opinions original now that bodies are not built? | Keep it. | It is verified retained evidence; revisit only if disk becomes the blocker. |
Found while acting on these
The vendored vendor/spicy_docs-0.26.5-py3-none-any.whl in this repository was rebuilt
with post-0.26.5 SpicyDocs code (it contains spicy_docs/sources/sam_extract.py) while
keeping the 0.26.5 label, so two different wheels now carry that name across the stack
(DocSpec, SpicySearch and Engine vendor the release built from 1dc7701). Every
spicy_regs.sources and spicy_regs.transforms module imports against it; the next
SpicyDocs release should carry a new version and a recorded source commit.
Resolved the same day: SpicyDocs 0.26.6 (6673fa3) and Rulespec Artifacts 1.1.1 (a3acb04)
carry the changed code under new versions, with DocSpec 0.9.1 (2cdde74) and RefSpec
0.1.0.dev14 (1e1d2d7) rebuilt on them. This repository, DocSpec, RefSpec, SpicySearch and
Engine now vendor byte-identical copies, each recorded with its source commit; the
mislabelled 0.26.5 wheel stays here only for replay.
Later changes
Status and pins for each consequence are in the ledger; these entries record only what changed about a decision or its consequence.
- Decision 12, 2026-09-22 (
0fcbc21): the token reaches only thecourt_docketsrollup. A free token's limits (10/minute, 100/hour, 250/day) cover the daily docket delta but not the cluster rollup's search catch-up, which stays keyless. - Decision 4, 2026-09-23: a scheduled run had published
rulemaking_lifecycles; it is withdrawn from the index and its workflow stays off. Agency timing now comes from the bootstrapped rulemaking dataset (proceedings,comment_periods); its docket-join and day-rule limits are addressed by decision 18. - Decision 6, 2026-09-23: the opinion-body builder, rollup, workflow and registration are deleted; the push deleted the fork workflow.
- Decision 5, 2026-09-23: the House select aliases (
hs/hl, from the native committee type and parent) are live. 28 seats stay unlisted for want of a publisher link, not by policy: 25 House seats on the Clerk'sEC00,IT00,JL00andJP00(typedjoint, with no Congress.gov code) and three Senate seats onJSIK00(no such committee on Congress.gov in the 118th or 119th). Nothing is matched by name. - Decision 2, 2026-09-23 (
c113329): implemented as the derived tablemember_vote_terms;member_votesis unchanged. - Decision 7, 2026-09-23: the six-agency cohort and then ACF are published, each after independent review. The next cohort is the next agency.
- Decision 1, 2026-09-23: the reconciled family is published; every inherited
URL carries
url_source = inherited(SpicyDocs 0.28.0, adopted in spicy-regs6d34a1b). - Decision 10, 2026-09-23: SAM's and then lobbying's bounded initial loads are
published, and the fork has
SAM_API_KEYandLDA_API_KEY. Both workflows were re-enabled after the push (decision 22). Local runs readLDA_API_KEY; the workspace.envnames the keyLDA_KEY. - Decision 11, 2026-09-23: pushed as fast-forwards: spicy-regs
a9c794e..b89c7dctomikewolfd/spicy-regsand spicy-docsdca01d4..1b0c6df(through release 0.29.0) tocivictechdc/spicy-docs. The seven workflows held for the push were re-enabled (decision 22).cfr_sectionsstays off until the CFR ancestry fix (SpicyDocs consolidation plan A8), andrulemaking_lifecyclesby decision 4.
Delegated decisions, 2026-09-23
Mike delegated the questions left open by the parsing survey and its validation to
an independent reviewer with no prior context, which decided each from the
evidence it was given and could read. Mike can overturn any of them. The rulings
refer to §5 of SpicyDocs' consolidation plan
(spicy-docs/docs/research/consolidation-path-2026-09-22.md), which carries the
items; the evidence is in spicy-docs/docs/research/parsing-survey-2026-09-23.md.
| # | Question | Decision | Why |
|---|---|---|---|
| 14 | Does spicysearch drop its citation grammar when RefSpec's moves into spicy-docs (plan B4)? | No; only the data-side grammar moves. | The plan's §11 keeps spicysearch's query grammar behind an adjudicated boundary test; identifiers.py detects shapes in query strings and deliberately refuses unlabelled tokens, so its differences from RefSpec are query-intent choices, not defects. |
| 15 | The plan's suggested ids SR05–SR08 collide with spicy-docs' SR01–SR15 series. | Keep spicy-regs' own sequential series and name the namespace. | spicy-regs' SR01–SR04 already share the letters; renumbering the new rows would imply one series. Cross-repo cites carry the repo name, as build_lobbying_filings.py:59 does. |
| 16 | How should the fork docs stop drifting? | One home per fact; qualified pins with a checking script; a units convention; the dated narrative in a versioned log; load-bearing numbers cite a script or receipt. | Most validation errors were one fact repeated in several places, "live" claims overtaken by scheduled runs, and unit mix-ups. The log lives in docs/research/ because the receipts directory is not versioned. |
| 17 | Ruling 5: cfr_ref for title 43's subpart-numbered sections. |
The printed citation, e.g. 43-1601.0-1, with part 1600. |
cfr_ref is a join key, and the Federal Register side composes it from printed text, so only the printed spelling joins; NULL would drop 3,018 joinable rows. part carries the structure and cfr_ref the citation, and the column description says so. |
| 18 | Ruling 6: admit label-derived dockets and unpadded FR numbers in the rulemaking tables? | Admit both, with one actor-id bump per table. | Only 48,169 of 899,227 FR–docket links join today; label-aware reading roughly triples that, and unpadding resolves 40,340 of 49,403 misses with no ambiguity. Both read the publisher's own spellings. Use RefSpec's reader, delete the unused local copy, and keep unresolved links as rows. |
| 19 | Ruling 7: comment text provenance. | Status derived, not ok; one Mirrulations tool per comment by a fixed preference order, recorded per attachment. |
ok means spicy-regs ran the extractor. Pick the order by one bounded measurement of how often tools overlap, and pin it as a policy constant. |
| 20 | Ruling 8: keep catalog.json? |
Keep only table_metadata.json. |
catalog.json is an exact projection of it, unpublished, and its only consumer is an unread vendored copy in spicysearch. Delete the file, its sidecar, the catalog subcommand, its tests and the vendored copy. |
| 21 | Ruling 9: who normalizes Federal Register and Regulations.gov search fields? | spicysearch keeps deriving for now; spicy-docs is the destination after D3. | The differences with DocSpec's stored values are staleness of an older build, not disagreement. Keep the agreement measurement as a drift check. |
| 22 | Re-enable the seven workflows held for the push? | Yes, all seven. | The only reason for disabling them, older code overwriting corrected tables, ended with the push. Re-enabled 2026-09-23. |
| 23 | Fix the logged-key defect now or wait for a spicy-docs route (plan A5)? | Now, in spicy-regs. | Send the key only in X-Api-Key, never log a URL carrying it, and abort on 401/403; the other Congress readers already do this. |
| 24 | The stale fr-audit-2026-09-23/monthly-diff.json receipt. |
Delete it. | No retained script produces it and a recount confirms the ledger (393 months equal, 1,009,005 rows). The receipts directory is unversioned, so the deletion waited for Mike, who approved it on 2026-09-23; it is deleted. |
| 25 | The consolidation plan's §6 gate cannot pass as written. | Compare only over the reference's keys. | Restrict both EXCEPTs to the reference's (document_number, publication_date) keys and require zero rows; count generation-only keys, each of which must post-date 2026-09-14. Rebuilding the reference from the artifact under test would only check it against itself. |
| 26 | Ruling 10: DocSpec stores Regulations.gov deadlines as the UTC date, a day late. Move its policy now? | No; correct the consumers now, DocSpec's policy with the Track D rebuild. | Nothing downstream reads DocSpec's stored commentCloseDate: spicysearch reads the raw instant and Engine converts calendar bounds at UTC midnight, so the user-visible defect lives in the consumers. The preparer derives its day fields with the spicy-docs helper, "through X" filters on them, and spicy-regs' comment_periods imports the same helper. DocSpec's policy version moves once, in the rebuild D3/D4 force. |
| 27 | Ruling 11: which Federal Register document-number IRI space? | RefSpec's rkaf spaces; delete urn:spicy-regs:frdoc. |
No published spicy-regs column carries the local space: the tables mint urn:rkaf:us:rin: and the canonical CFR IRI, both in full agreement with RefSpec, and the docs make the federalregister.gov URL the fallback identity. The only live emitter of the local prefix is rulespec-projection's copy, which nothing runs. One partner namespace is still to be named when the minter moves. |
| 28 | Ruling 12: where the IRI minters live. | spicy-docs, beside the identifier shapes; not Rulespec Core. | The minters are refusal logic over the shapes and a collision table, not format-only; a Core minter would either copy the shapes or take pre-validated strings, and adding rulespec-conformance (rdflib, pyshacl) to spicy-regs for an f-string is not justified. REF-024's mechanism (installed packages, never sibling trees) is met by the spicy-docs wheel; narrowing its "identity functions" clause so Core owns the lexical spaces and spicy-docs' tests assert its minters against them is a cross-product amendment Mike confirms. Confirmed by Mike 2026-09-24 (REF-024 amended in RefSpec). |
| 29 | Ruling 13: how the committee-report tables represent multi-part GovInfo reports. | One row per part: identity (package_id, part_id) plus part_number; committee_report_reads stays keyed by package; hold CRPT-119hrpt811 out until this lands. |
A refused refresh keeps the prior row, so a Part-1 row published under the package identity would sit stale and be retried forever once Part 2 appears (Part-1-only records persist for years: CRPT-112hrpt38), and CRPT-119hrpt494 is already silently half a report. The contract family already keys nominations and treaties on a part-bearing citation or suffix. Mike confirms the identity move (DocSpec 0003 precedent); the constituents reader and the appended column can start first. Confirmed by Mike 2026-09-24: B31 ships in the next SpicyDocs release; spicy-regs adopts it in the same release it vendors. |
| 30 | How U.S. Code section keys join when the grammar lower-cases section letters (31-5318a) and law_code_sections prints them (5318A). |
Lower-cased on both sides: the grammar's usc_section key stays, and law_code_sections and table3_records carry a derived usc_section_key beside the as-printed usc_section. |
Case carries no identity in the Code (no case-only pair in the 119th table, the OLRC release point or 1.57M annual rows), lower-case is already the join key in RefSpec's oracle, spicy-regs' citation ontology and spicysearch, and a verbatim column beside a derived key is the tables' existing pattern; folding at join time in every consumer is how the miss (142 of 814 lettered rows) went unnoticed. Blind ruling 2026-09-23. Confirmed by Mike 2026-09-24. |
| 31 | Whether the narrow congress_bills list writer keeps running while plan A1 is open. |
Disabled on 2026-09-23 until A1 restricts it to columns the family writer does not own. A1 retired it instead: the family's daily run refreshes the whole 119th, the list writer's schedule no more often. | Its run of 2026-09-23 published c789aaa9…, replacing 3,044 update_date instants with same-day dates against the documented larger-value merge and 3,095 congress.gov page URLs with API resource URLs, and skipping 13 in-window bills; a stale list costs one cron's lag, a wrong one costs every consumer a re-read (drift audit receipt). Confirmed by Mike 2026-09-24. |
| 32 | Which Regulations.gov dockets are rulemaking action dockets in proceedings, given that "rulemaking" in docket_type also matches Nonrulemaking. |
A docket is an action docket when it states a RIN, its docket_type is exactly Rulemaking, or one of its own documents cites a Federal Register document that carries a RIN or a rule stage (amended 2026-09-24 after review: 392 of the removed proceedings held a RIN that way); the Nonrulemaking shells with none of these leave proceedings, and their comment periods stay docket-anchored. The same gate applies to a docket that enters proceedings only through a Federal Register link: a RIN-less notice naming it is not action evidence (36,154 such single-docket proceedings). An agency's Federal Register feed docket (*_FRDOC_*) is none of its own documents' evidence: they post other rulemakings' FR documents, so they make it no action docket and it takes none of their RINs, CFR parts, stages or agenda links; its citations stay typed rule_targets edges (amended 2026-09-26, owner ruling on the typed-citation receipt). A feed docket forms a proceeding only on a RIN it states: Regulations.gov's Rulemaking type does not make one, nor does an FR document naming it; and feeds are the _FRDOC_ dockets plus four title families under ordinary ids, each matched on id and title together: DOT's "Federal Registers for Applications, Notices, and Orders - Miscellaneous" (12), "HHS 20XX Publications" (4), the DOE family's FDMS sandboxes (23) and FAA's "Duplicate FR Feed Documents" (1) (amended 2026-09-26, owner rulings on the catch-all receipt). |
The dockets table holds exactly Rulemaking (63,127; 62,791 with a RIN) and Nonrulemaking (215,997; none with a RIN); the shells are FDA civil-money-penalty orders, FAA and DOT-OST exemptions, permits, meetings and information collections, each a single-docket proceeding duplicating its docket row; the pipeline defines a proceeding as a rulemaking with its actions, and no consumer reads proceedings yet. Effect on the published snapshot's parents, with the amendment and decision 33: proceedings 462,939 → 268,291 (156,840 dockets with no RIN, evidence or link and 36,155 held only by RIN-less notices leave; 58,658 such notices leave with them); rule_targets edges unchanged in count, agenda relationships move with merged proceedings; 128,248 comment periods keep their anchor but re-key. Blind ruling 2026-09-24. Confirmed by Mike 2026-09-24; merged in spicy-regs and materialized by the next scheduled run. Feed dockets, measured 2026-09-26 on the R5 parents: all 176 end _FRDOC_0001 and are typed Rulemaking; 155 of the 175 with documents are titled "Recently Posted … Rules and Notices" and the rest are feed dockets titled after a document; they cite up to 1,324 action notices and held 6,025 RINs, 8,864 CFR parts, 12,133 stage events and 547 agenda links, of which 7 RINs and their 7 links were their own. Replayed at bb385d4: the 176 stay proceedings by their type; 6,018 RINs leave them, every one still held by the proceeding of a notice the feed cites; 540 agenda links leave (411 items keep another link, 35 of them now single-observed); 1,800 comment periods lose the feeds' RINs; no other proceeding, link or period changes. No data test finds other feeds: 50 or more cited notices and no RIN of the docket's own also takes 18 program series (FEMA flood elevations, the NPL, NMFS in-season actions) beside 6 feed-titled dockets, so the rule is the identifier. Shells and title families, replayed at ee6af4b: the four families match exactly the 40 measured dockets among the 279,429; 194 feed proceedings go (169 _FRDOC_ shells and 25 titled feeds); the 7 feeds with a RIN of their own stay unchanged; DOT's Miscellaneous feed proceeding continues as the FR-only proceeding of the rule DOT filed there (2025-02814), keeping its id; every one of the 773 RINs that leave is held by another proceeding; 2 agenda links go (FAA-2007-0004's documents to 2120-AA64, which keeps 16,272 others); 2,365 comment periods become docket-anchored and re-key with all 20,670 evidence ids kept; no other proceeding changes. Both publish as proceedings v9, agenda v5 and comment periods v9, one bump each over the published snapshot. Receipt frdoc-catchalls-2026-09-26/. |
| 33 | Whether every FR document merges all the dockets it names into one proceeding (which built a 483-docket FDA and a 412-docket FMCSA proceeding from RIN-less notices). | Only an FR document with a RIN or a rule stage unions the dockets it names; other documents attach to each named docket's proceeding as a reference. A comment period whose notice names dockets now held by several proceedings lists every one of them in proceeding_ids_json (amended 2026-09-24 after review: 954 periods had picked none). A docket's own document citing an action notice unions nothing either: rule_targets records it as a typed edge, docket_document_cites_action_notice (rule-targets v6; amended 2026-09-26 on the owner's question, confirmed by the owner 2026-09-26). |
The glue is not rulemaking: of 2,467 multi-docket documents, 1,642 are RIN-less Notices (FMCSA driver-exemption applications naming up to 100 dockets; FDA information-collection approvals, 449 of 483 dockets Nonrulemaking); a size cap has no natural gap (2→100 continuous; K=2 still leaves 14-docket chains and discards NPL rules). With the gate, multi-docket proceedings fall 1,002 → 435 and their dockets 4,202 → 1,260; the residual 56- and 43-docket EPA proceedings are National Priorities List rules over all-Rulemaking dockets, a genuine series. Blind ruling 2026-09-24. Confirmed by Mike 2026-09-24; merged with 32. Citations, measured 2026-09-26 on the R5 parents: 47,699 of 116,642 docket-to-action-notice citations cross proceedings, and uniting them would fuse 58,286 of 268,159 proceedings, the largest holding 5,920 dockets. Catch-all *_FRDOC_0001 dockets (161, 12,016 of the citations) and omnibus notices (FDA's withdrawal of 128 suitability petitions, posted in 42 dockets) glue them; without the catch-alls one still holds 1,299 EPA dockets. Only the 572 dockets that are action dockets by the citation alone would merge cleanly: a hand check found all 8 sampled to hold their own notice under an old or agency-internal number, but 28 of their merged proceedings would still join two or more docket proceedings. Receipt typed-citation-join-2026-09-26/. |
Owner decisions, 2026-09-26
Mike decided these directly after the read-only investigation of every open ledger item. The evidence
behind each, including state, cost and the recommended path, is in
fork-execution-2026-09-21/open-work-investigation-2026-09-26/ (one file per cluster).
| # | Question | Decision | Why |
|---|---|---|---|
| 34 | Install a Gemini key so the model tables fill? | No; bill_summaries, diff_summaries and section_classifications stay empty. |
The backlog is small (about $9), but models run only on printings parsed in the same pass, there is no cap, and the diff-summary prompt calls every bill an appropriations bill (805 of 813 pairs are not). financial_changes is off by design in spicy-docs (pair_amounts=False). |
| 35 | Federal Register topics and contract. | Approved: federal_register publishes topics_json from the spicy-docs projection (consolidation plan B2; spicy-regs a7e32d2), and spicy-docs gains a federal_register contract (branch fr-contract, 0a3eabd). There is no documents → federal_register Reference: the registry requires a reference to name its parent's identity, and fr_doc_num names a number, not the dated (document_number, publication_date) record, so table_joins watches it as a design join (amended 2026-09-26). |
114,677 FR entries lack topics because spicy-regs' copied shaper drops the column. The resolved document-to-FR link is interpretation and becomes a DocSpec typed layer on spicy-docs' unpadded_federal_register_document_number key (98.6% resolve); documents.fr_doc_num stays as Regulations.gov states it. |
| 36 | Superseded generations are never deleted. | Keep every generation the ledger, DocSpec or the MCP pins, plus the last N per family; delete the rest. | Storage grows as O(runs × family bytes): the bill family already keeps 22 generations (1.05 GiB), and court clusters would add about 3.7 GiB a week. N is proposed as 3. |
| 37 | Custom domain for the fork bucket. | Yes, if the fork serves queries directly. | The r2.dev host returned HTTP 429 under light query load. DocSpec and the MCP do not need a domain. |
| 38 | Repair the inherited comments' missing native fields in one bulk pass? | No; agency by agency, as decision 7 set. | The gap is large (a re-check found 37.5% of sampled unrepaired rows lack a name, organization or category the original holds; the investigator's 76.5% counts attachments too). Each cohort is still repaired and reviewed on its own. |
| 39 | Whole-population qualification of dockets and documents. | DocSpec's 2026-09-25 row-by-row comparison against the Mirrulations supply counts, once the ~64k records the supply lacked or that changed since are re-compared. | It compared every mapped column in both directions, independently of the ETL; 278,607 dockets and 1,943,106 documents agree, and every difference is a later publisher edit. |
| 40 | The dated comments partition tree (comments/agency_code=…/docket_id=…/year=…/month=…). |
Retire it: remove the declaration and delete the non-Iceberg writer that could still produce it. | Nothing reads it: the web app reads upstream's per-agency files, the MCP and DocSpec read the monolith or the agency mirror, and the fork never produced it. |
| 41 | Comment attachments only the second extraction tool holds. | Fall back per attachment to the other tool when the chosen one lacks that attachment, and record the tool per attachment (amends decision 19). | 13 CMS comments from 2009–2010 lose one attachment's text each under one-tool-per-comment; the provenance already has a per-attachment tool field. |
| 42 | Bring back rulemaking_lifecycles? |
Yes, after proceedings v10: pair within a rulemaking proceeding, never group on a missing docket, and keep final rules that have no proposal. | Decision 4 waited for the source-linked rulemaking tables; without the v10 catch-all exclusion, 124 feed proceedings would produce false pairs. |
| 43 | Move the web app's docket search box to Engine? | Not until Engine has a hosting decision; the web app keeps upstream's blob. | Engine already indexes dockets, but it listens only locally, has no CORS and allows two requests at a time. |
| 44 | Fetch document bodies? | Not now. | Nothing in the stack reads them. If they are wanted later, they become a separate DocSpec layer, HTML first (about 480k FR documents, ~11.8 GB), not columns of documents. |
| 45 | Placeholder dockets for the 67 GIPSA ids Regulations.gov rejects as Invalid ID? | No; keep the recorded refusals. | They have no alternate id to map to, and a placeholder would invent a record the publisher does not have. docket_gap_outcomes.parquet holds each 400 answer. |
| 46 | FCC filings scope. | Filings received since 2018, backfilled by received-year windows, newest first, excluding the 2017 net-neutrality flood. | About 1.17M filings against 30.68M total, 23.97M of them in the 2017 docket; split the table by year before it passes about 500 MB. |
| 47 | Lobbying history. | All years, after each filing's activities and lobbyists are stored as their own rows, so history is fetched once. | 1.98M filings, about 26 hours keyed and about 340 MB; backfilled by filing year like SAM. |
| 48 | USAspending recipients beyond the top-100-page selection. | Walk every recipient with a positive trailing-12-month amount weekly, and keep recipients that drop out. | About 231,700 recipients, 2,317 pages and 20–35 minutes; about 100,000 SAM entities gain a funding figure, up from 6,390. Dropouts are kept, not retired. |
| 49 | CourtListener's ~780 non-civil APA dockets. | Keep them and flag the case type. | Readers filter on the flag; exclusion would hide dockets someone may want. |
| 50 | Which CourtListener dockets get party and attorney records? | Fill the 3,693 missing party names (about 190 batched requests), and take full records only for agency-party dockets linked to a rulemaking. | This fits the free token's budget, which halves on October 1 (5/min, 50/hour, 125/day). |
| 51 | Host individual FEC contributions? | Later, and only the 2024 and 2026 cycles, after tables can be stored as multiple files. | The single-file table would be very large. |
| 52 | Which agency readers to adopt? | All four: SEC, FERC, CFTC and USITC EDIS. | They shipped in spicy-docs 0.34.0 with no consumer. EDIS bulk jobs need a signed-in session client, and spicy-docs adds checkpoints and release profiles first. |
| 53 | FEC committee history source. | The 24 bulk committee-master files, not the PostgreSQL dump. | 24 requests give 89,710 committees and 298,395 committee-cycle rows; the same read replaces the 897 paged requests a day, plus a small daily delta. |
Where decisions 34–53 stand (2026-09-26, 20:30 UTC)
Commits are spicy-regs fork main unless named. "Left" is what remains and what it waits on.
| # | State | Evidence | Left |
|---|---|---|---|
| 34 | Settled. | — | Nothing; the three model tables stay empty. |
| 35 | Done. | a7e32d2 (topics_json); spicy-docs 0.42.0 contract adopted in aede342; the full re-read of 2026-09-26 fetched all 1,009,313 documents. |
The resolved document→FR link, as a DocSpec typed layer (DocSpec). |
| 36 | Executed 2026-09-27 (decision 62); weekly from then on (63). | Planner 283a854, 88cd489, 8c6680c (the rulemaking snapshot's input tables are kept too); gated execution a5ef304 (plan-generation-retention.yml). Plan run 36283796407: 117 generations (5.02 GiB) deletable, 187 kept (11.89 GiB); every ledger pin, DocSpec pin and snapshot input kept. Review list: generation-retention-2026-09-26/review-run-36283796407.md. |
Nothing. Rulemaking snapshots and source-evidence/ blobs stay outside the plan. |
| 37 | Conditional. | — | Only if the fork serves queries directly. |
| 38 | Open, agency by agency. | — | Per decision 7's cohorts (spicy-regs). |
| 39 | Open. | — | DocSpec re-compares the ~64k records first; then the ledger records the qualification. |
| 40 | Done on branch retire-comment-partitions, not yet on main. |
b9e13bc removes the ETL's non-Iceberg comments writer, the use_iceberg dispatch input and ledger row T06. 8592fdd drops comments from repair_regulations and deletes the last dated-tree modules; comment_partitions.py keeps only the shared validators. |
Nothing; comment repair moves to the catalog (decision 70). |
| 41 | Open. | — | Per-attachment tool fallback with the tool recorded per attachment (spicy-regs). |
| 42 | Superseded by decisions 54–57 below. | — | ca's lane. |
| 43 | Waiting. | — | Needs an Engine hosting decision. |
| 44 | Settled: not now. | — | — |
| 45 | Settled. | — | Nothing; the refusals stay recorded. |
| 46 | Waiting. | — | The cross-repo multi-file table design comes first (the owner's ruling of 2026-09-26). Then received-year windows, newest first. |
| 47 | Running. | Activity tables live since migration run 36264742453 (cb5d9f8, joins a7e9f84); whole-year reads fixed in a85293c before any history year ran. The 2026 canary (run 36265472320, 56,887 filings) is running. |
Verify the canary, then run corpora/lobbying-backfill-2026-09-26/driver.zsh 2025 1999. It runs one year per dispatch, newest first, and waits out the daily run. |
| 48 | Done. | 1f516cc; recipients→sam_entities re-recorded in 3d4a696. |
— |
| 49 | Done. | add9bd9; case_type live (cv 10,034, cr 327, mj 213, po 191, NULL 653 for appellate and blank numbers). |
— |
| 50 | Filling. | add9bd9. Every run re-reads up to 15 packed id queries at the published 12 s interval. Run 36266967475 filled 692 of 3,693 dockets; 3,001 remain, about five more daily runs. |
Full /parties/ records for agency-party dockets linked to a rulemaking. These wait for ca's proceedings fix (decisions 54–57), which moves the rulemaking links. |
| 51 | Waiting. | — | Multi-file tables, then the 2024 and 2026 cycles only. |
| 52 | Not started. | — | SEC, FERC and CFTC readers. EDIS needs a signed-in session client and spicy-docs checkpoints first. |
| 53 | Mostly done. | fec_committees reads only committees filed in the past week, plus a Sunday full walk (5424cb7; dispatch 36284714434 read 1,921 committees in about a minute, not 897 pages). fec_committee_history is published from every cycle's committee master through spicy-docs 0.43.0's reader (a31ba19, 2a21eea; run 36286703784: 298,395 rows, 89,710 committees). Every registry committee appears in the history (dacb1af). |
Replace the Sunday walk with a completeness check against the history's committee IDs, once a few weeks of Sunday walks show the delta misses nothing. |
Also open, outside these decisions:
- ~~Re-measure the vote joins when ca's votes chain ends.~~ Done in b0497ee: all four hold. L000555 (Luke Letlow, who died before taking the seat) is the one baselined orphan.
- Re-measure the rulemaking joins when ca materializes decisions 54–57.
- Ingest court clusters from the 2026-09-30 bulk edition. The search catch-up cannot fit a 125-a-day token.
Owner decisions, 2026-09-26 (rulemaking lifecycles)
The owner decided these after the measurements in
fork-execution-2026-09-21/lifecycles-2026-09-26/ and an independent (blind) data-science review in
lifecycles-blind-review-2026-09-26/. review-comparison.md re-checks the review's claims about proceedings.
| # | Question | Decision | Why |
|---|---|---|---|
| 54 | How does rulemaking_lifecycles read a proceeding (amends 42)? |
One row per docketed proceeding, a stage of the rulemaking dataset. Stage events are collapsed to one per document, and the Register's type and date win. A final pairs only if it is strictly after the proposal. A same-day final is its own companion kind. Withdrawals count only from the Register or the Unified Agenda. Finals before the proposal are counted, not paired. Survival columns (outcome, censor date = the data's last event date). An Agenda-based open status replaces any age cutoff. The table covers all years, with a pre-2008 coverage flag. |
Completed-only percentiles understate time to final: median 156 days completed-only against 265 by Kaplan-Meier. Docket-less proceedings are single Register documents that cannot pair; publishing them would claim ~86k stuck proposals. |
| 55 | Strata and companions for lifecycles. | Carry routine_family (airworthiness directives, state air plans, airspace, Coast Guard local rules, pesticide tolerances), Agenda significance and major-rule flags, specific RINs and document form. Add lifecycle_events (the cleaned per-document events) and agency_lifecycle_stats (survival estimates with confidence intervals, suppressed under 30 rules). |
Routine rules are 37% of durations (median 122 days against 589), so unstratified agency comparisons mostly measure them. |
| 54a | Amends 54: how does a withdrawn proposal count in time-to-final estimates? | As a competing outcome: it stays in the denominator and never becomes final (Aalen-Johansen cumulative incidence). A quantile exists only where the share of proposals reaching a final attains it; otherwise it is NULL. | Censoring a withdrawal assumes it could still finalize, which understates time to final. OSHA's median was 3,097 days while only 49% of its proposals ever finalize; 63 of 172 published medians change (DOI 1,322 → 2,194 days). |
| 54b | Amends 54: which same-day pairs are companions? | Only a proposal and a same-day final both dated by the Register. A same-day final dated only by Regulations.gov neither pairs nor makes a companion. | About 230 of 1,523 companions were upload-day artifacts: Regulations.gov "Rules" without a Register number (74 titled as proposals) and old documents uploaded the same day. |
| 54c | Amends 54: a proposal and same-day final both dated only by a Regulations.gov upload? | Its own kind, upload_pair: the row is kept with both anchors, has no survival outcome and is left out of agency_lifecycle_stats; it is flagged pre-2008 only when the upload itself precedes 2008. |
140 legacy rulemakings bulk-uploaded 2012–2022 (an EPA asbestos standard proposed 1974, final 1978, uploaded 2021) would publish as proposals open since their upload and skew the medians (FDA 2,185 → 2,875 days). |
| 56 | Fix proceedings before lifecycles. |
Yes, all of it: stages come from each source's own Rule / Proposed Rule type, with titles only refining within it. A Register document that a docketed Regulations.gov document states as its own fr_doc_num joins that proceeding instead of forming a docket-less one. Docket-less proceedings take their agency from the Register. SEC self-regulatory-organization notices leave proceedings. A Register-only document attaches to the single docketed proceeding that holds its specific RIN. |
Title substrings typed 8,211 supporting documents as finals and 4,835 other documents as withdrawals, and a stage makes a document action evidence (decisions 32-33). 23,784 docket-less proceedings duplicate a docketed one. All 182,824 docket-less proceedings lack an agency. 40,561 are SEC SRO notices. RIN attachment links 2,752 finals and 1,820 proposals. |
| 57 | Roadmap after lifecycles. | The Congressional Review Act pipeline, the law-to-rule implementation lag, and Agenda forecast reliability. Also expose all rulemaking tables through the MCP and the data dictionary. | Ranked by the review. The data for each exists in the stack: House communications, CRA resolutions and votes; Agenda legal authorities; Agenda timetables. |
Owner decisions, 2026-09-26 (proceedings stage rules)
Decided after the replay of variants A1 and A2 on snapshot_7eafd657's own inputs, and an independent review that
reproduced every number (fork-execution-2026-09-21/proceedings-v12-2026-09-26/, review-2a/).
| # | Question | Decision | Why |
|---|---|---|---|
| 58 | Typed stages for which sources (decision 56)? | A2: a stage comes only from a document's own Rule / Proposed Rule type, for both the Register and Regulations.gov. | 267,965 → 215,970 proceedings. 40,144 SEC SRO notices and 5,820 docketed petitions/exemptions leave, and none of those had a RIN, a Rulemaking docket type or any Rule document. Stage events on non-rule documents fall from 75,287 to 0. A1 would need a separate SRO rule. |
| 59 | The Register's 1994 rows typed "Uncategorized Document". | Type them from the title suffix: "; Final Rule ‹AGENCY›" or "; Proposed Rule ‹AGENCY›", only for Uncategorized Register rows. | 32,374 of 32,645 Uncategorized rows are from 1994, when the Register's data typed nothing. About 536 real rules and proposals (and 227 comment periods) would otherwise drop. |
| 60 | Whose type wins when a Regulations.gov document is a copy of a Register document? | The Register's. A Regulations.gov document whose own fr_doc_num resolves to one Register document takes that document's stage. |
3,782 Regulations.gov "Rule" documents are copies of Register Notices. Under A2, 2,583 docketed proceedings exist only through them, and 2,559 of those are Nonrulemaking dockets. This matches decision 54 for lifecycles. |
| 61 | NOAA's 0648-X… RINs. | Kept on the row as stated, but no longer action evidence. | They are NOAA's numbers for non-regulatory actions. 6,628 docket-less proceedings exist only through them (marine-mammal takes, council meetings). |
| 59a | Amends 59: the title suffix's variants. | Also type "; Interim Final Rule", "; Interim Rule", "; Final Rules", "; Proposed Rules" and ", Proposed Rule" suffixes. The ~92 titles ending at "Rule" with no agency stay untyped. | Interim final and interim rules are Rules in the Register's modern taxonomy; plurals and a comma-led marker are the same sections. 404 rows are typed instead of 370. |
| 60a | Amends 60: an untyped Register row. | The Register's type wins only when the Register row states one. A copy of an Uncategorized row that its title suffix doesn't type keeps its own Regulations.gov type. | Otherwise 74 real Rule / Proposed Rule documents lost their stage, and three dockets of 1994 FDA final rules lost their proceeding. |
| 61b | Amends 61: X-pattern codes of every agency. | Every XXXX-X… code that normalize_rin admits stays recorded as stated (on the row, in rins_json, in rule_targets) but is never action evidence and never makes a RIN specific. |
NOAA's pattern is shared by NTIA (0660), BEA (0691) and 20 other prefixes: 536 Register rows carry only such codes (48 typed Rule or Proposed Rule). The rule removes 449 proceedings (408 docket-less, 41 Nonrulemaking dockets held only by X codes) and adds 4. |
| 56a | Amends 56: which evidence makes a proceeding hold a RIN for attachment by specific RIN? | Only its own docket-side evidence: the docket's rin, its documents' RINs, and rule_targets edges from its own documents' fr_doc_num (document_fr_doc). Never a Register document it absorbed, whether by docket link, by the copy join, by attachment itself, or through rule_targets' fr_cfr_ref edges, which are exactly such documents. A RIN two or more proceedings hold is ignored rather than blocking. |
An umbrella RIN a docket absorbed from one linked Register rule (USCG 2115-AA97) attracted 1,016 unrelated documents. fr_cfr_ref holders alone attached 126 documents, 56 of 79 comparable ones across agencies (BLM grazing into an FAA airspace docket). 4,090 documents attach; document_fr_doc holders disagree on agency 13% of the time, like direct evidence (12%). |
| 56b | How does a proceeding show how each Register document joined it? | One fr_document_joins_json entry per Register document: joined_by (fr_document, fr_docket_link, fr_copy, specific_rin), and for specific_rin the joined RINs and their holder sources. Stage events carry only joined_by. |
Holder evidence that comes from rule_targets stays, but visibly, and each fact is stored once. |
| 56c | An agency's umbrella RIN held through one copy draws in unrelated rules (found in review). Guard it? | No guard: publish as built and flag it. The lifecycle stage marks any lifecycle whose proposal or final arrived by specific RIN; fr_document_joins_json already marks each such document. |
MSHA's 1219-AA98 draws 22 rules into MSHA-2005-0016, about 19 unrelated. 12 (target, RIN) pairs pull in documents with five or more distinct titles, 148 in all, some legitimate (ONRR oil valuation). Agency agreement cannot see it. A title-stem guard would be a heuristic, and dropping copy-edge holders loses 1,248 attachments. |
Owner decisions, 2026-09-27 (retention, multi-file, next work)
Answered through the question tool.
| # | Question | Decision | Evidence and result |
|---|---|---|---|
| 62 | Execute the retention plan? | Execute plan run 36283796407. | Run 36284113024 deleted 117 generations (5.02 GiB) and spared none. Its fresh re-plan also found one newly superseded generation, which was left because the reviewed plan did not name it. Afterwards all 121 current tables and roots, and all 53 ledger- and DocSpec-pinned roots, still resolve. The record is retention/2026-09-27T00:58:46.698142+00:00.json in the bucket. |
| 63 | How does retention run from now on? | Weekly and automatic. The scheduled run plans, then executes that plan against a second fresh plan under the same rules. | plan-generation-retention.yml, Sundays at 05:45 UTC. |
| 64 | Take the multi-file design's §5 measurements now? | All four now, including a CI probe that writes a throwaway 1.1 GiB object to the fork bucket, copies it once and deletes both. | See multi-file-tables-2026-09-26.md §5. |
| 65 | What comes next in spicy-regs? | First, host DocSpec's document_attributes and docket_attributes families with their daily Regulations.gov delta. Then decision 53, FEC committee history from the bulk files. |
The attribute families wait for spicy-stack-83's export and the spicy-docs contracts. |
| 66 | Should document_attributes publish submitter contact details, which spicy-stack-83's export left out as personal data? |
Publish all of them: first_name, last_name, address1, address2, city, state_province_region, zip, country, fax and submitter_rep. |
The proposal is regulations-attributes-contract-2026-09-26.md (DocSpec lane). email, phone, submitterRepAddress and submitterRepCityState are stated on no record, so they stay out. |
| 67 | Type the attribute columns now, or VARCHAR first and types later? | Type them now. BOOLEAN for the three comment-window flags, INTEGER for page_count, UTC TIMESTAMP for the dates, and lists of strings for authors, topics and keywords. display_properties stays JSON text. The thin documents and dockets tables stay VARCHAR for now. |
Needs per-column types in spicy-docs' TableContract (spicy-stack-a8), typed contract tables in spicy-regs' dictionary and publication, and typed admission in DocSpec (spicy-stack-83). |
| 68 | Back-fill 108th–112th bill text? | Yes, the XML that exists, per package at max_version_fetches=3000, after multi-file bill_sections and the per-package refusal memory (which also labels each printing by the rendition actually fetched). The ~21.8k printings without XML stay metadata-only. |
GovInfo has XML for about 65.4k of 85,963 packages (76%); the earlier "PDF only" note was wrong. No bulk route covers 2003–2012 printings. About 23 runs, 207k requests and 1.9 GB; bill_sections grows about 28%. Plan: bill-text-108-112-plan/PLAN.md in the fork-execution corpus. |
| 69 | Law text for the 108th–112th? | Roadmap a Statutes at Large reader for the laws family, after the bill-text work. | Volumes 117–126 are the only keyless bulk text for those years (10 files, 257 MB, all 2,116 laws); they are enacted law, not printings, and need a USLM reader. |
| 70 | Comment repair after decision 40? | Retarget it to the catalog. | Decision 40 removed the local comment repair with the dated tree, and comments now live only in the catalog. An explicit source reread still needs its own merge rule: the fresh mapping wins at an equal date and enrichment is kept. The ETL's upsert replaces a row only when the source date is strictly newer. |
Where decision 70 stands (2026-09-27)
| # | State | Evidence | Left |
|---|---|---|---|
| 70 | Done on branch comment-repair-catalog, not yet on main. |
aedc751: --table comments dry-runs to comments-repair.json; --apply replaces only the changed rows through the ETL's DELETE + INSERT (iceberg.replace_rows), checks them, and records the new snapshot. |
A first real apply, outside the ETL window; the mirror job then publishes it. |
Owner decisions, 2026-10-03 (round-3 chaos test, rulemaking lifecycles)
Decided by the orchestrator under the 2026-10-03 session goal (round 3 operator-notes.md), on scout E's
analysis of the blind persona test and its audit (mcp-chaos-2026-10-02/round3/phase2-lifecycles.md) and the
independent review of the first implementation (phase3-review.md). Every count is on snapshot_62318069's
inputs: the lifecycle stage was replayed over the published lifecycle_events with fork/main's code first
(0 of 75,305 rows differ from the published table) and then with each change alone and together
(round3/scout-e/q9_replay.py); the published routine_family was re-derived from the same titles with no
mismatch before any variant was measured.
| # | Question | Decision | Why |
|---|---|---|---|
| 54d | Amends 54: an upload-dated proposal posted before the Register's own copy of it? | A Register-dated proposal is time zero. A proposal dated only by its Regulations.gov upload anchors only when the Register dates none that could be its publication. No window. The proceeding's own events say the Register's is a later proposal, and the upload keeps its anchor, when a final falls between the two or when the Register proposal is itself a comment-period extension or a correction. | An upload day is when a document was posted, not when a rule was proposed: CMS posts an unnumbered "display" copy on the public-inspection day and the Register's numbered copy follows (CMS-2026-2377-0001 posted 2026-07-14, no fr_doc_num; 2026-14327 published 07-16); the word "Display" marks only 86 of CMS's 208 cases, so no title rule. 376 proceedings hold an upload-dated first proposal and a later Register-dated one: 255 within 30 days (243 unnumbered; 208 CMS, median 6 days early), 24 at 31–90, 20 at 91–365 and 77 beyond a year. Hand-read, the long bands mix three populations: display or pre-publication copies (CFPB's 2012 mortgage proposals released 37–45 days before publication; CMS's 2010 OPPS rule, 32 days), documents that are no proposal (petitions for rulemaking, state program submissions, meeting notices, working files, typed "Proposed Rule" by Regulations.gov), and genuine earlier proposals whose Register copy is missing or whose stated number is a page citation (EPA 2004 in-use testing 69 FR 32804, finalized 2005, re-proposed 2008; FDA's 1978 OTC monograph dockets, whose posted dates are the historical ones). A day count separates none of these, so none is used. Two readings of the events do: 32 proceedings have a final between the two proposals (25 of them more than a year apart; the IRS 2007 cost-sharing proposal finalized 2009-01-05 beside a new proposal that day), and 10 have a Register "proposal" whose form is an extension or correction (the 2011 Common Rule ANPRM and its September extension; MSHA's 2010 respirable dust proposal and its 2011 reopening). The rule moves 334 anchors (165 since 2015; 206 CMS) and keeps 42; no row changes kind. CMS since-2015 median 147 → 139 [127, 195]; CMS all cell 386 → 379; HHS department since-2015 599 [475, 795] → 599 [475, 789]; all agencies 259 unchanged; EPA non-routine all-years 853 → 808 (upload-first legacy proposals re-anchored). The residual the events cannot see: unnumbered genuine earlier proposals with no final between and a later Register proposal in form (FDA's 1978 sunscreen monograph, re-proposed 1998; CDC's 2011 nonhuman-primate importer proposal, re-proposed 2020); an upload stating a Register number of its own would protect 24 of them but also 5 CMS display copies that cite a page number, so it is reported, not read. A Register public-inspection date on federal_register would replace both readings with evidence (acquisition lane). |
| 55a | Amends 55: which title names the routine family? | The anchor's own, read at time zero: the proposal's; the final's without a proposal; the proceeding's only with no anchor. Pesticide-petition receipts are the tolerance family by their own title ("pesticide petition" joins "tolerance"). | A stratum is a survival covariate (55's reason), but 1,221 of 14,805 routine survival rows took their family from the final's title (1,066) or the proceeding's later title (155): FR 2025-12404 anchors 23 petition lifecycles, 19 pesticide_tolerance because a "…; Pesticide Tolerances" final had arrived and 4 open ones NULL. Measured apart: dropping the later titles alone re-stratifies 1,356 rows and makes petitions non-routine (EPA since-2015 routine 130 → 101, non-routine 360 → 358; all-years non-routine 853 → 465; pesticide_tolerance 1,241 → 104 rules); adding the phrase alone re-stratifies 137 rows (the open petitions) and leaves 88 rows outcome-dependent; both re-stratify 357 rows and leave 0: EPA since-2015 routine 130 → 136 [129, 144], non-routine 360 → 328 [304, 353]; all-years routine 132 → 138, non-routine 853 → 655, pesticide_tolerance 345 → 371 (1,241 → 1,367 rules); all agencies routine 126 → 126, non-routine 631 → 614; 2025-12404's 23 rows all pesticide_tolerance. The invariance holds by construction and by test: deleting every final event, or retitling every Register final "Pesticide Tolerances", moves no proposal's family. |
| 60b | Amends 60: read a Register number a title names as the document's identity? | No (refused in review). | A title number often cites another document: a 30-day paperwork notice cites the 60-day notice, a correction cites its original, and an index lookup proves existence, not identity. The CDC and ATSDR information-collection notices typed "Proposed Rule" with the Register number in the title stay a documented limit (the dictionary's data-quality note), as does the wider class of 515 since-2015 survival anchors typed only by Regulations.gov (352 open). |
Actors bumped with these: rulemaking-lifecycles v2, lifecycle-events v2 and agency-lifecycle-stats v2; with 60b
refused, proceedings (v11) and comment-periods (v12) do not move. Together the two changes alter 689 of 75,305
rows (334 anchors, 360 strata, 5 both) and no kind: CMS since-2015 147 → 139, CMS all 386 → 379, HHS 599,
all agencies 259, EPA routine all-years 132 → 138, EPA non-routine all-years 853 → 634, EPA since-2015 routine
130 → 136 and non-routine 360 → 328. Deferred by the same session: a since-2015 cohort cell and a department
roll-up in agency_lifecycle_stats, and a proposal_lifecycles column; the split-proceeding consequence (a
final that finalizes another docket's proposal, e.g. 2026-15833 naming "CMS-1849-F and CMS-0062-F" with no RIN)
and one notice anchoring many lifecycles (502 proposals behind 2,358 of 35,327 survival rows) are documented only.