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,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
|
+
}
|
package/docs/contracts/fixtures/evidence/v1/negative/waived-coverage-forbidden-gap-reason.json
ADDED
|
@@ -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
|
+
}
|