planr 1.9.0 → 1.10.0-alpha.2

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 (67) hide show
  1. package/README.md +32 -5
  2. package/docs/ARCHITECTURE.md +1 -1
  3. package/docs/RELEASE.md +37 -7
  4. package/docs/contracts/EVIDENCE_CONTRACT_V1.md +283 -0
  5. package/docs/contracts/fixtures/evidence/v1/examples/coverage-verdict.json +66 -0
  6. package/docs/contracts/fixtures/evidence/v1/examples/evidence-attempt.json +39 -0
  7. package/docs/contracts/fixtures/evidence/v1/examples/evidence-policy.json +117 -0
  8. package/docs/contracts/fixtures/evidence/v1/examples/evidence-receipt.json +93 -0
  9. package/docs/contracts/fixtures/evidence/v1/examples/evidence-waiver.json +31 -0
  10. package/docs/contracts/fixtures/evidence/v1/examples/proof-obligation.json +67 -0
  11. package/docs/contracts/fixtures/evidence/v1/examples/proof-preset.json +28 -0
  12. package/docs/contracts/fixtures/evidence/v1/examples/untrusted-evidence-proposal.json +20 -0
  13. package/docs/contracts/fixtures/evidence/v1/examples/verification-capability-instance.json +39 -0
  14. package/docs/contracts/fixtures/evidence/v1/examples/verification-capability-manifest.json +52 -0
  15. package/docs/contracts/fixtures/evidence/v1/negative/aborted-zero-exit-attempt.json +39 -0
  16. package/docs/contracts/fixtures/evidence/v1/negative/adapter-registration-missing-execution-contract.json +97 -0
  17. package/docs/contracts/fixtures/evidence/v1/negative/available-empty-probe-capability.json +27 -0
  18. package/docs/contracts/fixtures/evidence/v1/negative/blocked-coverage-with-stale-reason.json +27 -0
  19. package/docs/contracts/fixtures/evidence/v1/negative/empty-trust-bindings-receipt.json +72 -0
  20. package/docs/contracts/fixtures/evidence/v1/negative/failed-zero-exit-attempt.json +39 -0
  21. package/docs/contracts/fixtures/evidence/v1/negative/forged-trusted-receipt.json +35 -0
  22. package/docs/contracts/fixtures/evidence/v1/negative/inconclusive-clean-exit-attempt.json +39 -0
  23. package/docs/contracts/fixtures/evidence/v1/negative/inconclusive-coverage-with-blocked-reason.json +27 -0
  24. package/docs/contracts/fixtures/evidence/v1/negative/minimal-policy-missing-owned-inputs.json +5 -0
  25. package/docs/contracts/fixtures/evidence/v1/negative/mismatched-probe-execution-id-capability.json +42 -0
  26. package/docs/contracts/fixtures/evidence/v1/negative/passed-empty-attempt.json +22 -0
  27. package/docs/contracts/fixtures/evidence/v1/negative/policy-default-preset-unregistered.json +111 -0
  28. package/docs/contracts/fixtures/evidence/v1/negative/policy-weakening-without-waiver.json +111 -0
  29. package/docs/contracts/fixtures/evidence/v1/negative/process-probe-missing-output-limits.json +49 -0
  30. package/docs/contracts/fixtures/evidence/v1/negative/satisfied-empty-coverage-verdict.json +14 -0
  31. package/docs/contracts/fixtures/evidence/v1/negative/skipped-zero-exit-attempt.json +39 -0
  32. package/docs/contracts/fixtures/evidence/v1/negative/stale-coverage-with-inconclusive-reason.json +27 -0
  33. package/docs/contracts/fixtures/evidence/v1/negative/timed-out-zero-exit-attempt.json +39 -0
  34. package/docs/contracts/fixtures/evidence/v1/negative/unavailable-zero-exit-attempt.json +39 -0
  35. package/docs/contracts/fixtures/evidence/v1/negative/unbound-waiver.json +21 -0
  36. package/docs/contracts/fixtures/evidence/v1/negative/unsatisfied-coverage-without-gap.json +63 -0
  37. package/docs/contracts/fixtures/evidence/v1/negative/waived-coverage-forbidden-gap-reason.json +28 -0
  38. package/docs/contracts/fixtures/evidence/v1/negative/waived-coverage-missing-waiver-id.json +27 -0
  39. package/docs/contracts/fixtures/evidence/v1/schemas/evidence-contract-v1.schema.json +2705 -0
  40. package/docs/documentation/CONTRACT.md +1 -1
  41. package/docs/documentation/COVERAGE.md +8 -5
  42. package/docs/documentation/INFORMATION_ARCHITECTURE.md +1 -1
  43. package/docs/fixtures/mcp-contract.json +18 -0
  44. package/npm/native/darwin-arm64/planr +0 -0
  45. package/npm/native/darwin-arm64/planr-host-capability-validator +0 -0
  46. package/npm/native/darwin-x86_64/planr +0 -0
  47. package/npm/native/darwin-x86_64/planr-host-capability-validator +0 -0
  48. package/npm/native/linux-arm64/planr +0 -0
  49. package/npm/native/linux-arm64/planr-host-capability-validator +0 -0
  50. package/npm/native/linux-x86_64/planr +0 -0
  51. package/npm/native/linux-x86_64/planr-host-capability-validator +0 -0
  52. package/package.json +15 -2
  53. package/plugins/planr/.claude-plugin/plugin.json +1 -1
  54. package/plugins/planr/.codex-plugin/plugin.json +1 -1
  55. package/plugins/planr/skills/planr-goal/SKILL.md +7 -4
  56. package/plugins/planr/skills/planr-loop/SKILL.md +11 -8
  57. package/plugins/planr/skills/planr-loop/references/recovery-and-verification.md +5 -4
  58. package/plugins/planr/skills/planr-plan/SKILL.md +1 -1
  59. package/plugins/planr/skills/planr-review/SKILL.md +5 -1
  60. package/plugins/planr/skills/planr-status/SKILL.md +3 -1
  61. package/plugins/planr/skills/planr-verify-web/SKILL.md +9 -6
  62. package/plugins/planr/skills/planr-work/SKILL.md +17 -3
  63. package/scripts/host-capability-experiment.mjs +2477 -0
  64. package/scripts/host-capability-runtime/v1/schemas/host-capability-expected-manifest.schema.json +377 -0
  65. package/scripts/host-capability-runtime/v1/schemas/host-capability-observed-raw.schema.json +439 -0
  66. package/scripts/host-capability-runtime/v1/schemas/host-capability-provenance.schema.json +178 -0
  67. package/scripts/planr-host-capability-validator +51 -0
