Open Workflow GraphPre-release
Bindings

IMF

How OWG governs an IMF package as one asset, with its track files related by edges and its validation as a gate before delivery.

View as markdownMachine-readable source for agents and scripted implementers

Status: buildable on v0.92 with no schema change. Identifier scopes are a convention set by this page.

What IMF is

The Interoperable Master Format is the SMPTE ST 2067 suite. An IMF package holds:

  • Track files: MXF files carrying the picture, audio and timed text essence.
  • A Composition Playlist (CPL), defined in ST 2067-3, that says which parts of which track files play, in what order.
  • A Packing List (PKL) and an AssetMap that list and locate everything in the package.

The core constraints are in ST 2067-2, and an application such as App 2E (ST 2067-21) narrows them for a delivery profile. IMF is built for versions: a supplemental package can reuse essence from an earlier one instead of shipping it again. Delivery specifications from streamers name the application and profile they require.

The hook

The package is one asset. Its identity is the triple of UUIDs IMF already issues, carried as identifiers.

{
  "id": "imf_package",
  "type": "video.package",
  "predecessor": "locked_cut",
  "version_relation": "representation",
  "identifiers": [
    { "scope": "imf.cpl",      "id": "urn:uuid:5b1d7c0e-2f43-4d8a-8a55-0c6e91a7d301" },
    { "scope": "imf.pkl",      "id": "urn:uuid:c4e2a9f7-6b18-47d3-9e0a-71d5b3f8a112" },
    { "scope": "imf.assetmap", "id": "urn:uuid:0a93f5d2-1c7b-4e64-b8d9-3e2f6a4c7b90" }
  ]
}

Each track file is a separate asset related to the package with a part_of edge:

{
  "id": "rel_video_in_pkg",
  "relation": "part_of",
  "from": { "kind": "asset", "id": "track_video" },
  "to":   { "kind": "asset", "id": "imf_package" },
  "assurance": "asserted"
}

How it maps

IMFOWG
Packagean asset with imf.cpl, imf.pkl and imf.assetmap identifiers
Track filean asset, part_of the package, with its own storage locator
The cut the package was made frompredecessor, with version_relation: "representation"
A territory or language versiona new package asset with version_relation: "alternative" and the earlier package as predecessor
Packaginga task with an executor and an attributed participant
Validationa qc task with named checks, producing a report asset
Sign-off before deliverya review task, then a delivery task that depends on it

Delivery is gated by structure: the delivery task depends_on the approval, which depends_on the validation. A package that fails validation cannot reach the delivery task without someone overriding the graph, and the override is on the record.

Reference workflow

imf-master-package.owg.json — a locked cut is packaged, validated, approved and delivered, with video and audio track files related to the package.

curl -O https://openworkflowgraph.org/corpus/imf-master-package.owg.json
owg-validate imf-master-package.owg.json --json

What to take from it:

  • The package has an identity in IMF's own terms, so any system that reads the CPL can find the asset.
  • Nothing is parsed. OWG holds the UUIDs and the edges; opening the CPL is the packager's and validator's job.
  • The checks on the QC task are names of what was checked. They are free strings today.

What stays in IMF

OWG does not open MXF files, parse the CPL, or compute conformance. Composition, timing and essence rules stay in the ST 2067 tooling. Open-source validators exist for the structural checks, such as Netflix Photon, and can sit behind the validation task as its executor.

Known gaps

  • imf.cpl, imf.pkl and imf.assetmap are a convention documented here, not yet in the schema's list of example scopes.
  • There is no shared vocabulary for IMF QC checks. Two implementations may name the same check differently.
  • Supplemental packages, where one package depends on essence in another, would want a typed edge between the two packages. Today the predecessor field carries it.

See also: EIDR, MDDF Avails, Standards bindings.