Docs

Data trust

Occupancy clusters on Space-Track TLE longitude when quality gates pass, otherwise the UCS catalog. Operator display is a curated alias map over UCS/FCC strings; raw source strings stay inspectable. FCC rows come from the committed SSAL workbook. Implied value is a labeled v0 model. ITU SNS is not ingested (Unrecorded in Clarke). Simulated books, ITU stubs, and seeded history sit behind Experimental.

Legend: V verified from a named public source · M modeled / heuristic, labeled · S stub or simulated. Curated dollar overlays are class M hand estimates, secondary to the model range.

Clarke is the registry for orbital infrastructure: a public-data registry plus labeled heuristic model. This page is the audit of what a paying operator can trust on Slot Terminal and /api/v1/agents/slots/{slug}.

Clarke v0 is a public-registry view (TLE-primary occupancy, UCS identity, FCC SSAL licenses) plus a transparent heuristic implied-value range. It is not a live exchange, not an ITU deed, and not an appraisal. Curated dollar overlays are hand-checked opinions and do not replace the model. TLE longitude is a tracked-object location, never an FCC assignment or ITU filing.

Product chrome (Sep 2026 design pass)

Registry and Slot Terminal are data surfaces. First screens answer who is on station, rights, and freshness. Dollars are secondary.

SurfaceRule
Registry columnsOccupancy, status, congestion, FCC are the default spine. Fair value is off until Show fair value.
Slot Terminal foldTitle + operator mix → one Trust bar (TLE/FCC/UCS dates + V/M/S + collapsed warnings) → KPIs occupancy / rights / freshness first, labeled model last.
Trust barFCC stale and position disagreement share one compact line (FCC SSAL stale · Position disagreement · Details) with expand-in-place. Not stacked orange banners.
Unlock ProDriver-panel gate only. Verified occupancy is never blurred or paywalled.
NavRegistry · Index · Docs. Terminal opens from a registry row (sample: /orbital/101w).
WallpaperSolid near-black + hairline borders on /orbital, /orbital/[slug], and /docs. Earth imagery stays off those surfaces.

Default Terminal quarantine

The default Slot Terminal screen is occupancy + recorded FCC + ingest freshness + labeled v0 model. Simulated trading UI is not the default.

SurfaceDefault TerminalWhy
Simulated capacity bookQuarantined. Behind explicit Experimental disclosure only. Not on free/default first screen.Function of v0 midpoint + congestion. There is no public GEO bid/ask feed. Showing it as a live order book would overclaim.
ITU filing layerQuarantined stub. Collapsed under Experimental “Unrecorded layers.” Default Terminal shows a thin chip only: Unrecorded in Clarke (ituRecorded: not_in_product).SNS is not ingested. A filled panel would look like a recorded deed.
Sub-lease / capacity-lease layerQuarantined stub. Same Experimental disclosure.No public sub-lease registry. Must not look like a named lessee.
Seeded valuation sparklineQuarantined. Experimental “model backfill — not trades.” Hidden from default.terminal.db is a deterministic v0 path, not observed trades.
Curated $NNN M+ overlayVisible, secondary. Class M “hand estimate / curated opinion,” under the model range, not a competing headline. Valuation basis is always model.Overlay can diverge ~2× from v0. V/M/S discipline.
Recorded FCC rows + TLE-primary occupancyPrimary.Named public sources.

Pro API still returns bidAsk / full rightsChain / history so agents can inspect the stubs; the HTML default view does not present them as filled primary panels.

GEO Slot Index #1 (/index) is distribution content from the same occupancy / FCC fields: enter/leave vs UCS, dispute flips, license-table mismatches. It does not publish prices.

Tests: src/lib/terminal-default.test.ts asserts default primary markup does not contain a filled ITU filing panel (data-rights-layer="itu"). The thin Unrecorded chip is allowed. src/lib/operator-identity.test.ts covers alias resolution.

Ranked issues