@@ -34,7 +34,7 @@ Use these terms exactly. Prefer the lowercase form in prose unless it starts a s
34
34
  | pick | An atomic lease of one ready item to one worker. | assignment, claim unless explaining the concept |
35
35
  | worker | The identity holding the active pick. | agent when ownership specifically matters |
36
36
  | log | Durable evidence or progress attached to an item. | transcript |
37
- | verification log | A log with kind `verification` that records a live oracle. | test result alone |
37
+ | verification log | A claim-only narrative log for a live oracle; frozen pre-Evidence compatibility may inspect it. | binding Evidence receipt or coverage verdict |
38
38
  | review | A graph gate that checks evidence and can create fix/follow-up work. | approval; approvals are a separate human gate |
39
39
  | approval | An explicit requested/approved/denied human decision on an item. | review |
40
40
  | context | A durable discovery, decision, constraint, or goal contract. | memory |
@@ -4,7 +4,7 @@ This is the canonical inventory that maps shipped public surfaces to repository
4
4
 
5
5
  ## Published route inventory
6
6
 
7
- The site currently owns 63 MDX routes. Next.js also emits the landing page and framework support routes during the production build.
7
+ The site currently owns 66 MDX routes. Next.js also emits the landing page and framework support routes during the production build.
8
8
 
9
9
  | Section | Published routes |
10
10
  | --- | --- |
@@ -13,9 +13,9 @@ The site currently owns 63 MDX routes. Next.js also emits the landing page and f
13
13
  | For Agents | `/docs/agents`, `/docs/agents/quickstart`, `/docs/agents/prompt-recipes`, `/docs/agents/skills` |
14
14
  | Integrations | `/docs/integrations`, `/docs/integrations/codex`, `/docs/integrations/claude-code`, `/docs/integrations/cursor`, `/docs/integrations/grok-build`, `/docs/integrations/pi`, `/docs/integrations/generic-mcp`, `/docs/integrations/cli-only` |
15
15
  | Plugins | `/docs/plugins`, `/docs/plugins/switchloom` |
16
- | Concepts | `/docs/concepts`, `/docs/concepts/local-first-model`, `/docs/concepts/plans-and-map`, `/docs/concepts/graph-and-readiness`, `/docs/concepts/picks-and-leases`, `/docs/concepts/evidence-and-context`, `/docs/concepts/reviews-and-approvals`, `/docs/concepts/recovery-packages-and-closure` |
17
- | Guides | `/docs/guides`, `/docs/guides/daily-worker-loop`, `/docs/guides/parallel-coordination`, `/docs/guides/handoff-and-resume`, `/docs/guides/review-and-fix-loops`, `/docs/guides/recover-interrupted-work`, `/docs/guides/packages-and-reuse`, `/docs/guides/recipes` |
18
- | Reference | `/docs/reference`, `/docs/reference/cli`, `/docs/reference/cli-generated`, `/docs/reference/mcp`, `/docs/reference/mcp-schemas-generated`, `/docs/reference/http-api`, `/docs/reference/configuration-and-storage`, `/docs/reference/data-and-status`, `/docs/reference/outputs-and-errors`, `/docs/reference/support-matrix`, `/docs/reference/maintenance` |
16
+ | Concepts | `/docs/concepts`, `/docs/concepts/local-first-model`, `/docs/concepts/plans-and-map`, `/docs/concepts/graph-and-readiness`, `/docs/concepts/picks-and-leases`, `/docs/concepts/evidence-and-context`, `/docs/concepts/evidence-trust-model`, `/docs/concepts/reviews-and-approvals`, `/docs/concepts/recovery-packages-and-closure` |
17
+ | Guides | `/docs/guides`, `/docs/guides/daily-worker-loop`, `/docs/guides/parallel-coordination`, `/docs/guides/handoff-and-resume`, `/docs/guides/review-and-fix-loops`, `/docs/guides/recover-interrupted-work`, `/docs/guides/packages-and-reuse`, `/docs/guides/evidence-scenarios`, `/docs/guides/recipes` |
18
+ | Reference | `/docs/reference`, `/docs/reference/cli`, `/docs/reference/cli-generated`, `/docs/reference/mcp`, `/docs/reference/mcp-schemas-generated`, `/docs/reference/http-api`, `/docs/reference/evidence`, `/docs/reference/configuration-and-storage`, `/docs/reference/data-and-status`, `/docs/reference/outputs-and-errors`, `/docs/reference/support-matrix`, `/docs/reference/maintenance` |
19
19
  | Contributing | `/docs/contributing`, `/docs/contributing/repository-setup`, `/docs/contributing/architecture`, `/docs/contributing/docs-authoring`, `/docs/contributing/testing`, `/docs/contributing/security-and-privacy` |
