Skip to content

Download the airport database instead of building it - #44

Merged
RISCfuture merged 1 commit into
navdata/publish-storefrom
navdata/prefer-prebuilt-store
Sep 9, 2026
Merged

Download the airport database instead of building it#44
RISCfuture merged 1 commit into
navdata/publish-storefrom
navdata/prefer-prebuilt-store

Conversation

@RISCfuture

@RISCfuture RISCfuture commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

This is what the rest of the work was for. The app asks for the store
that was built for this cycle, expands it into a new generation, and
switches to it — so the minutes it spent inserting a decoded property
list into SwiftData become a transfer and a decompression.

Cycles are asked for by name and walked backwards, one at a time. A
manifest states the window it is effective for, which a mutable "latest"
pointer could not, and a cycle whose publish failed therefore costs the
pilot the previous cycle's data rather than four weeks with no update at
all.

The published schema fingerprint is checked before anything is
downloaded, let alone opened. SwiftData answers a near-miss by migrating
the store rather than refusing it, so a build that opened first would get
a silent, slow migration where a clean fall back to importing was wanted.
The download is checked against the digest its manifest published, and
the expanded store still has to open and hold airports before anything
switches to it.

Every step may fail and none of them is fatal: a cycle nobody published,
a store built for a different schema, a truncated transfer — each falls
back to importing the property list, which is still published and still
works. That is what keeps this an optimization rather than a dependency,
and it is why the import path was kept rather than replaced.

Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01471376Uhug2TYZN8RDFGtq


Stack created with GitHub Stacks CLIGive Feedback 💬

🤖 Generated with Claude Code

https://claude.ai/code/session_01471376Uhug2TYZN8RDFGtq

@RISCfuture
RISCfuture force-pushed the navdata/prefer-prebuilt-store branch from 8857c58 to 52140e4 Compare September 8, 2026 07:34
@RISCfuture
RISCfuture force-pushed the navdata/prefer-prebuilt-store branch from 52140e4 to 162b256 Compare September 8, 2026 08:00
@RISCfuture
RISCfuture force-pushed the navdata/prefer-prebuilt-store branch 2 times, most recently from 51f007e to 5f1ad13 Compare September 8, 2026 08:03
@RISCfuture
RISCfuture force-pushed the navdata/prefer-prebuilt-store branch from 5f1ad13 to 25a7e4e Compare September 8, 2026 15:48
@RISCfuture
RISCfuture force-pushed the navdata/prefer-prebuilt-store branch from 25a7e4e to 3391004 Compare September 8, 2026 16:13
@RISCfuture
RISCfuture force-pushed the navdata/prefer-prebuilt-store branch from 3391004 to 3613c3b Compare September 8, 2026 16:20
@RISCfuture
RISCfuture force-pushed the navdata/prefer-prebuilt-store branch from 3613c3b to f4645a9 Compare September 8, 2026 16:26
@RISCfuture
RISCfuture force-pushed the navdata/prefer-prebuilt-store branch from f4645a9 to f8be41b Compare September 8, 2026 16:33
@RISCfuture
RISCfuture force-pushed the navdata/prefer-prebuilt-store branch from f8be41b to 15ddcda Compare September 8, 2026 16:36
@RISCfuture
RISCfuture force-pushed the navdata/prefer-prebuilt-store branch from 15ddcda to 3ef137c Compare September 8, 2026 16:58
@RISCfuture
RISCfuture force-pushed the navdata/prefer-prebuilt-store branch from 3ef137c to cc416d7 Compare September 8, 2026 17:10
@RISCfuture
RISCfuture force-pushed the navdata/prefer-prebuilt-store branch from cc416d7 to 7d36d45 Compare September 8, 2026 18:09
This is what the rest of the work was for. The app asks for the store
that was built for this cycle, expands it into a new generation, and
switches to it — so the minutes it spent inserting a decoded property
list into SwiftData become a transfer and a decompression.

Cycles are asked for by name and walked backwards, one at a time. A
manifest states the window it is effective for, which a mutable "latest"
pointer could not, and a cycle whose publish failed therefore costs the
pilot the previous cycle's data rather than four weeks with no update at
all.

The published schema fingerprint is checked before anything is
downloaded, let alone opened. SwiftData answers a near-miss by migrating
the store rather than refusing it, so a build that opened first would get
a silent, slow migration where a clean fall back to importing was wanted.
The download is checked against the digest its manifest published, and
the expanded store still has to open and hold airports before anything
switches to it.

The OurAirports processing date comes across in the manifest, so About
reports it whichever path installed the data. Nothing in the store file
records when its non-FAA airports were gathered, and a store that arrived
prebuilt would otherwise report none.

The consent screen no longer claims the wait is a few minutes. It is
seconds when the prepared store is there, and only the property-list
fallback behind it still takes minutes.

Every step may fail and none of them is fatal: a cycle nobody published,
a store built for a different schema, a truncated transfer — each falls
back to importing the property list, which is still published and still
works. That is what keeps this an optimization rather than a dependency,
and it is why the import path was kept rather than replaced.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01471376Uhug2TYZN8RDFGtq
@RISCfuture
RISCfuture force-pushed the navdata/prefer-prebuilt-store branch from 7d36d45 to 576d8eb Compare September 9, 2026 06:39
@RISCfuture
RISCfuture merged commit 21d610f into main Sep 9, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant