planr 1.5.2 → 1.7.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 +14 -1
- package/docs/ARCHITECTURE.md +10 -0
- package/docs/CI.md +5 -4
- package/docs/CLI_REFERENCE.md +18 -3
- package/docs/IMPORT.md +3 -1
- package/docs/MCP_CONTRACT.md +5 -0
- package/docs/TASK_GRAPH_MODEL.md +50 -0
- package/docs/TESTING.md +1 -1
- package/docs/fixtures/mcp-contract.json +12 -0
- package/docs/planr-spec/API_AND_DATA_MODEL.md +2 -0
- package/docs/planr-spec/EVAL_CONTRACT_V1.md +2072 -0
- package/docs/planr-spec/README.md +1 -0
- package/docs/planr-spec/TECH_ARCHITECTURE.md +2 -0
- package/docs/release-candidates/planr-v1.5.2.md +30 -38
- 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 +4 -1
- package/plugins/planr/.claude-plugin/plugin.json +1 -1
- package/plugins/planr/.codex-plugin/plugin.json +1 -1
package/README.md
CHANGED
|
@@ -136,10 +136,23 @@ with log evidence, all reviews are closed complete, and a live verification log
|
|
|
136
136
|
the feature working in the browser. Iteration budget: 10.
|
|
137
137
|
```
|
|
138
138
|
|
|
139
|
-
Mid-project work (a new feature, refactor, or fix on an existing project) works the same — it gets its own feature-scoped plan and extends the existing map. Both journeys with example prompts: [Two Journeys](docs/SKILLS.md#two-journeys-new-project-vs-existing-project).
|
|
139
|
+
Mid-project work (a new feature, refactor, or fix on an existing project) works the same — it gets its own feature-scoped plan and extends the existing map. Both journeys with example prompts: [Two Journeys](docs/SKILLS.md#two-journeys-new-project-vs-existing-project). Coding agents inspect progress with the compact default `planr map show` or, preferably, `planr map show --json`. The tree preserves exact dependency vocabulary while marking satisfied edges as `blocks✓`; active `blocks` stay red. The boxed `planr map show --view diagram` renderer is exclusively for human supervision and uses neutral `then` routes once those dependencies are satisfied. Agents must not invoke it. Humans can add `--full` for complete status, title, worker, critical-lane, and pressure details. Interactive map output colors states automatically; `--no-color` and `NO_COLOR` keep it plain.
|
|
140
|
+
|
|
141
|
+
To supervise an agent from a second terminal, leave the agent running in terminal A and watch its scoped graph in terminal B:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
planr map watch --plan <plan-id>
|
|
145
|
+
# optional: exit after every scoped item settles
|
|
146
|
+
planr map watch --plan <plan-id> --until-settled
|
|
147
|
+
# optional: inspect complete node details
|
|
148
|
+
planr map watch --plan <plan-id> --full
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
The watcher is likewise a human-only observer. It defaults to the condensed diagram view, polls the local SQLite graph once per second, and redraws only when state changes. Coding agents must not invoke `map watch`; they should use `map show --json` snapshots or the `/v1/events/stream` SSE endpoint instead. Use Ctrl-C to stop.
|
|
140
152
|
|
|
141
153
|
## What's new
|
|
142
154
|
|
|
155
|
+
- **1.6.0 — Human map observation:** Added a condensed boxed diagram, live two-terminal watching, accessible state colors, and clearer satisfied dependency routes. These views are intentionally for human supervision; agents keep using the default tree or JSON snapshots. See [Task Graph Model](docs/TASK_GRAPH_MODEL.md), [CLI Reference](docs/CLI_REFERENCE.md), and the [1.6.0 changelog](CHANGELOG.md#160---2026-07-21).
|
|
143
156
|
- **1.5.2 — Standalone core, optional Switchloom:** Planr consumes provider-neutral repository declarations and route evidence only; it works without any routing files, and requested-only routing metadata is not execution proof. Optional model-routing lifecycle is external, with [Switchloom v0.2.1](https://github.com/instructa/switchloom/releases/tag/v0.2.1) verified as the repository-local handoff outside Planr. Start with [Model Routing](docs/MODEL_ROUTING.md), [Switchloom](https://switchloom.ai), the [Switchloom repository](https://github.com/instructa/switchloom), its tagged [setup quickstart](https://github.com/instructa/switchloom/blob/v0.2.1/README.md#setup-from-the-website) and [lifecycle docs](https://github.com/instructa/switchloom/blob/v0.2.1/docs/preset-composition.md#repository-lifecycle-commands), and the [Changelog](CHANGELOG.md).
|
|
144
157
|
- **1.4.0 — Verified presets:** Added policy-driven composition, evaluation, signed registry evidence, and the public catalog. See the [1.4.0 release notes](https://github.com/instructa/planr/releases/tag/v1.4.0).
|
|
145
158
|
- **1.3.0 — Native host hooks:** Added automatic session-state injection and loop recovery for supported hosts. See the [Hooks guide](docs/HOOKS.md) and [1.3.0 release notes](https://github.com/instructa/planr/releases/tag/v1.3.0).
|
package/docs/ARCHITECTURE.md
CHANGED
|
@@ -49,6 +49,16 @@ Planr V1 is a single Rust binary with explicit module ownership. The crate stays
|
|
|
49
49
|
- `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.
|
|
50
50
|
- `src/util.rs`: small CLI-boundary utilities. Owns ids, timestamps, path helpers, output formatting, and safe file writes.
|
|
51
51
|
|
|
52
|
+
## Eval Contract V1/V1.1 Ownership
|
|
53
|
+
|
|
54
|
+
The frozen product contract lives in `docs/planr-spec/EVAL_CONTRACT_V1.md` until implementation promotes it into code. Its V1.1 efficiency-evidence amendment is additive and keeps the same owner split:
|
|
55
|
+
|
|
56
|
+
- repository EvalSuite manifests and fixtures are authored inputs;
|
|
57
|
+
- the suite loader owns validation, safe path resolution, normalization, canonical ordering, and digests;
|
|
58
|
+
- SQLite owns immutable suite snapshots, runs, case results, samples, attempt lineage, metering-basis provenance, comparisons, invalidations, rescoring provenance, and eval evidence references;
|
|
59
|
+
- the comparison engine owns verdicts, reason codes, matched effective-treatment compatibility, and derived failure-inclusive efficiency metrics;
|
|
60
|
+
- existing map/log/review/approval state remains authoritative for work closure, so eval evidence may support a review but must never close or reopen items by itself.
|
|
61
|
+
|
|
52
62
|
## Boundary Rules
|
|
53
63
|
|
|
54
64
|
- Command parsing belongs in `src/cli.rs`; process startup belongs in `src/main.rs`; command execution belongs under `src/app/`.
|
package/docs/CI.md
CHANGED
|
@@ -27,10 +27,11 @@ Run the full local gate:
|
|
|
27
27
|
scripts/ci-local.sh
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
-
`scripts/ci-local.sh` also runs the external consumer E2E project when
|
|
30
|
+
`scripts/ci-local.sh` also runs the external consumer E2E project when the sibling `planr-test` checkout exists. Override its location with `PLANR_TEST_DIR`:
|
|
31
31
|
|
|
32
32
|
```bash
|
|
33
|
-
|
|
33
|
+
PLANR_TEST_DIR=/path/to/planr-test scripts/ci-local.sh
|
|
34
|
+
cd /path/to/planr-test
|
|
34
35
|
npm test
|
|
35
36
|
npm run test:npm-planr
|
|
36
37
|
```
|
|
@@ -38,10 +39,10 @@ npm run test:npm-planr
|
|
|
38
39
|
Run local security and leak checks:
|
|
39
40
|
|
|
40
41
|
```bash
|
|
41
|
-
|
|
42
|
+
npm run security:check
|
|
42
43
|
```
|
|
43
44
|
|
|
44
|
-
This uses BetterLeaks for secret history scanning and Trivy for filesystem vulnerability, secret, and misconfiguration scanning.
|
|
45
|
+
This checks tracked files for machine-specific home paths, rejects forbidden staged paths, uses BetterLeaks for secret history scanning, and runs Trivy for filesystem vulnerability, secret, and misconfiguration scanning. If Lefthook is installed, run `lefthook install` once to activate the staged-path guard for commits and pushes.
|
|
45
46
|
|
|
46
47
|
## Supply Chain
|
|
47
48
|
|
package/docs/CLI_REFERENCE.md
CHANGED
|
@@ -13,7 +13,8 @@ planr plan check <plan-id>
|
|
|
13
13
|
planr plan audit <plan-id>
|
|
14
14
|
planr plan show <plan-id>
|
|
15
15
|
planr plan archive <plan-id>
|
|
16
|
-
planr map show [--plan <plan-id>]
|
|
16
|
+
planr map show [--plan <plan-id>] [--view tree|diagram] [--full]
|
|
17
|
+
planr map watch [--plan <plan-id>] [--view tree|diagram] [--full] [--interval-ms 1000] [--no-clear] [--until-settled]
|
|
17
18
|
planr map build --from <plan-id>
|
|
18
19
|
planr map lane --critical
|
|
19
20
|
planr map pressure
|
|
@@ -58,6 +59,14 @@ planr review ingest <item-id> (--from feedback.json|--stdin)
|
|
|
58
59
|
planr review artifact <review-item-id> [--out .planr/reviews/custom.review.md]
|
|
59
60
|
planr review evidence <item-id> [--pr-url https://...]
|
|
60
61
|
planr review close <review-item-id> --verdict complete|not-complete|unclear [--close-target]
|
|
62
|
+
planr eval suite-check --input suite.json
|
|
63
|
+
planr eval run --input run.json
|
|
64
|
+
planr eval show suite|run|comparison|invalidation <id>
|
|
65
|
+
planr eval compare <baseline-run-id> <candidate-run-id> [--policy-digest default]
|
|
66
|
+
planr eval gate <comparison-id>
|
|
67
|
+
planr eval invalidate run|comparison <target-id> --reason "..." [--reason-code code] [--replacement-hint "..."]
|
|
68
|
+
planr eval rescore <run-id> [--id <new-run-id>]
|
|
69
|
+
planr eval evidence-ref run|comparison <target-id> log|review|artifact <attachment-id> --item <item-id>
|
|
61
70
|
planr close [item-id] --summary "..." [--next]
|
|
62
71
|
planr done [item-id] --summary "..." [--files a --files b] [--cmd "..."] [--tests "..."] [--review] [--next] [--profile <id>]
|
|
63
72
|
planr context add "text" [--item <item-id>] [--tag discovery]
|
|
@@ -77,7 +86,7 @@ planr import <file> [--preview] [--confirm]
|
|
|
77
86
|
planr export --out planr.json [--include-plans] [--include-logs] [--template-name "..."] [--tag tag]
|
|
78
87
|
```
|
|
79
88
|
|
|
80
|
-
Global flags: `--db <path>`, `--json`, `--no-color`. They are valid in both positions: `planr --json pick` and `planr pick --json` behave identically.
|
|
89
|
+
Global flags: `--db <path>`, `--json`, `--no-color`. They are valid in both positions: `planr --json pick` and `planr pick --json` behave identically. Human map output uses ANSI status colors only when stdout is an interactive terminal. `--no-color`, `NO_COLOR` (even when empty), `TERM=dumb`, redirected stdout, and JSON disable color; `PLANR_FORCE_COLOR=1` is available for compatible terminal wrappers and tests, but never overrides an explicit opt-out.
|
|
81
90
|
|
|
82
91
|
## JSON Envelope Convention
|
|
83
92
|
|
|
@@ -94,7 +103,11 @@ With `--json`, responses follow one convention so agents never guess where data
|
|
|
94
103
|
|
|
95
104
|
`plan audit <plan-id>` is the one-call contract verdict for a plan's map scope. JSON shape for machine consumers: top-level `holds` (bool) and `clauses[]` with `clause` (name) and `pass` (bool) — e.g. `planr plan audit <id> --json | jq '.holds, (.clauses[] | {clause, pass})'`. It evaluates four clauses with evidence: `items_settled` (open items listed), `reviews_complete` (open review items listed), `approvals_clear` (requested/denied approvals listed), and `verification_logged` (logs with `--kind verification` on scope items). The stored goal contract (`planr context --tag goal-contract` mentioning the plan id) is included; the verification clause is binding only when such a contract exists. `holds: true` means the contract is satisfied — loop agents use this as their stop condition instead of stitching the verdict together from `map status`, `log list`, and `approval list`. When the contract is open, `next` carries the exact next command derived from the first actionable gap: build the map, pick the ready review or work item (plan-scoped), resolve the blocking approval, inspect stalled leases, or log the missing verification. Also available as MCP `planr_plan_audit`.
|
|
96
105
|
|
|
97
|
-
`map show --
|
|
106
|
+
`map show` defaults to the compact `tree` view used by agents and existing terminal workflows; coding agents should prefer `map show --json` when they need structured state. The tree keeps the canonical edge vocabulary visible: active dependencies render as red `blocks`, while an edge satisfied by a `closed` or `closed_partial` upstream renders as dim `blocks✓`. `map show --view diagram` is exclusively a human-supervision view and coding agents must not invoke it. It provides fixed-width boxes with at most two content lines in `ICON ITEM-ID → TITLE` form, translating satisfied `blocks` edges to neutral `then` while active or cancelled blockers remain `blocks`; `hands_to`, joins, disconnected components, and cycle warnings remain explicit. Humans can add `--full` for verbose nodes with status words, complete wrapped titles, active workers, critical-lane markers, and downstream pressure. `--full` is rejected with tree view. This is a read-only presentation over the same canonical map projection; JSON/MCP/HTTP always retain the stored `kind: "blocks"` and are identical across diagram detail choices.
|
|
107
|
+
|
|
108
|
+
`map show --plan <plan-id>` narrows either human view to one plan's items and the links among them, with plan-scoped counts — plan-scoped goal runs on shared boards audit their slice, not the whole board. An unknown plan id is an error, never a silent unscoped view. Also available on MCP `planr_map_show` (`plan`) and HTTP `GET /v1/projects/{id}/map?plan=<plan-id>`.
|
|
109
|
+
|
|
110
|
+
`map watch` is the read-only live companion for a second human terminal. Coding agents must not invoke it; they should use `map show --json` snapshots or `planr serve` plus `/v1/events/stream`. Watch defaults to the condensed `--view diagram`, polls every 1000 ms, compares the canonical scoped projection, and clears/redraws an interactive terminal only when graph state changes. `--full`, `--view tree`, `--plan <plan-id>`, `--interval-ms <n>` (minimum 100), `--no-clear`, and `--until-settled` control presentation and lifetime; Ctrl-C uses normal process interruption. JSON mode remains rejected because watch is intentionally human-only.
|
|
98
111
|
|
|
99
112
|
`context list --tag <tag>` filters notes by the tag they were stored with (`context add --tag`), so e.g. the goal contract is recoverable with `planr context list --tag goal-contract` instead of scanning all notes.
|
|
100
113
|
|
|
@@ -124,6 +137,8 @@ With `--json`, responses follow one convention so agents never guess where data
|
|
|
124
137
|
|
|
125
138
|
`review close` writes `.planr/reviews/<review-item-id>.review.md` and registers it as a review artifact. A `not-complete` or `unclear` verdict creates fix and follow-up review work; the follow-up review gates the same target item, so the chain keeps working with `--close-target`. With `--close-target` (complete verdicts only) the reviewed item is closed in the same command, provided it already has a completion log; the artifact is rendered after the target transition, so it snapshots the final target status. `--close-target` is also available through MCP `planr_review_close` and HTTP `POST /v1/reviews/{id}/close` (`"close_target": true`). `review close` responses include the same `remaining` progress snapshot as `done` and `close`. `--reviewer <id>` records the checker's identity on the review log, artifact, and event (defaults to the worker id), keeping maker and checker distinguishable in the audit trail. Closing an already-settled review fails with error code `already_closed` instead of silently duplicating evidence logs. The maker/checker split is derived, not declared: `review_mode` compares the closing reviewer identity against the target item's lease holder and reports `single_agent`, `independent`, or `unattributed` in the response, review log, artifact, and event — no ceremony note required. An `unattributed` close explains itself in the output: it means the target has no recorded lease (work was never picked or its lease was released), not that the reviewer's identity was missing.
|
|
126
139
|
|
|
140
|
+
`eval` exposes the same stored evaluation services to CLI and MCP. Every eval JSON response is one document with the frozen envelope `ok`, `command`, `object`, `warnings`, `reasons`, and `error`; MCP tools return the same envelope inside the text content, including `isError` tool results. `suite-check` reports command `eval.suite.check`, stores or verifies an immutable suite snapshot, `run` starts a run from a JSON envelope and can record cases/samples plus a terminal status, `compare` persists a verdict from two stored runs, and `gate` exits non-zero for `regressed` or `insufficient_evidence` while still printing the verdict, blocker, effects, uncertainty, coverage/freshness gates, and deeper-read commands. Eval exit codes are fixed: `0` for accepted command outcomes, `1` for regression or promotion-gate failure, `2` for insufficient evidence, `3` for invalid or unsafe input, and `4` for infrastructure errors such as missing stored runs. Error objects include `code`, `message`, `reasons`, and `field`. `invalidate` records invalidation evidence for a run or comparison, and `rescore` starts a new run linked back to the source run. `evidence-ref` attaches a run or comparison to an existing log, review item, or artifact for audit/package portability; it is never closure authority and never changes map item status. MCP mirrors these operations as `planr_eval_suite_check`, `planr_eval_run`, `planr_eval_show`, `planr_eval_compare`, `planr_eval_gate`, `planr_eval_invalidate`, `planr_eval_rescore`, and `planr_eval_evidence_ref`. A repository-owned smoke suite lives at `examples/eval/planr-lifecycle-smoke.suite.json`; recalculate fixture digests before using it outside repo-local examples.
|
|
141
|
+
|
|
127
142
|
`trace item` on a review item inlines the target item and its evidence logs under `target`, so a reviewer's first trace already contains what is being audited. The human (non-JSON) mode renders the packet: status, owner, links, logs. When the item has a declared route, a run profile, or a route observation, the trace gains a `routing` section — the declared route next to every run's actual client/profile and, when supplied, its independent requested → resolved → effective model/effort/context-fork stages, transition reason, policy/binding provenance, and per-dimension metering confidence. Unknown effective host values remain `null`/`unavailable`; requested values are never copied forward as proof. MCP `planr_trace_item` returns the identical JSON shape.
|
|
128
143
|
|
|
129
144
|
`doctor` also reports the agent registry in all states without ever failing: absent (informational hint), degraded (parse error with line context), or loaded with profile/route counts, validation warnings, and per-artifact drift — a rendered role file whose content no longer matches what the current registry would render is flagged `drifted` with a `planr install <client> --force` hint, while files without the generated-from header are the user's (`manual`) and never flagged.
|
package/docs/IMPORT.md
CHANGED
|
@@ -7,10 +7,12 @@ planr import planr-package.json --preview
|
|
|
7
7
|
planr import planr-package.json --confirm
|
|
8
8
|
```
|
|
9
9
|
|
|
10
|
-
Planr packages are local-first JSON files created by `planr export`. They carry graph items, links, contexts, optional logs, optional plan file snapshots, and review artifacts.
|
|
10
|
+
Planr packages are local-first JSON files created by `planr export`. They carry graph items, links, contexts, optional logs, optional eval evidence refs, optional plan file snapshots, and review artifacts.
|
|
11
11
|
|
|
12
12
|
Imports are preview-first. Preview reports package metadata, create counts, and conflicting item ids before mutating the current project.
|
|
13
13
|
|
|
14
|
+
Eval evidence exports only when logs are included. Packages carry immutable eval suite snapshots, runs, case results, raw samples, comparisons, invalidations, and evidence refs so imported refs resolve to local eval records and comparison verdicts can be reproduced from restored run evidence. Import preflights the whole eval graph before inserting package rows: duplicate immutable ids inside the package must be byte/field-identical, suite/run/comparison/invalidation/ref dependencies must resolve, case sample ids must match nested samples, and eval refs must have `closure_authority: false`. Existing immutable eval ids are accepted only when their stored content exactly matches the package, and imported eval timestamps/provenance are preserved. Review refs must point at a real `work_type=review` item linked to the claimed item. Restoring audit provenance never closes work or changes map ownership.
|
|
15
|
+
|
|
14
16
|
Planr packages are local-first JSON. For encrypted sharing, review the JSON locally and encrypt the file with your team's standard tool, for example:
|
|
15
17
|
|
|
16
18
|
```bash
|
package/docs/MCP_CONTRACT.md
CHANGED
|
@@ -41,6 +41,7 @@ Required groups:
|
|
|
41
41
|
- approval request, approve, deny, and list
|
|
42
42
|
- artifact add, list, and show
|
|
43
43
|
- event list and debug bundle preview
|
|
44
|
+
- eval suite check, run, show, compare, gate, invalidate, rescore, and evidence refs
|
|
44
45
|
- trace item, log add, and log read (including three-stage route observations)
|
|
45
46
|
- provider-neutral agent registry reads and route overrides
|
|
46
47
|
- review annotate, ingest, artifact, evidence, and close
|
|
@@ -60,6 +61,10 @@ Review feedback ingestion is advisory:
|
|
|
60
61
|
|
|
61
62
|
HTTP mirrors the same rule: `GET /v1/reviews/:id/artifact` is read-only; `POST /v1/reviews/:id/artifact` writes an artifact explicitly.
|
|
62
63
|
|
|
64
|
+
## Eval Evidence Contract
|
|
65
|
+
|
|
66
|
+
`planr_eval_evidence_ref` mirrors `planr eval evidence-ref`: it attaches an eval run or comparison id to an existing log, review item, or artifact. The returned eval envelope records `closure_authority: false`; eval verdicts are audit evidence only and never close, approve, or otherwise mutate map item status.
|
|
67
|
+
|
|
63
68
|
## Install Contract
|
|
64
69
|
|
|
65
70
|
`planr install <client> --dry-run` prints the complete client-owned MCP, role, skill, and hook-reconciliation paths for Codex, Claude Code, and Cursor without writing them. Non-dry install writes only repository-local files, with this ownership contract:
|
package/docs/TASK_GRAPH_MODEL.md
CHANGED
|
@@ -60,6 +60,12 @@ planr link add <design-item> <implementation-item> --type blocks
|
|
|
60
60
|
|
|
61
61
|
Use `blocks` for hard ordering. Use softer link types only when the product contract for that type is documented and tested.
|
|
62
62
|
|
|
63
|
+
Structured output always keeps that canonical `blocks` kind. Human rendering adds
|
|
64
|
+
current satisfaction state without mutating it: an upstream `closed` or
|
|
65
|
+
`closed_partial` item renders as dim `blocks✓` in the compact tree and neutral `then`
|
|
66
|
+
in the human-only diagram. Open, failed, and cancelled upstream items still render as
|
|
67
|
+
red `blocks`; cancellation does not satisfy readiness.
|
|
68
|
+
|
|
63
69
|
## Picking
|
|
64
70
|
|
|
65
71
|
Picking is the concurrency boundary:
|
|
@@ -155,6 +161,50 @@ Settling commands (`done`, `close`, `review close`) report what they `unlocked`
|
|
|
155
161
|
|
|
156
162
|
## Graph Inspection
|
|
157
163
|
|
|
164
|
+
Coding agents use the compact default tree or `map show --json`. They must not
|
|
165
|
+
invoke the diagram renderer. The boxed workflow diagram is exclusively for a
|
|
166
|
+
person scanning the graph shape and current state:
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
planr map show
|
|
170
|
+
planr map show --view diagram
|
|
171
|
+
planr map show --plan <plan-id> --view diagram
|
|
172
|
+
planr map show --plan <plan-id> --view diagram --full
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
The default diagram keeps every box to at most two content lines in
|
|
176
|
+
`ICON ITEM-ID → TITLE` form. It still labels readiness-blocking routes, joins,
|
|
177
|
+
disconnected components, and cycles. Active dependencies use `blocks`; satisfied
|
|
178
|
+
dependencies use neutral `then`. Add `--full` for the previous verbose node
|
|
179
|
+
layout with status words, complete wrapped titles, critical items, downstream
|
|
180
|
+
pressure, and active workers. It is only a human renderer: coding agents do not
|
|
181
|
+
invoke it, the SQLite map
|
|
182
|
+
remains authoritative, the default `map show` view stays `tree`, and `--json`
|
|
183
|
+
returns the same projection regardless of diagram detail.
|
|
184
|
+
|
|
185
|
+
Human map states are colorized automatically on an interactive terminal while
|
|
186
|
+
retaining their symbols and words. `--no-color`, `NO_COLOR`, `TERM=dumb`, pipes,
|
|
187
|
+
and JSON stay plain.
|
|
188
|
+
|
|
189
|
+
For a person to observe an agent live, use a second terminal:
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
# terminal A: agent/worker continues to pick, log, review, and close work
|
|
193
|
+
# terminal B:
|
|
194
|
+
planr map watch --plan <plan-id>
|
|
195
|
+
planr map watch --plan <plan-id> --until-settled
|
|
196
|
+
planr map watch --plan <plan-id> --full
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
`map watch` is human-only; coding agents must not invoke it. Watch defaults to
|
|
200
|
+
the condensed diagram, polls once per second, and redraws only
|
|
201
|
+
after a canonical graph change. `--full`, `--view tree`, `--interval-ms`, and
|
|
202
|
+
`--no-clear` are available for detailed, compact-tree, or append-only
|
|
203
|
+
observation. It records no graph events. Agents use `map show --json` or the
|
|
204
|
+
local `/v1/events/stream` SSE endpoint instead.
|
|
205
|
+
Machine consumers should use JSON snapshots or the local
|
|
206
|
+
`/v1/events/stream` SSE endpoint.
|
|
207
|
+
|
|
158
208
|
Use critical lane for ordering risk:
|
|
159
209
|
|
|
160
210
|
```bash
|
package/docs/TESTING.md
CHANGED
|
@@ -67,7 +67,7 @@ npm pack --dry-run
|
|
|
67
67
|
Installer changes also require:
|
|
68
68
|
|
|
69
69
|
```bash
|
|
70
|
-
|
|
70
|
+
$HOME/.agents/skills/shellck/scripts/run_shellck.sh scripts/install.sh
|
|
71
71
|
PREFIX="$(mktemp -d)" PLANR_DOWNLOAD=1 PLANR_RELEASE_BASE_URL="file://$PWD/dist" scripts/install.sh
|
|
72
72
|
```
|
|
73
73
|
|
|
@@ -42,6 +42,14 @@
|
|
|
42
42
|
"planr_artifact_show",
|
|
43
43
|
"planr_event_list",
|
|
44
44
|
"planr_debug_bundle",
|
|
45
|
+
"planr_eval_suite_check",
|
|
46
|
+
"planr_eval_run",
|
|
47
|
+
"planr_eval_show",
|
|
48
|
+
"planr_eval_compare",
|
|
49
|
+
"planr_eval_gate",
|
|
50
|
+
"planr_eval_invalidate",
|
|
51
|
+
"planr_eval_rescore",
|
|
52
|
+
"planr_eval_evidence_ref",
|
|
45
53
|
"planr_log_add",
|
|
46
54
|
"planr_review_annotate",
|
|
47
55
|
"planr_review_ingest",
|
|
@@ -100,6 +108,10 @@
|
|
|
100
108
|
"planr review artifact",
|
|
101
109
|
"planr review evidence",
|
|
102
110
|
"planr review close",
|
|
111
|
+
"planr eval suite-check",
|
|
112
|
+
"planr eval compare",
|
|
113
|
+
"planr eval gate",
|
|
114
|
+
"planr eval evidence-ref",
|
|
103
115
|
"planr recover sweep",
|
|
104
116
|
"planr agents list",
|
|
105
117
|
"planr agents check",
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# API And Data Model
|
|
2
2
|
|
|
3
|
+
Eval Contract v1, including the additive v1.1 efficiency-evidence amendment, is frozen in [EVAL_CONTRACT_V1.md](EVAL_CONTRACT_V1.md). That document owns the canonical eval manifest fields, normalized snapshot, stored objects, attempt lineage, metering basis, effective treatment identity, derived efficiency metrics, status values, reason codes, evidence identities, response examples, exit codes, database rules, and safety constraints. This file keeps the higher-level product API summary.
|
|
4
|
+
|
|
3
5
|
## Storage Locations
|
|
4
6
|
|
|
5
7
|
- SQLite: authoritative map graph state, picks, contexts, logs, runs, events, search indexes.
|