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.
- package/README.md +32 -5
- package/docs/ARCHITECTURE.md +1 -1
- 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/CONTRACT.md +1 -1
- package/docs/documentation/COVERAGE.md +8 -5
- package/docs/documentation/INFORMATION_ARCHITECTURE.md +1 -1
- package/docs/fixtures/mcp-contract.json +18 -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 +7 -4
- package/plugins/planr/skills/planr-loop/SKILL.md +11 -8
- package/plugins/planr/skills/planr-loop/references/recovery-and-verification.md +5 -4
- package/plugins/planr/skills/planr-plan/SKILL.md +1 -1
- package/plugins/planr/skills/planr-review/SKILL.md +5 -1
- package/plugins/planr/skills/planr-status/SKILL.md +3 -1
- package/plugins/planr/skills/planr-verify-web/SKILL.md +9 -6
- package/plugins/planr/skills/planr-work/SKILL.md +17 -3
- 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,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "erec-empty-trust-bindings",
|
|
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
|
+
"capability": {
|
|
24
|
+
"manifest_id": "vcap-planr-http-process-v1",
|
|
25
|
+
"manifest_digest": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
|
26
|
+
"instance_id": "vcinst-planr-http-process-v1",
|
|
27
|
+
"instance_digest": "sha256:7777777777777777777777777777777777777777777777777777777777777777"
|
|
28
|
+
},
|
|
29
|
+
"provenance": {
|
|
30
|
+
"source": "planr_observed_execution",
|
|
31
|
+
"assigned_by": "planr",
|
|
32
|
+
"execution_id": "exec-20260728-api-health",
|
|
33
|
+
"tool_call_id": null
|
|
34
|
+
},
|
|
35
|
+
"observations": [
|
|
36
|
+
{
|
|
37
|
+
"requirement_id": "obs-http-200",
|
|
38
|
+
"type": "planr.api.http.response",
|
|
39
|
+
"outcome": "passed",
|
|
40
|
+
"predicate": {
|
|
41
|
+
"status": 200
|
|
42
|
+
},
|
|
43
|
+
"actual": {
|
|
44
|
+
"status": 200
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"attempt_ids": [
|
|
49
|
+
"eatt-planr-api-health-v1"
|
|
50
|
+
],
|
|
51
|
+
"retry_history": [],
|
|
52
|
+
"artifacts": [
|
|
53
|
+
{
|
|
54
|
+
"id": "artifact-http-response",
|
|
55
|
+
"kind": "stdout",
|
|
56
|
+
"digest": "sha256:8888888888888888888888888888888888888888888888888888888888888888"
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
"raw_result": {
|
|
60
|
+
"kind": "artifact",
|
|
61
|
+
"artifact_id": "artifact-http-response",
|
|
62
|
+
"digest": "sha256:8888888888888888888888888888888888888888888888888888888888888888"
|
|
63
|
+
},
|
|
64
|
+
"config_digest": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
|
65
|
+
"fixture_disclosure": {},
|
|
66
|
+
"permissions": {},
|
|
67
|
+
"sandbox": {},
|
|
68
|
+
"proof_gaps": [],
|
|
69
|
+
"started_at": "2026-07-28T12:00:05Z",
|
|
70
|
+
"ended_at": "2026-07-28T12:00:06Z",
|
|
71
|
+
"receipt_digest": "sha256:9999999999999999999999999999999999999999999999999999999999999999"
|
|
72
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "eatt-failed-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": "failed",
|
|
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,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "erec-forged-minimal",
|
|
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
|
+
"target": {},
|
|
9
|
+
"environment": {},
|
|
10
|
+
"vantage_point": {},
|
|
11
|
+
"capability": {},
|
|
12
|
+
"provenance": {
|
|
13
|
+
"source": "planr_observed_execution",
|
|
14
|
+
"assigned_by": "planr"
|
|
15
|
+
},
|
|
16
|
+
"observations": [
|
|
17
|
+
{
|
|
18
|
+
"requirement_id": "obs-http-200",
|
|
19
|
+
"type": "planr.api.http.response",
|
|
20
|
+
"outcome": "passed",
|
|
21
|
+
"predicate": {},
|
|
22
|
+
"actual": {}
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"attempt_ids": [
|
|
26
|
+
"attempt-forged"
|
|
27
|
+
],
|
|
28
|
+
"fixture_disclosure": {},
|
|
29
|
+
"permissions": {},
|
|
30
|
+
"sandbox": {},
|
|
31
|
+
"proof_gaps": [],
|
|
32
|
+
"started_at": "2026-07-28T12:00:05Z",
|
|
33
|
+
"ended_at": "2026-07-28T12:00:06Z",
|
|
34
|
+
"receipt_digest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
|
35
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "eatt-inconclusive-clean-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": "inconclusive",
|
|
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
|
+
}
|
package/docs/contracts/fixtures/evidence/v1/negative/inconclusive-coverage-with-blocked-reason.json
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "cverdict-inconclusive-blocked-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": "inconclusive",
|
|
10
|
+
"observation_coverage": [
|
|
11
|
+
{
|
|
12
|
+
"requirement_id": "obs-http-200",
|
|
13
|
+
"status": "inconclusive",
|
|
14
|
+
"gap_reason": "permission_denied"
|
|
15
|
+
}
|
|
16
|
+
],
|
|
17
|
+
"validation_details": {
|
|
18
|
+
"trust": {
|
|
19
|
+
"status": "inconclusive",
|
|
20
|
+
"checked_at": "2026-07-28T12:00:08Z",
|
|
21
|
+
"receipt_ids": [],
|
|
22
|
+
"gap_reasons": ["permission_denied"]
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"suggested_next_action": "rerun verifier",
|
|
26
|
+
"actionable_now": true
|
|
27
|
+
}
|
package/docs/contracts/fixtures/evidence/v1/negative/mismatched-probe-execution-id-capability.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "vcinst-mismatched-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
|
+
"outcome": "passed",
|
|
25
|
+
"observed_at": "2026-07-28T12:00:04Z",
|
|
26
|
+
"checks": [
|
|
27
|
+
{
|
|
28
|
+
"name": "http-health",
|
|
29
|
+
"outcome": "passed"
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
"probe_execution_id": "probe-other",
|
|
34
|
+
"observed_payload_contract": {
|
|
35
|
+
"schema_ref": "planr.api.http.response@v1",
|
|
36
|
+
"observation_types": [
|
|
37
|
+
"planr.api.http.response"
|
|
38
|
+
]
|
|
39
|
+
},
|
|
40
|
+
"limitations": [],
|
|
41
|
+
"captured_at": "2026-07-28T12:00:04Z"
|
|
42
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "eatt-empty-passed",
|
|
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
|
+
"exit": {},
|
|
12
|
+
"retry_lineage": {},
|
|
13
|
+
"stdout_digest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
14
|
+
"stderr_digest": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
|
|
15
|
+
"raw_result": {
|
|
16
|
+
"kind": "artifact",
|
|
17
|
+
"artifact_id": "artifact-http-response",
|
|
18
|
+
"digest": "sha256:8888888888888888888888888888888888888888888888888888888888888888"
|
|
19
|
+
},
|
|
20
|
+
"artifacts": [],
|
|
21
|
+
"output_bounds": {}
|
|
22
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "epolicy-unregistered-default-preset",
|
|
3
|
+
"schema_version": "evidence.contract.v1",
|
|
4
|
+
"policy_digest": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
|
5
|
+
"defaults": {
|
|
6
|
+
"preset_id": "preset-missing",
|
|
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": ["source_change"]
|
|
87
|
+
},
|
|
88
|
+
"fixture_policy": {
|
|
89
|
+
"fixtures_allowed": false,
|
|
90
|
+
"mocks_allowed": false,
|
|
91
|
+
"disclosure_required": true
|
|
92
|
+
},
|
|
93
|
+
"completion_policy": {
|
|
94
|
+
"require_satisfied_or_waived": true,
|
|
95
|
+
"allow_inconclusive_completion": false,
|
|
96
|
+
"require_review_evidence": true
|
|
97
|
+
},
|
|
98
|
+
"layering_policy": {
|
|
99
|
+
"mode": "monotonic_strengthening",
|
|
100
|
+
"weakening_requires_waiver": true,
|
|
101
|
+
"layers": [
|
|
102
|
+
{
|
|
103
|
+
"scope": {
|
|
104
|
+
"kind": "plan",
|
|
105
|
+
"id": "pln-example"
|
|
106
|
+
},
|
|
107
|
+
"policy_digest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
|
108
|
+
}
|
|
109
|
+
]
|
|
110
|
+
}
|
|
111
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "epolicy-weakening",
|
|
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
|
+
"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": ["source_change"]
|
|
87
|
+
},
|
|
88
|
+
"fixture_policy": {
|
|
89
|
+
"fixtures_allowed": false,
|
|
90
|
+
"mocks_allowed": false,
|
|
91
|
+
"disclosure_required": true
|
|
92
|
+
},
|
|
93
|
+
"completion_policy": {
|
|
94
|
+
"require_satisfied_or_waived": true,
|
|
95
|
+
"allow_inconclusive_completion": false,
|
|
96
|
+
"require_review_evidence": true
|
|
97
|
+
},
|
|
98
|
+
"layering_policy": {
|
|
99
|
+
"mode": "monotonic_strengthening",
|
|
100
|
+
"weakening_requires_waiver": false,
|
|
101
|
+
"layers": [
|
|
102
|
+
{
|
|
103
|
+
"scope": {
|
|
104
|
+
"kind": "plan",
|
|
105
|
+
"id": "pln-example"
|
|
106
|
+
},
|
|
107
|
+
"policy_digest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
|
108
|
+
}
|
|
109
|
+
]
|
|
110
|
+
}
|
|
111
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "vcap-process-probe-missing-limits",
|
|
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": [],
|
|
35
|
+
"availability_probe": {
|
|
36
|
+
"kind": "process",
|
|
37
|
+
"execution": {
|
|
38
|
+
"kind": "process",
|
|
39
|
+
"executable": "curl",
|
|
40
|
+
"args": ["--version"],
|
|
41
|
+
"timeout_ms": 5000,
|
|
42
|
+
"payload_schema": {
|
|
43
|
+
"type": "planr.api.http.response",
|
|
44
|
+
"schema_ref": "planr.api.http.response@v1",
|
|
45
|
+
"schema_digest": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "cverdict-empty-satisfied",
|
|
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": "satisfied",
|
|
10
|
+
"observation_coverage": [],
|
|
11
|
+
"validation_details": {},
|
|
12
|
+
"suggested_next_action": "none",
|
|
13
|
+
"actionable_now": false
|
|
14
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "eatt-skipped-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": "skipped",
|
|
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
|
+
}
|
package/docs/contracts/fixtures/evidence/v1/negative/stale-coverage-with-inconclusive-reason.json
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "cverdict-stale-inconclusive-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": "stale",
|
|
10
|
+
"observation_coverage": [
|
|
11
|
+
{
|
|
12
|
+
"requirement_id": "obs-http-200",
|
|
13
|
+
"status": "stale",
|
|
14
|
+
"gap_reason": "inconclusive_result"
|
|
15
|
+
}
|
|
16
|
+
],
|
|
17
|
+
"validation_details": {
|
|
18
|
+
"freshness": {
|
|
19
|
+
"status": "failed",
|
|
20
|
+
"checked_at": "2026-07-28T12:00:08Z",
|
|
21
|
+
"receipt_ids": [],
|
|
22
|
+
"gap_reasons": ["inconclusive_result"]
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"suggested_next_action": "refresh evidence",
|
|
26
|
+
"actionable_now": true
|
|
27
|
+
}
|