Skip to content

feat: memory feature overhaul — docs cleanup, CLI surface, pipeline integration #167

feat: memory feature overhaul — docs cleanup, CLI surface, pipeline integration

feat: memory feature overhaul — docs cleanup, CLI surface, pipeline integration #167

Workflow file for this run

name: CI
on:
push:
branches: [main, "phase-b/**", "refactor/**", "fix/**"]
pull_request:
branches: [main]
# Cancel stale runs on the same ref when a new push lands.
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
# Budget-aware CI: PR path runs only fast checks. Heavy e2e test files
# (hundreds of subprocess spawns each) are excluded from the default suite
# and exercised by the `full-suite` workflow on manual dispatch / nightly
# cron. Coverage lives in its own workflow triggered weekly.
jobs:
lint:
name: lint & contract validator
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Compile all Python files
run: |
python - <<'PY'
import py_compile, pathlib, sys
fail = False
for p in pathlib.Path('.').rglob('*.py'):
if '.git' in p.parts:
continue
try:
py_compile.compile(str(p), doraise=True)
except py_compile.PyCompileError as e:
print('FAIL', p, e); fail = True
sys.exit(1 if fail else 0)
PY
- name: Validate JSON manifests
run: |
python -c "import json; json.load(open('plugin.json'))"
python -c "import json; json.load(open('marketplace.json'))"
python -c "import json; json.load(open('.mcp.json'))"
python -c "import json; json.load(open('hooks/hooks.json'))"
python -c "import json; json.load(open('policies/standard.json'))"
python -c "import json; json.load(open('policies/strict.json'))"
python -c "import json; json.load(open('policies/permissive.json'))"
- name: Run plugin contract validator (--all)
run: python3 scripts/verify_plugin_contract.py --all
unit-tests-fast:
name: fast unit tests (py 3.11)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install pytest
run: python3 -m pip install --quiet pytest
# Exclude subprocess-heavy e2e/pool tests from the PR gate — they
# spawn hundreds of Python processes each on GitHub runners and
# dominate CI wall time. Full suite runs in `full-suite.yml` on
# manual dispatch + weekly cron.
- name: Run fast unit tests
run: |
python3 -m pytest -q \
--ignore=tests/integration \
--ignore=tests/test_omni_team.py \
--ignore=tests/test_omni_worktree.py
# tests/integration/ is the local-only itest harness wrapper —
# requires copilot auth + npm install, excluded from every CI workflow.
mcp-smoke:
name: MCP stdio smoke
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: JSON-RPC roundtrip
run: python scripts/mcp_smoke.py
discovery-smoke:
name: Plugin discovery smoke
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Discovery layout
run: python3 scripts/discovery_smoke.py --probe layout
windows-smoke:
# Windows lane for cross-OS invariants: the portability suite, Python
# launcher behaviour (including Store-stub rejection), and runs GC.
name: Windows cross-OS smoke
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install pytest
run: python -m pip install --quiet pytest
- name: Windows-targeted tests
shell: pwsh
run: |
python -m pytest -q `
tests/test_portability.py `
tests/test_python_launcher.py `
tests/test_runs_gc.py