v2.54.1
v2.54.1
One more instance of the enum-keyed silent-failure class (issue #70), plus a
guard so the next one can't ship unnoticed.
Fixed
- The raw
timeline.exportaction passedtype/subtypestraight to
Timeline.Export, which needs resolvedresolve.EXPORT_*enum values — a
JSON/MCP caller can't pass a live enum, so the action silently wrote nothing
for every caller. It now resolves friendly format names (andEXPORT_*
constant names) via the same_timeline_export_specresolver that
export_timeline_checkeduses, and reports the resolved
export_type/export_subtype. export_timeline_checkedresolved enum constants against the module global
resolve(which can beNoneand silently degrade theEXPORT_*args to
strings); it now usesget_resolve(), matching the issue-#70 lesson.
Added
- An
api_truth↔ mitigation guard test: everyenum-tagged catalog entry must
declare amitigation(its resolver/wrapper functions), each of which must
exist insrc.server. The next raw enum passthrough — a documented symbol with
no real resolver, or a renamed/removed resolver — now fails CI. Added a
Timeline.Exportcatalog entry and wiredmitigationonto theAutoSyncAudio,
CreateSubtitlesFromAudio, and CloudProject entries.
Validation
- Full offline unit/static suite green (1238 tests; new export-resolution
regression test + the mitigation guard). - Live-validated against DaVinci Resolve Studio 21.0.0
(tests/live_enum_settings_check.py, read-only):fcpxml/edlresolve to the
liveEXPORT_*enum values rather than raw strings. (No timeline mutation or
file write is performed by the check.)