Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions .aida/change_domains.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# (C) 2026 GoodData Corporation
# AIDA change domain classification
#
# Define how changed paths map to validation domains.
# See `.aida/validation_policy.yaml` for mapping domains to pipelines.
domains:
- id: python-package
description: Any workspace Python package under packages/*
match_globs:
- "packages/*/src/**/*.py"
- "packages/*/tests/**/*.py"
- "packages/*/pyproject.toml"
- "packages/*/tox.ini"
- "packages/*/Makefile"
root_depth: 2

- id: api-client
description: Generated API client package and its local config
match_globs:
- "gooddata-api-client/**/*.py"
- "gooddata-api-client/requirements.txt"
- "gooddata-api-client/test-requirements.txt"
- "gooddata-api-client/setup.py"
- "gooddata-api-client/tox.ini"
root_depth: 1

- id: repo-tooling
description: Root-level shared tooling and workspace configuration
match_globs:
- "pyproject.toml"
- "Makefile"
- "project_common.mk"
- "ci_tests.mk"
root_depth: 0

- id: aida-config
description: AIDA workflow configuration and local MCP wiring
match_globs:
- ".aida/**/*.yaml"
- ".aida/**/*.mdc"
- ".mcp.json"
- ".claude/CLAUDE.md"
root_depth: 0
21 changes: 21 additions & 0 deletions .aida/git_policy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# (C) 2026 GoodData Corporation
# AIDA git policy
#
# Configure commit and git workflow policy used by AIDA tools.
git_policy:
commit:
# Max allowed characters for the full commit subject line.
subject_max_chars: 70
# Allowed values for required `risk:` footer.
risk_values: [nonprod, low, high]
# Require AI contribution metadata (`AI-Code-Share`) in each commit.
require_ai_share: false
# Require `Co-authored-by:` footer in each commit.
require_co_authored_by: false
# Allow `--ai-share-auto <actor>` (deterministic actor=100).
enable_ai_share_auto: true
workflow:
# Prefer `git push --force-with-lease` over `--force` for unpublished branches.
prefer_force_with_lease: true
# Allow autosquash/rebase only for unpublished (not yet shared) commits.
autosquash_unpublished_only: true
38 changes: 38 additions & 0 deletions .aida/rules/packages/gooddata-dbt.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# (C) 2026 GoodData Corporation
---
description: GoodData dbt package - bridge from dbt metadata to GoodData semantic model
alwaysApply: false
---

# GoodData dbt Package

**Location**: `packages/gooddata-dbt/`

## Owns

- CLI workflow for dbt-oriented GoodData operations (`gooddata-dbt`)
- Conversion of dbt models/profiles into GoodData LDM and analytics deployment inputs
- Workspace and data source provisioning helpers driven by `gooddata.yaml`

## Does NOT Own

- Core GoodData SDK domain/client services → `gooddata-sdk`
- Generic orchestration or storage automation → `gooddata-pipelines`
- dbt runtime implementation itself (provided by dbt tooling)

## Architecture

**Entry point**: `gooddata_dbt.main:main`

**Primary package**: `src/gooddata_dbt`

**Depends on**: `gooddata-sdk`

## Testing

Use package-local pytest suites under `packages/gooddata-dbt/tests`.

## Dependencies

Required: technologies/python, packages/gooddata-sdk
Related: technologies/testing, packages/gooddata-pipelines
38 changes: 38 additions & 0 deletions .aida/rules/packages/gooddata-fdw.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# (C) 2026 GoodData Corporation
---
description: GoodData FDW package - PostgreSQL foreign data wrapper integration
alwaysApply: false
---

# GoodData FDW Package

**Location**: `packages/gooddata-fdw/`

## Owns

- PostgreSQL FDW integration for exposing GoodData data as SQL-accessible foreign tables
- Translation layer between FDW execution flow and GoodData SDK calls
- Import/execute FDW command behavior used by package tests and docs

## Does NOT Own

