planr 1.6.0 → 1.7.1

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 (63) hide show
  1. package/README.md +46 -22
  2. package/docs/ARCHITECTURE.md +12 -1
  3. package/docs/RELEASE.md +37 -7
  4. package/docs/SWITCHLOOM_COMPATIBILITY.md +46 -0
  5. package/docs/contracts/EVAL_CONTRACT_V1.md +2072 -0
  6. package/docs/documentation/CONTRACT.md +7 -7
  7. package/docs/documentation/COVERAGE.md +5 -3
  8. package/docs/documentation/INFORMATION_ARCHITECTURE.md +5 -2
  9. package/docs/fixtures/mcp-contract.json +12 -0
  10. package/npm/native/darwin-arm64/planr +0 -0
  11. package/npm/native/darwin-x86_64/planr +0 -0
  12. package/npm/native/linux-arm64/planr +0 -0
  13. package/npm/native/linux-x86_64/planr +0 -0
  14. package/package.json +5 -1
  15. package/plugins/planr/.claude-plugin/plugin.json +1 -1
  16. package/plugins/planr/.codex-plugin/plugin.json +1 -1
  17. package/plugins/planr/agents/planr-worker.md +1 -1
  18. package/plugins/planr/skills/planr-goal/SKILL.md +21 -49
  19. package/plugins/planr/skills/planr-loop/SKILL.md +28 -94
  20. package/plugins/planr/skills/planr-loop/agents/planr-worker.md +1 -1
  21. package/plugins/planr/skills/planr-loop/references/host-dispatch.md +10 -0
  22. package/plugins/planr/skills/planr-loop/references/recovery-and-verification.md +24 -0
  23. package/plugins/planr/skills/planr-task-graph/SKILL.md +21 -190
  24. package/docs/CI.md +0 -54
  25. package/docs/CLAUDE_CODE.md +0 -52
  26. package/docs/CLI_REFERENCE.md +0 -160
  27. package/docs/CODEX.md +0 -56
  28. package/docs/CURSOR.md +0 -114
  29. package/docs/EXAMPLE_WEBAPP.md +0 -103
  30. package/docs/GOALS.md +0 -175
  31. package/docs/HANDOFFS_AND_STORIES.md +0 -121
  32. package/docs/HOOKS.md +0 -34
  33. package/docs/IMPORT.md +0 -21
  34. package/docs/INSTALL.md +0 -115
  35. package/docs/MCP_CONTRACT.md +0 -73
  36. package/docs/MCP_GUIDE.md +0 -40
  37. package/docs/MODEL_ROUTING.md +0 -33
  38. package/docs/NPM.md +0 -40
  39. package/docs/OPERATING_MODEL.md +0 -250
  40. package/docs/ROUTING_BUNDLES.md +0 -15
  41. package/docs/SECURITY.md +0 -8
  42. package/docs/SKILLS.md +0 -261
  43. package/docs/TASK_GRAPH_MODEL.md +0 -272
  44. package/docs/TESTING.md +0 -87
  45. package/docs/TROUBLESHOOTING.md +0 -30
  46. package/docs/planr-spec/ADRS.md +0 -160
  47. package/docs/planr-spec/AI_SPEC.md +0 -138
  48. package/docs/planr-spec/ANALYTICS_OBSERVABILITY_SPEC.md +0 -124
  49. package/docs/planr-spec/API_AND_DATA_MODEL.md +0 -517
  50. package/docs/planr-spec/BACKEND_IMPLEMENTATION_SPEC.md +0 -178
  51. package/docs/planr-spec/CLIENT_IMPLEMENTATION_SPEC.md +0 -119
  52. package/docs/planr-spec/DESIGN_SYSTEM_SPEC.md +0 -102
  53. package/docs/planr-spec/PRODUCT_SPEC.md +0 -193
  54. package/docs/planr-spec/QA_ACCEPTANCE_TESTS.md +0 -146
  55. package/docs/planr-spec/README.md +0 -67
  56. package/docs/planr-spec/REFERENCES.md +0 -29
  57. package/docs/planr-spec/RELEASE_READINESS.md +0 -95
  58. package/docs/planr-spec/SAFETY_PRIVACY_SECURITY.md +0 -169
  59. package/docs/planr-spec/TASKS.md +0 -932
  60. package/docs/planr-spec/TECH_ARCHITECTURE.md +0 -143
  61. package/docs/planr-spec/UX_FLOWS.md +0 -235
  62. package/docs/release-candidates/planr-v1.5.2.md +0 -164
  63. /package/docs/{planr-spec → contracts}/V1_1_DIFFERENTIATION_CONTRACT.md +0 -0
