# Changelog

## [memprove 0.1.0](https://github.com/memprove/memprove/releases/tag/v0.1.0) · 2026-11-14

The first public release of memprove: a memory and task-state layer for coding agents. Every fact an agent records is bound to a commit, a repository state and a test run, and a deterministic rule decides whether it is still `verified`, `stale`, or `unconfirmed`. A local daemon keeps the record in a hash-chained ledger; a new session reads a compact Context Pack through a Claude Code SessionStart hook or the MCP server.

### Install

Pick the archive for your platform: `aarch64-apple-darwin` (macOS on Apple silicon) or `x86_64-unknown-linux-gnu` (Linux x86_64, glibc 2.35 or later, such as Ubuntu 22.04 and Debian 12). Both were built and test-installed by the release workflow.

```bash
target=aarch64-apple-darwin        # or x86_64-unknown-linux-gnu
base=https://github.com/memprove/memprove/releases/download/v0.1.0
curl -LO "$base/memprove-0.1.0-$target.tar.gz"
curl -LO "$base/memprove-0.1.0-$target.tar.gz.sha256"
shasum -a 256 -c "memprove-0.1.0-$target.tar.gz.sha256"
tar -xzf "memprove-0.1.0-$target.tar.gz"
cd "memprove-0.1.0-$target"
scripts/install.sh --from-binaries bin        # installs into ~/.memprove and starts the daemon
```

On macOS the binaries are not notarized: if you downloaded the archive with a browser, clear the quarantine flag first (`xattr -dr com.apple.quarantine memprove-0.1.0-aarch64-apple-darwin`).

**Other platforms:** build from source as the README's "Install in two steps" says (`cargo fetch --locked`, then the offline release build and `scripts/install.sh`). Linux on arm64 is not supported yet: the daemon's first start fails there in its file-system sandbox.

Then, inside a repository: `memprove init`, and `memprove begin --new-task "<title>"`. `docs/guide.md` is the full manual.

### What is in it

- The daemon (`memproved`) and the CLI (`memprove`): Tasks, Sessions, Checkpoints, test runs as Evidence, verdicts, the Context Pack, `ledger verify`, backup and restore, `doctor`.
- The Claude Code SessionStart hook and the MCP server (`memprove mcp serve`), and `memprove init` for Claude Code, Codex and Cursor.
- The takeover rule for unattended sessions, with its evaluation (`docs/takeover-eval.md`).

Built with Rust 1.96.0 from `7167468`; CI passes on macOS and Ubuntu (1130 tests). See `CHANGELOG.md`. Licence: Apache-2.0.

## CHANGELOG.md

The repository's own record, as it stands on `main`.

Each release, with its binaries, is on
https://github.com/memprove/memprove/releases.

### Unreleased

#### Added

- `.github/workflows/release.yml`: for a tag `v*` (or by hand for an
  existing tag) it builds the release binaries for Linux x86_64 (on
  Ubuntu 22.04) and macOS arm64, installs each archive once and runs
  `doctor`, and attaches the archives with their SHA-256 to the tag's
  GitHub Release. Linux arm64 is left out until memproved starts there.

### 0.1.0 · 2026-11-14

The first release: the work that made the repository publishable.

#### Added

- `memprove init`: enables a repository in one command for Claude Code,
  Codex and Cursor (registers the Project, keeps memprove's files out of
  Evidence through `.git/info/exclude`, writes the SessionStart hook, the
  MCP server entries and a short note for clients without a hook, then runs
  `doctor`).
- `memprove init --allow-tools`: `init` writes Claude Code's
  `permissions.allow` rules only when asked, and otherwise prints them;
  it also replaces what it wrote under the previous name (the `AGENTS.md`
  note, the Codex table, an unedited `.cursor/rules/continuity.mdc`).
- `memprove init` records the Project it registers, so the first
  `memprove begin --new-task` after it needs no `--project` (before, it
  stopped with a usage error); `doctor` says so before that first `begin`.
