Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -786,10 +786,10 @@ jobs:
needs: [scope, build-artifacts]
if: ${{ (needs.scope.outputs.selection == 'full' || needs.scope.outputs.selection == 'template') }}
# One scaffold/install/typecheck/cook per template. Every nonvisual scenario still executes;
# splitting identical setup across 29 jobs wastes scarce slots at max-parallel 4.
# Keep one leg per selected kit; eight hosted legs may run together without changing coverage.
strategy:
fail-fast: false
max-parallel: 4
max-parallel: 8
matrix: ${{ fromJSON(needs.scope.outputs.plan).templateMatrix }}
# Hosted on purpose: template legs use hosted while the balancer routes builds and tests
# to the local pool, avoiding one routing variable sending the whole burst to a single pool.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ prd_contract: v1
then whether retained tests apply now. Docs-only skips product tests. CI configuration proves its
routing/contracts. Native runs for native and shared runtime consumers. Unknown meaningful inputs
keep full coverage. No settings, credentials, runners or concurrency changes.
- João, 2026-10-04 follow-up: allow up to eight existing hosted template legs at once; preserve selected coverage, fail-fast false, runner routing and timeouts. This separately authorized cap change does not alter the original cleanup decision or historical measurements.
- Exhaustive template scenarios remain on broad changes, main qualification and scheduled audits.
Exact kit changes run the affected kits; shared generator/render sources keep exhaustive fanout in
this tranche. Narrowing shared sources further needs a proved dependency boundary.
Expand Down Expand Up @@ -46,7 +47,7 @@ There are 13 kit manifests, not a hardcoded CI count.
| One kit | 4 full unit shards + 31 template jobs / full board | 1 scaffolder-contract unit job + 2 template jobs / same |
| Shared runtime, generator, unknown meaningful code; main/nightly | exhaustive 31 template jobs | exhaustive 13 scenario jobs + 2 journey jobs |

The template cap stays four. Baseline's nonvisual slot-work lower bound is 94.6 / 4 = 23.6 minutes;
The hosted template cap is eight; selected kits and scenarios are unchanged. The historical baseline at cap four had a nonvisual slot-work lower bound of 94.6 / 4 = 23.6 minutes;
removing 16 repeated setups at the workflow's documented ~65s estimates 17.3 runner-min saved,
retaining both existing golden journeys. That gives ~83.6 template runner-min, an estimate,
not measured after-change wall time. Individual exhaustive template jobs will be longer (shooter
Expand Down
4 changes: 3 additions & 1 deletion scripts/__tests__/ci-structure.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1762,7 +1762,9 @@ describe("CI pipeline structure", () => {
expect(lane).toContain('for scenario in "${scenarios[@]}"');
expect(lane).toContain('test "${#scenarios[@]}" -gt 0');
expect(lane).not.toContain("SHARD");
expect(lane).toContain("max-parallel: 4");
expect(lane).toContain("max-parallel: 8");
expect(lane).toContain("fail-fast: false");
expect(lane).toContain("runs-on: ubuntu-24.04");
});

it("preserves platformer's unique production artifact in its installed scenario job", async () => {
Expand Down
Loading