- .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
47 lines
1.4 KiB
YAML
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
|