Coalesce Quality Recon Audit Log

Type: object

Audit log emitted by synq-recon for each reconciliation run: per-check results, mismatch drill-downs, and the queries executed.

Timestamp

Type: string

When the run completed.

Type: string Default: ""

Path to the configuration file used.

Duration

Type: string

Total run duration.

Type: string

Name of the environment used for this run.
Empty for direct/unmanaged runs where no environment was applied.

Type: string

Unique identifier for this invocation/run.

Must match regular expression: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$

Must be at least 1 characters long

Audit Meta

Type: object

Build and environment metadata for the synq-recon binary.

Type: string Default: ""

Go toolchain version used to build the binary.

Type: string Default: ""

VCS revision hash.

Type: boolean Default: false

True if the working tree had uncommitted changes.

Type: string Default: ""

VCS commit timestamp (RFC3339).

Type: string Default: ""

Module version or tag (e.g. v1.2.3).

Additional Properties of any type are allowed.

Type: object

Type: string

Invocation ID of the parent run this continues from.
Set when this run resumes or drills deeper into a previous run's results.

Must match regular expression: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$

Type: array

Audit records for each reconciliation executed.

No Additional Items

Each item of this array must be:

Reconciliation Audit

Type: object

ReconciliationAudit captures the configuration and runtime execution data
for a single reconciliation.

Type: array of string

Column names discovered at runtime via QueryShape.

No Additional Items

Each item of this array must be:

Cutoff Result

Type: object

Cutoff resolution details (when cutoff was configured).
Captures the derived watermark values, final cutoff, and WHERE clauses
so the run can be fully understood and reproduced.

Type: string Default: ""

Final cutoff value after combining source/target watermarks
and applying truncation and offset transforms.

Type: string Default: ""

Watermark value derived from the source dataset.
Empty when cutoff was configured for target-only derivation.

Type: string Default: ""

WHERE clause applied to the source query.

Type: string Default: ""

Watermark value derived from the target dataset.
Empty when cutoff was configured for source-only derivation.

Type: string Default: ""

WHERE clause applied to the target query.

Additional Properties of any type are allowed.

Type: object

Type: string Default: ""

Error message if the reconciliation failed due to an infrastructure error.

Normalization

Type: object

Column normalization expressions applied after cross-DB type alignment.

Type: array of string

Source column expressions after normalization.

No Additional Items

Each item of this array must be:

Type: array of string

Target column expressions after normalization.

No Additional Items

Each item of this array must be:

Additional Properties of any type are allowed.

Type: object

Type: string Default: ""

Source query before variable interpolation (differs from suite query when variables are used).

Type: string Default: ""

Target query before variable interpolation.

Type: boolean Default: false

Whether source and target matched overall.
True when data matched exactly or differences were within configured thresholds.

Reconcilation

Type: object

The reconciliation configuration as executed.

Aggregate Config

Type: object

Aggregate comparison settings. Required when mode is AGGREGATE.
Defines which measures to compare and tolerance thresholds.

Columns defining the drill-down hierarchy for aggregate comparison. Falls back to key_column if not set.

Type: array of string

Single column: flat GROUP BY comparison.
group_columns: ["region"]
→ GROUP BY region

Multiple columns: cumulative GROUP BY drill-down, pruning matched groups
at each level to focus on divergent branches.
group_columns: ["region", "city", "store"]
→ Level 0: GROUP BY region
→ Level 1: GROUP BY region, city (only for mismatched regions)
→ Level 2: GROUP BY region, city, store (only for mismatched cities)

No Additional Items

Each item of this array must be:

Type: array

Measures to compare between source and target.
Each measure defines a column and one or more aggregate functions to apply.

Must contain a minimum of 1 items

No Additional Items

Each item of this array must be:

Measure

Type: object

Measure defines a column and aggregate function(s) to compare
between source and target datasets.
A single measure with multiple functions expands into multiple comparisons
(e.g., column="amount" functions=[SUM, AVG] produces "SUM(amount)" and "AVG(amount)").

Type: string

Column name to aggregate. Must exist in both source and target datasets
(after column mapping is applied).

Must be at least 1 characters long

Type: array

Aggregate functions to apply to this column.
Multiple functions produce multiple measure comparisons from one column.

Must contain a minimum of 1 items

No Additional Items

Each item of this array must be:

Aggregate Function


Type: enum (of string)

Must be one of:

  • "AGGREGATE_FUNCTION_SUM"
  • "AGGREGATE_FUNCTION_COUNT"
  • "AGGREGATE_FUNCTION_AVG"
  • "AGGREGATE_FUNCTION_MIN"
  • "AGGREGATE_FUNCTION_MAX"
Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Additional Properties of any type are allowed.

Type: object

ThresholdConfig defines tolerance thresholds for aggregate comparisons. A difference is reported as a mismatch only when it exceeds ALL configured thresholds (AND logic: both absolute AND percentage must be exceeded).

Type: object

Tolerance thresholds for aggregate comparisons.
When not set, exact match is required for all measures.


Maximum allowed absolute difference per measure.
When set, differences <= this value are considered within tolerance.
Example: absolute = 0.01 accepts sub-cent rounding differences.

Type: array

Per groupcolumn level threshold overrides.
Allows different tolerance for different levels of the drill-down hierarchy.
For example, tighter thresholds at the city level than at the region level.
Entries may themselves contain per
measure overrides for maximum specificity.

