From cd39b3535c2dceb77a65d3c50295ae258a698768 Mon Sep 17 00:00:00 2001 From: yoniebans Date: Wed, 2 Sep 2026 18:32:47 +0200 Subject: [PATCH] =?UTF-8?q?fix(install-e2e):=20round-2=20review=20?= =?UTF-8?q?=E2=80=94=20decimal-only=20tag-count,=20honest=20cost=20math?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ^(10|[1-9])$ replaces the two-step guard: the [0-9]+ regex accepted leading zeros that bash arithmetic then read as octal (010 passed as 8, 08 errored). README cost figures corrected to the generator's real expansion: 41 legs/tag, 82 at the default 2 tags, update route 8/tag, first matrix overflow at 15 tags (270 windows entries). --- .github/workflows/install-e2e.yml | 8 ++++---- tests/install/README.md | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/install-e2e.yml b/.github/workflows/install-e2e.yml index 092885fd4a..53f1997b3c 100644 --- a/.github/workflows/install-e2e.yml +++ b/.github/workflows/install-e2e.yml @@ -97,13 +97,13 @@ jobs: - id: pick env: # Dispatch inputs never touch shell syntax directly: TAG_COUNT - # arrives via the environment, is validated here, and is capped - # below the 256-job matrix limit (14 tags ~= 252 windows entries). + # arrives via the environment, is validated decimal-only (bash + # arithmetic reads a leading zero as octal), and is capped below + # the 256-job matrix limit (15 tags = 270 windows entries). TAG_COUNT: ${{ inputs.tag-count || 2 }} run: | set -euo pipefail - [[ "$TAG_COUNT" =~ ^[0-9]+$ ]] || { echo "tag-count must be a positive integer, got: $TAG_COUNT" >&2; exit 1; } - (( TAG_COUNT >= 1 && TAG_COUNT <= 10 )) || { echo "tag-count must be 1-10, got: $TAG_COUNT" >&2; exit 1; } + [[ "$TAG_COUNT" =~ ^(10|[1-9])$ ]] || { echo "tag-count must be 1-10, got: $TAG_COUNT" >&2; exit 1; } tags="$(scripts/sandbox/pick-release-tags.sh --count "$TAG_COUNT")" echo "Testing updates from: $tags" # Annotate each tag with what its own tree supports, so run diff --git a/tests/install/README.md b/tests/install/README.md index fd2cfa46a9..b8402f8e85 100644 --- a/tests/install/README.md +++ b/tests/install/README.md @@ -77,7 +77,7 @@ The matrix does not run on pull requests. One leg installs real toolchains and t gh workflow run install-e2e.yml --ref -f route=both -f tag-count=2 ``` -Cost per run, so nobody is surprised: the full board at the default 2 sampled tags is up to ~76 legs. A typical green leg finishes in 7-15 minutes; every leg is capped at 60. Route slices for cheaper reads: `update` (linux only, ~8 legs), `windows-desktop` (~18/tag), `macos-desktop` (~15/tag). `tag-count` is validated to 1-10; above ~14 tags the expansion would exceed GitHub's 256-job matrix limit. +Cost per run, so nobody is surprised: 41 legs per sampled tag (windows 18, macos 15, linux 8), so the default 2 tags is up to 82 legs. A typical green leg finishes in 7-15 minutes; every leg is capped at 60. Route slices for cheaper reads: `update` (linux only, 8/tag), `windows-desktop` (18/tag), `macos-desktop` (15/tag). `tag-count` is validated to 1-10; at 15 tags the windows expansion alone (270) would exceed GitHub's 256-job matrix limit. Running the drivers locally: don't, except in a disposable VM. The windows driver kills every process named Hermes during teardown and the macos driver operates on `/Applications/Hermes.app`; on a machine with a real Hermes install they will interfere with it.