a public registry of the geostationary beltLast updatedData as of 2026-11-01. FCC workbook 2026-09-27.

Docs > FCC SSAL refresh

fcc-refresh.htm

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:

  1. Reads data/ssal.xlsx (must exist, non-empty).

  2. Parses sheet 0; GEO rows with an N.N W.L. / E.L. location.

  3. Refuses to wipe fcc_authorizations if zero GEO rows parsed.

  4. Writes ingest_meta for FCC-SSAL: last_run (parse clock), file_vintage / source_as_of (sheet “Updated …” date), file_sha256.

  5. Diffs call signs vs the previous table (new / lapsed / licensee / grant-status events).

  6. Appends a registry_snapshots row when occupancy membership, dispute records, FCC call signs, parsed data/ssal.xlsx filings, or file vintages changed. GET /api/v1/agents/deltas diffs 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)

  1. Open https://www.fcc.gov/approved-space-station-list.

  2. Download the Excel workbook (Approved Space Station List).

  3. Replace data/ssal.xlsx in this repo (keep the filename).

  4. Confirm the first sheet name looks like Updated <day> <Month> <year> — that string is the product as-of.

  5. Run:

npm run ingest:fcc
npm run vintages          # backfill UCS / TLE vintages without re-downloading those feeds
  1. Commit data/ssal.xlsx and data/clarke.db.

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

FieldMeaning
FCC SSAL as-ofWorkbook vintage (file_vintage)
parsedlast_run — when Clarke last read the committed xlsx
Stale chipWorkbook 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).