Make GraphHub publication revision-safe - #115
Open
fproulx-boostsecurity wants to merge 1 commit into
Open
Conversation
fproulx-boostsecurity
marked this pull request as ready for review
August 6, 2026 16:11
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.
Summary
make e2e-smokeWhy
GraphHub previously batched mutation callbacks on a timer and allowed queue overflow to drop messages while keeping clients connected. Snapshot data and version reads were also separate, so a browser could silently continue with a mixed or incomplete graph.
This change consumes the ordered committed Pantry change stream introduced by PR #114. Snapshots now contain one coherent revision, full-mode deltas declare their base and resulting revisions, and any client that cannot remain contiguous must reload a complete snapshot.
Impact
Connected graph clients can no longer continue after missing committed state. Filtered and automatic clients receive revision-coherent projections rather than unsafe full-graph deltas.
An AWS organization scale run analyzed 500 repositories into 11,124 nodes and 11,904 edges. Filtered and automatic publication traffic fell from 12.47 MB to 2.85 MB, approximately 77%, with about 65 ms additional local synchronization latency. Full-mode fence recovery remained sub-second.
Validation
go test -race ./internal/pantry ./internal/kitchenmake testmake lintmake e2e-smokego test -tags=e2e ./.claude/e2e -run '^$'node --check internal/kitchen/browser_assets/graph.jsThe live E2E probes exercised full, filtered, and automatic modes against Kitchen. A visual browser pass remains outstanding because no browser backend was available in the test environment.
Stack
This draft targets
modernize/analysis-committed-stateand depends on PR #114.Closes #108