20
20
  | Operations | `/docs/operations`, `/docs/operations/release`, `/docs/operations/versioning-and-migrations`, `/docs/operations/docs-deployment`, `/docs/operations/health-and-diagnostics`, `/docs/operations/rollback`, `/docs/operations/documentation-governance` |
21
21
  | Help | `/docs/troubleshooting`, `/docs/faq` |
@@ -32,9 +32,11 @@ The site currently owns 63 MDX routes. Next.js also emits the landing page and f
32
32
  | Items, links, statuses, readiness | `src/model.rs`, `src/app/repository/item.rs`, `src/app/lease.rs` | `/docs/concepts/graph-and-readiness` |
33
33
  | Picks, leases, concurrency, progress | `src/app/lease.rs`, `src/app/flow.rs` | `/docs/concepts/picks-and-leases`, `/docs/guides/parallel-coordination` |
34
34
  | Logs, contexts, artifacts, live evidence | `src/app/application.rs`, `src/app/inspection.rs` | `/docs/concepts/evidence-and-context` |
35
+ | Binding Evidence trust model | `src/evidence/`, `src/app/evidence.rs`, `docs/contracts/EVIDENCE_CONTRACT_V1.md` | `/docs/concepts/evidence-trust-model`, `/docs/reference/evidence`, `/docs/guides/evidence-scenarios` |
35
36
  | Reviews, approvals, fix chains | `src/app/review.rs`, `src/app/flow.rs`, `src/app/application.rs` | `/docs/concepts/reviews-and-approvals`, `/docs/guides/review-and-fix-loops` |
36
37
  | Recovery, conditions, packages, closure | `src/app/recovery.rs`, `src/app/packages.rs`, `src/app/flow.rs` | `/docs/concepts/recovery-packages-and-closure`, `/docs/guides/recover-interrupted-work`, `/docs/guides/packages-and-reuse` |
37
38
  | Worker loop, handoff, recipes | application flow and lease owners | `/docs/guides/daily-worker-loop`, `/docs/guides/handoff-and-resume`, `/docs/guides/recipes` |
39
+ | Copy-paste Evidence scenarios | `apps/docs/scripts/generate-evidence-examples.mjs`, `tests/fixtures/evidence/docs/` | `/docs/guides/evidence-scenarios` |
38
40
 
39
41
  ## CLI, MCP, HTTP, and data contracts
40
42
 
@@ -47,6 +49,7 @@ The executable and schema sources decide exact inventory. Editorial pages explai
47
49
  | MCP transport, resources, prompts, results | `src/app/mcp.rs`, `src/integrations.rs`, fixture | `/docs/reference/mcp` |
48
50
  | Every MCP tool input schema | live MCP discovery, schema generator | `/docs/reference/mcp-schemas-generated` |
49
51
  | Local HTTP/SSE and review routes | `src/app/http.rs` | `/docs/reference/http-api` |
52
+ | Evidence CLI/MCP/HTTP contracts and classifications | `src/evidence/`, `src/cli/evidence.rs`, `src/app/evidence.rs` | `/docs/reference/evidence` |
50
53
  | Environment, installers, storage, repository files | CLI/install/storage owners | `/docs/reference/configuration-and-storage` |
51
54
  | DTOs, IDs, statuses, links, SQLite tables, packages | `src/model.rs`, `src/storage/schema.rs` | `/docs/reference/data-and-status` |
52
55
  | JSON output, error codes, exit/recovery behavior | application and surface adapters | `/docs/reference/outputs-and-errors` |
@@ -88,7 +91,7 @@ The executable and schema sources decide exact inventory. Editorial pages explai
88
91
 
89
92
  ## Audit completion checklist
90
93
 
91
- - [x] All 63 current MDX routes are explicitly inventoried.
94
+ - [x] All 66 current MDX routes are explicitly inventoried.
92
95
  - [x] Every public product, CLI, MCP, HTTP, data, client, contributor, and operations surface has a current target and canonical source owner.
93
96
  - [x] Generated CLI and MCP inventories are separated from editorial guidance and mechanically checked.
94
97
  - [x] Retired aliases are isolated in `apps/docs/redirects.mjs` and resolve to a current route.
@@ -20,7 +20,7 @@ This file records the implemented route and navigation contract. Routes are publ
20
20
 
21
21
  ## Implemented route tree
22
22
 
