Move the store's write path into the shared framework - #41
Merged
Conversation
RISCfuture
force-pushed
the
navdata/shared-writer
branch
2 times, most recently
from
September 8, 2026 08:00
2388dcf to
308a3c5
Compare
RISCfuture
force-pushed
the
navdata/shared-writer
branch
from
September 8, 2026 08:02
308a3c5 to
64b37aa
Compare
RISCfuture
force-pushed
the
navdata/shared-writer
branch
from
September 8, 2026 08:03
64b37aa to
48e06d8
Compare
RISCfuture
force-pushed
the
navdata/shared-writer
branch
from
September 8, 2026 15:48
48e06d8 to
eba5377
Compare
RISCfuture
force-pushed
the
navdata/shared-writer
branch
from
September 8, 2026 16:13
eba5377 to
ad3bd9f
Compare
RISCfuture
force-pushed
the
navdata/shared-writer
branch
from
September 8, 2026 16:19
ad3bd9f to
d6355b0
Compare
RISCfuture
force-pushed
the
navdata/shared-writer
branch
from
September 8, 2026 16:26
d6355b0 to
6926d90
Compare
RISCfuture
force-pushed
the
navdata/shared-writer
branch
from
September 8, 2026 16:33
6926d90 to
6f9cdc6
Compare
RISCfuture
force-pushed
the
navdata/shared-writer
branch
from
September 8, 2026 16:35
6f9cdc6 to
92e7ebb
Compare
RISCfuture
force-pushed
the
navdata/shared-writer
branch
from
September 8, 2026 17:10
92e7ebb to
5a15f33
Compare
RISCfuture
force-pushed
the
navdata/shared-writer
branch
from
September 8, 2026 18:09
5a15f33 to
095f410
Compare
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
force-pushed
the
navdata/shared-writer
branch
from
September 9, 2026 06:39
095f410 to
5d99b80
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 CLI • Give Feedback 💬
🤖 Generated with Claude Code
https://claude.ai/code/session_01471376Uhug2TYZN8RDFGtq