mirror of
https://github.com/stablyai/orca.git
synced 2026-10-01 16:02:03 +00:00
A caller's `needs` gate the whole called workflow, so while the plan job lived in unit-tests.yml it could not start until static analysis and typecheck had both finished and passed -- and the shard matrix then waited on it. The two hops were serial when they did not need to be: planning reads the checkout, a git diff against HEAD^1, the import graph and the checked-in timing baseline in config/scripts/ci-shard-timings.json, and consumes nothing that static analysis, typecheck or the native-cache primer produce. Planning moves to its own reusable workflow so pr.yml can run it against code_paths alone, overlapping it with the gate. Measured across 99 runs, the shard matrix is created a median 93s earlier (p25 47s, p90 241s, never later). Planning stays a required predecessor of the shards, so an empty assignment cannot expand the matrix. The gate itself is deliberately left in place. It fires on 22% of runs, and the shard queue wait knees hard above ~9 concurrent ARM jobs -- 4s median below that against 218s at 15-19 -- so admitting 8 doomed shards per failed run would cost more in queue pressure than it returns in latency. Cost is one 37s ubuntu-latest job, which does not touch the ARM pool the shards contend for. A planning failure still fails the PR: the shards are skipped, and verify's check_job requires success whenever the classifier says tests should run, so it reports `test: expected success, got skipped`.
46 lines
1.0 KiB
YAML
46 lines
1.0 KiB
YAML
name: Scheduled x86 unit compatibility
|
|
|
|
on:
|
|
schedule:
|
|
# Keep current and future Node coverage on x86 while PR unit shards use ARM.
|
|
- cron: '0 10 * * *'
|
|
workflow_dispatch:
|
|
|
|
concurrency:
|
|
group: node-next-compat
|
|
cancel-in-progress: true
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
# Prime each Node ABI before its shards restore native modules.
|
|
test_native_cache:
|
|
name: prepare test native cache node ${{ matrix.node }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
node: ['24', '26']
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v6
|
|
with:
|
|
persist-credentials: false
|
|
|
|
- uses: ./.github/actions/install-node-dependencies
|
|
with:
|
|
native-runtime: node
|
|
node-version: ${{ matrix.node }}
|
|
|
|
unit_plan:
|
|
uses: ./.github/workflows/unit-plan.yml
|
|
|
|
test:
|
|
needs: [test_native_cache, unit_plan]
|
|
uses: ./.github/workflows/unit-tests.yml
|
|
with:
|
|
node_versions: '["24", "26"]'
|
|
shards: ${{ needs.unit_plan.outputs.shards }}
|