No Additional Items

Each item of this array must be:

Column Threshold Override

Type: object

ColumnThresholdOverride associates threshold overrides with a specific
group_column level in the aggregate drill-down hierarchy.

Type: string

Group column name this override applies to.
Must match one of the group_columns in the AggregateConfig.

Must be at least 1 characters long

ThresholdConfig defines tolerance thresholds for aggregate comparisons. A difference is reported as a mismatch only when it exceeds ALL configured thresholds (AND logic: both absolute AND percentage must be exceeded).

Type: object

Threshold overrides for this group column level.
Values here override the parent ThresholdConfig for reconciliation groups
at this drill-down level. May include per_measure for further specificity.

Same definition as thresholds

Type: array

Per measure threshold overrides.
Allows different tolerance for different measures within the same reconciliation.
For example, allow 1% tolerance for SUM(amount) but require exact COUNT match.

No Additional Items

Each item of this array must be:

Measure Threshold Override

Type: object

MeasureThresholdOverride associates threshold overrides with a specific
measure (aggregate function + column combination).

Type: string

Column name this override applies to.
Together with function, forms the measure key (e.g., SUM + "amount" = "SUM(amount)").

Must be at least 1 characters long

Aggregate Function

Default: 0

Aggregate function this override applies to.

Type: enum (of string)

Must be one of:

  • "AGGREGATE_FUNCTION_SUM"
  • "AGGREGATE_FUNCTION_COUNT"
  • "AGGREGATE_FUNCTION_AVG"
  • "AGGREGATE_FUNCTION_MIN"
  • "AGGREGATE_FUNCTION_MAX"
Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

ThresholdConfig defines tolerance thresholds for aggregate comparisons. A difference is reported as a mismatch only when it exceeds ALL configured thresholds (AND logic: both absolute AND percentage must be exceeded).

Type: object

Threshold overrides for this specific measure.
Values here override the parent ThresholdConfig (and any per_column override)
for this measure only.

Same definition as thresholds


Maximum allowed percentage difference per measure.
Expressed as a decimal fraction: 0.1 = 10%, 0.01 = 1%.
The formula used depends on percentage_mode.
When set, differences <= this percentage are considered within tolerance.

Percentage Mode

Default: 0

Which percentage formula to use for threshold evaluation.
Only relevant when percentage is set.

Type: string
Must match regular expression: ^PERCENTAGE_MODE_UNSPECIFIED$
Type: enum (of string)

Must be one of:

  • "PERCENTAGE_MODE_SOURCE"
  • "PERCENTAGE_MODE_TARGET"
  • "PERCENTAGE_MODE_SYMMETRIC"
Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Additional Properties of any type are allowed.

Type: object

Additional Properties of any type are allowed.

Type: object

Type: array

Case-level annotations. Merged with suite-level annotations and
deployment-level annotations at promote time, then exposed on the
case asset (PromotedReconCaseMetadata).

No Additional Items

Each item of this array must be:

Annotation

Type: object

Annotations can be used to annotate any entity with a key:value pair.
These annotations can be used for filtering and searching entities.

Type: string

String key for the annotation.

Must be at least 1 characters long

Must be at most 50 characters long

Type: array of string

Optional list of values that the annotation can carry.

Must contain a minimum of 0 items

Must contain a maximum of 20 items

No Additional Items

Each item of this array must be:

Type: string

Must be at least 1 characters long

Must be at most 50 characters long

Additional Properties of any type are allowed.

Type: object

Bisection Config

Type: object

Bisection drill-down configuration for ROW_CHECKSUM mode.
Controls how the key range is recursively split to locate mismatches.
When not set, uses sensible defaults (factor=32, threshold=16384).

Type: boolean Default: false

Whether bisection drill-down is enabled.
When false, only the quick-check (count + checksum) runs — mismatches
are detected but not localized to specific rows.


Branching factor: how many segments each level is split into.
Higher values find mismatches faster (fewer levels) but issue more queries per level.
Default: 32. Typical range: 4–64.

Type: integer

Value must be greater or equal to 2 and lesser or equal to 1024

Type: string
Must match regular expression: ^-?[0-9]+$

Segmentation Strategy

Default: 0

Segmentation strategy for splitting key ranges.

Type: string
Must match regular expression: ^SEGMENTATION_STRATEGY_UNSPECIFIED$
Type: enum (of string)

Must be one of:

  • "SEGMENTATION_STRATEGY_QUANTILE"
  • "SEGMENTATION_STRATEGY_HASH"
  • "SEGMENTATION_STRATEGY_TIME"
Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647


Row count threshold: stop bisecting when a segment has fewer rows than this.
Lower values find more precise mismatch locations but issue more queries.
Default: 16384. Set to 1 to drill down to individual rows.

Type: integer

Value must be greater or equal to 1 and strictly lesser than 2147483648

Type: string
Must match regular expression: ^-?[0-9]+$

Type: string

Column for time-based partitioning. Required when strategy is TIME.
Must be a timestamp, date, or datetime column in the dataset.

Time Granularity

Default: 0

Granularity for time-based segmentation. Default: DAY.
Controls the width of each time bucket when strategy is TIME.

Type: string
Must match regular expression: ^TIME_GRANULARITY_UNSPECIFIED$
Type: enum (of string)