RankSeverityIssueStatus
1HighRemaining-life factor said “no usable lifetime data” on every GEO row. UCS stores 590/590 launch dates as M/D/YY (11/14/10); the parser required year > 1950, so expectedLifetimeYears was ignored. Terminal also printed launch years as 10 / 95 / 6. UCS-derived slot.launched was 13 for MUOS-2.Fixed. Shared parseUcsLaunchYear; remaining-life now uses design-life remaining. Re-seed snapshots after the parser fix.
2HighOperator contradiction at 101°W: registry/API slot.operator=SES, Terminal header = DirecTV (majority of ±0.4° window), congestion dominant = DirecTV (±2°). Occupancy metric implied DirecTV holds all 7 sats. Rights chain named Ligado DIP as the licensee because FCC rows are ordered west-to-east. UCS/FCC strings also disagree (DirecTV vs AT&T, LightSquared vs Ligado, SES S.A. vs SES).Fixed. Header uses registry/curated operator; occupancy mix is explicit; rights chain lists all FCC licensees. Alias map canonicalizes display/grouping; raw strings stay on tooltip/API.
3High“Nearest comps” were other longitudes inside the same occupancy window (101.08°W, 100.81°W, …), each re-bundling the same satellites with near-identical model values.Fixed. Comps exclude ±0.4°.
4HighSeeded valuation history shown as “persisted snapshot.” terminal.db only stores a deterministic v0 path. FCC provenance used the latest any-source ingest, so a 21-day-old SSAL looked like “Sep 15.”Fixed. History labeled backfill; FCC/UCS asOf is per-source.
5HighLive Space-Track TLEs (epoch 2026-09-15) disagree with UCS GEO longitude by >2° for 204/512 matched objects and >10° for 168/512. Ingest only rewrote longitude_geo = 0 placeholders, so occupancy/congestion/v0 clustered on stale UCS longs (MUOS-2 at 100.1°W vs TLE 172.0°E).Fixed. Occupancy is TLE-primary (see Position authority). UCS catalog longitude is preserved and shown.
6MediumBIU label “Operating (non-US admin)” on US DoD birds with no FCC row (MUOS-2).Fixed. Wording is “no FCC market-access row.”
7MediumOccupancy grouping 0.3° (agents dossier default) vs 0.4° (Terminal / congestion).Fixed. Default co-location window is 0.4°.
8MediumAgents list valuation omitted satellite lifetimes, so remaining life stayed 1.0 even after a parser fix.Fixed. listSlots / explorer / seed pass the occupancy window.
9Won’t inventCurated overlay ($350M+ at 101°W, $400M+ at 19.2°E) is far from v0. After remaining-life fix UCS occupancy was $228M at 101°W; after TLE-primary occupancy $198M (5 sats, congestion 80).Overlay is class M, secondary to the model; basis is always model. No new prices invented.
10OpenUCS ingest last_run is today; the file vintage is ~May 2023 (latest GEO launch in DB is 2023). Terminal now shows file vintage / TLE epoch / FCC workbook as-of separately from ingest clock. FCC SSAL workbook vintage can still lag (sheet “Updated 30 April 2026”). ITU SNS is not ingested. NORAD/COSPAR omitted from UI; API still returns them. Duplicate slugs for absorbed longitudes remain.Vintage fields + compact Trust bar (FCC stale / position disagreement expand-in-place); weekly ingest:fcc re-parse documented.
11High (UI)Simulated book, ITU/sub-lease stubs, and seeded sparkline still sat on the default Terminal as filled panels.Fixed. Quarantined behind Experimental disclosure. See Default Terminal quarantine.

Position authority (TLE-primary occupancy)

Dual-track. satellites.longitude_geo remains the UCS catalog longitude (wrap-normalized only; 0° placeholders are no longer silently overwritten). Occupancy, congestion, comps, and valuation v0 cluster on a chosen occupancy longitude:

  1. Prefer Space-Track / Clarke TLE sub-satellite longitude when all of these hold:

    • Object is a satcat PAYLOAD (or satcat type is missing — UCS GEO identity is kept). Explicit DEBRIS, ROCKET BODY, and UNKNOWN are not moved.

  2. Not decayed (decay_date empty) and satcat current is not N.

  3. TLE epoch was within 30 days of TLE ingest (the Space-Track query already filters EPOCH > now-30; usability is relative to ingest, so a shipped snapshot does not silently revert to UCS as the wall clock moves).

  4. Eccentricity ≤ 0.01 and mean motion in [0.99, 1.01] rev/day when those elements parse (same gates as the GEO TLE feed).

  5. SGP4 at the TLE epoch (tsince=0) returns a finite longitude in (−180, 180].

  6. Else fall back to UCS longitude unless that value is the 0° placeholder (classified/undisclosed pile-up). No TLE and UCS 0 → occupancy null (do not invent a Prime-Meridian station).

  7. Never interpolate UCS and TLE. Never present TLE longitude as an FCC assignment or ITU filing location. FCC matching stays on the authorization’s own longitude (±0.6°).

  8. Flag positionDisputed when both longs exist and circular \|UCS−TLE\| > 2° (tunable POSITION_DISPUTE_DEG).

  9. Occupancy / congestion window remains ±0.4° co-location and ±2° neighborhood, using circular longitude difference.

