The building blocks
Suite
Suite
A YAML file that holds one or more reconciliations and the connections they use. When you upload it, it becomes a stored, versioned object in your workspace. You save, version, run and promote a suite as one unit. A suite has a
name, a title, and an optional description.Reconciliation
Reconciliation
One comparison of one dataset with one other dataset. A suite contains reconciliations, each with a name under
reconciliations:. A reconciliation passes or fails, becomes an asset when you promote the suite, and is what --include and --exclude select.Source, target and side
Source, target and side
The two datasets of a reconciliation are the source (
source:) and the target (target:). Each one is a side. The source is usually the origin of the data, and the target is the copy.Dataset
Dataset
What one side reads: a connection and a
table: or a query:. A table: dataset can be narrowed with columns:, exclude_columns: or where:.Connection
Connection
The name that a dataset uses for the database it reads from. In a local run, a connection holds credentials. In a backend run, the same name binds to an integration. See connection vs integration. This difference causes more confusion than any other term on this page.
Key columns
Key columns
The column, or the tuple of columns, that identifies a row. You write it as
key_column: or key_columns:, and both accept a string or a list. Key columns must be unique, and they should have an index. The drill-down sorts and filters on them, so an index keeps a drill-down cheap.Mode
Mode
How the two sides are compared:
row_count, row_checksum or aggregate. See Comparison modes.Numeric precision
Numeric precision
The number of decimal places, or significant digits, at which
row_checksum mode compares decimal and floating-point columns. The column types set a default, and comparison.numeric_scale changes it. See numeric precision.Running and inspecting
Quick check
Quick check
Stage one of a run: the comparison of the reconciliation’s mode. In
row_count and row_checksum modes, it is one aggregate query per side that returns counts, and checksums in row_checksum mode. It tells you if the two sides agree, but not where they differ. synq-recon run-check runs this stage only.Drill-down
Drill-down
Stage two of a run: it narrows the difference step by step. In
row_count and row_checksum modes, it splits the key range into segments. It goes further only into what did not match. synq-recon run-drill runs this stage, and synq-recon run --auto-drill runs both stages. With bisection.enabled: false, only run-drill and drill-deeper drill into a reconciliation. In aggregate mode, the quick check itself goes down the group_columns hierarchy.Segment and mismatch leaf
Segment and mismatch leaf
A segment is a key range that the drill-down compared as one unit. A mismatch leaf is a segment where the two sides do not agree and the drill-down stopped. It stops at the row threshold, at the depth limit, or when the segment cannot be split. Leaves are the result you act on: each one has the key range, the reason the drill-down stopped, and SQL that returns the rows.
Run
Run
One execution of a suite. A run has a status, a trigger, timings, and a result for each reconciliation. Every run has an invocation id. You use it to get a stored run later.
Local run and backend run
Local run and backend run
A local run is a run that you start with
synq-recon on your own machine. It uses the credentials in your connections file. A backend run is a run that Coalesce Quality executes with the integrations of your workspace: an ad-hoc run of a Development suite, a scheduled run, or a triggered run. A backend run never reads row values, so some settings work only in a local run.Audit log
Audit log
The full record of a run: every query as it was executed, and every count, checksum, timing and mismatch leaf. A local run writes it with
--audit-log <path>. The workspace stores it for backend runs, and for local runs that report their results. Its structure is published as the audit-log schema. It records connection names, never credentials.Trigger
Trigger
Why a run started:
adhoc (started on demand for a Development suite), scheduled (a schedule started it), or api (an explicit trigger: the Run button on a promoted suite, or an external caller such as a CI job).Development, Production and deployments
Development
Development
The stage of a suite that you save to the workspace with
upload-config, or create in the new-suite wizard of the app. It is stored and versioned, and you can run it on demand. It does not run on a schedule. It is the shared draft.Production
Production
The stage of a suite after you
promote it. Its results become platform assets and checks. It can run on a schedule, or when an API call triggers it.Deployment
Deployment
What a promote makes: an immutable snapshot of the suite, with its schedule, connection bindings, run settings and annotations. A deployment is a snapshot, not a pointer. If you edit the suite in Development, Production does not change until you promote it again.
Version
Version
Each
upload-config makes a new version of the stored suite, with an optional --change-summary. synq-recon suite versions <id> lists the versions, and the app has a version picker. A promote copies one version into the deployment.Connection vs integration
The same YAML key has two meanings. The meaning depends on where the suite runs. Read this section carefully one time.- A connection is the name that a reconciliation uses. It is always only a name.
- An integration is a database credential that your workspace manages, with a UUID. Backend runs use integrations. They never see the credentials in your YAML.
warehouse binds to the integration whose id is warehouse. To bind to a different integration, map it:
Replaying a finished run
Re-check
Re-check
Runs the queries of a finished run again and reports what changed. It answers the question “did the difference go away?”, for example after a backfill, a pipeline fix or a redeploy. In the CLI,
synq-recon recheck <run>. In the app, Re-check on the run detail page.Drill deeper
Drill deeper
Continues the drill-down of a finished run from where it stopped, at a lower threshold or with one more group column. In the CLI,
synq-recon drill-deeper <run>. In the app, Drill deeper.