forked from jason/echo
Remove ECHO back-compat shims — CHORUS is a clean break
Decision: CHORUS deploys as fresh vaults on new machines for different users, so no ECHO adoption path is needed. Removed the Phase-1 shims: - chorus_config: legacy ECHO_* env aliasing and the read-only ~/.claude/echo-memory/config.json fallback - chorus_queue / chorus_hook_stop: ~/.echo-memory state-dir fallback - load/doctor/bootstrap/vault_lint/sweep/migrate: the _agent/echo-vault.md marker dual-probe; routing drops agent-marker-legacy (36 routes) - .gitignore, README, CHANGELOG, CHORUS-PLAN.md updated (decision #6; Phase 3 no longer migrates the live ECHO vault — fresh bootstrap only) All suites green: 25/25 unit, scaffold, routing-sync, 4 mock e2e, run_eval metrics unchanged. Rebuilt chorus-memory.plugin. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+21
-15
@@ -57,7 +57,7 @@ on two machines but not for N people.
|
||||
its own Obsidian + Local REST API instance exposed there (separate from
|
||||
ECHO's `echoapi.alwisp.com`; the personal ECHO vault is untouched). The
|
||||
endpoint stays machine-local/baked config, never in source, same as ECHO.
|
||||
`owner` → `group` (with `owner` accepted as a legacy alias). Resolution order
|
||||
`owner` → `group`. Resolution order
|
||||
unchanged: baked > env (`CHORUS_MEMBER` etc.) > config file. Baked per-user
|
||||
builds (`build.py --bake-key --label alice`) already exist and become the
|
||||
primary **onboarding** mechanism: one artifact per member, member id baked in.
|
||||
@@ -158,10 +158,10 @@ theirs alone). What remains shared-write:
|
||||
| Commands | `/echo-{load,save,recall,reflect,triage,sweep,health,doctor}` | `/chorus-*` |
|
||||
| Scripts | `echo*.py` (16 modules + imports everywhere) | `chorus*.py` |
|
||||
| Exception | `EchoError` | `ChorusError` |
|
||||
| Env vars | `ECHO_OWNER/BASE/KEY/CONFIG/TODAY/VERIFY/LOCK_TTL/TIMEOUT/WORKERS/STATE_DIR/CLIENT/DUP_GATE/REFLECT_MIN_TURNS/FRESH_HALF_LIFE` | `CHORUS_*` (+ new `CHORUS_MEMBER`); `ECHO_*` read as fallback aliases in `chorus_config` for one major version |
|
||||
| Config file | `~/.claude/echo-memory/config.json` | `~/.claude/chorus-memory/config.json` (import path: `config import` accepts an old echo config) |
|
||||
| Env vars | `ECHO_OWNER/BASE/KEY/CONFIG/TODAY/VERIFY/LOCK_TTL/TIMEOUT/WORKERS/STATE_DIR/CLIENT/DUP_GATE/REFLECT_MIN_TURNS/FRESH_HALF_LIFE` | `CHORUS_*` (+ new `CHORUS_MEMBER`) |
|
||||
| Config file | `~/.claude/echo-memory/config.json` | `~/.claude/chorus-memory/config.json` |
|
||||
| State dir | `~/.echo-memory/` | `~/.chorus-memory/` |
|
||||
| Marker | `_agent/echo-vault.md` (hardcoded in 8 files + routing.json) | `_agent/chorus-vault.md`; probe checks new name **then** old (adoption path) |
|
||||
| Marker | `_agent/echo-vault.md` (hardcoded in 8 files + routing.json) | `_agent/chorus-vault.md` |
|
||||
| Hooks | `hooks.json` paths ×2 incl. CoWork fallback glob | updated paths |
|
||||
| Docs/branding | README, SKILL.md, references, scaffold seeds, icons | rewrite pass (cosmetic but large) |
|
||||
|
||||
@@ -177,11 +177,14 @@ Repo hygiene on the fork: strip stale versioned `.plugin` artifacts from the
|
||||
tree (move to Gitea releases per ROADMAP-2.0), confirm `eval/` suites green
|
||||
as-is, tag the fork point.
|
||||
|
||||
### Phase 1 — Mechanical rename (1–2 days)
|
||||
Everything in §3, with back-compat shims (env aliases, marker dual-probe,
|
||||
config import from echo paths). All existing tests pass under the new names.
|
||||
No behavior change. **Deliverable:** installable `chorus-memory` plugin that is
|
||||
ECHO-with-a-new-name.
|
||||
### Phase 1 — Mechanical rename (1–2 days) — DONE
|
||||
Everything in §3. All existing tests pass under the new names. No behavior
|
||||
change. **Deliverable:** installable `chorus-memory` plugin that is
|
||||
ECHO-with-a-new-name. *(Decided post-Phase-1: CHORUS is a **clean break** —
|
||||
fresh vaults on fresh machines for new users, so no ECHO back-compat: legacy
|
||||
`ECHO_*` env vars, echo-memory configs, `~/.echo-memory` state, and
|
||||
`_agent/echo-vault.md` markers are all ignored. Shims briefly existed and were
|
||||
removed.)*
|
||||
|
||||
### Phase 2 — Identity plumbing (1–2 days)
|
||||
`member` in config (+ `CHORUS_MEMBER`, baked-tier support, `config set --member`),
|
||||
@@ -198,12 +201,10 @@ if the vault exists but your namespace doesn't — new members self-onboard),
|
||||
`cmd_load`/`cmd_scope`/heartbeat/inbox/triage/reflect retargeted to member
|
||||
paths, session logs under `sessions/<member>/`, member-prefixed Agent Log
|
||||
lines, `routing.json` route rows (with `<member>` pattern segment) + retired
|
||||
old paths, lint updates, `migrate.py` 4→5 (moves Jason's existing
|
||||
operator-preferences/current-context/heartbeat/inbox/sessions into
|
||||
`members/jason/…`, stamps `author: jason` vault-wide via sweep). Docs:
|
||||
vault-layout.md, routing-map.md, bootstrap.md rewritten.
|
||||
**Deliverable:** a real multi-member vault; the live ECHO vault migrates in
|
||||
place.
|
||||
old paths, lint updates, `migrate.py` 4→5 (for any alpha CHORUS vaults stood
|
||||
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 (1–2 days)
|
||||
Required lock on index writes with bounded retry/backoff, gate messages carry
|
||||
@@ -246,3 +247,8 @@ retrieval/durability metrics. New icon.
|
||||
`_agent/members/<id>/inbox.md`; a shared `inbox/captures/group.md` holds
|
||||
unowned items (member-prefixed lines, idempotent appends), routed by
|
||||
whoever triages first. Both are probed at load and covered by triage.
|
||||
6. **Clean break from ECHO** *(added post-Phase-1)*. CHORUS vaults are fresh
|
||||
vaults on fresh machines for new users — no ECHO adoption path, no legacy
|
||||
`ECHO_*` env/config/state/marker compatibility. Jason's personal ECHO vault
|
||||
continues unchanged on its own plugin and endpoint. If ECHO history is ever
|
||||
wanted in CHORUS, it would be a one-off import exercise, out of scope.
|
||||
|
||||
Reference in New Issue
Block a user