Replies: 2 comments
|
Decision recorded for the first deliverable of this RFC, dmfdeploy/dmf-media#38 (the descriptor schema and conformance tool):
Further comments on the package format stay welcome here; anything that changes the schema lands as a follow-up PR. |
0 replies
|
Decision update for the package descriptor, tracked in #746. This changes the earlier note that the descriptor stays dmfdeploy's own format.
This answers question 5 for now: align by name and shape today, and keep checking the draft as it changes. Renames of existing descriptor fields are a schema change, so we plan to batch them in one change before any package exists (#637). |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Summary
dmfdeploy is an independent, open prototype of a Dynamic Media Facility. It proves its claims with conformance checks against published specifications and shares what it learns upstream as evidence. It does not call itself a reference.
This RFC proposes the Helm Media Function Package v1. It is one ordinary Helm chart plus one adjacent descriptor file,
dmf-function.yaml. A conformance tool checks both with JSON Schema and a set of deliberately broken fixtures. The proposal is a scoped implementation of ADR-0047. It adds no actuator, no operator and no new control plane.Tracking issues: #634 (schema and tool), #635 (MXL port binding), #636 (wrapping step), #637 (existing charts).
The problem
Today a Helm chart, a catalog YAML file and a launcher are joined by a key string. Versions, image references and MXL facts can drift apart. The console rejects only a malformed EBU classification. CI checks that demand matches for one chart.
ADR-0047 already defines the unit of contribution: catalog metadata, a Helm chart and an image closure. The IS-05 work (see the companion RFC) also needs NMOS and MXL facts in a machine-readable form. Today those facts live in prose and in launcher code.
The closest public manifest is AMWA's IN-003, which is still a draft: its repository has no release or tag. Its manifest schema describes resources and media inputs and outputs. It has no field for an image digest, a publisher, a source commit or a signature, so it can't carry artifact identity or trust on its own.
Proposed decision
A package is a directory
packages/<key>/with one Helm chart (Chart.yamlapiVersion: v2) and onedmf-function.yaml. The package version equalsChart.yamlversion. The package holds no launcher code.Trust comes first
values.schema.json. Values may not turn digest-pinned images or declared resources into free-form overrides.What the descriptor holds
apiVersion: dmf.io/v1,kind: MediaFunction, key, version, display name, summary, publisher, source commit, provenance URI, and a licence field. The licence may say "declared, not enforced" but is never absent.verticalormedia_function_type, using the ADR-0046 enums.{name, direction, control, transport, format}. Formats and transports use NMOS Parameter Register URNs. For MXL that isurn:x-nmos:transport:mxlfrom BCP-007-03. A receiver may carry BCP-004-01 style constraint sets.runtime-assigned,topology-suppliedorfixed-singleton. A concrete flow UUID appears only underfixed-singleton. Resolved IDs belong to the instance overlay (ADR-0046), not the package.providesandconsumesreferences.resourceManifestis also generated from the descriptor and checked by the conformance run. The Helm requests that fixtures verify stay authoritative.Package keys are unique per publisher. The names
dmf-*andproject-*are reserved for the project source.Validation
dmf-function-conform packages/<key>does the following:helm lint --strict.The resolved instance overlay is validated separately, including that MXL bindings resolve to distinct IDs. One required fixture deploys two instances of a function into one MXL domain, checks that they get distinct flow IDs, and then runs a receiver A/B IS-05 switch.
Bad fixtures fail on purpose:
CI in
dmf-mediaruns the tool for every package. It generalises the existingcheck-catalog-demand.py.Order of work
Write the JSON Schemas, the conformance tool and the bad fixtures first. Code for #634 to #637 follows. The chart hygiene of the public
mxl-k8sproject is a model for the validation target only:values.schema.json, digest-pinned images and native multi-arch builds.Contribution and migration
Likely third-party packages arrive as an image plus a manifest, not as a chart. So conformance needs a wrapping step (#636): a contributor wraps the image and manifest into a chart plus a descriptor, then submits it through an ADR-0047 catalog source. The package is browse-only until promotion and generic-launcher policy allow deployment. No contributor receives AWX code authority.
The existing
dmf-mediacharts move first:mxl-fabrics-demo(high effort: split topology, resource gate, MXL ports),nmos-cppandnmos-crosspoint(medium effort each) (#637).Alternatives considered
Consequences
What would prove this wrong
Questions for discussion
How this gets decided
Discussion here shapes the format. When it converges, an ADR records it as a scoped implementation of ADR-0047, following the RFC to ADR path. Related: ADR-0045, ADR-0046.
All reactions