Problem
A Measurement's custom_key_str_list keys are appended to the JSON of the Records it emits, so
they reach a PostgreSQL Destination as columns like any other field. File metadata Records do not
get the same treatment: the Bridge's Uploader builds file_status and group_complete rows from a
fixed field set, so any custom key a Measurement declares is silently dropped on the File side.
The result is an asymmetry that is invisible until you go looking for it. Configure
custom_key_str_list: ["site"] on a camera Measurement and site appears in dc_records and never
in dc_files, with nothing logged and no error — the Records and the Files of the same Measurement
end up labelled differently.
What to build
Custom keys declared by a Measurement reach its File metadata Records the same way they reach its
Records, so a Measurement's labelling is consistent across both Destinations.
Acceptance criteria
Notes
The columns still have to exist in the Destination — the PostgreSQL sink maps JSON keys onto
existing columns 1:1 and does not add them — so this change makes the keys available on the File
path, it does not create schema.
Blocked by
None — can start immediately.
Problem
A Measurement's
custom_key_str_listkeys are appended to the JSON of the Records it emits, sothey reach a PostgreSQL Destination as columns like any other field. File metadata Records do not
get the same treatment: the Bridge's Uploader builds
file_statusandgroup_completerows from afixed field set, so any custom key a Measurement declares is silently dropped on the File side.
The result is an asymmetry that is invisible until you go looking for it. Configure
custom_key_str_list: ["site"]on a camera Measurement andsiteappears indc_recordsand neverin
dc_files, with nothing logged and no error — the Records and the Files of the same Measurementend up labelled differently.
What to build
Custom keys declared by a Measurement reach its File metadata Records the same way they reach its
Records, so a Measurement's labelling is consistent across both Destinations.
Acceptance criteria
file_statusRecords carry the custom keys declared in the emitting Measurement'scustom_key_str_listgroup_completeRecords carry them too, so a File group and its members are labelled consistentlydoc/src/dc/measurements.md's description ofcustom_key_str_listreflects that the keys reach Files as well as RecordsNotes
The columns still have to exist in the Destination — the PostgreSQL sink maps JSON keys onto
existing columns 1:1 and does not add them — so this change makes the keys available on the File
path, it does not create schema.
Blocked by
None — can start immediately.