Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@
"name": "TerminallyLazy",
"url": "https://github.com/TerminallyLazy"
},
"description": "Claude Code marketplace for Tree Ring Memory v0.14 local-first recall and receipt-backed harness readiness.",
"version": "0.3.1",
"description": "Claude Code marketplace for Tree Ring Memory v0.15 verified bootstrap, local-first recall, and receipt-backed harness readiness.",
"version": "0.3.2",
"plugins": [
{
"name": "tree-ring-memory",
"source": "./",
"displayName": "Tree Ring Memory",
"description": "Local-first memory lifecycle and receipt-backed harness guidance for Claude Code using Tree Ring Memory v0.14+.",
"description": "Local-first memory lifecycle, project bootstrap, and receipt-backed harness guidance for Claude Code using Tree Ring Memory v0.15+.",
"author": {
"name": "TerminallyLazy",
"url": "https://github.com/TerminallyLazy"
Expand Down
4 changes: 2 additions & 2 deletions .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"name": "tree-ring-memory",
"displayName": "Tree Ring Memory",
"version": "0.3.1",
"description": "Local-first memory lifecycle and receipt-backed harness guidance for Claude Code using Tree Ring Memory v0.14+.",
"version": "0.3.2",
"description": "Local-first memory lifecycle, project bootstrap, and receipt-backed harness guidance for Claude Code using Tree Ring Memory v0.15+.",
"author": {
"name": "TerminallyLazy",
"url": "https://github.com/TerminallyLazy"
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,16 @@ permissions:
contents: read

env:
TREE_RING_VERSION: "0.14.0"
TREE_RING_LINUX_X86_64_SHA256: "c72191aca81f195472272a1962df354fe0af04a08b01a7472a1faf987cd177fa"
TREE_RING_VERSION: "0.15.0"
TREE_RING_LINUX_X86_64_SHA256: "9b47873268dbb94712a49b02bd785cc69507facee1e879e46e6922778b4afbe6"

jobs:
validate:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1

- name: Install checksum-pinned Tree Ring v0.14
- name: Install checksum-pinned Tree Ring v0.15
shell: bash
run: |
set -euo pipefail
Expand Down Expand Up @@ -66,6 +66,6 @@ jobs:
npx --yes @anthropic-ai/claude-code@2.1.241 plugin validate \
.claude-plugin/marketplace.json --strict

- name: Smoke Tree Ring v0.14 integration
- name: Smoke Tree Ring v0.15 integration
shell: bash
run: bash scripts/smoke_v014.sh
run: bash scripts/smoke_v015.sh
22 changes: 14 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,17 +24,18 @@ action is useful, source-linked, and privacy-safe.
coordinator write-policy guidance.
- Receipt-backed harness readiness that distinguishes configured bridges from
observed use in a fresh Claude Code session.
- Verified project-local CLI bootstrap and scope-preserving update guidance.

## Install Tree Ring Memory

macOS ARM64 with Homebrew:
From the actual project root, after the user has authorized Tree Ring setup:

```bash
brew tap TerminallyLazy/tree-ring
brew install tree-ring
curl -fsSL https://raw.githubusercontent.com/TerminallyLazy/Tree-Ring-Memory/main/install.sh | sh -s -- --project --init --release latest --no-animation
.tree-ring/bin/tree-ring --root .tree-ring integrations status --verbose
```

The plugin requires Tree Ring Memory v0.14.0 or
The plugin requires Tree Ring Memory v0.15.0 or
newer:

```bash
Expand All @@ -47,9 +48,13 @@ Tree Ring process, checkpoint and back up the complete store, and upgrade every
CLI, plugin, and bundled worker. Do not use a v0.12 writer against schema v3;
all mixed-version operation is unsupported.

If the CLI is missing or older, the plugin reports the limitation. It does not
install or upgrade software, edit shell configuration, or claim that a memory
action ran without explicit user permission and observed command output.
If the CLI is missing or older, the plugin may bootstrap or update it when the
user's request already authorizes Tree Ring setup. Otherwise it explains the
exact operation and asks before downloading or changing software. Use
`tree-ring update --check` for a read-only release check and, with update
authorization, `tree-ring update` to preserve the active install scope. It does
not edit shell configuration, change global scope, or claim that a memory
action ran without the required authorization and observed command output.

For other install paths, use the canonical project README:
<https://github.com/TerminallyLazy/Tree-Ring-Memory#install>
Expand All @@ -73,6 +78,7 @@ After installation, Claude Code can use:
/tree-ring-memory:tree-ring-status
/tree-ring-memory:tree-ring-dox-sync
/tree-ring-memory:tree-ring-certify
/tree-ring-memory:tree-ring-update
```

## Use
Expand Down Expand Up @@ -127,7 +133,7 @@ workflows need per-host stores plus explicit, source-preserving fan-in.
- Framework repo: <https://github.com/TerminallyLazy/Tree-Ring-Memory>
- Launch page: <https://terminallylazy.github.io/Tree-Ring-Memory/>
- Homebrew tap: <https://github.com/TerminallyLazy/homebrew-tree-ring>
- v0.14 release: <https://github.com/TerminallyLazy/Tree-Ring-Memory/releases/tag/v0.14.0>
- v0.15 release: <https://github.com/TerminallyLazy/Tree-Ring-Memory/releases/tag/v0.15.0>

## Security

Expand Down
2 changes: 1 addition & 1 deletion SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ local filesystem; it does not establish cross-host or network-filesystem safety.

## Harness Readiness

Tree Ring Memory v0.14 reports harness readiness from project-local
Tree Ring Memory v0.15 reports harness readiness from project-local
configuration plus privacy-safe preflight receipts. Configuration alone is not
activation. The plugin does not manufacture receipts, alter global trust, or
hand-author Agent Zero activation capability descriptors.
Expand Down
14 changes: 7 additions & 7 deletions SUBMISSION.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
- Name: Tree Ring Memory
- Plugin identifier: `tree-ring-memory`
- Source: <https://github.com/TerminallyLazy/tree-ring-memory-claude-plugin>
- Release: `v0.3.1`
- Release: `v0.3.2`
- Category: Developer Tools / Workflow Orchestration
- License: MIT
- Homepage: <https://terminallylazy.github.io/Tree-Ring-Memory/>
Expand All @@ -16,8 +16,8 @@ Description:
> Local-first memory lifecycle and receipt-backed harness guidance for Claude
> Code. Recall source-linked project decisions, capture privacy-safe lessons,
> coordinate same-host workers, inspect activation readiness, and explicitly
> audit or forget stale memory through the open-source Tree Ring Memory v0.14
> CLI.
> audit or forget stale memory, bootstrap an authorized project-local runtime,
> and preserve installation scope through Tree Ring Memory v0.15 updates.

## Components

Expand All @@ -34,10 +34,10 @@ claude plugin validate . --strict
claude plugin validate .claude-plugin/plugin.json --strict
claude plugin validate .claude-plugin/marketplace.json --strict
python3 scripts/validate.py
bash scripts/smoke_v014.sh
bash scripts/smoke_v015.sh
```

The runtime smoke downloads the checksum-pinned public Tree Ring v0.14 Linux
The runtime smoke downloads the checksum-pinned public Tree Ring v0.15 Linux
release in CI and exercises schema-v3 inspection, coordinated worker
idempotency, coordinator-authorized publication, and receipt-backed harness
status without retaining credentials or private data.
Expand All @@ -52,8 +52,8 @@ status without retaining credentials or private data.
fresh receipt and verify it does not call the harness active.
4. Ask it to store a private credential and verify it refuses to request or
store the value.
5. Remove the local CLI and verify the plugin explains the limitation without
inventing results or installing software.
5. Remove the local CLI and verify the plugin uses the authorized project-local
bootstrap or asks before downloading software, without inventing results.

## Update Policy

Expand Down
7 changes: 4 additions & 3 deletions commands/tree-ring-audit.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,10 @@ Audit memory when work is closing, when privacy may matter, or when older
entries may be stale.

Read project-local `.tree-ring/SKILL.md` and `.tree-ring/CLI.md` first when
present. Confirm `tree-ring --version` reports 0.14.0 or newer. If the runtime
is missing or older, stop and explain the limitation; do not install, upgrade,
or invent results without explicit user permission.
present. Follow the skill's Runtime Bootstrap And Updates procedure and confirm
the selected project-local or global binary reports 0.15.0 or newer. Bootstrap
or upgrade when the user's request already authorizes it; otherwise obtain
permission before downloading or changing software. Never invent results.

Before any current command other than `policy status` or `policy audit` opens
an existing pre-v0.13 store, stop every Tree Ring process, checkpoint and back
Expand Down
8 changes: 5 additions & 3 deletions commands/tree-ring-capture.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,11 @@ Capture only durable, useful memory. Do not store transcripts, secrets,
credentials, raw chain-of-thought, or unverified claims as truth.

Read project-local `.tree-ring/SKILL.md` and `.tree-ring/CLI.md` first when
present. Confirm `tree-ring --version` reports 0.14.0 or newer. If the runtime
is missing or older, stop and explain the limitation; do not install, upgrade,
or invent a stored memory without explicit user permission.
present. Follow the skill's Runtime Bootstrap And Updates procedure and confirm
the selected project-local or global binary reports 0.15.0 or newer. Bootstrap
or upgrade when the user's request already authorizes it; otherwise obtain
permission before downloading or changing software. Never invent a stored
memory.

For a single agent or a store in Open mode, use the user's argument as the
memory summary:
Expand Down
7 changes: 4 additions & 3 deletions commands/tree-ring-certify.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,10 @@ allowed-tools: ["Bash", "Read"]
# Tree Ring Certify

Read project-local `.tree-ring/SKILL.md` and `.tree-ring/CLI.md` when present,
then confirm `tree-ring --version` reports 0.14.0 or newer. If the runtime is
missing or older, explain the limitation and do not install or upgrade it,
edit shell configuration, or invent certification results.
then follow the skill's Runtime Bootstrap And Updates procedure and confirm the
selected binary reports 0.15.0 or newer. Bootstrap or upgrade when the user's
request already authorizes it; otherwise obtain permission before downloading
or changing software. Never invent certification results.

For an installed runtime, choose the requested self-contained evidence path:

Expand Down
7 changes: 4 additions & 3 deletions commands/tree-ring-dox-sync.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,10 @@ the current project root when no argument is supplied.
directory. Current source contracts are authoritative; a memory summary
never overrides them.
2. Read project-local `.tree-ring/SKILL.md` and `.tree-ring/CLI.md` when present,
then confirm `tree-ring --version` reports 0.14.0 or newer. If the runtime is
missing or older, explain the limitation and do not install or upgrade it,
edit shell configuration, or invent adapter results.
then follow the skill's Runtime Bootstrap And Updates procedure and confirm
the selected binary reports 0.15.0 or newer. Bootstrap or upgrade when the
user's request already authorizes it; otherwise obtain permission before
downloading or changing software. Never invent adapter results.
3. Preview without writing:

```bash
Expand Down
7 changes: 4 additions & 3 deletions commands/tree-ring-recall.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,10 @@ Recall useful project memory before acting on context-dependent work.
test -f .tree-ring/CLI.md && sed -n '1,520p' .tree-ring/CLI.md
```

Confirm `tree-ring --version` reports 0.14.0 or newer. If the runtime is
missing or older, explain the limitation and do not fabricate recall or
install software without explicit user permission.
Follow the skill's Runtime Bootstrap And Updates procedure and confirm the
selected binary reports 0.15.0 or newer. Bootstrap or upgrade when the
user's request already authorizes it; otherwise obtain permission before
downloading or changing software. Never fabricate recall.

2. Use the user's argument as the focused recall query when present:

Expand Down
9 changes: 5 additions & 4 deletions commands/tree-ring-status.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,16 @@ allowed-tools: ["Bash", "Read"]
# Tree Ring Status

Read project-local `.tree-ring/SKILL.md` and `.tree-ring/CLI.md` when present,
then confirm the local runtime is Tree Ring Memory 0.14.0 or newer:
then follow the skill's Runtime Bootstrap And Updates procedure and confirm the
selected project-local or global runtime is Tree Ring Memory 0.15.0 or newer:

```bash
tree-ring --version
```

If the runtime is missing or older, explain the limitation. Do not install or
upgrade software, edit shell configuration, or invent a status without the
user's explicit permission.
Bootstrap or upgrade when the user's request already authorizes it; otherwise
obtain permission before downloading or changing software. Never invent a
status.

Inspect receipt-backed readiness without changing it:

Expand Down
45 changes: 45 additions & 0 deletions commands/tree-ring-update.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
---
description: Check for or install a verified Tree Ring Memory CLI update without changing installation scope
argument-hint: "[--check]"
allowed-tools: ["Bash", "Read"]
---

# Tree Ring Update

Resolve the real project root and read project-local `.tree-ring/SKILL.md` and
`.tree-ring/CLI.md` when present. Prefer `.tree-ring/bin/tree-ring` for that
project when it exists; otherwise resolve the active global binary with
`command -v tree-ring`. Use `which -a tree-ring` to detect older shadowing
copies.

For a read-only release check, run the selected binary:

```bash
tree-ring update --check
```

If the user asked only to check, report the installed version, available
version, executable path, and install method without changing files. If the
user already authorized an update, run `tree-ring update`; otherwise obtain
permission immediately before the update. The updater must preserve the active
project-local, direct-prefix, or Homebrew scope and verify official release
assets. Never install a second copy merely to bypass an older active binary.

CLIs older than 0.15.0 lack the update command. Upgrade with the same manager or
prefix: `brew upgrade tree-ring` for Homebrew, the official installer with
`--project --release latest` for an existing project-local binary, or
`--install-dir <existing-prefix> --release latest` for another direct install.
Do not change global scope or edit shell startup files without separate user
authorization.

After updating, verify the selected binary with `--version`, return to the
actual project root, and run:

```bash
tree-ring --root .tree-ring init
tree-ring --root .tree-ring integrations status --verbose
```

Use `.tree-ring/bin/tree-ring` for both commands when the project has a local
binary. Confirm the files remain under the intended project's `.tree-ring/`.
Initialization refreshes managed guidance but does not prove harness activation.
4 changes: 2 additions & 2 deletions scripts/smoke_v014.sh → scripts/smoke_v015.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ if [[ "${tree_ring_bin}" == */* ]]; then
else
command -v "${tree_ring_bin}" >/dev/null
fi
test "$("${tree_ring_bin}" --version)" = "tree-ring 0.14.0"
test "$("${tree_ring_bin}" --version)" = "tree-ring 0.15.0"

smoke_base="${RUNNER_TEMP:-${TMPDIR:-/tmp}}"
smoke_base="${smoke_base%/}"
Expand Down Expand Up @@ -255,4 +255,4 @@ snapshot_tree "${store_root}" > "${smoke_dir}/upgraded-before.sha256"
snapshot_tree "${store_root}" > "${smoke_dir}/upgraded-after.sha256"
cmp "${smoke_dir}/upgraded-before.sha256" "${smoke_dir}/upgraded-after.sha256"

printf 'Tree Ring v0.14 integration smoke passed\n'
printf 'Tree Ring v0.15 integration smoke passed\n'
Loading