vpp-ai-platform/.github/workflows/ci.yml
Thomas Bayes e7196bc88a M1: close gaps — CI, time-series/relational stores, ingestion skeleton, Python 3.11 pin
- .github/workflows/ci.yml: TS job (typecheck, re-export contracts, drift
  check, vitest) and Python job (3.11, regenerate pydantic models, drift
  check, pytest) — the dual-side contract test now actually runs in CI.
- packages/services: MemoryTimeSeriesStore (append-only daily-curve
  revisions), MemoryRepository + ResourceRegistry (schema-validated,
  optimistic versioning), IngestionPipeline (snapshot → quality gate →
  store or quarantine). In-memory reference semantics; persistent adapters
  arrive with M3 like the ledger.
- skills-py: .python-version + pyproject requires-python >=3.11; codegen
  script asserts interpreter version and runs the generator as a module.
- typecheck scripts per package and in root `check`; README status and dev
  setup; CLAUDE.md current-phase note.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UoYoGYzHkFyv3ALenkRPhA
2026-09-01 21:58:49 -04:00

47 lines
1.4 KiB
YAML

name: ci
on:
push:
branches: [master]
pull_request:
jobs:
# Domain schemas + deterministic services (TS side of the contract pipeline).
typescript:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 24
cache: npm
- run: npm ci
- run: npm run typecheck
# ADR-0002: contracts/ is generated from packages/domain and committed.
# A dirty tree here means someone changed a zod schema without
# re-exporting, or hand-edited a generated file.
- run: npm run export:schemas && npm run make:fixtures
- run: git diff --exit-code -- contracts/
- run: npm test
# Generated pydantic models must accept/reject the same golden fixtures the
# TS side does (docs/11 §3.2 dual-side contract test).
python:
runs-on: ubuntu-latest
defaults:
run:
working-directory: skills-py
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version-file: skills-py/.python-version
cache: pip
cache-dependency-path: skills-py/requirements.txt
- run: pip install -r requirements.txt
# Generated models are committed but never hand-edited: regenerate and
# require a clean tree.
- run: bash scripts/generate_models.sh
- run: git diff --exit-code -- vpp_contracts/
- run: python -m pytest -q