Skip to content

canary 2 10.0.7 - #1704

Merged
branarakic merged 36 commits into
testnet-canaryfrom
main
Jul 14, 2026
Merged

canary 2 10.0.7#1704
branarakic merged 36 commits into
testnet-canaryfrom
main

Conversation

@branarakic

Copy link
Copy Markdown
Contributor

Summary

Changes

Test Plan

  • Tests pass locally (pnpm test)
  • Build succeeds (pnpm build)
  • Manually tested with dkg start (if applicable)

Related Issues

Branimir Rakic and others added 30 commits July 14, 2026 00:40
… 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
…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
…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
branarakic and others added 6 commits July 14, 2026 19:47
…-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
@branarakic
branarakic merged commit 0641972 into testnet-canary Jul 14, 2026
11 checks passed
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