diff --git a/docs/superpowers/plans/2026-07-12-coven-cli-unification.md b/docs/superpowers/plans/2026-07-12-coven-cli-unification.md index 4e2d2c0..cdcec81 100644 --- a/docs/superpowers/plans/2026-07-12-coven-cli-unification.md +++ b/docs/superpowers/plans/2026-07-12-coven-cli-unification.md @@ -1,5 +1,12 @@ # Coven CLI Unification Implementation Plan +> **Status: COMPLETE (sealed 2026-07-14).** Every phase landed — engine side +> via coven-code #150–#155, #158, #160, #162; coven side via #346, #353, +> #354, #355. Phase 6 decided **NO-GO** (keep the process boundary; ADR: +> [`2026-07-14-phase6-source-merge-decision.md`](2026-07-14-phase6-source-merge-decision.md)). +> This plan is a historical record; the living summary is +> [`docs/unification.md`](../../unification.md). + > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. **Goal:** Make `coven` the one CLI users install and type for everything — interactive agent work, headless runs, session management, auth, models — with coven-code absorbed as a managed, invisible engine. diff --git a/docs/superpowers/plans/2026-07-12-phase3-engine-harness.md b/docs/superpowers/plans/2026-07-12-phase3-engine-harness.md index 8a87ed8..8ee8669 100644 --- a/docs/superpowers/plans/2026-07-12-phase3-engine-harness.md +++ b/docs/superpowers/plans/2026-07-12-phase3-engine-harness.md @@ -1,5 +1,9 @@ # Phase 3 — Engine as a First-Class Daemon-Ledgered Harness +> **Status: COMPLETE (sealed 2026-07-14).** Track A landed via coven #354; +> Track B via coven #355 (daemon endpoints) + coven-code #152 (opt-in TUI +> notifier). Historical record; see [`docs/unification.md`](../../unification.md). + > **For agentic workers:** REQUIRED SUB-SKILL: superpowers:subagent-driven-development. Steps use `- [ ]`. This is the Phase 3 sub-plan of `2026-07-12-coven-cli-unification.md`. **Goal:** `coven run coven-code "task"` produces a normal ledgered session (detach/attach/kill/archive/search); the bare-prompt cast defaults to the engine; and interactive engine TUI sessions register themselves in the daemon ledger so `coven sessions` sees them. diff --git a/docs/superpowers/plans/2026-07-12-phase4-state-unification.md b/docs/superpowers/plans/2026-07-12-phase4-state-unification.md index b9c7d48..7766ffe 100644 --- a/docs/superpowers/plans/2026-07-12-phase4-state-unification.md +++ b/docs/superpowers/plans/2026-07-12-phase4-state-unification.md @@ -1,5 +1,10 @@ # Phase 4 — State, Config & Auth Unification under `~/.coven` +> **Status: COMPLETE (sealed 2026-07-14).** Track C landed via coven-code +> #153 (engine home `~/.coven/code/`, in-place migration, compatibility +> symlink, config layering). Historical record; see +> [`docs/unification.md`](../../unification.md). + > **For agentic workers:** REQUIRED SUB-SKILL: superpowers:subagent-driven-development. Steps use `- [ ]`. Phase 4 sub-plan of `2026-07-12-coven-cli-unification.md`. **Goal:** one state root (`~/.coven`), layered config, no user-visible `~/.coven-code` on fresh installs, one auth story surfaced by one doctor, and search that spans engine TUI sessions. diff --git a/docs/superpowers/plans/2026-07-14-phase5-brand-sweep.md b/docs/superpowers/plans/2026-07-14-phase5-brand-sweep.md index 3091681..30f0fe5 100644 --- a/docs/superpowers/plans/2026-07-14-phase5-brand-sweep.md +++ b/docs/superpowers/plans/2026-07-14-phase5-brand-sweep.md @@ -1,5 +1,12 @@ # Phase 5 — Brand / UX Naming Sweep +> **Status: COMPLETE (sealed 2026-07-14).** Landed via coven-code #154 +> (user-facing sweep + direct-invocation notice), #158 (LLM-facing tool +> descriptions), #160 (ACP display name). Task 5.6 npm deprecation was +> executed with user approval — the registry now serves the deprecation +> notice — and #162 made engine npm-publish opt-in per release. Historical +> record; see [`docs/unification.md`](../../unification.md). + > Phase 5 sub-plan of the coven CLI unification. Curated, recon-grounded. Only USER-FACING surfaces change; the binary name (`coven-code`/`coven-cave`), `claurst-*` crates, `COVEN_CODE_*` env vars, `.coven-code` internal paths, and repo URLs STAY (per COVEN.md). **Goal:** users see the unified "Coven" brand; nobody is told to install/use "coven-code" separately; `coven --version` surfaces the whole stack. @@ -31,11 +38,11 @@ DO NOT change: binary/crate/env/path/theme-const/test/comment/repo-URL reference ### 5.1 — direct-invocation notice [coven-code] In `crates/cli/src/main.rs` after `Cli::parse()` (~line 503) and after the `is_headless` determination (~643): if the run is INTERACTIVE (not headless/print/prompt), stdout/stderr is a TTY (`crossterm::terminal::is_terminal`), AND `COVEN_PARENT` is unset → `eprintln!` the dim notice once (before `run_interactive`). Silent when `COVEN_PARENT` is set (driven by coven) or non-interactive. The `coven-cave` alias re-execs `coven-code`, so it inherits this. Test the pure decision (`should_show_engine_notice(is_interactive, is_tty, coven_parent_set) -> bool`). -## Task 5.3 — `coven --version` surfaces engine + pin [coven] — IN PROGRESS -Custom `--version` intercept → `coven (engine coven-code , pinned )`. (dispatched) +## Task 5.3 — `coven --version` surfaces engine + pin [coven] — DONE +Custom `--version` intercept landed on coven main (`version_line()` in `crates/coven-cli/src/main.rs`): `coven (engine coven-code , pinned )`. -## Task 5.6 — npm deprecation [HELD — outward-facing, needs explicit user go-ahead] -`npm deprecate @opencoven/coven-code "Install @opencoven/cli — coven-code is now the Coven engine"`. Engine binaries keep shipping via GitHub Releases. DO NOT run autonomously; surface for confirmation. +## Task 5.6 — npm deprecation [DONE — executed with user approval] +`npm deprecate @opencoven/coven-code "Install @opencoven/cli — coven-code is now the Coven engine"` has been run; the registry serves the notice. Engine binaries keep shipping via GitHub Releases (npm publish is opt-in per release since #162). ## Exit check A new user reaches install → first session without seeing the string "coven-code" in any prose surface; running `coven-code` directly prints the "use coven" hint; `coven --version` shows coven + engine + pin. diff --git a/docs/unification.md b/docs/unification.md index bd27db4..45adadc 100644 --- a/docs/unification.md +++ b/docs/unification.md @@ -1,6 +1,7 @@ # The Coven merge — unified CLI guide -**Status:** in progress · **Last verified:** 2026-07-13 · **Contract:** v1 +**Status:** complete — all phases landed, Phase 6 decided (keep the process +boundary) · **Last verified:** 2026-07-14 · **Contract:** v1 This guide explains the merge of `coven-code` into the unified `coven` CLI ("the Coven CLI unification"), what users need to do to move over seamlessly, @@ -85,7 +86,7 @@ one, without waiting for a coven release. --- -## 2. Where the merge stands (verified 2026-07-12) +## 2. Where the merge stands (verified 2026-07-14 — sealed) | Phase | Deliverable | Status | |---|---|---| @@ -95,8 +96,8 @@ one, without waiting for a coven release. | 3A | Engine as first-class harness; bare prompts prefer the engine | **Landed** — coven [#354](https://github.com/OpenCoven/coven/pull/354) merged, zero engine-side changes | | 3B | Externally-owned sessions in the daemon ledger | **Landed** — coven [#355](https://github.com/OpenCoven/coven/pull/355) (daemon endpoints) + coven-code [#152](https://github.com/OpenCoven/coven-code/pull/152) (TUI notifier, opt-in `daemonLedger` setting) merged | | 4 | State/config/auth unification under `~/.coven` | **Landed** — coven-code [#153](https://github.com/OpenCoven/coven-code/pull/153) merged (engine home `~/.coven/code/` with in-place migration + shared settings layer) | -| 5 | Brand/UX sweep, npm deprecation of the engine package | **In progress** — coven-code [#154](https://github.com/OpenCoven/coven-code/pull/154) merged (user-facing rebrand + direct-invocation notice); npm deprecation pending | -| 6 | Decision gate: full source merge | Standing recommendation: **don't** — keep the process boundary | +| 5 | Brand/UX sweep, npm deprecation of the engine package | **Landed** — coven-code [#154](https://github.com/OpenCoven/coven-code/pull/154) (user-facing rebrand + direct-invocation notice), [#158](https://github.com/OpenCoven/coven-code/pull/158) (LLM-facing tool descriptions), [#160](https://github.com/OpenCoven/coven-code/pull/160) (ACP display name); `@opencoven/coven-code` deprecated on npm (notice points at `@opencoven/cli`); engine npm-publish made opt-in per release, GitHub Releases stay the artifact source ([#162](https://github.com/OpenCoven/coven-code/pull/162)) | +| 6 | Decision gate: full source merge | **Decided — NO-GO**, keep the process boundary ([#155](https://github.com/OpenCoven/coven-code/pull/155), ADR: [`2026-07-14-phase6-source-merge-decision.md`](superpowers/plans/2026-07-14-phase6-source-merge-decision.md)) | The coven-side phases landed in order (#346, #353, #354, #355; the original stacked PRs #347–#349 were superseded by these re-landed equivalents after @@ -162,11 +163,14 @@ Notes: - Direct `coven-code …` invocation remains fully supported. Since the Phase 5 sweep (#154) it prints one dim notice line when run interactively outside coven (`COVEN_PARENT` unset); scripted/delegated runs stay silent. -- The `@opencoven/coven-code` npm package keeps working through Phase 5, and - only then gets an `npm deprecate` notice. GitHub release archives remain - the artifact source permanently (they are what `coven engine install` - downloads). Note the bare `coven-code` npm name is an unrelated, already - deprecated package — only the scoped name is real. +- The `@opencoven/coven-code` npm package is **deprecated** (the notice + points at `@opencoven/cli`). Installed copies keep working, but new engine + versions are no longer published to npm by default — publishing is an + opt-in switch per release since [#162](https://github.com/OpenCoven/coven-code/pull/162). + GitHub release archives remain the artifact source permanently (they are + what `coven engine install` downloads). Note the bare `coven-code` npm + name is an unrelated, already deprecated package — only the scoped name + is real. - Version drift: if your PATH engine is older than coven's pin you get a one-line warning; below `MIN_ENGINE_VERSION` (0.6.1) coven refuses with an actionable message. `coven engine install` fixes both.