Skip to content

Move the store's write path into the shared framework - #41

Open
RISCfuture wants to merge 1 commit into
navdata/continued-processingfrom
navdata/shared-writer
Open

Move the store's write path into the shared framework#41
RISCfuture wants to merge 1 commit into
navdata/continued-processingfrom
navdata/shared-writer

Conversation

@RISCfuture

@RISCfuture RISCfuture commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

The shape a nav-data store takes was described in one place, inside the
app's importer, and is about to be needed in a second: the macOS tool
will build a store ahead of time so the app can download one rather than
spend minutes assembling it. Two implementations of that shape would
drift, and the difference between them would surface in a cockpit rather
than in a build.

NavDataStoreWriter now owns it, and the app's importer is one of its two
callers. NavDataLoader keeps what is actually its own — the download, the
LZMA decode, the state stream, the Sentry transaction and the signposts —
and stops being a model actor, since it no longer holds a context. The
executor constraints its documentation described belong to the writer,
and moved with the code they constrain.

Progress crosses between them through a stream rather than a callback. A
callback would have to run back in the loader's isolation from an actor
whose executor the write occupies, which is the deadlock the loader's own
download path already avoids the same way.

SF50 Shared links swift-algorithms, which the write path batches with and
which only the app target had.

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/shared-writer branch 2 times, most recently from 2388dcf to 308a3c5 Compare September 8, 2026 08:00
@RISCfuture
RISCfuture force-pushed the navdata/shared-writer branch from 308a3c5 to 64b37aa Compare September 8, 2026 08:02
@RISCfuture
RISCfuture force-pushed the navdata/shared-writer branch from 64b37aa to 48e06d8 Compare September 8, 2026 08:03
@RISCfuture
RISCfuture force-pushed the navdata/shared-writer branch from 48e06d8 to eba5377 Compare September 8, 2026 15:48
@RISCfuture
RISCfuture force-pushed the navdata/shared-writer branch from eba5377 to ad3bd9f Compare September 8, 2026 16:13
@RISCfuture
RISCfuture force-pushed the navdata/shared-writer branch from ad3bd9f to d6355b0 Compare September 8, 2026 16:19
@RISCfuture
RISCfuture force-pushed the navdata/shared-writer branch from d6355b0 to 6926d90 Compare September 8, 2026 16:26
@RISCfuture
RISCfuture force-pushed the navdata/shared-writer branch from 6926d90 to 6f9cdc6 Compare September 8, 2026 16:33
@RISCfuture
RISCfuture force-pushed the navdata/shared-writer branch from 6f9cdc6 to 92e7ebb Compare September 8, 2026 16:35
@RISCfuture
RISCfuture force-pushed the navdata/shared-writer branch from 92e7ebb to 5a15f33 Compare September 8, 2026 17:10
The shape a nav-data store takes was described in one place, inside the
app's importer, and is about to be needed in a second: the macOS tool
will build a store ahead of time so the app can download one rather than
spend minutes assembling it. Two implementations of that shape would
drift, and the difference between them would surface in a cockpit rather
than in a build.

NavDataStoreWriter now owns it, and the app's importer is one of its two
callers. NavDataLoader keeps what is actually its own — the download, the
LZMA decode, the state stream, the Sentry transaction and the signposts —
and stops being a model actor, since it no longer holds a context. The
executor constraints its documentation described belong to the writer,
and moved with the code they constrain.

Progress crosses between them through a stream rather than a callback. A
callback would have to run back in the loader's isolation from an actor
whose executor the write occupies, which is the deadlock the loader's own
download path already avoids the same way.

SF50 Shared links swift-algorithms, which the write path batches with and
which only the app target had.

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/shared-writer branch from 5a15f33 to 095f410 Compare September 8, 2026 18:09
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