open-standards/wai/registry/capabilities.schema.json
Transaction Science 084bfda783 Merge #446 (wai/registrations-b3r @da3c09c5): JPEG XS, MV-HEVC, the projection descriptor, IEEE 1857.11, format probes, CMSD read, LOC carriage
Conflicts, both sides kept:
- codecs/mod.rs: main's gain-map and ST 2094-50 companions and DRED strings with
  #446's projection descriptor, JPEG XS, MV-HEVC and IEEE 1857.11 in every list
  (companion-only, video companions, lossless, lossy, patent pool, unclassified,
  the registered list and the tests).
- codecs/registry.rs: both sides' registrations, wire kinds (glTF extension and
  telemetry key; WireKind::all() is now 17, which neither side's 16 compiled
  with), document constants and wire identifiers.
- SPEC §5: main's HDR rows and paragraph, then #446's projection row; the
  companion-only paragraph names both sides' strings.
- REGISTRY.md's list of extensions and kinds of wire names; delivery-telemetry
  keeps main's §9.4 and adds #446's §10; Cargo.toml features and [[test]]s,
  glossary_check, the live-conformance README rows and wai-conformance.yml's
  paths: both sides.
- CHANGELOG: #446's entry on top.
- capabilities.json, capabilities.schema.json, v2.ttl, v2.shapes.ttl and
  REGISTRY.md's table: regenerated (wai registry export, then --check).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 08:23:51 -04:00

347 lines
9 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://git.transaction.science/Transaction-Science/open-standards/src/branch/main/wai/registry/capabilities.schema.json",
"title": "WAI capability registry",
"description": "Every string SPEC §5 registers, generated by `wai registry export` from the reference implementation's registry (wai-rs/src/codecs/registry.rs). REGISTRY.md states the policy.",
"type": "object",
"additionalProperties": false,
"required": [
"schema",
"capabilities",
"identifiers",
"unregistered_labels",
"wire_identifiers"
],
"properties": {
"schema": {
"type": "string"
},
"capabilities": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"capability",
"kind",
"status",
"media",
"role",
"tier",
"licence",
"replicate",
"sets",
"spec_section",
"edition",
"registered"
],
"properties": {
"capability": {
"type": "string",
"pattern": "^wai(\\.[a-z0-9_]+)+$"
},
"kind": {
"enum": [
"payload",
"companion",
"refinement",
"derivation",
"record"
]
},
"status": {
"enum": [
"registered",
"candidate"
]
},
"media": {
"enum": [
"image",
"audio",
"video",
"text",
"volumetric",
"haptic",
"metadata",
"interactive",
"binary",
null
]
},
"role": {
"enum": [
"standalone",
"companion",
"enhancement",
"refinement",
null
]
},
"tier": {
"enum": [
"lossless",
"lossy",
"perceptual",
null
]
},
"licence": {
"enum": [
"royalty-free",
"patent-pool",
"proprietary",
"non-commercial",
null
]
},
"replicate": {
"enum": [
"standard-defined",
"standard-tolerance",
"standard-unclassified",
"neural-int-exact",
"neural-entropy-exact",
"generative-exact",
"neural-float",
"behavioral",
null
]
},
"sets": {
"type": "array",
"uniqueItems": true,
"items": {
"enum": [
"floor",
"recommended"
]
}
},
"spec_section": {
"type": "string"
},
"edition": {
"type": [
"string",
"null"
],
"description": "The edition the registration names; null means the edition of the named standard current on the date in `registered` (SPEC §8)."
},
"registered": {
"type": "string",
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
"description": "The date of the first commit of this repository that registers the string; the specification entered the repository on 2026-06-12."
},
"ops": {
"type": "object",
"description": "The integer operator set the capability decodes through (extensions/integer-operators.md §11). Absent for a capability that does not. A capability whose decode runs no graph, only stage operators (§13.5), has no profile, subset or lowering.",
"additionalProperties": false,
"required": [
"set"
],
"dependentRequired": {
"profile": [
"subset",
"lowering"
],
"subset": [
"profile",
"lowering"
],
"lowering": [
"profile",
"subset"
],
"role_profiles": [
"profile"
]
},
"anyOf": [
{
"required": [
"lowering"
]
},
{
"required": [
"stage"
]
}
],
"properties": {
"set": {
"const": "wai-ops/1"
},
"profile": {
"enum": [
"acc32",
"acc64"
]
},
"subset": {
"enum": [
"full",
"npu"
]
},
"lowering": {
"type": "string"
},
"role_profiles": {
"type": "object",
"description": "Roles of the lowering whose graphs every conforming set holds to a stronger profile than `profile`, each with that profile (extensions/integer-operators.md §11).",
"minProperties": 1,
"additionalProperties": {
"enum": [
"acc32",
"acc64"
]
}
},
"stage": {
"type": "object",
"additionalProperties": false,
"properties": {
"rans64": {
"type": "object",
"additionalProperties": false,
"required": [
"table",
"escape",
"end"
],
"properties": {
"table": {
"enum": [
"t4097",
"t2"
]
},
"escape": {
"enum": [
"lenient",
"strict"
]
},
"end": {
"enum": [
"canonical",
"final_only"
]
}
}
},
"bucket": {
"enum": [
"ceil",
"floor"
]
}
}
}
}
}
}
}
},
"identifiers": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"identifier",
"spec_section",
"meaning"
],
"properties": {
"identifier": {
"type": "string",
"pattern": "^wai(\\.[a-z0-9_]+)+$"
},
"spec_section": {
"type": "string"
},
"meaning": {
"type": "string"
}
}
}
},
"unregistered_labels": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"label",
"reason"
],
"properties": {
"label": {
"type": "string",
"pattern": "^wai(\\.[a-z0-9_]+)+$"
},
"reason": {
"type": "string"
}
}
}
},
"wire_identifiers": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"kind",
"document",
"section",
"status"
],
"properties": {
"name": {
"type": "string"
},
"kind": {
"enum": [
"media-type",
"codecs-prefix",
"fourcc",
"magic",
"data-id",
"scheme",
"path",
"well-known",
"playlist-tag",
"playlist-attribute",
"document-kind",
"catalog",
"setup-option",
"http-header",
"frame-metadata",
"gltf-extension",
"telemetry-key"
]
},
"document": {
"type": "string"
},
"section": {
"type": "string",
"pattern": "^(§[0-9]+(\\.[0-9]+)*|Appendix [A-Z])$"
},
"status": {
"enum": [
"defined",
"provisional",
"proposed"
]
}
}
}
}
}
}