Skip to content

Publish each cycle's store, named for the cycle - #43

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

Publish each cycle's store, named for the cycle#43
RISCfuture merged 1 commit into
navdata/emit-storefrom
navdata/publish-store

Conversation

@RISCfuture

@RISCfuture RISCfuture commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

A store built on a Mac is only useful to the app if the app can fetch it.
This publishes one per cycle to R2, beside the terrain the same bucket
already serves, and confirms afterwards that what went up can be read
back.

Generation stays on Linux, in NavDataDistribution, where it already runs
daily. This job transcodes what that publishes, which is the whole reason
it needs macOS: SwiftData does not exist on Linux. Two pipelines
generating from the FAA separately would drift, and the drift would only
show up in a cockpit.

Artifacts are named for their cycle and each manifest states the window
it is effective for. There is no "latest" pointer, because a mutable one
cannot say which cycle is current and a stale one is indistinguishable
from a fresh one. It also gives the client somewhere to fall back to: a
cycle whose publish failed leaves the previous one in place, still
carrying its own expiry, rather than a hard 404 for four weeks.

The manifest is uploaded after the store it describes, so a client that
finds a manifest can rely on the store being there.

The job is idempotent — a cycle already published costs two HTTP requests
and stops — so running it daily is how a missed publish gets picked up
rather than waiting for the next cycle.

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/publish-store branch 2 times, most recently from ccf7038 to c505cc4 Compare September 8, 2026 08:00
@RISCfuture
RISCfuture force-pushed the navdata/publish-store branch from c505cc4 to c5a531f Compare September 8, 2026 08:02
@RISCfuture
RISCfuture force-pushed the navdata/publish-store branch from c5a531f to 3629b55 Compare September 8, 2026 08:03
@RISCfuture
RISCfuture force-pushed the navdata/publish-store branch from 3629b55 to 82241ae Compare September 8, 2026 15:48
@RISCfuture
RISCfuture force-pushed the navdata/publish-store branch from 82241ae to 17ce676 Compare September 8, 2026 16:13
@RISCfuture
RISCfuture force-pushed the navdata/publish-store branch from 17ce676 to a451a6d Compare September 8, 2026 16:20
@RISCfuture
RISCfuture force-pushed the navdata/publish-store branch from a451a6d to d932496 Compare September 8, 2026 16:26
@RISCfuture
RISCfuture force-pushed the navdata/publish-store branch from d932496 to b107b79 Compare September 8, 2026 16:33
@RISCfuture
RISCfuture force-pushed the navdata/publish-store branch from b107b79 to be9cef2 Compare September 8, 2026 16:36
@RISCfuture
RISCfuture force-pushed the navdata/publish-store branch from be9cef2 to d4bedaa Compare September 8, 2026 16:58
@RISCfuture
RISCfuture force-pushed the navdata/publish-store branch from d4bedaa to 71d264b Compare September 8, 2026 17:10
@RISCfuture
RISCfuture force-pushed the navdata/publish-store branch from 71d264b to 66cac09 Compare September 8, 2026 18:09
A store built on a Mac is only useful to the app if the app can fetch it.
This publishes one per cycle to R2, beside the terrain the same bucket
already serves, and confirms afterwards that what went up can be read
back.

Generation stays on Linux, in NavDataDistribution, where it already runs
daily. This job transcodes what that publishes, which is the whole reason
it needs macOS: SwiftData does not exist on Linux. Two pipelines
generating from the FAA separately would drift, and the drift would only
show up in a cockpit.

Artifacts are named for their cycle and each manifest states the window
it is effective for. There is no "latest" pointer, because a mutable one
cannot say which cycle is current and a stale one is indistinguishable
from a fresh one. It also gives the client somewhere to fall back to: a
cycle whose publish failed leaves the previous one in place, still
carrying its own expiry, rather than a hard 404 for four weeks.

The manifest is uploaded after the store it describes, so a client that
finds a manifest can rely on the store being there.

The job is idempotent — a cycle already published costs two HTTP requests
and stops — so running it daily is how a missed publish gets picked up
rather than waiting for the next cycle.

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/publish-store branch from 66cac09 to 32d7494 Compare September 9, 2026 06:39
@RISCfuture
RISCfuture merged commit 4788fe8 into main Sep 9, 2026
5 checks passed
@RISCfuture
RISCfuture deleted the navdata/publish-store branch September 9, 2026 06:40
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