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
@@ -0,0 +1,39 @@
1
+ {
2
+ "id": "eatt-timed-out-zero-exit",
3
+ "schema_version": "evidence.contract.v1",
4
+ "criterion_id": "criterion-api-health",
5
+ "obligation_id": "pob-planr-api-health-v1",
6
+ "capability_instance_id": "vcinst-planr-http-process-v1",
7
+ "started_at": "2026-07-28T12:00:05Z",
8
+ "ended_at": "2026-07-28T12:00:06Z",
9
+ "status": "timed_out",
10
+ "resolved_command": {
11
+ "kind": "command",
12
+ "command": ["curl", "-fsS", "http://127.0.0.1:4173/health"],
13
+ "cwd": "$PLANR_REPOSITORY_ROOT"
14
+ },
15
+ "exit": {
16
+ "exit_code": 0,
17
+ "signal": null,
18
+ "error": null
19
+ },
20
+ "retry_lineage": {
21
+ "attempt_number": 1,
22
+ "max_attempts": 1,
23
+ "previous_attempt_ids": []
24
+ },
25
+ "stdout_digest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
26
+ "stderr_digest": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
27
+ "raw_result": {
28
+ "kind": "artifact",
29
+ "artifact_id": "artifact-http-response",
30
+ "digest": "sha256:8888888888888888888888888888888888888888888888888888888888888888"
31
+ },
32
+ "artifacts": [],
33
+ "output_bounds": {
34
+ "stdout_bytes": 2,
35
+ "stderr_bytes": 0,
36
+ "stdout_truncated": false,
37
+ "stderr_truncated": false
38
+ }
39
+ }
@@ -0,0 +1,39 @@
1
+ {
2
+ "id": "eatt-unavailable-zero-exit",
3
+ "schema_version": "evidence.contract.v1",
4
+ "criterion_id": "criterion-api-health",
5
+ "obligation_id": "pob-planr-api-health-v1",
6
+ "capability_instance_id": "vcinst-planr-http-process-v1",
7
+ "started_at": "2026-07-28T12:00:05Z",
8
+ "ended_at": "2026-07-28T12:00:06Z",
9
+ "status": "unavailable",
10
+ "resolved_command": {
11
+ "kind": "command",
12
+ "command": ["curl", "-fsS", "http://127.0.0.1:4173/health"],
13
+ "cwd": "$PLANR_REPOSITORY_ROOT"
14
+ },
15
+ "exit": {
16
+ "exit_code": 0,
17
+ "signal": null,
18
+ "error": null
19
+ },
20
+ "retry_lineage": {
21
+ "attempt_number": 1,
22
+ "max_attempts": 1,
23
+ "previous_attempt_ids": []
24
+ },
25
+ "stdout_digest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
26
+ "stderr_digest": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
27
+ "raw_result": {
28
+ "kind": "artifact",
29
+ "artifact_id": "artifact-http-response",
30
+ "digest": "sha256:8888888888888888888888888888888888888888888888888888888888888888"
31
+ },
32
+ "artifacts": [],
33
+ "output_bounds": {
34
+ "stdout_bytes": 2,
35
+ "stderr_bytes": 0,
36
+ "stdout_truncated": false,
37
+ "stderr_truncated": false
38
+ }
39
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "id": "ewaiver-unbound",
3
+ "schema_version": "evidence.contract.v1",
4
+ "scope": {
5
+ "kind": "item",
6
+ "id": "item-example"
7
+ },
8
+ "observation_ids": [
9
+ "obs-http-200"
10
+ ],
11
+ "reason": "temporary manual exception",
12
+ "created_by": "user@example.com",
13
+ "created_at": "2026-07-28T12:00:00Z",
14
+ "expires_at": "2026-07-29T12:00:00Z",
15
+ "approval_ref": "approval-123",
16
+ "audit_trail": [
17
+ {
18
+ "event": "created"
19
+ }
20
+ ]
21
+ }
@@ -0,0 +1,63 @@
1
+ {
2
+ "id": "cverdict-unsatisfied-no-gap",
3
+ "schema_version": "evidence.contract.v1",
4
+ "scope": {
5
+ "kind": "criterion",
6
+ "id": "criterion-api-health"
7
+ },
8
+ "evaluated_at": "2026-07-28T12:00:08Z",
9
+ "status": "unsatisfied",
10
+ "observation_coverage": [
11
+ {
12
+ "requirement_id": "obs-http-200",
13
+ "status": "covered",
14
+ "covering_receipt_ids": ["erec-planr-api-health-v1"]
15
+ }
16
+ ],
17
+ "validation_details": {
18
+ "trust": {
19
+ "status": "failed",
20
+ "checked_at": "2026-07-28T12:00:08Z",
21
+ "receipt_ids": [],
22
+ "gap_reasons": ["missing_observation"]
23
+ },
24
+ "freshness": {
25
+ "status": "passed",
26
+ "checked_at": "2026-07-28T12:00:08Z",
27
+ "receipt_ids": [],
28
+ "gap_reasons": []
29
+ },
30
+ "target": {
31
+ "status": "passed",
32
+ "checked_at": "2026-07-28T12:00:08Z",
33
+ "receipt_ids": [],
34
+ "gap_reasons": []
35
+ },
36
+ "schema": {
37
+ "status": "passed",
38
+ "checked_at": "2026-07-28T12:00:08Z",
39
+ "receipt_ids": [],
40
+ "gap_reasons": []
41
+ },
42
+ "provenance": {
43
+ "status": "passed",
44
+ "checked_at": "2026-07-28T12:00:08Z",
45
+ "receipt_ids": [],
46
+ "gap_reasons": []
47
+ },
48
+ "fixture": {
49
+ "status": "passed",
50
+ "checked_at": "2026-07-28T12:00:08Z",
51
+ "receipt_ids": [],
52
+ "gap_reasons": []
53
+ },
54
+ "completion": {
55
+ "status": "failed",
56
+ "checked_at": "2026-07-28T12:00:08Z",
57
+ "receipt_ids": [],
58
+ "gap_reasons": ["missing_observation"]
59
+ }
60
+ },
61
+ "suggested_next_action": "run required observation",
62
+ "actionable_now": true
63
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "id": "cverdict-waived-forbidden-gap",
3
+ "schema_version": "evidence.contract.v1",
4
+ "scope": {
5
+ "kind": "criterion",
6
+ "id": "criterion-api-health"
7
+ },
8
+ "evaluated_at": "2026-07-28T12:00:08Z",
9
+ "status": "waived",
10
+ "observation_coverage": [
11
+ {
12
+ "requirement_id": "obs-http-200",
13
+ "status": "waived",
14
+ "gap_reason": "waiver_expired",
15
+ "waiver_id": "ewaiver-api-health-v1"
16
+ }
17
+ ],
18
+ "validation_details": {
19
+ "trust": {
20
+ "status": "failed",
21
+ "checked_at": "2026-07-28T12:00:08Z",
22
+ "receipt_ids": [],
23
+ "gap_reasons": ["waiver_expired"]
24
+ }
25
+ },
26
+ "suggested_next_action": "renew waiver",
27
+ "actionable_now": true
28
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "id": "cverdict-waived-missing-waiver",
3
+ "schema_version": "evidence.contract.v1",
4
+ "scope": {
5
+ "kind": "criterion",
6
+ "id": "criterion-api-health"
7
+ },
8
+ "evaluated_at": "2026-07-28T12:00:08Z",
9
+ "status": "waived",
10
+ "observation_coverage": [
11
+ {
12
+ "requirement_id": "obs-http-200",
13
+ "status": "waived",
14
+ "gap_reason": "missing_observation"
15
+ }
16
+ ],
17
+ "validation_details": {
18
+ "trust": {
19
+ "status": "failed",
20
+ "checked_at": "2026-07-28T12:00:08Z",
21
+ "receipt_ids": [],
22
+ "gap_reasons": ["missing_observation"]
23
+ }
24
+ },
25
+ "suggested_next_action": "record waiver id",
26
+ "actionable_now": true
27
+ }