changedInput schema / properties / record / $comment
Previous value: -"Record wire version stays 1.0. Cross-field checks a JSON Schema cannot express are normative in the specification and enforced by the published validator: (a) resolved_at < valid_until; (b) record_id's issuer/object/jurisdiction segments equal issuer.id, object_id and jurisdiction; (c) supersedes, when present, differs from record_id only in its trailing sequence number, which is exactly one lower; (d) GTINs are zero-padded GTIN-14 with a valid GS1 check digit; (e) host object_ids are lowercase, punycode-encoded, no trailing dot. record_id keeps its colons on the wire; a filesystem mirror replaces each colon with an underscore (CEO ruling 2026-08-29). GB is rejected as invalid_jurisdiction naming the valid set — UK is the member code (permanent GB=UK rule). Verification VERIFIES every byte of the canonical signing payload; nothing claims to reproduce signature bytes (ECDSA is randomized). v1.3 adds the optional case_study boolean and the unit rule: record-holders are keyed GTIN x jurisdiction only (NG-11 s2k)."New value: +"Record wire version stays 1.0. Cross-field checks a JSON Schema cannot express are normative in the specification and enforced by the published validator: (a) resolved_at < valid_until; (b) record_id's issuer/object/jurisdiction segments equal issuer.id, object_id and jurisdiction; (c) supersedes, when present, differs from record_id only in its trailing sequence number, which is exactly one lower; (d) GTINs are zero-padded GTIN-14 with a valid GS1 check digit; (e) host object_ids are lowercase, punycode-encoded, no trailing dot. record_id keeps its colons on the wire; a filesystem mirror replaces each colon with an underscore (CEO ruling 2026-08-29). GB is rejected as invalid_jurisdiction naming the valid set — UK is the member code (permanent GB=UK rule). Verification VERIFIES every byte of the canonical signing payload; nothing claims to reproduce signature bytes (ECDSA is randomized). v1.3 adds the optional case_study boolean and the unit rule: record-holders are keyed GTIN x jurisdiction only (NG-11 s2k). Served flat since 1.0.2 (no alternation constructs; the signal discriminator binds the state); the full contract schema is https://rco-a2a.ai/schema/v1.4/resolve_compliance.tool.json and is what the validator enforces."
removedInput schema / properties / record / allOf
Removed value: -[
- {
- "$comment": "The seven legal signal/state pairs.",
- "oneOf": [
- {
- "properties": {
- "signal": {
- "const": "CPG-000"
- },
- "state": {
- "const": "NOT_APPLICABLE"
- }
- }
- },
- {
- "properties": {
- "signal": {
- "const": "CPG-200"
- },
- "state": {
- "const": "ALLOW"
- }
- }
- },
- {
- "properties": {
- "signal": {
- "const": "CPG-300"
- },
- "state": {
- "const": "CONDITIONAL"
- }
- }
- },
- {
- "properties": {
- "signal": {
- "const": "CPG-403"
- },
- "state": {
- "const": "RESTRICT"
- }
- }
- },
- {
- "properties": {
- "signal": {
- "const": "CPG-404"
- },
- "state": {
- "const": "NOT_FOUND"
- }
- }
- },
- {
- "properties": {
- "signal": {
- "const": "CPG-451"
- },
- "state": {
- "const": "ESCALATE"
- }
- }
- },
- {
- "properties": {
- "signal": {
- "const": "CPG-500"
- },
- "state": {
- "const": "SYSTEM_ERROR"
- }
- }
- }
- ]
- },
- {
- "$comment": "conditions: required non-empty for CPG-300, forbidden otherwise.",
- "else": {
- "not": {
- "required": [
- "conditions"
- ]
- }
- },
- "if": {
- "properties": {
- "signal": {
- "const": "CPG-300"
- }
- }
- },
- "then": {
- "properties": {
- "conditions": {
- "minItems": 1
- }
- },
- "required": [
- "conditions"
- ]
- }
- },
- {
- "$comment": "CPG-404 carries eco_ref null; every other signal carries a non-null eco_ref.",
- "else": {
- "properties": {
- "eco_ref": {
- "type": "object"
- }
- }
- },
- "if": {
- "properties": {
- "signal": {
- "const": "CPG-404"
- }
- }
- },
- "then": {
- "properties": {
- "eco_ref": {
- "type": "null"
- }
- }
- }
- }
-]
removedInput schema / properties / record / properties / eco_ref / anyOf
Removed value: -[
- {
- "type": "null"
- },
- {
- "properties": {
- "hash": {
- "pattern": "^sha256:[a-f0-9]{64}$",
- "type": "string"
- },
- "url": {
- "format": "uri",
- "type": "string"
- }
- },
- "required": [
- "url",
- "hash"
- ],
- "type": "object"
- }
-]
addedInput schema / properties / record / properties / eco_ref / properties
Added value: +{
+ "hash": {
+ "pattern": "^sha256:[a-f0-9]{64}$",
+ "type": "string"
+ },
+ "url": {
+ "format": "uri",
+ "type": "string"
+ }
+}
addedInput schema / properties / record / properties / eco_ref / required
Added value: +[
+ "url",
+ "hash"
+]
addedInput schema / properties / record / properties / eco_ref / type
Added value: +[
+ "object",
+ "null"
+]
addedInput schema / properties / record / properties / signal / $comment
Added value: +"Discriminator. Each signal binds exactly one state: CPG-000=NOT_APPLICABLE, CPG-200=ALLOW, CPG-300=CONDITIONAL, CPG-403=RESTRICT, CPG-404=NOT_FOUND, CPG-451=ESCALATE, CPG-500=SYSTEM_ERROR. conditions: required non-empty for CPG-300, forbidden otherwise. Enforced by the validator."
removedInput schema / properties / record / properties / supersedes / anyOf
Removed value: -[
- {
- "type": "null"
- },
- {
- "pattern": "^rco:[a-z0-9-]+:(gtin:[0-9]{14}|host:([a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z]{2,63}):([A-Z]{2}-ECO-10060|apex):[1-9][0-9]*$",
- "type": "string"
- }
-]
addedInput schema / properties / record / properties / supersedes / pattern
Added value: +"^rco:[a-z0-9-]+:(gtin:[0-9]{14}|host:([a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z]{2,63}):([A-Z]{2}-ECO-10060|apex):[1-9][0-9]*$"
addedInput schema / properties / record / properties / supersedes / type
Added value: +[
+ "string",
+ "null"
+]