Must be one of:

  • "TIME_GRANULARITY_HOUR"
  • "TIME_GRANULARITY_DAY"
  • "TIME_GRANULARITY_WEEK"
  • "TIME_GRANULARITY_MONTH"
  • "TIME_GRANULARITY_QUARTER"
  • "TIME_GRANULARITY_YEAR"
Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Additional Properties of any type are allowed.

Type: object

Type: boolean

When true, automatically matches columns differing only in letter case
(e.g., userid matches USERID). Defaults to true when not set.
Set to false to require exact case matching.

Type: array

Explicit column name mapping between source and target.
Only columns with different names need mapping — identical names
(or case-insensitive matches) are matched automatically.

No Additional Items

Each item of this array must be:

Column Mapping

Type: object

ColumnMapping maps a source column name to a target column name.
Used when source and target use different naming conventions for the same data
(e.g., snakecase vs SCREAMINGSNAKECASE, or completely different names).
Only columns with different names need explicit mapping — columns with
identical names (or case-insensitive matches when case
insensitive is true)
are matched automatically.

Type: string

Column name in the source dataset.

Must be at least 1 characters long

Type: string

Corresponding column name in the target dataset.

Must be at least 1 characters long

Additional Properties of any type are allowed.

Type: object

CutoffConfig defines a dynamic cutoff filter for sync reconciliation. It derives a watermark value from the actual data (e.g., MAX(created_at)) to automatically exclude rows that haven't been synced yet.

Type: object

Dynamic cutoff filter for sync reconciliation.
Derives a watermark from actual data to exclude rows not yet synced.
Applied as WHERE filter to both source and target queries at runtime.

Cutoff Apply Config

Type: object

How to apply the cutoff as a WHERE filter on the source side.
When not set, uses the source derivation column with <= operator.

Type: string

Column to filter on. When not set, uses the derivation column from that side.

Type: string

Comparison operator. Default: "<=".

Additional Properties of any type are allowed.

Type: object

Cutoff Apply Config

Type: object

How to apply the cutoff as a WHERE filter on the target side.
When not set, uses the target derivation column with <= operator.

Same definition as apply_source

Cutoff Combine

Default: 0

How to combine watermarks when both sides are configured.
Default: MIN (use the smaller watermark for safety).
Ignored when only one side has a watermark.

Type: string
Must match regular expression: ^CUTOFF_COMBINE_UNSPECIFIED$
Type: enum (of string)

Must be one of:

  • "CUTOFF_COMBINE_MIN"
  • "CUTOFF_COMBINE_MAX"
  • "CUTOFF_COMBINE_SOURCE"
  • "CUTOFF_COMBINE_TARGET"
Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Duration

Type: string

Time offset applied after truncation.
Negative durations subtract from the cutoff (safety buffer).
Example: "-30m" shifts the cutoff 30 minutes earlier.

Same definition as duration

CutoffSideConfig configures watermark derivation for one side (source or target).

Type: object

Per-side watermark derivation config for source.
When not set, derives from target only.

Cutoff Aggregate

Default: 0

Aggregate function to derive the watermark. Default: MAX.
Only used when query is not set.

Type: string
Must match regular expression: ^CUTOFF_AGGREGATE_UNSPECIFIED$
Type: enum (of string)

Must be one of:

  • "CUTOFF_AGGREGATE_MAX"
  • "CUTOFF_AGGREGATE_MIN"
Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Type: string Default: ""

Column to derive the watermark from (e.g., "createdat", "syncedat").
Required when query is not set.

Type: string

Custom SQL query for watermark derivation.
Must return a single row with a "watermark" column.
When not set, auto-generated from the dataset at runtime.
After resolution, this field is populated with the actual query that was executed.

Additional Properties of any type are allowed.

Type: object

CutoffSideConfig configures watermark derivation for one side (source or target).

Type: object

Per-side watermark derivation config for target.
When not set, derives from source only.

Same definition as source

Cutoff Truncate

Default: 0

Truncate the combined watermark to a time boundary.
Example: HOUR truncates 08:47:12 to 08:00:00.
Applied after combining, before offset.

Type: string
Must match regular expression: ^CUTOFF_TRUNCATE_UNSPECIFIED$
Type: enum (of string)

Must be one of:

  • "CUTOFF_TRUNCATE_HOUR"
  • "CUTOFF_TRUNCATE_DAY"
  • "CUTOFF_TRUNCATE_WEEK"
  • "CUTOFF_TRUNCATE_MONTH"
  • "CUTOFF_TRUNCATE_QUARTER"
  • "CUTOFF_TRUNCATE_YEAR"
Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Additional Properties of any type are allowed.

Type: object

Type: string

Optional longer description explaining what this reconciliation validates.

Error Handling Config

Type: object

Error handling and retry configuration for database queries.
Controls timeouts and retry behavior for transient failures.


Maximum retry attempts for transient query failures.
The total number of attempts is max_retries + 1 (initial + retries).
Default: 2.

Type: integer

Value must be greater or equal to 0 and lesser or equal to 10

Type: string
Must match regular expression: ^-?[0-9]+$

Duration

Type: string

Per-query timeout. When a query exceeds this duration, it is cancelled.
Default: no per-query limit (only the global run timeout applies).

Same definition as duration


Backoff multiplier applied after each retry.
Delay for attempt N = retryinitialdelay * retrybackofffactor^(N-1).
Must be >= 1.0 to ensure delays don't decrease.
Default: 2.0.

