Skip to content

v1.7.0 — operator vault unblock + TUI live-loop + S3 self-awareness

Choose a tag to compare

@Memphis-Chains Memphis-Chains released this 26 Apr 21:42
b2c6c3f

The 2026-04-26 sprint cycle. 22 PRs landed covering Phases A–G of the gap-fill plan plus emergency operator-blocker fixes.

Highlights

Operator P0 (vault unblock)

  • #306 Vault bridge path anchored to install root, not cwd. `memphis` works from any directory; previously broke vault-touching commands when run outside the source checkout.
  • #305 Vault secret-write surfaces underlying cause — `} catch {}` truth model rolled out in vault-boundary. Audit log gets the cause; user message follows oracle-defense rules.
  • #293 MiniMax chat error names the actual missing-API-key failure mode.

Phase A (TUI live-loop)

  • #296 `/reload` — refresh OperatorRuntime from .env without restarting TUI.
  • #308 `/provider` `/model` persist to .env across restarts.
  • #299 `/clear` drops chat history (full session reset).

Phase E (provider robustness)

  • #302 `ContextOverflow` distinct `OperatorError` variant — TUI can render "use /clear to reset" hint.

Phase C (backup parity)

  • #298 Backup captures redacted `.env` so restore preserves provider URLs + vault refs across hosts.

Phase D (security hygiene)

  • #301 VAULT-ref leak filter applied to voice + HTTP API auth.

Phase F (voice deps)

  • #300 `scripts/install-prerequisites.sh` adds `ffmpeg`, `libasound2-dev`, `zstd`. New `docs/operator/voice-setup.md` runbook.

Sprint deliverables

  • #283 Wire 7 registered-but-unwired tools (S1)
  • #284 TUI tier 0/1/2 dispatch parity with Telegram (S2)
  • #285 4 operator hot-fixes (S2.5)
  • #310 S3 self-awareness — `memphis_self_describe` MCP tool, `GET /v1/ops/capabilities`, `memphis tools list/describe`
  • #289 `memphis vault migrate` — moves legacy data/vault-*.json
  • #309 Chat error names failing tools (Task #21)
  • #297 Test flakes fix (Phase B)
  • #292 As-intended sprint audit doc (S8)
  • #295 Fresh-install runbook (Phase 2d)

Quality / housekeeping

  • #290 Dead-code sweep (S5)
  • #291 Zero lint warnings (S7)
  • #304 `memphis tier elevate` — symmetric counterpart to revoke

Deferred to v1.7.1

  • #287 S4 app.rs refactor — too tangled with recent app.rs additions (Phase A1/A2/E2)
  • Tier revoke CLI portion of #288 — needs rewrite on top of post-#304 architecture
  • #307 Operator triage CLI UX bundle (`ask` positional, dispatcher hint, bridge pre-flight, sonic-boom race) — passes locally, CI hits env-bleed flake
  • #294 Backup pepper-restore path fix — same env-bleed flake

See CHANGELOG.md for full details.

Two structural insights worth carrying forward

  1. Truth model: every `} catch {}` that swallows the cause is a hidden bug. Audit gets the cause; user message follows oracle-defense rules. Methodology proven on vault-boundary in #305.
  2. Install root, not cwd: any default file path in CLI code must anchor on `resolveInstallRoot()` (src/infra/runtime/install-root.ts), not implicit `process.cwd()`. PR #306 fixed the worst instance; sibling sites worth a sweep.

🤖 Generated with Claude Code

What's Changed

Full Changelog: v1.6.0...v1.7.0