planr 1.7.2 → 1.8.0

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.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  ![Planr — turn chaotic agent work into a verified task graph](public/planr_banner1.webp)
4
4
 
5
- Planr is a local-first planning and execution coordination tool for coding agents. It combines reviewable Markdown plans with a dependency-aware work map so Codex, Claude Code, Cursor, generic MCP clients, and human operators can drive the same work safely — from idea to verified completion.
5
+ Planr is a local-first planning and execution coordination tool for coding agents. It combines reviewable Markdown plans with a dependency-aware work map so Codex, Claude Code, Cursor, Grok Build, generic MCP clients, and human operators can drive the same work safely — from idea to verified completion.
6
6
 
7
7
  [**View the Demo →**](https://x.com/kevinkern/status/2066957434564808884?s=20)
8
8
 
@@ -44,7 +44,16 @@ Or with the release installer:
44
44
  curl -fsSL https://raw.githubusercontent.com/instructa/planr/main/scripts/install.sh | sh
45
45
  ```
46
46
 
47
- Then initialize a project. When selected, Claude Code and Cursor also receive standalone project worker/reviewer roles; Codex workflow skills come from its plugin:
47
+ <!-- planr:linux-release-portability:start surface=README schema=1 -->
48
+ > **Linux release portability — corrected**
49
+ >
50
+ > Contract state: `status=corrected`; `affectedThrough=v1.7.2`; `correctedFrom=v1.7.3`.
51
+ > Published Linux release, installer, and npm binaries through v1.7.2 require GLIBC_2.39; macOS is unaffected.
52
+ > Starting with v1.7.3, current Linux release, installer, and npm artifacts are static-musl executables and do not require glibc.
53
+ > On an affected Linux release, build from source on the target distribution or upgrade to v1.7.3.
54
+ <!-- planr:linux-release-portability:end surface=README schema=1 -->
55
+
56
+ Then initialize a project. When selected, Claude Code and Cursor also receive standalone project worker/reviewer roles; Codex workflow skills come from its plugin. Grok Build is a separate explicit opt-in and is not included by `all`:
48
57
 
49
58
  ```bash
50
59
  planr project init "My Product" --client all
@@ -97,6 +106,23 @@ The dry-run also prints a one-click `cursor://` deeplink for user-level MCP inst
97
106
 
98
107
  </details>
99
108
 
109
+ <a id="install-grok-build"></a>
110
+ <details>
111
+ <summary><strong>Grok Build</strong></summary>
112
+
113
+ Preview, install, and inspect the repository-local integration:
114
+
115
+ ```bash
116
+ planr install grok --dry-run
117
+ planr install grok
118
+ planr doctor --client grok --json
119
+ grok inspect --json
120
+ ```
121
+
122
+ Planr writes portable `.grok/config.toml` MCP configuration plus native `.grok/agents/` and `.grok/skills/` assets. It writes no Grok plugin, hooks, xAI credentials, model setting, or provider runtime dependency. Live authenticated verification is maintainer-local only and never runs in CI. See the [Grok Build guide](https://planr.so/docs/integrations/grok-build).
123
+
124
+ </details>
125
+
100
126
  <a id="install-plugin-opencode"></a>
101
127
  <details>
102
128
  <summary><strong>opencode</strong></summary>
@@ -174,6 +200,7 @@ The watcher is likewise a human-only observer. It defaults to the condensed diag
174
200
 
175
201
  ## What's new
176
202
 
203
+ - **1.8.0 — First-class Grok Build integration:** Added an explicit repository opt-in that installs portable project MCP configuration plus native Grok agents and all ten Planr workflow skills. The integration writes no plugin, hooks, model setting, xAI credentials, or provider runtime dependency; authenticated verification remains maintainer-local and never runs in CI. See the [Grok Build guide](https://planr.so/docs/integrations/grok-build) and [1.8.0 changelog](CHANGELOG.md#180---2026-07-27).
177
204
  - **1.7.2 — Reproducible 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
205
  - **1.7.1 — Leaner 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
206
  - **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).
@@ -193,7 +220,7 @@ Full documentation lives at [planr.so/docs](https://planr.so/docs).
193
220
  - [Plugins and Model Routing](https://planr.so/docs/plugins) · [Recipes](https://planr.so/docs/guides/recipes)
194
221
  - [Integrations and Host Hooks](https://planr.so/docs/integrations)
195
222
  - [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)
223
+ - [Codex](https://planr.so/docs/integrations/codex) · [Claude Code](https://planr.so/docs/integrations/claude-code) · [Cursor](https://planr.so/docs/integrations/cursor) · [Grok Build](https://planr.so/docs/integrations/grok-build)
197
224
  - [Daily Worker Loop](https://planr.so/docs/guides/daily-worker-loop)
198
225
  - [Task Graph Model](https://planr.so/docs/concepts/graph-and-readiness)
199
226
  - [Architecture](https://planr.so/docs/contributing/architecture)
@@ -19,7 +19,9 @@ Planr V1 is a single Rust binary with explicit module ownership. The crate stays
19
19
  - `src/main.rs`: process composition root. Owns top-level module wiring, process startup, database opening, error printing, and dispatch into `App`.
20
20
  - `src/cli.rs`: CLI contract boundary. Owns `clap` command definitions, option parsing types, value enums, and command DTOs used by app dispatch.
21
21
  - `src/app/mod.rs`: application composition boundary. Owns the `App` runtime state, top-level dispatch, shared app-local row helpers, and app submodule wiring.
22
- - `src/app/commands.rs`: CLI use-case orchestration. Owns project, plan, map, item, link, pick, approval, log, close, review, context, search, doctor, and install command handlers.
22
+ - `src/app/commands.rs`: general CLI use-case orchestration. Owns project, plan, map, item, link, pick, approval, log, close, review, context, search, doctor, and shared install command handlers.
23
+ - `src/app/grok.rs`: Grok-specific install orchestration. Owns safe project TOML reconciliation, repository workflow writes, and the explicit no-hooks result.
24
+ - `src/app/prompts.rs`: CLI, MCP, and HTTP prompt output. Host routing prompt composition remains in `src/app/agents.rs`.
23
25
  - `src/app/flow.rs`: compound work-flow boundary. Owns evidence log writing (with heartbeat folding), the close transition core, review-request creation, the pick work packet, and the `done` command that chains them for CLI, HTTP, and MCP surfaces.
24
26
  - `src/app/git_review.rs`: Git and PR review evidence boundary. Owns worktree detection, scoped changed-file provenance, PR URL context, and dirty-worktree safety projections.
25
27
  - `src/app/mcp.rs`: MCP stdio boundary. Owns MCP protocol request routing, tool calls, resource reads, and prompt responses.
@@ -46,7 +48,8 @@ Planr V1 is a single Rust binary with explicit module ownership. The crate stays
46
48
  - `src/route_audit.rs`: provider-neutral run-observation contract. Owns strict requested/resolved/effective route stages, model/effort/fork enforcement confidence, transition provenance, policy/binding versions, and per-dimension metering confidence. It rejects requested-only values in the effective stage rather than inferring host execution.
47
49
  - `src/app/agents.rs`: routing application boundary. Owns the `agents` and `item route` command handlers, the shared `*_value` JSON shapes reused by MCP, per-item route facts assembly, and registry-aware role content selection for installs.
48
50
  - `src/app/agents_init.rs`: registry bootstrap boundary. Owns `planr agents init` — the static cost-tiering scaffold and, per the agent-pool plan, the flag-spec builder and interactive wizard.
49
- - `src/integrations.rs`: agent-client integration descriptor boundary. Owns Codex, Claude Code, Cursor, MCP install metadata, MCP tool schemas, MCP resources, and MCP text response wrapping.
51
+ - `src/integrations.rs`: shared agent-client descriptor boundary. Owns MCP install metadata, tool schemas, resources, and text response wrapping.
52
+ - `src/integrations/grok.rs`: document-preserving Grok project MCP configuration and conflict policy.
50
53
  - `src/rolefiles.rs`: static host workflow roles and Cursor skill payloads. It does not select or pin models; externally generated routing artifacts stay outside Planr ownership.
51
54
  - `src/util.rs`: small CLI-boundary utilities. Owns ids, timestamps, path helpers, output formatting, and safe file writes.
52
55
 
package/docs/RELEASE.md CHANGED
@@ -12,18 +12,26 @@ The v1 repository-owned public install order is:
12
12
 
13
13
  Published npm versions bundle platform-native binaries; see <https://planr.so/docs/operations/release>.
14
14
 
15
- ## Version Bump
16
-
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.
15
+ ## Candidate and publication
16
+
17
+ `scripts/prepare-release-candidate.sh` is the only supported version-transition
18
+ path. Run it from clean, reviewed source on a release branch. It synchronizes
19
+ `Cargo.toml`, `Cargo.lock`, `package.json`, both plugin manifests under
20
+ `plugins/planr/`, `.cursor-plugin/plugin.json`, and the generated CLI/MCP
21
+ references. It never stages, commits, tags, pushes, or publishes. Commit those
22
+ changes with the changelog and any release-contract transition, then run the
23
+ full candidate verification and independent review on that exact commit.
24
+
25
+ `scripts/release.sh` is the only supported publication path. It runs on clean
26
+ `main`, requires every version and generated reference to already match the
27
+ requested version, reruns the local eval and deterministic gates, and rejects
28
+ any command that changes the reviewed source. Only then does it create and push
29
+ the annotated tag. Editing manifests by hand or publishing an unprepared commit
30
+ skips this ownership boundary.
31
+
32
+ ```bash
33
+ scripts/prepare-release-candidate.sh 1.2.0
34
+ ```
27
35
 
28
36
  ```bash
29
37
  export PLANR_RELEASE_EVAL_SUITE="$HOME/projects/planr-evals/suites/planr-lean-skills-dogfood.suite.json"
@@ -48,23 +56,28 @@ fixture tree; release verification does not read ignored files from the Planr
48
56
  checkout.
49
57
 
50
58
  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,
59
+ `node scripts/verify-release-eval-receipt.mjs --print-candidate-revision`. The
60
+ revision hashes every tracked or non-ignored release-source file, including its
61
+ normalized executable mode, so changing any candidate source invalidates the
62
+ receipt. The separate evaluated-subject revision binds the stored model run to
63
+ the five workflow files the benchmark evaluates; changing either the exact
64
+ release source or that evaluated subset invalidates the receipt. At release time the candidate binary canonicalizes the explicitly supplied suite,
53
65
  requires a Planr-validated effective route observation (host report, telemetry
54
66
  receipt, process exit, or local observation), recomputes the comparison from its
55
67
  stored baseline/candidate/policy identities, and gates that fresh result.
56
68
  Requested-only values and policy or binding metadata are never
57
69
  effective-treatment proof.
58
70
 
59
- The script enforces, in order:
71
+ The two scripts enforce, in order:
60
72
 
61
- 1. branch is `main`, worktree is clean, `CHANGELOG.md` already has a committed `## [x.y.z]` section, and the tag does not exist;
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.
73
+ 1. candidate preparation starts from a clean worktree and a nonexistent tag;
74
+ 2. the candidate version is written into all synchronized manifests;
75
+ 3. frozen workspace synchronization cannot change `pnpm-lock.yaml`;
76
+ 4. the candidate build synchronizes `Cargo.lock`, then regenerates and strictly checks both references without Git mutation;
77
+ 5. candidate source, changelog, contracts, and generated files are committed and independently reviewed before publication approval;
78
+ 6. publication requires clean `main`, the exact prepared versions/references, a committed changelog section, and no existing tag;
79
+ 7. the candidate binary validates the sanitized receipt and recomputed comparison, then deterministic tests, package, and security gates run without changing source;
80
+ 8. publication creates and pushes only the annotated `vx.y.z` tag for that reviewed commit.
68
81
 
69
82
  Two independent gates back the script:
70
83
 
@@ -96,8 +109,19 @@ Only `-alpha.N`, `-beta.N`, and `-rc.N` suffixes are accepted; everything else t
96
109
 
97
110
  Pushing a tag `vX.Y.Z` runs `.github/workflows/release.yml`:
98
111
 
112
+ <!-- planr:linux-release-portability:start surface=maintainerRelease schema=1 -->
113
+ > **Linux release portability — corrected**
114
+ >
115
+ > Contract state: `status=corrected`; `affectedThrough=v1.7.2`; `correctedFrom=v1.7.3`.
116
+ > Published Linux release, installer, and npm binaries through v1.7.2 require GLIBC_2.39; macOS is unaffected.
117
+ > Starting with v1.7.3, current Linux release, installer, and npm artifacts are static-musl executables and do not require glibc.
118
+ > On an affected Linux release, build from source on the target distribution or upgrade to v1.7.3.
119
+ <!-- planr:linux-release-portability:end surface=maintainerRelease schema=1 -->
120
+
121
+ When this contract changes, update `docs/contracts/LINUX_RELEASE_PORTABILITY.json`, run `pnpm docs:sync-linux-portability`, and commit every synchronized notice before running the release gates.
122
+
99
123
  1. `create-release` verifies the tag against `Cargo.toml`, all distribution manifests, and the changelog section, then creates a draft GitHub Release.
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.
124
+ 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. Future Linux candidates use native x86_64/arm64 GitHub runners and the same digest-pinned Rust 1.90.0 Alpine/musl image. Before upload, the extracted tarball must pass embedded checksums, static ELF checks (no interpreter, shared-library dependency, or glibc symbol), a fresh project/plan/map/pick/done/export lifecycle in digest-pinned Alpine 3.20.8 with networking disabled, and exact-byte npm wrapper execution.
101
125
  3. `finalize` downloads all uploaded assets, writes one aggregated `SHA256SUMS` covering every tarball, uploads it, and publishes the release.
102
126
  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>.
103
127
  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`).
@@ -122,6 +146,11 @@ scripts/security-local.sh
122
146
  ```
123
147
 
124
148
  The external consumer E2E suite must pass when available on the release machine.
149
+ Pull-request CI separately builds both Linux architectures through the canonical
150
+ containerized release script, runs the full portability contract without
151
+ secrets or publication permissions, and aggregates checksums for the exact two
152
+ candidate tarballs. A same-runner `--version` smoke is useful architecture
153
+ evidence but is not Linux compatibility proof by itself.
125
154
 
126
155
  ## Build Artifact
127
156
 
@@ -0,0 +1,139 @@
1
+ # Grok Build Integration Contract v1
2
+
3
+ Status: frozen for implementation
4
+
5
+ Frozen: 2026-07-27
6
+
7
+ Upstream source probe: `xai-org/grok-build` commit
8
+ `b41c75a578f98bddbd326ab02cd53618451d97ee` (2026-07-26)
9
+
10
+ This contract is the implementation boundary for first-class Grok Build support.
11
+ It reconciles the public xAI documentation, the locally cloned upstream source,
12
+ and Planr's local-first integration rules. Live authenticated verification is a
13
+ separate maintainer-local release gate; it never runs in CI.
14
+
15
+ ## Frozen artifact and discovery policy
16
+
17
+ `planr install grok` owns exactly the repository paths in the executable
18
+ contract below. Workflow files are copied byte-for-byte from the canonical
19
+ `plugins/planr` sources. There is no second Grok-specific workflow body.
20
+
21
+ Planr does **not** emit `.grok/plugins/planr` or a Grok plugin manifest in v1.
22
+ Current Grok source discovers project plugins from `.grok/plugins`, but project
23
+ plugins default to disabled and project `.grok/config.toml` does not merge
24
+ `[plugins].enabled`. A repository-local plugin would therefore require
25
+ user-level enablement and would not satisfy one-command project setup. Native
26
+ `.grok/skills/<name>/` and `.grok/agents/*.md` are documented, directly
27
+ discovered project paths and do not depend on Claude compatibility scanners.
28
+
29
+ Grok's current manifest lookup is still relevant for troubleshooting: a plugin
30
+ root checks `plugin.json`, then `.grok-plugin/plugin.json`, then
31
+ `.claude-plugin/plugin.json`, and finally convention-based component folders.
32
+ That behavior is observed upstream but deliberately not used by Planr v1.
33
+
34
+ ```json
35
+ {
36
+ "contract_version": 1,
37
+ "upstream_revision": "b41c75a578f98bddbd326ab02cd53618451d97ee",
38
+ "artifacts": [
39
+ {"target": ".grok/config.toml", "source": "generated:grok_project_config", "kind": "mcp"},
40
+ {"target": ".grok/agents/planr-reviewer.md", "source": "plugins/planr/agents/planr-reviewer.md", "kind": "agent"},
41
+ {"target": ".grok/agents/planr-worker.md", "source": "plugins/planr/agents/planr-worker.md", "kind": "agent"},
42
+ {"target": ".grok/skills/planr-goal/SKILL.md", "source": "plugins/planr/skills/planr-goal/SKILL.md", "kind": "skill"},
43
+ {"target": ".grok/skills/planr-loop/SKILL.md", "source": "plugins/planr/skills/planr-loop/SKILL.md", "kind": "skill"},
44
+ {"target": ".grok/skills/planr-loop/agents/planr-reviewer.md", "source": "plugins/planr/skills/planr-loop/agents/planr-reviewer.md", "kind": "skill_asset"},
45
+ {"target": ".grok/skills/planr-loop/agents/planr-worker.md", "source": "plugins/planr/skills/planr-loop/agents/planr-worker.md", "kind": "skill_asset"},
46
+ {"target": ".grok/skills/planr-loop/references/host-dispatch.md", "source": "plugins/planr/skills/planr-loop/references/host-dispatch.md", "kind": "skill_asset"},
47
+ {"target": ".grok/skills/planr-loop/references/recovery-and-verification.md", "source": "plugins/planr/skills/planr-loop/references/recovery-and-verification.md", "kind": "skill_asset"},
48
+ {"target": ".grok/skills/planr-plan/SKILL.md", "source": "plugins/planr/skills/planr-plan/SKILL.md", "kind": "skill"},
49
+ {"target": ".grok/skills/planr-review/SKILL.md", "source": "plugins/planr/skills/planr-review/SKILL.md", "kind": "skill"},
50
+ {"target": ".grok/skills/planr-status/SKILL.md", "source": "plugins/planr/skills/planr-status/SKILL.md", "kind": "skill"},
51
+ {"target": ".grok/skills/planr-summary/SKILL.md", "source": "plugins/planr/skills/planr-summary/SKILL.md", "kind": "skill"},
52
+ {"target": ".grok/skills/planr-task-graph/SKILL.md", "source": "plugins/planr/skills/planr-task-graph/SKILL.md", "kind": "skill"},
53
+ {"target": ".grok/skills/planr-verify-web/SKILL.md", "source": "plugins/planr/skills/planr-verify-web/SKILL.md", "kind": "skill"},
54
+ {"target": ".grok/skills/planr-work/SKILL.md", "source": "plugins/planr/skills/planr-work/SKILL.md", "kind": "skill"},
55
+ {"target": ".grok/skills/planr/SKILL.md", "source": "plugins/planr/skills/planr/SKILL.md", "kind": "skill"}
56
+ ],
57
+ "mcp": {
58
+ "table": "mcp_servers.planr",
59
+ "command": "planr",
60
+ "args": ["mcp"],
61
+ "enabled": true,
62
+ "startup_timeout_sec": 30,
63
+ "tool_timeout_sec": 6000,
64
+ "env": {"PLANR_MCP_CLIENT": "grok"},
65
+ "forbidden_fields": ["XAI_API_KEY", "api_key", "auth", "model", "headers", "url"]
66
+ },
67
+ "plugin": {
68
+ "emitted": false,
69
+ "project_root": ".grok/plugins",
70
+ "manifest_precedence": ["plugin.json", ".grok-plugin/plugin.json", ".claude-plugin/plugin.json", "convention"],
71
+ "project_default": "disabled",
72
+ "project_config_enabled_merged": false
73
+ },
74
+ "hooks": {"supported": false, "artifacts": []},
75
+ "client_all_includes_grok": false,
76
+ "headless": {"command": "grok --no-auto-update -p \"<prompt>\" --output-format json"}
77
+ }
78
+ ```
79
+
80
+ The generated `.grok/config.toml` table is therefore:
81
+
82
+ ```toml
83
+ [mcp_servers.planr]
84
+ command = "planr"
85
+ args = ["mcp"]
86
+ enabled = true
87
+ startup_timeout_sec = 30
88
+ tool_timeout_sec = 6000
89
+ env = { PLANR_MCP_CLIENT = "grok" }
90
+ ```
91
+
92
+ `PLANR_MCP_CLIENT=grok` is a narrow adapter marker applied by Grok's MCP
93
+ launcher to the Planr child process. Planr may use the exact value as an
94
+ advisory observed-client signal. It is not authentication, authorization, or a
95
+ general worker identity. Ambient `GROK_*` variables are not accepted as the v1
96
+ signal because the probed Grok MCP launcher does not inject a stable one.
97
+
98
+ ## Merge and overwrite policy
99
+
100
+ - Missing `.grok/config.toml`: create it with only the Planr MCP table.
101
+ - Existing valid config: perform a document-preserving TOML merge. Preserve
102
+ every foreign table, key, comment, and order; only `mcp_servers.planr` is
103
+ owned by Planr.
104
+ - Existing different `mcp_servers.planr`: without `--force`, preserve it and
105
+ report a conflict; with `--force`, replace only that table.
106
+ - Malformed config: fail with a path-and-parse diagnostic and write nothing,
107
+ including under `--force`.
108
+ - Workflow target missing: write the canonical source. Existing identical
109
+ content is unchanged. Existing different content is preserved without
110
+ `--force` and replaced from the canonical source with `--force`.
111
+ - `--no-mcp` omits `.grok/config.toml` reconciliation. `--no-hooks` is accepted
112
+ for CLI parity but changes no Grok paths because v1 installs no hooks.
113
+ - Dry-run enumerates the same paths the corresponding write would reconcile.
114
+
115
+ ## Security and CI boundary
116
+
117
+ Repository artifacts contain no xAI credential, token, auth-file path, model
118
+ selection, endpoint, or absolute maintainer path. Planr never reads or copies
119
+ `~/.grok`, `$GROK_HOME`, session data, `auth.json`, or
120
+ `mcp_credentials.json` while installing.
121
+
122
+ GitHub Actions and release workflows must not install or invoke Grok, reference
123
+ `XAI_API_KEY`, gate on an xAI secret, or perform live inference. Deterministic
124
+ tests parse and compare generated files without Grok installed. Maintainer-local
125
+ release verification may use an existing login, but recorded evidence is
126
+ limited to redacted discovery/origin, diagnostics, and the disposable Planr
127
+ project identity.
128
+
129
+ The supported inspection and headless syntax is `grok inspect --json` and
130
+ `grok --no-auto-update -p "<prompt>" --output-format json`; `grok exec` is not part of this contract.
131
+
132
+ ## Sources
133
+
134
+ - https://docs.x.ai/build/features/skills-plugins-marketplaces
135
+ - https://docs.x.ai/build/settings
136
+ - https://docs.x.ai/build/features/mcp-servers
137
+ - https://docs.x.ai/build/cli/reference
138
+ - https://docs.x.ai/build/cli/headless-scripting
139
+ - https://github.com/xai-org/grok-build/tree/b41c75a578f98bddbd326ab02cd53618451d97ee
@@ -0,0 +1,9 @@
1
+ {
2
+ "affectedReleases": [
3
+ "1.7.2"
4
+ ],
5
+ "affectedThrough": "1.7.2",
6
+ "correctedFrom": "1.7.3",
7
+ "noticeSchema": 1,
8
+ "status": "corrected"
9
+ }
@@ -4,14 +4,14 @@ 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 61 MDX routes. Next.js also emits the landing page and framework support routes during the production build.
7
+ The site currently owns 62 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
  | --- | --- |
11
11
  | Documentation | `/docs` |
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
- | Integrations | `/docs/integrations`, `/docs/integrations/codex`, `/docs/integrations/claude-code`, `/docs/integrations/cursor`, `/docs/integrations/generic-mcp`, `/docs/integrations/cli-only` |
14
+ | Integrations | `/docs/integrations`, `/docs/integrations/codex`, `/docs/integrations/claude-code`, `/docs/integrations/cursor`, `/docs/integrations/grok-build`, `/docs/integrations/generic-mcp`, `/docs/integrations/cli-only` |
15
15
  | Plugins | `/docs/plugins`, `/docs/plugins/switchloom` |
16
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` |
17
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` |
@@ -64,6 +64,7 @@ The executable and schema sources decide exact inventory. Editorial pages explai
64
64
  | Codex | Codex manifest, generated role/install assets | `/docs/integrations/codex` |
65
65
  | Claude Code | Claude manifest, generated role/install assets | `/docs/integrations/claude-code` |
66
66
  | Cursor | Cursor manifest, role/skill/install assets | `/docs/integrations/cursor` |
67
+ | Grok Build | Native role/skill assets and portable project MCP config | `/docs/integrations/grok-build` |
67
68
  | Generic stdio MCP | MCP server and fixture | `/docs/integrations/generic-mcp` |
68
69
  | CLI-only and non-first-class hosts | prompt output and CLI | `/docs/integrations/cli-only` |
69
70
  | Privacy, secret handling, localhost boundary | safety spec, `src/app/http.rs`, scrub behavior | `/docs/contributing/security-and-privacy` |
@@ -86,7 +87,7 @@ The executable and schema sources decide exact inventory. Editorial pages explai
86
87
 
87
88
  ## Audit completion checklist
88
89
 
89
- - [x] All 61 current MDX routes are explicitly inventoried.
90
+ - [x] All 62 current MDX routes are explicitly inventoried.
90
91
  - [x] Every public product, CLI, MCP, HTTP, data, client, contributor, and operations surface has a current target and canonical source owner.
91
92
  - [x] Generated CLI and MCP inventories are separated from editorial guidance and mechanically checked.
92
93
  - [x] Retired aliases are isolated in `apps/docs/redirects.mjs` and resolve to a current route.
@@ -20,7 +20,7 @@ This file records the implemented route and navigation contract. Routes are publ
20
20
 
21
21
  ## Implemented route tree
22
22
 
23
- The 61 MDX files below are the current page tree and must agree with every `meta.json` file and `COVERAGE.md`.
23
+ The 62 MDX files below are the current page tree and must agree with every `meta.json` file and `COVERAGE.md`.
24
24
 
25
25
  ```text
26
26
  /docs
@@ -38,6 +38,7 @@ The 61 MDX files below are the current page tree and must agree with every `meta
38
38
  │ ├── codex
39
39
  │ ├── claude-code
40
40
  │ ├── cursor
41
+ │ ├── grok-build
41
42
  │ ├── generic-mcp
42
43
  │ └── cli-only
43
44
  ├── plugins
@@ -92,16 +92,23 @@
92
92
  "\"mcpServers\"",
93
93
  "\"planr\"",
94
94
  "cursor://anysphere.cursor-deeplink/mcp/install?name=planr&config="
95
+ ],
96
+ "grok": [
97
+ "[mcp_servers.planr]",
98
+ "args = [\"mcp\"]",
99
+ "PLANR_MCP_CLIENT = \"grok\"",
100
+ ".grok/skills/planr/SKILL.md",
101
+ "hooks: unsupported/no-op"
95
102
  ]
96
103
  },
97
104
  "cli_reference_commands": [
98
- "planr install codex|claude|cursor",
105
+ "planr install codex|claude|cursor|grok",
99
106
  "planr prompt cli|mcp|http",
100
107
  "planr prompt routing",
101
108
  "planr agents init",
102
109
  "planr agents init --profile|--skill|--route|--default-route|--interactive",
103
110
  "planr prime",
104
- "planr install codex|claude|cursor [--dry-run] [--no-mcp] [--force] [--no-hooks]",
111
+ "planr install codex|claude|cursor|grok [--dry-run] [--no-mcp] [--force] [--no-hooks]",
105
112
  "planr mcp",
106
113
  "planr review annotate",
107
114
  "planr review ingest",
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.2",
3
+ "version": "1.8.0",
4
4
  "description": "Local-first planning and execution coordination for coding agents.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -47,6 +47,7 @@
47
47
  "docs:verify-agent-landing": "pnpm --filter @planr/docs verify:agent-landing",
48
48
  "docs:verify-concepts": "cargo build --bin planr && pnpm --filter @planr/docs verify:concepts",
49
49
  "docs:verify-maintenance": "pnpm --filter @planr/docs verify:maintenance",
50
+ "docs:sync-linux-portability": "pnpm --filter @planr/docs sync:linux-portability",
50
51
  "docs:verify-deployment": "pnpm --filter @planr/docs verify:deployment",
51
52
  "docs:verify-release": "pnpm --filter @planr/docs verify:release",
52
53
  "docs:verify-release-live": "pnpm --filter @planr/docs verify:release-live",
@@ -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.2",
4
+ "version": "1.8.0",
5
5
  "author": {
6
6
  "name": "instructa"
7
7
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "planr",
3
- "version": "1.7.2",
3
+ "version": "1.8.0",
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",