Ingest (npm run ingest:spacetrack, or npm run apply:positions against an existing TLE table) writes audit columns (longitude_ucs, longitude_tle, longitude_occupancy, position_source, position_delta_deg, position_disputed, tle_epoch, …) without replacing the UCS catalog field. Live clustering recomputes from the TLE table at query time so occupancy cannot drift from the audit trail.

Before / after (Space-Track TLE epoch 2026-09-15, apply 2026-09-15)

Before (UCS clustering)After (TLE-primary)
GEO rows590590
UCS∩TLE longs512512 (513 TLE-primary incl. UCS-null / 0° cases)
|Δ| > 2° / > 10°204 / 168 — hidden (occupancy still UCS)204 / 168 — flagged on satellite + slot banner
Occupancy sourceUCS longitude_geo (+ 0° TLE rewrite only)513 TLE-primary · 73 UCS fallback · 4 unknown
MUOS-2 (39206)clustered at UCS 100.1°Woccupies TLE 172.04°E, positionDisputed, Δ 87.9°
SES-1 (36516)101°Wstill 101°W (TLE −100.98, Δ 0.02°, not disputed)
101°W ±0.4°7 (DirecTV-8/9S, SES-14, SES-1, AT&T T16, SkyTerra 1, MSAT 2)5 (SES-1, AT&T T16, SkyTerra 1, MSAT 2, JCSat 2A whose TLE is −100.90; UCS listed JCSat 2A at 154°E). DirecTV-8 TLE 119.0°W, DirecTV-9S TLE 149.2°W, SES-14 TLE 47.5°W leave the window and are UCS ghosts on the 101°W banner.
101°W congestion / v0100 / $228M (remaining-life fix, UCS occupancy)80 / $198M ($155–242M), 5 co-located, history re-seeded as backfill

Spot checks (public API, 2026-09-15)

Occupancy window is ±0.4° TLE-primary unless noted.

SlotRegistry operatorSats in windowLive v0 (point / CI)Curated overlayContradictions
101°W (101w)SES (curated)5 TLE-primary$198M ($155–242M); congestion 80. Was 7 UCS-clustered / $228M / congestion 100 after remaining-life fix.$350M+Mix is no longer DirecTV-heavy in ±0.4°. JCSat 2A is in-window and positionDisputed. UCS ghosts: DirecTV-8/9S, SES-14. FCC still lists DIRECTV / SES / Ligado at this license longitude.
19.2°E (19-2e)SESAstra fleet (TLE ≈ UCS)Model; congestion from TLE-primary density$400M+Operators consistent (SES S.A.). Overlay ≫ model.
13°E (13e)EutelsatTLE-primary windowModel$250M+Military COMSATBw-2 still in occupancy if TLE agrees.
72°E (72e)IntelsatIS-22 (TLE 72.07 matches UCS)Model$160M+Congestion dominant operator can still differ in the ±2° neighborhood.
172°E (172e)—MUOS-2 + Eutelsat 172B + UFO-4MUOS-2 n/c (military); slot is TLE occupancy, not an FCC assignment at 172°E—MUOS-2 UCS still 100.1°W. Banner: disputed.
100.1°W (100-1w)—MUOS-2 leftPage remains only if FCC/curated/other occupancy; MUOS-2 is not clustered here—UCS catalog still says 100.1°W; occupancy does not.
163°W (163w)Astranis (FCC-only)0 occupancyPaper filing—FCC dateInOrbit=2023-06-05 vs UCS vintage.

Satellite identity cross-check (do not invent)