23
- The 62 MDX files below are the current page tree and must agree with every `meta.json` file and `COVERAGE.md`.
23
+ The 66 MDX files below are the current page tree and must agree with every `meta.json` file and `COVERAGE.md`.
24
24
 
25
25
  ```text
26
26
  /docs
@@ -42,6 +42,24 @@
42
42
  "planr_artifact_show",
43
43
  "planr_event_list",
44
44
  "planr_debug_bundle",
45
+ "planr_evidence_policy",
46
+ "planr_evidence_obligation_add",
47
+ "planr_evidence_obligation_list",
48
+ "planr_evidence_obligation_show",
49
+ "planr_evidence_migrate",
50
+ "planr_evidence_rebind",
51
+ "planr_evidence_classifications",
52
+ "planr_evidence_capability_list",
53
+ "planr_evidence_capability_show",
54
+ "planr_evidence_run",
55
+ "planr_evidence_import",
56
+ "planr_evidence_host_capture_import",
57
+ "planr_evidence_host_capture_run",
58
+ "planr_evidence_attempts",
59
+ "planr_evidence_receipts",
60
+ "planr_evidence_coverage",
61
+ "planr_evidence_explain",
62
+ "planr_evidence_readiness",
45
63
  "planr_eval_suite_check",
46
64
  "planr_eval_run",
47
65
  "planr_eval_show",
Binary file
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "planr",
3
- "version": "1.9.0",
3
+ "version": "1.10.0-alpha.2",
4
4
  "description": "Local-first planning and execution coordination for coding agents.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -14,6 +14,9 @@
14
14
  "files": [
15
15
  "npm/bin/planr.js",
16
16
  "npm/native",
17
+ "scripts/host-capability-experiment.mjs",
18
+ "scripts/host-capability-runtime",
19
+ "scripts/planr-host-capability-validator",
17
20
  "plugins",
18
21
  "README.md",
19
22
  "LICENSE.md",
@@ -29,12 +32,19 @@
29
32
  "verify:pnpm-workspace": "node scripts/verify-pnpm-workspace.mjs",
30
33
  "verify:release-eval-gate": "node scripts/test-release-eval-gate.mjs",
31
34
  "verify:release-script": "node scripts/test-release-script.mjs",
35
+ "verify:change-classifier": "node scripts/test-verification-policy.mjs",
36
+ "verify:runner": "node scripts/test-verification-runner.mjs",
37
+ "verify:ci-router": "node scripts/test-ci-router.mjs",
38
+ "verify:docs-deployment": "node scripts/test-docs-deployment.mjs",
39
+ "classify:changes": "node scripts/classify-changes.mjs",
40
+ "verification:run": "node scripts/verification-runner.mjs run",
41
+ "verification:verify": "node scripts/verification-runner.mjs verify",
32
42
  "pack:check": "npm pack --dry-run",
33
43
  "docs:dev": "pnpm --filter @planr/docs dev",
34
44
  "docs:alchemy:dev": "pnpm --filter @planr/docs alchemy:dev",
35
45
  "docs:build": "pnpm --filter @planr/docs build",
36
46
  "docs:start": "pnpm --filter @planr/docs start",
37
- "docs:deploy": "pnpm --filter @planr/docs run deploy",
47
+ "docs:deploy": "node scripts/deploy-docs.mjs",
38
48
  "docs:destroy": "pnpm --filter @planr/docs run destroy",
39
49
  "docs:content": "pnpm --filter @planr/docs content",
40
50
  "docs:typecheck": "pnpm --filter @planr/docs typecheck",
@@ -45,12 +55,15 @@
45
55
  "docs:verify-agent-journey": "pnpm --filter @planr/docs verify:agent-journey",
46
56
  "docs:verify-agent-landing": "pnpm --filter @planr/docs verify:agent-landing",
47
57
  "docs:verify-concepts": "cargo build --bin planr && pnpm --filter @planr/docs verify:concepts",
58
+ "docs:verify-evidence-docs": "pnpm --filter @planr/docs verify:evidence-docs",
48
59
  "docs:verify-maintenance": "pnpm --filter @planr/docs verify:maintenance",
49
60
  "docs:sync-linux-portability": "pnpm --filter @planr/docs sync:linux-portability",
50
61
  "docs:verify-deployment": "pnpm --filter @planr/docs verify:deployment",
51
62
  "docs:verify-release": "pnpm --filter @planr/docs verify:release",
52
63
  "docs:verify-release-live": "pnpm --filter @planr/docs verify:release-live",
53
64
  "docs:verify-clean-install": "pnpm --filter @planr/docs verify:clean-install",
65
+ "docs:evidence-examples:generate": "cargo build --bin planr && pnpm --filter @planr/docs evidence-examples:generate",
66
+ "docs:evidence-examples:check": "cargo build --bin planr && pnpm --filter @planr/docs evidence-examples:check",
54
67
  "verify:switchloom-cross-product": "node scripts/verify-switchloom-cross-product.mjs",
55
68
  "docs:reference:generate": "cargo build --bin planr && pnpm --filter @planr/docs reference:generate",
56
69
  "docs:verify-reference": "cargo build --bin planr && pnpm --filter @planr/docs reference:check && pnpm --filter @planr/docs verify:reference"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "planr",
3
3
  "description": "Skill-driven planning and execution loop for coding agents: one planr entry point, an autonomous planr-loop, and evidence-backed task graph skills powered by the planr CLI.",
4
- "version": "1.9.0",
4
+ "version": "1.10.0-alpha.2",
5
5
  "author": {
6
6
  "name": "instructa"
7
7
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "planr",
3
- "version": "1.9.0",
3
+ "version": "1.10.0-alpha.2",
4
4
  "description": "Skill-driven planning and execution loop for coding agents: one $planr entry point, an autonomous $planr-loop, and evidence-backed task graph skills powered by the planr CLI.",
5
5
  "author": {
6
6
  "name": "instructa",
@@ -30,17 +30,20 @@ planr plan check <plan-id>
30
30
  planr map build --from <plan-id>
31
31
  ```
