server/data-export.md
This document outlines all data that Tuist can export for customers upon legal request (GDPR, CCPA). Data is exported for the specific account associated with the requesting user or organization.
Data is provided in a single compressed archive containing:
Sensitive authentication data (passwords, tokens) are excluded from exports.
kura_servers table): per-account Kura server configuration including region, image tag, public URL, and statuskura_deployments table): rollout attempts for the account's Kura servers including image tag, status, error messages, and start/finish timestampsgithub_app_installations table): the installation ID GitHub assigned, the GitHub instance the App lives on (client_url, e.g. https://github.com or a customer's GitHub Enterprise Server host), the App's app_id/app_slug/client_id, and the GitHub-side management html_url. The accompanying client_secret, private_key (PEM), and webhook_secret are stored encrypted at rest and are excluded from exports as authentication secrets.vcs_connections table): the link between a Tuist project and an external repository handle (provider, repository full name, the originating GitHub App installation, and the user who created the connection)automation_alerts table): per-project flaky-test automations, including name, enabled flag, monitor type (flakiness_rate / flaky_run_count), evaluation cadence, baseline established timestamp, and the trigger / recovery configuration as JSON. The configuration includes the comparison threshold, comparison operator, window_type (last_days for calendar windows or rolling for count-based windows), the day-string window (e.g. 30d) used in last_days mode, and the integer rolling_window_size (e.g. 100 runs) used in rolling mode. Trigger and recovery action lists are stored alongside the configuration (state changes, label adds/removes, Slack channel references).automation_alert_events table): per-test-case trigger and recovery records produced by automation alerts (alert id, test case id, status, timestamps).The following data is stored in ClickHouse for analytics purposes:
build_runs table): Complete build execution data including duration, status, cache statistics, CI metadata, git information, and custom tagsbuild_issues table): Compilation warnings and errors from buildsbuild_files table): Individual file compilation metricsbuild_targets table): Target/module build performancecacheable_tasks table): Xcode cache task analytics with hit/miss statuscas_outputs table): Content-addressable storage upload/download recordsshard_plans table): Test sharding plan data including reference, shard count, and granularityshard_plan_modules table): Per-shard module assignments with estimated durationsshard_plan_test_suites table): Per-shard test suite assignments with estimated durationsshard_runs table): Per-shard execution results with status and durationtest_runs table): Includes shard_plan_id linking test results to their shard planbundles table): App bundle metadata (name, app bundle id, version, install/download size, supported platforms, type, git ref/branch/commit).artifacts table): App bundle artifact tree (paths, sizes, SHA hashes, parent/child hierarchy) per uploaded bundle.test_case_runs_active_daily_stats materialized view): Exact daily presence rows per (project_id, date, is_ci, test_case_id) derived from test_case_runs. Powers the Test Cases analytics chart; contains no data not already covered by the source test_case_runs table.test_case_runs_by_commit materialized view): Slim projection of test_case_runs ordered by (project_id, git_commit_sha, scheme, is_ci, status, id). Powers the cross-run flakiness lookup; contains no data not already covered by the source test_case_runs table.test_case_run_daily_stats_per_case materialized view): AggregatingMergeTree keyed on (project_id, date, test_case_id) with count and sumState(toUInt8(is_flaky)) aggregate states. Powers the flaky-test automation engine's per-test windowed comparisons; contains no data not already covered by the source test_case_runs table.test_cases.last_ran_at_ci, test_cases.last_ran_at_local columns): Denormalized timestamps tracking the most recent CI and local run per test case. Maintained by the ingestion path on every test run; contains no data not already covered by the source test_case_runs table.test_case_events table): Audit log of state changes on a test case — first_run, marked_flaky/unmarked_flaky, muted/unmuted, skipped/unskipped. Each row records the test_case_id, the event_type, the inserted_at timestamp, and attribution columns: actor_id (the account that performed the change when initiated by a user; null for system/automation writes) and alert_id (the automation_alerts.id whose action produced the change; null otherwise). Powers the test case history timeline.bundles.artifacts_replicated_to_ch) used to drive the PG → ClickHouse artifacts backfillclient_secret, private_key, webhook_secret on github_app_installations)All uploaded files associated with the account are included:
.xctestproducts bundles stored at {account_id}/{project_id}/shards/{shard_plan_id}/The archive contains everything needed to understand the account's complete data footprint within Tuist.