planr 0.0.1 → 1.1.15

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/LICENSE.md +21 -0
  2. package/README.md +144 -0
  3. package/docs/ARCHITECTURE.md +75 -0
  4. package/docs/CI.md +54 -0
  5. package/docs/CLAUDE_CODE.md +33 -0
  6. package/docs/CLI_REFERENCE.md +124 -0
  7. package/docs/CODEX.md +48 -0
  8. package/docs/CURSOR.md +30 -0
  9. package/docs/GOALS.md +155 -0
  10. package/docs/HANDOFFS_AND_STORIES.md +121 -0
  11. package/docs/IMPORT.md +21 -0
  12. package/docs/INSTALL.md +98 -0
  13. package/docs/MCP_CONTRACT.md +70 -0
  14. package/docs/MCP_GUIDE.md +40 -0
  15. package/docs/NPM.md +40 -0
  16. package/docs/OPERATING_MODEL.md +250 -0
  17. package/docs/RELEASE.md +140 -0
  18. package/docs/SECURITY.md +8 -0
  19. package/docs/SKILLS.md +278 -0
  20. package/docs/TASK_GRAPH_MODEL.md +222 -0
  21. package/docs/TESTING.md +87 -0
  22. package/docs/TROUBLESHOOTING.md +26 -0
  23. package/docs/fixtures/mcp-contract.json +92 -0
  24. package/docs/planr-spec/ADRS.md +160 -0
  25. package/docs/planr-spec/AI_SPEC.md +138 -0
  26. package/docs/planr-spec/ANALYTICS_OBSERVABILITY_SPEC.md +124 -0
  27. package/docs/planr-spec/API_AND_DATA_MODEL.md +517 -0
  28. package/docs/planr-spec/BACKEND_IMPLEMENTATION_SPEC.md +178 -0
  29. package/docs/planr-spec/CLIENT_IMPLEMENTATION_SPEC.md +119 -0
  30. package/docs/planr-spec/DESIGN_SYSTEM_SPEC.md +102 -0
  31. package/docs/planr-spec/PRODUCT_SPEC.md +193 -0
  32. package/docs/planr-spec/QA_ACCEPTANCE_TESTS.md +146 -0
  33. package/docs/planr-spec/README.md +67 -0
  34. package/docs/planr-spec/REFERENCES.md +29 -0
  35. package/docs/planr-spec/RELEASE_READINESS.md +95 -0
  36. package/docs/planr-spec/SAFETY_PRIVACY_SECURITY.md +169 -0
  37. package/docs/planr-spec/TASKS.md +932 -0
  38. package/docs/planr-spec/TECH_ARCHITECTURE.md +143 -0
  39. package/docs/planr-spec/UX_FLOWS.md +235 -0
  40. package/docs/planr-spec/V1_1_DIFFERENTIATION_CONTRACT.md +177 -0
  41. package/docs/planr-spec.zip +0 -0
  42. package/npm/bin/planr.js +54 -0
  43. package/npm/native/darwin-arm64/planr +0 -0
  44. package/npm/native/darwin-x86_64/planr +0 -0
  45. package/npm/native/linux-arm64/planr +0 -0
  46. package/npm/native/linux-x86_64/planr +0 -0
  47. package/package.json +27 -8
  48. package/plugins/planr/.claude-plugin/plugin.json +11 -0
  49. package/plugins/planr/.codex-plugin/plugin.json +25 -0
  50. package/plugins/planr/agents/planr-reviewer.md +12 -0
  51. package/plugins/planr/agents/planr-worker.md +10 -0
  52. package/plugins/planr/skills/planr/SKILL.md +52 -0
  53. package/plugins/planr/skills/planr-goal/SKILL.md +69 -0
  54. package/plugins/planr/skills/planr-loop/SKILL.md +112 -0
  55. package/plugins/planr/skills/planr-loop/agents/planr-reviewer.toml +17 -0
  56. package/plugins/planr/skills/planr-loop/agents/planr-worker.toml +14 -0
  57. package/plugins/planr/skills/planr-plan/SKILL.md +58 -0
  58. package/plugins/planr/skills/planr-review/SKILL.md +49 -0
  59. package/plugins/planr/skills/planr-status/SKILL.md +50 -0
  60. package/plugins/planr/skills/planr-summary/SKILL.md +28 -0
  61. package/plugins/planr/skills/planr-task-graph/SKILL.md +228 -0
  62. package/plugins/planr/skills/planr-verify-web/SKILL.md +76 -0
  63. package/plugins/planr/skills/planr-work/SKILL.md +68 -0
