Skip to content

Commit d5a5e64

Browse files
committed
Add BMFF XMP tests and host integration backlog
Add a Host Integration and Adoption backlog to docs describing runtime queries, FlatHost contract, raw-preserving snapshots, diagnostics, and other adoption-focused work. Extend python_metatransfer_edit_smoke_test.cmake with many BMFF/XMP test fixtures and logic: new target/edited file variables for HEIF/AVIF/CR3, python-generated sample files, updated readback/check script modes (including CreatorTool checks and exif/no-exif handling), and several helper functions to exercise dual-write (embedded+sidecar), embedded-only, existing-embedded target builds, and mixed-destination carrier-precedence scenarios. These changes add end-to-end checks for embedded vs sidecar XMP handling and ensure readback and raw-packet content expectations for BMFF targets.
1 parent e5af717 commit d5a5e64

2 files changed

Lines changed: 513 additions & 8 deletions

File tree

docs/metadata_transfer_plan.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -769,13 +769,67 @@ parity across every workflow.
769769
- [ ] `TIFF/DNG` rewrite guarantees are strong enough to stop being a primary parity blocker
770770
- [ ] the next work slice can move to bounded `BMFF` depth instead of still backfilling the writer baseline
771771

772+
### Host Integration And Adoption Backlog
773+
774+
This backlog captures adoption-oriented work that supports host projects with
775+
flat metadata models and deferred output writes. It should not replace the
776+
writer-confidence slice above; it should be sequenced around it.
777+
778+
#### Near-Term Host Contract Work
779+
780+
- [ ] add a small runtime capability query API for read, structured decode,
781+
transfer preparation, and target edit support by format and metadata family
782+
- [ ] mark public host-facing APIs with stability levels such as stable,
783+
experimental, or internal; start with `visit_metadata(...)`, snapshot
784+
read/build, fileless execution, and bundle execution
785+
- [ ] publish the generic `FlatHost` mapping contract: name style, duplicate
786+
handling, type projection, deterministic ordering, and namespace behavior
787+
- [ ] add a deterministic compatibility dump for names, values, scalar types,
788+
origins, and transfer/writeback decisions so downstream tests can avoid
789+
binary-packet baselines
790+
- [ ] document final conflict and precedence decisions for generated EXIF/XMP,
791+
IPTC/XMP, source embedded XMP, destination embedded XMP, and destination
792+
sidecar XMP
793+
794+
#### Medium-Term Fidelity Work
795+
796+
- [ ] design an opt-in raw-preserving `TransferSourceSnapshot` mode that keeps
797+
original carrier bytes alongside decoded `MetaStore` state
798+
- [ ] preserve bounded per-carrier provenance in raw snapshots: container type,
799+
block kind, byte range, original order, route identity, and decoded entries
800+
derived from the block
801+
- [ ] define policy choices for raw passthrough vs decoded re-emission when the
802+
destination container can safely accept either form
803+
- [ ] provide versioned snapshot serialization only after the raw/provenance
804+
model is settled
805+
- [ ] provide full prepared-bundle serialization if hosts need to prepare once
806+
and apply later to encoded target bytes
807+
808+
#### Supporting Work
809+
810+
- [ ] improve structured diagnostics with severity, stable code, carrier/family,
811+
offset or byte range where available, and short host-facing messages
812+
- [ ] extend resource accounting beyond current hard limits with preflight
813+
estimates for prepared transfers, sidecar output, and serialized snapshots
814+
- [ ] add clean-room public micro fixtures for host integration tests; do not use
815+
private corpus files, vendor drops, or scraped/spec text
816+
- [ ] add examples for `read bytes -> snapshot -> target bytes -> edited bytes`
817+
and `visit_metadata(...) -> flat host attribute list`
818+
- [ ] consider a bounded random-access IO callback only after bytes/file APIs
819+
and raw snapshot serialization are stable
820+
- [ ] defer any C ABI or opaque-handle facade until the host-facing C++ API is
821+
stable enough to freeze a narrow bridge
822+
772823
## Postponed Work
773824

774825
Still out of scope for the current milestone:
775826
- full arbitrary metadata editing parity
776827
- full C2PA signed rewrite / trust-policy parity
777828
- full EXIF / IPTC / XMP sync engine
778829
- broad TIFF/DNG and BMFF rewrite parity beyond the bounded current targets
830+
- mandatory raw-passthrough snapshots or snapshot serialization in the default
831+
read path
832+
- C ABI / opaque-handle stability commitments
779833

780834
## Practical Summary
781835

0 commit comments

Comments
 (0)