fix(install-e2e): review follow-ups — harness needle, per-matrix cap wording, typo

The harness asserted the driver still throws 'not implemented yet' for
the desktop-installer@latest update route; that arm is implemented now
(Invoke-PhaseInstallGui -Mode "update"), so the check failed against
its own tree. It asserts the implemented contract instead.

The 256-job cap wording in the workflow comment and README now states
the scope GitHub applies it at: each per-OS matrix separately, not the
combined leg count. At the 10-tag bound the largest matrix is windows
at 180.

e2e-screen-record comment: hhttps -> https.
This commit is contained in:
yoniebans
2026-09-03 10:15:53 +02:00
parent cd39b3535c
commit 49a5c440c5
4 changed files with 8 additions and 7 deletions

View File

@@ -59,7 +59,7 @@ runs:
command -v ffmpeg >/dev/null 2>&1 || brew install --quiet ffmpeg
# until new runner image is published by github, we have to hack on screen record approvals
# see hhttps://github.com/actions/runner-images/issues/14474 - as of this hermes agent commit,
# see https://github.com/actions/runner-images/issues/14474 - as of this hermes agent commit,
# it's merged but the image isn't updated.
approvalsPlist="$HOME/Library/Group Containers/group.com.apple.replayd/ScreenCaptureApprovals.plist"
mkdir -p "$(dirname "$approvalsPlist")"

View File

@@ -97,9 +97,10 @@ jobs:
- id: pick
env:
# Dispatch inputs never touch shell syntax directly: TAG_COUNT
# 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).
# arrives via the environment and is validated decimal-only (bash
# arithmetic reads a leading zero as octal). GitHub's 256-job cap
# applies to each per-OS matrix separately; at 10 tags the largest
# is windows at 180 (first over the cap at 15 tags = 270).
TAG_COUNT: ${{ inputs.tag-count || 2 }}
run: |
set -euo pipefail

View File

@@ -32,7 +32,7 @@ Write-Host "parameter surface: OK"
# 3. Dispatch bodies reference the right arms (AST-level: the switch on
# InstallMethod contains the three arms; the switch on Route contains all
# six, with desktop-installer@latest throwing).
# six, with desktop-installer@latest re-running the GUI installer).
$text = Get-Content -LiteralPath $driver -Raw
foreach ($needle in @(
'function Invoke-PhaseInstall',
@@ -40,7 +40,7 @@ foreach ($needle in @(
'Invoke-RefInstaller $state.old "old" -IncludeDesktop',
'Invoke-HermesDesktopAppUpdate $state.current',
'Invoke-HermesUpdate',
"update method 'desktop-installer@latest' is not implemented yet"
'Invoke-PhaseInstallGui -Mode "update"'
)) {
if ($text.IndexOf($needle) -lt 0) { Write-Host "dispatch missing: $needle"; exit 1 }
}

View File

@@ -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 <branch> -f route=both -f tag-count=2
```
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.
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. GitHub's 256-job cap applies to each OS matrix separately, not to the combined leg count; at 10 tags the matrices hold 180 windows, 150 macos, and 80 linux entries. Windows would first exceed the cap at 15 tags (270).
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.