Duration

Type: string

Initial backoff delay before the first retry.
Subsequent retries multiply this by retrybackofffactor.
Default: 1s.

Same definition as duration

Additional Properties of any type are allowed.

Type: object

Hash Algorithm


Hash algorithm for row checksums in ROW_CHECKSUM mode.
When unset, auto-negotiates the best common algorithm between the
source and target database dialects.

Type: enum (of string)

Must be one of:

  • "HASH_ALGORITHM_UNSPECIFIED"
  • "HASH_ALGORITHM_MD5"
  • "HASH_ALGORITHM_FARM_FINGERPRINT"
  • "HASH_ALGORITHM_XXHASH64"
Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Type: boolean

When true, logs setup errors as warnings and continues.
When not set, inherits from suite-level ignoresetuperrors.

Type: string

Deprecated: use keycolumns instead. Single primary key column used for
ordering and segmentation during bisection. Retained for backward
compatibility — existing single-key configs and stored audit logs keep
working. When key
columns is set, this field is ignored. Readers should
resolve the effective key via key_columns first, falling back to this.

Type: array of string

Ordered list of key columns used for ordering and segmentation during
bisection. Supports composite (multi-column) keys; the bisection orders and
range-filters on the column tuple so the engine can prune via a matching
primary key / index. A single-element list is equivalent to setting
keycolumn. Required for ROWCHECKSUM and ROWCOUNT modes (this or the
deprecated key
column). Optional in AGGREGATE mode when group_columns
provides the grouping key.

No Additional Items

Each item of this array must be:

Reconcilation Mode

Default: 0

Comparison mode controlling how source and target are compared.

Type: enum (of string)

Must be one of:

  • "RECONCILATION_MODE_ROW_COUNT"
  • "RECONCILATION_MODE_ROW_CHECKSUM"
  • "RECONCILATION_MODE_AGGREGATE"
Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Type: string

Unique machine identifier within the suite. Alphanumerics, hyphens, and underscores. May be a UUID.

Must match regular expression: ^[a-zA-Z0-9][a-zA-Z0-9_-]*$

Must be at least 1 characters long

Reporting Config

Type: object

Reporting output configuration controlling how much detail is included
in the audit log for mismatched rows.

Reporting Level

Default: 0

Output detail level for mismatched rows.

Type: string
Must match regular expression: ^REPORTING_LEVEL_UNSPECIFIED$
Type: enum (of string)

Must be one of:

  • "REPORTING_LEVEL_COUNT_ONLY"
  • "REPORTING_LEVEL_WITH_KEYS"
  • "REPORTING_LEVEL_DETAILED"
Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647


Maximum number of sample rows to include in output per mismatch segment.
Limits the size of the audit log when there are many mismatches.
When not set, all mismatched rows within the reporting level are included.

Type: integer

Value must be greater or equal to 1 and strictly lesser than 2147483648

Type: string
Must match regular expression: ^-?[0-9]+$

Additional Properties of any type are allowed.

Type: object

Type: array

Setup queries run before this specific reconciliation.
Executes after suite-level setup but before data comparison.

No Additional Items

Each item of this array must be:

Connection Queries

Type: object

ConnectionQueries associates SQL queries with a specific connection.
Used for setup and teardown blocks at both suite and reconciliation level.

Type: string

Connection name to execute these queries on.
Must reference a connection configured in the runner's connection map.

Must be at least 1 characters long

Type: array of string

SQL queries to execute in order on this connection.

Must contain a minimum of 1 items

No Additional Items

Each item of this array must be:

Additional Properties of any type are allowed.

Type: object

Dataset

Type: object

Source dataset to compare from — the "expected" or "authoritative" side.

Type: string

Time-travel timestamp for snapshot queries (e.g., "2026-02-01 00:00:00").
When set, wraps the query with database-specific time-travel syntax:
- Snowflake: AT(TIMESTAMP => '<as_of>')
- BigQuery: FOR SYSTEM_TIME AS OF TIMESTAMP '<as_of>'
- Databricks: TIMESTAMP AS OF '<as_of>'
Has no effect on databases that don't support time-travel.

Type: string

Name of the connection to use. Must reference a connection configured
in the runner's connection map.

Must be at least 1 characters long

Type: string

Raw SQL query returning the dataset.
Should be a SELECT or WITH (CTE) statement.
Supports template variable interpolation via {{variable_name}} syntax.

TableReference specifies a table and optional column filtering. Use this instead of a raw query when you want to compare all (or most) columns of a table without writing SQL.

Type: object

Table reference with optional column selection.
Automatically generates a SELECT query from the table metadata.

Type: array of string

Explicit list of columns to include in the comparison.
When set, only these columns are selected from the table.
Mutually exclusive with exclude_columns.

No Additional Items

Each item of this array must be:

Type: string

Database/catalog name (e.g., "PRODRAW", "myproject").
Maps to: Snowflake database, BigQuery project, Databricks catalog.

Type: array of string

Columns to exclude from the comparison.
All columns except these are selected (resolved at runtime via table metadata).
Useful for skipping volatile columns (e.g., updatedat, etlbatch_id).
Mutually exclusive with columns.

No Additional Items

Each item of this array must be:

Type: string

Table or view name (e.g., "orders", "fact_sales").
Required — this is the actual object name.

Must be at least 1 characters long

