# Changelog of Federal Register API Feed: Rules, Proposed Rules & Notices (`fecklesspleb/federal-register-documents-feed`) Actor

- **URL**: https://apify.com/fecklesspleb/federal-register-documents-feed/changelog.md
- **Full Actor documentation**: https://apify.com/fecklesspleb/federal-register-documents-feed.md

## Changelog

### 0.1 default 9 documents (2026-11-02, local, not built or pushed; actor.json version unchanged: 0.1)

- **Smaller default:** `maxItems` default, prefill and code fallback (`DEFAULT_MAX_ITEMS`, used for omitted, null or blank `maxItems`) are now 9 (were 10). `{}` and the prefill push at most 9 documents = $0.009 plus Apify's $0.00005 start event = $0.00905, under the $0.01 Store test limit (10 documents were $0.01005). The start event is unchanged.
- **exampleRunInput** now equals the schema prefill exactly: `{"lookbackDays": 3, "documentTypes": ["RULE", "PRORULE"], "agencies": [], "maxItems": 9}`. Compared with before: `maxItems` 10 to 9, `"mode": "daily_feed"` removed (it is the default, so the run is the same) and `"agencies": []` added (empty = all agencies, as before).
- Text: the `maxItems` schema description says "Empty = 9"; the `DEFAULT_MAX_ITEMS` and `_int` comments in `my_actor/main.py` say 9 / $0.009.
- Docs: `README.md` and the identical `README.proposed.md` (line 55 `maxItems` default 9; line 209 at most 9 documents, about $0.00905); `pricing.json` `_note` and `estimatedCostExamples.emptyInputAutoTest`.
- Tests changed: `tests/test_input.py` (`test_empty_input_defaults`; `test_blank_max_items_gives_default_10` renamed `..._9`; `test_prefill_input_capped_at_10` renamed `..._9`), `tests/test_main.py::test_empty_input_safe_and_polite` (9 items), `tests/test_pricing.py::test_small_default_run_cost` (9, $0.00905).

### 0.1 billing and defaults fixes (2026-10-30)

- **No double charge for public inspection then published.** A public inspection filing and the published document share the FederalRegister.gov `document_number` (checked on the live API: all 104 documents published 2026-10-28 were on the 2026-10-27 public inspection desk under the same number; 100 of the 104 titles differ, so titles are not a usable key). With only-new on, a published document whose filing (`FR:public_inspection:<n>`) was already delivered under the same state key is now skipped and not charged (one row and one $0.001 charge per document number per state key). The reverse is skipped too, and within one run the same number is never charged twice, even with only-new off. New `RUN_SUMMARY.skippedSeenOtherStage` counts these; they are also in `skippedSeen`. The state format is unchanged (same ids), so existing state keys keep working. Different state keys stay independent.
- **Smaller default:** `maxItems` default, prefill, code fallback (`DEFAULT_MAX_ITEMS`) and `exampleRunInput` are now 10 (were 100). `{}` = at most 10 documents = $0.010 plus Apify's $0.00005 start event.
- **Fail soft:** a run that saves no documents or stops early (robots.txt unreadable, network down, anti-bot page, nothing new) now adds one free status row (`recordType: "status"`, `status: "warning"` or `"empty"`) and still succeeds.
- **Public inspection legal note:** public inspection rows now carry their own `source.legalNote`, which says `pdfUrl` is the public inspection PDF (not the official edition) and to check govinfo.gov once the document is published. Published documents keep the govinfo note.
- **Input schema text:** `maxItems` now says a full issue had 63 to 146 documents (measured October 13-30, 2026) instead of 100 to 300; `lookbackDays` now describes what the code does (weekday issues from today minus N calendar days through today, so 3 reads 4 issues on a Thursday or Friday, 3 on a Wednesday or Saturday, 2 on a Sunday, Monday or Tuesday); `includePublicInspection` and `onlyNewSinceLastRun` describe the cross-stage dedupe.
- **Pricing text:** `pricing.json` now says Apify's `apify-actor-start` event ($0.00005 per GB, VERIFIED in live pricing) applies; examples updated to 10 documents and 63-146 documents per issue.
- Files changed: `my_actor/main.py`, `my_actor/sources.py`, `.actor/input_schema.json` (descriptions and maxItems default/prefill), `.actor/actor.json` (`exampleRunInput.maxItems` only; Actor `description` and `version` unchanged), `.actor/dataset_schema.json` (`recordType` description), `pricing.json`, `tests/test_main.py`, `tests/test_input.py`, `tests/test_sources.py`, `tests/test_pricing.py`, `tests/check_dataset.py`, `CHANGELOG.md`. `README.md` updated to match (maxItems 10, lookback weekdays, cross-stage dedupe, status row, public inspection legal note).

### 0.1 README update (2026-10-30)

- README rewritten: use cases, examples, sample output, integrations, FAQ. Corrects the pricing text (the Actor start event applies), the public inspection filters (only type, agency and title/subject keyword apply) and the daily feed window (`lookbackDays` counts calendar days back from today). No code changes.

### 0.1 (2026-10-29, local only, not published)

- First version: FederalRegister.gov API v1 documents search (per issue day, paging) and optional public inspection desk; filters for type, agency, keyword, significant, CFR title/part, open for comment; dedupe state; PPE $0.001/document (ESTIMATED).
- Pricing: `document`, $0.001 per document, plus Apify's `apify-actor-start` event ($0.00005 per GB of run memory, 1 event at the default 1 GB); no $0 events. `{}` and the prefill are capped at 100 documents ($0.10). Blank `maxItems` gives the default 100.
