Skip to content

Nightly

Nightly #18

Workflow file for this run

name: Nightly
# Release-boundary and documentation-artifact lanes that are too slow, or
# prove too little per commit, to run on every PR. Every job here is
# independent — one red lane never hides another — and none is a required
# check on main. Before #576 the evidence pool sat after `pnpm check:release`
# inside one job and had never executed because the packed matrix failed
# first, and the MCP conformance lane existed only as a never-dispatched
# manual workflow.
on:
schedule:
- cron: '17 6 * * *'
# Manual dispatch proves a lane green from any ref (e.g. a PR branch that
# changes one of these pools) without waiting for the next night.
workflow_dispatch:
permissions:
contents: read
concurrency:
group: nightly-${{ github.sha }}
env:
# Same browser pin as ci.yml: Workbench browser suites launch Playwright's
# bundled Chromium (see packages/workbench/tests/support/workbench-e2e.ts).
AGENT_BUNDLE_PLAYWRIGHT_CHANNEL: chromium
jobs:
# Release-boundary scaffolder template matrix (mcp-server, cli-tool) plus
# the full packed pool — the nightly form of pre-publish `check:release`.
# The per-PR release-gates job runs the `check:release:ci` subset.
# Version Packages candidates and manual qualification use
# release-candidate.yml (same `pnpm check:release` command, not this
# schedule).
# Known red until test/576-p1-test-fixes lands: scaffold-packed-matrix.e2e
# asserts the scaffolded project's test output contains `"failedTests": 0`,
# a string only Rstest's `md` reporter prints (auto-selected under an
# AI-agent environment variable such as CURSOR_AGENT), never the default
# reporter a hosted runner uses (#576). Non-blocking: nothing requires this
# workflow, and a main push never waits on it.
packed-matrix:
name: Packed release matrix (Node 22.19)
runs-on: ubuntu-latest
timeout-minutes: 40
steps:
- uses: actions/checkout@v7
- uses: ./.github/actions/setup-workspace
with:
node-version: 22.19.0
playwright-browser: chromium
- run: pnpm check:release
- if: failure()
name: Preserve Playwright traces of failed browser tests
uses: actions/upload-artifact@v7
with:
name: playwright-traces-packed-matrix
path: .rstest/playwright-traces
if-no-files-found: ignore
retention-days: 7
# Official MCP server conformance runner (rstest.mcp-conformance.config.ts)
# against one generated fixture over loopback HTTP. The expected-failure
# allowlist lives in packages/agent-bundle/tests/fixtures/
# mcp-conformance-expected-failures.yml; the runner's report is kept as an
# artifact for triage.
mcp-conformance:
name: MCP conformance (Node 22.19)
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v7
- uses: ./.github/actions/setup-workspace
with:
node-version: 22.19.0
- run: pnpm test:mcp-conformance
env:
AGENT_BUNDLE_MCP_CONFORMANCE_OUTPUT: artifacts/mcp-conformance
- name: Preserve MCP conformance results
if: always()
uses: actions/upload-artifact@v7
with:
if-no-files-found: warn
name: mcp-conformance-results
path: artifacts/mcp-conformance
retention-days: 14