32
32
 
33
- Fill required plan sections directly. Replace the placeholder task with typically 4-8 independently verifiable `TASK-00n` slices before `planr map build`. Preserve real execution order with `blocks` links. When registry routes use `work_type`, annotate tasks before mapping or retag them afterward; this is prep work, not a user question.
33
+ Fill required plan sections directly. Replace the placeholder task with independently verifiable `TASK-00n` slices before `planr map build`. A small coherent change is one implementation item plus one signal-bearing independent review; do not split mechanical stages into separate implementation/review pairs. Larger scopes still use multiple slices where ownership, dependencies, or independently observable outcomes genuinely differ. Preserve real execution order with `blocks` links. When registry routes use `work_type`, annotate tasks before mapping or retag them afterward; this is prep work, not a user question.
34
+
35
+ When the repository provides a versioned verification policy and source-bound receipt runner, make that policy the verification owner in the plan. Record the selected profile, exact receipt path/digest, source revision, and the command that validates the receipt. Do not enumerate broad suites independently in every task when the policy already selects them.
34
36
 
35
37
  ## Durable Contract
36
38
 
37
- Store one contract per plan:
39
+ For plans with binding Evidence, require the repository to define the observation obligations and capability policy before execution, then run readiness. Store one contract per plan:
38
40
 
39
41
  ```bash
40
- planr context add "GOAL CONTRACT <plan-id>: DONE when every in-scope item is closed with log evidence, all reviews are complete, approvals are clear, and a live verification log proves <goal oracle>. Iteration budget: 10." --tag goal-contract
42
+ planr evidence readiness --scope plan --id <plan-id>
43
+ planr context add "GOAL CONTRACT <plan-id>: DONE when every in-scope item is closed with implementation evidence, all reviews are complete, approvals are clear, and canonical Evidence coverage proves <goal oracle>. Iteration budget: 10." --tag goal-contract
41
44
  ```
42
45
 
43
- Never weaken it mid-run. Workers use `planr pick --plan <plan-id>`; termination uses `planr plan audit <plan-id> --json`. Reviews are required only where they add signal; evidence-backed setup work may close directly.
46
+ Never weaken it mid-run. Workers use `planr pick --plan <plan-id>`; termination uses `planr plan audit <plan-id> --json`. Reviews are required only where they add signal; evidence-backed setup work may close directly. Where deployment is in scope, the contract must retain human deployment approval and a bounded live oracle against the deployed result.
44
47
 
45
48
  ## Hand Off
46
49
 
@@ -13,16 +13,19 @@ Evaluation subcommands run only when the user explicitly requests them, the sele
13
13
 
14
14
  Recover the stored `GOAL CONTRACT <plan-id>` from Planr every iteration. If absent, store one that requires settled items with evidence, complete reviews, clear approvals, and a live oracle. Never weaken it.
15
15
 
16
+ At the start of the host thread that drives an active goal, run `planr stop activate --plan <plan-id>` once. Codex hosts should let Planr use `CODEX_THREAD_ID`; otherwise provide a stable explicit session with `--session <id>`. Leave the binding active until `planr plan audit <plan-id> --json` returns `holds: true`. Run `planr stop deactivate --plan <plan-id>` only for explicit user cancellation or after a durable ownership transfer has activated the same plan in the successor session; a budgeted handoff alone must not deactivate an unfinished goal.
17
+
16
18
  Each iteration follows the Planr stage protocols:
17
19
 
18
20
  1. `planr plan audit <plan-id> --json`; `holds: true` exits.
19
- 2. Use `$planr-plan` or `$planr-task-graph` only when scope or graph structure is missing.
20
- 3. Dispatch `$planr-work` for exactly one ready item scoped to `<plan-id>`; makers must use `planr pick --work-type code --plan <plan-id>`, never an unscoped pick, and finish implementation with `planr done <item-id> ... --review`.
21
- 4. Run the target-platform oracle and record `planr log add --item <id> --kind verification --summary ... --cmd ...`.
22
- 5. Dispatch `$planr-review`; findings create fix work, while `complete --close-target` settles the target.
23
- 6. Repeat from audit.
21
+ 2. For a binding Evidence plan, run `planr evidence readiness --scope plan --id <plan-id>`. Repair typed schema/capability/runtime gaps before product work. Use `planr evidence rebind --input <file>` and the returned preview digest only when an immutable adapter/obligation binding must be corrected without changing acceptance semantics.
22
+ 3. Use `$planr-plan` or `$planr-task-graph` only when scope or graph structure is missing.
23
+ 4. Dispatch `$planr-work` for exactly one ready item scoped to `<plan-id>`; makers must use `planr pick --work-type code --plan <plan-id>`, never an unscoped pick, select the repository verification policy, and finish implementation with `planr done <item-id> ... --review`.
24
+ 5. Run the configured target-platform method with `planr evidence run --input <run-file>`, then evaluate `planr evidence coverage --scope criterion --id <criterion-id>` and inspect gaps with `planr evidence explain ...`. Deployment still requires prior human approval and a bounded live oracle. Narrative logs never substitute for binding receipts.
25
+ 6. Dispatch `$planr-review`; the checker independently inspects the diff and validates the exact-source receipt, replaying only cheap, missing, failing, or explicitly high-risk evidence. Findings create fix work, while `complete --close-target` settles the target.
26
+ 7. Repeat from audit.
24
27
 
25
- One picked item per iteration. Use plain `done` only for low-signal setup/inspection work. Maker and checker stay separate when the host supports another agent; a maker never self-reviews when an independent checker is available, and never manufactures independence by changing worker identity. A worker may use `done --next`, which never returns its own review.
28
+ One picked item per iteration. A small coherent change stays one implementation item with one signal-bearing review; do not create a new review boundary for every mechanical stage or for an already-reviewed successful live smoke. Use plain `done` only for low-signal setup/inspection work. Maker and checker stay separate when the host supports another agent; a maker never self-reviews when an independent checker is available, and never manufactures independence by changing worker identity. The reviewer must exercise independent judgment even when it relies on a green receipt rather than replaying an expensive gate. A worker may use `done --next`, which never returns its own review.
26
29
 
27
30
  Pick packets explain null results and include `remaining`; follow their repair command. Destructive or out-of-repository effects require `planr approval request`. Two iterations without map movement must stop. On success or budget exhausted, finish with `$planr-summary`.
28
31
 
@@ -41,9 +44,9 @@ For generated Codex roles: The `spawn_agent` tool call itself must include `agen
41
44
 
42
45
  ## Verification And Recovery
43
46
 
44
- “Done” means the feature ran. For web dispatch `$planr-verify-web`; for CLI execute the built binary; for API use real requests; for iOS launch the simulator. Log the replayable command. If the capability is missing, record a blocker context, request approval, and pause—never fake proof.
47
+ “Done” means the feature ran. For web dispatch `$planr-verify-web`; for CLI execute the built binary; for API use real requests; for iOS launch the simulator. Log the replayable command. A passing bounded live oracle is evidence for the existing review boundary, not a reason to start another full reviewer replay. If the capability is missing, record a blocker context, request approval, and pause—never fake proof.
45
48
 
46
- Recovery starts in a fresh session with audit, map state, the stored contract, and the next scoped pick. Read [recovery and platform details](references/recovery-and-verification.md) only when that branch is active.
49
+ Recovery starts in a fresh session with audit, map state, Evidence readiness/explain, the stored contract, and the next scoped pick. A terminal unchanged Stop gap remains terminal; use `planr stop resume --plan <plan-id>` only after an explicit operator decision to reopen its bounded continuation window. Read [recovery and platform details](references/recovery-and-verification.md) only when that branch is active.
47
50
 
48
51
  ## Hard Rules
49
52
 
@@ -16,9 +16,10 @@ Use `planr pick stale --older-than-seconds 900` before releasing abandoned owner
16
16
  Verification:
17
17
 
18
18
  ```bash
19
- planr log add --item <item-id> --kind verification \
20
- --summary "verified <flow>: <observed outcome>" \
21
- --cmd "<exact replayable command>"
19
+ planr evidence readiness --scope criterion --id <criterion-id>
20
+ planr evidence run --input <run-file>
21
+ planr evidence coverage --scope criterion --id <criterion-id>
22
+ planr evidence explain --scope criterion --id <criterion-id>
22
23
  ```
23
24
 
24
- Use browser automation for web, the built binary for CLI, real requests for API/backend, and simulator launch plus exercised flow for iOS. If tooling is unavailable, store blocker context, request approval, and pause.
25
+ Use a capability whose declared observations cover the criterion: browser automation for rendered web behavior, the built binary for CLI, real requests for API/backend, and simulator launch plus exercised flow for iOS. If tooling is unavailable, preserve the typed blocker, request approval when appropriate, and pause. Do not replace it with a weaker method that observes different facts.
@@ -68,6 +68,6 @@ Match by the task's actual work (UI/components/styling -> a `frontend` route, AP
68
68
 
69
69
  Planning is complete only when `planr plan check <plan-id>` passes and the next command is clear: split further, build map, or ask the user for a blocking decision.
70
70
 
71
- When the map is built, linked, and tagged, end by naming the execution handoff explicitly — the user should never have to guess the next prompt: `Use $planr-loop on plan <build-plan-id>. Stop condition: all items closed with evidence, reviews complete, live verification logged.` (On hosts with a /goal primitive, `$planr-goal` wraps the same loop for long-running autonomous runs.)
71
+ When the map is built, linked, and tagged, end by naming the execution handoff explicitly — the user should never have to guess the next prompt: `Use $planr-loop on plan <build-plan-id>. Stop condition: all items closed with evidence, reviews complete, canonical Evidence coverage holds.` (On hosts with a /goal primitive, `$planr-goal` wraps the same loop for long-running autonomous runs.)
72
72
 
73
73
  `plan check` rejects empty scaffolds: build plans must have content in `## Scope Decision`, `## Verification`, and `## Acceptance Criteria`; product plans must have content in `## Problem`, `## Requirements`, and `## Success Criteria` of `PRODUCT_SPEC.md`. Write those sections before checking — do not pad them to satisfy the gate.
