1
0
forked from jason/echo

Phase 4: shared-write hardening + group lenses

- vault_lock gains bounded retry/backoff (CHORUS_LOCK_RETRIES=4,
  CHORUS_LOCK_BACKOFF=0.5s); atomic_index_update and recall-index upkeep
  retry acquisition — unlocked fallback only after exhausted retries,
  loudly, so an already-written note is never stranded unindexed.
- Duplicate-gate candidates carry the existing note's author; STOP
  message says whose entity the capture collided with.
- recall --author <member> filters hits + linked context to one member's
  notes; recall briefs and --json surface the author: stamp.
- load --all-members appends a group-wide view (every member's scope +
  last-session heartbeat); roster parsing accepts folders as
  trailing-slash file entries (the REST API's actual shape).
- operating-contract.md concurrency section rewritten for N members.
- Two-member e2e suite committed as eval/test_multimember.py (26 checks
  incl. all four Phase-4 behaviors).
- Manifest -> 2.0.0-alpha.4; rebuilt chorus-memory.plugin.

Verified: 25/25 unit, scaffold, routing-sync, 5 mock e2e suites (incl.
new multimember), run_eval metrics unchanged.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-21 15:29:55 -05:00
parent 33a2d73a22
commit 2ddf199850
14 changed files with 302 additions and 38 deletions
+6 -4
View File
@@ -209,10 +209,12 @@ up between phases — there is no ECHO-vault adoption path; CHORUS vaults start
fresh). Docs: vault-layout.md, routing-map.md, bootstrap.md rewritten.
**Deliverable:** a real multi-member vault, bootstrapped from empty.
### Phase 4 — Shared-write hardening (12 days)
Required lock on index writes with bounded retry/backoff, gate messages carry
author, `recall --author`, `load --all-members`, concurrency docs
(operating-contract.md) rewritten for N writers.
### Phase 4 — Shared-write hardening (12 days) — DONE
Lock on index writes with bounded retry/backoff (unlocked fallback only after
exhausted retries, loudly — a written note must never go unindexed), gate
messages carry the existing entity's author, `recall --author`,
`load --all-members`, concurrency docs (operating-contract.md) rewritten for
N writers. Two-member e2e suite committed as `eval/test_multimember.py`.
### Phase 5 — Docs, onboarding & eval (23 days)
SKILL.md full rewrite (operator → member voice; drop the "single owner"