From e29f2d6ca71ef578d8bbb6bf81e430e44ee860c5 Mon Sep 17 00:00:00 2001 From: Sarthak Agrawal Date: Fri, 25 Sep 2026 23:27:02 +0530 Subject: [PATCH 1/3] Prepare v1.15.0 Usage retirement release --- PROJECT_STATUS.md | 14 +++++++------- apps/macos/Config/Shared.xcconfig | 4 ++-- crates/codevetter-core/Cargo.lock | 6 +++--- crates/codevetter-core/Cargo.toml | 4 ++-- crates/codevetter-core/src/bin/codevetter.rs | 5 +++++ crates/codevetter-core/src/codevetter_cli_tests.rs | 10 ++++++++-- crates/codevetter-transport-macros/Cargo.toml | 2 +- crates/codevetter-transport/Cargo.toml | 4 ++-- docs/product/surfaces.md | 5 +++++ 9 files changed, 35 insertions(+), 19 deletions(-) diff --git a/PROJECT_STATUS.md b/PROJECT_STATUS.md index a8dfe6ba..5f835768 100644 --- a/PROJECT_STATUS.md +++ b/PROJECT_STATUS.md @@ -1,6 +1,6 @@ # Project Status -Last updated: 2026-09-23 +Last updated: 2026-09-25 ## Why / What @@ -51,11 +51,11 @@ separately approved safety design justify renewed investment. - v1.14.3 includes the post-v1.14.2 code-health and native qualification repairs. Subsequent documentation-only bookkeeping does not imply a newer desktop release; release truth remains the published `v1.14.3` tag. -- Unreleased source proposes retiring the general Usage workspace, provider - allowance checks, `codevetter usage`/`quota`, and the bundled `ccusage` - sidecar. ContextDaddy owns general agent usage. Per-verification token and - cost receipts and CodeVetter's History recovery remain. This proposal has - not been published in a desktop release. +- The proposed v1.15.0 release candidate retires the general Usage workspace, + provider allowance checks, `codevetter usage`/`quota`, and the bundled + `ccusage` sidecar. Retired CLI commands return a migration message pointing to + ContextDaddy. Per-verification token and cost receipts and CodeVetter's + History recovery remain. This candidate has not been published or installed. - Maintenance is limited to core verification reliability, regressions, security, dependency hygiene, and evidence requested by real users. New product surfaces require an explicit change in the investment decision. @@ -64,7 +64,7 @@ separately approved safety design justify renewed investment. External: - Published v1.14.3 bundles `ccusage` 20.0.20 for local Claude/Codex/Grok usage - accounting; the unreleased source proposal above removes that sidecar. + accounting; the unreleased v1.15.0 candidate removes that sidecar. - Installed and authenticated Codex or Claude CLI for Work conversations; provider account policy remains external to CodeVetter. - GitHub Releases + GitHub Actions — `auto-release.yml` cuts a `v` release on native `Shared.xcconfig` version bumps; `release.yml` signs, notarizes, qualifies, and uploads the SwiftUI app, DMG, ZIP, and Sparkle `appcast.xml`. - Cloudflare Pages — hosts the landing page (`codevetter` project, codevetter.com). diff --git a/apps/macos/Config/Shared.xcconfig b/apps/macos/Config/Shared.xcconfig index d84aace0..6df50929 100644 --- a/apps/macos/Config/Shared.xcconfig +++ b/apps/macos/Config/Shared.xcconfig @@ -15,8 +15,8 @@ EXECUTABLE_NAME = CodeVetterNative // Debug stays isolated from user data; Release owns the production identity. PRODUCT_BUNDLE_IDENTIFIER = com.codevetter.desktop PRODUCT_BUNDLE_IDENTIFIER[config=Debug] = com.codevetter.desktop.native-preview -MARKETING_VERSION = 1.14.3 -CURRENT_PROJECT_VERSION = 11403 +MARKETING_VERSION = 1.15.0 +CURRENT_PROJECT_VERSION = 11500 // ========================================== // Platform Configuration diff --git a/crates/codevetter-core/Cargo.lock b/crates/codevetter-core/Cargo.lock index 2033700e..e1f865cc 100644 --- a/crates/codevetter-core/Cargo.lock +++ b/crates/codevetter-core/Cargo.lock @@ -297,7 +297,7 @@ dependencies = [ [[package]] name = "codevetter-core" -version = "1.14.3" +version = "1.15.0" dependencies = [ "base64", "chromiumoxide", @@ -339,7 +339,7 @@ dependencies = [ [[package]] name = "codevetter-transport" -version = "1.14.3" +version = "1.15.0" dependencies = [ "codevetter-transport-macros", "tokio", @@ -347,7 +347,7 @@ dependencies = [ [[package]] name = "codevetter-transport-macros" -version = "1.14.3" +version = "1.15.0" [[package]] name = "colorchoice" diff --git a/crates/codevetter-core/Cargo.toml b/crates/codevetter-core/Cargo.toml index 29d4e2ee..3c7a7181 100644 --- a/crates/codevetter-core/Cargo.toml +++ b/crates/codevetter-core/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "codevetter-core" -version = "1.14.3" +version = "1.15.0" edition = "2021" publish = false description = "CodeVetter verification core, CLI, and read-only MCP server" @@ -24,7 +24,7 @@ path = "src/bin/codevetter-graph.rs" [dependencies] # Source-compatible command facade while legacy annotations are renamed. This # is repository-owned and contains no Tauri, WebView, or windowing runtime. -tauri = { package = "codevetter-transport", version = "=1.14.3", path = "../codevetter-transport" } +tauri = { package = "codevetter-transport", version = "=1.15.0", path = "../codevetter-transport" } serde = { version = "1", features = ["derive"] } serde_json = "1" sha2 = "0.10" diff --git a/crates/codevetter-core/src/bin/codevetter.rs b/crates/codevetter-core/src/bin/codevetter.rs index 6453bdbf..07165e70 100644 --- a/crates/codevetter-core/src/bin/codevetter.rs +++ b/crates/codevetter-core/src/bin/codevetter.rs @@ -2183,6 +2183,11 @@ fn parse_arguments( "runs" => return parse_runs(arguments), "performance" => return parse_performance(arguments, cwd), "scope" => return parse_scope(arguments, cwd), + "usage" | "quota" => { + return Err(format!( + "`codevetter {command}` was retired. Use ContextDaddy for general agent usage and provider allowances. CodeVetter still records token and cost evidence for verification runs." + )); + } "ops" => return parse_ops(arguments), "unpack" => return parse_unpack(arguments), "settings" => return parse_settings(arguments), diff --git a/crates/codevetter-core/src/codevetter_cli_tests.rs b/crates/codevetter-core/src/codevetter_cli_tests.rs index 0309491a..a6a36677 100644 --- a/crates/codevetter-core/src/codevetter_cli_tests.rs +++ b/crates/codevetter-core/src/codevetter_cli_tests.rs @@ -741,8 +741,14 @@ fn runs_parser_and_human_output_are_bounded() { #[test] fn general_agent_usage_commands_are_retired() { let cwd = Path::new("/tmp/widget"); - assert!(parse_arguments(["usage".into()], cwd).is_err()); - assert!(parse_arguments(["quota".into()], cwd).is_err()); + for command in ["usage", "quota"] { + let error = match parse_arguments([command.into()], cwd) { + Ok(_) => panic!("{command} should be retired"), + Err(error) => error, + }; + assert!(error.contains("Use ContextDaddy")); + assert!(error.contains("token and cost evidence for verification runs")); + } assert!(!HELP.contains("codevetter usage")); assert!(!HELP.contains("codevetter quota")); } diff --git a/crates/codevetter-transport-macros/Cargo.toml b/crates/codevetter-transport-macros/Cargo.toml index 42769ec1..52308f1f 100644 --- a/crates/codevetter-transport-macros/Cargo.toml +++ b/crates/codevetter-transport-macros/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "codevetter-transport-macros" -version = "1.14.3" +version = "1.15.0" edition = "2021" publish = false diff --git a/crates/codevetter-transport/Cargo.toml b/crates/codevetter-transport/Cargo.toml index 92aff310..d7653ed9 100644 --- a/crates/codevetter-transport/Cargo.toml +++ b/crates/codevetter-transport/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "codevetter-transport" -version = "1.14.3" +version = "1.15.0" edition = "2021" publish = false @@ -8,5 +8,5 @@ publish = false name = "tauri" [dependencies] -codevetter-transport-macros = { version = "=1.14.3", path = "../codevetter-transport-macros" } +codevetter-transport-macros = { version = "=1.15.0", path = "../codevetter-transport-macros" } tokio = { version = "1", features = ["rt-multi-thread"] } diff --git a/docs/product/surfaces.md b/docs/product/surfaces.md index 34a84cef..b8ecd92f 100644 --- a/docs/product/surfaces.md +++ b/docs/product/surfaces.md @@ -58,6 +58,11 @@ to an individual verification run remains in its receipt and Runs ledger. CodeVetter's History settings and `history-roots` command are retained for its existing local evidence archive and are not a general usage dashboard. +If you used `codevetter usage` or `codevetter quota` in a script, move that +workflow to ContextDaddy's app. ContextDaddy has no equivalent CodeVetter CLI +command; these retired commands now return a migration message instead of a +usage or quota receipt. + ## Interaction policy ### Review and Explore navigation From ea02a10213350b2901abe64d8fca3a45ed537685 Mon Sep 17 00:00:00 2001 From: Sarthak Agrawal Date: Fri, 25 Sep 2026 23:33:14 +0530 Subject: [PATCH 2/3] Clarify published and candidate navigation --- PROJECT_STATUS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PROJECT_STATUS.md b/PROJECT_STATUS.md index 5f835768..ef39a442 100644 --- a/PROJECT_STATUS.md +++ b/PROJECT_STATUS.md @@ -793,7 +793,7 @@ Internal (fleet): explicit and historical debt tracked in GitHub Issues. - Local-first native macOS binary: SwiftUI/AppKit presentation, Rust-owned verification and SQLite, no WebView and no server. -- Five-surface nav: Usage, Repo Unpack, Review, Testing, Performance. Repo contains Unpack, Activity, Graph, Inventory, Analysis, Handoff, and past snapshots; Settings is an integrated utility hosting Ops, Memories, Rubrics, Agent MCP, and preferences. Retired Work/Board routes redirect to Usage while their local records and backend lifecycle code remain available for separately reviewed cleanup. +- Published v1.14.3 still has the general Usage workspace. The v1.15.0 candidate presents Explore, Review, Testing, Performance, Runs, and Settings; the retired Usage route is kept only for decoding legacy deep links and is not navigable. Explore contains Unpack, source navigation, graph, and history. Existing local session/work-item records and backend lifecycle code remain available for separately reviewed cleanup. - Testing and Performance now share a local deterministic scope planner for a human-described function/flow, an exact PR or Git change, or a bounded whole-codebase portfolio. Every plan exposes its revision, dirty state, concrete adapters/targets, uncovered paths, and limitations and requires confirmation before execution; human text is discovery input and is never run as a command. - Risk-tiered CLI review: trivial single-pass → lite product/agent passes → full sensitive path with security, product, agent specialist passes, coordinator, and dedup metadata. From bbe740c35c306d9edf646beabb72e7b096696aa2 Mon Sep 17 00:00:00 2001 From: Sarthak Agrawal Date: Fri, 25 Sep 2026 23:48:04 +0530 Subject: [PATCH 3/3] docs: align architecture with retired Usage workspace --- docs/architecture/how-it-works.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/architecture/how-it-works.md b/docs/architecture/how-it-works.md index f6367bb6..fa39017c 100644 --- a/docs/architecture/how-it-works.md +++ b/docs/architecture/how-it-works.md @@ -39,8 +39,8 @@ flowchart LR `apps/macos` contains the Xcode workspace, minimal app shell, feature Swift package, assets, and XCUITest targets. The UI presents six primary workspaces: -Usage, Repo Unpack, Review, Testing, Performance, and Settings, plus the bounded -Runs evidence ledger. +Explore, Review, Testing, Performance, Runs, and Settings. Explore includes +Repo Unpack and the local source browser; Runs holds bounded evidence receipts. Swift does not open SQLite, traverse Git history, rank findings, or reinterpret verdicts. It starts supervised companion commands and decodes exact Rust-owned