planr 1.8.0 → 1.10.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/README.md +30 -3
  2. package/docs/RELEASE.md +37 -7
  3. package/docs/contracts/EVIDENCE_CONTRACT_V1.md +283 -0
  4. package/docs/contracts/PI_INTEGRATION_V1.md +164 -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/COVERAGE.md +10 -6
  41. package/docs/documentation/INFORMATION_ARCHITECTURE.md +1 -1
  42. package/docs/fixtures/mcp-contract.json +18 -2
  43. package/npm/native/darwin-arm64/planr +0 -0
  44. package/npm/native/darwin-arm64/planr-host-capability-validator +0 -0
  45. package/npm/native/darwin-x86_64/planr +0 -0
  46. package/npm/native/darwin-x86_64/planr-host-capability-validator +0 -0
  47. package/npm/native/linux-arm64/planr +0 -0
  48. package/npm/native/linux-arm64/planr-host-capability-validator +0 -0
  49. package/npm/native/linux-x86_64/planr +0 -0
  50. package/npm/native/linux-x86_64/planr-host-capability-validator +0 -0
  51. package/package.json +15 -3
  52. package/plugins/planr/.claude-plugin/plugin.json +1 -1
  53. package/plugins/planr/.codex-plugin/plugin.json +1 -1
  54. package/plugins/planr/agents/pi/planr-reviewer.md +16 -0
  55. package/plugins/planr/agents/pi/planr-worker.md +14 -0
  56. package/plugins/planr/skills/planr-goal/SKILL.md +4 -2
  57. package/plugins/planr/skills/planr-loop/SKILL.md +7 -5
  58. package/plugins/planr/skills/planr-loop/references/host-dispatch.md +1 -0
  59. package/plugins/planr/skills/planr-review/SKILL.md +5 -1
  60. package/plugins/planr/skills/planr-verify-web/SKILL.md +3 -1
  61. package/plugins/planr/skills/planr-work/SKILL.md +12 -1
  62. package/scripts/host-capability-experiment.mjs +2477 -0
  63. package/scripts/host-capability-runtime/v1/schemas/host-capability-expected-manifest.schema.json +377 -0
  64. package/scripts/host-capability-runtime/v1/schemas/host-capability-observed-raw.schema.json +439 -0
  65. package/scripts/host-capability-runtime/v1/schemas/host-capability-provenance.schema.json +178 -0
  66. package/scripts/planr-host-capability-validator +51 -0
