Wire Jumbo (lomi. Pos) into monorepo CI, audit, and docs #73
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: lomi · parity · product surface | |
| on: | |
| push: | |
| branches: [main, develop] | |
| paths: | |
| - 'apps/api/**' | |
| - 'apps/docs/**' | |
| - 'apps/website/**' | |
| - 'apps/mcp/**' | |
| - '.github/workflows/app-parity.yml' | |
| pull_request: | |
| branches: [main] | |
| paths: | |
| - 'apps/api/**' | |
| - 'apps/docs/**' | |
| - 'apps/website/**' | |
| - 'apps/mcp/**' | |
| - '.github/workflows/app-parity.yml' | |
| schedule: | |
| - cron: '0 6 * * 1' | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| jobs: | |
| parity: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| submodules: recursive | |
| token: ${{ secrets.REPO_CHECKOUT_PAT }} | |
| - name: Ensure private API submodule is present | |
| env: | |
| TOKEN: ${{ secrets.REPO_CHECKOUT_PAT }} | |
| run: bash .github/scripts/init-submodules.sh apps/api | |
| - uses: pnpm/action-setup@v4 | |
| with: | |
| version: 9 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: '22' | |
| cache: pnpm | |
| cache-dependency-path: | | |
| apps/api/pnpm-lock.yaml | |
| apps/docs/pnpm-lock.yaml | |
| apps/mcp/pnpm-lock.yaml | |
| - name: Install API dependencies | |
| run: node tooling/scripts/install-app-with-packages.mjs apps/api | |
| - name: Export OpenAPI | |
| working-directory: apps/api | |
| run: | | |
| pnpm run openapi:export | |
| pnpm run openapi:export:agent | |
| - name: Verify committed OpenAPI specs | |
| run: node .github/scripts/assert-json-equivalent.mjs apps/docs/openapi.json apps/docs/agent-openapi.json | |
| - name: Sync website OpenAPI mirrors | |
| working-directory: apps/website | |
| run: node scripts/build/sync-openapi.mjs | |
| - name: Assert website OpenAPI mirrors match docs | |
| run: | | |
| node .github/scripts/assert-json-equivalent.mjs --same \ | |
| apps/docs/openapi.json apps/website/public/openapi.json \ | |
| apps/docs/agent-openapi.json apps/website/public/agent-openapi.json || ( | |
| echo "Website public OpenAPI is out of sync with apps/docs. Run sync-openapi and commit apps/website/public/*.json" | |
| exit 1 | |
| ) | |
| - name: Install docs dependencies | |
| run: node tooling/scripts/install-app-with-packages.mjs apps/docs | |
| - name: Install MCP dependencies | |
| run: node tooling/scripts/install-app-with-packages.mjs apps/mcp | |
| - name: Run parity worker | |
| working-directory: apps/docs | |
| env: | |
| PARITY_LIVE_PROBE: ${{ github.event_name == 'schedule' && '1' || '0' }} | |
| run: pnpm parity | |
| - name: Notify Slack on failure (scheduled) | |
| if: failure() && github.event_name == 'schedule' | |
| env: | |
| SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | |
| run: | | |
| if [ -z "${SLACK_WEBHOOK_URL:-}" ]; then | |
| echo "SLACK_WEBHOOK_URL not set; skipping notification" | |
| exit 0 | |
| fi | |
| curl -sS -X POST "$SLACK_WEBHOOK_URL" \ | |
| -H 'Content-type: application/json' \ | |
| --data "{\"text\":\"Product surface parity worker failed (scheduled). See ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}\"}" |