Type: string

Schema/dataset name (e.g., "public", "analytics").
Maps to: Snowflake schema, BigQuery dataset, Databricks schema.

Type: string

Row filter — appended as WHERE clause to the generated SELECT.
Example: "created_at >= '2024-01-01' AND status = 'active'"

Additional Properties of any type are allowed.

Type: object

Additional Properties of any type are allowed.

Type: object

Dataset

Type: object

Target dataset to compare against — the "actual" or "replicated" side.

Same definition as source

Type: array

Teardown queries run after this specific reconciliation completes.

No Additional Items

Each item of this array must be:

Connection Queries

Type: object

ConnectionQueries associates SQL queries with a specific connection.
Used for setup and teardown blocks at both suite and reconciliation level.

Same definition as Connection Queries

Type: boolean

Whether teardown runs on failure for this reconciliation.
When not set, inherits from suite-level teardownonfailure.

Type: string

Human-readable title. Displayed in reports. Defaults to name when not set.

Window Config

Type: object

Time window for incremental comparison.
When set, automatically provides a {{window_start}} template variable
for filtering queries to a recent time range.

Type: string

Column being windowed.
Informational metadata for the audit trail — the actual filtering is done
via the {{window_start}} variable in your query WHERE clause.

Duration

Type: string

How far back to look from the current time.
Defines the window as [now - lookback, now].
Examples: "336h" (14 days), "2h", "720h" (30 days).

Same definition as duration

Window Strategy

Default: 0

Windowing strategy controlling how boundaries are computed.

Type: string
Must match regular expression: ^WINDOW_STRATEGY_UNSPECIFIED$
Type: enum (of string)

Must be one of:

  • "WINDOW_STRATEGY_SLIDING"
  • "WINDOW_STRATEGY_FIXED"
Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Additional Properties of any type are allowed.

Type: object

Additional Properties of any type are allowed.

Type: object

Dataset Info

Type: object

Runtime dataset information (resolved queries, detected dialects).

Type: string

Connection name used.

Type: string Default: ""

Database dialect detected at runtime (e.g. "postgres", "snowflake").

Type: string

Resolved SQL query actually executed (after variable interpolation).

Additional Properties of any type are allowed.

Type: object

Type: array

Execution stages (quickcheck, bisectiondrill, aggregate_check).

No Additional Items

Each item of this array must be:

Stage Audit

Type: object

StageAudit captures one reconciliation stage execution.

Aggregate Stage Result

Type: object

Result for aggregate_check stage.

Default: 0

Top-level groups that diverged (counterpart of matchedgroups, same level as
total
groups). This is the same-level numerator for a "divergentgroups of
total
groups diverged" summary — unlike the leaf-level mismatchgroups /
missing
* counts above, which can exceed total_groups in a multi-level drill.

Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Type: string
Must match regular expression: ^-?[0-9]+$

Aggregate Drill Node

Type: object

Hierarchical drill-down tree for aggregate comparison.

Type: array

Divergent children (mismatched or missing groups).

No Additional Items

Each item of this array must be:

Aggregate Drill Child

Type: object

AggregateDrillChild represents a single divergent group within a drill-down level.

Measure Differences

Type: object

All difference variants computed for this group.

Struct

Type: object

Group key values (column name -> value).

Threshold Evaluation

Type: object

Threshold evaluation results for this group.

Type: object

Per-measure threshold evaluation results.

Each additional property must conform to the following schema

Measure Verdict

Type: object

MeasureVerdict captures the threshold evaluation result for a single measure.

Type: boolean Default: false

True when the measure difference exceeds all configured thresholds.

Measure Verdict Reason

Default: 0

Explains why the measure was considered within or outside thresholds.

Type: enum (of string)

Must be one of:

  • "MEASURE_VERDICT_REASON_EXACT_MATCH"
  • "MEASURE_VERDICT_REASON_WITHIN_ABSOLUTE_THRESHOLD"
  • "MEASURE_VERDICT_REASON_WITHIN_PERCENTAGE_THRESHOLD"
  • "MEASURE_VERDICT_REASON_EXCEEDED_ALL_THRESHOLDS"
  • "MEASURE_VERDICT_REASON_NO_THRESHOLDS_CONFIGURED"
Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Aggregate Divergence Type

Default: 0

Type of divergence.

Type: string
Must match regular expression: ^AGGREGATE_DIVERGENCE_TYPE_UNSPECIFIED$
Type: enum (of string)

Must be one of:

  • "AGGREGATE_DIVERGENCE_TYPE_MISMATCH"
  • "AGGREGATE_DIVERGENCE_TYPE_MISSING_SOURCE"
  • "AGGREGATE_DIVERGENCE_TYPE_MISSING_TARGET"
  • "AGGREGATE_DIVERGENCE_TYPE_VALUE_MISMATCH"
Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Type: string Default: ""

Group column used at this level.

Default: 0

Drill-down level (0-based).

Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Type: string
Must match regular expression: ^-?[0-9]+$

Default: 0

Number of matched groups at this level.

Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Type: string
Must match regular expression: ^-?[0-9]+$

Default: 0

Total groups at this level.

Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Type: string
Must match regular expression: ^-?[0-9]+$

Additional Properties of any type are allowed.

Type: object

Type: string Default: ""

Reason if aggregate check terminated early.

Type: boolean Default: false

Overall match result.

Default: 0

