be3fd36ebf
1. capture-update keeps the whole body (was truncating to first line) 2. frontmatter completeness: kind-default status + kind-seeded tags at capture, fm create-or-replace, incomplete-frontmatter lint, sweep backfill (one data source: KIND_STATUS/KIND_REQUIRED_FM) 3. pre-write duplicate gate (exit 76, --merge-into/--force) 4. recall corpus + ranking: sessions/journal indexed (down-weighted), BM25 x freshness x status fusion, recall --json, index schema 2 5. session hooks: SessionStart auto-load, Stop reflection nudge 6. one-tap triage verb with processing-log audit; --json on read verbs +22 mock end-to-end tests; all suites green. Docs current (README, CHANGELOG, SKILL.md, commands, references, MAINTENANCE, eval README). Drops tracked .DS_Store (gitignored); retires README-gretchen.md (moved to gitignored dist/); adds the field report that drove item 2. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3.9 KiB
3.9 KiB
echo-memory — Maintenance & repo hygiene (M5)
Low-lift cleanups that remove "which copy is canonical?" traps before tagging 1.0. None of these change runtime behavior; they reduce drift and confusion.
Canonical source tree
echo-memory.plugin.src/is the single canonical source tree. ✅codex plugin/has already drifted — it lacks the 0.9 modules (echo_index.py,echo_links.py,echo_ops.py,sweep.py,check_routing.py).- Decide: regenerate it from the canonical tree as a build target, or delete it and document the codex/CoWork packaging step instead.
- Until resolved, add a
codex plugin/README.mdnote: "derived — do not edit by hand."
Build artifacts
The repo root carries every historical build (echo-memory-0.6.0.plugin …
echo-memory-0.9.0.plugin) plus echo-memory.plugin.
- Keep only the latest
echo-memory.plugin(the installable) tracked; move versioned zips to GitHub Releases (or adist/that is git-ignored). - Add
*.pluginbuild outputs to.gitignoreexcept the current pointer, if desired. .gitignoreadded (.DS_Store,__pycache__, local.echo-memory/, eval output).
plugin.json completeness
- Add
license(UNLICENSED — personal, not for distribution). - Version bumped to 1.0.0.
- Add
homepage/ repository URL (optional — repo URL not yet decided). - (Optional) register slash commands in the manifest; they're auto-discovered from
commands/today (echo-load|save|recall|triage|health|sweep|reflect|doctor).
Docs freshness
eval/run_eval.pystill benchmarks 0.6 vs 0.7 — refresh to current (open H4 follow-up).- README version-history has a 1.0.0 entry; title bumped to v1.0.0.
- Scrub the literal bearer token from docs →
$ECHO_KEYplaceholder (M1, done:api-reference.md×11,SKILL.md,bootstrap.md, eval harness). Superseded in 1.3/1.4: key resolution now lives inecho_config.py(machine-local~/.claude/echo-memory/config.json,ECHO_*env overrides, and empty-in-sourceDEFAULT_*constants filled only bybuild.py --bake-keyfor per-user artifacts in gitignoreddist/).API-KEY-SETUP.mdand the old~/.echo-memory/credentialsfallback are gone; the committed tree ships zero credentials.
Building the .plugin artifact
python build.py zips echo-memory.plugin.src/ into echo-memory-<version>.plugin (version
read from the manifest) and refreshes the echo-memory.plugin pointer. Deterministic
(sorted entries + fixed timestamp → byte-identical rebuilds). Flags:
--strip-key— force-blank theecho_config.pyDEFAULT_*constants for a guaranteed token-free artifact (a clean source build is already token-free; this is the belt-and-braces flag).--bake-key --from <config.json> [--label <name>]— per-user secret-bearing artifact in gitignoreddist/; deliver directly to that one user, never commit (see README).--no-pointer— skip refreshingecho-memory.plugin.--outdir DIR— write artifacts elsewhere.
Without --strip-key the build warns that the baked-in token is present.
Pre-1.0 release checklist
- All 10 roadmap items wired; scaffold TODOs cleared (see
ROADMAP-1.0.mdstatus table). schema_versionbumped to 4 (sweep/migrate);migrate.py[3→4]step added. Verify on a copy of the live vault before migrating it (it currently reports schema 3).- Offline suites green in CI on Win/macOS/Linux × Py 3.10/3.12 (check_routing, test_echo_client, test_v1_scaffold, test_features, test_patch_semantics, test_offline_queue, test_reflect).
- No live secret in the tracked tree or the built
.plugin— one line left: deleteecho.pyDEFAULT_KEYafterECHO_KEY/credentials are set everywhere (perAPI-KEY-SETUP.md). eval/run_eval.pyreports current-version retrieval/durability metrics (open follow-up).