Portable production workflow

This walkthrough joins the Iteration 3 features into one operator story. Use the postproject executable from a native release archive; none of these steps invokes Cargo.

Import real and compound media

Create the production, register a logical search root, and import a movie with optional technical inspection:

postproject init documentary.pproj --name "Documentary"
postproject root add documentary.pproj originals --label "Camera originals"
postproject media add documentary.pproj /media/A001.mov --name "A001" --inspect

--inspect invokes ffprobe as a bounded subprocess and records normalized technical values through the metadata vocabulary. Missing or rejected inspection is reported but does not cancel the import.

A directory identifying one numbered group becomes one image-sequence representation. Its rate stays explicit. A directory containing the checked AVCHD shape (PRIVATE/AVCHD/BDMV) becomes one package whose stream files are required essence and whose clip information, playlists, and navigation files retain their roles:

postproject media add documentary.pproj /media/plates/shot010 \
  --name "Shot 010 plates" --sequence-rate 24/1
postproject media add documentary.pproj /media/CARD_001 --name "Card 001"

The import result prints each asset ID. Keep those IDs for resolution calls or retrieve them later with postproject media list documentary.pproj.

Move the storage

Copy documentary.pproj and the media to another machine. The production keeps the logical root name, while the new mount is supplied per call:

postproject media resolve documentary.pproj MOV_ASSET_ID \
  --root-map originals=/mnt/documentary

An unmapped root is reported as unmapped; an unreadable mapping is unavailable. Other usable roots are still searched. If a relocated candidate is unique, pass its returned URI through --confirm to record the new locator. PostProject never confirms one of several plausible candidates automatically.

Detect damage and inspect the inventory

Delete one frame from the copied EXR sequence, then request the expensive verification tier and a non-mutating inventory:

postproject media resolve documentary.pproj SEQUENCE_ASSET_ID \
  --root-map originals=/mnt/documentary --verify --json
postproject media inventory documentary.pproj \
  --root-map originals=/mnt/documentary \
  --cache /var/tmp/documentary-inventory.json --json

The sequence resolves as partial and names the absent frame. Verification also detects a file replaced in place by recomputing stored fingerprints. Inventory reports known online, partial, missing, new, changed, duplicate, and ambiguous media without mutating the production. Its sidecar cache is machine-local and disposable; removing it changes scan cost, not results.

Resolve an editorial reference

The maintained OpenAssetIO Manager accepts the same versioned representation bindings exposed by PostProject. The OTIO demonstration stores one in an ordinary ExternalReference and lets the upstream OpenAssetIO media linker resolve it to locatable content. Rational clip time remains owned by OTIO, and an image sequence remains one PostProject representation.