Skip to content

feat: release v0.13.0 coordinator policy#40

Merged
TerminallyLazy merged 1 commit into
mainfrom
codex/coordinator-promotion-policy
Jul 23, 2026
Merged

feat: release v0.13.0 coordinator policy#40
TerminallyLazy merged 1 commit into
mainfrom
codex/coordinator-promotion-policy

Conversation

@TerminallyLazy

@TerminallyLazy TerminallyLazy commented Jul 23, 2026

Copy link
Copy Markdown
Owner

Summary

  • add a bounded same-host multi-agent coordinator policy for shared publication and protected lifecycle mutations
  • add schema-v3 writer fencing, policy audit/status, capability rotation, and storage-boundary secret rejection
  • expand real CLI-process isolation, exact-retry idempotency, denial atomicity, migration, and token non-persistence coverage
  • publish the v0.13.0 package and public contract as one atomic compatibility change

Supported boundary

These guarantees cover cooperative Tree Ring Rust/CLI processes sharing local SQLite on one host. They do not claim a read ACL, adversarial host security, cross-host coordination, network-filesystem safety, or supported mixed-version operation.

Validation

  • cargo fmt --all -- --check
  • cargo test --workspace --all-targets --locked (392 tests, including 2 real-process acceptance tests)
  • strict workspace Clippy with -D warnings
  • JSON, XML, shell syntax, and git diff --check
  • isolated package/checksum/archive/version smoke (tree-ring 0.13.0)
  • sh scripts/certify-tree-ring.sh
    • 10k CLI import: 2,000 events/sec
    • 30k insertion: 665 events/sec against 500/sec floor
    • all seven memory-quality scenarios passed
    • evidence index: pass, no stale or missing records

Release follow-through

After merge: tag v0.13.0, require CI and tag artifact workflows to pass, independently verify both archives/checksums/binaries, publish the GitHub release, then update Homebrew and the separately versioned Agent Zero plugin.

Summary by CodeRabbit

  • New Features

    • Added optional Coordinated Write Policy for authorizing shared writes and lifecycle changes.
    • Added policy status, audit, enable, rotate, and disable CLI commands.
    • Added agent profiles for scoped TUI memory entries and multi-agent workflows.
    • Added transactional authorization auditing and coordinator capability rotation.
    • Added stronger protection against accidental exposure of coordinator capabilities.
  • Bug Fixes

    • TUI actions now display errors without exiting the console.
  • Documentation

    • Updated v0.13.0 release, upgrade, schema-v3, coordination, and CLI guidance.

@qodo-code-review

Copy link
Copy Markdown

Qodo reviews are paused for this user.

Troubleshooting steps vary by plan Learn more →

On a Teams plan?
Reviews resume once this user has a paid seat and their Git account is linked in Qodo.
Link Git account →

Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center?
These require an Enterprise plan - Contact us
Contact us →

@coderabbitai

coderabbitai Bot commented Jul 23, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@TerminallyLazy, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 47 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 77c2e610-a06b-483b-89b1-ba7e8442e361

📥 Commits

Reviewing files that changed from the base of the PR and between 34c8e74 and 0cc6e76.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (26)
  • Cargo.toml
  • README.md
  • crates/tree-ring-memory-cli/Cargo.toml
  • crates/tree-ring-memory-cli/src/agent_awareness.rs
  • crates/tree-ring-memory-cli/src/main.rs
  • crates/tree-ring-memory-cli/src/tui/app.rs
  • crates/tree-ring-memory-cli/src/tui/mod.rs
  • crates/tree-ring-memory-cli/tests/multi_agent_acceptance.rs
  • crates/tree-ring-memory-core/src/models.rs
  • crates/tree-ring-memory-core/src/sensitivity.rs
  • crates/tree-ring-memory-sqlite/Cargo.toml
  • crates/tree-ring-memory-sqlite/src/lib.rs
  • crates/tree-ring-memory-sqlite/src/policy.rs
  • crates/tree-ring-memory-sqlite/src/schema.rs
  • crates/tree-ring-memory-sqlite/src/write.rs
  • docs/architecture/rust-core-status.md
  • docs/feed.xml
  • docs/index.html
  • docs/integrations/agent-skill.md
  • docs/llms.txt
  • docs/press-kit.md
  • docs/protocol/memory-event.md
  • marketing/README.md
  • marketing/github-release-v0.13.0.md
  • skills/tree-ring-memory/SKILL.md
  • templates/dox/AGENTS.md
📝 Walkthrough

Walkthrough

Tree Ring Memory v0.13 adds coordinated write authorization with capability-based policy state and audit records, SQLite schema-v3 writer fencing, agent-aware CLI/TUI contexts, expanded acceptance tests, and updated release and operational documentation.

Changes

Coordinated write policy

