diff --git a/docs/pf-core-v0.7.0-reward-schema-upstream.md b/docs/pf-core-v0.7.0-reward-schema-upstream.md new file mode 100644 index 0000000..791b32d --- /dev/null +++ b/docs/pf-core-v0.7.0-reward-schema-upstream.md @@ -0,0 +1,9 @@ +# PF-Core v0.7.0 reward-binding schema mirrors + +Upstream landing pad for schemas mirrored in PF-Core `adapters/pcs/schemas/` at tag `pf-core-v0.7.0`. + +See `SCHEMA_PINS.json` for digests. Align canonical pcs-core schema ids with these mirrors; do not let PF-Core invent a second portable layout under `pf-core/schemas/`. + +Spec: https://github.com/SentinelOps-CI/provability-fabric-core/blob/pf-core-v0.7.0/docs/pf-core/pf-va-pr-artifacts/pcs-core-reward-schemas-pr-spec.md + +Follow-up: merge these into the primary `schemas/` tree with stable ids and registry entries (may already be drafted as `RewardEvidenceEnvelope.v1` etc. on local main). diff --git a/schemas/pf_core_mirrors/reward_binding/SCHEMA_PINS.json b/schemas/pf_core_mirrors/reward_binding/SCHEMA_PINS.json new file mode 100644 index 0000000..feb6d27 --- /dev/null +++ b/schemas/pf_core_mirrors/reward_binding/SCHEMA_PINS.json @@ -0,0 +1,7 @@ +{ + "authority_record.schema.json": "3da39fd9d1e95f40e72e2701a7675475f1ded7851c993ffd1875643e8e7435da", + "environment_profile.schema.json": "39f039415d519b0ba80b203cb90d479ffdf6e45fb2832be9b8336983b3e19dee", + "reward_evidence_envelope.schema.json": "0fc5c9b55b407ded03f23b96307bfc8b6f5b74d4244a0dc7bd6cbe876a89eae0", + "verification_result.schema.json": "37324f4877353ca90fcc59e54b70429d59d86ccd21ab2f0e52942e4d53495b9e", + "verifier_profile.schema.json": "ad985317963692d8b3ea90b92f931166199657c2688e50c57d11e89e135d227a" +} diff --git a/schemas/pf_core_mirrors/reward_binding/authority_record.schema.json b/schemas/pf_core_mirrors/reward_binding/authority_record.schema.json new file mode 100644 index 0000000..9536a75 --- /dev/null +++ b/schemas/pf_core_mirrors/reward_binding/authority_record.schema.json @@ -0,0 +1,40 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "pcs.authority_record.v0", + "title": "PCS Authority Record (mirrored)", + "description": "Immutable mirror of PCS authority record. Not in PF-Core TCB.", + "type": "object", + "additionalProperties": false, + "required": [ + "schema_version", + "authority_id", + "valid_from", + "valid_until", + "revoked", + "claim_class", + "environment_digest", + "authorized_issuers" + ], + "properties": { + "schema_version": { "const": "pcs.authority_record.v0" }, + "authority_id": { "type": "string", "minLength": 1 }, + "valid_from": { "type": "integer", "minimum": 0 }, + "valid_until": { "type": "integer", "minimum": 0 }, + "revoked": { "type": "boolean" }, + "claim_class": { "type": "string", "minLength": 1 }, + "environment_digest": { "type": "string", "minLength": 1 }, + "authorized_issuers": { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "additionalProperties": false, + "required": ["principal_id", "tenant_id"], + "properties": { + "principal_id": { "type": "string", "minLength": 1 }, + "tenant_id": { "type": "string", "minLength": 1 } + } + } + } + } +} diff --git a/schemas/pf_core_mirrors/reward_binding/environment_profile.schema.json b/schemas/pf_core_mirrors/reward_binding/environment_profile.schema.json new file mode 100644 index 0000000..9a49f90 --- /dev/null +++ b/schemas/pf_core_mirrors/reward_binding/environment_profile.schema.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "pcs.environment_profile.v0", + "title": "PCS Environment Profile (mirrored)", + "description": "Immutable mirror of PCS environment profile. Not in PF-Core TCB.", + "type": "object", + "additionalProperties": false, + "required": ["schema_version", "profile_id", "digest"], + "properties": { + "schema_version": { "const": "pcs.environment_profile.v0" }, + "profile_id": { "type": "string", "minLength": 1 }, + "digest": { "type": "string", "minLength": 1 }, + "description": { "type": "string" } + } +} diff --git a/schemas/pf_core_mirrors/reward_binding/reward_evidence_envelope.schema.json b/schemas/pf_core_mirrors/reward_binding/reward_evidence_envelope.schema.json new file mode 100644 index 0000000..d8455c3 --- /dev/null +++ b/schemas/pf_core_mirrors/reward_binding/reward_evidence_envelope.schema.json @@ -0,0 +1,77 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "pcs.reward_evidence_envelope.v0", + "title": "PCS Reward Evidence Envelope (mirrored)", + "description": "Immutable mirror of PCS reward evidence envelope. Not in PF-Core TCB. Pin digest in adapters/pcs/README.md.", + "type": "object", + "additionalProperties": false, + "required": [ + "schema_version", + "envelope_id", + "trace_digest", + "environment_profile_ref", + "verifier_result_refs", + "issuer", + "authority_ref", + "issued_at", + "integrity" + ], + "properties": { + "schema_version": { "const": "pcs.reward_evidence_envelope.v0" }, + "envelope_id": { "type": "string", "minLength": 1 }, + "trace_digest": { "type": "string", "minLength": 1 }, + "environment_profile_ref": { + "type": "object", + "additionalProperties": false, + "required": ["id", "digest"], + "properties": { + "id": { "type": "string", "minLength": 1 }, + "digest": { "type": "string", "minLength": 1 } + } + }, + "verifier_result_refs": { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "additionalProperties": false, + "required": ["id", "digest"], + "properties": { + "id": { "type": "string", "minLength": 1 }, + "digest": { "type": "string", "minLength": 1 } + } + } + }, + "issuer": { + "type": "object", + "additionalProperties": false, + "required": ["principal_id", "tenant_id"], + "properties": { + "principal_id": { "type": "string", "minLength": 1 }, + "tenant_id": { "type": "string", "minLength": 1 } + } + }, + "authority_ref": { + "type": "object", + "additionalProperties": false, + "required": ["id", "digest"], + "properties": { + "id": { "type": "string", "minLength": 1 }, + "digest": { "type": "string", "minLength": 1 } + } + }, + "issued_at": { "type": "integer", "minimum": 0 }, + "stale": { "type": "boolean" }, + "claim_class": { "type": "string", "minLength": 1 }, + "integrity": { + "type": "object", + "additionalProperties": false, + "required": ["alg", "digest", "key_id"], + "properties": { + "alg": { "const": "sha256" }, + "digest": { "type": "string", "minLength": 1 }, + "key_id": { "type": "string", "minLength": 1 } + } + } + } +} diff --git a/schemas/pf_core_mirrors/reward_binding/verification_result.schema.json b/schemas/pf_core_mirrors/reward_binding/verification_result.schema.json new file mode 100644 index 0000000..f73f640 --- /dev/null +++ b/schemas/pf_core_mirrors/reward_binding/verification_result.schema.json @@ -0,0 +1,32 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "pcs.verification_result.v0", + "title": "PCS Verification Result (mirrored)", + "description": "Immutable mirror of PCS verification result. Not in PF-Core TCB.", + "type": "object", + "additionalProperties": false, + "required": [ + "schema_version", + "result_id", + "verifier_profile_ref", + "status" + ], + "properties": { + "schema_version": { "const": "pcs.verification_result.v0" }, + "result_id": { "type": "string", "minLength": 1 }, + "verifier_profile_ref": { + "type": "object", + "additionalProperties": false, + "required": ["id", "digest"], + "properties": { + "id": { "type": "string", "minLength": 1 }, + "digest": { "type": "string", "minLength": 1 } + } + }, + "status": { + "type": "string", + "enum": ["pass", "fail", "error"] + }, + "artifact_digest": { "type": "string" } + } +} diff --git a/schemas/pf_core_mirrors/reward_binding/verifier_profile.schema.json b/schemas/pf_core_mirrors/reward_binding/verifier_profile.schema.json new file mode 100644 index 0000000..44b8eb3 --- /dev/null +++ b/schemas/pf_core_mirrors/reward_binding/verifier_profile.schema.json @@ -0,0 +1,20 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "pcs.verifier_profile.v0", + "title": "PCS Verifier Profile (mirrored)", + "description": "Immutable mirror of PCS verifier profile. Not in PF-Core TCB.", + "type": "object", + "additionalProperties": false, + "required": ["schema_version", "profile_id", "config_digest", "status"], + "properties": { + "schema_version": { "const": "pcs.verifier_profile.v0" }, + "profile_id": { "type": "string", "minLength": 1 }, + "config_digest": { "type": "string", "minLength": 1 }, + "status": { + "type": "string", + "enum": ["active", "superseded", "revoked"] + }, + "suite": { "type": "string" }, + "rubric": { "type": "string" } + } +}