# Checks FAQ

Source: https://userguide.qualytics.io/data-quality-checks/checks/faq/

Answers to questions that apply to checks of every rule type. Rule-specific questions live on each rule type's own FAQ page (see [Getting Started with Checks](https://userguide.qualytics.io/data-quality-checks/checks/getting-started/)).

## Auditing check executions

#### How do I get a list of every check execution, passes included?

Use the enrichment datastore. Every scan writes one row per check, per partition, per scan to the `_check_metrics` output, with the result (`passed`, `failed`, or `unasserted`), the asserted and anomalous record counts, and any assertion details. That output has no timestamp of its own, so join it to `_scan_operations` on `OPERATION_ID`, `CONTAINER_ID`, and `SOURCE_PARTITION = PARTITION_NAME` to get the scan's `START_TIME` and `END_TIME`. The full query is in [Joining scan outputs](https://userguide.qualytics.io/source-datastore/enrichment-datastore/deep-dive/tables/#joining-scan-outputs).

If you do not have an enrichment datastore, [`GET /api/quality-checks/{id}/insights`](https://userguide.qualytics.io/data-quality-checks/checks/api/#insights) gives a daily summary of a single check for up to a year at a time: the latest result of each day, the scan that produced it, and the day's totals. It is not a list of executions. When a check runs more than once in a day, only the last run's result is reported, so use the enrichment join when the audit needs every run.

Anomalies link back to the scan that produced them through the `operation` object on `GET /api/anomalies/{id}`, and `GET /api/anomalies` filters by `operation`, `container_scan`, and `partition_scan`. See the [Anomalies API](https://userguide.qualytics.io/anomalies/api/#list-anomalies).

#### How do I see what a check looked like when a scan ran?

Take the scan's `start_time` (from `GET /api/operations/{id}`, `GET /api/container-scans/{id}`, or `START_TIME` in `_scan_operations`) and pass it as `version_at` to [`GET /api/quality-checks/{id}/version`](https://userguide.qualytics.io/data-quality-checks/checks/api/#version-at-a-point-in-time). The response is the complete check definition as it was at that instant. The `created` timestamp of an anomaly works the same way: it is what the app uses to show the check as it was when the anomaly was detected. For the list of every change in between, use [`GET /api/quality-checks/{id}/history`](https://userguide.qualytics.io/data-quality-checks/checks/api/#history).

The Export operation writes only the current state of each check, so use these two endpoints when an audit needs point-in-time definitions.

#### How do I tell which checks a scan could not evaluate?

`GET /api/operations/{id}/scan-checks` and `GET /api/container-scans/{id}/checks` return a `scan_result` for every check in the scan: `passed`, `failed`, or `unasserted`. `unasserted` means the scan could not evaluate the check (for example, a filter with invalid syntax or a field that no longer exists). Such a check produces no anomalies, so read `scan_result` rather than treating a `scan_anomaly_count` of `0` as passed. To list only those checks for one container scan, pass `result=unasserted` to the container-scan endpoint. See [List Check Results for a Scan](https://userguide.qualytics.io/operations/scan/api/#list-check-results-for-a-scan).

For every partition's result across many scans, use the `ASSERTION_RESULT` column of the `_check_metrics` output (see [How do I get a list of every check execution, passes included?](https://userguide.qualytics.io/data-quality-checks/checks/faq/#how-do-i-get-a-list-of-every-check-execution-passes-included)).

#### Are the timestamps on a check UTC?

Yes. Every timestamp the API returns is UTC, formatted as ISO 8601 with a trailing `Z`. `last_asserted` is the UTC start time of the partition scan that last evaluated the check. See [Timestamps](https://userguide.qualytics.io/settings/access-tokens/personal-token/api/#timestamps).

## Ownership Defaults

#### Who owns a check by default?

- **AI Managed (inferred) checks** are owned by the `Qualytics` user.
- **Authored checks** default to the user who creates them. If you create a check through the API and omit `owner_id`, the caller is recorded as the owner.

#### Can a check have no owner?

No. Every check has exactly one owner at any time. The Owner dropdown does not allow clearing the field, and the API keeps the current owner if `owner_id` is omitted or set to `null` on update.

#### Can a check have more than one owner?

No. Ownership is a single user. If you want shared responsibility, set a single owner and use the **Default Anomaly Assignee** field (also a single user) on the same check to seed the assignee list on anomalies; multiple users can then be added as anomaly assignees.

## Ownership Transfers

#### How do I transfer ownership of an AI Managed check?

Open the check and pick a regular user from the **Owner** dropdown. The Edit Check form shows an inline warning when transferring away from `Qualytics`. Saving converts the check to Authored (`inferred: false`) only if you also edit an assertion property (`properties`, `coverage`, `filter`, or `fields`). Transferring ownership alone leaves `inferred` as `true`.

#### Can I transfer ownership back to Qualytics?

No. Once an AI Managed check's owner has been transferred to a regular user, it cannot be set back to `Qualytics`. The dropdown disables the `Qualytics` option in this case.

#### Why did the owner change automatically when I edited a check?

Three automatic transfers can fire on save:

- **Implicit transfer.** If the check was still owned by `Qualytics` and you edited any assertion property (`properties`, `coverage`, `filter`, or `fields`), ownership moves to you. This is the same edit that converts the check to Authored.
- **Drafter activation transfer.** If the check moved from **Draft** to **Active** and the current owner does not have the **Author** team permission, ownership moves to the user who activated it. This prevents an Active check from being owned by a user who cannot edit it.
- **Deactivated owner handoff.** If you used the Bulk Edit Checks modal without setting an owner and a selected check was owned by a deactivated user, that check is now yours, since a deactivated user cannot be picked as an owner. Editing a single check leaves its deactivated owner in place.

#### I want to take a check from a teammate without editing anything. Is that possible?

Yes. Open the **Edit Check** form, change the **Owner** to yourself, and save. This counts as an explicit transfer and is recorded in the check's **Timeline**. You still need the **Author** team permission on the datastore, or **Drafter** when the check is a Draft.

## Ownership Permissions

#### Who can be selected as an owner?

Any user with at least the **Drafter** team permission on the check's datastore. Users without that permission do not appear in the dropdown.

#### Who can change the owner?

Any user who can edit the check: the **Author** team permission on the check's datastore, or **Drafter** when the check is a Draft. The new owner must independently have the **Drafter** team permission on the same datastore.

#### Can a user with only Viewer permission see who owns a check?

Yes. The Owner field is visible to anyone who can see the check (Viewer or above). Changing the owner requires the **Author** team permission, or **Drafter** when the check is a Draft.

## Ownership Notifications

#### Will I be notified if someone edits a check I own?

Yes. You receive an **Ownership** in-app notification of the form *"{updater} updated a check you own"* whenever someone other than you saves a change. The notification links directly to the affected check.

#### Do I get a notification when I edit my own check?

No. Self-edits do not generate a notification.

#### Why isn't the Qualytics user receiving notifications?

The `Qualytics` user does not have a notification inbox. Updates on AI Managed checks owned by `Qualytics` are silent until ownership is transferred to a regular user.

#### I just got an Ownership notification but the check is still owned by the same person. Why?

The notification fires on save when the updater is not the owner. If someone other than the owner edits a non-ownership field (description, tags, status, and so on), the owner gets notified even though the owner did not change.

## Filtering by Owner

#### What is the difference between the Owned subtab and the Owner filter?

The **Owned** subtab is a one-click shortcut to "checks I own": it sets the owner filter to your user automatically. The **Owner** filter in the filter panel lets you pick any user, including the `Qualytics` user, to scope the list to checks they own.

#### Can I filter to checks owned by Qualytics?

Yes. Open the **Owner** filter, find `Qualytics` at the top of the list (or use the search field), and select it. The list narrows to checks still owned by Qualytics (typically AI Managed checks that no one has taken over).

#### Can I combine the Owned subtab with other filters?

Yes. The **Owned** subtab is independent from the status (Active / Draft / Archived) parent tabs and from the filter panel. For example, **Active > Owned** plus a tag filter of `pii` narrows the list to your active checks tagged `pii`.

## Ownership in the Timeline

#### Are ownership changes tracked?

Yes. Every change to the owner is recorded in the check's **Timeline** section, with the user who made the change, the timestamp, and the previous owner. Implicit transfers (from `Qualytics` to a regular user) and Drafter activation transfers appear in the same timeline.

#### Is the original owner kept after a transfer?

The original owner is preserved in the check's **Timeline** but no longer on the check itself: the Owner field shows only the current owner. To find the previous owner, open the Timeline and look for the ownership change entry.

## Ownership in the API

#### How do I set an explicit owner on `POST /quality-checks`?

Include the `owner_id` field in the create payload, set to the target user's integer ID. See [API · Create a check with an explicit owner](https://userguide.qualytics.io/data-quality-checks/checks/api/#create-a-check-with-an-explicit-owner).

#### How do I transfer ownership via the API?

Send `PUT /quality-checks/{id}` with the check's `description` plus `owner_id` set to the new user's ID. For many checks at once, use `PATCH /quality-checks` with a list of `{ id, owner_id }` pairs. See [API · Transfer ownership across many checks](https://userguide.qualytics.io/data-quality-checks/checks/api/#transfer-ownership-across-many-checks).

#### Is there an API equivalent of the Owned subtab?

Yes. `GET /api/quality-checks?owner_id=<your user ID>` returns the checks you own, the same filter the UI sends. Add `datastore` and `status` to match the tab you are on, and get your user ID from `GET /api/users/me`. See [API · List checks owned by the current user](https://userguide.qualytics.io/data-quality-checks/checks/api/#list-checks-owned-by-the-current-user).

## AI Managed Basics

#### What is an AI Managed check?

A quality check that Qualytics AI creates for you based on the statistics gathered during a Profile operation. Qualytics AI runs machine-learning models against your field-level metadata and generates rules that fit the data, so you do not have to write them by hand.

#### How do I get AI Managed checks?

Run a Profile operation on the datastore. Once the operation completes, the AI Managed checks it produced appear in the Checks list. Click any check to open its overview: while Qualytics manages the rule, the **Owner** card in the Summary section shows `Qualytics` as the owner with an **AI Managed** label beneath it, and the Timeline records the original creation by Qualytics.

#### What does the AI badge mean?

The purple **AI badge** (four-point star icon) marks a check that is currently managed by Qualytics AI. Future Profile runs may refresh or remove it. Hovering the badge shows the tooltip *"Authored by AI and is continuously tuned to your observed data."* As soon as you change a property that affects how the check evaluates the data, the badge and the **AI Managed** label disappear, the check is shown as **Authored**, and it is no longer touched by Profile.

## AI Managed Editing and Conversion

#### What edits turn an AI Managed check into an Authored one?

Changing the **rule properties**, **coverage**, **filter clause**, or **fields** the check applies to. Any of those four edits triggers the conversion as soon as you save.

#### What edits keep the check AI Managed?

Editing the **description**, **tags**, **additional metadata**, **anomaly message field**, **owner**, **anomaly assignee**, or the check **status** (Active/Draft). These edits are organizational and do not change how the check evaluates the data.

#### Will the platform warn me before converting?

No. The conversion happens silently as soon as you save. The visible signal is the AI badge disappearing and the check being shown as Authored (for example, the Edit dialog title reads **Authored Check Details**).

#### I edited a property by mistake. Can I undo the conversion?

There is no one-click "revert to AI Managed" action. If you want the check back in the automatically managed set, delete it and run a new Profile operation. Qualytics AI will recreate an AI Managed version of the rule if the data still supports it.

#### Does converting an AI Managed check change who owns it?

If the AI Managed check was originally owned by Qualytics, ownership is transferred to you, the user who edited it. The check then shows up in lists like "checks I own".

## AI Managed Profile Behavior

#### What does the next Profile run do to my AI Managed checks?

For checks that are still AI Managed, Profile does one of three things:

1. Keeps the check as is, if the rule still fits the data.
2. Adjusts the check, if Qualytics AI refines its understanding of the rule.
3. Removes the check, if Qualytics AI no longer detects the rule with enough confidence.

Profile **never** modifies or removes an Authored check.

#### Will Profile re-create an AI Managed check I deleted?

Yes, if the data still supports the rule. Deleting an AI Managed check is a clean reset: the next Profile run can re-generate it.

#### How often should I re-run Profile?

Profile runs are typically scheduled (daily, weekly, or after significant data loads) so AI Managed checks stay aligned with how the data actually behaves. See the [Profile Operation](https://userguide.qualytics.io/operations/profile/profile/) documentation for scheduling guidance.

## AI Managed in the API

#### Is there a separate API for AI Managed checks?

No. AI Managed and Authored checks share the same Quality Checks API. Each check returned by the API has an `inferred` boolean that tells you which it is (`inferred: true` = AI Managed; `inferred: false` = Authored). The field name `inferred` is preserved for backward compatibility. See the [API](https://userguide.qualytics.io/data-quality-checks/checks/api/) page for examples.

#### Does editing an AI Managed check via the API also convert it?

Yes. The conversion rules are the same in the UI and in the API. Changing the value of `properties`, `coverage`, `filter`, or `fields` in a `PUT` request flips `inferred` to `false` on save. Resending them with their current values does not convert the check.

## AI Managed Permissions

#### Who can view AI Managed checks?

Anyone with team access to the datastore, including Reporter and Viewer team permissions.

#### Who can edit AI Managed checks?

The required permission depends on the check's status. While the check is in Draft, Drafter is enough for every edit, including rule properties, coverage, filter, and fields. On an Active check, every edit requires Author or above, and so does switching the check between Active and Draft.

For the full breakdown, see [Permissions](https://userguide.qualytics.io/data-quality-checks/checks/deep-dive/permissions/).

**Still have questions?**
Contact the Qualytics support team at
[support@qualytics.ai](mailto:support@qualytics.ai).

*Last updated: November 10, 2026.*
