From 766b575ff86a4bbf67ec5ed9857ad82c2f39dfa5 Mon Sep 17 00:00:00 2001 From: Ashley Childress Date: Fri, 11 Sep 2026 11:15:47 -0400 Subject: [PATCH] fix: make bootstrapping a deliberate dispatch and list every asset released Self-review of the two preceding commits. - the release body hardcoded one FAA basename while files: uploads every source by glob, so each release attached an asset it did not list; basenames are now derived the same way - allow_bootstrap was a standing matrix key on tc that nothing forced anyone to remove, so an outage longer than the release walk-back would have rebuilt from one day with a green run; it is now a workflow_dispatch input naming the one source permitted to bootstrap - the per-source glob excluded prefixes by substring while build_registry.py matches the source token exactly, so a future source named registry_* would have been dropped here and kept there; both now anchor on the same filename shape - README lists the Transport Canada asset, which the previous commit began publishing Generated-by: Claude Opus 5 --- .../openairframes-daily-release.yaml | 20 +++++++++++++------ README.md | 5 +++++ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/.github/workflows/openairframes-daily-release.yaml b/.github/workflows/openairframes-daily-release.yaml index ea09758..7dcb5ce 100644 --- a/.github/workflows/openairframes-daily-release.yaml +++ b/.github/workflows/openairframes-daily-release.yaml @@ -10,6 +10,10 @@ on: description: 'Date to process (YYYY-MM-DD format, default: yesterday)' required: false type: string + bootstrap_source: + description: 'Onboarding only: the one source id permitted to rebuild from a single day' + required: false + type: string permissions: contents: write @@ -58,15 +62,14 @@ jobs: required: true - source: tc required: false - # Transport Canada has never published an asset. Remove this once the first - # run has succeeded: it exists to permit day one, not to paper over an outage. - allow_bootstrap: true uses: ./.github/workflows/registry-source.yaml with: source: ${{ matrix.source }} date: ${{ inputs.date }} required: ${{ matrix.required }} - allow_bootstrap: ${{ matrix.allow_bootstrap == true }} + # Standing permission would also fire on an outage. A source bootstraps only when a + # human dispatches the run naming it. + allow_bootstrap: ${{ inputs.bootstrap_source == matrix.source }} join-registry: needs: build-registry-source @@ -362,7 +365,7 @@ jobs: CSV_FILE_REGISTRY=$(find artifacts/faa -name "openairframes_registry_*.csv" -type f 2>/dev/null | head -1) # Every per-source registry CSV, whatever sources the matrix ran. SOURCE_CSVS=$(find artifacts/faa -name "openairframes_*.csv" -type f 2>/dev/null \ - | grep -v "openairframes_registry_" | grep -v "openairframes_community_" | sort) + | grep -vE '/openairframes_(registry|community|adsb)_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{4}-[0-9]{2}-[0-9]{2}\.csv$' | sort) echo "Per-source registry CSVs found:" echo "$SOURCE_CSVS" # Prefer concatenated file (with date range) over single-day file @@ -442,6 +445,11 @@ jobs: echo "source_csvs<> "$GITHUB_OUTPUT" echo "csv_basename_registry=$(basename "$CSV_FILE_REGISTRY")" >> "$GITHUB_OUTPUT" echo "csv_basename_faa=$CSV_BASENAME_FAA" >> "$GITHUB_OUTPUT" @@ -491,7 +499,7 @@ jobs: Assets: - NOTICE (source terms; required for redistribution) - ${{ steps.meta.outputs.csv_basename_registry }} - - ${{ steps.meta.outputs.csv_basename_faa }} + ${{ steps.meta.outputs.source_basenames }} ${{ steps.meta.outputs.csv_basename_adsb && format('- {0}', steps.meta.outputs.csv_basename_adsb) || '' }} - ${{ steps.meta.outputs.csv_basename_community }} - ${{ steps.meta.outputs.zip_basename }} diff --git a/README.md b/README.md index b98a250..b3b2e30 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,11 @@ df All [FAA registration data](https://www.faa.gov/licenses_certificates/aircraft_certification/aircraft_registry/releasable_aircraft_download) from 2023-08-16 to present (~275 MB). Superseded by `openairframes_registry.csv`; still published so existing consumers keep working. +- **openairframes_tc.csv** + The [Transport Canada Civil Aircraft Register](https://wwwapps.tc.gc.ca/saf-sec-sur/2/ccarcs-riacc/RchSimp.aspx), + ~35k aircraft with full ICAO 24-bit hex coverage. Also folded into + `openairframes_registry.csv`; published separately for the same reason as the FAA CSV. + - **ReleasableAircraft_{date}.zip** A daily snapshot of the FAA database, which updates at **05:30 UTC**