Files
echo/TODO-1.6.md
T
Jason Stedwell 55afdce70c 1.6.0 — skills-format migration, lint retired-path fix, plugin.json completeness
Skills migration: each of the eight slash commands gains a skills/<name>/SKILL.md
twin (same invocation name, byte-identical body). Per-skill allowed-tools
pre-authorize the resolved python3/python/py -3 invocations + the CoWork ls
fallback probe; disable-model-invocation: true makes /echo-sweep and /echo-triage
operator-only. Docs-confirmed: a same-name skill takes precedence over the legacy
command, so commands/ coexists until its scheduled 2.0 deletion. The $ECHO
path-resolution dedupe is resolved as not-supported (skill dirs are
self-contained; no cross-skill snippet sharing).

Lint fix: vault_lint.py checks retired patterns BEFORE routes, so a seed README
inside a retired tree (archive/...) flags retired-path instead of being absolved
by the permissive leaf-readme route. New end-to-end regression test seeds
archive/notes/README.md (fails pre-fix, passes now).

plugin.json: version 1.6.0, homepage + repository -> git.alwisp.com/jason/echo.

All suites green: 25/25 client unit tests (incl. routing-sync guard), feature,
reflect, offline-queue, PATCH-semantics. Artifact rebuilt (87 entries, both
formats); pointer refreshed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-28 21:58:57 -05:00

71 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# echo-memory — v1.6 TODO
> Working list for the next minor release. Started 2026-07-03, right after 1.5.1
> shipped. **Add findings from 1.5.x live testing to the "Surfaced in testing"
> section as they come up** — that's what this doc is for.
## 1. Migrate the eight slash commands to the skills format
The installer flags the plugin's `commands/` directory as the legacy format
("Both formats work — consider migrating to skills/*/SKILL.md"). Confirmed against
the official docs (code.claude.com/docs/en/skills.md, plugins.md):
- **Non-breaking.** `commands/echo-save.md``skills/echo-save/SKILL.md` keeps the
invocation name: `/echo-save` works identically. No deprecation date on `commands/`;
this is future-proofing, not a fire.
- **Do it for the features, not the notice:**
- [x] `allowed-tools` per skill — **done 1.6.0** (all eight skills pre-authorize
the resolved `python3`/`python`/`py -3` invocations + the CoWork `ls` probe).
- [x] `disable-model-invocation: true` on the write-heavy entry points
(`/echo-sweep`, `/echo-triage`) — **done 1.6.0**; read-side stays
model-invocable.
- [x] De-duplicate the CoWork `$ECHO` path-resolution block — **resolved 1.6.0 as
not-supported**: per the official skills docs, skill directories are
self-contained (no cross-skill snippet sharing), so the 2-line block stays
per-skill. Docs confirmed same-name skill takes precedence over the legacy
command, so coexistence is safe.
- [x] `argument-hint` carries over as-is; `$ARGUMENTS` substitution unchanged —
**done 1.6.0** (save/recall/reflect).
- [ ] Verify a migrated build installs cleanly on desktop **and** in a CoWork session
before deleting `commands/` (deleting the legacy dir is a 2.0 item —
see `ROADMAP-2.0.md`; in 1.6 both may coexist). *(1.6.0 artifact built —
operator install test pending.)*
## 2. plugin.json completeness (from the old MAINTENANCE checklist)
- [x] Add `homepage` / repository URL — **done 1.6.0**: both `homepage` and
`repository` set to `https://git.alwisp.com/jason/echo`.
## 3. Vault follow-ups (noticed during the 1.5.0 dead-link cleanup)
Three of the 27 unwrapped "dead" links were actually **typos pointing at real notes**;
they were unwrapped per instruction but repointing them would restore real graph edges:
- [ ] `projects/active/forgerunner.md` + `_agent/sessions/2026-06-29-2200-forgerunner-v010-ship.md`:
"Gitea CI Docker jobs run on the host label" → the decision
`decisions/by-date/2026-06-29-gitea-ci-docker-jobs-run-on-the-host-lab.md` ("lab", not "label").
- [ ] `projects/active/mpm-brand-voice.md`: "Message Point Media (MPM)" ×3 → the company
note `resources/companies/mpm.md` (or whatever is canonical for MPM).
## 4. Surfaced in 1.5.x testing
*(add items here as the new plugin gets real use)*
- [x] **Lint blind spot: retired dirs masked by the leaf-README route** (found
2026-07-03; **fixed 1.6.0** — retired patterns now checked before routes, with
the `archive/notes/README.md` regression test).
`archive/` and `_agent/outputs/` are retired/unrouted pre-0.6 leftovers that survived
in the live vault holding only their seed READMEs — and the permissive `leaf-readme`
route (`^(.+/)?README\.md$`) matches first, so `vault_lint` never flagged them.
Fix: in the path-membership check, test the *directory* against retired/unknown
patterns even when the only file in it is a README (e.g. evaluate `dirname(path) + "/"`
against retired patterns before letting `leaf-readme` absolve the file), or drop the
seed-README exemption inside retired trees. Add a lint test seeding
`archive/notes/README.md` → must flag `retired-path`.
*Related learning (same cleanup, 2026-07-03):* the REST API **cannot delete
directories** — removing a folder's last file orphans the empty folder on disk
(the REST listing 404s, falsely reading as gone; Obsidian still shows it — manual
deletion required). Documented in `references/api-reference.md` Deleting Files
and in the vault's `resources/references/obsidian-local-rest-api.md`. Any future
"remove retired tree" guidance must include the manual folder-cleanup step.