planr 1.7.0 → 1.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +47 -22
  2. package/docs/ARCHITECTURE.md +3 -2
  3. package/docs/RELEASE.md +50 -7
  4. package/docs/SWITCHLOOM_COMPATIBILITY.md +46 -0
  5. package/docs/documentation/CONTRACT.md +7 -7
  6. package/docs/documentation/COVERAGE.md +5 -3
  7. package/docs/documentation/INFORMATION_ARCHITECTURE.md +5 -2
  8. package/npm/native/darwin-arm64/planr +0 -0
  9. package/npm/native/darwin-x86_64/planr +0 -0
  10. package/npm/native/linux-arm64/planr +0 -0
  11. package/npm/native/linux-x86_64/planr +0 -0
  12. package/package.json +5 -1
  13. package/plugins/planr/.claude-plugin/plugin.json +1 -1
  14. package/plugins/planr/.codex-plugin/plugin.json +1 -1
  15. package/plugins/planr/agents/planr-worker.md +1 -1
  16. package/plugins/planr/skills/planr-goal/SKILL.md +21 -49
  17. package/plugins/planr/skills/planr-loop/SKILL.md +28 -94
  18. package/plugins/planr/skills/planr-loop/agents/planr-worker.md +1 -1
  19. package/plugins/planr/skills/planr-loop/references/host-dispatch.md +10 -0
  20. package/plugins/planr/skills/planr-loop/references/recovery-and-verification.md +24 -0
  21. package/plugins/planr/skills/planr-task-graph/SKILL.md +21 -190
  22. package/docs/CI.md +0 -55
  23. package/docs/CLAUDE_CODE.md +0 -52
  24. package/docs/CLI_REFERENCE.md +0 -170
  25. package/docs/CODEX.md +0 -56
  26. package/docs/CURSOR.md +0 -114
  27. package/docs/EXAMPLE_WEBAPP.md +0 -103
  28. package/docs/GOALS.md +0 -175
  29. package/docs/HANDOFFS_AND_STORIES.md +0 -121
  30. package/docs/HOOKS.md +0 -34
  31. package/docs/IMPORT.md +0 -23
  32. package/docs/INSTALL.md +0 -115
  33. package/docs/MCP_CONTRACT.md +0 -78
  34. package/docs/MCP_GUIDE.md +0 -40
  35. package/docs/MODEL_ROUTING.md +0 -33
  36. package/docs/NPM.md +0 -40
  37. package/docs/OPERATING_MODEL.md +0 -250
  38. package/docs/ROUTING_BUNDLES.md +0 -15
  39. package/docs/SECURITY.md +0 -8
  40. package/docs/SKILLS.md +0 -261
  41. package/docs/TASK_GRAPH_MODEL.md +0 -272
  42. package/docs/TESTING.md +0 -87
  43. package/docs/TROUBLESHOOTING.md +0 -30
  44. package/docs/planr-spec/ADRS.md +0 -160
  45. package/docs/planr-spec/AI_SPEC.md +0 -138
  46. package/docs/planr-spec/ANALYTICS_OBSERVABILITY_SPEC.md +0 -124
  47. package/docs/planr-spec/API_AND_DATA_MODEL.md +0 -519
  48. package/docs/planr-spec/BACKEND_IMPLEMENTATION_SPEC.md +0 -178
  49. package/docs/planr-spec/CLIENT_IMPLEMENTATION_SPEC.md +0 -119
  50. package/docs/planr-spec/DESIGN_SYSTEM_SPEC.md +0 -102
  51. package/docs/planr-spec/PRODUCT_SPEC.md +0 -193
  52. package/docs/planr-spec/QA_ACCEPTANCE_TESTS.md +0 -146
  53. package/docs/planr-spec/README.md +0 -68
  54. package/docs/planr-spec/REFERENCES.md +0 -29
  55. package/docs/planr-spec/RELEASE_READINESS.md +0 -95
  56. package/docs/planr-spec/SAFETY_PRIVACY_SECURITY.md +0 -169
  57. package/docs/planr-spec/TASKS.md +0 -932
  58. package/docs/planr-spec/TECH_ARCHITECTURE.md +0 -145
  59. package/docs/planr-spec/UX_FLOWS.md +0 -235
  60. package/docs/release-candidates/planr-v1.5.2.md +0 -156
  61. /package/docs/{planr-spec → contracts}/EVAL_CONTRACT_V1.md +0 -0
  62. /package/docs/{planr-spec → contracts}/V1_1_DIFFERENTIATION_CONTRACT.md +0 -0
package/README.md CHANGED
@@ -24,7 +24,7 @@ Flat todo lists break down the moment real work has structure. Planr models work
24
24
  - **State survives sessions.** Markdown plans hold scope and acceptance criteria; the SQLite graph holds live status across handoffs, restarts, and agent switches.
25
25
  - **Failure is structured.** Stale picks, timeouts, and retries are detectable and recoverable (`planr recover sweep`).
26
26
 
