planr 1.9.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.
- package/README.md +30 -3
- package/docs/RELEASE.md +37 -7
- package/docs/contracts/EVIDENCE_CONTRACT_V1.md +283 -0
- package/docs/contracts/fixtures/evidence/v1/examples/coverage-verdict.json +66 -0
- package/docs/contracts/fixtures/evidence/v1/examples/evidence-attempt.json +39 -0
- package/docs/contracts/fixtures/evidence/v1/examples/evidence-policy.json +117 -0
- package/docs/contracts/fixtures/evidence/v1/examples/evidence-receipt.json +93 -0
- package/docs/contracts/fixtures/evidence/v1/examples/evidence-waiver.json +31 -0
- package/docs/contracts/fixtures/evidence/v1/examples/proof-obligation.json +67 -0
- package/docs/contracts/fixtures/evidence/v1/examples/proof-preset.json +28 -0
- package/docs/contracts/fixtures/evidence/v1/examples/untrusted-evidence-proposal.json +20 -0
- package/docs/contracts/fixtures/evidence/v1/examples/verification-capability-instance.json +39 -0
- package/docs/contracts/fixtures/evidence/v1/examples/verification-capability-manifest.json +52 -0
- package/docs/contracts/fixtures/evidence/v1/negative/aborted-zero-exit-attempt.json +39 -0
- package/docs/contracts/fixtures/evidence/v1/negative/adapter-registration-missing-execution-contract.json +97 -0
- package/docs/contracts/fixtures/evidence/v1/negative/available-empty-probe-capability.json +27 -0
- package/docs/contracts/fixtures/evidence/v1/negative/blocked-coverage-with-stale-reason.json +27 -0
- package/docs/contracts/fixtures/evidence/v1/negative/empty-trust-bindings-receipt.json +72 -0
- package/docs/contracts/fixtures/evidence/v1/negative/failed-zero-exit-attempt.json +39 -0
- package/docs/contracts/fixtures/evidence/v1/negative/forged-trusted-receipt.json +35 -0
- package/docs/contracts/fixtures/evidence/v1/negative/inconclusive-clean-exit-attempt.json +39 -0
- package/docs/contracts/fixtures/evidence/v1/negative/inconclusive-coverage-with-blocked-reason.json +27 -0
- package/docs/contracts/fixtures/evidence/v1/negative/minimal-policy-missing-owned-inputs.json +5 -0
- package/docs/contracts/fixtures/evidence/v1/negative/mismatched-probe-execution-id-capability.json +42 -0
- package/docs/contracts/fixtures/evidence/v1/negative/passed-empty-attempt.json +22 -0
- package/docs/contracts/fixtures/evidence/v1/negative/policy-default-preset-unregistered.json +111 -0
- package/docs/contracts/fixtures/evidence/v1/negative/policy-weakening-without-waiver.json +111 -0
- package/docs/contracts/fixtures/evidence/v1/negative/process-probe-missing-output-limits.json +49 -0
- package/docs/contracts/fixtures/evidence/v1/negative/satisfied-empty-coverage-verdict.json +14 -0
- package/docs/contracts/fixtures/evidence/v1/negative/skipped-zero-exit-attempt.json +39 -0
- package/docs/contracts/fixtures/evidence/v1/negative/stale-coverage-with-inconclusive-reason.json +27 -0
- package/docs/contracts/fixtures/evidence/v1/negative/timed-out-zero-exit-attempt.json +39 -0
- package/docs/contracts/fixtures/evidence/v1/negative/unavailable-zero-exit-attempt.json +39 -0
- package/docs/contracts/fixtures/evidence/v1/negative/unbound-waiver.json +21 -0
- package/docs/contracts/fixtures/evidence/v1/negative/unsatisfied-coverage-without-gap.json +63 -0
- package/docs/contracts/fixtures/evidence/v1/negative/waived-coverage-forbidden-gap-reason.json +28 -0
- package/docs/contracts/fixtures/evidence/v1/negative/waived-coverage-missing-waiver-id.json +27 -0
- package/docs/contracts/fixtures/evidence/v1/schemas/evidence-contract-v1.schema.json +2705 -0
- package/docs/documentation/COVERAGE.md +8 -5
- package/docs/documentation/INFORMATION_ARCHITECTURE.md +1 -1
- package/docs/fixtures/mcp-contract.json +16 -0
- package/npm/native/darwin-arm64/planr +0 -0
- package/npm/native/darwin-arm64/planr-host-capability-validator +0 -0
- package/npm/native/darwin-x86_64/planr +0 -0
- package/npm/native/darwin-x86_64/planr-host-capability-validator +0 -0
- package/npm/native/linux-arm64/planr +0 -0
- package/npm/native/linux-arm64/planr-host-capability-validator +0 -0
- package/npm/native/linux-x86_64/planr +0 -0
- package/npm/native/linux-x86_64/planr-host-capability-validator +0 -0
- package/package.json +15 -2
- package/plugins/planr/.claude-plugin/plugin.json +1 -1
- package/plugins/planr/.codex-plugin/plugin.json +1 -1
- package/plugins/planr/skills/planr-goal/SKILL.md +4 -2
- package/plugins/planr/skills/planr-loop/SKILL.md +7 -5
- package/plugins/planr/skills/planr-review/SKILL.md +5 -1
- package/plugins/planr/skills/planr-verify-web/SKILL.md +3 -1
- package/plugins/planr/skills/planr-work/SKILL.md +12 -1
- package/scripts/host-capability-experiment.mjs +2477 -0
- package/scripts/host-capability-runtime/v1/schemas/host-capability-expected-manifest.schema.json +377 -0
- package/scripts/host-capability-runtime/v1/schemas/host-capability-observed-raw.schema.json +439 -0
- package/scripts/host-capability-runtime/v1/schemas/host-capability-provenance.schema.json +178 -0
- package/scripts/planr-host-capability-validator +51 -0
|
@@ -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
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "epolicy-adapter-missing-execution",
|
|
3
|
+
"schema_version": "evidence.contract.v1",
|
|
4
|
+
"policy_digest": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
|
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
|
+
}
|
|
63
|
+
],
|
|
64
|
+
"extension_namespaces": ["planr.api"],
|
|
65
|
+
"trust_policy": {
|
|
66
|
+
"accepted_provenance": ["planr_observed_execution"],
|
|
67
|
+
"min_receipt_status": "trusted",
|
|
68
|
+
"allow_user_attestation": false
|
|
69
|
+
},
|
|
70
|
+
"freshness_policy": {
|
|
71
|
+
"max_age_seconds": 3600,
|
|
72
|
+
"invalidate_on": ["source_change"]
|
|
73
|
+
},
|
|
74
|
+
"fixture_policy": {
|
|
75
|
+
"fixtures_allowed": false,
|
|
76
|
+
"mocks_allowed": false,
|
|
77
|
+
"disclosure_required": true
|
|
78
|
+
},
|
|
79
|
+
"completion_policy": {
|
|
80
|
+
"require_satisfied_or_waived": true,
|
|
81
|
+
"allow_inconclusive_completion": false,
|
|
82
|
+
"require_review_evidence": true
|
|
83
|
+
},
|
|
84
|
+
"layering_policy": {
|
|
85
|
+
"mode": "monotonic_strengthening",
|
|
86
|
+
"weakening_requires_waiver": true,
|
|
87
|
+
"layers": [
|
|
88
|
+
{
|
|
89
|
+
"scope": {
|
|
90
|
+
"kind": "plan",
|
|
91
|
+
"id": "pln-example"
|
|
92
|
+
},
|
|
93
|
+
"policy_digest": "sha256:1111111111111111111111111111111111111111111111111111111111111111"
|
|
94
|
+
}
|
|
95
|
+
]
|
|
96
|
+
}
|
|
97
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "vcinst-empty-probe",
|
|
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-empty",
|
|
24
|
+
"observed_payload_contract": {},
|
|
25
|
+
"limitations": [],
|
|
26
|
+
"captured_at": "2026-07-28T12:00:04Z"
|
|
27
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "cverdict-blocked-stale-reason",
|
|
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": "blocked",
|
|
10
|
+
"observation_coverage": [
|
|
11
|
+
{
|
|
12
|
+
"requirement_id": "obs-http-200",
|
|
13
|
+
"status": "blocked",
|
|
14
|
+
"gap_reason": "stale_source"
|
|
15
|
+
}
|
|
16
|
+
],
|
|
17
|
+
"validation_details": {
|
|
18
|
+
"trust": {
|
|
19
|
+
"status": "failed",
|
|
20
|
+
"checked_at": "2026-07-28T12:00:08Z",
|
|
21
|
+
"receipt_ids": [],
|
|
22
|
+
"gap_reasons": ["stale_source"]
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"suggested_next_action": "restore capability",
|
|
26
|
+
"actionable_now": true
|
|
27
|
+
}
|