phase 0+1: project scaffold, k8s manifests, CI pipeline, steering, hooks, tests

- Repository structure for all services, infra, lakehouse, dashboards
- K8s manifests targeting stonks-oracle namespace with GHCR images
- Ingress via Traefik with ca-issuer TLS for internal services
- ConfigMap wired to existing cluster services (pg, redis, minio, ollama)
- GitHub Actions workflow for lint, test, multi-service container builds
- Dockerfile with build-arg CMD per service
- Makefile for local build/push/deploy
- Steering rules for TDD workflow, K8s conventions, project context
- Agent hooks for lint-on-save, test-on-save, k8s-validate, phase-commit
- Ruff linter config, all lint issues fixed
- 14 passing tests for schemas, config, redis keys
- PostgreSQL migrations, Trino catalogs, Superset config, MinIO lifecycle
This commit is contained in:
Celes Renata
2026-04-11 03:25:08 -07:00
parent 8cfc4f423b
commit ebea70573b
90 changed files with 3590 additions and 19 deletions
+14
View File
@@ -0,0 +1,14 @@
---
name: Lint Python on Save
description: Run ruff linter when any Python file is saved
version: "1.0"
trigger:
type: onSave
filePattern: "**/*.py"
---
When any Python file is saved:
1. Run `ruff check {filePath}` on the saved file
2. If there are fixable issues, run `ruff check --fix {filePath}` to auto-fix
3. Report any remaining issues concisely
+15
View File
@@ -0,0 +1,15 @@
---
name: Phase Commit and Push
description: Commit and push after completing a spec phase task
version: "1.0"
trigger:
type: manual
---
When triggered manually after completing a phase:
1. Run `git add -A`
2. Ask the user for a commit message, suggesting format: `phase N: short description`
3. Run `git commit -m "{message}"`
4. Run `git push origin main`
5. Report the commit SHA and confirm push succeeded
+16
View File
@@ -0,0 +1,16 @@
---
name: Run Tests on Save
description: Automatically run relevant tests when a Python service file is saved
version: "1.0"
trigger:
type: onSave
filePattern: "services/**/*.py"
---
When a Python file under `services/` is saved:
1. Identify which service module was modified (e.g. `services/ingestion/worker.py``ingestion`)
2. Look for corresponding tests in `tests/` matching the service name
3. Run `pytest tests/test_{service_name}*.py -x --tb=short -q` if test files exist
4. If no specific test file exists, run `ruff check` on the modified file to catch syntax/lint issues
5. Report results concisely — only show failures or a one-line success confirmation
+16
View File
@@ -0,0 +1,16 @@
---
name: Validate K8s Manifests
description: Validate Kubernetes YAML when manifest files are saved
version: "1.0"
trigger:
type: onSave
filePattern: "infra/k8s/**/*.yaml"
---
When a Kubernetes manifest YAML file is saved:
1. Parse the YAML to check for syntax errors
2. Verify required fields exist (apiVersion, kind, metadata)
3. Check that namespace is set to `stonks-oracle` for application resources
4. Verify image references point to `ghcr.io/celesrenata/stonks-oracle/`
5. Report any issues found