-
The conformed clip keeps its SOURCE version current (Chat 99, measured
in-vivo — the fix for a full day of 'no media' on the timeline): Flame read
the very same.clipasstart_frame=1001when the light version was
current and asstart_frame=0, spanning 1101 frames, when the comp version
was. With the comp current, every Update Sources — which performs a
replace — anchored the conformed segment at00:00:00:00and lost its
cut. The asymmetry is what cost the time: Update Sources BREAKS the
anchor against a badly-read clip and does not restore it against a good
one (verified across all threeversion_selection_modevalues), so a
damaged segment must be re-laid withPySequence.overwrite. New
keep_source_currentmarks the first (source) version current instead of
the newest; the comp version is still in the clip and the operator flips to
it natively, which is the intended gesture. Nothing is written to the
timeline. Validated end to end: re-conform →update_sources()→ flip to
comp → flip back, anchor00:00:40:01throughout. -
Spliced feeds inherit the source feed's anchor DESCRIPTION, not just its
ticks: the two feeds already agreed onnbTicks 1001and the clip still
resolved to 0, because they disagreed about how that timecode is expressed
— Maya's EXRs carry no timecode (TimecodeSource=Filename, empty rate, no
sampleRate) while Flame's Write File embeds one (Header, explicit
rate).startTimecode/rate,sampleRateand theTimecodeSource/
RateSourceuserData entries are now copied from the source feed, ALWAYS —
the previous early-return skipped it whenever the ticks matched. Pixel
metadata (channels, layers, colour space) is deliberately left alone. This
alone did NOT fix the start-frame reading; it is kept because leaving the
feeds inconsistent about their own anchor is a latent trap. +7 tests. -
openclip_createcan splice in publishes selected by TYPE, with no Task
(Chat 99): Flame's own tk-flame batch-render integration publishes the comp
asFlame Renderand links no Task — its context comes from the
.batchpath, whose template carries no{Step}token. Every existing
selector is Task-based, so the conformed clip never learned the comp
existed and Update Sources had nothing to offer. New optional
extra_publish_types(e.g.['Flame Render']) adds one version group per
type, matched on the Shot alone, appended AFTER the Task-selected groups so
the comp lands on top and becomes current. The uid token is read from the
publish code (SEQ003_SH001_CMP_v001.%04d.exr→CMP_v001) rather than
from the type name, so the clip readsLIGHT_v003+CMP_v001. A type
with no publishes yet is reported inskipped, never fatal — the clip is
valid before the first comp render. Still explicit by design: the tool does
not guess which publishes feed a conform. +5 tests. -
Spliced versions inherit the SOURCE version's start-timecode anchor
(Chat 99, in-vivo 'no media' on the timeline flip): a conformed segment
lines its versions up by TIMECODE, and the two writers disagree — Maya's
EXRs carry notimeCodeattribute sodl_get_media_infofalls back to
the frame number (LIGHT feednbTicks 1001), while Flame's Write File
embeds a real one and a batch whose source timecode was never set stamps
00:00:00:00(COMP feednbTicks 0). Same frame numbering, same
duration, correct paths — and the flip still showed 'no media', because
the segment asked for TC 1001-1100 against a feed spanning TC 0-99. The
pipeline owns the clip, sosplice_openclipsnow pulls every later
feed'snbTicks/dropModeonto the first (source) version's, per track,
andopenclip_createREPORTS it in a newtimecode_realignedfield —
never a silent metadata rewrite.startFrameis deliberately NOT
normalised: it must keep matching the real filenames in<path>, and
numbering parity is enforced upstream at render time. +6 tests. -
openclip_createmulti-step aggregation (Chat 98 comp architecture,
operator-approved): new optionalstepslist splices publishes from
SEVERAL Steps into ONE clip, in list order —['Light', 'Comp']gives
the conform timeline the LGT render and every comp version through the
same open clip, flipping natively via Source Versions. Version uids are
disambiguated with the step string uppercased (LIGHT_v003,
COMP_v001); current = the newest version of the LAST listed step with
publishes; a listed step with no publishes yet is reported, never an
error (the clip is valid before the first comp render). Proven necessary
in-vivo: Flame's Write File OWNS any clip it creates — it overwrote the
pipeline clip wholesale (43 KB multichannel → 2.4 KB, versions gone), so
the pipeline aggregates and the Write File is demoted to media-only.
Single-step behaviour unchanged (plainvNNNuids). +3 tests.