Compared Clarke UCS + Space-Track satcat to CelesTrak SATCAT (/satcat/records.php?CATNR=). Names, COSPAR, launch dates match. Sub-satellite longitude in the last column is from Clarke’s Space-Track TLE at epoch 2026-09-15 (not CelesTrak SATCAT, which does not publish GEO longitude).

Name (Clarke)NORADCOSPARCelesTrak name / launchUCS lonTLE lon (2026-09-15)
SES-1 (AMC-4R)365162010-016ASES-1 / 2010-04-24−101−100.98 (matches)
Astra 1M334362008-057AASTRA 1M / 2008-11-0519.219.34 (within 0.4°)
Intelsat 22380982012-011AINTELSAT 22 / 2012-03-257272.07 (matches)
AT&T T16443332019-034AAT&T T-16 / 2019-06-20−101−100.87 (within 0.4°)
MUOS-2392062013-036AMUOS-2 / 2013-07-19−100.1172.04°E (UCS stale; occupancy is TLE)

These five NORAD IDs did not reproduce the historical UCS mis-ID problem called out on About. Terminal now shows UCS lon, TLE lon, Δ, source, and epoch; the agents API returns the same fields plus positionTrust on the slot dossier. Treat API NORAD/COSPAR as UCS-attributed, Space-Track-joinable, not independently verified for every row.

Fleet-wide, matching UCS GEO rows to Clarke TLEs: 204/512 differ by >2°, 168/512 by >10°. Occupancy is TLE-primary (513 / 73 UCS fallback / 4 unknown). Disagreements are flagged, not hidden.

Field trust matrix (Slot Terminal)

Legend: V = verified from a named public source in this product · M = modeled / heuristic, labeled · S = stub or simulated · B = bug or inconsistency (fixed unless marked open)

FieldClassSource / notes
Longitude label / slugV/MRegistry slug is the curated / occupancy / FCC position. Occupancy clustering uses TLE-primary longitude, not UCS longitude_geo. TLE lon is not an FCC assignment or ITU filing.
UCS longitudeVUCS catalog. Stale vs TLE for 204/512 matched GEO objects. Shown next to TLE.
TLE longitude / epochVSpace-Track TLE at ingest. Sub-satellite lon at TLE epoch (tsince=0).
positionDisputedMCircular |UCS−TLE| > 2°. Trust bar chip when in-window sats disagree or UCS ghosts remain.
Co-located satellite names, operators, purposesVUCS identity. Names checked well. Operator display is class M (alias map); hover/API keeps the UCS string.
Operator display / groupingMCurated alias map (src/data/operator-aliases.ts) over UCS/FCC strings. Canonical name is shown on Registry rows, occupancy mix, congestion majority, FCC licensee, and agents operator / operatorCanonical. Raw source stays on tooltip, occupancy expand, and API operatorRaw / aliases. Not a corporate-ownership graph. Joint A/B UCS strings stay unmapped unless listed. Congestion score still counts distinct source strings so valuation is unchanged.
Satellite countMCount of GEO rows whose occupancy lon is in ±0.4°, not a unique ITU network count.
Launch yearVUCS M/D/YY now parsed. Was B.
Remaining lifeMUCS launch + design lifetime. Not remaining license term. Was B (always missing).
Registry / curated operatorV/MHand-set for curated slots then passed through the alias map; else UCS canonicalized. Raw on operatorRaw.
Occupancy-window majorityV/MMode of UCS operators in the TLE-primary ±0.4° window, grouped by canonical name. Was shown as the operator (B, previous PR).
Congestion score / tierMTLE-primary density ±2°, co-location ±0.4°, operator contention on raw source strings. Decayed Space-Track objects excluded; graveyard/inclined not classified.
Congestion dominant operatorV/MMajority source string in ±2°, displayed under the alias map. Often a different company than the registry row (ISRO vs Intelsat at 72°E).
Fair value point / CIM$30M × drivers. Not a quote. CI is a confidence spread, not a statistical interval.
Curated $NNN M+ overlayMHand-checked opinion. Secondary to v0. Not the model, not a headline. Can diverge by 2×.
Coverage GDP/popMLongitude band heuristic (coverage-proxy.ts). Not a measured beam.
Spectrum bandsV/MCurated tags only. UCS-derived rows often empty.
License / BIUMHeuristic: UCS sat + FCC row ≠ ITU brought-into-use. Labeled as a Clarke hint. “Paper filing” can be a UCS lag (163°W). Do not read BIU from UCS+FCC without this label.
FCC table (call sign, licensee, service)VSSAL. Licensee display is class M (alias map); raw licensee stays in the cell tooltip and API licenseeRaw. Freshness is the FCC ingest, not “today.” Notes can mention later ICFS grants. Default Terminal primary.
Rights: national admin / FCC licenseesV/MFCC when present; else inferred country. Licensee names canonicalized. Default Terminal primary.
Rights: ITU filingSNot ingested. Default ituRecorded: not_in_product. Thin “Unrecorded in Clarke” chip on the default Terminal. Quarantined filled stub is Experimental only. No network names. Not a deed.
Rights: sub-leaseSNo public feed. Quarantined — Experimental only.
Simulated capacity bookSFunction of v0 midpoint + congestion. Quarantined from default Terminal; Experimental disclosure.
Valuation chart / 30-day historySSeeded model path. Quarantined from default; labeled MODEL BACKFILL. Not trades.
Data freshness age_daysVIngest clock (last_run). Not file vintage.
File vintage / source as-ofVUCS: latest GEO launch in snapshot. FCC: SSAL sheet “Updated …”. TLE: epoch min/max. Shown on Terminal + agents meta.data_freshness.
FCC stale / position disagreementVWorkbook as-of older than 14 days, or in-window |UCS−TLE| / UCS ghosts. Compact Trust bar chips; details expand in place. Occupancy does not wait on FCC.
Non-commercial flagVUCS users without “Commercial.”
NORAD / COSPAR (API)MStored from UCS; some historical IDs were wrong. UI still hides them.