- `scripts/install.sh`, when it builds and crates are missing, runs
  `cargo fetch --locked` and builds again; the README, the guide and
  CONTRIBUTING fetch the crates before their offline builds.
- `scripts/install.sh` gives an upgrade within the same second as the one
  before it a free backup directory and free names for the old binaries
  (`-2`, `-3`, ...) instead of failing on a backup directory that exists.
- `TAKEOVER_EVAL_PROTECT` for the takeover evaluation: more directories
  (such as a second installation) that its safety checks guard, besides
  `~/.memprove` and `~/.config/memprove`.
- `scripts/install.sh --write-profile` / `--no-write-profile`; a default
  prefix (`~/.memprove`) needs no environment variable, because the CLI,
  the hook and the MCP server find `~/.memprove/config` on their own.
- `LICENSE` (Apache-2.0), `CONTRIBUTING.md`, a CI workflow for macOS and
  Ubuntu, `README.md`, `docs/guide.md` and `docs/architecture.md`.

#### Changed

- The product is named memprove: the crates are `memprove-*`, the binaries
  `memprove` and `memproved`, the MCP server `memprove` (allow rules
  `mcp__memprove`, `Bash(memprove run:*)`), the default installation prefix
  `~/.memprove` with its configuration in `~/.memprove/config`, the daemon's
  socket and lock `memproved.sock` and `memproved.lock`, the environment
  variables `MEMPROVE_*` (`MEMPROVE_CONFIG_DIR`, `MEMPROVE_DATA_DIR`,
  `MEMPROVE_TOKEN_FILE`, `MEMPROVE_TOKEN`, `MEMPROVE_CLIENT_SESSION`,
  `MEMPROVE_AGENT_NAME`, `MEMPROVE_AGENT_ROLE`, `MEMPROVE_PARENT_SESSION`),
  and the Pack's format label `memprove-pack v1`. The ledger's own
  identifiers are unchanged, so an existing ledger reads as before: the
  daemon still writes its Events as the producer `continuityd` and its
  repository probes as the collector `continuityd-git` (a migration's trigger
  enforces the former), the ontology version is
  `continuity.work-state-ontology.v4`, the backup marker is
  `continuity-backup.txt`, and the migrations and the published schemas are as
  they were. `scripts/install.sh` renames an installation of the previous name
  in place: it stops the old `continuityd`, keeps the data and the tokens,
  writes `ct` and `ensure-daemon.sh` again, and leaves `memproved` running
  when `continuityd` was. In a repository enabled under the
  previous name, `memprove hook install` replaces that installation's
  SessionStart handler, `env.CONTINUITY_CONFIG_DIR` and
  `mcpServers.continuity` (with `--allow-tools` also its rules
  `mcp__continuity`, `Bash(continuity run:*)` and `Bash(<path> run:*)`)
  instead of adding its own beside them, and `memprove hook uninstall`
  removes them.
- Every fixed text is English: the Context Pack lines, the hook's
  statements, the MCP tool descriptions and failure sentences, the help
  pages, `resume`, `preview`, `doctor`, the run hints and the daemon's
  error details. The Pack's line structure, omission levels, budget and
  digest algorithm are unchanged; only the digest values moved.
- The last sentence of the hook's and the MCP `pack` tool's opening, and the
  takeover rule in the MCP `begin` and `end` descriptions, name the session
  that records the open item for a Session it leaves open, and when: in its
  first checkpoint (before, the item "is recorded", with no one named).
- The query Pack keeps the ASCII matching path only (terms of three or more
  characters through the trigram index, shorter ones as whole words).
- The takeover evaluation's prompt, seeds and scorer are English.

#### Removed

- The semantic projection and its MCP tool, the ontology manifest, the
  client and query profiles, the ContextManifest and the static HTML export,
  with their tests and documentation (the budgets and omission levels they
  carried are plain constants of the Pack now).

