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
2 changes: 1 addition & 1 deletion .codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "tree-ring-memory",
"version": "0.3.1",
"version": "0.3.2",
"description": "Local-first memory lifecycle and receipt-backed harness guidance for coding agents using Tree Ring Memory v0.14+.",
"author": {
"name": "TerminallyLazy",
Expand Down
5 changes: 3 additions & 2 deletions PRIVACY.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,6 @@ AI host, operating system, source-control provider, or any other tool the user
chooses to invoke.

Support and privacy questions may be filed at
<https://github.com/TerminallyLazy/tree-ring-memory-codex-plugin/issues>.
Do not include secrets or private memory content in a public issue.
<https://github.com/TerminallyLazy/Tree-Ring-Memory/issues>.
Do not include secrets, vulnerability details, or private memory content in a
public issue.
12 changes: 7 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ This plugin packages one Codex skill that teaches agents when to recall, write,
audit, consolidate, and forget project memory using the open-source
[Tree Ring Memory](https://github.com/TerminallyLazy/Tree-Ring-Memory) CLI.

Plugin `0.3.1` requires Tree Ring Memory CLI **>= 0.14.0**. The minimum is
Plugin `0.3.2` requires Tree Ring Memory CLI **>= 0.14.0**. The minimum is
intentional: v0.14 adds receipt-backed harness readiness on top of the v0.13
schema-v3, coordinated-write, and idempotency contracts used by this guidance.

Expand Down Expand Up @@ -137,16 +137,18 @@ coordinator should own shared publication:

```bash
tree-ring --root .tree-ring policy enable --coordinator release-coordinator
export TREE_RING_COORDINATOR_TOKEN='<one-time capability printed by enable>'
# Set and export TREE_RING_COORDINATOR_TOKEN with a history-safe, no-echo prompt
# supported by your shell, or inject it through an approved secret manager.
tree-ring --root .tree-ring policy status
tree-ring --root .tree-ring policy audit --limit 100
```

The capability is printed once. Put it only in
`TREE_RING_COORDINATOR_TOKEN`; never pass it as a CLI flag or retain it in
memory, logs, source refs, transcripts, scripts, or committed files. Inject it
only into coordinator processes and launch ordinary workers with the variable
unset.
memory, logs, source refs, transcripts, scripts, or committed files. Do not
paste it into an `export` command; use a history-safe, no-echo prompt supported
by the current shell or approved secret-manager injection. Inject it only into
coordinator processes and launch ordinary workers with the variable unset.

In Coordinated mode, the coordinator capability is required for shared or
non-agent writes, heartwood creation/promotion, import, persisted DOX/Revolve
Expand Down
14 changes: 9 additions & 5 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,17 @@ repository:

## Reporting A Vulnerability

Open a private security advisory on GitHub when available, or open a public
issue with sensitive details removed:
Report vulnerabilities privately through the canonical repository's GitHub
security advisory form:

<https://github.com/TerminallyLazy/tree-ring-memory-codex-plugin/issues>
<https://github.com/TerminallyLazy/Tree-Ring-Memory/security/advisories/new>

Do not include secrets, tokens, private memory contents, or personal data in a
public issue.
Use the canonical issue tracker only for non-sensitive support:

<https://github.com/TerminallyLazy/Tree-Ring-Memory/issues>

Never include vulnerability details, secrets, tokens, private memory contents,
or personal data in a public issue.

## Data Handling

Expand Down
18 changes: 10 additions & 8 deletions SUBMISSION.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
- Category: Developer Tools
- Short description: Local-first memory lifecycle guidance for coding agents.
- Website: <https://terminallylazy.github.io/Tree-Ring-Memory/>
- Support: <https://github.com/TerminallyLazy/tree-ring-memory-codex-plugin/issues>
- Support: <https://github.com/TerminallyLazy/Tree-Ring-Memory/issues>
- Privacy: <https://github.com/TerminallyLazy/tree-ring-memory-codex-plugin/blob/main/PRIVACY.md>
- Terms: <https://github.com/TerminallyLazy/tree-ring-memory-codex-plugin/blob/main/TERMS.md>
- Source: <https://github.com/TerminallyLazy/tree-ring-memory-codex-plugin>
Expand Down Expand Up @@ -77,13 +77,15 @@ Long description:

## Release Notes

Version 0.3.1 of the v0.14-compatible skills-only package removes
`interface.screenshots`, which OpenAI ZIP ingestion does not allow for
skills-only plugins. It retains runtime preflight, receipt-backed harness
readiness, exact non-active states, same-host coordination rules, the logo and
composer icon, and explicit privacy-safe fallback when local execution is
unavailable. The plugin has no MCP server, hosted service, credentials,
telemetry, or reviewer account requirement.
Version 0.3.2 of the v0.14-compatible skills-only package keeps coordinator
capabilities out of shell history by requiring a shell-appropriate no-echo
prompt or approved secret-manager injection, and routes support and security
reports through the canonical repository. It retains the v0.3.1 ZIP-ingestion
fix that removed unsupported `interface.screenshots`, plus runtime preflight,
receipt-backed harness readiness, exact non-active states, same-host
coordination rules, the logo and composer icon, and explicit privacy-safe
fallback when local execution is unavailable. The plugin has no MCP server,
hosted service, credentials, telemetry, or reviewer account requirement.

## Review Note

Expand Down
2 changes: 1 addition & 1 deletion TERMS.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,4 @@ availability, accuracy, non-infringement, or data durability, to the maximum
extent permitted by law. The limitations in the included MIT License apply.

Questions may be filed at
<https://github.com/TerminallyLazy/tree-ring-memory-codex-plugin/issues>.
<https://github.com/TerminallyLazy/Tree-Ring-Memory/issues>.
20 changes: 17 additions & 3 deletions scripts/validate-plugin.sh
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ root = Path(".")
manifest = json.loads((root / ".codex-plugin/plugin.json").read_text())
if manifest.get("name") != "tree-ring-memory":
raise SystemExit("plugin name must remain tree-ring-memory")
if manifest.get("version") != "0.3.1":
raise SystemExit("wrapper version must be 0.3.1")
if manifest.get("version") != "0.3.2":
raise SystemExit("wrapper version must be 0.3.2")

interface = manifest.get("interface", {})
prompts = interface.get("defaultPrompt", [])
Expand All @@ -48,9 +48,22 @@ for key in ("composerIcon", "logo"):
if "screenshots" in interface:
raise SystemExit("skills-only ZIP manifests must not declare interface.screenshots")

for required in ("PRIVACY.md", "TERMS.md", "SUBMISSION.md"):
for required in ("PRIVACY.md", "SECURITY.md", "TERMS.md", "SUBMISSION.md"):
if not (root / required).is_file():
raise SystemExit(f"missing publication material: {required}")

public_text = "\n".join(
path.read_text(encoding="utf-8")
for path in root.rglob("*")
if path.is_file()
and ".git" not in path.parts
and path != root / "scripts" / "validate-plugin.sh"
and path.suffix.lower() in {".json", ".md", ".py", ".sh", ".toml", ".txt", ".yaml", ".yml"}
)
if "export TREE_RING_COORDINATOR_TOKEN='<" in public_text:
raise SystemExit("token-bearing export example must not appear in the package")
if "tree-ring-memory-codex-plugin/issues" in public_text:
raise SystemExit("support and security links must use the canonical repository")
PY

assert_contains "$README" 'CLI **>= 0.14.0**'
Expand All @@ -67,6 +80,7 @@ assert_contains "$SKILL" 'tree-ring integrations status'
assert_contains "$SKILL" 'configured-awaiting-proof'
assert_contains "$SKILL" '--operation-id'
assert_contains "$SKILL" 'TREE_RING_COORDINATOR_TOKEN'
assert_contains "$SKILL" 'history-safe, no-echo'
assert_contains "$SKILL" 'same-host local-filesystem processes'
assert_contains "$SKILL" 'schema v3 fences'
assert_contains "$SKILL" 'operation is unsupported'
Expand Down
10 changes: 7 additions & 3 deletions skills/tree-ring-memory/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -392,7 +392,8 @@ optional Coordinated policy:

```bash
tree-ring --root .tree-ring policy enable --coordinator release-coordinator
export TREE_RING_COORDINATOR_TOKEN='<one-time capability printed by enable>'
# Set and export TREE_RING_COORDINATOR_TOKEN with a history-safe, no-echo prompt
# supported by your shell, or inject it through an approved secret manager.
tree-ring --root .tree-ring policy status
tree-ring --root .tree-ring policy audit --limit 100
```
Expand All @@ -401,7 +402,9 @@ Enable prints the capability once. Put it only in
`TREE_RING_COORDINATOR_TOKEN`; never pass it as a CLI flag or place it in a
memory, log, source ref, transcript, or committed file. Tree Ring stores only a
hash. `policy status` and `policy audit` are read-only and do not reveal the
capability. Inject it only into coordinator processes, and launch every ordinary
capability. Do not paste it into an `export` command; use a history-safe,
no-echo prompt supported by the current shell or approved secret-manager
injection. Inject it only into coordinator processes, and launch every ordinary
worker with `TREE_RING_COORDINATOR_TOKEN` unset so fan-out does not inherit
coordinator authority.

Expand All @@ -428,7 +431,8 @@ replace the environment value with the newly printed capability:

```bash
tree-ring --root .tree-ring policy rotate --coordinator release-coordinator-next
export TREE_RING_COORDINATOR_TOKEN='<new one-time capability>'
# Replace TREE_RING_COORDINATOR_TOKEN through the same history-safe, no-echo
# input path before using the new capability.
tree-ring --root .tree-ring policy disable
unset TREE_RING_COORDINATOR_TOKEN
```
Expand Down
Loading