27
- Three layers make that work: **Plans** (reviewable Markdown packages), the **Map** (live dependency graph with picks, reviews, logs), and **Agent loops** (skills, CLI, and MCP workflows for every major coding agent). Full model: [Task Graph Model](docs/TASK_GRAPH_MODEL.md) and [Operating Model](docs/OPERATING_MODEL.md).
27
+ Three layers make that work: **Plans** (reviewable Markdown packages), the **Map** (live dependency graph with picks, reviews, logs), and **Agent loops** (skills, CLI, and MCP workflows for every major coding agent). Full model: [Task Graph Model](https://planr.so/docs/concepts/graph-and-readiness) and [Operating Model](https://planr.so/docs/guides/daily-worker-loop).
28
28
 
29
29
  ## Install
30
30
 
@@ -50,7 +50,7 @@ Then initialize a project. When selected, Claude Code and Cursor also receive st
50
50
  planr project init "My Product" --client all
51
51
  ```
52
52
 
53
- Manual downloads, from-source builds, and client wiring details: [Install Guide](docs/INSTALL.md).
53
+ Manual downloads, from-source builds, and client wiring details: [Install Guide](https://planr.so/docs/getting-started/installation).
54
54
 
55
55
  ## Install The Plugin (Skills)
56
56
 
@@ -93,7 +93,7 @@ planr install cursor # writes .cursor/mcp.json, .cursor/agents/, and
93
93
  planr install cursor --no-mcp # project skills, subagents, and hooks; no MCP config
94
94
  ```
95
95
 
96
- The dry-run also prints a one-click `cursor://` deeplink for user-level MCP install. Marketplace listing is pending review. Multitasking with Cursor subagents: [Cursor guide](docs/CURSOR.md).
96
+ The dry-run also prints a one-click `cursor://` deeplink for user-level MCP install. Marketplace listing is pending review. Multitasking with Cursor subagents: [Cursor guide](https://planr.so/docs/integrations/cursor).
97
97
 
98
98
  </details>
99
99
 
@@ -110,6 +110,28 @@ planr prompt cli
110
110
 
111
111
  </details>
112
112
 
113
+ ## Plugins
114
+
115
+ Planr plugins extend coding-agent setup around the same local-first graph. They do not move ownership of Planr Core: maps, picks, logs, reviews, approvals, and closure evidence still live in Planr, while optional integrations own their own install, generated files, and uninstall lifecycle.
116
+
117
+ Switchloom is an optional external routing plugin for repository-local model-routing declarations. Use the corrected current quickstart command with the exact verified package version:
118
+
119
+ ```bash
120
+ npx switchloom@0.3.2 compile balanced --host codex-openai --integration planr --output balanced-planr-codex.json
121
+ npx switchloom@0.3.2 apply balanced-planr-codex.json --repository .
122
+ planr agents check
123
+ planr agents list --json
124
+ ```
125
+
126
+ Planr consumes the resulting `.planr/agents.toml`, `.planr/policy.toml`, and route evidence; Codex consumes generated native roles after the host reloads its repository config. Switchloom remains responsible for its external lifecycle, including uninstall:
127
+
128
+ ```bash
129
+ npx switchloom@0.3.2 uninstall --repository .
130
+ planr agents check
131
+ ```
132
+
133
+ References: [Plugins docs](https://planr.so/docs/plugins/switchloom), [Switchloom v0.3.2 release](https://github.com/instructa/switchloom/releases/tag/v0.3.2), [current corrected Switchloom quickstart](https://github.com/instructa/switchloom#setup-from-the-website), [v0.3.2 tagged quickstart](https://github.com/instructa/switchloom/blob/v0.3.2/README.md#setup-from-the-website), and [v0.3.2 lifecycle docs](https://github.com/instructa/switchloom/blob/v0.3.2/docs/preset-composition.md#repository-lifecycle-commands). The tagged v0.3.2 README quickstart preserves stale `0.3.1` command examples, so use the explicit `switchloom@0.3.2` commands above for the verified Planr contract.
134
+
113
135
  ## Tell Your Agent
114
136
 
115
137
  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.
@@ -136,7 +158,7 @@ with log evidence, all reviews are closed complete, and a live verification log
136
158
  the feature working in the browser. Iteration budget: 10.
137
159
  ```
138
160
 
139
- Mid-project work (a new feature, refactor, or fix on an existing project) works the same — it gets its own feature-scoped plan and extends the existing map. Both journeys with example prompts: [Two Journeys](docs/SKILLS.md#two-journeys-new-project-vs-existing-project). Coding agents inspect progress with the compact default `planr map show` or, preferably, `planr map show --json`. The tree preserves exact dependency vocabulary while marking satisfied edges as `blocks✓`; active `blocks` stay red. The boxed `planr map show --view diagram` renderer is exclusively for human supervision and uses neutral `then` routes once those dependencies are satisfied. Agents must not invoke it. Humans can add `--full` for complete status, title, worker, critical-lane, and pressure details. Interactive map output colors states automatically; `--no-color` and `NO_COLOR` keep it plain.
161
+ Mid-project work (a new feature, refactor, or fix on an existing project) works the same — it gets its own feature-scoped plan and extends the existing map. Both journeys with example prompts: [Prompt Recipes](https://planr.so/docs/agents/prompt-recipes). Coding agents inspect progress with the compact default `planr map show` or, preferably, `planr map show --json`. The tree preserves exact dependency vocabulary while marking satisfied edges as `blocks✓`; active `blocks` stay red. The boxed `planr map show --view diagram` renderer is exclusively for human supervision and uses neutral `then` routes once those dependencies are satisfied. Agents must not invoke it. Humans can add `--full` for complete status, title, worker, critical-lane, and pressure details. Interactive map output colors states automatically; `--no-color` and `NO_COLOR` keep it plain.
140
162
 
141
163
  To supervise an agent from a second terminal, leave the agent running in terminal A and watch its scoped graph in terminal B:
142
164
 
@@ -152,30 +174,33 @@ The watcher is likewise a human-only observer. It defaults to the condensed diag
152
174
 
153
175
  ## What's new
154
176
 
155
- - **1.6.0Human map observation:** Added a condensed boxed diagram, live two-terminal watching, accessible state colors, and clearer satisfied dependency routes. These views are intentionally for human supervision; agents keep using the default tree or JSON snapshots. See [Task Graph Model](docs/TASK_GRAPH_MODEL.md), [CLI Reference](docs/CLI_REFERENCE.md), and the [1.6.0 changelog](CHANGELOG.md#160---2026-07-21).
156
- - **1.5.2Standalone core, optional Switchloom:** Planr consumes provider-neutral repository declarations and route evidence only; it works without any routing files, and requested-only routing metadata is not execution proof. Optional model-routing lifecycle is external, with [Switchloom v0.2.1](https://github.com/instructa/switchloom/releases/tag/v0.2.1) verified as the repository-local handoff 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).
177
+ - **1.7.2Reproducible release candidates:** Locked the pnpm workspace inventory, made external eval fixtures self-contained, refreshed reviewed workflow runtimes, and made all four published architectures execute the exact tagged version before upload. Model-backed evaluation remains a local, candidate-bound maintainer gate; this patch makes no unmeasured speed or quality claim. See the [1.7.2 changelog](CHANGELOG.md#172---2026-07-25) and [release guidance](https://planr.so/docs/operations/release).
178
+ - **1.7.1Leaner agent guidance and safer local releases:** Slimmed the hot-path Planr skills while preserving their execution and review contracts, moved maintainer benchmark inputs and results outside the public repository, added a fail-closed local release-evidence gate without API keys in CI, and verified the optional external Switchloom v0.3.2 integration. The public 1.7 eval CLI remains available in this patch. See the [1.7.1 changelog](CHANGELOG.md#171---2026-07-25) and [release guidance](https://planr.so/docs/operations/release).
179
+ - **1.7.0 — Evidence-backed evaluations:** Added durable eval suites, runs, comparisons, invalidation and rescoring, correctness/quality/performance gates, cost per verified success, and effort recommendations. The complete workflow is available through the CLI; MCP only mirrors selected surfaces and is optional. Security gates now cover repository leaks, vulnerable dependencies, workflow hardening, privacy, and forbidden staged files. See the [Eval Contract](docs/contracts/EVAL_CONTRACT_V1.md), [CLI Reference](https://planr.so/docs/reference/cli), and the [1.7.0 changelog](CHANGELOG.md#170---2026-07-22).
180
+ - **1.6.0 — Human map observation:** Added a condensed boxed diagram, live two-terminal watching, accessible state colors, and clearer satisfied dependency routes. These views are intentionally for human supervision; agents keep using the default tree or JSON snapshots. See [Task Graph Model](https://planr.so/docs/concepts/graph-and-readiness), [CLI Reference](https://planr.so/docs/reference/cli), and the [1.6.0 changelog](CHANGELOG.md#160---2026-07-21).
181
+ - **1.5.2 — Standalone core, optional Switchloom:** Planr consumes provider-neutral repository declarations and route evidence only; it works without any routing files, and requested-only routing metadata is not execution proof. Optional model-routing lifecycle is external, with [Switchloom v0.3.2](https://github.com/instructa/switchloom/releases/tag/v0.3.2) verified as the current repository-local handoff outside Planr. Start with [Plugins](https://planr.so/docs/plugins), [Switchloom](https://switchloom.ai), the [Switchloom repository](https://github.com/instructa/switchloom), the [current corrected quickstart](https://github.com/instructa/switchloom#setup-from-the-website), the [v0.3.2 tagged quickstart](https://github.com/instructa/switchloom/blob/v0.3.2/README.md#setup-from-the-website), [v0.3.2 lifecycle docs](https://github.com/instructa/switchloom/blob/v0.3.2/docs/preset-composition.md#repository-lifecycle-commands), and the [Changelog](CHANGELOG.md). The tagged v0.3.2 README quickstart keeps stale `0.3.1` command examples; use explicit `switchloom@0.3.2` commands when following Planr's verified contract.
157
182
  - **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).
158
- - **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).
183
+ - **1.3.0 — Native host hooks:** Added automatic session-state injection and loop recovery for supported hosts. See the [Integrations guide](https://planr.so/docs/integrations) and [1.3.0 release notes](https://github.com/instructa/planr/releases/tag/v1.3.0).
159
184
 
160
185
  For the complete release history, see the [Changelog](CHANGELOG.md).
161
186
 
162
187
  ## Docs
163
188
 
164
- - [Install](docs/INSTALL.md)
165
- - [Skills](docs/SKILLS.md)
166
- - [Long-Running Goals](docs/GOALS.md)
167
- - [Model Routing](docs/MODEL_ROUTING.md) · [Worked Example: Web App](docs/EXAMPLE_WEBAPP.md)
168
- - [Host Hooks](docs/HOOKS.md)
169
- - [CLI Reference](docs/CLI_REFERENCE.md)
170
- - [MCP Guide](docs/MCP_GUIDE.md)
171
- - [Codex](docs/CODEX.md) · [Claude Code](docs/CLAUDE_CODE.md) · [Cursor](docs/CURSOR.md)
172
- - [Operating Model](docs/OPERATING_MODEL.md)
173
- - [Task Graph Model](docs/TASK_GRAPH_MODEL.md)
174
- - [Architecture](docs/ARCHITECTURE.md)
175
- - [Testing](docs/TESTING.md)
176
- - [Troubleshooting](docs/TROUBLESHOOTING.md)
177
- - [Specification Package](docs/planr-spec/README.md)
178
- - More: [Changelog](CHANGELOG.md), [Import](docs/IMPORT.md), [Security](docs/SECURITY.md), [Handoffs And Stories](docs/HANDOFFS_AND_STORIES.md), [npm Package](docs/NPM.md)
189
+ Full documentation lives at [planr.so/docs](https://planr.so/docs).
190
+
191
+ - [Install](https://planr.so/docs/getting-started/installation)
192
+ - [Skills](https://planr.so/docs/agents/skills) · [Prompt Recipes](https://planr.so/docs/agents/prompt-recipes)
193
+ - [Plugins and Model Routing](https://planr.so/docs/plugins) · [Recipes](https://planr.so/docs/guides/recipes)
194
+ - [Integrations and Host Hooks](https://planr.so/docs/integrations)
195
+ - [CLI Reference](https://planr.so/docs/reference/cli) · [MCP Reference](https://planr.so/docs/reference/mcp)
196
+ - [Codex](https://planr.so/docs/integrations/codex) · [Claude Code](https://planr.so/docs/integrations/claude-code) · [Cursor](https://planr.so/docs/integrations/cursor)
197
+ - [Daily Worker Loop](https://planr.so/docs/guides/daily-worker-loop)
198
+ - [Task Graph Model](https://planr.so/docs/concepts/graph-and-readiness)
199
+ - [Architecture](https://planr.so/docs/contributing/architecture)
200
+ - [Testing](https://planr.so/docs/contributing/testing)
201
+ - [Troubleshooting](https://planr.so/docs/troubleshooting)
202
+ - [Specification Package](.planr/plans/product/planr/README.md)
203
+ - More: [Changelog](CHANGELOG.md), [Packages and Reuse](https://planr.so/docs/guides/packages-and-reuse), [Security and Privacy](https://planr.so/docs/contributing/security-and-privacy), [Handoff and Resume](https://planr.so/docs/guides/handoff-and-resume)
179
204
 
180
205
  ## License
181
206
 
@@ -8,7 +8,8 @@ Planr V1 is a single Rust binary with explicit module ownership. The crate stays
8
8
  - `tests/e2e.rs`: real CLI, MCP, HTTP, import, review-gate, run-log, and concurrent-pick tests.
9
9
  - `plugins/planr/`: the installable plugin payload — all ten skills, independent Claude/Cursor worker and reviewer role assets, and the per-host plugin manifests. Planr does not ship model-pinned Codex roles.
10
10
  - `.agents/plugins/marketplace.json`, `.claude-plugin/marketplace.json`: marketplace manifests pointing Codex and Claude Code at `plugins/planr`.
11
- - `docs/`: user and contributor guides; `docs/planr-spec/` is the production specification package for Planr V1.
11
+ - `docs/`: user and contributor guides; `docs/contracts/` holds the frozen product contracts that gate CI.
12
+ - `.planr/plans/product/planr/`: the production specification package for Planr V1, stored as a normal Planr product plan package. It is the only committed `.planr` path; all other runtime state stays local.
12
13
  - `examples/real-world-flow.md`: executable real-world operator flow.
13
14
  - `scripts/`: installer and release packaging scripts.
14
15
  - `npm/`: the npm wrapper package.
@@ -51,7 +52,7 @@ Planr V1 is a single Rust binary with explicit module ownership. The crate stays
51
52
 
52
53
  ## Eval Contract V1/V1.1 Ownership
53
54
 
54
- The frozen product contract lives in `docs/planr-spec/EVAL_CONTRACT_V1.md` until implementation promotes it into code. Its V1.1 efficiency-evidence amendment is additive and keeps the same owner split:
55
+ The frozen product contract lives in `docs/contracts/EVAL_CONTRACT_V1.md` until implementation promotes it into code. Its V1.1 efficiency-evidence amendment is additive and keeps the same owner split:
55
56
 
56
57
  - repository EvalSuite manifests and fixtures are authored inputs;
57
58
  - the suite loader owns validation, safe path resolution, normalization, canonical ordering, and digests;
package/docs/RELEASE.md CHANGED
@@ -10,28 +10,72 @@ The v1 repository-owned public install order is:
10
10
  4. npm (`npm install -g planr`) with bundled platform binaries.
11
11
  5. Cargo/source builds for maintainers and contributors.
12
12
 
13
- Published npm versions bundle platform-native binaries; see `docs/NPM.md`.
13
+ Published npm versions bundle platform-native binaries; see <https://planr.so/docs/operations/release>.
14
14
 
15
15
  ## Version Bump
16
16
 
17
- `scripts/release.sh` is the only supported release path. The version lives in one source (`Cargo.toml`) and four distribution manifests must carry it: `Cargo.toml`, `package.json`, `plugins/planr/.codex-plugin/plugin.json`, and `plugins/planr/.claude-plugin/plugin.json`. Manual tagging skips the manifest sync and ships stale plugin versions.
17
+ `scripts/release.sh` is the only supported release path. The version lives in
18
+ `Cargo.toml`; `package.json`, both plugin manifests under `plugins/planr/`, and
19
+ `.cursor-plugin/plugin.json` must match it. Generated CLI and MCP references
20
+ must match the currently committed version before the release branch merges.
21
+ After bumping on clean `main`, the script refreshes pnpm's derived workspace
22
+ metadata with the frozen lockfile and rejects any lockfile byte change. It then
23
+ builds, regenerates, and strictly checks both references before staging them in
24
+ the same atomic release commit as the six synchronized version files. Manual
25
+ tagging or pre-generating a future version skips this ownership boundary and
26
+ can ship stale references.
18
27
 
19
28
  ```bash
29
+ export PLANR_RELEASE_EVAL_SUITE="$HOME/projects/planr-evals/suites/planr-lean-skills-dogfood.suite.json"
30
+ export PLANR_RELEASE_EVAL_RECEIPT=/path/to/sanitized-release-eval-receipt.json
31
+ export PLANR_RELEASE_EVAL_DB=/path/to/planr-evals/results/eval.sqlite
20
32
  scripts/release.sh 1.2.0 "one-line release summary"
21
33
  ```
22
34
 
35
+ Maintainer benchmarks, baselines, model/effort runs, and results live outside
36
+ the public repository in `~/projects/planr-evals`; that workspace and its exact
37
+ layout are not a Planr runtime contract. All three paths above are explicit so a
38
+ release cannot silently use the product repository's ordinary `.planr` database
39
+ or a stale bundled suite. The receipt is a short-lived local pointer containing
40
+ only `schema_version`, comparison and candidate-run identities, suite and
41
+ candidate-revision digests, and creation/expiry timestamps. Prompts,
42
+ completions, credentials, personal paths, raw runs, reports, databases, and the
43
+ receipt itself are never committed to Planr.
44
+
45
+ Fixture paths inside the private suite resolve relative to the suite file's
46
+ directory. The external eval workspace must therefore contain its complete
47
+ fixture tree; release verification does not read ignored files from the Planr
48
+ checkout.
49
+
50
+ Generate the candidate revision with
51
+ `node scripts/verify-release-eval-receipt.mjs --print-candidate-revision`. At
52
+ release time the candidate binary canonicalizes the explicitly supplied suite,
53
+ requires a Planr-validated effective route observation (host report, telemetry
54
+ receipt, process exit, or local observation), recomputes the comparison from its
55
+ stored baseline/candidate/policy identities, and gates that fresh result.
56
+ Requested-only values and policy or binding metadata are never
57
+ effective-treatment proof.
58
+
23
59
  The script enforces, in order:
24
60
 
25
61
  1. branch is `main`, worktree is clean, `CHANGELOG.md` already has a committed `## [x.y.z]` section, and the tag does not exist;
26
- 2. the version is written into all four manifests plus `Cargo.lock`;
27
- 3. gates: `cargo test` (includes the manifest drift guard in `tests/e2e.rs`), `npm pack --dry-run`, and `scripts/security-local.sh` (betterleaks + trivy leak gate);
28
- 4. one mechanical commit `release x.y.z: <summary>`, an annotated `vx.y.z` tag carrying that summary, and a single push of branch plus tag.
62
+ 2. the version is written into all synchronized manifests;
63
+ 3. `pnpm install --frozen-lockfile` refreshes installed workspace metadata, and any `pnpm-lock.yaml` byte change stops the release before build, references, gates, or Git mutation;
64
+ 4. the build synchronizes `Cargo.lock`, and the bumped candidate regenerates and strictly verifies both generated references before any later gate or Git mutation;
65
+ 5. the candidate binary validates the sanitized receipt, observed effective treatment, candidate binding, and existing Planr comparison/gate before any Git mutation;
66
+ 6. deterministic gates: `cargo test` (including manifest drift), `npm pack --dry-run`, and `scripts/security-local.sh` (betterleaks + trivy);
67
+ 7. one mechanical commit containing the six version files plus both generated references, an annotated `vx.y.z` tag carrying that summary, and a single push of branch plus tag.
29
68
 
30
69
  Two independent gates back the script:
31
70
 
32
71
  - `cargo test` fails on every push when any manifest version drifts from `Cargo.toml`.
33
72
  - The release workflow's `Verify release versions are consistent` step refuses the tag when the tag, any manifest, or the `CHANGELOG.md` section disagree.
34
73
 
74
+ Public CI runs `npm run verify:release-eval-gate` with a synthetic suite, fake
75
+ binary, and temporary database. It verifies the fail-closed mechanism without a
76
+ provider call, private benchmark, API key, or release receipt. Model-backed
77
+ quality decisions remain a local maintainer preflight.
78
+
35
79
  ## Alpha Channel (Pre-Releases)
36
80
 
37
81
  Pre-release versions use the same script and pipeline with a semver pre-release suffix:
@@ -55,7 +99,7 @@ Pushing a tag `vX.Y.Z` runs `.github/workflows/release.yml`:
55
99
  1. `create-release` verifies the tag against `Cargo.toml`, all distribution manifests, and the changelog section, then creates a draft GitHub Release.
56
100
  2. `build` compiles and packages `planr-<os>-<arch>.tar.gz` for `darwin-arm64`, `darwin-x86_64`, `linux-x86_64`, and `linux-arm64`, then uploads each asset to the draft release.
57
101
  3. `finalize` downloads all uploaded assets, writes one aggregated `SHA256SUMS` covering every tarball, uploads it, and publishes the release.
58
- 4. `npm-publish` downloads the release assets, verifies them against `SHA256SUMS`, bundles the four platform binaries into `npm/native/`, smoke-tests the wrapper, and publishes to npm via Trusted Publishing (OIDC). Runs only when the repository variable `NPM_PUBLISH_ENABLED` is `true`; requires the one-time Trusted Publisher setup described in `docs/NPM.md`.
102
+ 4. `npm-publish` downloads the release assets, verifies them against `SHA256SUMS`, bundles the four platform binaries into `npm/native/`, smoke-tests the wrapper, and publishes to npm via Trusted Publishing (OIDC). Runs only when the repository variable `NPM_PUBLISH_ENABLED` is `true`; requires the one-time Trusted Publisher setup described at <https://planr.so/docs/operations/release>.
59
103
  5. `homebrew-tap` regenerates `Formula/planr.rb` with `scripts/generate-formula.sh` and pushes it to `instructa/homebrew-tap` (installed as `brew install instructa/tap/planr`).
60
104
 
61
105
  ## Changelog
@@ -115,7 +159,6 @@ The package must include:
115
159
 
116
160
  - `npm/bin/planr.js`
117
161
  - `docs/`
118
- - `docs/MCP_CONTRACT.md`
119
162
  - `docs/fixtures/mcp-contract.json`
120
163
  - `plugins/`
121
164
  - `README.md`
@@ -0,0 +1,46 @@
1
+ # Switchloom Compatibility
2
+
3
+ This report records Planr-side compatibility evidence for the exact public `switchloom@0.3.2` package. It is intentionally narrow: Planr verifies the package identity, repository-local declaration boundary, and its own consumption/proof semantics. It does not turn Switchloom internals, generated semantic role names, routes, doctor output, or runtime telemetry into a future contract.
4
+
5
+ ## Exact v0.3.2 Behavior Verified
6
+
7
+ - Public npm metadata for `switchloom@0.3.2` resolved from the npm registry:
8
+ - `dist.integrity`: `sha512-g96AZIFKXpG1toAO+Gri1sjD8q0SxFxtRSLAcRcSVRGDCZ/dUtERepsOB+cSHHH7hUsT0jSKZYPfNqiLvfKk9Q==`
9
+ - `dist.shasum`: `d7d72c74ac3ecd5a3e355edd8e297284cba04403`
10
+ - `dist.tarball`: `https://registry.npmjs.org/switchloom/-/switchloom-0.3.2.tgz`
11
+ - `npm pack switchloom@0.3.2 --pack-destination /private/tmp --json` returned a 9-entry package with the expected native binaries, wrapper, provenance file, README, license, and package manifest.
12
+ - The packed tarball at `/private/tmp/switchloom-0.3.2.tgz` had SHA256 `0c04e94fc4372845edf395b3ea51139b8a4b46f34404940e06b3f4ec3ce22d20`.
13
+ - The reviewed oracle contract expects the v0.3.2 Planr integration bundle `balanced-codex-openai@1.0.0+2.0.0`, bundle SHA256 `bf48f502080ff444ccb67bc4eeacc9391e77dbf5f0f8f277814e9abc2443e6c8`, 10 managed artifacts, 7 Codex-native roles, and 5 Planr work-type routes.
14
+ - Repository docs now document the safe external operator flow with explicit `switchloom@0.3.2` commands, no normal-guidance `apply --yes`, and a caveat that the v0.3.2 tagged README preserves stale `0.3.1` examples.
15
+ - The immutable live oracle used isolated source clone `/private/tmp/planr-switchloom-source.6gbzx2/source` and completed with `SWITCHLOOM_SOURCE_ROOT=/private/tmp/planr-switchloom-source.6gbzx2/source SWITCHLOOM_TARBALL=/private/tmp/switchloom-0.3.2.tgz PLANR_ORACLE_TEMP_PARENT=/private/tmp npm run verify:switchloom-cross-product`, exit 0. The live root is `/private/tmp/planr-switchloom-cross-product-Lbluca`, with oracle receipt `/private/tmp/planr-switchloom-cross-product-Lbluca/oracle-receipt.json`.
16
+ - The retained replay of the same root and isolated source clone exited 0 and wrote `/private/tmp/planr-switchloom-cross-product-Lbluca/replay-receipt.json`. Replay first asserts the current source fingerprint matches the retained live receipt, then separately verifies the source remains unchanged during replay.
17
+ - The live and replay receipts bind the same Switchloom source fingerprint before and after each mode: HEAD `8ff05776085d3175211e080143c513c5173abaa4`, clean status SHA256 `e3b0c442...`, inventory SHA256 `790de1be...`, file-hash SHA256 `97a26b12...`, and 303 paths. The maintainer's original sibling Switchloom worktree was not modified for this proof.
18
+ - The successful live oracle proves exact package tarball SHA256 `0c04e94fc4372845edf395b3ea51139b8a4b46f34404940e06b3f4ec3ce22d20`, bundle SHA256 `bf48f502080ff444ccb67bc4eeacc9391e77dbf5f0f8f277814e9abc2443e6c8`, 7 profiles, 5 routes, 10 managed artifacts, Planr declaration consumption, Planr audit, uninstall and unrouted Planr behavior, no-auth fail-closed behavior, requested-only rejection, global sentinel preservation, and routing ownership.
19
+ - The successful live oracle proves separate native maker and reviewer execution: maker `model_routing_terra_high` on `gpt-5.6-terra` with high effort, reviewer `model_routing_sol_high` on `gpt-5.6-sol` with high effort. Hidden spawn messages are intentionally opaque; the proof is exact successful parent `agent_type`, `task_name`, and `fork_turns` metadata correlated with matching direct child role rollouts, repo-local skill reads, and item-specific Planr evidence. It does not claim plaintext hidden-message recovery.
20
+ - One malformed parent `spawn_agent` attempt in the retained live root was retained as a diagnostic and not counted as a successful spawn. The oracle still requires exactly two successful routed spawns and still rejects default, wrong-role, missing-role, or extra successful child execution.
21
+ - A separate fresh root, `/private/tmp/planr-switchloom-cross-product-gHtZQI`, was correctly rejected: Codex claimed `spawn_agent` was unavailable and directly handled the work, producing 0 successful routed spawns. That run is negative evidence for host stochastic failure detection, not a passing compatibility run.
22
+
23
+ ## Stable Planr Boundary
24
+
25
+ - Planr Core is provider-neutral. It reads `.planr/agents.toml`, `.planr/policy.toml`, and route-audit evidence, but does not install, invoke, compile, apply, or uninstall Switchloom output.
26
+ - `.planr/agents.toml` profiles, routes, model names, efforts, role names, and fallback chains are opaque data to Planr. Planr may place requested routing data in pick packets, but requested-only values are not effective execution proof.
27
+ - `--profile` records the profile a worker reports for a run. Genuine runtime proof belongs in route-audit evidence that separates requested, host-resolved, and effective dimensions.
28
+ - Missing effective host evidence remains explicitly unavailable. Planr must not infer it from generated declarations, policy files, or worker claims.
29
+ - External lifecycle remains external: Switchloom owns compile, apply, generated host roles, host reload requirements, and uninstall. Planr validates its own consumption with `planr agents check` and records evidence through logs/reviews.
30
+ - Planr works without routing declarations. After an external uninstall, unrouted Planr fallback behavior remains the stable Core contract.
31
+
32
+ ## Not Guaranteed For Future Switchloom Work
33
+
34
+ Future Switchloom work, including thread `019f8a71-5b6c-7c41-9850-7050516fcee4`, may change semantic role names, route names, doctor output, generated artifacts, runtime telemetry, and host-specific evidence shape. Planr must not contract those as stable.
35
+
36
+ The stable compatibility promise is limited to Planr's boundary: consume provider-neutral declarations when present, keep requested values separate from effective evidence, reject requested-only metadata as proof, avoid owning external lifecycle, and continue operating when routing files are absent.
37
+
38
+ Any future mismatch in package identity, generated artifacts, Planr declaration parsing, route-audit semantics, host evidence, source-worktree mutation, or security posture should become a new finding or fix item rather than an optimistic compatibility claim.
39
+
40
+ ## Verification Notes
41
+
42
+ - Rust formatting, clippy, full serial cargo tests, e2e, eval-contract, and routing-ownership tests passed when run outside the sandbox where HTTP/process tests are permitted.
43
+ - Docs reference generation, typecheck, reference verification, maintenance verification, and Node 22 production build passed. Node 26 production docs builds hung in the optimized Next build phase and were terminated; the Node 22 build is the relevant repository runtime.
44
+ - npm package dry-run passed using a temp npm cache because the user npm cache contains root-owned files.
45
+ - Privacy checks passed. The docs app Next.js runtime was upgraded from `16.2.10` to `16.2.11` in `apps/docs/package.json` and `pnpm-lock.yaml`; the lockfile change is limited to Next core/env/SWC and mechanically recalculated peer snapshots. `npm run security:check` passed with BetterLeaks reporting no leaks and Trivy reporting 0 vulnerabilities for both `Cargo.lock` and `pnpm-lock.yaml`.
46
+ - The immutable source clone proof supersedes earlier retained-replay-only evidence. Earlier concurrent external mutation and missing-receipt attempts were treated as real failures and are not counted as passing evidence.
@@ -4,16 +4,16 @@ Status: approved implementation contract for the Planr documentation site
4
4
  Last audited: 2026-07-17
5
5
  Scope owner: `apps/docs` (site and English product documentation)
6
6
 
7
- This contract turns the current product, runtime, and repository documentation into one maintainable public documentation system. It is intentionally separate from the product specification package: `docs/planr-spec/` remains the product source of truth, while the site explains the released product to users and contributors.
7
+ This contract turns the current product, runtime, and repository documentation into one maintainable public documentation system. It is intentionally separate from the product specification package: `.planr/plans/product/planr/` remains the product source of truth, while the site explains the released product to users and contributors.
8
8
 
9
9
  ## Source hierarchy
10
10
 
11
11
  When sources disagree, authors must use this order and disclose the disagreement instead of silently choosing convenient copy:
12
12
 
13
- 1. **Product intent and invariants:** `AGENTS.md` and `docs/planr-spec/`, especially `PRODUCT_SPEC.md`, `TECH_ARCHITECTURE.md`, and `API_AND_DATA_MODEL.md`.
13
+ 1. **Product intent and invariants:** `AGENTS.md` and `.planr/plans/product/planr/`, especially `PRODUCT_SPEC.md`, `TECH_ARCHITECTURE.md`, and `API_AND_DATA_MODEL.md`.
14
14
  2. **Released executable behavior:** compiled `planr --help` output, `src/cli.rs`, `src/app/mcp.rs`, `src/app/http.rs`, `src/model.rs`, and the tested fixture `docs/fixtures/mcp-contract.json`. Runtime sources decide whether a command, option, schema, endpoint, state, or error exists in the current release.
15
15
  3. **Distribution contract:** `Cargo.toml`, `package.json`, `pnpm-workspace.yaml`, release workflows, installers, and release tests. These decide supported versions, artifacts, operating systems, and install commands.
16
- 4. **Existing explanatory material:** `README.md`, `docs/*.md`, `plugins/planr/skills/`, and examples. These are migration inputs, not independent sources of truth.
16
+ 4. **Existing explanatory material:** `README.md`, `plugins/planr/skills/`, and examples. These explain and point at the site; they are not independent sources of truth.
17
17
  5. **External references:** official upstream documentation and inspected local projects may influence structure and implementation, but never define Planr behavior.
18
18
 
19
19
  If product intent is ahead of runtime, the public page must label the behavior as planned or omit it from executable instructions. If runtime is ahead of an older specification sentence, the public page documents the tested runtime and the discrepancy is added to the conflict register below.
@@ -83,7 +83,7 @@ Do not use `latest`, caret, tilde, or wildcard ranges for direct docs dependenci
83
83
 
84
84
  ### DOC-ADR-001: One first-class workspace app
85
85
 
86
- Create one English documentation application at `apps/docs`. It owns the public landing page, guides, reference, search, metadata, and deployment. Existing `docs/*.md` files remain source/reference material during migration; once a topic has a canonical site page, the old file becomes either a concise pointer or a checked redirect source, not a second maintained copy.
86
+ Create one English documentation application at `apps/docs`. It owns the public landing page, guides, reference, search, metadata, and deployment. The migration completed on 2026-07-25: the flat topic guides under `docs/` were removed once the site owned their topics, so no topic has a second maintained copy. `docs/` retains only non-site material architecture ownership, the release runbook, frozen contracts, documentation governance, and test fixtures.
87
87
 
88
88
  ### DOC-ADR-002: Next.js App Router with local MDX
89
89
 
@@ -135,10 +135,10 @@ These findings are explicit inputs to implementation and content review.
135
135
 
136
136
  | ID | Finding | Resolution in the site |
137
137
  | --- | --- | --- |
138
- | GAP-001 | `docs/CLI_REFERENCE.md` says it is generated from help but omits current commands including `project delete`, `plan list`, `map export/import`, `item show/cancel`, `link remove`, `log show/list`, `review request/list/show`, `note`, and `scrub`. | Replace the list with generated/mechanically checked reference data; retain editorial detail around it. |
139
- | GAP-002 | `docs/planr-spec/PRODUCT_SPEC.md` still calls Rust and the HTTP server open decisions, but the repository ships a Rust binary and `planr serve`. | Document current released behavior; update product specs only in a separately scoped product-spec change. |
138
+ | GAP-001 | Resolved on 2026-07-25: the flat `docs/CLI_REFERENCE.md` was removed after `/docs/reference/cli` plus the mechanically checked `/docs/reference/cli-generated` took over command coverage. | Keep command inventory generated from the binary; never reintroduce a hand-maintained command list. |
139
+ | GAP-002 | `.planr/plans/product/planr/PRODUCT_SPEC.md` still calls Rust and the HTTP server open decisions, but the repository ships a Rust binary and `planr serve`. | Document current released behavior; update product specs only in a separately scoped product-spec change. |
140
140
  | GAP-003 | Resolved on 2026-07-18: `docs/ARCHITECTURE.md` now describes Planr as one Rust binary plus wrappers/docs, with provider-neutral routing declarations owned in Core and external routing lifecycle outside Planr. | Keep architecture ownership aligned with current runtime modules and do not reintroduce routing-package ownership wording. |
141
- | GAP-004 | README leads with Homebrew, while `docs/INSTALL.md` calls GitHub Releases/repo installer canonical and Homebrew preferred day-to-day. | Say “Homebrew recommended on macOS”; GitHub Releases are the canonical artifact source; npm is the cross-package-manager native-binary path. |
141
+ | GAP-004 | Resolved on 2026-07-25: the flat install guide was removed, so `/docs/getting-started/installation` is the single install owner. | Say “Homebrew recommended on macOS”; GitHub Releases are the canonical artifact source; npm is the cross-package-manager native-binary path. |
142
142
  | GAP-005 | The CLI npm wrapper supports Node 18, while latest Fumadocs requires Node 22. | Keep separate requirement callouts: Planr CLI Node 18; docs contributors Node 22. |
143
143
  | GAP-006 | Product personas mention Gemini CLI and generic clients, but install helpers exist only for Codex, Claude Code, and Cursor. | Give the three supported clients first-class setup pages; route Gemini/opencode/other tools through clearly labeled generic CLI or stdio MCP instructions. Do not imply a native installer. |
144
144
  | GAP-007 | `planr install` uses the subcommand `claude`, while product prose often says “Claude Code”. | Use “Claude Code” in headings and `planr install claude` in commands. |
@@ -4,7 +4,7 @@ This is the canonical inventory that maps shipped public surfaces to repository
4
4
 
5
5
  ## Published route inventory
6
6
 
7
- The site currently owns 59 MDX routes. Next.js also emits the landing page and framework support routes during the production build.
7
+ The site currently owns 61 MDX routes. Next.js also emits the landing page and framework support routes during the production build.
8
8
 
9
9
  | Section | Published routes |
10
10
  | --- | --- |
@@ -12,6 +12,7 @@ The site currently owns 59 MDX routes. Next.js also emits the landing page and f
12
12
  | Getting started | `/docs/getting-started`, `/docs/getting-started/why-planr`, `/docs/getting-started/installation`, `/docs/getting-started/quickstart`, `/docs/getting-started/full-lifecycle`, `/docs/getting-started/choose-your-interface` |
13
13
  | For Agents | `/docs/agents`, `/docs/agents/quickstart`, `/docs/agents/prompt-recipes`, `/docs/agents/skills` |
14
14
  | Integrations | `/docs/integrations`, `/docs/integrations/codex`, `/docs/integrations/claude-code`, `/docs/integrations/cursor`, `/docs/integrations/generic-mcp`, `/docs/integrations/cli-only` |
15
+ | Plugins | `/docs/plugins`, `/docs/plugins/switchloom` |
15
16
  | Concepts | `/docs/concepts`, `/docs/concepts/local-first-model`, `/docs/concepts/plans-and-map`, `/docs/concepts/graph-and-readiness`, `/docs/concepts/picks-and-leases`, `/docs/concepts/evidence-and-context`, `/docs/concepts/reviews-and-approvals`, `/docs/concepts/recovery-packages-and-closure` |
16
17
  | Guides | `/docs/guides`, `/docs/guides/daily-worker-loop`, `/docs/guides/parallel-coordination`, `/docs/guides/handoff-and-resume`, `/docs/guides/review-and-fix-loops`, `/docs/guides/recover-interrupted-work`, `/docs/guides/packages-and-reuse`, `/docs/guides/recipes` |
17
18
  | Reference | `/docs/reference`, `/docs/reference/cli`, `/docs/reference/cli-generated`, `/docs/reference/mcp`, `/docs/reference/mcp-schemas-generated`, `/docs/reference/http-api`, `/docs/reference/configuration-and-storage`, `/docs/reference/data-and-status`, `/docs/reference/outputs-and-errors`, `/docs/reference/support-matrix`, `/docs/reference/maintenance` |
@@ -23,7 +24,7 @@ The site currently owns 59 MDX routes. Next.js also emits the landing page and f
23
24
 
24
25
  | Surface | Canonical owner | Published route(s) |
25
26
  | --- | --- | --- |
26
- | Promise, users, non-goals | `docs/planr-spec/PRODUCT_SPEC.md` | `/docs/getting-started/why-planr` |
27
+ | Promise, users, non-goals | `.planr/plans/product/planr/PRODUCT_SPEC.md` | `/docs/getting-started/why-planr` |
27
28
  | Install, first success, full lifecycle | manifests, installers, `src/cli.rs`, E2E tests | `/docs/getting-started/installation`, `/docs/getting-started/quickstart`, `/docs/getting-started/full-lifecycle` |
28
29
  | Agent setup, public routing, and prompt recipes | typed client/prompt contracts and installed Planr skills | `/docs/agents`, `/docs/agents/quickstart`, `/docs/agents/prompt-recipes`, `/docs/agents/skills` |
29
30
  | Local-first authority and boundaries | product/data specs, `src/storage/` | `/docs/concepts/local-first-model` |
@@ -59,6 +60,7 @@ The executable and schema sources decide exact inventory. Editorial pages explai
59
60
  | Homebrew, install script, npm, source build | release manifests, `scripts/install.sh`, npm wrapper | `/docs/getting-started/installation` |
60
61
  | Interface selection and client differences | integration descriptors and installers | `/docs/getting-started/choose-your-interface`, `/docs/integrations` |
61
62
  | Agent-led setup and autonomous handoff | typed onboarding prompts and Planr goal/loop contracts | `/docs/agents/quickstart`, `/docs/agents/prompt-recipes` |
63
+ | Optional external plugins | external lifecycle documentation and provider-neutral routing boundaries | `/docs/plugins`, `/docs/plugins/switchloom` |
62
64
  | Codex | Codex manifest, generated role/install assets | `/docs/integrations/codex` |
63
65
  | Claude Code | Claude manifest, generated role/install assets | `/docs/integrations/claude-code` |
64
66
  | Cursor | Cursor manifest, role/skill/install assets | `/docs/integrations/cursor` |
@@ -84,7 +86,7 @@ The executable and schema sources decide exact inventory. Editorial pages explai
84
86
 
85
87
  ## Audit completion checklist
86
88
 
87
- - [x] All 59 current MDX routes are explicitly inventoried.
89
+ - [x] All 61 current MDX routes are explicitly inventoried.
88
90
  - [x] Every public product, CLI, MCP, HTTP, data, client, contributor, and operations surface has a current target and canonical source owner.
89
91
  - [x] Generated CLI and MCP inventories are separated from editorial guidance and mechanically checked.
90
92
  - [x] Retired aliases are isolated in `apps/docs/redirects.mjs` and resolve to a current route.
@@ -13,13 +13,14 @@ This file records the implemented route and navigation contract. Routes are publ
13
13
  | worker/operator | `/docs/guides/daily-worker-loop` -> `/docs/guides/parallel-coordination` | Picks without collisions and records durable evidence. |
14
14
  | reviewer | `/docs/concepts/reviews-and-approvals` -> `/docs/guides/review-and-fix-loops` | Closes a complete gate or creates a bounded fix chain. |
15
15
  | client integrator | `/docs/integrations` -> one client page | Connects through a supported CLI or stdio MCP path. |
16
+ | plugin operator | `/docs/plugins` -> one plugin page | Uses an optional external lifecycle without confusing it with Planr Core ownership. |
16
17
  | API toolsmith | `/docs/reference/mcp` or `/docs/reference/http-api` | Uses the current schema and transport boundary. |
17
18
  | contributor | `/docs/contributing` -> setup/architecture/testing | Places and verifies a change without tribal knowledge. |
18
19
  | maintainer | `/docs/operations` | Can release, deploy, diagnose, roll back, and review freshness. |
19
20
 
20
21
  ## Implemented route tree
21
22
 
22
- The 59 MDX files below are the current page tree and must agree with every `meta.json` file and `COVERAGE.md`.
23
+ The 61 MDX files below are the current page tree and must agree with every `meta.json` file and `COVERAGE.md`.
23
24
 
24
25
  ```text
25
26
  /docs
@@ -39,6 +40,8 @@ The 59 MDX files below are the current page tree and must agree with every `meta
39
40
  │ ├── cursor
40
41
  │ ├── generic-mcp
41
42
  │ └── cli-only
43
+ ├── plugins
44
+ │ └── switchloom
42
45
  ├── concepts
43
46
  │ ├── local-first-model
44
47
  │ ├── plans-and-map
@@ -142,6 +145,6 @@ The inventory covers these retired route families:
142
145
  | `/docs/reference/routing-bundles` | `/docs/reference/configuration-and-storage` |
143
146
  | `/docs/reference/platform-support` | `/docs/reference/support-matrix` |
144
147
 
145
- Repository files such as `docs/INSTALL.md` are not former website URLs. They remain GitHub-readable source material and must link to the current site rather than pretending a Next.js redirect can intercept a repository path.
148
+ Repository Markdown files are not former website URLs, so a Next.js redirect can never intercept a repository path. The flat topic guides that once duplicated site pages were removed on 2026-07-25; `README.md` and the remaining repository files link to the current site instead of restating it. `docs/` now keeps only what the site does not own: `docs/ARCHITECTURE.md`, `docs/RELEASE.md`, `docs/contracts/`, `docs/documentation/`, and `docs/fixtures/`.
146
149
 
147
150
  To retire another route: add exactly one alias, choose the closest current outcome page, update this table, repair internal links, run the maintenance and browser gates, and retain the redirect while supported inbound links may exist. Never redirect an unknown path to a generic landing page merely to hide a 404.
Binary file
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "planr",
3
- "version": "1.7.0",
3
+ "version": "1.7.2",
4
4
  "description": "Local-first planning and execution coordination for coding agents.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -25,6 +25,10 @@
25
25
  "security:staged": "node scripts/hooks/block-forbidden-staged-files.mjs",
26
26
  "build:native": "cargo build --release",
27
27
  "test": "cargo test",
28
+ "verify:github-actions": "node scripts/verify-github-actions.mjs && node scripts/test-verify-github-actions.mjs",
29
+ "verify:pnpm-workspace": "node scripts/verify-pnpm-workspace.mjs",
30
+ "verify:release-eval-gate": "node scripts/test-release-eval-gate.mjs",
31
+ "verify:release-script": "node scripts/test-release-script.mjs",
28
32
  "pack:check": "npm pack --dry-run",
29
33
  "docs:dev": "pnpm --filter @planr/docs dev",
30
34
  "docs:alchemy:dev": "pnpm --filter @planr/docs alchemy:dev",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "planr",
3
3
  "description": "Skill-driven planning and execution loop for coding agents: one planr entry point, an autonomous planr-loop, and evidence-backed task graph skills powered by the planr CLI.",
4
- "version": "1.7.0",
4
+ "version": "1.7.2",
5
5
  "author": {
6
6
  "name": "instructa"
7
7
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "planr",
3
- "version": "1.7.0",
3
+ "version": "1.7.2",
4
4
  "description": "Skill-driven planning and execution loop for coding agents: one $planr entry point, an autonomous $planr-loop, and evidence-backed task graph skills powered by the planr CLI.",
5
5
  "author": {
6
6
  "name": "instructa",
@@ -6,7 +6,7 @@ skills:
6
6
  # Cost tiering: the pick packet bounds the worker's scope, so it runs on a
7
7
  # cheaper tier than the driver. Aliases track the current generation; pin a
8
8
  # full model id (e.g. claude-opus-4-8) only if you need determinism. Budget
9
- # alternative: model: sonnet. See docs/GOALS.md "Cost Tiering".
9
+ # alternative: model: sonnet. See https://planr.so/docs/agents/skills#cost-tiering.
10
10
  model: opus
11
11
  effort: medium
12
12
  ---