- Core API/service client behavior → `gooddata-sdk`
- Flight RPC server infrastructure → `gooddata-flight-server`
- FlexConnect function runtime → `gooddata-flexconnect`

## Architecture

**Primary package**: `src/gooddata_fdw`

**Runtime dependency**: multicorn/PostgreSQL FDW environment

**Depends on**: `gooddata-sdk`

## Testing

Use package-local pytest suites under `packages/gooddata-fdw/tests`.

## Dependencies

Required: technologies/python, packages/gooddata-sdk
Related: technologies/testing
38 changes: 38 additions & 0 deletions .aida/rules/packages/gooddata-flexconnect.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# (C) 2026 GoodData Corporation
---
description: GoodData FlexConnect package - custom data source framework for GoodData
alwaysApply: false
---

# GoodData FlexConnect Package

**Location**: `packages/gooddata-flexconnect/`

## Owns

- FlexConnect framework for authoring custom table-function style data sources
- Runtime contract for mapping custom function outputs into GoodData datasets
- Integration layer combining GoodData SDK interactions with Flight server hosting

## Does NOT Own

- Generic Flight server infrastructure and CLI → `gooddata-flight-server`
- Core GoodData Cloud domain/catalog/compute APIs → `gooddata-sdk`
- PostgreSQL FDW integration → `gooddata-fdw`

## Architecture

**Primary package**: `src/gooddata_flexconnect`

**Depends on**: `gooddata-flight-server`, `gooddata-sdk`

**Typical usage**: external FlexConnect projects consume this package as a framework dependency

## Testing

Use package-local pytest suites under `packages/gooddata-flexconnect/tests`.

## Dependencies

Required: technologies/python, packages/gooddata-flight-server, packages/gooddata-sdk
Related: technologies/testing
38 changes: 38 additions & 0 deletions .aida/rules/packages/gooddata-flight-server.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# (C) 2026 GoodData Corporation
---
description: GoodData Flight Server package - pluggable Flight RPC server foundation
alwaysApply: false
---

# GoodData Flight Server Package

**Location**: `packages/gooddata-flight-server/`

## Owns

- Reusable Flight RPC server runtime and CLI (`gooddata-flight-server`)
- Server bootstrap, lifecycle handling, observability, and auth/token integration
- Configuration patterns for running custom Flight method providers

## Does NOT Own

- Core GoodData Cloud domain/catalog/compute SDK APIs → `gooddata-sdk`
- Product-specific data source functions and semantic model mapping → `gooddata-flexconnect`
- Lifecycle provisioning and backup workflows → `gooddata-pipelines`

## Architecture

**Entry point**: `gooddata_flight_server.cli:server_cli`

**Primary package**: `src/gooddata_flight_server`

**Key stack**: `pyarrow.flight`, `dynaconf`, telemetry/metrics integrations

## Testing

Use package-local pytest suites under `packages/gooddata-flight-server/tests`.

## Dependencies

Required: technologies/python
Related: technologies/testing, packages/gooddata-flexconnect
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# (C) 2025 GoodData Corporation
# (C) 2026 GoodData Corporation
---
description: GoodData Pandas package - pandas integration layer for GoodData SDK
alwaysApply: false
Expand Down
38 changes: 38 additions & 0 deletions .aida/rules/packages/gooddata-pipelines.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# (C) 2026 GoodData Corporation
---
description: GoodData Pipelines package - lifecycle automation for GoodData Cloud
alwaysApply: false
---

# GoodData Pipelines Package

**Location**: `packages/gooddata-pipelines/`

## Owns

- High-level automation flows for provisioning users, groups, permissions, and workspace hierarchies
- Backup and restore workflows for workspace metadata (local, S3, Azure Blob targets)
- LDM extension workflows for child workspaces

## Does NOT Own

- Core platform API/service abstractions and low-level client behavior → `gooddata-sdk`
- dbt metadata conversion and deployment CLI → `gooddata-dbt`
- Flight RPC runtime infrastructure → `gooddata-flight-server`

## Architecture

**Primary package**: `src/gooddata_pipelines`