@@ -1,143 +0,0 @@
1
- # Technical Architecture
2
-
3
- ## Architecture Goals
4
-
5
- - REQ-ARCH-001: Keep item state, picks, worker runtime state, approval gates, links, log, reviews, and events in one local SQLite source of truth.
6
- - REQ-ARCH-002: Keep rich product and build plan context in repo-local Markdown files that remain useful without Planr installed.
7
- - REQ-ARCH-003: Support CLI, MCP, and optional HTTP/SSE as lenses over the same core engine.
8
- - REQ-ARCH-004: Make Codex, Claude Code, Cursor, and generic MCP clients first-class integration targets.
9
- - REQ-ARCH-005: Avoid provider-specific logic in the core graph engine.
10
-
11
- ## System Context Diagram
12
-
13
- ```text
14
- Developer
15
- -> planr CLI
16
- -> Core engine
17
- -> SQLite graph database
18
- -> .planr Markdown project
19
- -> Git repository
20
-
21
- Agent clients
22
- -> MCP stdio / MCP HTTP
23
- -> Core engine
24
- -> SQLite graph database
25
- -> .planr Markdown project
26
-
27
- Optional dashboard
28
- -> Local HTTP/SSE server
29
- -> Core engine
30
- ```
31
-
32
- ## Component Boundaries
33
-
34
- - `core`: map graph operations, state machine, item readiness, worker runtime state, approval gates, log, reviews, contexts, search.
35
- - `storage`: SQLite schema, schema upgrades, transactions, FTS indexes.
36
- - `planpack`: `.planr` project pack, plan parsing, Markdown frontmatter, review artifacts.
37
- - `cli`: user commands and deterministic output.
38
- - `mcp`: tools, resources, prompts, capability negotiation.
39
- - `server`: optional local REST/SSE API.
40
- - `agents`: integration helpers for Codex, Claude Code, Cursor, and generic clients.
41
- - `git`: worktree, branch, diff, and changed-file log.
42
- - `recovery`: stale-pick detection, timeout handling, retry policy, and manual condition reporting.
43
- - `review_workspace`: local browser review HTML and workspace JSON projection.
44
- - `packages`: reusable JSON export/import packages with plan snapshots, logs, contexts, and review artifacts.
45
-
46
- ## Client Architecture
47
-
48
- - CLI is the primary client and must be scriptable.
49
- - TUI/dashboard are optional clients over the same API.
50
- - MCP clients must receive concise, structured responses optimized for LLM context.
51
- - All client layers must call core services, not mutate database or Markdown directly.
52
-
53
- ## Backend Architecture
54
-
55
- V1 is a local backend packaged into the CLI binary:
56
-
57
- - SQLite database at `.planr/planr.sqlite` by default.
58
- - WAL mode enabled for concurrent readers and serialized writers.
59
- - Local service optional for dashboards and long-running agent orchestration.
60
- - Local review workspace is served from the same localhost HTTP boundary as the REST/SSE API.
61
- - No cloud backend in V1.
62
-
63
- ## Data Architecture
64
-
65
- - Map state, worker heartbeats, progress, stale ownership data, and approval gates: SQLite.
66
- - Rich product plans, build plans, and project context: `.planr/*.md`.
67
- - Live status summaries: SQLite.
68
- - Search: SQLite FTS over items, contexts, plan metadata/frontmatter/headings, logs, and review summaries.
69
- - Large artifacts: paths and metadata by default; inline content only for small explicitly provided artifacts.
70
-
71
- ## AI Architecture
72
-
73
- Planr does not call model providers by default. It guides external agents through:
74
-
75
- - MCP tools for map, plan, log, and review operations.
76
- - MCP prompts for `plan`, `work`, `review`, `map`, and `summary` workflows.
77
- - Client-specific install snippets for Codex, Claude Code, and Cursor.
78
- - Optional runner wrappers for local Codex/Claude/Cursor CLIs when explicitly configured.
79
-
80
- ## Auth And Identity
81
-
82
- - V1 local mode uses OS user access and file permissions.
83
- - Worker identity is an explicit `worker_id` string, not an auth boundary.
84
- - HTTP server binds to localhost by default.
85
- - Remote HTTP mode is post-V1 and must require authentication.
86
-
87
- ## Integrations
88
-
89
- - Codex: CLI instructions, MCP registration, optional `codex exec` runner, optional `codex review` integration.
90
- - Claude Code: `.mcp.json` or CLI-based MCP registration guidance.
91
- - Cursor: `.cursor/mcp.json` project config and global config guidance.
92
- - Generic MCP: stdio first; streamable HTTP optional.
93
- - Git: worktree isolation and scoped diff log.
94
-
95
- ## Security Architecture
96
-
97
- - No shell hooks by default.
98
- - Any command runner must show command, cwd, environment policy, and worker id.
99
- - Secrets must not be stored in database, plans, logs, or analytics.
100
- - MCP tools that mutate state must be separated from read-only resources/prompts.
101
- - Destructive graph operations require preview or explicit flags.
102
-
103
- ## Privacy Architecture
104
-
105
- - Local-only by default.
106
- - No provider telemetry by default.
107
- - No content logging by default.
108
- - Export and delete commands must remove Planr database state and `.planr` artifacts when requested.
109
-
110
- ## Observability
111
-
112
- - Local structured event log in SQLite.
113
- - Optional JSONL debug log with content scrubbing.
114
- - `planr doctor` for installation, database, MCP, and client integration checks.
115
- - `planr trace item <id>` for item lifecycle debugging.
116
-
117
- ## Deployment Environments
118
-
119
- - Local development: source checkout and debug binary.
120
- - Local production: installed binary via package manager or release asset.
121
- - CI: headless CLI mode with explicit db/path.
122
- - Hosted/team: out of scope for V1.
123
-
124
- ## Failure Modes
125
-
126
- - Database locked: retry bounded writes, then return actionable diagnostic.
127
- - Corrupt Markdown plan: preserve file, mark parse status degraded, keep map usable.
128
- - Missing MCP client support: print manual CLI instructions.
129
- - Agent run interrupted: keep item picked/running with heartbeat timeout and release/re-pick command.
130
- - Recovery sweep interrupted: preview is non-mutating; apply mutates only listed recoverable work and records events.
131
- - Review fails: create fix item chain instead of closing the parent.
132
- - Package import cancelled: preview leaves database and `.planr` files unchanged.
133
-
134
- ## Scalability Assumptions
135
-
136
- - V1 target: hundreds of projects, tens of thousands of items, thousands of plan files per machine.
137
- - SQLite and FTS are sufficient for V1.
138
- - Remote multi-user concurrency is post-V1.
139
-
140
- ## Open Technical Decisions
141
-
142
- - OD-ARCH-001: Whether to implement worktree management in core V1 or as an extension.
143
- - OD-ARCH-002: Whether dashboard uses server-rendered HTML, TUI, or a small SPA.
@@ -1,235 +0,0 @@
1
- # UX Flows
2
-
3
- ## Navigation Model
4
-
5
- Planr V1 is CLI-first with optional TUI/dashboard. Public commands use Planr-native vocabulary:
6
-
7
- - `planr project`: setup and integration.
8
- - `planr plan`: reviewable Markdown plans for product specs, build contracts, and review packages.
9
- - `planr map`: live graph inspection and mutation.
10
- - `planr item`: item creation and detail.
11
- - `planr pick`: atomically pick the next ready item.
12
- - `planr log`: record files, commands, tests, and handoff proof.
13
- - `planr review`: review/fix/approval loop.
14
- - `planr close`: close an item with log.
15
- - `planr doctor`: diagnostics.
16
-
17
- ## Screen Map
18
-
19
- ### CLI
20
-
21
- - Project status.
22
- - Item detail.
23
- - Ready queue.
24
- - Critical lane.
25
- - Plan list/detail.
26
- - Map summary.
27
- - Log detail.
28
- - Doctor report.
29
-
30
- ### Optional TUI/Dashboard
31
-
32
- - Project overview.
33
- - Graph view.
34
- - Ready/running/blocked map lanes.
35
- - Plan viewer.
36
- - Item detail.
37
- - Log/review panel.
38
- - Agent runs panel.
39
- - Diagnostics panel.
40
-
41
- ## State Machine
42
-
43
- ```text
44
- NO_PROJECT -> INITIALIZED
45
- Trigger: planr project init
46
- Guard: repo path writable
47
- Side effects: create database and .planr pack
48
- Failure behavior: report blocked path and no partial overwrite
49
-
50
- INITIALIZED -> PRODUCT_PLANNED
51
- Trigger: planr plan new
52
- Guard: project exists
53
- Side effects: create product plan package
54
- Failure behavior: show validation errors
55
-
56
- PRODUCT_PLANNED -> BUILD_PLANNED
57
- Trigger: planr plan split
58
- Guard: product plan has selectable slice
59
- Side effects: create focused build plan
60
- Failure behavior: show missing decisions
61
-
62
- BUILD_PLANNED -> MAPPED
63
- Trigger: planr map build --from <plan>
64
- Guard: plan acceptance criteria are parseable
65
- Side effects: create linked map items
66
- Failure behavior: show unmapped requirements
67
-
68
- MAPPED -> ITEM_PICKED
69
- Trigger: planr pick
70
- Guard: at least one ready item
71
- Side effects: atomic pick, start run context
72
- Failure behavior: show blockers or no-ready status
73
-
74
- ITEM_PICKED -> EVIDENCE_RECORDED
75
- Trigger: planr log add
76
- Guard: log fields valid
77
- Side effects: write log and attach to item/run
78
- Failure behavior: keep item running/blocked with diagnostic
79
-
80
- EVIDENCE_RECORDED -> ITEM_CLOSED
81
- Trigger: planr close
82
- Guard: required log and reviews are satisfied
83
- Side effects: close item, promote downstream items
84
- Failure behavior: keep item running/blocked with diagnostic
85
-
86
- ITEM_CLOSED -> REVIEW_READY
87
- Trigger: review policy requires review
88
- Guard: code item completed
89
- Side effects: create or unlock review item
90
- Failure behavior: parent stays incomplete
91
- ```
92
-
93
- ## Onboarding Flow
94
-
95
- 1. User runs `planr project init`.
96
- 2. Planr detects repo, Git state, old `.planr` artifacts, and available agent clients.
97
- 3. Planr creates project pack and database.
98
- 4. Planr offers integration commands:
99
- - Codex MCP/config.
100
- - Claude Code MCP config.
101
- - Cursor `.cursor/mcp.json`.
102
- 5. User runs `planr doctor --client all`.
103
-
104
- Acceptance criteria:
105
-
106
- - REQ-UX-001: Init output must clearly distinguish created files, detected files, and skipped files.
107
- - REQ-UX-002: Doctor output must show each agent integration as pass, fail, warning, or not installed.
108
-
109
- ## Product Plan Flow
110
-
111
- 1. User runs `planr plan new "App idea"`.
112
- 2. Planr captures product intent, platform, users, data sensitivity, AI, monetization, integrations, and launch constraints.
113
- 3. Planr creates a Markdown plan package: product spec, UX, architecture, ADRs, safety/privacy/security, API/data model, implementation specs, QA, release, and task checklist.
114
- 4. Planr marks assumptions and open decisions explicitly.
115
- 5. User runs `planr plan check`.
116
-
117
- Acceptance criteria:
118
-
119
- - REQ-UX-010: A created plan must include product, UX, architecture, safety/privacy/security, data/API, QA, release, and task files unless explicitly scoped down.
120
- - REQ-UX-011: Plan checks must report missing required sections, open decisions, and validation warnings.
121
-
122
- ## Implementation Plan Flow
123
-
124
- 1. User or agent runs `planr plan split <plan> --slice "MVP backend"`.
125
- 2. Planr creates a focused Markdown plan with source, scope decision, ownership target, phases, verification, and acceptance criteria.
126
- 3. Planr links the build plan to source product plan requirement IDs.
127
- 4. User runs `planr plan check`.
128
-
129
- Acceptance criteria:
130
-
131
- - REQ-UX-012: A build plan must be narrow enough to seed executable map items.
132
- - REQ-UX-013: Plan linking must show source plan id, requirement ids, derived plan path, and relationship.
133
-
134
- ## Map Seeding Flow
135
-
136
- 1. User runs `planr map build --from <plan>`.
137
- 2. Planr creates candidate map items and links.
138
- 3. User accepts, edits, or rejects candidates.
139
- 4. Accepted items enter the map as pending/ready.
140
-
141
- Acceptance criteria:
142
-
143
- - REQ-UX-014: Plan work lists must not silently become live map work without acceptance.
144
- - REQ-UX-015: Seeded items must retain links to their source product or build plan requirements.
145
-
146
- ## Agent Execution Flow
147
-
148
- 1. Agent calls `planr_pick_item` or `planr pick`.
149
- 2. Planr returns item, linked plan context, upstream handoff, relevant contexts, and conflicts.
150
- 3. Agent works in repo.
151
- 4. Agent records log.
152
- 5. Agent closes the item when log and reviews allow it.
153
- 6. Planr promotes downstream items.
154
- 7. If review is required, a review item becomes ready.
155
-
156
- Acceptance criteria:
157
-
158
- - REQ-UX-020: The pick response must fit in an LLM context window by default and include links for deeper reads.
159
- - REQ-UX-021: Closure must show unlocked items and remaining blockers.
160
- - REQ-UX-022: Agents must treat parent gate items as completion gates and work executable child items when a child implementation or test item exists.
161
-
162
- ## Parent Gate Flow
163
-
164
- 1. User or agent creates a parent item for the material change.
165
- 2. User or agent breaks the parent into implementation or test child work with `planr item breakdown`.
166
- 3. User or agent requests review on the implementation or test child after evidence exists.
167
- 4. Downstream top-level work depends on the parent gate when review cleanliness matters.
168
- 5. Parent closes only after child work closes and review findings have either passed or been converted into fix/follow-up review work.
169
-
170
- Acceptance criteria:
171
-
172
- - REQ-UX-025: Parent item detail must make clear whether open children or reviews block closure.
173
- - REQ-UX-026: Recovery views must show the child implementation, review, logs, and blockers needed to continue safely.
174
-
175
- ## Review/Fix Flow
176
-
177
- 1. Review item is picked.
178
- 2. Reviewer inspects linked plan, log, and scoped Git diff.
179
- 3. Reviewer returns verdict:
180
- - complete;
181
- - not complete with findings;
182
- - unclear/partially verified.
183
- 4. Findings create fix item and follow-up review item.
184
- 5. Parent closes only when review chain passes.
185
-
186
- Acceptance criteria:
187
-
188
- - REQ-UX-030: Review findings must be visible in item detail and log detail.
189
- - REQ-UX-031: Parent completion must explain which review item blocks it.
190
-
191
- ## Handoff And Story Flow
192
-
193
- 1. Agent records proof with `planr log add`.
194
- 2. Agent records reusable discoveries with `planr context add`.
195
- 3. Agent records task-local coordination with `planr note add`.
196
- 4. If the decision chain is too long for logs and contexts, the operator creates or updates a story log.
197
-
198
- Acceptance criteria:
199
-
200
- - REQ-UX-035: Logs must remain the proof surface for closure.
201
- - REQ-UX-036: Context entries must be searchable and safe to expose to future agents.
202
- - REQ-UX-037: Story logs must be documented as narrative memory and must not override map state.
203
-
204
- ## Error, Empty, Offline, Loading States
205
-
206
- - No project: show `planr project init`.
207
- - No ready item: show blockers and critical lane.
208
- - Database locked: show retry and owning process if known.
209
- - Plan parse error: show file path, line if available, and keep graph usable.
210
- - MCP client missing: show manual config.
211
- - Agent command failed: record failed run and keep task recoverable.
212
-
213
- ## Settings, Export, Delete, Account Flows
214
-
215
- - No account settings in V1.
216
- - Settings live in `.planr/config.toml` or user config.
217
- - Export includes database dump, plan files, reviews, and references.
218
- - Delete requires explicit project id or path and confirmation.
219
-
220
- ## Accessibility Behavior
221
-
222
- - CLI output must support `--json` and no-color mode.
223
- - TUI/dashboard must support keyboard navigation, visible focus, screen-reader labels, and reduced motion.
224
-
225
- ## Localization Behavior
226
-
227
- - V1 command output is English.
228
- - User-authored plan content may be any language.
229
- - Error codes are stable and machine-readable.
230
-
231
- ## Acceptance Criteria
232
-
233
- - REQ-UX-900: Every primary flow must be executable without a web UI.
234
- - REQ-UX-901: Every mutation must have a JSON mode for automation.
235
- - REQ-UX-902: Every blocked state must show the next actionable command or reason.
@@ -1,164 +0,0 @@
1
- # Planr v1.5.2 Release Candidate Evidence
2
-
3
- Candidate produced on 2026-07-20 in an isolated local workspace:
4
-
5
- - Workspace: `/Users/kregenrek/projects/planr-dogfood/release-v1.5.2`
6
- - Source clone: `/Users/kregenrek/projects/planr-dogfood/release-v1.5.2/release-candidate-src`
7
- - Local bare remote: `/Users/kregenrek/projects/planr-dogfood/release-v1.5.2/local-origin.git`
8
- - Config-proof rerun source clone: `/Users/kregenrek/projects/planr-dogfood/release-v1.5.2/config-proof/release-candidate-src`
9
- - Config-proof rerun local bare remote: `/Users/kregenrek/projects/planr-dogfood/release-v1.5.2/config-proof/local-origin.git`
10
- - Config-proof hash snapshots: `/Users/kregenrek/projects/planr-dogfood/release-v1.5.2/config-proof/evidence`
11
- - Public side effects: none. The candidate clone's `origin` points to the local bare remote, and the public `origin` check from this repository returned no `v1.5.2` tag.
12
-
13
- ## Identity
14
-
15
- - Upstream release-scope base commit: `f7763c6197ddf8cdd93227b9aa320f2b168a0523`
16
- - Clean pre-release source commit: `9390af541ca51755e585bf3c1a652717997daeca`
17
- - Clean pre-release source tree: `2569374e6321a88b812cc706257bbda086101437`
18
- - Release commit: `678038db4536723867fc96b0cd0af703fda43ef1`
19
- - Release tree: `80324b8afef14d7d7bd97950eb8352cd9c667e6a`
20
- - Annotated tag object: `12c78b7a870552361b11c5de768a6c5da7c8f115`
21
- - Tag target: `678038db4536723867fc96b0cd0af703fda43ef1`
22
- - Config-proof rerun release commit: `0d6bab060793fd52a5e144b9862c1fbc77d10ec3`
23
- - Config-proof rerun release tree: `80324b8afef14d7d7bd97950eb8352cd9c667e6a`
24
- - Config-proof rerun annotated tag object: `78c6c99afbca24803d58abb7d9a507cafde40741`
25
- - Config-proof rerun tag target: `0d6bab060793fd52a5e144b9862c1fbc77d10ec3`
26
-
27
- ## Version Checks
28
-
29
- Both runtime entry points reported `planr 1.5.2`:
30
-
31
- - `target/release/planr --version`
32
- - `node npm/bin/planr.js --version`
33
-
34
- All release manifests carried `1.5.2`:
35
-
36
- - `Cargo.toml`
37
- - `package.json`
38
- - `plugins/planr/.codex-plugin/plugin.json`
39
- - `plugins/planr/.claude-plugin/plugin.json`
40
- - `.cursor-plugin/plugin.json`
41
-
42
- ## Artifact Digests
43
-
44
- - Native binary `target/release/planr`: `e91917be04e84f97c5d515e673f829c33b21f5128dae87ce836e3721ece50473`
45
- - npm tarball `planr-1.5.2.tgz`: `33df443e6ec20d6d44fcf05469efe56eb75b192c826467c33d47d44672297a34`
46
- - Native archive `dist/planr-darwin-arm64.tar.gz`: `6fdaf803073d99bdb02522100e50094fb277409d52fc3a0c33e9d8bd6707d8ac`
47
- - Archive checksum file `dist/SHA256SUMS`: `6347103b757e5045aef9a83a311ae2bcc43de5b6e9ada8a9efa2d52b84e3359b`
48
- - Payload checksum file `dist/planr-1.5.2/SHA256SUMS`: `d8ac952c247706bb328e1539583b87e55f9e2b211b89c134aab08357d0cc665c`
49
- - Config-proof rerun native binary `target/release/planr`: `00c1b3b46f66563dfe4c909e2ecb75dc448e72bfe75b6cb7d56d86c6539b5d6c`
50
- - Config-proof rerun npm tarball `planr-1.5.2.tgz`: `33df443e6ec20d6d44fcf05469efe56eb75b192c826467c33d47d44672297a34`
51
- - Config-proof rerun native archive `dist/planr-darwin-arm64.tar.gz`: `dbba6abece2cc37d1b7e038094b8b7483ce79e5c770f8ed64048c84446d17681`
52
- - Config-proof rerun archive checksum file `dist/SHA256SUMS`: `1d77872f58c8ef8877cbed11b16ab0ea30524a6b2a9565f5190dfd059d69416c`
53
- - Config-proof rerun payload checksum file `dist/planr-1.5.2/SHA256SUMS`: `ce2adbe238c9fe27838c11f3a89195d9eb8b262411c86d3a8b02304ee14eaec6`
54
-
55
- `dist/SHA256SUMS` records:
56
-
57
- ```text
58
- 6fdaf803073d99bdb02522100e50094fb277409d52fc3a0c33e9d8bd6707d8ac planr-darwin-arm64.tar.gz
59
- ```
60
-
61
- `dist/planr-1.5.2/SHA256SUMS` records:
62
-
63
- ```text
64
- e91917be04e84f97c5d515e673f829c33b21f5128dae87ce836e3721ece50473 planr
65
- a1e27e1cfb3d9d540dfe05f5d1212ee98be97b1f48e203d48209e31243383ba3 README.md
66
- 61a9b281d04d62cdea4bef57d5e0b702c191b3219456409ac5ed651569228a30 LICENSE.md
67
- ```
68
-
69
- ## Gates Run
70
-
71
- - `scripts/release.sh 1.5.2 'standalone Planr core with optional Switchloom handoff'`
72
- - `cargo test`: 71 unit tests, 67 e2e tests, and 3 routing ownership tests passed.
73
- - `npm pack --dry-run`: reported `planr@1.5.2`, 65 files, shasum `a3903ce5658be6f6140321232885f86f6515ae70`.
74
- - `scripts/security-local.sh`: betterleaks found no leaks; Trivy reported 0 vulnerabilities for `Cargo.lock` and `pnpm-lock.yaml`.
75
- - Pushed `main` and `v1.5.2` only to `/Users/kregenrek/projects/planr-dogfood/release-v1.5.2/local-origin.git`.
76
- - `scripts/build-release.sh`: built `dist/planr-darwin-arm64.tar.gz`.
77
- - `npm pack`: created `planr-1.5.2.tgz` locally; no npm publish was run.
78
- - Config-proof rerun:
79
- - `scripts/release.sh 1.5.2 'standalone Planr core with optional Switchloom handoff'`: 71 unit tests, 67 e2e tests, and 3 routing ownership tests passed; betterleaks found no leaks; Trivy reported 0 vulnerabilities; pushed only to `/Users/kregenrek/projects/planr-dogfood/release-v1.5.2/config-proof/local-origin.git`.
80
- - `scripts/build-release.sh`: built `dist/planr-darwin-arm64.tar.gz`.
81
- - `npm pack`: created `planr-1.5.2.tgz` locally; no npm publish was run.
82
- - `target/release/planr --version` and `node npm/bin/planr.js --version`: both reported `planr 1.5.2`.
83
- - `git tag -l v1.5.2`: returned no local tag in `/Users/kregenrek/projects/planr`.
84
- - `git ls-remote --heads --tags origin 'v1.5.2'`: returned no public remote ref.
85
- - Candidate clone artifact inventory: no Switchloom files, no legacy routing-owner directories, and no routing manifests were present.
86
-
87
- ## User Config Hash Proof
88
-
89
- No release command targeted user/global host config files. The config-proof rerun captured hashes immediately before and after each release-owned run, stored without file contents:
90
-
91
- - `scripts/release.sh`
92
- - Before: `/Users/kregenrek/projects/planr-dogfood/release-v1.5.2/config-proof/evidence/config-before-release-sh.txt`
93
- - After: `/Users/kregenrek/projects/planr-dogfood/release-v1.5.2/config-proof/evidence/config-after-release-sh.txt`
94
- - Equality proof: `/Users/kregenrek/projects/planr-dogfood/release-v1.5.2/config-proof/evidence/config-release-sh-equality.txt` records `config hashes unchanged across scripts/release.sh`.
95
- - `scripts/build-release.sh`
96
- - Before: `/Users/kregenrek/projects/planr-dogfood/release-v1.5.2/config-proof/evidence/config-before-build-release.txt`
97
- - After: `/Users/kregenrek/projects/planr-dogfood/release-v1.5.2/config-proof/evidence/config-after-build-release.txt`
98
- - Equality proof: `/Users/kregenrek/projects/planr-dogfood/release-v1.5.2/config-proof/evidence/config-build-release-equality.txt` records `config hashes unchanged across scripts/build-release.sh`.
99
- - `npm pack`
100
- - Before: `/Users/kregenrek/projects/planr-dogfood/release-v1.5.2/config-proof/evidence/config-before-npm-pack.txt`
101
- - After: `/Users/kregenrek/projects/planr-dogfood/release-v1.5.2/config-proof/evidence/config-after-npm-pack.txt`
102
- - Equality proof: `/Users/kregenrek/projects/planr-dogfood/release-v1.5.2/config-proof/evidence/config-npm-pack-equality.txt` records `config hashes unchanged across npm pack`.
103
-
104
- Every before/after snapshot contains the same hashes:
105
-
106
- - `/Users/kregenrek/.codex/config.toml`: `82224997e7d4d5147f892a8aa12f7f5f04e77c38267da6ba1274a9267b23f040`
107
- - `/Users/kregenrek/.claude/settings.json`: `99a0eb17993d0dd0c952df03bec38d284fd119a9b0ed928f3201b1792224049f`
108
- - `/Users/kregenrek/.claude.json`: `a5f901ce3b38943ed2591333b4cb6dbab0cab101f8d02ea348fc476021f55afb`
109
- - `/Users/kregenrek/.cursor/mcp.json`: `cf7217adfcb48b532dfdbced62ca68eab4c60996ef38d510a8efb3d286ce5baf`
110
-
111
- ## Switchloom v0.2.1 Optional Dogfood Evidence
112
-
113
- Fresh non-replay dogfood ran on 2026-07-20 with the release-candidate Planr v1.5.2 binary and exact public Switchloom v0.2.1 bytes. The durable local audit receipt is:
114
-
115
- - Receipt: `/private/tmp/planr-switchloom-cross-product-QEvWps/oracle-receipt.json`
116
- - Receipt SHA-256: `c01f4b980977a15028f7a82cc6fc237aa50fb4b35310871ba3ad245ec1c699ee`
117
- - Mode/result: `live`, `ok=true`
118
- - Fresh root: `/private/tmp/planr-switchloom-cross-product-QEvWps`
119
-
120
- Replayable command:
121
-
122
- ```bash
123
- PLANR_WORKER_ID=switchloom_optional_dogfood PLANR_BIN=/Users/kregenrek/projects/planr-dogfood/release-v1.5.2/release-candidate-src/target/release/planr SWITCHLOOM_TARBALL=/private/tmp/switchloom-public-0.2.1.MN008L/switchloom-0.2.1.tgz PLANR_ORACLE_TEMP_PARENT=/private/tmp node scripts/verify-switchloom-cross-product.mjs
124
- ```
125
-
126
- Public Switchloom package identity:
127
-
128
- - Package: `switchloom@0.2.1`
129
- - Tarball: `/private/tmp/switchloom-public-0.2.1.MN008L/switchloom-0.2.1.tgz`
130
- - npm SHA-1 shasum: `e813283f54d0d64b5fd4835e17687aaaf3b0a6cb`
131
- - SHA-512 integrity: `sha512-vUKHxYXHt7Sx7MkYQz5MRZ0Ll544iHoadHGCgvJPUYkpUzQWtzjt1o3xhyeQwExCA6tuLQ5vZnLPz+fO5uMiXg==`
132
- - Local SHA-256: `028176063ce20b4981aa4e13199b25169b2f8296f648eeeec9291e6955e7549a`
133
-
134
- Host routing evidence from the receipt:
135
-
136
- - Codex CLI: `codex-cli 0.144.5`
137
- - Maker role/model/effort: `model_routing_terra_high`, `gpt-5.6-terra`, `high`
138
- - Reviewer role/model/effort: `model_routing_sol_high`, `gpt-5.6-sol`, `high`
139
- - `fork_turns_all_used`: `false`
140
- - Public Codex JSONL: `/private/tmp/planr-switchloom-cross-product-QEvWps/codex-live.jsonl`
141
- - Parent rollout: `/Users/kregenrek/.codex/sessions/2026/07/20/rollout-2026-07-20T20-05-19-019f80b4-2e89-7470-a432-6937ddcbc7ac.jsonl`
142
- - Maker rollout: `/Users/kregenrek/.codex/sessions/2026/07/20/rollout-2026-07-20T20-05-50-019f80b4-a7d3-73d1-bf34-9762ad7d9474.jsonl`
143
- - Reviewer rollout: `/Users/kregenrek/.codex/sessions/2026/07/20/rollout-2026-07-20T20-06-37-019f80b5-5d7f-7441-97f3-c743d97e0a8c.jsonl`
144
-
145
- Fresh Planr audit and uninstall evidence:
146
-
147
- - Fresh oracle plan: `pln-773f1d88`
148
- - Fresh oracle item: `i-build-first-slice-5c85`
149
- - Audit result: holds with clauses `items_settled`, `reviews_complete`, `approvals_clear`, and `verification_logged`.
150
- - Post-uninstall result: Switchloom uninstall removed only managed files and unrouted Planr still worked; the script reran the Planr audit after uninstall and required `holds=true`.
151
- - Requested-only routing metadata was rejected as effective proof: `/private/tmp/planr-switchloom-cross-product-QEvWps/requested-only-route-audit.json`.
152
-
153
- Protected configuration and source inventory proof:
154
-
155
- - `/Users/kregenrek/.codex/config.toml`: `82224997e7d4d5147f892a8aa12f7f5f04e77c38267da6ba1274a9267b23f040`
156
- - `/Users/kregenrek/.claude/settings.json`: `99a0eb17993d0dd0c952df03bec38d284fd119a9b0ed928f3201b1792224049f`
157
- - `/Users/kregenrek/.claude.json`: `a5f901ce3b38943ed2591333b4cb6dbab0cab101f8d02ea348fc476021f55afb`
158
- - `/Users/kregenrek/.cursor/mcp.json`: `cf7217adfcb48b532dfdbced62ca68eab4c60996ef38d510a8efb3d286ce5baf`
159
- - Switchloom source root: `/Users/kregenrek/projects/model-routing`
160
- - Switchloom source HEAD: `191f6aac91ff0f73fcae68ab269eb2d89c9e76e9`
161
- - Switchloom source status SHA-256: `2ca939e3e14ba8971210e93152120323641d21b0ac465b02a85335860b01758c`
162
- - Switchloom tracked files SHA-256: `0292bca86e80e9c63d5848984cab229b17df6e1162f1b0d8ec577474a9ac3591`
163
-
164
- This section records paths, digests, roles, and verification outcomes only. It does not copy rollout contents, prompts, responses, credentials, or user configuration contents into the repository.