Skip to content

Unify default local state under .loopx with explicit migration #42

Unify default local state under .loopx with explicit migration

Unify default local state under .loopx with explicit migration #42

Workflow file for this run

name: Package Smoke
on:
pull_request:
paths:
- ".github/workflows/package-smoke.yml"
- "packages/loopx-repo-health/**"
- "packages/loopx-obelisk/**"
- "packages/loopx-codex-provider-routing/**"
- "loopx/capabilities/decision_context/extension_provider.py"
- "loopx/extensions/runtime.py"
push:
branches:
- main
paths:
- ".github/workflows/package-smoke.yml"
- "packages/loopx-repo-health/**"
- "packages/loopx-obelisk/**"
- "packages/loopx-codex-provider-routing/**"
- "loopx/capabilities/decision_context/extension_provider.py"
- "loopx/extensions/runtime.py"
permissions:
contents: read
concurrency:
group: package-smoke-${{ github.ref }}
cancel-in-progress: true
jobs:
codex-provider-routing:
name: loopx-codex-provider-routing
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v6
with:
python-version: "3.11"
- name: Install provider and schema validator
run: python -m pip install packages/loopx-codex-provider-routing "jsonschema==4.26.0"
- name: Validate recovery and existing operator contracts
run: |
python -m compileall -q packages/loopx-codex-provider-routing/src
python packages/loopx-codex-provider-routing/smoke/codex_provider_routing_smoke.py
python packages/loopx-codex-provider-routing/smoke/recovery_contracts_smoke.py
python packages/loopx-codex-provider-routing/smoke/operator_smoke.py
- name: Validate installed entrypoint and example schemas
run: |
python - <<'PY'
import json, subprocess
from pathlib import Path
from jsonschema import validate
root = Path("packages/loopx-codex-provider-routing")
request_schema = json.loads((root / "schemas/request.schema.json").read_text())
response_schema = json.loads((root / "schemas/response.schema.json").read_text())
for example in sorted((root / "examples").glob("*.json")):
request = json.loads(example.read_text())
validate(request, request_schema)
result = subprocess.run(["loopx-codex-provider-routing"], input=json.dumps(request), text=True, capture_output=True, check=True)
response = json.loads(result.stdout)
validate(response, response_schema)
assert response["ok"], example.name
PY
repo-health:
name: loopx-repo-health
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Check out repository
uses: actions/checkout@v7
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.11"
- name: Compile package modules
run: >-
python -m py_compile
packages/loopx-repo-health/src/loopx_repo_health/*.py
- name: Run offline contract smoke
run: >-
python
packages/loopx-repo-health/smoke/repo_health_snapshot_smoke.py
obelisk:
name: loopx-obelisk
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Check out repository
uses: actions/checkout@v7
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.11"
- name: Install contract validator
run: python -m pip install --disable-pip-version-check "jsonschema==4.26.0"
- name: Compile package modules
run: >-
python -m py_compile
packages/loopx-obelisk/src/loopx_obelisk/*.py
- name: Run offline contract smoke
run: >-
python
packages/loopx-obelisk/smoke/obelisk_provider_smoke.py