Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,7 @@ jobs:
with:
node-version: 24
registry-url: https://registry.npmjs.org
package-manager-cache: false

- name: Download release assets
env:
Expand Down
9 changes: 5 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
### Fixed

- Locked the client provisioning contract in CLI help, generated reference, docs, and E2E tests: Codex installs project MCP/hooks but no project roles or skills; Claude Code installs project MCP/standalone roles/hooks while its plugin owns skills; Cursor installs project MCP/roles/skills/hooks. `--no-mcp` skips only MCP, and `--no-hooks` independently skips hooks.
- Removed the current routing-bundle application surface from Planr docs, generated references, tests, and release wording. Planr now documents only provider-neutral repository declarations and route evidence; optional routing lifecycle is external and repository-local, with Switchloom v0.2.0 as an external tool rather than something Planr invokes, installs, or uninstalls.

## [1.5.0] - 2026-07-17

Routing policy becomes an optional package instead of a responsibility compiled into Planr Core. Planr keeps the provider-neutral declaration, evidence, and safe repository transaction boundary; `planr-routing` owns volatile model and host knowledge.
Routing policy became an optional package instead of a responsibility compiled into Planr Core. This section is historical: the routing-bundle application boundary described here was removed in 1.5.1.

### Changed

- Hard-cut opinionated model routing out of Planr Core. Core now owns only the provider-neutral registry, route resolution and evidence, plus strict RoutingBundle v1 inspect/preview/apply. The independently buildable `planr-routing` workspace package owns named policies, exact models and effort, Codex/Claude Code/Cursor/mixed-host bindings, generated roles and skills, evaluation, signing, registry data, and catalog publication.
- Removed the legacy preset CLI, MCP tools, Rust modules, root policy fixtures, and root website ownership without aliases or compatibility layers. The replacement flow compiles a bundle with `planr-routing` and applies it through `planr routing bundle`; no command edits user configuration.
- Hard-cut opinionated model routing out of Planr Core. At the time, Core owned the provider-neutral registry, route resolution and evidence, plus strict RoutingBundle v1 inspect/preview/apply. The independently buildable `planr-routing` workspace package owned named policies, exact models and effort, Codex/Claude Code/Cursor/mixed-host bindings, generated roles and skills, evaluation, signing, registry data, and catalog publication.
- Removed the legacy preset CLI, MCP tools, Rust modules, root policy fixtures, and root website ownership without aliases or compatibility layers. The historical replacement flow compiled a bundle with `planr-routing` and applied it through `planr routing bundle`; no command edited user configuration.
- Catalog entries remain deterministic, experimental, and unrecommended. Offline or caller-asserted evidence cannot promote them. Detached signatures and signed bundles require an independently supplied trusted signer and Ed25519 public key.
- Hardened repository application against parent/child artifact collisions and rollback residue. Global Codex, Claude Code, Cursor, shell, keychain, credential, and XDG sentinels remain unchanged across bundle application.