@@ -0,0 +1,222 @@
1
+ # Planr Task Graph Model
2
+
3
+ Planr's map is a local dependency-aware graph for coding-agent work. It exists so agents can coordinate without relying on ad hoc chat history.
4
+
5
+ ## Core Objects
6
+
7
+ - Project: repository-level Planr workspace.
8
+ - Plan: Markdown product or build package.
9
+ - Item: one unit of live work in the map.
10
+ - Link: relationship between items.
11
+ - Pick: atomic claim of a ready item by one worker session.
12
+ - Log: durable proof of implementation, verification, review, or handoff.
13
+ - Review: an item that blocks target closure until it is closed.
14
+ - Context: searchable discovery or decision.
15
+ - Recovery: explicit preview/apply operation for stale, timed-out, or retryable work.
16
+
17
+ ## State Authority
18
+
19
+ The SQLite database is authoritative for:
20
+
21
+ - item status;
22
+ - links and readiness;
23
+ - picks and ownership;
24
+ - reviews and closure gates;
25
+ - contexts and logs;
26
+ - artifacts and events as they become public product surfaces.
27
+
28
+ Markdown plans are authoritative for scope and acceptance criteria. They do not override map state.
29
+
30
+ ## Item Readiness
31
+
32
+ Readiness is derived from state and links:
33
+
34
+ - an item may become ready when its blocking upstream items are closed;
35
+ - picked items are owned by one worker session;
36
+ - requesting a review moves a picked or running item to `in_review` (ownership kept) so the wait state is visible instead of masquerading as active work;
37
+ - closed items can unlock downstream items;
38
+ - open review items block target closure;
39
+ - cancelled items should not silently unlock unrelated work.
40
+
41
+ The status lifecycle for work items is `pending -> ready -> picked -> running -> in_review -> closed` (with `blocked`, `failed`, `cancelled`, and `closed_partial` as branch states). `in_review` items still accept evidence logs and heartbeats from their owner, are excluded from new picks, and close either through `review close --verdict complete --close-target` or an explicit `planr close` after the review completes. Findings keep the target `in_review`: the follow-up review gates the same target until the chain settles.
42
+
43
+ Use:
44
+
45
+ ```bash
46
+ planr map show --json
47
+ planr map lane --critical
48
+ planr map pressure
49
+ ```
50
+
51
+ ## Links
52
+
53
+ Create explicit order:
54
+
55
+ ```bash
56
+ planr item create "Design API" --description "Define endpoints and data ownership."
57
+ planr item create "Implement API" --description "Build endpoints after design is closed."
58
+ planr link add <design-item> <implementation-item> --type blocks
59
+ ```
60
+
61
+ Use `blocks` for hard ordering. Use softer link types only when the product contract for that type is documented and tested.
62
+
63
+ ## Picking
64
+
65
+ Picking is the concurrency boundary:
66
+
67
+ ```bash
68
+ planr pick --json
69
+ ```
70
+
71
+ One ready item should be picked by one worker. The pick output is one flat work packet — item, links, logs, runtime, recovery, conditions, recall context, and a `remaining` progress snapshot, each fact exactly once; empty collections are omitted. Picked work records `worker_id`, `pick_token`, `picked_at`, and `last_heartbeat_at`. Worker identity is stable per client, host, and user, so heartbeats keep working across the many short-lived processes of an agent session. Agents should export `PLANR_WORKER_ID` (an explicit identity such as `maker-1` or `checker-1`) for the whole session, so picks, logs, and heartbeats attribute to the agent instead of `client:host:user`. Parallel workers on the same machine must set `PLANR_WORKER_ID` (or `PLANR_SESSION_ID`) to distinct values. Evidence written via `log add` or `done` by the owner refreshes the heartbeat automatically; the explicit runtime commands cover long silent stretches:
72
+
73
+ ```bash
74
+ planr pick heartbeat [item-id]
75
+ planr pick progress <item-id> --percent 42 --note "running focused tests"
76
+ planr pick pause <item-id> --note "waiting for review input"
77
+ planr pick resume <item-id>
78
+ ```
79
+
80
+ If two workers race, the database must allow only one winner. If the owner disappears, inspect stale claims and reset intentionally:
81
+
82
+ ```bash
83
+ planr pick stale --older-than-seconds 900
84
+ planr pick stale --older-than-seconds 900 --release
85
+ planr recover sweep --older-than-seconds 900
86
+ planr recover sweep --older-than-seconds 900 --apply
87
+ planr pick release <item-id> --force
88
+ ```
89
+
90
+ Use forced release only when the operator intentionally transfers ownership. Use `recover sweep --apply` for the broader recovery path that also requeues timed-out picked work and retryable failed work.
91
+
92
+ ## Approvals
93
+
94
+ Approvals are explicit human gates on an item:
95
+
96
+ ```bash
97
+ planr approval request <item-id> --reason "needs release approval"
98
+ planr approval deny <item-id> --by "qa" --comment "missing evidence"
99
+ planr approval approve <item-id> --by "qa" --comment "evidence accepted"
100
+ planr approval list --open
101
+ ```
102
+
103
+ An item with `requested` or `denied` approval status cannot close. `map preview --close <item-id>` reports whether approval blocks closure before the mutation is attempted.
104
+
105
+ ## Reviews And Fix Chains
106
+
107
+ Request review after evidence exists:
108
+
109
+ ```bash
110
+ planr review request <item-id>
111
+ ```
112
+
113
+ A clean review can close:
114
+
115
+ ```bash
116
+ planr review close <review-id> --verdict complete
117
+ ```
118
+
119
+ Findings create follow-up work:
120
+
121
+ ```bash
122
+ planr review close <review-id> \
123
+ --verdict not-complete \
124
+ --findings "specific actionable finding"
125
+ ```
126
+
127
+ The target item may close only when required review items are closed.
128
+
129
+ Every `review close` records a derived `review_mode`: the closing reviewer identity is compared against the target item's lease holder and recorded as `single_agent` (same identity), `independent` (different identity), or `unattributed` (no recorded maker). The mode lands in the close response, review log, artifact, and event — independence is proven by recorded identity, not declared by a note.
130
+
131
+ ## Evidence
132
+
133
+ Logs make closure auditable:
134
+
135
+ ```bash
136
+ planr log add --item <item-id> \
137
+ --summary "Implemented parser hardening" \
138
+ --files src/parser.rs,tests/parser.rs \
139
+ --cmd "cargo test parser"
140
+ ```
141
+
142
+ Use multiple `--cmd` or `--tests` values when more than one verification command matters. `--cmd` records what was executed; `--tests` records test commands/results specifically — both are evidence fields, not gates.
143
+
144
+ Live verification evidence (browser runs, smoke tests against a running app) uses `--kind verification`:
145
+
146
+ ```bash
147
+ planr log add --item <item-id> --kind verification \
148
+ --summary "Verified upload flow in browser: video plays after publish" \
149
+ --cmd "agent-browser snapshot http://localhost:3000/watch/1"
150
+ ```
151
+
152
+ `plan audit` checks for verification logs when a goal contract exists. Log persistent evidence, not transient states: a failure that you immediately fix belongs in the final log's narrative, not as a standalone failure log.
153
+
154
+ Settling commands (`done`, `close`, `review close`) report what they `unlocked` — every item that became ready because of that settlement — plus the item's `post_condition` and an evidence hint when downstream work depends on an item closed without `--cmd`/`--tests`.
155
+
156
+ ## Graph Inspection
157
+
158
+ Use critical lane for ordering risk:
159
+
160
+ ```bash
161
+ planr map lane --critical
162
+ ```
163
+
164
+ Use pressure for bottlenecks:
165
+
166
+ ```bash
167
+ planr map pressure
168
+ ```
169
+
170
+ Use trace for handoff:
171
+
172
+ ```bash
173
+ planr trace item <item-id>
174
+ ```
175
+
176
+ The trace should be enough for a new agent to recover the current item, linked logs, and linked blockers.
177
+
178
+ Use status, lookahead, and close preview before sequencing or closure:
179
+
180
+ ```bash
181
+ planr map status
182
+ planr map lookahead <item-id>
183
+ planr map preview --close <item-id>
184
+ ```
185
+
186
+ These commands expose readiness, downstream unlocks, closure blockers, approval requirements, open reviews, and manual conditions before mutating graph state.
187
+
188
+ ## Review Evidence
189
+
190
+ Review evidence is item-scoped proof, not a dump of the whole repository:
191
+
192
+ ```bash
193
+ planr review evidence <item-id>
194
+ planr review evidence <item-id> --pr-url https://example.invalid/pr/123
195
+ ```
196
+
197
+ Planr reports Git branch, commit, dirty state, files named by item logs/artifacts, unrelated dirty files, and optional PR URL context. It does not inline source file content by default.
198
+
199
+ ## Packages
200
+
201
+ Packages preserve reusable graph context outside the live database:
202
+
203
+ ```bash
204
+ planr export --include-plans --include-logs --template-name "Release checklist" --tag release --out planr-package.json
205
+ planr import planr-package.json --preview
206
+ planr import planr-package.json --confirm
207
+ ```
208
+
209
+ Package import is preview-first and confirmed explicitly. Imported packages restore items, links, contexts, logs, plan file snapshots, and review artifacts into the current map.
210
+
211
+ ## Graph Adaptation
212
+
213
+ Planr supports graph adaptation without relying on chat-only replanning:
214
+
215
+ - use `item breakdown` for decomposition;
216
+ - use `item insert --preview` before rewiring linked work and `--confirm` to apply;
217
+ - use `item amend` for future-work context;
218
+ - use `item replan --preview` before replacing pending child work and `--confirm` to apply;
219
+ - use `link add` and `link remove` for dependency changes;
220
+ - use `map preview --close`, `map unlocks`, `map lookahead`, and `map status` before closing or sequencing work;
221
+ - use `item cancel --preview` before cancellation;
222
+ - use `trace item` and logs for recovery.
@@ -0,0 +1,87 @@
1
+ # Testing
2
+
3
+ Planr has two test layers plus a release-grade V1.1 verification ladder.
4
+
5
+ ## In-Repo Tests
6
+
7
+ ```bash
8
+ cargo fmt --check
9
+ cargo clippy --all-targets -- -D warnings
10
+ cargo test
11
+ ```
12
+
13
+ Focused V1.1 checks should be run when their surfaces change:
14
+
15
+ ```bash
16
+ cargo test recovery_sweep -- --nocapture
17
+ cargo test local_review_workspace -- --nocapture
18
+ cargo test review_evidence -- --nocapture
19
+ cargo test template_export_import -- --nocapture
20
+ ```
21
+
22
+ ## Consumer E2E Project
23
+
24
+ The standalone consumer suite is a maintainer-local project that is not part of this repository. On maintainer machines it lives at:
25
+
26
+ ```bash
27
+ ~/projects/planr-test
28
+ ```
29
+
30
+ Contributors without that project should rely on the in-repo suite (`cargo test`), which covers the same CLI, MCP, and HTTP surfaces.
31
+
32
+ Run against the local native binary:
33
+
34
+ ```bash
35
+ cd ~/projects/planr
36
+ cargo build --release
37
+ cd ~/projects/planr-test
38
+ npm test
39
+ ```
40
+
41
+ Run through the npm package wrapper:
42
+
43
+ ```bash
44
+ cd ~/projects/planr
45
+ npm link
46
+ cd ~/projects/planr-test
47
+ npm link planr
48
+ npm run test:npm-planr
49
+ ```
50
+
51
+ The consumer suite exercises every public command group and subcommand, MCP stdio, local HTTP/SSE, import/export, review gates, install helpers, and generated plan files.
52
+
53
+ ## V1.1 Release Verification
54
+
55
+ Before calling V1.1 complete, run the full in-repo and consumer ladder:
56
+
57
+ ```bash
58
+ cargo fmt --check
59
+ cargo test
60
+ cargo clippy --all-targets -- -D warnings
61
+ scripts/build-release.sh
62
+ (cd dist && shasum -a 256 -c SHA256SUMS)
63
+ (cd dist/planr-1.0.0 && shasum -a 256 -c SHA256SUMS)
64
+ npm pack --dry-run
65
+ ```
66
+
67
+ Installer changes also require:
68
+
69
+ ```bash
70
+ /Users/kregenrek/.agents/skills/shellck/scripts/run_shellck.sh scripts/install.sh
71
+ PREFIX="$(mktemp -d)" PLANR_DOWNLOAD=1 PLANR_RELEASE_BASE_URL="file://$PWD/dist" scripts/install.sh
72
+ ```
73
+
74
+ Live behavior must be proved with:
75
+
76
+ - a fresh consumer project at `~/projects/planr-test`;
77
+ - MCP stdio contract checks against `docs/fixtures/mcp-contract.json`;
78
+ - localhost HTTP/SSE checks and the browser review workspace at `/review`;
79
+ - recovery sweep checks for stale, timed-out, and retryable work;
80
+ - Git/PR review evidence checks that do not inline source content;
81
+ - package export/import checks for templates, logs, plan files, and review artifacts;
82
+ - prompt output checks for CLI, MCP, and HTTP setup text;
83
+ - a forbidden-reference scrub across public repo files.
84
+
85
+ ## Contract Fixtures
86
+
87
+ `docs/fixtures/mcp-contract.json` is checked by the Rust E2E suite against live MCP stdio responses, install dry-runs, and the CLI reference. Update the fixture and `docs/MCP_CONTRACT.md` together when adding or removing MCP tools, resources, prompts, or install snippets.
@@ -0,0 +1,26 @@
1
+ # Troubleshooting
2
+
3
+ ## No Ready Items
4
+
5
+ ```bash
6
+ planr map show --json
7
+ planr map pressure
8
+ planr trace item <item-id>
9
+ ```
10
+
11
+ ## MCP Client Cannot See Tools
12
+
13
+ ```bash
14
+ planr doctor --client all
15
+ planr install codex --dry-run
16
+ planr install claude --dry-run
17
+ planr install cursor --dry-run
18
+ ```
19
+
20
+ ## Database Or Import Issues
21
+
22
+ ```bash
23
+ planr project show --json
24
+ planr import /path/to/repo --json
25
+ planr export --include-plans --include-logs --out planr-debug.json
26
+ ```
@@ -0,0 +1,92 @@
1
+ {
2
+ "tools": [
3
+ "planr_project_show",
4
+ "planr_map_show",
5
+ "planr_map_status",
6
+ "planr_map_preview",
7
+ "planr_map_unlocks",
8
+ "planr_map_lookahead",
9
+ "planr_plan_create",
10
+ "planr_plan_refine",
11
+ "planr_plan_split",
12
+ "planr_plan_check",
13
+ "planr_plan_audit",
14
+ "planr_plan_link",
15
+ "planr_map_build",
16
+ "planr_item_create",
17
+ "planr_item_breakdown",
18
+ "planr_item_insert",
19
+ "planr_item_amend",
20
+ "planr_item_replan",
21
+ "planr_pick_item",
22
+ "planr_pick_heartbeat",
23
+ "planr_pick_progress",
24
+ "planr_pick_pause",
25
+ "planr_pick_resume",
26
+ "planr_pick_stale",
27
+ "planr_recover_sweep",
28
+ "planr_approval_request",
29
+ "planr_approval_approve",
30
+ "planr_approval_deny",
31
+ "planr_approval_list",
32
+ "planr_artifact_add",
33
+ "planr_artifact_list",
34
+ "planr_artifact_show",
35
+ "planr_event_list",
36
+ "planr_debug_bundle",
37
+ "planr_log_add",
38
+ "planr_review_annotate",
39
+ "planr_review_ingest",
40
+ "planr_review_artifact",
41
+ "planr_review_evidence",
42
+ "planr_review_close",
43
+ "planr_close_item",
44
+ "planr_context_create",
45
+ "planr_search",
46
+ "planr_log_read"
47
+ ],
48
+ "resources": [
49
+ "planr://project/map",
50
+ "planr://project/context",
51
+ "planr://item/{id}",
52
+ "planr://plan/{id}",
53
+ "planr://log/{id}"
54
+ ],
55
+ "prompts": [
56
+ "planr-plan",
57
+ "planr-work",
58
+ "planr-review",
59
+ "planr-map",
60
+ "planr-summary"
61
+ ],
62
+ "unknown_tool_error": "unknown Planr MCP tool",
63
+ "install_fragments": {
64
+ "codex": [
65
+ "[mcp_servers.planr]",
66
+ "command = \"planr\"",
67
+ "args = [\"--db\""
68
+ ],
69
+ "claude": [
70
+ "claude mcp add planr",
71
+ "\"mcpServers\"",
72
+ "\"planr\""
73
+ ],
74
+ "cursor": [
75
+ ".cursor/mcp.json",
76
+ "\"mcpServers\"",
77
+ "\"planr\""
78
+ ]
79
+ },
80
+ "cli_reference_commands": [
81
+ "planr install codex|claude|cursor",
82
+ "planr prompt cli|mcp|http",
83
+ "planr mcp",
84
+ "planr review annotate",
85
+ "planr review ingest",
86
+ "planr review artifact",
87
+ "planr review evidence",
88
+ "planr review close",
89
+ "planr recover sweep",
90
+ "planr serve --port"
91
+ ]
92
+ }
@@ -0,0 +1,160 @@
1
+ # ADRs
2
+
3
+ ## ADR-001: Build Planr As A Self-Owned Product
4
+
5
+ Status: Accepted
6
+
7
+ ### Context
8
+
9
+ Planr needs to combine durable Markdown planning with executable graph coordination under one owned product surface.
10
+
11
+ ### Decision
12
+
13
+ Planr will be a new codebase and brand. Implementation, docs, assets, command names, and product vocabulary must be original unless explicitly retained under compatible license obligations.
14
+
15
+ ### Alternatives Considered
16
+
17
+ - Build only Markdown plans: preserves readable context but lacks graph concurrency.
18
+ - Build only a graph engine: strong execution state but weak product and implementation context.
19
+ - Build hosted SaaS first: too much scope for V1.
20
+
21
+ ### Consequences
22
+
23
+ - More initial engineering work.
24
+ - Cleaner product ownership.
25
+ - Better ability to design graph + Markdown as one system.
26
+
27
+ ### Risks
28
+
29
+ - Rebuilding core graph behavior can introduce bugs.
30
+ - Public contracts must be explicit before release.
31
+
32
+ ### Follow-Up Tasks
33
+
34
+ - TASK-FND-001
35
+ - TASK-DATA-001
36
+
37
+ ## ADR-002: Graph State In SQLite, Rich Context In Markdown
38
+
39
+ Status: Accepted
40
+
41
+ ### Context
42
+
43
+ Map item state needs atomic picks and link-based readiness. Human and agent context needs readable, versionable documents.
44
+
45
+ ### Decision
46
+
47
+ Use SQLite as the authoritative graph state store and `.planr/*.md` as the rich context layer.
48
+
49
+ ### Alternatives Considered
50
+
51
+ - Markdown only: simple, but no atomic concurrent picks.
52
+ - Database only: robust state, but poor narrative handoff.
53
+ - Hosted database: not local-first.
54
+
55
+ ### Consequences
56
+
57
+ - Requires reconciliation between graph state and plan documents.
58
+ - Gives users both machine reliability and readable context.
59
+
60
+ ### Risks
61
+
62
+ - Agents may treat Markdown checkboxes as state unless prompts and APIs are explicit.
63
+
64
+ ### Follow-Up Tasks
65
+
66
+ - TASK-DATA-001
67
+ - TASK-FND-003
68
+
69
+ ## ADR-003: MCP Is The Primary Cross-Agent Integration Surface
70
+
71
+ Status: Accepted
72
+
73
+ ### Context
74
+
75
+ Codex, Claude Code, and Cursor all have MCP integration paths, while their native skill/plugin systems differ.
76
+
77
+ ### Decision
78
+
79
+ Expose Planr through MCP tools, resources, and prompts first. Add client-specific wrappers where useful.
80
+
81
+ ### Alternatives Considered
82
+
83
+ - Separate plugin per client: more native but higher maintenance.
84
+ - CLI-only: universal but too prompt-dependent.
85
+
86
+ ### Consequences
87
+
88
+ - MCP schema design becomes part of the stable product contract.
89
+ - Prompts can expose Planr workflows as user-invoked commands.
90
+
91
+ ### Risks
92
+
93
+ - MCP clients vary in supported capabilities and approval behavior.
94
+
95
+ ### Follow-Up Tasks
96
+
97
+ - TASK-BE-003
98
+ - TASK-AI-002
99
+
100
+ ## ADR-004: Review/Fix Loop Is A Product Primitive
101
+
102
+ Status: Accepted
103
+
104
+ ### Context
105
+
106
+ Agent work needs scoped review, logs, and honest status. Map graphs can encode this as child items and reviews.
107
+
108
+ ### Decision
109
+
110
+ Every material change should be modelable as a parent gate with implementation or test child work and linked review, fix, and follow-up review work.
111
+
112
+ ### Alternatives Considered
113
+
114
+ - Close code items immediately after implementation.
115
+ - Use external PR review only.
116
+
117
+ ### Consequences
118
+
119
+ - Better completion quality.
120
+ - More graph nodes, but they encode real work.
121
+
122
+ ### Risks
123
+
124
+ - Small items may feel over-modeled unless lightweight defaults exist.
125
+
126
+ ### Follow-Up Tasks
127
+
128
+ - TASK-DATA-002
129
+ - TASK-AI-003
130
+
131
+ ## ADR-005: No Cloud Or Account System In V1
132
+
133
+ Status: Accepted
134
+
135
+ ### Context
136
+
137
+ The product must be useful locally and not create privacy or deployment complexity.
138
+
139
+ ### Decision
140
+
141
+ V1 has no Planr cloud account, billing, or hosted sync.
142
+
143
+ ### Alternatives Considered
144
+
145
+ - Hosted dashboard first.
146
+ - Optional sync in V1.
147
+
148
+ ### Consequences
149
+
150
+ - Simpler security model.
151
+ - Users own their data.
152
+
153
+ ### Risks
154
+
155
+ - Team collaboration beyond shared Git remains limited.
156
+
157
+ ### Follow-Up Tasks
158
+
159
+ - TASK-SEC-001
160
+ - TASK-REL-001