Audit log emitted by synq-recon for each reconciliation run: per-check results, mismatch drill-downs, and the queries executed.
When the run completed.
Path to the configuration file used.
Total run duration.
Name of the environment used for this run.
Empty for direct/unmanaged runs where no environment was applied.
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
Build and environment metadata for the synq-recon binary.
Go toolchain version used to build the binary.
VCS revision hash.
True if the working tree had uncommitted changes.
VCS commit timestamp (RFC3339).
Module version or tag (e.g. v1.2.3).
Additional Properties of any type are allowed.
Type: objectInvocation ID of the parent run this continues from.
Set when this run resumes or drills deeper into a previous run's results.
^[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}$
Audit records for each reconciliation executed.
No Additional ItemsReconciliationAudit captures the configuration and runtime execution data
for a single reconciliation.
Column names discovered at runtime via QueryShape.
No Additional ItemsCutoff 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.
Final cutoff value after combining source/target watermarks
and applying truncation and offset transforms.
Watermark value derived from the source dataset.
Empty when cutoff was configured for target-only derivation.
WHERE clause applied to the source query.
Watermark value derived from the target dataset.
Empty when cutoff was configured for source-only derivation.
WHERE clause applied to the target query.
Additional Properties of any type are allowed.
Type: objectError message if the reconciliation failed due to an infrastructure error.
Column normalization expressions applied after cross-DB type alignment.
Source column expressions after normalization.
No Additional ItemsTarget column expressions after normalization.
No Additional ItemsAdditional Properties of any type are allowed.
Type: objectSource query before variable interpolation (differs from suite query when variables are used).
Target query before variable interpolation.
Whether source and target matched overall.
True when data matched exactly or differences were within configured thresholds.
The reconciliation configuration as executed.
Aggregate comparison settings. Required when mode is AGGREGATE.
Defines which measures to compare and tolerance thresholds.
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)
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
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)").
Column name to aggregate. Must exist in both source and target datasets
(after column mapping is applied).
Must be at least 1 characters long
Aggregate functions to apply to this column.
Multiple functions produce multiple measure comparisons from one column.
Must contain a minimum of 1 items
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
Additional Properties of any type are allowed.
Type: objectTolerance 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.
Value must be greater or equal to 0
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 permeasure overrides for maximum specificity.
ColumnThresholdOverride associates threshold overrides with a specific
group_column level in the aggregate drill-down hierarchy.
Group column name this override applies to.
Must match one of the group_columns in the AggregateConfig.
Must be at least 1 characters long
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.
Additional Properties of any type are allowed.
Type: objectPer 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.
MeasureThresholdOverride associates threshold overrides with a specific
measure (aggregate function + column combination).
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 this override applies to.
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
Threshold overrides for this specific measure.
Values here override the parent ThresholdConfig (and any per_column override)
for this measure only.
Additional Properties of any type are allowed.
Type: objectMaximum 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.
Value must be greater or equal to 0
Which percentage formula to use for threshold evaluation.
Only relevant when percentage is set.
^PERCENTAGE_MODE_UNSPECIFIED$
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
Additional Properties of any type are allowed.
Type: objectAdditional Properties of any type are allowed.
Type: objectCase-level annotations. Merged with suite-level annotations and
deployment-level annotations at promote time, then exposed on the
case asset (PromotedReconCaseMetadata).
Annotations can be used to annotate any entity with a key:value pair.
These annotations can be used for filtering and searching entities.
String key for the annotation.
Must be at least 1 characters long
Must be at most 50 characters long
Optional list of values that the annotation can carry.
Must contain a minimum of 0 items
Must contain a maximum of 20 items
Must be at least 1 characters long
Must be at most 50 characters long
Additional Properties of any type are allowed.
Type: objectBisection 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).
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.
Value must be greater or equal to 2 and lesser or equal to 1024
^-?[0-9]+$
Segmentation strategy for splitting key ranges.
^SEGMENTATION_STRATEGY_UNSPECIFIED$
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.
Value must be greater or equal to 1 and strictly lesser than 2147483648
^-?[0-9]+$
Column for time-based partitioning. Required when strategy is TIME.
Must be a timestamp, date, or datetime column in the dataset.
Granularity for time-based segmentation. Default: DAY.
Controls the width of each time bucket when strategy is TIME.
^TIME_GRANULARITY_UNSPECIFIED$
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
Additional Properties of any type are allowed.
Type: objectWhen 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.
Explicit column name mapping between source and target.
Only columns with different names need mapping — identical names
(or case-insensitive matches) are matched automatically.
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 caseinsensitive is true)
are matched automatically.
Column name in the source dataset.
Must be at least 1 characters long
Corresponding column name in the target dataset.
Must be at least 1 characters long
Additional Properties of any type are allowed.
Type: objectDynamic 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.
How to apply the cutoff as a WHERE filter on the source side.
When not set, uses the source derivation column with <= operator.
Column to filter on. When not set, uses the derivation column from that side.
Comparison operator. Default: "<=".
Additional Properties of any type are allowed.
Type: objectHow to apply the cutoff as a WHERE filter on the target side.
When not set, uses the target derivation column with <= operator.
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.
^CUTOFF_COMBINE_UNSPECIFIED$
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
Time offset applied after truncation.
Negative durations subtract from the cutoff (safety buffer).
Example: "-30m" shifts the cutoff 30 minutes earlier.
Per-side watermark derivation config for source.
When not set, derives from target only.
Aggregate function to derive the watermark. Default: MAX.
Only used when query is not set.
^CUTOFF_AGGREGATE_UNSPECIFIED$
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
Column to derive the watermark from (e.g., "createdat", "syncedat").
Required when query is not set.
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: objectPer-side watermark derivation config for target.
When not set, derives from source only.
Truncate the combined watermark to a time boundary.
Example: HOUR truncates 08:47:12 to 08:00:00.
Applied after combining, before offset.
^CUTOFF_TRUNCATE_UNSPECIFIED$
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
Additional Properties of any type are allowed.
Type: objectOptional longer description explaining what this reconciliation validates.
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.
Value must be greater or equal to 0 and lesser or equal to 10
^-?[0-9]+$
Per-query timeout. When a query exceeds this duration, it is cancelled.
Default: no per-query limit (only the global run timeout applies).
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.
Value must be greater or equal to 1
Initial backoff delay before the first retry.
Subsequent retries multiply this by retrybackofffactor.
Default: 1s.
Additional Properties of any type are allowed.
Type: objectHash algorithm for row checksums in ROW_CHECKSUM mode.
When unset, auto-negotiates the best common algorithm between the
source and target database dialects.
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
When true, logs setup errors as warnings and continues.
When not set, inherits from suite-level ignoresetuperrors.
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 keycolumns is set, this field is ignored. Readers should
resolve the effective key via key_columns first, falling back to this.
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 keycolumn). Optional in AGGREGATE mode when group_columns
provides the grouping key.
Comparison mode controlling how source and target are compared.
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
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 output configuration controlling how much detail is included
in the audit log for mismatched rows.
Explicit acknowledgment that detailed row data may be included in the audit log.
Required when level is DETAILED to prevent accidental exposure of sensitive data.
The caller must set this to true to confirm they understand the privacy implications.
Output detail level for mismatched rows.
^REPORTING_LEVEL_UNSPECIFIED$
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.
Value must be greater or equal to 1 and strictly lesser than 2147483648
^-?[0-9]+$
Additional Properties of any type are allowed.
Type: objectSetup queries run before this specific reconciliation.
Executes after suite-level setup but before data comparison.
ConnectionQueries associates SQL queries with a specific connection.
Used for setup and teardown blocks at both suite and reconciliation level.
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
SQL queries to execute in order on this connection.
Must contain a minimum of 1 items
Additional Properties of any type are allowed.
Type: objectSource dataset to compare from — the "expected" or "authoritative" side.
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.
Name of the connection to use. Must reference a connection configured
in the runner's connection map.
Must be at least 1 characters long
Raw SQL query returning the dataset.
Should be a SELECT or WITH (CTE) statement.
Supports template variable interpolation via {{variable_name}} syntax.
Table reference with optional column selection.
Automatically generates a SELECT query from the table metadata.
Explicit list of columns to include in the comparison.
When set, only these columns are selected from the table.
Mutually exclusive with exclude_columns.
Database/catalog name (e.g., "PRODRAW", "myproject").
Maps to: Snowflake database, BigQuery project, Databricks catalog.
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.
Table or view name (e.g., "orders", "fact_sales").
Required — this is the actual object name.
Must be at least 1 characters long
Schema/dataset name (e.g., "public", "analytics").
Maps to: Snowflake schema, BigQuery dataset, Databricks schema.
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: objectAdditional Properties of any type are allowed.
Type: objectTarget dataset to compare against — the "actual" or "replicated" side.
Same definition as sourceTeardown queries run after this specific reconciliation completes.
No Additional ItemsConnectionQueries associates SQL queries with a specific connection.
Used for setup and teardown blocks at both suite and reconciliation level.
Whether teardown runs on failure for this reconciliation.
When not set, inherits from suite-level teardownonfailure.
Human-readable title. Displayed in reports. Defaults to name when not set.
Time window for incremental comparison.
When set, automatically provides a {{window_start}} template variable
for filtering queries to a recent time range.
Column being windowed.
Informational metadata for the audit trail — the actual filtering is done
via the {{window_start}} variable in your query WHERE clause.
How far back to look from the current time.
Defines the window as [now - lookback, now].
Examples: "336h" (14 days), "2h", "720h" (30 days).
Windowing strategy controlling how boundaries are computed.
^WINDOW_STRATEGY_UNSPECIFIED$
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
Additional Properties of any type are allowed.
Type: objectAdditional Properties of any type are allowed.
Type: objectRuntime dataset information (resolved queries, detected dialects).
Connection name used.
Database dialect detected at runtime (e.g. "postgres", "snowflake").
Resolved SQL query actually executed (after variable interpolation).
Additional Properties of any type are allowed.
Type: objectExecution stages (quickcheck, bisectiondrill, aggregate_check).
No Additional ItemsStageAudit captures one reconciliation stage execution.
Result for aggregate_check stage.
Top-level groups that diverged (counterpart of matchedgroups, same level as
totalgroups). This is the same-level numerator for a "divergentgroups of
totalgroups diverged" summary — unlike the leaf-level mismatchgroups /
missing* counts above, which can exceed total_groups in a multi-level drill.
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
^-?[0-9]+$
Hierarchical drill-down tree for aggregate comparison.
Divergent children (mismatched or missing groups).
No Additional ItemsAggregateDrillChild represents a single divergent group within a drill-down level.
All difference variants computed for this group.
Absolute difference per measure: |target - source|.
Each additional property must conform to the following schema
Symmetric percentage difference: 2*|diff| / (|source| + |target|).
Each additional property must conform to the following schema
Percentage difference relative to source: |diff| / |source|.
Each additional property must conform to the following schema
Percentage difference relative to target: |diff| / |target|.
Each additional property must conform to the following schema
Relative difference per measure (target - source). Positive means target is larger.
Each additional property must conform to the following schema
Additional Properties of any type are allowed.
Type: objectFurther drill-down into this divergent group.
Same definition as drill_downGroup key values (column name -> value).
Investigation query for source data.
Source measure values (measure key -> value).
Each additional property must conform to the following schema
Investigation query for target data.
Target measure values (measure key -> value).
Each additional property must conform to the following schema
Threshold evaluation results for this group.
Configured maximum absolute difference, or 0 if not set.
Per-measure threshold evaluation results.
Each additional property must conform to the following schema
MeasureVerdict captures the threshold evaluation result for a single measure.
Absolute threshold applied to this measure (may differ via per_measure config).
Percentage threshold applied to this measure.
Percentage mode applied to this measure.
True when the measure difference exceeds all configured thresholds.
Explains why the measure was considered within or outside thresholds.
^MEASURE_VERDICT_REASON_UNSPECIFIED$
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
Additional Properties of any type are allowed.
Type: objectWhich percentage formula was used.
Configured maximum percentage difference, or 0 if not set.
Additional Properties of any type are allowed.
Type: objectType of divergence.
^AGGREGATE_DIVERGENCE_TYPE_UNSPECIFIED$
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
Additional Properties of any type are allowed.
Type: objectGroup column used at this level.
Drill-down level (0-based).
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
^-?[0-9]+$
Number of matched groups at this level.
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
^-?[0-9]+$
Total groups at this level.
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
^-?[0-9]+$
Additional Properties of any type are allowed.
Type: objectReason if aggregate check terminated early.
Overall match result.
Top-level groups that matched — directly, or because their whole subtree
resolved. Same level as total_groups.
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
^-?[0-9]+$
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
divergentgroups / total_groups; use these leaf counts for detail.
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
^-?[0-9]+$
Leaf-level groups present in target but missing in source.
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
^-?[0-9]+$
Leaf-level groups present in source but missing in target.
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
^-?[0-9]+$
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.
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
^-?[0-9]+$
Additional Properties of any type are allowed.
Type: objectResult for bisection_drill stage.
Reason if bisection terminated early.
Number of segments that encountered errors.
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
^-?[0-9]+$
Merged investigation queries for adjacent mismatch regions.
No Additional ItemsInvestigationQuery represents a merged diff query covering one or more
adjacent mismatch leaves.
Number of mismatch leaves covered by this query.
Value must be greater or equal to 1 and strictly lesser than 2147483648
^-?[0-9]+$
Maximum key (exclusive).
SQL query to retrieve source rows.
SQL query to retrieve target rows.
Time bucket label (for time-based segmentation).
Additional Properties of any type are allowed.
Type: objectMaximum depth reached in the segment tree.
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
^-?[0-9]+$
Number of mismatched leaf segments.
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
^-?[0-9]+$
Details for each mismatched leaf segment.
No Additional ItemsMismatchLeafDetail holds detailed information about a single mismatch leaf.
^-?[0-9]+$
Investigation queries to inspect this mismatch.
SQL query to retrieve source rows in the mismatch segment.
SQL query to retrieve target rows in the mismatch segment.
Additional Properties of any type are allowed.
Type: objectTypes of mismatch detected.
No Additional ItemsValue must be greater or equal to -2147483648 and lesser or equal to 2147483647
Total number of row mismatches (may exceed rowmismatches length due to samplelimit).
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
^-?[0-9]+$
Per-row mismatch details (when reporting level allows).
No Additional ItemsRowMismatchDetail holds per-row mismatch detail.
Source row hash (when available).
^-?[0-9]+$
Target row hash (when available).
^-?[0-9]+$
Type of row mismatch.
^ROW_MISMATCH_TYPE_UNSPECIFIED$
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
Additional Properties of any type are allowed.
Type: objectSegment boundaries.
Depth in the bisection tree.
Value must be greater or equal to 0 and strictly lesser than 2147483648
^-?[0-9]+$
Index within the depth level.
Value must be greater or equal to 0 and strictly lesser than 2147483648
^-?[0-9]+$
Time bucket label (for time-based segmentation).
Additional Properties of any type are allowed.
Type: object^-?[0-9]+$
^-?[0-9]+$
^-?[0-9]+$
^-?[0-9]+$
Why bisection stopped at this leaf.
^TERMINATION_REASON_UNSPECIFIED$
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
Additional Properties of any type are allowed.
Type: objectDetailed tree statistics.
Number of segments at each depth level.
Each additional property must conform to the following schema
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
^-?[0-9]+$
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
^-?[0-9]+$
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
^-?[0-9]+$
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
^-?[0-9]+$
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
^-?[0-9]+$
Number of mismatched segments at each depth level.
Each additional property must conform to the following schema
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
^-?[0-9]+$
^-?[0-9]+$
^-?[0-9]+$
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
^-?[0-9]+$
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
^-?[0-9]+$
Detailed per-depth statistics.
Each additional property must conform to the following schema
DepthStats holds per-depth-level statistics for the bisection tree.
^-?[0-9]+$
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
^-?[0-9]+$
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
^-?[0-9]+$
^-?[0-9]+$
Additional Properties of any type are allowed.
Type: objectValue must be greater or equal to -2147483648 and lesser or equal to 2147483647
^-?[0-9]+$
^-?[0-9]+$
^-?[0-9]+$
Additional Properties of any type are allowed.
Type: objectTotal number of segments processed.
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
^-?[0-9]+$
Additional Properties of any type are allowed.
Type: objectSQL queries executed during this stage.
No Additional ItemsQueryRecord captures a single SQL query execution.
Connection name used.
Database dialect.
Error message if the query failed.
Unique query identifier within this run.
Retry attempt number (0 for first attempt).
Value must be greater or equal to 0 and strictly lesser than 2147483648
^-?[0-9]+$
Whether this query ran against source or target.
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
Number of result rows returned.
Value must be greater or equal to 0 and strictly lesser than 2147483648
^-?[0-9]+$
SQL query text.
Execution statistics collected from the database driver.
Number of data blocks read (ClickHouse).
^-?[0-9]+$
Number of bytes billed (BigQuery).
^-?[0-9]+$
Number of bytes read/scanned by the query engine.
^-?[0-9]+$
Whether the query result was served from cache.
Number of completed splits (Trino).
^-?[0-9]+$
CPU time consumed (Trino).
^-?[0-9]+$
Database-assigned query identifier for auditing.
Available for BigQuery (job ID), Snowflake, ClickHouse.
Number of result rows returned to the caller.
^-?[0-9]+$
Number of rows read/scanned by the query engine.
^-?[0-9]+$
Slot time consumed (BigQuery).
^-?[0-9]+$
Wall time reported by the engine (Trino).
^-?[0-9]+$
Additional Properties of any type are allowed.
Type: objectAdditional Properties of any type are allowed.
Type: objectResult for quick_check stage.
^-?[0-9]+$
^-?[0-9]+$
^-?[0-9]+$
^-?[0-9]+$
^-?[0-9]+$
Additional Properties of any type are allowed.
Type: objectBisection segment tree (only for bisection_drill stage).
Child segments (empty for leaf nodes).
No Additional ItemsSegmentAuditNode represents a node in the bisection segment tree.
Same definition as segment_treeWhether this is a leaf node (no further splitting).
Whether source and target matched for this segment.
Sum of mismatched rows in this subtree.
^-?[0-9]+$
References to QueryRecord.id values for queries that populated this node.
No Additional ItemsRow-level mismatches (only for leaf nodes with detailed reporting).
No Additional ItemsRowMismatchAudit captures a single row-level mismatch in the segment tree.
Source row hash (when available).
^-?[0-9]+$
Source column values (detailed reporting only).
Each additional property must conform to the following schema
Type: stringTarget row hash (when available).
^-?[0-9]+$
Target column values (detailed reporting only).
Each additional property must conform to the following schema
Type: stringType of row mismatch.
^ROW_MISMATCH_TYPE_UNSPECIFIED$
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
Additional Properties of any type are allowed.
Type: object^-?[0-9]+$
^-?[0-9]+$
^-?[0-9]+$
^-?[0-9]+$
Why bisection stopped at this node.
^TERMINATION_REASON_UNSPECIFIED$
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
Sum of all rows in this subtree.
^-?[0-9]+$
Additional Properties of any type are allowed.
Type: objectStage type.
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
Additional Properties of any type are allowed.
Type: objectOutcome status of this reconciliation.
Distinguishes infrastructure errors from data mismatches and threshold-based outcomes.
^RECONCILIATION_STATUS_UNSPECIFIED$
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
DatasetInfo captures runtime information about a source or target dataset.
Same definition as sourcePer-reconciliation warnings.
No Additional ItemsAdditional Properties of any type are allowed.
Type: objectEffective 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: stringResolved 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: stringOverall execution status derived from individual reconciliation outcomes.
^AUDIT_STATUS_UNSPECIFIED$
Value must be greater or equal to -2147483648 and lesser or equal to 2147483647
Full suite configuration snapshot as executed.
Contains all reconciliation definitions, variables, thresholds, etc.
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.
Annotations can be used to annotate any entity with a key:value pair.
These annotations can be used for filtering and searching entities.
Optional longer description of the suite's purpose.
When true, logs setup query errors as warnings and continues execution
instead of aborting the run. Useful when setup creates IF NOT EXISTS objects.
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.
^[a-zA-Z0-9][a-zA-Z0-9_-]*$
Must be at least 1 characters long
Must be at most 255 characters long
Reconciliation scenarios to execute.
Each reconciliation compares data between a source and target dataset.
Must contain a minimum of 1 items
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.
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.
ConnectionQueries associates SQL queries with a specific connection.
Used for setup and teardown blocks at both suite and reconciliation level.
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.
Teardown queries run once after all reconciliations complete.
Use for cleaning up temp tables or restoring state.
ConnectionQueries associates SQL queries with a specific connection.
Used for setup and teardown blocks at both suite and reconciliation level.
Whether teardown runs even when reconciliations fail with infrastructure errors.
When false (default), teardown is skipped on failure to preserve state for debugging.
Human-readable title for the suite.
Displayed in dashboards and reports. Defaults to name when not set.
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}}", "{{windowstart}}"
Variables are resolved once at the start of the run and frozen.
Each additional property must conform to the following schema
Type: stringAdditional Properties of any type are allowed.
Type: objectSuite description (promoted from suite.description).
Suite machine identifier (promoted from suite.name).
Human-readable title (promoted from suite.title).
Aggregated counts derived from individual reconciliation results.
Error messages collected from failed reconciliations.
No Additional ItemsNumber of reconciliations that encountered an infrastructure error.
Value must be greater or equal to 0 and strictly lesser than 2147483648
^-?[0-9]+$
Number of reconciliations that completed and matched exactly.
Value must be greater or equal to 0 and strictly lesser than 2147483648
^-?[0-9]+$
Number of reconciliations that had differences within configured thresholds.
These are warning-level outcomes — data differs but within acceptable tolerance.
Value must be greater or equal to 0 and strictly lesser than 2147483648
^-?[0-9]+$
Number of reconciliations that completed but found data differences
exceeding thresholds (or no thresholds configured).
Value must be greater or equal to 0 and strictly lesser than 2147483648
^-?[0-9]+$
True when every reconciliation matched (exactly or within threshold).
False when any reconciliation failed or had an exceeding mismatch.
Total number of reconciliations executed.
Value must be greater or equal to 0 and strictly lesser than 2147483648
^-?[0-9]+$
Additional Properties of any type are allowed.
Type: objectAggregated query execution statistics across all queries in this run.
Same definition as statsSchema version. Must be "1".
Suite-level warnings detected during config validation.
No Additional ItemsAdditional Properties of any type are allowed.
Type: object