Expand All @@ -34,7 +35,7 @@ Verified presets turn model routing from a hand-authored host configuration into
- Reproducible preset evaluation through `planr agents preset evaluate`: versioned challenge tasks, Planr-read artifact hashes, task-bound outcome oracles, lifecycle thresholds, optional live-host execution, and independently pinned Ed25519 telemetry receipts. Recommendations require complete, current, trusted route and usage evidence; offline estimates and incomplete runs cannot recommend.
- Optional signed preset registry commands (`verify`, preview-first `import`, and offline `list`) with immutable manifest-hash-addressed caching, lifecycle and compatibility checks, separately provisioned maintainer trust, and re-verification of cached content. Active projects and previously imported packs continue working when the registry is unavailable.
- Public [Planr Preset Catalog](https://planr-test-catalog.office-35d.workers.dev/) generated from the canonical verifier and evaluation report. Repository-owned Alchemy/Cloudflare tooling builds an allowlisted static publication, deploys an isolated `test` stage, and ships restrictive response headers without storing private signing keys in the site or deployment environment.
- Detailed guides for [preset composition](planr-routing/docs/PRESET_COMPOSITION.md), [evaluation](planr-routing/docs/PRESET_EVALUATION.md), and the [registry](planr-routing/docs/PRESET_REGISTRY.md), plus CLI, MCP-contract, architecture, and deployment documentation.
- Historical guides covered preset composition, evaluation, and the registry, plus CLI, MCP-contract, architecture, and deployment documentation.

### Security

Expand Down
167 changes: 2 additions & 165 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 0 additions & 5 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ path = "src/main.rs"
anyhow = "1"
clap = { version = "4", features = ["derive"] }
cliclack = "0.5.4"
ed25519-dalek = "2"
rusqlite = { version = "0.32", features = ["bundled"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
Expand Down Expand Up @@ -49,7 +48,3 @@ tempfile = "3"
lto = "thin"
codegen-units = 1
strip = "symbols"

[workspace]
members = ["planr-routing"]
resolver = "2"
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ Manual downloads, from-source builds, and client wiring details: [Install Guide]

## Install The Plugin (Skills)

The plugin under `plugins/planr` carries the ten Planr workflow skills. Optional model-routing roles come from repository-local routing bundles. The `planr` CLI (above) is required separately.
The plugin under `plugins/planr` carries the ten Planr workflow skills. Optional model-routing declarations live in repository-local files such as `.planr/agents.toml` and `.planr/policy.toml`; external tools may manage those files, but Planr does not install or invoke a routing engine. The `planr` CLI (above) is required separately.

<a id="install-plugin-codex"></a>
<details>
Expand Down Expand Up @@ -112,7 +112,7 @@ planr prompt cli

## Tell Your Agent

Remember one public entry point: `$planr`. It routes the request from live Planr state, including planning-only work and autonomous-goal preparation. Stage skills are advanced surfaces selected by the router.
Remember one public entry point: `$planr`. It routes ordinary planning and status work from live Planr state. For long autonomous runs, use the explicit two-step workflow: `$planr-goal` prepares durable state, then `$planr-loop` executes the resulting plan.

Start a new product from an idea:

Expand All @@ -126,7 +126,7 @@ split an MVP build plan, check it, then build the Planr map. Do not implement ye
For a long autonomous run, prepare outside the driver first. The preparation result prints a real plan id; Codex or Claude Code then starts only the plan-bound loop driver:

```text
Use $planr to prepare an autonomous goal for the weekly overview feature.
Use $planr-goal to prepare an autonomous goal for the weekly overview feature.

/goal Use $planr-loop on plan <plan-id>. The loop contract is stored in planr
context (tag: goal-contract).
Expand All @@ -140,7 +140,7 @@ Mid-project work (a new feature, refactor, or fix on an existing project) works

## What's new

- **1.5.0Optional routing policies:** Planr Core stays provider-neutral while the independently buildable `planr-routing` package owns model policies and host bindings for Codex, Claude Code, Cursor, and mixed-host setups. Start with [Routing Bundles](docs/ROUTING_BUNDLES.md), the [`planr-routing` guide](planr-routing/docs/MODEL_ROUTING_POLICY.md), and the [1.5.0 release notes](https://github.com/instructa/planr/releases/tag/v1.5.0).
- **1.5.1External routing boundary:** Planr consumes provider-neutral repository declarations and route evidence only. Optional model-routing lifecycle is external, for example [Switchloom v0.2.1](https://github.com/instructa/switchloom/releases/tag/v0.2.1) managing repository-local files outside Planr. Start with [Model Routing](docs/MODEL_ROUTING.md), [Switchloom](https://switchloom.ai), the [Switchloom repository](https://github.com/instructa/switchloom), its tagged [setup quickstart](https://github.com/instructa/switchloom/blob/v0.2.1/README.md#setup-from-the-website) and [lifecycle docs](https://github.com/instructa/switchloom/blob/v0.2.1/docs/preset-composition.md#repository-lifecycle-commands), and the [Changelog](CHANGELOG.md).
- **1.4.0 — Verified presets:** Added policy-driven composition, evaluation, signed registry evidence, and the public catalog. See the [1.4.0 release notes](https://github.com/instructa/planr/releases/tag/v1.4.0).
- **1.3.0 — Native host hooks:** Added automatic session-state injection and loop recovery for supported hosts. See the [Hooks guide](docs/HOOKS.md) and [1.3.0 release notes](https://github.com/instructa/planr/releases/tag/v1.3.0).

Expand Down
4 changes: 2 additions & 2 deletions apps/docs/content/docs/agents/prompt-recipes.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: Agent Prompt Recipes
description: Copy accurate prompts for planning, autonomous preparation, status, recovery, and advanced direct routing.
---

Use `$planr` for normal work. These prompts describe intent and boundaries; the router reads live Planr state and chooses the correct stage. Replace “my request” with the outcome and proof that matter to you.
Use `$planr` for normal work. Autonomous delivery is the exception: prepare with `$planr-goal`, then execute only the generated `$planr-loop` handoff. Replace “my request” with the outcome and proof that matter to you.

## First request

Expand Down Expand Up @@ -51,7 +51,7 @@ Recovery begins with map, lease, review, approval, log, and preview evidence. It

## Advanced direct entry points

Direct stage skills are optional precision controls for experienced users. They do not replace `$planr` as the documented default.
Direct stage skills are precision controls for experienced users. They do not replace `$planr` as the documented default for ordinary work; autonomous runs intentionally use `$planr-goal` followed by `$planr-loop`.

### `$planr-plan`: plan a bounded scope directly

Expand Down
Loading
Loading