Layer / File(s) Summary
Policy contracts and capability handling
crates/tree-ring-memory-core/src/*, crates/tree-ring-memory-sqlite/src/policy.rs
Adds WriteContext, policy lifecycle/status/grant types, coordinator capability hashing, authorization decisions, audit normalization, and coordinator-token sensitivity blocking.
Schema-v3 storage enforcement
crates/tree-ring-memory-sqlite/src/{lib.rs,policy.rs,schema.rs,write.rs}
Adds schema compatibility checks, writer-protocol triggers, coordinated authorization across mutating APIs, sensitivity validation, and import planning.
CLI, TUI, and generated awareness integration
crates/tree-ring-memory-cli/src/*
Adds policy commands, context propagation, agent-profile-scoped TUI remembers, nonfatal authorization errors, policy output escaping, and generated-document backfill.
Real-process authorization coverage
crates/tree-ring-memory-cli/tests/multi_agent_acceptance.rs
Tests protected mutation denial, coordinator capability rotation, audit records, token isolation, and restoration to open mode.
Release and operational documentation
README.md, docs/*, skills/*, templates/*, marketing/*
Updates v0.13 release metadata and documents coordinated policy, schema-v3 upgrades, rollback constraints, and agent/TUI behavior.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Operator
  participant TreeRingCLI
  participant SQLiteMemoryStore
  participant AuthorizationAudit
  Operator->>TreeRingCLI: policy enable
  TreeRingCLI->>SQLiteMemoryStore: enable_coordinated_policy
  SQLiteMemoryStore->>AuthorizationAudit: record policy change
  TreeRingCLI-->>Operator: coordinator capability
  Operator->>TreeRingCLI: protected write with token
  TreeRingCLI->>SQLiteMemoryStore: open_with_context and mutate
  SQLiteMemoryStore->>AuthorizationAudit: record allow or deny
  SQLiteMemoryStore-->>TreeRingCLI: write result
Loading

Possibly related PRs

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 40.63% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly reflects the main change: the v0.13.0 coordinator policy release.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/coordinator-promotion-policy

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@gemini-code-assist

Copy link
Copy Markdown

Caution

The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
crates/tree-ring-memory-sqlite/src/lib.rs (1)

246-263: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Consider deriving the trigger threshold from WRITER_PROTOCOL_VERSION instead of the literal 3.

The three triggers hardcode tree_ring_writer_protocol() != 3, but the registered function returns schema::WRITER_PROTOCOL_VERSION. They are in sync today; if the constant is ever bumped without editing this SQL, every memories mutation gets fenced off. Interpolating keeps the single source of truth.

♻️ Example for the insert trigger
&format!(
    "CREATE TRIGGER IF NOT EXISTS memories_writer_protocol_insert \
     BEFORE INSERT ON memories \
     WHEN tree_ring_writer_protocol() != {version} \
     BEGIN SELECT RAISE(ABORT, 'Tree Ring writer protocol {version} required'); END;",
    version = schema::WRITER_PROTOCOL_VERSION
)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@crates/tree-ring-memory-sqlite/src/lib.rs` around lines 246 - 263, Update the
SQL trigger definitions for memories_writer_protocol_insert,
memories_writer_protocol_update, and memories_writer_protocol_delete to derive
their protocol threshold and error text from schema::WRITER_PROTOCOL_VERSION
instead of hardcoding 3. Interpolate the version while constructing the SQL,
preserving the existing trigger behavior and messages.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@crates/tree-ring-memory-sqlite/src/lib.rs`:
- Around line 246-263: Update the SQL trigger definitions for
memories_writer_protocol_insert, memories_writer_protocol_update, and
memories_writer_protocol_delete to derive their protocol threshold and error
text from schema::WRITER_PROTOCOL_VERSION instead of hardcoding 3. Interpolate
the version while constructing the SQL, preserving the existing trigger behavior
and messages.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 1c2c8996-e1f5-40f3-b909-a2f8e4e5f95d

📥 Commits

Reviewing files that changed from the base of the PR and between 2137ebd and 34c8e74.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (26)
  • Cargo.toml
  • README.md
  • crates/tree-ring-memory-cli/Cargo.toml
  • crates/tree-ring-memory-cli/src/agent_awareness.rs
  • crates/tree-ring-memory-cli/src/main.rs
  • crates/tree-ring-memory-cli/src/tui/app.rs
  • crates/tree-ring-memory-cli/src/tui/mod.rs
  • crates/tree-ring-memory-cli/tests/multi_agent_acceptance.rs
  • crates/tree-ring-memory-core/src/models.rs
  • crates/tree-ring-memory-core/src/sensitivity.rs
  • crates/tree-ring-memory-sqlite/Cargo.toml
  • crates/tree-ring-memory-sqlite/src/lib.rs
  • crates/tree-ring-memory-sqlite/src/policy.rs
  • crates/tree-ring-memory-sqlite/src/schema.rs
  • crates/tree-ring-memory-sqlite/src/write.rs
  • docs/architecture/rust-core-status.md
  • docs/feed.xml
  • docs/index.html
  • docs/integrations/agent-skill.md
  • docs/llms.txt
  • docs/press-kit.md
  • docs/protocol/memory-event.md
  • marketing/README.md
  • marketing/github-release-v0.13.0.md
  • skills/tree-ring-memory/SKILL.md
  • templates/dox/AGENTS.md

Add same-host multi-agent coordinator authorization, schema-v3 writer fencing, operation-aware acceptance coverage, storage-boundary secret rejection, and the bounded v0.13.0 release contract.
@TerminallyLazy
TerminallyLazy force-pushed the codex/coordinator-promotion-policy branch from 34c8e74 to 0cc6e76 Compare July 23, 2026 20:57
@TerminallyLazy
TerminallyLazy merged commit 167bc65 into main Jul 23, 2026
2 checks passed
@TerminallyLazy
TerminallyLazy deleted the codex/coordinator-promotion-policy branch July 23, 2026 22:02
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