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.
- package/README.md +46 -22
- package/docs/ARCHITECTURE.md +12 -1
- package/docs/RELEASE.md +37 -7
- package/docs/SWITCHLOOM_COMPATIBILITY.md +46 -0
- package/docs/contracts/EVAL_CONTRACT_V1.md +2072 -0
- package/docs/documentation/CONTRACT.md +7 -7
- package/docs/documentation/COVERAGE.md +5 -3
- package/docs/documentation/INFORMATION_ARCHITECTURE.md +5 -2
- package/docs/fixtures/mcp-contract.json +12 -0
- package/npm/native/darwin-arm64/planr +0 -0
- package/npm/native/darwin-x86_64/planr +0 -0
- package/npm/native/linux-arm64/planr +0 -0
- package/npm/native/linux-x86_64/planr +0 -0
- package/package.json +5 -1
- package/plugins/planr/.claude-plugin/plugin.json +1 -1
- package/plugins/planr/.codex-plugin/plugin.json +1 -1
- package/plugins/planr/agents/planr-worker.md +1 -1
- package/plugins/planr/skills/planr-goal/SKILL.md +21 -49
- package/plugins/planr/skills/planr-loop/SKILL.md +28 -94
- package/plugins/planr/skills/planr-loop/agents/planr-worker.md +1 -1
- package/plugins/planr/skills/planr-loop/references/host-dispatch.md +10 -0
- package/plugins/planr/skills/planr-loop/references/recovery-and-verification.md +24 -0
- package/plugins/planr/skills/planr-task-graph/SKILL.md +21 -190
- package/docs/CI.md +0 -54
- package/docs/CLAUDE_CODE.md +0 -52
- package/docs/CLI_REFERENCE.md +0 -160
- package/docs/CODEX.md +0 -56
- package/docs/CURSOR.md +0 -114
- package/docs/EXAMPLE_WEBAPP.md +0 -103
- package/docs/GOALS.md +0 -175
- package/docs/HANDOFFS_AND_STORIES.md +0 -121
- package/docs/HOOKS.md +0 -34
- package/docs/IMPORT.md +0 -21
- package/docs/INSTALL.md +0 -115
- package/docs/MCP_CONTRACT.md +0 -73
- package/docs/MCP_GUIDE.md +0 -40
- package/docs/MODEL_ROUTING.md +0 -33
- package/docs/NPM.md +0 -40
- package/docs/OPERATING_MODEL.md +0 -250
- package/docs/ROUTING_BUNDLES.md +0 -15
- package/docs/SECURITY.md +0 -8
- package/docs/SKILLS.md +0 -261
- package/docs/TASK_GRAPH_MODEL.md +0 -272
- package/docs/TESTING.md +0 -87
- package/docs/TROUBLESHOOTING.md +0 -30
- package/docs/planr-spec/ADRS.md +0 -160
- package/docs/planr-spec/AI_SPEC.md +0 -138
- package/docs/planr-spec/ANALYTICS_OBSERVABILITY_SPEC.md +0 -124
- package/docs/planr-spec/API_AND_DATA_MODEL.md +0 -517
- package/docs/planr-spec/BACKEND_IMPLEMENTATION_SPEC.md +0 -178
- package/docs/planr-spec/CLIENT_IMPLEMENTATION_SPEC.md +0 -119
- package/docs/planr-spec/DESIGN_SYSTEM_SPEC.md +0 -102
- package/docs/planr-spec/PRODUCT_SPEC.md +0 -193
- package/docs/planr-spec/QA_ACCEPTANCE_TESTS.md +0 -146
- package/docs/planr-spec/README.md +0 -67
- package/docs/planr-spec/REFERENCES.md +0 -29
- package/docs/planr-spec/RELEASE_READINESS.md +0 -95
- package/docs/planr-spec/SAFETY_PRIVACY_SECURITY.md +0 -169
- package/docs/planr-spec/TASKS.md +0 -932
- package/docs/planr-spec/TECH_ARCHITECTURE.md +0 -143
- package/docs/planr-spec/UX_FLOWS.md +0 -235
- package/docs/release-candidates/planr-v1.5.2.md +0 -164
- /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.
|
|
File without changes
|