This release includes 3 breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
+10 more
Summary
AI summaryPolling now returns Signals in insertion order and restricts ack to lease owners.
Full changelog
v0.22.3 - Correctness Hardening
Agent Memory Bridge 0.22.3 closes verified correctness gaps in the existing
local coordination and promotion paths without adding MCP tools.
0.22.3 = insertion-ordered Signal polling, owner-matched active-claim ack, metadata-preserving promotion, and non-blocking operational output.
What Changed
- Signal polling through
recall(..., since=...)now returns later insertions
in ascending order, so a page limit cannot strand older unseen Signals. - Polling rejects missing, deleted, and cross-namespace anchors instead of
silently replaying from the beginning. Text and memory recall no longer emit
a reusable polling cursor. - An active claimed Signal can be acknowledged only by its current lease owner.
Pending, unclaimed Signals retain the existing ownerless-ack behavior. - Relation, promotion, and lineage readers now share one structured-record
scanner with normalized keys and deterministic duplicate-field handling. - Promotion keeps relation, validity, content-lineage, and database-lineage
metadata. FTS is refreshed, and cached embeddings remain detectably stale
until the normal rebuild path replaces them. - Operational and telemetry JSONL write failures are sanitized and reported to
stderr without changing the result of an already committed database action. - The regression suite includes an eight-process exact-ID claim test and
focused coverage for polling, ack ownership, parser consistency, promotion,
and post-commit output failures.
Why It Matters
The affected paths could previously skip Signals across paginated polling,
allow a non-owner to close claimed work, or discard governance metadata during
promotion. These are correctness failures in the existing contract, so this
patch fixes them before the next reliability release adds more maintenance and
service hardening.
Validation
pytest:405 passed- 10,000-Signal local acceptance with
limit=100: exact insertion order,
10,000unique IDs,0missing, and0unexpected across100pages - exact-ID claim contention: eight independent processes, one winner
- release, public-surface, and onboarding contracts: passed locally
- public MCP surface: unchanged at
10tools - GitHub release gate: all nine matrix jobs must be green before tagging
Boundaries
Polling is an insertion-only local SQLite/WAL contract. It is not exactly-once
delivery, a distributed queue, a scheduler, or a distributed lock. Claim owner
labels are declared client identities rather than authenticated principals, and
namespaces remain organizational labels rather than access-control boundaries.
This patch does not add Signal idempotency keys, mandatory governed writes,
formal schema-version migrations, service-lane isolation, a vector index, or
new MCP tools. Those concerns remain separate from the verified correctness
fixes shipped here.
Breaking Changes
- recall(..., since=...) now returns later insertions in ascending insertion order instead of relying on a cursor
- Polling rejects missing, deleted, and cross‑namespace anchors rather than silently replaying from the beginning
- Active claimed Signal ack is limited to its current lease owner; unclaimed Signals retain previous ownerless‑ack behavior
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About zzhang82/Agent-Memory-Bridge
MCP-native, local-first memory for coding agents that turns coding sessions into reusable engineering memory: decisions, gotchas, and domain knowledge.
Related context
Related tools
Earlier breaking changes
- v0.21.0 Procedures with declared domains are rejected for mismatched task domains; legacy unscoped procedures now emit a warning instead of auto‑assigning policy.
Beta — feedback welcome: [email protected]