Top-level groups that matched — directly, or because their whole subtree
resolved. Same level as total_groups.

Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Type: string
Must match regular expression: ^-?[0-9]+$

Default: 0

Leaf-level groups with value differences (deepest drill level). NOT
comparable to totalgroups: one divergent top-level group can contain many
divergent leaves. For a same-level "X of Y diverged" ratio use
divergent
groups / total_groups; use these leaf counts for detail.

Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Type: string
Must match regular expression: ^-?[0-9]+$

Default: 0

Leaf-level groups present in target but missing in source.

Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Type: string
Must match regular expression: ^-?[0-9]+$

Default: 0

Leaf-level groups present in source but missing in target.

Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Type: string
Must match regular expression: ^-?[0-9]+$

Default: 0

Top-level (first group column) total group count. With a multi-level
drill-down this is the number of distinct first-level groups, NOT the number
of leaf groups. Invariant: totalgroups == matchedgroups + divergent_groups.

Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Type: string
Must match regular expression: ^-?[0-9]+$

Additional Properties of any type are allowed.

Type: object

Bisection Stage Result

Type: object

Result for bisection_drill stage.

Type: string Default: ""

Reason if bisection terminated early.

Default: 0

Number of segments that encountered errors.

Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Type: string
Must match regular expression: ^-?[0-9]+$

Type: array

Merged investigation queries for adjacent mismatch regions.

No Additional Items

Each item of this array must be:

Investigation Query

Type: object

InvestigationQuery represents a merged diff query covering one or more
adjacent mismatch leaves.

Type: string Default: ""

Time bucket label (for time-based segmentation).

Default: 0

Maximum depth reached in the segment tree.

Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Type: string
Must match regular expression: ^-?[0-9]+$

Default: 0

Number of mismatched leaf segments.

Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Type: string
Must match regular expression: ^-?[0-9]+$

Type: array

Details for each mismatched leaf segment.

No Additional Items

Each item of this array must be:

Mismatch Leaf Detail

Type: object

MismatchLeafDetail holds detailed information about a single mismatch leaf.

Diff Queries

Type: object

Investigation queries to inspect this mismatch.

Type: string Default: ""

SQL query to retrieve source rows in the mismatch segment.

Type: string Default: ""

SQL query to retrieve target rows in the mismatch segment.

Type: array

Types of mismatch detected.

No Additional Items

Each item of this array must be:

Mismatch Type


Type: enum (of string)

Must be one of:

  • "MISMATCH_TYPE_UNSPECIFIED"
  • "MISMATCH_TYPE_MISSING_IN_SOURCE"
  • "MISMATCH_TYPE_MISSING_IN_TARGET"
  • "MISMATCH_TYPE_COUNT_MISMATCH"
  • "MISMATCH_TYPE_DATA_MISMATCH"
  • "MISMATCH_TYPE_UNKNOWN"
Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Default: 0

Total number of row mismatches (may exceed rowmismatches length due to samplelimit).

Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Type: array

Per-row mismatch details (when reporting level allows).

No Additional Items

Each item of this array must be:

Row Mismatch Detail

Type: object

RowMismatchDetail holds per-row mismatch detail.

Row Mismatch Type

Default: 0

Type of row mismatch.

Type: enum (of string)

Must be one of:

  • "ROW_MISMATCH_TYPE_MISSING_IN_TARGET"
  • "ROW_MISMATCH_TYPE_MISSING_IN_SOURCE"
  • "ROW_MISMATCH_TYPE_MODIFIED"
Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Segment Info

Type: object

Segment boundaries.

Type: string Default: ""

Time bucket label (for time-based segmentation).

Termination Reason

Default: 0

Why bisection stopped at this leaf.

Type: string
Must match regular expression: ^TERMINATION_REASON_UNSPECIFIED$
Type: enum (of string)

Must be one of:

  • "TERMINATION_REASON_THRESHOLD_REACHED"
  • "TERMINATION_REASON_MAX_DEPTH_REACHED"
  • "TERMINATION_REASON_EMPTY_SEGMENT"
  • "TERMINATION_REASON_CANNOT_SPLIT"
  • "TERMINATION_REASON_MATCHED"
  • "TERMINATION_REASON_ERROR"
Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Bisection Statistics

Type: object

Detailed tree statistics.

Type: object

Number of segments at each depth level.

Each additional property must conform to the following schema


Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Default: 0

Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Type: string
Must match regular expression: ^-?[0-9]+$

Default: 0

Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Type: string
Must match regular expression: ^-?[0-9]+$

Type: object

Number of mismatched segments at each depth level.

Each additional property must conform to the following schema


Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Type: object

Detailed per-depth statistics.

Each additional property must conform to the following schema

Depth Stats

Type: object

DepthStats holds per-depth-level statistics for the bisection tree.

Default: 0

Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Type: string
Must match regular expression: ^-?[0-9]+$

Additional Properties of any type are allowed.

Type: object

Default: 0

Total number of segments processed.

Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Type: string
Must match regular expression: ^-?[0-9]+$

Additional Properties of any type are allowed.

Type: object

Type: array

SQL queries executed during this stage.

No Additional Items

Each item of this array must be:

Query Record

Type: object

QueryRecord captures a single SQL query execution.

Type: string Default: ""

Database dialect.

Type: string Default: ""

Error message if the query failed.

Type: string

Unique query identifier within this run.

Default: 0

