FCC SSAL refresh
Clarke does not scrape fcc.gov. Product as-of is the workbook sheet date (for example Updated 27 September 2026), not the ingest clock. Replace data/ssal.xlsx, run npm run ingest:fcc, commit the workbook and data/clarke.db.
Operator runbook for refreshing FCC license rows. Clarke does not scrape fcc.gov. The Approved Space Station List sits behind Akamai bot protection; automated curl / headless Chromium requests return Access Denied. The product as-of date is the workbook vintage (sheet name, e.g. Updated 27 September 2026), not ingest_meta.last_run.
Monthly ingest.yml still skips FCC. A re-parse of the same committed file records the workbook vintage, not the day the job ran. A monthly job re-parses data/ssal.xlsx and records vintage + sha256 without pretending the file was re-downloaded.
Monthly (automated)
npm run ingest:fcc
This:
Reads
data/ssal.xlsx(must exist, non-empty).Parses sheet 0; GEO rows with an
N.N W.L./E.L.location.Refuses to wipe
fcc_authorizationsif zero GEO rows parsed.Writes
ingest_metaforFCC-SSAL:last_run(parse clock),file_vintage/source_as_of(sheet “Updated …” date),file_sha256.Diffs call signs vs the previous table (new / lapsed / licensee / grant-status events).
Appends a
registry_snapshotsrow when occupancy membership, dispute records, FCC call signs, parseddata/ssal.xlsxfilings, or file vintages changed.GET /api/v1/agents/deltasdiffs those rows. When two snapshots both store parsed workbook rows, the feed reports new, removed, and changed filings. An unchanged re-parse does not append one.
GitHub Actions: .github/workflows/ingest.yml runs this re-parse on the 1st at 06:17 UTC, in the same job as UCS, Space-Track, and SEC, and pushes data/clarke.db once. .github/workflows/ingest-fcc.yml is manual (workflow_dispatch) for a workbook-only re-parse. Either push rebases onto main and fails if the push is rejected. The database is committed only when it changed.
Human refresh (when the FCC publishes a new list)
Download the Excel workbook (Approved Space Station List).
Replace
data/ssal.xlsxin this repo (keep the filename).Confirm the first sheet name looks like
Updated <day> <Month> <year>— that string is the product as-of.Run:
npm run ingest:fcc
npm run vintages # backfill UCS / TLE vintages without re-downloading those feeds
Commit
data/ssal.xlsxanddata/clarke.db.Check
/orbital/101w: FCC as-of should match the sheet date. The Trust bar stale chip clears when as-of is 45 days old or newer.
What the Terminal shows
| Field | Meaning |
|---|---|
| FCC SSAL as-of | Workbook vintage (file_vintage) |
| parsed | last_run — when Clarke last read the committed xlsx |
| Stale chip | Workbook as-of older than 45 days (Trust bar) |
Occupancy stays TLE-primary and does not wait on FCC.
The same 45-day comparison is sourceVintage.fccStale on the public agent record (fccStaleAfterDays is 45). A missing or unparsed workbook as-of is not marked stale. TLE occupancy freshness on that record is sourceVintage.tleStale, also 45 days, and applies only to a TLE that supplied the position. Both thresholds match the monthly job: a file from the 1st is not stale on the next 1st. See Agent API. Valuation and congestion are not on that record.
Credentials
None. No FCC API key. Space-Track credentials are unrelated (ingest:spacetrack only).