Skip to content

MemPlumb v0.13.1 Preview - Unsigned Preview

Pre-release
Pre-release

Choose a tag to compare

@funnaz funnaz released this 30 Jul 08:58

MemPlumb v0.13.1 Preview

MemPlumb v0.13.1 is a correctness release for the local-first Agent MemoryOps
control plane.

What changed

  • Write decisions now carry a transactional expectation for the exact Memory
    identity observed by policy evaluation.
  • SQLite and PostgreSQL verify every expectation before persisting any
    Decision, Write Decision Observation, Memory, Change Feed entry, or Webhook
    outbox row.
  • PostgreSQL serializes built-in writes per Actor and re-evaluates a losing
    concurrent request against the newly committed Memory.
  • The pipeline retries at most three write conflicts, persists only the
    successful attempt, and reports dedicated retry and exhaustion metrics.
  • Duplicate normalized kind plus key facts fail with
    DUPLICATE_MEMORY_IDENTITY before an Event or idempotency claim is created.
  • A concurrent forget() operation wins over an older Event, so a stale
    request cannot silently reactivate a deleted Memory.
  • Newly curated Write Counterfactual Cases use v5 and Write Quality Cases use
    v6. They bind policy-evaluation time separately from Event time and preserve
    the observed Memory status/update time; strict v3/v4 readers and replay
    remain available for historical evidence.
  • PostgreSQL now takes transaction-scoped Workspace lifecycle locks immediately
    after BEGIN, including shared fences for rate-limit writes and sorted
    multi-Workspace maintenance. Actor/Workspace exports use an exclusive,
    read-only READ COMMITTED transaction; hard purge and restore/import use the
    same exclusive lifecycle boundary. This remains safe behind transaction
    poolers and prevents an export from opening a stale snapshot while waiting.
  • Actor hard purge now computes its manifest and counts, deletes all linked
    MemoryOps evidence, and commits its privacy-safe receipt in one transaction.
    Existing Context, adjudication, review, Replay, embedding, Causality, Change,
    Webhook, and Event writes cannot cross that boundary.
  • Retrieval Case curation re-reads and locks its current Context and
    Adjudication, then re-materializes and compares the complete restricted
    projection in the final Store transaction. Actor purge or Workspace
    replacement cannot leave a stale orphan Case containing deleted evidence.
  • Memory Store Contract v20, SQLite schema v26, PostgreSQL migration v32, and
    Actor export schema v14 make idempotency_event_fence mandatory. Each ingest
    claim binds its Actor to a five-minute lease and an unguessable token stored
    only as a SHA-256 hash.
  • Webhook secrets now bind to one global master-key fingerprint and generation.
    Rotation validates and rewraps every endpoint, including deleted endpoints,
    in one transaction. Delivery claims increment an ABA-safe lease version, and
    guarded dispatch holds the lifecycle fence through DNS and fetch so Actor
    purge cannot return while an older outbound request is still in flight.
    Webhook creation reads the key and generation together after DNS validation,
    so an in-flight rotation cannot produce a mismatched key-state snapshot.
  • The same request can take over an expired claim with a new token. Complete
    and fail require the current token and processing state; completion also
    verifies that the Event belongs to the claimed Actor.
  • Actor export and purge include processing, failed, and completed ingest
    idempotency records without claim-token hashes. A late completion returns
    409 EVENT_WRITE_FENCE_CONFLICT and cannot fail or complete a newer claim.
    Forced Workspace replacement counts and clears the ledger even though
    Snapshot v17 intentionally does not import it. Queued purge and replacement
    work still runs after an earlier replacement fails validation.
  • A purged Event makes late trace completion a safe no-op and makes Decision
    application fail closed, preventing orphan evidence.

Verification

  • Node: 578 discovered, 479 passed, 99 PostgreSQL-gated skips, 0 failed.
  • PostgreSQL 17 + pgvector 0.8.5: 113 passed, 0 failed.
  • Cloud Runtime: 3 passed. Python SDK: 20 passed.
  • TypeScript/Python strict checks, OpenAPI 1.13.0 with 72 paths, and all four
    quality benchmarks passed.
  • The Windows clean-directory acceptance gate and independent reproducibility
    build passed. The unsigned executable SHA-256 is
    14fb2435740d529937fa50f79179e60d26577b076e2e6a0e22f88fb77cdc6d39,
    bundle SHA-256 is
    fe2efed9a105db66bcf0dafb283be48d512fd485981fd93df2c9ae77d227231a, and
    Build ID is sha256:14b878dc9d3eae371a6a23b8.

Five-minute path

Download memplumb-0.13.1-windows-x64.zip, verify SHA256SUMS, extract it,
and run memplumb.exe. The default local Runtime stores data under the current
Windows profile and does not require Docker.

The full walkthrough is available at https://memplumb.com/#quickstart.

Preview boundary

This Windows artifact is reproducible and integrity-addressed but is not
Authenticode signed. Windows may display a reputation warning. It is an
evaluation build, not a generally available production release.

Shared production self-hosting uses the Node Runtime with PostgreSQL. The
experimental Cloudflare Worker + D1 adapter is not the shared production
control plane.

Verify before use

Compare the executable digest with the release SHA256SUMS and
manifest.json. Do not use an executable whose digest differs.

Preview use is governed by the attached EULA.md.

Build and distribution

Unsigned Preview: the Windows executable is integrity-addressed but does not carry an Authenticode publisher signature. Expect Windows SmartScreen warnings.

Artifacts

  • Windows x64 portable executable and ZIP, with manifest.json and SHA256SUMS
  • Python SDK wheel
  • TypeScript SDK package
  • Container image: ghcr.io/funnaz/memplumb@sha256:5f6fccf5737d57fa61a9edd6c24fb3c4f3b0ef4ef1991bf088916227fec52af2

The container is published by immutable digest with BuildKit provenance and an SBOM. The mutable latest tag is intentionally not published for v0.x.

Source revision: funnaz/memplumb@599c4c1c124723b6dfdef1a18850b038c6ab0ef4

Verify downloaded files with release-assets-SHA256SUMS. The Windows manifest records the post-signing executable digest and signing state.