Canary — plugin vs Codex main #77
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: Canary — plugin vs Codex main | |
| # Codex main moves fast and ships a prerelease cut (@alpha) near-daily, so the | |
| # host can break us even when we don't push. Run the host-interface contract | |
| # tests against the freshest main prerelease twice a day and alert on failure. | |
| # The live channel suite chains off this run, so the canary leads and live | |
| # follows on the same cadence. | |
| on: | |
| schedule: | |
| # 2x/day at 6 AM and 6 PM America/Los_Angeles (PDT/UTC-7 basis; cron is UTC). | |
| - cron: "13 13 * * *" # 06:13 PT | |
| - cron: "13 1 * * *" # 18:13 PT | |
| workflow_dispatch: {} | |
| permissions: | |
| contents: read | |
| jobs: | |
| canary: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: actions/setup-python@v6 | |
| with: | |
| python-version: "3.12" | |
| - uses: actions/setup-node@v7 | |
| with: | |
| node-version: "22" | |
| - name: Install bridge + test deps | |
| run: | | |
| pip install \ | |
| "inkbox==0.5.9" \ | |
| -e . pytest | |
| # @alpha is the prerelease channel cut from codex main near-daily — the | |
| # freshest main build available without compiling the host from source. | |
| - name: Install Codex (freshest main prerelease) | |
| run: bash "$GITHUB_WORKSPACE/tests/ci/install_codex.sh" | |
| # Live tests self-skip without credentials; the complete live stack runs | |
| # only after this latest-host canary succeeds. | |
| - name: Full offline suite vs real Codex | |
| run: pytest -q | |
| notify: | |
| needs: canary | |
| if: always() && github.event_name == 'schedule' && needs.canary.result != 'success' | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 2 | |
| steps: | |
| - name: Notify Google Chat | |
| env: | |
| WEBHOOK_URL: ${{ secrets.GOOGLE_CHAT_WEBHOOK_URL }} | |
| run: | | |
| [ -n "$WEBHOOK_URL" ] || { echo "GOOGLE_CHAT_WEBHOOK_URL is missing"; exit 1; } | |
| curl --fail-with-body --retry 3 --retry-all-errors --max-time 20 \ | |
| -sS -X POST -H 'Content-Type: application/json' \ | |
| -d "{\"text\": \"🚨 codex-plugin canary FAILED against Codex main: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}\"}" \ | |
| "$WEBHOOK_URL" |