@@ -0,0 +1,66 @@
1
+ {
2
+ "id": "cverdict-api-health-v1",
3
+ "schema_version": "evidence.contract.v1",
4
+ "scope": {
5
+ "kind": "criterion",
6
+ "id": "criterion-api-health",
7
+ "plan_id": "pln-example",
8
+ "item_id": "item-example"
9
+ },
10
+ "evaluated_at": "2026-07-28T12:00:08Z",
11
+ "status": "satisfied",
12
+ "observation_coverage": [
13
+ {
14
+ "requirement_id": "obs-http-200",
15
+ "status": "covered",
16
+ "covering_receipt_ids": ["erec-planr-api-health-v1"],
17
+ "covered_observation_ids": ["obs-http-200"]
18
+ }
19
+ ],
20
+ "validation_details": {
21
+ "trust": {
22
+ "status": "passed",
23
+ "checked_at": "2026-07-28T12:00:08Z",
24
+ "receipt_ids": ["erec-planr-api-health-v1"],
25
+ "gap_reasons": []
26
+ },
27
+ "freshness": {
28
+ "status": "passed",
29
+ "checked_at": "2026-07-28T12:00:08Z",
30
+ "receipt_ids": ["erec-planr-api-health-v1"],
31
+ "gap_reasons": []
32
+ },
33
+ "target": {
34
+ "status": "passed",
35
+ "checked_at": "2026-07-28T12:00:08Z",
36
+ "receipt_ids": ["erec-planr-api-health-v1"],
37
+ "gap_reasons": []
38
+ },
39
+ "schema": {
40
+ "status": "passed",
41
+ "checked_at": "2026-07-28T12:00:08Z",
42
+ "receipt_ids": ["erec-planr-api-health-v1"],
43
+ "gap_reasons": []
44
+ },
45
+ "provenance": {
46
+ "status": "passed",
47
+ "checked_at": "2026-07-28T12:00:08Z",
48
+ "receipt_ids": ["erec-planr-api-health-v1"],
49
+ "gap_reasons": []
50
+ },
51
+ "fixture": {
52
+ "status": "passed",
53
+ "checked_at": "2026-07-28T12:00:08Z",
54
+ "receipt_ids": ["erec-planr-api-health-v1"],
55
+ "gap_reasons": []
56
+ },
57
+ "completion": {
58
+ "status": "passed",
59
+ "checked_at": "2026-07-28T12:00:08Z",
60
+ "receipt_ids": ["erec-planr-api-health-v1"],
61
+ "gap_reasons": []
62
+ }
63
+ },
64
+ "suggested_next_action": "none",
65
+ "actionable_now": false
66
+ }
@@ -0,0 +1,39 @@
1
+ {
2
+ "id": "eatt-planr-api-health-v1",
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": "passed",
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": 16,
35
+ "stderr_bytes": 0,
36
+ "stdout_truncated": false,
37
+ "stderr_truncated": false
38
+ }
39
+ }
@@ -0,0 +1,117 @@
1
+ {
2
+ "id": "epolicy-default-v1",
3
+ "schema_version": "evidence.contract.v1",
4
+ "policy_digest": "sha256:c1a2a26ece3ee7a3cf3166cd849664d723fe2fffda2dc0773b2c92dc8d1ae8c1",
5
+ "defaults": {
6
+ "preset_id": "preset-http-health",
7
+ "binding": true,
8
+ "assurance_level": "standard"
9
+ },
10
+ "named_presets": [
11
+ {
12
+ "id": "preset-http-health",
13
+ "schema_version": "evidence.contract.v1",
14
+ "namespace": "planr.api",
15
+ "observations": [
16
+ {
17
+ "id": "obs-http-200",
18
+ "type": "planr.api.http.response",
19
+ "subject": "GET /health",
20
+ "expected": {
21
+ "status": 200
22
+ },
23
+ "target": {
24
+ "kind": "local_service",
25
+ "uri": "http://127.0.0.1:4173/health"
26
+ },
27
+ "environment": {
28
+ "kind": "local",
29
+ "id": "dev-shell",
30
+ "digest": "sha256:5555555555555555555555555555555555555555555555555555555555555555"
31
+ },
32
+ "runtime_target": {
33
+ "kind": "process",
34
+ "id": "planr-doc-fixture"
35
+ }
36
+ }
37
+ ]
38
+ }
39
+ ],
40
+ "observation_schema_registrations": [
41
+ {
42
+ "type": "planr.api.http.response",
43
+ "schema_ref": "planr.api.http.response@v1",
44
+ "schema_digest": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
45
+ "owning_namespace": "planr.api"
46
+ }
47
+ ],
48
+ "adapter_registrations": [
49
+ {
50
+ "manifest_id": "vcap-planr-http-process-v1",
51
+ "manifest_path": "docs/contracts/fixtures/evidence/v1/examples/verification-capability-manifest.json",
52
+ "manifest_digest": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
53
+ "observation_types": ["planr.api.http.response"],
54
+ "payload_schemas": [
55
+ {
56
+ "type": "planr.api.http.response",
57
+ "schema_ref": "planr.api.http.response@v1",
58
+ "schema_digest": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
59
+ }
60
+ ],
61
+ "provenance_path": "planr_observed_execution",
62
+ "execution_contract": {
63
+ "kind": "process",
64
+ "executable": "curl",
65
+ "args": ["--fail", "--silent", "http://127.0.0.1:4173/health"],
66
+ "working_directory": ".",
67
+ "timeout_ms": 10000,
68
+ "stdout_limit_bytes": 1048576,
69
+ "stderr_limit_bytes": 1048576,
70
+ "payload_schema": {
71
+ "type": "planr.api.http.response",
72
+ "schema_ref": "planr.api.http.response@v1",
73
+ "schema_digest": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
74
+ }
75
+ }
76
+ }
77
+ ],
78
+ "extension_namespaces": ["planr.api"],
79
+ "trust_policy": {
80
+ "accepted_provenance": ["planr_observed_execution"],
81
+ "min_receipt_status": "trusted",
82
+ "allow_user_attestation": false
83
+ },
84
+ "freshness_policy": {
85
+ "max_age_seconds": 3600,
86
+ "invalidate_on": [
87
+ "source_change",
88
+ "target_change",
89
+ "policy_change",
90
+ "adapter_schema_change",
91
+ "configuration_change"
92
+ ]
93
+ },
94
+ "fixture_policy": {
95
+ "fixtures_allowed": false,
96
+ "mocks_allowed": false,
97
+ "disclosure_required": true
98
+ },
99
+ "completion_policy": {
100
+ "require_satisfied_or_waived": true,
101
+ "allow_inconclusive_completion": false,
102
+ "require_review_evidence": true
103
+ },
104
+ "layering_policy": {
105
+ "mode": "monotonic_strengthening",
106
+ "weakening_requires_waiver": true,
107
+ "layers": [
108
+ {
109
+ "scope": {
110
+ "kind": "plan",
111
+ "id": "pln-example"
112
+ },
113
+ "policy_digest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
114
+ }
115
+ ]
116
+ }
117
+ }
@@ -0,0 +1,93 @@
1
+ {
2
+ "id": "erec-planr-api-health-v1",
3
+ "schema_version": "evidence.contract.v1",
4
+ "criterion_id": "criterion-api-health",
5
+ "obligation_id": "pob-planr-api-health-v1",
6
+ "receipt_status": "trusted",
7
+ "source": {
8
+ "revision": "0123456789abcdef0123456789abcdef01234567",
9
+ "tree_digest": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
10
+ "dirty": false
11
+ },
12
+ "target": {
13
+ "kind": "local_service",
14
+ "uri": "http://127.0.0.1:4173/health",
15
+ "digest": "sha256:4444444444444444444444444444444444444444444444444444444444444444"
16
+ },
17
+ "environment": {
18
+ "kind": "local",
19
+ "id": "dev-shell",
20
+ "digest": "sha256:5555555555555555555555555555555555555555555555555555555555555555"
21
+ },
22
+ "vantage_point": {
23
+ "kind": "localhost",
24
+ "identity": "127.0.0.1"
25
+ },
26
+ "capability": {
27
+ "manifest_id": "vcap-planr-http-process-v1",
28
+ "manifest_digest": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
29
+ "instance_id": "vcinst-planr-http-process-v1",
30
+ "instance_digest": "sha256:7777777777777777777777777777777777777777777777777777777777777777"
31
+ },
32
+ "provenance": {
33
+ "source": "planr_observed_execution",
34
+ "assigned_by": "planr",
35
+ "execution_id": "exec-20260728-api-health",
36
+ "tool_call_id": null
37
+ },
38
+ "observations": [
39
+ {
40
+ "requirement_id": "obs-http-200",
41
+ "type": "planr.api.http.response",
42
+ "outcome": "passed",
43
+ "predicate": {
44
+ "status": 200,
45
+ "json_path": "$.status",
46
+ "equals": "ok"
47
+ },
48
+ "actual": {
49
+ "status": 200,
50
+ "json": {
51
+ "status": "ok"
52
+ }
53
+ }
54
+ }
55
+ ],
56
+ "attempt_ids": [
57
+ "eatt-planr-api-health-v1"
58
+ ],
59
+ "retry_history": [],
60
+ "artifacts": [
61
+ {
62
+ "id": "artifact-http-response",
63
+ "kind": "stdout",
64
+ "digest": "sha256:8888888888888888888888888888888888888888888888888888888888888888"
65
+ }
66
+ ],
67
+ "raw_result": {
68
+ "kind": "artifact",
69
+ "artifact_id": "artifact-http-response",
70
+ "digest": "sha256:8888888888888888888888888888888888888888888888888888888888888888"
71
+ },
72
+ "config_digest": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
73
+ "fixture_disclosure": {
74
+ "fixtures_used": false,
75
+ "mocks_used": false
76
+ },
77
+ "permissions": {
78
+ "network": "localhost_only",
79
+ "filesystem": "read_workspace"
80
+ },
81
+ "sandbox": {
82
+ "mode": "bounded_process",
83
+ "limits": {
84
+ "timeout_ms": 10000,
85
+ "stdout_bytes": 1048576,
86
+ "stderr_bytes": 1048576
87
+ }
88
+ },
89
+ "proof_gaps": [],
90
+ "started_at": "2026-07-28T12:00:05Z",
91
+ "ended_at": "2026-07-28T12:00:06Z",
92
+ "receipt_digest": "sha256:6ea111943fdafe268a5bbe85b0fecaab75890dbcb9b2e2dfb966f3c6916e348f"
93
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "id": "ewaiver-api-health-expiry",
3
+ "schema_version": "evidence.contract.v1",
4
+ "scope": {
5
+ "kind": "item",
6
+ "id": "item-example",
7
+ "plan_id": "pln-example"
8
+ },
9
+ "observation_ids": ["obs-http-200"],
10
+ "source": {
11
+ "revision": "0123456789abcdef0123456789abcdef01234567",
12
+ "tree_digest": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
13
+ "dirty": false
14
+ },
15
+ "target": {
16
+ "kind": "local_service",
17
+ "uri": "http://127.0.0.1:4173/health",
18
+ "digest": "sha256:4444444444444444444444444444444444444444444444444444444444444444"
19
+ },
20
+ "reason": "temporary approved exception for local fixture downtime",
21
+ "created_by": "user@example.com",
22
+ "created_at": "2026-07-28T12:00:00Z",
23
+ "expires_at": "2026-07-29T12:00:00Z",
24
+ "approval_ref": "approval-123",
25
+ "audit_trail": [
26
+ {
27
+ "event": "created",
28
+ "at": "2026-07-28T12:00:00Z"
29
+ }
30
+ ]
31
+ }
@@ -0,0 +1,67 @@
1
+ {
2
+ "id": "pob-planr-api-health-v1",
3
+ "schema_version": "evidence.contract.v1",
4
+ "criterion_id": "criterion-api-health",
5
+ "plan_id": "pln-example",
6
+ "item_id": "item-example",
7
+ "title": "API health endpoint returns OK from the target service",
8
+ "binding": true,
9
+ "observations": [
10
+ {
11
+ "id": "obs-http-200",
12
+ "type": "planr.api.http.response",
13
+ "subject": "GET /health",
14
+ "expected": {
15
+ "status": 200,
16
+ "json_path": "$.status",
17
+ "equals": "ok"
18
+ },
19
+ "target": {
20
+ "kind": "local_service",
21
+ "uri": "http://127.0.0.1:4173/health"
22
+ },
23
+ "environment": {
24
+ "kind": "local",
25
+ "id": "dev-shell",
26
+ "digest": "sha256:5555555555555555555555555555555555555555555555555555555555555555"
27
+ },
28
+ "runtime_target": {
29
+ "kind": "process",
30
+ "id": "planr-doc-fixture"
31
+ },
32
+ "payload_schema": {
33
+ "schema_ref": "planr.api.http.response@v1"
34
+ },
35
+ "freshness_policy": {
36
+ "source": "source_tree",
37
+ "max_age_seconds": 3600
38
+ },
39
+ "assurance_policy": {
40
+ "min_provenance": "planr_observed_execution",
41
+ "independent_methods": 1
42
+ }
43
+ }
44
+ ],
45
+ "fixture_policy": {
46
+ "fixtures_allowed": false,
47
+ "mocks_allowed": false,
48
+ "disclosure_required": true
49
+ },
50
+ "freshness_policy": {
51
+ "invalidate_on": [
52
+ "source_change",
53
+ "target_change",
54
+ "policy_change",
55
+ "adapter_schema_change",
56
+ "configuration_change"
57
+ ]
58
+ },
59
+ "assurance_policy": {
60
+ "min_receipt_status": "trusted",
61
+ "allow_user_attestation": false
62
+ },
63
+ "policy_digest": "sha256:c1a2a26ece3ee7a3cf3166cd849664d723fe2fffda2dc0773b2c92dc8d1ae8c1",
64
+ "config_digest": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
65
+ "created_at": "2026-07-28T12:00:00Z",
66
+ "supersedes": null
67
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "id": "preset-http-health",
3
+ "schema_version": "evidence.contract.v1",
4
+ "namespace": "planr.api",
5
+ "observations": [
6
+ {
7
+ "id": "obs-http-200",
8
+ "type": "planr.api.http.response",
9
+ "subject": "GET /health",
10
+ "expected": {
11
+ "status": 200
12
+ },
13
+ "target": {
14
+ "kind": "local_service",
15
+ "uri": "http://127.0.0.1:4173/health"
16
+ },
17
+ "environment": {
18
+ "kind": "local",
19
+ "id": "dev-shell",
20
+ "digest": "sha256:5555555555555555555555555555555555555555555555555555555555555555"
21
+ },
22
+ "runtime_target": {
23
+ "kind": "process",
24
+ "id": "planr-doc-fixture"
25
+ }
26
+ }
27
+ ]
28
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "id": "uep-agent-health-claim-v1",
3
+ "schema_version": "evidence.contract.v1",
4
+ "source_kind": "agent",
5
+ "submitted_at": "2026-07-28T12:00:07Z",
6
+ "claims": {
7
+ "criterion_id": "criterion-api-health",
8
+ "summary": "agent reported the health endpoint returned ok"
9
+ },
10
+ "artifact_refs": [
11
+ {
12
+ "id": "artifact-agent-note",
13
+ "kind": "agent-note",
14
+ "digest": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
15
+ }
16
+ ],
17
+ "producer_metadata": {
18
+ "client": "codex"
19
+ }
20
+ }
@@ -0,0 +1,39 @@
1
+ {
2
+ "id": "vcinst-planr-http-process-v1",
3
+ "schema_version": "evidence.contract.v1",
4
+ "manifest_id": "vcap-planr-http-process-v1",
5
+ "manifest_digest": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
6
+ "host": "codex",
7
+ "surface": "local-process",
8
+ "host_version": "1.0.0",
9
+ "adapter_version": "1.0.0",
10
+ "environment": {
11
+ "kind": "local",
12
+ "id": "dev-shell",
13
+ "digest": "sha256:5555555555555555555555555555555555555555555555555555555555555555"
14
+ },
15
+ "permissions": {
16
+ "network": "localhost_only",
17
+ "filesystem": "read_workspace"
18
+ },
19
+ "availability": {
20
+ "status": "available"
21
+ },
22
+ "probe_result": {
23
+ "probe_execution_id": "probe-20260728-curl",
24
+ "outcome": "passed",
25
+ "observed_at": "2026-07-28T12:00:04Z",
26
+ "checks": [
27
+ {
28
+ "name": "curl-present",
29
+ "outcome": "passed"
30
+ }
31
+ ]
32
+ },
33
+ "observed_payload_contract": {
34
+ "schema_ref": "planr.api.http.response@v1",
35
+ "observation_types": ["planr.api.http.response"]
36
+ },
37
+ "limitations": ["localhost target must be running"],
38
+ "captured_at": "2026-07-28T12:00:04Z"
39
+ }
@@ -0,0 +1,52 @@
1
+ {
2
+ "id": "vcap-planr-http-process-v1",
3
+ "schema_version": "evidence.contract.v1",
4
+ "version": "1.0.0",
5
+ "adapter_kind": "process",
6
+ "adapter_digest": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
7
+ "supported_surfaces": ["local-process"],
8
+ "supported_observations": [
9
+ {
10
+ "type": "planr.api.http.response",
11
+ "schema_ref": "planr.api.http.response@v1",
12
+ "schema_digest": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
13
+ }
14
+ ],
15
+ "supported_interactions": ["http-get"],
16
+ "supported_artifacts": ["stdout"],
17
+ "runtime_targets": [
18
+ {
19
+ "kind": "process",
20
+ "id": "planr-doc-fixture"
21
+ }
22
+ ],
23
+ "provenance_path": "planr_observed_execution",
24
+ "permissions": {
25
+ "network": "localhost_only",
26
+ "filesystem": "read_workspace"
27
+ },
28
+ "costs": {
29
+ "network": "local"
30
+ },
31
+ "determinism": "deterministic for static health endpoint",
32
+ "repeatability": "replayable from source tree and target URI",
33
+ "independence": "adapter observes process output independently of agent text",
34
+ "blind_spots": ["external network failures outside localhost are not covered"],
35
+ "availability_probe": {
36
+ "kind": "process",
37
+ "execution": {
38
+ "kind": "process",
39
+ "executable": "curl",
40
+ "args": ["--version"],
41
+ "working_directory": ".",
42
+ "timeout_ms": 5000,
43
+ "stdout_limit_bytes": 65536,
44
+ "stderr_limit_bytes": 65536,
45
+ "payload_schema": {
46
+ "type": "planr.api.http.response",
47
+ "schema_ref": "planr.api.http.response@v1",
48
+ "schema_digest": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
49
+ }
50
+ }
51
+ }
52
+ }
@@ -0,0 +1,39 @@
1
+ {
2
+ "id": "eatt-aborted-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": "aborted",
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
+ }