Repository navigation
Support MOV archive edits and guard unsupported movie containers - #139
Conversation
There was a problem hiding this comment.
🔵 Needs a closer look
Current-head Tracker load/save/fresh-process reopen acceptance for both tabs and three-platform CI remain pending, so the supplied local/headless checks do not establish the new movie-archive write path’s interoperability.
No open issues 🎉
What changed in this PR
Enables editing and saving audited constant-rate movies inside existing Tracker .trz archives through MoTrack’s archive writer and paired Save workflow, while preserving other experiments and embedded files.
Changes:
- Allows existing movie archives to use the established mass, mark and clip-range editing adapter.
- Adds a mixed movie/image fixture and regression coverage for archive preservation, native reopen, paired-save recovery and four Tracker round-trip modes.
- Documents supported workflows and remaining limits. Current-head Tracker application acceptance and three-platform CI remain pending; this does not resolve the historical MOV/Open Recent report.
| File | Description |
|---|---|
tools/reference/ArchiveMovieFixture.java |
Generates the reproducible mixed movie/image archive fixture. |
tools/corpus.py |
Adds movie-archive round-trip modes and saved-media verification. |
tests/tracker_archive_writer_test.cpp |
Covers movie archive edits, native reopen and safe refusal paths. |
tests/test_corpus.py |
Tests mixed-tab checks and invalid archived-media references. |
tests/paired_workspace_test.cpp |
Exercises desktop paired saving and reopening after original removal. |
tests/corpus/README.md |
Documents fixture provenance and archive acceptance checks. |
tests/corpus/manifest.json |
Registers the movie archive and independent tab expectations. |
tests/corpus_probe.cpp |
Adds movie-archive export modes and recovery-state checks. |
src/tracker_writer.hpp |
Documents the archive writer’s supported movie scope. |
src/tracker_writer.cpp |
Removes the blanket refusal of movie archive exports. |
README.md |
Describes supported movie-archive saving workflows. |
docs/native-format.md |
Records archive preservation contracts, restrictions and validation. |
docs/migration-plan.md |
Updates implementation status and distinguishes completed from pending evidence. |
Review effort: Balanced
There was a problem hiding this comment.
🟡 Changes recommended
The suffix exception permits movie-archive exports despite a demonstrated resave failure that leaves a nonexistent media reference; exports must remain blocked until isolated save/reopen and complete media checks pass.
1 open issue
Review effort: Balanced
There was a problem hiding this comment.
🔵 Needs a closer look
MOV archive and reference-cache changes still await current-head Tracker 6.3.5 all-tab load/save/fresh-reopen acceptance and three-platform CI, while native/headless checks alone cannot establish interoperability.
Review effort: Balanced

Change
MoTrack can now save mass, mark and clip-range edits in an existing audited constant-rate MOV
.trz, using normal paired Save and native reopen after the original input is removed. Other experiments, compressed members, complete media and supporting files are preserved.The first real Tracker check exposed a reference limitation: Tracker 6.3.5 fails to extract the original AVI archive before any MoTrack edits. That case stays pinned and explicitly excluded from accepted application round trips; the writer refuses non-MOV movie archives without replacing the destination. #140 records the failing run, exact reference bytecode/source evidence and remaining container work. This is separate from the historical MOV/Open Recent report in #65.
The positive fixture contains a genuine independently authored raw RGB24 MOV and a second image experiment. Four modes cover full-range, strided, single-frame and interrupted/recovered paired saves. All require actual Tracker loading of both tabs, resaving and freshly reopening each, native reimport, and complete movie/image byte checks. Baseline archives are copied alone into fresh directories so neighboring media cannot substitute for extraction.
The reference harness initializes Tracker's normal public cache preference inside each subprocess's private home. A bare
TFrameotherwise leaves that preference unset and deletes extracted movies on process exit; a bounded headless control reproduced that difference. All-tab reports require the configured policy, while complete media hashes and fresh-process reopening remain mandatory.Validation
f166ba9a634bf6476b5eb32c69e144def9e8aacain run 42568545597. The Linux actual-Tracker baseline and all four MOV archive export modes pass, including both-tab fresh reopen, complete media hashes and native reimport. Both contributor setup checks also pass; Ubuntu setup passed its targeted retry after an upstream CMake download HTTP 504. All six required checks are green on the same revision.Compatibility and review
MOV archive output reuses the existing source/member/digest checks and constant-rate adapter. Movie timing, calibration, track identity and broader schemas remain restricted. New portable movie packaging, broader archive containers, variable-rate movies and filters remain unfinished. No Java dependency is added to the native application and no user-facing strings were added.
docs/migration-plan.md; each remains partial. Guard archive movie formats that pinned Tracker cannot reopen #140 is included indocs/upstream-issues.md.docs/code-review.mdto this diff.