**Depends on**: `gooddata-sdk` plus cloud storage SDK integrations

**Primary modules**: `provisioning`, `backup_and_restore`, `ldm_extension`

## Testing

Use package-local pytest suites under `packages/gooddata-pipelines/tests`.

## Dependencies

Required: technologies/python, packages/gooddata-sdk
Related: technologies/testing
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# (C) 2025 GoodData Corporation
# (C) 2026 GoodData Corporation
---
description: GoodData SDK core package - primary interface for GoodData Cloud
alwaysApply: false
Expand All @@ -22,6 +22,9 @@ alwaysApply: false
- Pandas integration → gooddata-pandas package
- dbt integration → gooddata-dbt package
- Flight server → gooddata-flight-server package
- FlexConnect data source framework → gooddata-flexconnect package
- Lifecycle automation workflows → gooddata-pipelines package
- PostgreSQL FDW integration → gooddata-fdw package
- API client generation → gooddata-api-client (generated)

## Architecture
Expand All @@ -48,4 +51,4 @@ Uses vcrpy cassettes. See `technologies/testing` rule for workflow.
## Dependencies

Required: technologies/python, technologies/testing
Related: packages/gooddata-pandas
Related: packages/gooddata-pandas, packages/gooddata-dbt, packages/gooddata-pipelines
38 changes: 38 additions & 0 deletions .aida/rules/packages/tests-support.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# (C) 2026 GoodData Corporation
---
description: Tests support package - shared test helpers for SDK repository packages
alwaysApply: false
---

# Tests Support Package

**Location**: `packages/tests-support/`

## Owns

- Shared test utilities reused across multiple repository packages
- VCR helpers for cassette normalization and deterministic request/response handling
- File and deep-comparison helper functions used by package test suites

## Does NOT Own

- Product/runtime code for any customer-facing package
- Package-specific test scenarios (those remain with each package under `packages/*/tests`)
- Core SDK API behavior and domain services → `gooddata-sdk`

## Architecture

**Primary package**: `src/tests_support`

**Main modules**: `vcrpy_utils.py`, `compare_utils.py`, `file_utils.py`

**Role**: test-only utility package consumed from dependency groups in other packages

## Testing

Prefer adding shared test helpers here only when at least two packages need the behavior.

## Dependencies

Required: technologies/python
Related: technologies/testing, packages/gooddata-sdk, packages/gooddata-pandas
71 changes: 71 additions & 0 deletions .aida/validation_policy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# (C) 2026 GoodData Corporation
# AIDA validation policy
#
# This file wires domains -> pipelines -> steps (command_id + processor_id).
# Initially empty (validate may no-op until you configure routes).
validation_policy:
codegen:
- id: api-client-regeneration-check
match_globs:
- "schemas/**/*.json"
- ".openapi-generator/**/*.yaml"
- "scripts/generate_client.sh"
pipeline: api-client-fast
scopes: ["pre_push"]

routes:
- domain: python-package
pipeline: package-fast
- domain: api-client
pipeline: api-client-fast
- domain: repo-tooling
pipeline: repo-fast
- domain: aida-config
pipeline: aida-config

pipelines:
package-fast:
steps:
- command_id: package-lint
processor_id: passthrough
- command_id: package-type-check
processor_id: passthrough
- command_id: package-test-py314
processor_id: pytest

package-compat:
steps:
- command_id: package-lint
processor_id: passthrough
- command_id: package-type-check
processor_id: passthrough
- command_id: package-test-py314
processor_id: pytest
- command_id: package-test-py310
processor_id: pytest

package-full:
steps:
- command_id: package-lint
processor_id: passthrough
- command_id: package-type-check
processor_id: passthrough
- command_id: package-test-matrix
processor_id: pytest

api-client-fast:
steps:
- command_id: api-client-tests
processor_id: pytest

repo-fast:
steps:
- command_id: workspace-lint
processor_id: passthrough
- command_id: workspace-type-check
processor_id: passthrough

aida-config:
steps:
- command_id: aida-doctor
processor_id: passthrough
Loading
Loading