Claim language Clarke can use

Safe

  • “Normalized public GEO occupancy: Space-Track TLE longitude when the TLE passes published quality gates, otherwise the UCS catalog longitude.”

  • “Implied fair value v0 is a documented heuristic ($30M baseline × listed drivers), with a confidence band, not a market price.”

  • “Congestion is a 0–100 coordination-risk index from TLE-primary occupancy positions, not an ITU filing count.”

  • “Identity of named satellites can be checked against Space-Track / CelesTrak; we do not treat UCS NORAD IDs as authoritative for every row.”

  • “UCS vs TLE longitude disagreement is shown (Δ and positionDisputed); TLE longitude is not an FCC or ITU assignment.”

  • “Clarke does not record ITU deeds. ituRecorded is not_in_product because SNS is not ingested.”

  • “Operator labels are a curated alias map over UCS and FCC strings; source strings remain inspectable.”

Do not claim

  • Live transponder bids, last trade, or slot appraisal.

  • ITU deed / brought-into-use as recorded (BIU is a Clarke hint from UCS occupancy + FCC rows, not SNS).

  • That the curated overlay is the model, or that history is a price index.

  • That the default Terminal is a live exchange (simulated book is Experimental only).

  • That “operator” means exclusive holder of the longitude (it does not).

  • That UCS last_run today means 2026 ephemerides.

  • That a TLE sub-satellite longitude is the FCC-authorized or ITU-filed location.

  • That the operator alias map is a live ownership or sub-lease graph.

Re-ingest

Scheduled ingest.yml already runs UCS then Space-Track; the Space-Track step now applies TLE-primary audit columns. FCC is weekly (ingest-fcc.yml) against committed data/ssal.xlsx — see FCC SSAL refresh. Against a DB that already has TLEs:

npm run apply:positions    # audit columns; live occupancy also recomputes at query time
npm run ingest:fcc         # parse data/ssal.xlsx; record workbook vintage
npm run vintages           # backfill UCS / TLE / FCC vintages without re-downloading UCS
npm run seed:valuations    # backfill model path (not trades) after occupancy/model changes

Space-Track credentials are required only for a live TLE refresh (npm run ingest:spacetrack), not for apply:positions or ingest:fcc.

Not yet shipped

  1. Group registry rows so absorbed longitudes are not separate pages.

  2. ITU BR IFIC when licensed — replace the stub rather than decorating it.

  3. Daily valuation job that writes source=model_run only after ingest, still never source=trade until observed trades exist.

  4. A real FCC download when the agency publishes a bot-reachable file; until then the human replace-xlsx steps in FCC SSAL refresh.