Retry attempt number (0 for first attempt).

Type: integer

Value must be greater or equal to 0 and strictly lesser than 2147483648

Type: string
Must match regular expression: ^-?[0-9]+$

Query Role

Default: 0

Whether this query ran against source or target.

Type: enum (of string)

Must be one of:

  • "QUERY_ROLE_SOURCE"
  • "QUERY_ROLE_TARGET"
Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Default: 0

Number of result rows returned.

Type: integer

Value must be greater or equal to 0 and strictly lesser than 2147483648

Type: string
Must match regular expression: ^-?[0-9]+$

Query Stats

Type: object

Execution statistics collected from the database driver.

Type: boolean

Whether the query result was served from cache.

Type: string Default: ""

Database-assigned query identifier for auditing.
Available for BigQuery (job ID), Snowflake, ClickHouse.

Additional Properties of any type are allowed.

Type: object

Additional Properties of any type are allowed.

Type: object

Quick Check Stage Result

Type: object

Result for quick_check stage.

Additional Properties of any type are allowed.

Type: object

Segment Audit Node

Type: object

Bisection segment tree (only for bisection_drill stage).

Type: array

Child segments (empty for leaf nodes).

No Additional Items

Each item of this array must be:

Segment Audit Node

Type: object

SegmentAuditNode represents a node in the bisection segment tree.

Same definition as segment_tree

Type: boolean Default: false

Whether this is a leaf node (no further splitting).

Type: boolean Default: false

Whether source and target matched for this segment.

Type: array of string

References to QueryRecord.id values for queries that populated this node.

No Additional Items

Each item of this array must be:

Type: array

Row-level mismatches (only for leaf nodes with detailed reporting).

No Additional Items

Each item of this array must be:

Row Mismatch Audit

Type: object

RowMismatchAudit captures a single row-level mismatch in the segment tree.

Type: object

Source column values (detailed reporting only).

Each additional property must conform to the following schema

Type: string

Type: object

Target column values (detailed reporting only).

Each additional property must conform to the following schema

Type: string

Row Mismatch Type

Default: 0

Type of row mismatch.

Type: string
Must match regular expression: ^ROW_MISMATCH_TYPE_UNSPECIFIED$
Type: enum (of string)

Must be one of:

  • "ROW_MISMATCH_TYPE_MISSING_IN_TARGET"
  • "ROW_MISMATCH_TYPE_MISSING_IN_SOURCE"
  • "ROW_MISMATCH_TYPE_MODIFIED"
Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Termination Reason

Default: 0

Why bisection stopped at this node.

Type: string
Must match regular expression: ^TERMINATION_REASON_UNSPECIFIED$
Type: enum (of string)

Must be one of:

  • "TERMINATION_REASON_THRESHOLD_REACHED"
  • "TERMINATION_REASON_MAX_DEPTH_REACHED"
  • "TERMINATION_REASON_EMPTY_SEGMENT"
  • "TERMINATION_REASON_CANNOT_SPLIT"
  • "TERMINATION_REASON_MATCHED"
  • "TERMINATION_REASON_ERROR"
Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Additional Properties of any type are allowed.

Type: object

Stage Type

Default: 0

Stage type.

Type: enum (of string)

Must be one of:

  • "STAGE_TYPE_QUICK_CHECK"
  • "STAGE_TYPE_BISECTION_DRILL"
  • "STAGE_TYPE_AGGREGATE_CHECK"
Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Additional Properties of any type are allowed.

Type: object

Reconciliation Status

Default: 0

Outcome status of this reconciliation.
Distinguishes infrastructure errors from data mismatches and threshold-based outcomes.

Type: string
Must match regular expression: ^RECONCILIATION_STATUS_UNSPECIFIED$
Type: enum (of string)

Must be one of:

  • "RECONCILIATION_STATUS_PASSED"
  • "RECONCILIATION_STATUS_MISMATCHED_WITHIN_THRESHOLD"
  • "RECONCILIATION_STATUS_MISMATCHED"
  • "RECONCILIATION_STATUS_FAILED"
Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Dataset Info

Type: object

DatasetInfo captures runtime information about a source or target dataset.

Same definition as source

Type: array of string

Per-reconciliation warnings.

No Additional Items

Each item of this array must be:

Additional Properties of any type are allowed.

Type: object

Type: object

Effective table references after environment overrides were applied.
Keyed by "reconciliationname.source" or "reconciliationname.target".
Only populated when an environment was active and overrides were applied.
The suite field (14) still contains the original pre-override config.

Each additional property must conform to the following schema

Type: string

Type: object

Resolved template variable values used for query interpolation.
Contains the actual values after template evaluation
(e.g. "{{today - 30d}}" resolved to "2026-01-27").

Each additional property must conform to the following schema

Type: string

Timestamp

Type: string

When the run started.

Same definition as completed_at

Audit Status

Default: 0

Overall execution status derived from individual reconciliation outcomes.

Type: string
Must match regular expression: ^AUDIT_STATUS_UNSPECIFIED$
Type: enum (of string)

Must be one of:

  • "AUDIT_STATUS_PASSED"
  • "AUDIT_STATUS_MISMATCHED_WITHIN_THRESHOLD"
  • "AUDIT_STATUS_MISMATCHED"
  • "AUDIT_STATUS_FAILED"
Type: integer

Value must be greater or equal to -2147483648 and lesser or equal to 2147483647

