# Changelog of Private Offering Notice Feed (`amplelabs/private-offering-notice-feed`) Actor

- **URL**: https://apify.com/amplelabs/private-offering-notice-feed/changelog.md
- **Full Actor documentation**: https://apify.com/amplelabs/private-offering-notice-feed.md

## Changelog

This Actor uses semantic versioning. Apify's `actor.json` `version` is `0.2` because that field is MAJOR.MINOR. The package version is the full semver.

### 0.2.0

#### Breaking

- From 0.2.0, totalOfferingAmount and totalRemaining are a number or null. Indefinite offerings have isIndefinite true. Previously these fields could be the string Indefinite. Rows delivered before 0.2.0 keep the old shape.

### 0.1.8

- When a run delivers no filings and no removal tombstones, push one free `no-new-filings` row after state is saved. It lists the business days scanned, the cursor, why the run stopped, and the time. It is not charged, it is not stored in `delivered`, and it does not move the cursor. A failed run does not push it.
- On a first run with no cursor and no `dateFrom`, if the latest business day has no daily index, step back one business day at a time, up to 5, and scan the first day that has an index. Skipped days are not charged. Cursor runs and date ranges do not step back.
- The Console prefill for `maxResults` is 100. A call that omits the field still uses 1000.
- The status row's listed stop reasons omit `max-results`. A run that stops there has already pushed filings.

### 0.1.7

- Add the dataset schema and the output schema the Store publish checklist requires. The Output tab lists every field.
- Write the pricing section for people running the Actor. A run needs a maximum cost of at least $0.01.

### 0.1.6

- Omit a broker-dealer name or CRD, and a recipient name or CRD, when the filing says None.
- The random start delay is at most 30,000 milliseconds. A draw of 0.999999 stays within that cap.

### 0.1.5

- Cap the random start delay at 0 to 30 seconds. The request rate, user agent, and backoff are unchanged.
- Include the broker-dealer firm name and CRD on every sales-compensation recipient. Recipient names and CRD numbers stay off unless `includeRelatedPersonNames` is on.
- The platform run timeout stays 1 hour, and a stopped run resumes on the next run. A cursor that is behind still warns only. `SCAN_WAITING_DAYS` stays false.

### 0.1.4

- The cap warning depends on the mode. A date range says to run again with the same dates. A cursor that is behind says to raise `maxBackfillDays` or run again.
- The README states that days overlapping a range already scanned are charged `day-scanned` again, and filings already delivered are not.

### 0.1.3

- A backfill remembers the requested dates and the last day of that range that finished. The same dates resume after that day, so a finished day is not charged `day-scanned` again. A different range starts at its first day.
- When the requested span or the cursor gap is longer than `maxBackfillDays`, the run warns and the status says how many days were scanned. It still scans only the cap. Catch-up scanning stays off until that choice is confirmed.
- The date inputs and the README state the default cap of 1 business day and the maximum of 30.
- Store text files with LF line endings.

### 0.1.2

- Save `delivered` after every charged filing, and again if the run is blocked, fails, migrates, or aborts. A later run does not charge that accession again.
- On an extra day, start a filing only when both the filing price and the pending `day-scanned` price fit in the remaining budget.
- Stop cleanly when less than 30 seconds remain before `ACTOR_TIMEOUT_AT`, and say to run again to continue. The default timeout and `maxBackfillDays` are unchanged.
- Add `pricing.json` for the console prices. `apify push` does not apply it. The synthetic dataset-item event is omitted and is not charged on push.
- Quote the SEC's copying and trademark wording, disclose developer visibility of shared runs, and describe broker-dealer firm fields separately from recipient names.

### 0.1.1

- Save the cursor in a named key-value store, `private-offering-notice-feed-state-<stateKey>`, so a new run or a schedule keeps its place. `stateKey` defaults to `default`. `resetState` starts that key over.
- Stream the quarterly index with Node's HTTP client. A failed removal check logs a warning, does not charge `removal-check`, leaves `lastRemovalCheck` unchanged, and tries again on the next America/New_York day.
- Hide sales-compensation recipient names and CRD numbers unless `includeRelatedPersonNames` is on.
- Log the egress IP once per run.
- Make the Actor folder build on its own, and accept Apify's input-schema rules for the multi-select fields.

### 0.1.0

First release of the Private Offering Notice Feed.

Each run reads Form D and Form D/A notices from SEC EDGAR, at most one request per second, and writes them to the dataset of the account that started the run. Personal data is off unless the run asks for it. Removed filings in the current quarter are reported as tombstones.
