canary 2 10.0.7 - #1704
Merged
Merged
Conversation
… leaks Follow-up to #1691. The responder admits a prioritized request in two stages, and the authorized stage reserves its queue slot while pre-authorization is still running. That reservation counts against the per-peer queue limit, so a reservation left behind by a request that never reaches the authorized stage is not a leak a peer can wait out: once SYNC_RESPONDER_PER_PEER_QUEUE_LIMIT of them accumulate, every later request from that peer is refused as "peer queue full" while its queue is in fact empty, and the peer never recovers. The reservation is released correctly today. These tests keep it that way: they drive more short-circuiting requests than the per-peer limit through a single responder (a fresh handler would get a fresh limiter and hide the leak), for both paths that skip the authorized stage — an authorization denial and an authorization that throws — then assert the peer is still served. Verified to have teeth: reintroducing the leak (dropping the reservation delete in PriorityAdmissionQueue's release) fails both tests with exactly the predicted "sync responder peer queue full" on an empty queue. `SYNC_RESPONDER_PER_PEER_QUEUE_LIMIT` is exported so the tests bind to the real limit instead of a hardcoded copy, matching the snapshot limits already exported for the same reason. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ack-state # Conflicts: # packages/agent/src/p2p/messenger.ts
…er-displacement-tests
…e recovery evidence required Addresses the review on #1683. The new `knowledgeAssetVmPublishHandler` had replaced the exported `knowledgeAssetVmPublishExecutor` / `knowledgeAssetVmPublishPreflight` fields outright, silently breaking existing callers of the public `AsyncLiftPublisherConfig`. Those fields are restored as deprecated aliases and adapted into the handler shape, so an existing integration keeps working while new code uses the handler. Named-KA recovery also required `publishProof` at runtime while the type said it was optional, so a resolver could compile while returning a shape the finalizer would reject. `AsyncKnowledgeAssetVmPublishRecoveryEvidence` now makes the proof (and its author address) required, with a dedicated resolver type, moving the invariant into the type system instead of scattered runtime checks. The blocked-recovery test now also asserts the wallet lock is still held after a confirmed-but-unrepaired job returns false -- it previously proved only that the status stayed broadcast, so releasing the lock early would have kept the test green while the runtime scheduled work on that wallet. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… uses The gate probed `systemctl restart` but the disruptive phase runs `systemctl stop`. An argument-scoped sudoers rule can grant one and deny the other, in which case preflight passed and the run died at the first stop -- after it had already created a context graph and published fixtures against a live testnet. Probe the verb we actually execute. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… graph drop Only the length-equality term in `consumesEntireAssertion` stops a full promote from dropping the whole WM graph when reserved rows must stay behind. The import-file handler writes `urn:dkg:file:` / `urn:dkg:extraction:` descriptor and provenance rows straight into that graph, so every imported file's bookkeeping depends on that term -- and nothing was covering it. Only the positive case (fast path engages on a fully consumed graph) had a test. Verified the new test has teeth: removing the length term makes the fast path drop the WM graph and the test fails. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Local devnet deploys regenerate this file against an ephemeral chain. The only content change was a version field; no addresses moved. It is unrelated churn in an agent-only change, so restore it to main. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ot strand a wallet Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…placement-tests test(sync): guard the responder two-stage handoff reservation against leaks
fix(join): reconcile queued curator NACKs
…ness test: add guarded testnet private-CG recovery harness
fix(storage): preserve foreground capacity during finalization load
…-timeout fix(publisher): bound full-share blank-node cleanup
…-recovery fix(publisher): recover confirmed named KA lifecycle
…contract refactor(agent): clarify VM reconcile scheduler async contract
…-catchup # Conflicts: # packages/agent/src/chain-reconciler.ts # packages/agent/test/chain-reconciler.test.ts
fix(agent): gate and serialize context graph reconciliation
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
Changes
Test Plan
pnpm test)pnpm build)dkg start(if applicable)Related Issues