@@ -18,7 +18,9 @@ planr --json pick --work-type review
18
18
 
19
19
  `--work-type review` leases only review items, so a checker never accidentally takes maker work. Add `--plan <plan-id>` when your dispatch names a plan so the lease stays inside that scope. The pick packet inlines the target item and its evidence logs under `target` — one command is enough to see what is being audited, its status (`in_review` while waiting on you), files, and verification commands. If you already hold a review id, `planr --json trace item <review-id>` returns the same packet. Use `planr log list --item <target-id>` or `planr map show --json` only for deeper reads.
20
20
 
21
- Inspect the actual changed files and re-run the logged verification evidence. Then close the review exactly once:
21
+ Inspect the actual changed files and acceptance criteria, then independently judge whether the evidence proves them. When the repository owns a versioned verification policy, verify the logged receipt against its exact source revision, policy digest, changed-file digest, selected gates, command results, and artifact digests. Use the repository's receipt validator (for this repository, `npm run verification:verify -- --receipt <path> --base <base-revision> --head <source-revision>`), not a visual read of JSON.
22
+
23
+ Replay only evidence that is cheap, missing, failing, or explicitly high-risk. An already-green expensive gate bound to the reviewed source is normally validated from its receipt rather than rerun. Receipt validation does not replace judgment: inspect the diff for security, correctness, scope, and acceptance-criteria gaps, and record a finding when the policy selection or receipt is inadequate. Then close the review exactly once:
22
24
 
23
25
  ```bash
24
26
  planr review close <review-id> --verdict complete --reviewer <your-id> --close-target
@@ -36,8 +38,10 @@ planr review close <review-id> --verdict not-complete --reviewer <your-id> --fin
36
38
 
37
39
  - Findings must be specific and actionable.
38
40
  - Missing tests are findings when acceptance criteria need proof.
41
+ - A stale, mismatched, unvalidated, or insufficiently scoped receipt is a finding.
39
42
  - Architecture or ownership drift is a finding when it creates duplicate policy or state owners.
40
43
  - If evidence is insufficient, use `--verdict unclear` rather than complete.
44
+ - Deployment remains gated by explicit approval and a bounded live oracle where applicable. A successful live smoke does not by itself require another broad build or a second full review; replay it only under the same cheap/missing/failing/explicitly-high-risk rule.
41
45
 
42
46
  ## Single-Agent Mode
43
47
 
@@ -34,9 +34,11 @@ When a loop or `/goal` run asks whether its stop condition holds, use the one-ca
34
34
 
35
35
  ```bash
36
36
  planr plan audit <plan-id> --json
37
+ planr evidence readiness --scope plan --id <plan-id>
38
+ planr evidence explain --scope plan --id <plan-id>
37
39
  ```
38
40
 
39
- It reads the stored contract, evaluates every clause with evidence (items settled, reviews complete, approvals clear, verification logged), and answers `holds: true/false` with the open items listed per clause. Report `contract holds` or `contract open` plus the exact unmet clauses straight from the audit output. Use `planr search "GOAL CONTRACT"` only to read the contract text itself.
41
+ Audit answers `holds: true/false` from settled items, reviews, approvals, and canonical Evidence coverage. Readiness reports configuration/runtime blockers before execution; explain reports exact receipt applicability and gaps. Report `contract holds` or `contract open` plus the exact unmet clauses straight from these outputs. Use `planr search "GOAL CONTRACT"` only to read the contract text itself.
40
42
 
41
43
  ## Verdicts
42
44
 
@@ -41,15 +41,16 @@ Detect a running dev server before anything else and use it. Never start a secon
41
41
 
42
42
  Exercise the flow the item changed — not the homepage. Interact, assert on rendered output, capture a screenshot when the tier supports it.
43
43
 
44
- Then log evidence on the item:
44
+ Use the repository's configured web capability to create trusted Evidence, then evaluate coverage:
45
45
 
46
46
  ```bash
47
- planr log add --item <item-id> --kind verification \
48
- --summary "live verification (<tier>): <what was exercised and observed>" \
49
- --cmd "<exact replayable command>"
47
+ planr evidence readiness --scope criterion --id <criterion-id>
48
+ planr evidence run --input <run-file-for-the-configured-web-method>
49
+ planr evidence coverage --scope criterion --id <criterion-id>
50
+ planr evidence explain --scope criterion --id <criterion-id>
50
51
  ```
51
52
 
52
- `--kind verification` marks the log as live-verify evidence; `planr plan audit` checks for it when a goal contract exists.
53
+ The observation contract decides what must be proved. Native Browser, CDP, Playwright, Computer Use, and HTTP probes are configurable methods, not a universal ranking. HTTP can fully prove an HTTP criterion but cannot satisfy rendered interaction, persistence, accessibility, console, or visual observations it never captured.
53
54
 
54
55
  Attach screenshots or traces as artifacts on the item:
55
56
 
@@ -58,7 +59,9 @@ planr artifact add "verify-web screenshot" --item <item-id> --path <screenshot-p
58
59
  planr artifact add "verify-web recording" --item <item-id> --path <recording.mp4> --kind video
59
60
  ```
