From 611536224d32011169ea2cb65c0be5397211aed7 Mon Sep 17 00:00:00 2001 From: ulises-jeremias Date: Sun, 23 Aug 2026 15:17:46 -0300 Subject: [PATCH] ci(profiles): W4 add coverage for 9 orphan extensions + mlops MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add fastapi-observability (github-setup + fastapi-cors + fastapi-sqlalchemy + fastapi-opentelemetry + fastapi-rag-pgvector) covering 4 orphans with distinct categories (ci/security/database/observability/ai-ml) - Add fastapi-data (pre-commit + fastapi-redis + fastapi-rate-limit + fastapi-mlflow-tracing) covering remaining 4 fastapi orphans (ci/database/security/observability) — respects category uniqueness (one per category) - Add django-full (github-setup + development-container + django-docker + postgres + django-spectacular) covering django-spectacular orphan - Add mlops-sklearn-default (mlops-sklearn-starter + github-setup) as per PR #179 — cherry-picked profile and github-setup type extension for mlops-sklearn; pre-commit orphan is covered via fastapi-data (cannot co-locate ci category with github-setup in same profile) - Update templates.json: add mlops-sklearn to github-setup type array for L2/L3 coverage - All 18 extensions now covered by at least one L3 profile (0 orphans); validated via generate-matrix.py --layer validate-profiles and validate-registry.py Fixes orphan coverage noted in W4-1 and §3 (9/18 extensions orphan: cors, redis, sqlalchemy, otel, rate-limit, mlflow-tracing, rag-pgvector, django-spectacular, pre-commit) --- ci/profiles/django-full.json | 12 ++++++++++++ ci/profiles/fastapi-data.json | 11 +++++++++++ ci/profiles/fastapi-observability.json | 12 ++++++++++++ ci/profiles/mlops-sklearn-default.json | 8 ++++++++ templates.json | 1 + 5 files changed, 44 insertions(+) create mode 100644 ci/profiles/django-full.json create mode 100644 ci/profiles/fastapi-data.json create mode 100644 ci/profiles/fastapi-observability.json create mode 100644 ci/profiles/mlops-sklearn-default.json diff --git a/ci/profiles/django-full.json b/ci/profiles/django-full.json new file mode 100644 index 0000000..eabda2e --- /dev/null +++ b/ci/profiles/django-full.json @@ -0,0 +1,12 @@ +{ + "id": "django-full", + "description": "Django API with OpenAPI (django-spectacular), Postgres and Dev Container", + "templateDir": "django-api", + "addons": [ + "github-setup", + "development-container", + "django-docker", + "postgres", + "django-spectacular" + ] +} diff --git a/ci/profiles/fastapi-data.json b/ci/profiles/fastapi-data.json new file mode 100644 index 0000000..5bb7967 --- /dev/null +++ b/ci/profiles/fastapi-data.json @@ -0,0 +1,11 @@ +{ + "id": "fastapi-data", + "description": "FastAPI with Redis, rate limiting and MLflow tracing (data layer)", + "templateDir": "fastapi-starter", + "addons": [ + "pre-commit", + "fastapi-redis", + "fastapi-rate-limit", + "fastapi-mlflow-tracing" + ] +} diff --git a/ci/profiles/fastapi-observability.json b/ci/profiles/fastapi-observability.json new file mode 100644 index 0000000..f8d1979 --- /dev/null +++ b/ci/profiles/fastapi-observability.json @@ -0,0 +1,12 @@ +{ + "id": "fastapi-observability", + "description": "FastAPI with OpenTelemetry, CORS, SQLAlchemy and RAG pgvector", + "templateDir": "fastapi-starter", + "addons": [ + "github-setup", + "fastapi-cors", + "fastapi-sqlalchemy", + "fastapi-opentelemetry", + "fastapi-rag-pgvector" + ] +} diff --git a/ci/profiles/mlops-sklearn-default.json b/ci/profiles/mlops-sklearn-default.json new file mode 100644 index 0000000..0558701 --- /dev/null +++ b/ci/profiles/mlops-sklearn-default.json @@ -0,0 +1,8 @@ +{ + "id": "mlops-sklearn-default", + "description": "MLOps sklearn starter with GitHub CI", + "templateDir": "mlops-sklearn-starter", + "addons": [ + "github-setup" + ] +} diff --git a/templates.json b/templates.json index 836ee9e..4a8d001 100644 --- a/templates.json +++ b/templates.json @@ -230,6 +230,7 @@ "cli-app", "django-backend", "fastapi-backend", + "mlops-sklearn", "uv-workspace" ], "category": "ci",