feat: memory feature overhaul — docs cleanup, CLI surface, pipeline integration #167
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |