Skip to content

6.4.2.12 IntegrationGapOccurrence

6.4.2.12.1 Purpose

One meeting of an integration gap by one farm, through a failed sync run or a failed parse job. The first occurrence of each farm carries a sample: the part of the input that was not understood, stored as a raw file of the feed. Later occurrences of the same farm carry none, so storage grows with the number of farms, not with retries. Samples are customer data: they follow the feed's retention and erasure, and only staff allowed to read gaps can open them.

6.4.2.12.2 Questions it answers

  • Which farms met this gap, and when?
  • Which run or job failed on it?
  • Where is the sample of the input, and who may read it?

6.4.2.12.3 Fields

Field Type Cardinality Description
id string (uuid) 1..1 Key.
gap IntegrationGap 1..1
farm Farm 1..1
source_feed SourceFeed 0..1
sync_run SyncRun 0..1 For side = client: the run that failed with unsupported_source.
parse_job ParseJob 0..1 For side = parser: the job that failed with unsupported_version or invalid_file. Exactly one of sync_run and parse_job.
sample RawMetadata 0..1 The input that was not understood, uploaded as a raw file of the feed: the part the client could read (a table export, the first pages of an answer) or the raw file itself. At most one sample per (gap, farm); later occurrences of the same farm carry none, so storage grows with farms, not with retries.
seen_at datetime 1..1
created_at datetime 1..1

6.4.2.12.4 Relationships

References

6.4.2.12.5 Rules & constraints

  • One meeting of a gap by one farm.
  • (gap, sync_run) is unique and (gap, parse_job) is unique: a repeated delivery of the same run or job adds nothing.
  • Samples are customer data: they stay in the raw bucket of the feed, follow its retention and erasure (ErasureRequest), and are read only by staff with farm.integration_gaps.read. Collecting them must be allowed by the Organization's terms (to confirm with the legal adviser, as for erasure).