60
61
 
61
- The replay command is mandatory. The reviewer reruns it instead of trusting this run; a verification that cannot be replayed is not evidence.
62
+ The replay contract and trusted method identity are mandatory. The reviewer validates the receipt and reruns it only when it is cheap, missing, failing, or explicitly high-risk; a verification that cannot be replayed when needed is not evidence. A successful bounded live smoke joins the existing coherent review boundary and does not automatically trigger another full build or reviewer replay.
63
+
64
+ For a deployment oracle, require an approved deployment decision before the deploy begins. After deployment, keep the live check bounded to the changed routes, content, or interaction and record the deployed source/receipt identity in the summary.
62
65
 
63
66
  ## When Verification Is Impossible
64
67
 
@@ -22,15 +22,27 @@ The pick output is one flat work packet — item, links, logs, runtime, recovery
22
22
  planr done <item-id> --summary "what changed" --files path-a --files path-b --cmd "exact verification command" --tests "exact test command" --review
23
23
  ```
24
24
 
25
+ Before choosing ad hoc checks, inspect the repository's versioned verification policy. When it supplies a runner, use that runner once for the changed-file set and preserve its exact-source receipt. For this repository the canonical flow is:
26
+
27
+ ```bash
28
+ npm run verification:run -- --receipt .planr/receipts/<name>.json --base <base-revision> --head <source-revision>
29
+ npm run verification:verify -- --receipt .planr/receipts/<name>.json --base <base-revision> --head <source-revision>
30
+ ```
31
+
32
+ Record the receipt path, digest, source revision, selected profile/gates, and copy-paste replayable validation command in the completion evidence. Do not manually add broader suites that the selected policy does not require, and do not rerun an expensive green gate merely to hand work to the reviewer.
33
+
25
34
  Put build/serve commands in `--cmd` and test runs in `--tests` — both are recorded as evidence. When the pick packet carries a `routing` block, also report the registry profile you actually ran on: add `--profile <profile-id>` to `done`/`log add`, or export `PLANR_PROFILE` once per session. It is part of the evidence — a mismatch with the declared route is advisory (never blocks the close) and surfaces in `planr trace item` so silent host overrides get caught. Include the decisive output line in `--summary` (e.g. "12 tests passed", "GET /videos returned 3 entries"): reviewers see your recorded command strings, not your terminal, so the summary must carry what you observed, not just what you ran. Single-quote `--files` values that contain `$` (route files like `watch.$videoId.tsx`), or the shell expands them before planr sees them. `done --review` writes the completion log, requests the review, and moves the item to `in_review` (you keep ownership; it is waiting on the gate, not abandoned) — the response names the target's new status and the plan-scoped reviewer pick command; add `--next` to pick the following item in the same call. Without `--review` it closes the item directly (only for items that need no review gate). Running `done` on a ready item you never picked adopts it: the lease is written retroactively under your worker id so the review always has a maker. The response reports what your settlement `unlocked`, echoes the item's post condition, and hints when downstream work depends on an item closed without command/test evidence.
26
35
 
27
- Live verification (browser flow, executed binary, real requests) gets its own log kind so `plan audit` can find it:
36
+ Binding verification (browser flow, executed binary, real requests) must produce a trusted Evidence receipt and coverage verdict:
28
37
 
29
38
  ```bash
30
- planr log add --item <item-id> --kind verification --summary "verified <flow>: <observed outcome>" --cmd "<exact command>"
39
+ planr evidence readiness --scope criterion --id <criterion-id>
40
+ planr evidence run --input <run-file>
41
+ planr evidence coverage --scope criterion --id <criterion-id>
42
+ planr evidence explain --scope criterion --id <criterion-id>
31
43
  ```
32
44
 
33
- The `--cmd` value must be copy-paste replayable: a real shell command (or a small script you committed), never a prose transcript like "start server; curl /; check stats". A reviewer replays your command verbatim if it cannot run, the verification cannot be independently confirmed.
45
+ The configured method must be copy-paste replayable: a real shell command, host capture, or committed verifier, never prose such as "start server; curl /; check stats". Reviewers validate the exact-source receipt and selectively replay cheap, missing, failing, or explicitly high-risk evidence. `planr log add` remains useful for narrative handoffs, but a free-form `kind=verification` claim has no binding closure authority.
34
46
 
35
47
  Log persistent evidence, not transient noise: a failure you immediately fixed belongs in the final log's narrative, not as a standalone failure log. Only record a failure separately when it blocks the item.
36
48
 
@@ -59,6 +71,8 @@ planr approval request <item-id> --reason "release approval"
59
71
  planr approval list --open
60
72
  ```
61
73
 
74
+ Deployment is always such a gate: obtain approval before deployment and record a bounded live oracle afterward. Keep that oracle on the same coherent implementation/review boundary; a successful smoke does not automatically require another full build or review replay.
75
+
62
76
  ## Rules
63
77
 
64
78
  - Do not work on multiple picked items unless the user explicitly asks.