-
Notifications
You must be signed in to change notification settings - Fork 10
fix(sync): walk catch-up peers progressively and fail closed on empty rounds (#2006) #2007
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
44 commits
Select commit
Hold shift + click to select a range
b93a473
fix(sync): walk catch-up peers progressively and fail closed on empty…
Jurij89 76b16a2
fix(sync): spend the single-peer opening wave only on a resolvable cu…
Jurij89 d3317b0
fix(sync): gate the catch-up early stop on authoritative proof (revie…
Jurij89 4c02f87
docs(sync): state where the admission-source trust boundary is
Jurij89 4e6ae9c
docs(sync): correct the walk comment after authority gating
Jurij89 def08c3
refactor(sync): type the catch-up plane boundary and normalize source…
Jurij89 216bcbe
fix(sync): make the empty verdict reachable, latch worker death, cove…
Jurij89 598c0ca
test(sync): cover the legacy readiness branch and both empty-evidence…
Jurij89 1930228
test(sync): pin the reconciler's admission origin at its call site
Jurij89 96a48d2
chore: drop the local hardhat deployment artifact from this PR
Jurij89 687650f
refactor(sync): one definition of "a peer's plane evidence" (review r…
Jurij89 04f1216
fix(sync): a bootstrap hint must not count as the catch-up authority …
Jurij89 c141370
fix(sync): make the removed retryDelaysMs option a compile error, not…
Jurij89 4f03a5f
fix(sync): an empty curator round must not settle a private plane (re…
Jurij89 6683d9c
fix(sync): actually type the catch-up plane boundary
Jurij89 8cd3cef
test(sync): stop leaking catch-up env overrides into sibling suites
Jurij89 7021150
fix(sync): curator provenance from the resolver, and let it prove an …
Jurij89 fb0db7d
fix(sync): integrity rejections void an empty round; one boundary res…
Jurij89 19024a1
docs(changelog): state that rejected content voids the empty verdict
Jurij89 af3c38f
test(sync): pin every kill-switch spelling and the removed public con…
Jurij89 9ac64b5
fix(sync): teach the pre-readiness gates about the authority-empty proof
Jurij89 753f0dc
fix(sync): use the agent's own provenance contract at the worker bridge
Jurij89 1599470
test(sync): make the offline-curator test exercise a real offline aut…
Jurij89 5aacb7d
fix(sync): a non-curator with only `_meta` can no longer prove a plan…
Jurij89 96e1c9b
test(sync): pin every admission source at its production call site
Jurij89 330a9d6
fix(sync): contain the untrusted admission source at the worker boundary
Jurij89 f58c827
test(sync): cover the bridge handoff that produces the authority-rank…
Jurij89 161332f
fix(sync): shared-memory metadata is not hosted-empty proof
Jurij89 1ee5c13
fix(sync): the curator is not authoritative for a PUBLIC shared-memor…
Jurij89 3b9e2ff
fix(sync): fail loudly on the pre-#2006 positional admission shape
Jurij89 2e8f38b
fix(sync): reject removed/reshaped options at runtime, not just at co…
Jurij89 0b7acbf
fix(sync): require the plane discriminator instead of defaulting it
Jurij89 d2c77a6
test(sync): pin the source handoff from the production helper to the …
Jurij89 cf72f24
fix(sync): an injected `wait` without `now` spins for the whole budget
Jurij89 be6da3f
fix(sync): the walk's stop rule must consult the round, like readines…
Jurij89 b649b67
fix(sync): a silent CURATOR voids the empty verdict; a silent strange…
Jurij89 01e19e4
fix(sync): an ambiguous registry match may rank the walk but not end it
Jurij89 5c97348
fix(sync): authority must come from the graph's OWN metadata, not the…
Jurij89 6be6d19
fix(sync): read the graph's real definition, and stop freezing empty …
Jurij89 461ec64
fix(sync): keep catch-up authority out of network-replicated metadata
Jurij89 cae1211
fix(sync): stop a partial empty round from marking the subscription s…
Jurij89 166d35f
fix(sync): require a whole, unambiguous binding before authority
Jurij89 e7f46dc
fix(sync): withhold catch-up authority until a binding has a trusted …
Jurij89 73bdd65
test(sync): stop the early-stop suites claiming a behaviour productio…
Jurij89 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
Oops, something went wrong.
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🟡 Issue: The new own-metadata reader is only covered through stubs
What's wrong
The PR's authority decision depends on distinguishing facts declared by the graph's own
_metafrom facts supplied by the merged projection. The added tests cover that distinction mostly by hand-buildinggetOwnCgMetaFactsresponses, so they would not catch the production reader loading the wrong graph or accidentally reusing merged projection behavior.Example
A regression where
getOwnMetaFacts()accidentally also loadedagentsGraphwould let an AGENTS-only curator/creator pair becomeprovenance: 'metadata'. The current resolver tests would still pass because they stubgetOwnCgMetaFactswith already-separatedownMeta.Suggested direction
Add a regression test for
ContextGraphMetaProjection.getOwnMetaFactsagainst the real store, with facts in_metaand AGENTS/ONTOLOGY proving the reader does not merge external sources.For Agents
Add coverage in
packages/agent/test/context-graph-meta-projection.test.tsusing a realOxigraphStore: insert conflicting curator/creator facts into<cg>/_metaand AGENTS/ONTOLOGY, assertprojection.get(id)sees the merged route whileprojection.getOwnMetaFacts(id)returns only the own_metafacts. Ideally include the AGENTS-only wallet curator case and prove it is rankable but not authoritative when wired throughresolveCuratorSyncPeer.