Reconcilation Suite

Type: object

Full suite configuration snapshot as executed.
Contains all reconciliation definitions, variables, thresholds, etc.

Type: array

Suite-level annotations. Each annotation is a name with zero or more
string values. Applied to the deployed suite asset and inherited by every
reconciliation case under the suite. Merged with per-case annotations and
deployment-level annotations at promote time — the final, deduplicated
list is exposed on PromotedReconSuiteMetadata / PromotedReconCaseMetadata
and surfaced to the rest of the SYNQ platform via EntityAnnotations.

No Additional Items

Each item of this array must be:

Annotation

Type: object

Annotations can be used to annotate any entity with a key:value pair.
These annotations can be used for filtering and searching entities.

Same definition as Annotation

Type: string

Optional longer description of the suite's purpose.

Type: boolean Default: false

When true, logs setup query errors as warnings and continues execution
instead of aborting the run. Useful when setup creates IF NOT EXISTS objects.

Type: string

Short machine identifier for the suite.
Unique machine identifier for the suite, used as the stable key for tracking runs over time.
Alphanumerics, hyphens, and underscores. May be a UUID.

Must match regular expression: ^[a-zA-Z0-9][a-zA-Z0-9_-]*$

Must be at least 1 characters long

Must be at most 255 characters long

Type: array

Reconciliation scenarios to execute.
Each reconciliation compares data between a source and target dataset.

Must contain a minimum of 1 items

No Additional Items

Each item of this array must be:

Reconcilation

Type: object

Reconcilation defines a single reconciliation scenario comparing data
between a source and target dataset. Each reconciliation runs independently
and produces its own pass/mismatch/fail result.

Same definition as reconcilation

Type: array

Setup queries run once before all reconciliations begin.
Use for creating temp tables, loading fixtures, or preparing the environment.
Queries execute in order; all connections run sequentially.

No Additional Items

Each item of this array must be:

Connection Queries

Type: object

ConnectionQueries associates SQL queries with a specific connection.
Used for setup and teardown blocks at both suite and reconciliation level.

Same definition as Connection Queries

Type: boolean Default: false

When true, time reference detection (e.g. NOW(), CURRENT_DATE, GETDATE()
in queries) returns an error instead of a warning. Prevents non-deterministic
queries that produce different results on each run.

Type: array

Teardown queries run once after all reconciliations complete.
Use for cleaning up temp tables or restoring state.

No Additional Items

Each item of this array must be:

Connection Queries

Type: object

ConnectionQueries associates SQL queries with a specific connection.
Used for setup and teardown blocks at both suite and reconciliation level.

Same definition as Connection Queries

Type: boolean Default: false

Whether teardown runs even when reconciliations fail with infrastructure errors.
When false (default), teardown is skipped on failure to preserve state for debugging.

Type: string

Human-readable title for the suite.
Displayed in dashboards and reports. Defaults to name when not set.

Type: object

Template variables for query interpolation via {{variablename}} syntax.
Values can be literal strings or template expressions:
- Literal: "2026-01-01"
- Time expression: "{{today - 30d}}", "{{now - 2h}}"
- Built-in: "{{now}}", "{{today}}", "{{window
start}}"
Variables are resolved once at the start of the run and frozen.

Each additional property must conform to the following schema

Type: string

Additional Properties of any type are allowed.

Type: object

Type: string

Suite description (promoted from suite.description).

Type: string

Suite machine identifier (promoted from suite.name).

Type: string

Human-readable title (promoted from suite.title).

Audit Summary

Type: object

Aggregated counts derived from individual reconciliation results.

Type: array of string

Error messages collected from failed reconciliations.

No Additional Items

Each item of this array must be:

Type: string

Default: 0

Number of reconciliations that encountered an infrastructure error.

Type: integer

Value must be greater or equal to 0 and strictly lesser than 2147483648

Type: string
Must match regular expression: ^-?[0-9]+$

Default: 0

Number of reconciliations that completed and matched exactly.

Type: integer

Value must be greater or equal to 0 and strictly lesser than 2147483648

Type: string
Must match regular expression: ^-?[0-9]+$

Default: 0

Number of reconciliations that had differences within configured thresholds.
These are warning-level outcomes — data differs but within acceptable tolerance.

Type: integer

Value must be greater or equal to 0 and strictly lesser than 2147483648

Type: string
Must match regular expression: ^-?[0-9]+$

Default: 0

Number of reconciliations that completed but found data differences
exceeding thresholds (or no thresholds configured).

Type: integer

Value must be greater or equal to 0 and strictly lesser than 2147483648

Type: string
Must match regular expression: ^-?[0-9]+$

Type: boolean Default: false

True when every reconciliation matched (exactly or within threshold).
False when any reconciliation failed or had an exceeding mismatch.

Default: 0

Total number of reconciliations executed.

Type: integer

Value must be greater or equal to 0 and strictly lesser than 2147483648

Type: string
Must match regular expression: ^-?[0-9]+$

Additional Properties of any type are allowed.

Type: object

Query Stats

Type: object

Aggregated query execution statistics across all queries in this run.

Same definition as stats

Type: enum (of string)

Schema version. Must be "1".

Must be one of:

  • "1"

Type: array of string

Suite-level warnings detected during config validation.

No Additional Items

Each item of this array must be:

Type: string

Additional Properties of any type are allowed.

Type: object