Skip to content

Commit 8cfe36f

Browse files
committed
ci(s001): the serve step's curl loop had no bound and hung the Windows runner
`until curl ...; do sleep 0.05; done` with no limit. Linux and macOS passed it in under two seconds; Windows — which had never been curled before this slice, because the step used to carry `if: runner.os != 'Windows'` — sat in it until I cancelled run 34075929160 by hand. Bounded to 60 s, and on failure it prints serve.log rather than just exiting, because the question 'does the Windows artifact serve?' has never been answered and the next run needs to answer it either way. A step that hangs reports nothing and fails nothing, which is the same shape as the workflow that never fired at 0326dea. Fourth defect this workflow's runs have surfaced, and again one no local run could have. mix gate exit=0. Signed-off-by: Ayla Croft <aylacroft@proton.me>
1 parent f80145b commit 8cfe36f

2 files changed

Lines changed: 39 additions & 11 deletions

File tree

‎.github/workflows/package.yml‎

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,19 @@ jobs:
210210
sleep 0.5
211211
done
212212
test -n "${PORT:-}"
213-
until curl -sS -o /dev/null "http://127.0.0.1:$PORT/" 2>/dev/null; do sleep 0.05; done
213+
# Bounded. The first version of this loop had no limit and the Windows runner sat in
214+
# it until the run was cancelled by hand — a step that hangs reports nothing and
215+
# fails nothing, which is the same shape as a workflow that never fires.
216+
ok=0
217+
for _ in $(seq 1 600); do
218+
if curl -sS -o /dev/null "http://127.0.0.1:$PORT/" 2>/dev/null; then ok=1; break; fi
219+
sleep 0.1
220+
done
221+
if [ "$ok" != "1" ]; then
222+
echo "no HTTP response on port $PORT after 60 s" >&2
223+
echo "--- serve.log ---" >&2; tail -40 serve.log >&2
224+
exit 1
225+
fi
214226
elapsed=$(( $(now_ms) - start ))
215227
code=$(curl -sS -o /dev/null -w '%{http_code}' "http://127.0.0.1:$PORT/")
216228
echo "HTTP $code on port $PORT"

‎slices/001-packaging-spike/PROOF.md‎

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -318,18 +318,34 @@ figure would understate the launch that forms the impression by a factor of six.
318318
**Partly proven, and the rest is not blocked by what I said it was.** Three sub-claims, three
319319
different answers:
320320

321-
**Per-OS binary size — proven**, by the runners, run `34067973983`:
321+
**Per-OS binary size — proven**, by the runners. Two sets of figures, because D7 changed what
322+
is in the binary between them:
322323

323-
| OS | Bytes |
324+
| OS | run `34067973983`, before D7 | run `34075257183`, after D7 |
325+
|---|---|---|
326+
| linux x86_64 | 20 790 808 | 21 298 216 |
327+
| macOS aarch64 | 11 927 096 | 12 435 992 |
328+
| Windows x86_64 | 24 519 680 | — see AC3 |
329+
330+
The later column is the artifact this slice ships. Both are kept rather than the first being
331+
overwritten: the difference is `ex_tauri` and its dependency tail entering `:prod`, and a reader
332+
comparing sizes across slices needs to know a dependency moved rather than the code growing.
333+
334+
**Per-OS cold-start-to-serving — measured, at G4 item 2**, run `34075257183`:
335+
336+
| OS | exec to first HTTP 200 |
324337
|---|---|
325-
| linux x86_64 | 20 790 808 |
326-
| macOS aarch64 | 11 927 096 |
327-
| Windows x86_64 | 24 519 680 |
328-
329-
**Per-OS cold-start-to-serving — now measured in CI, at G4 item 2.** The jobs previously
330-
launched and curled without timing the interval, and Windows was never curled at all
331-
(`if: runner.os != 'Windows'`). Both were holes in `package.yml` rather than missing machines.
332-
Every job now times exec-to-first-200 and writes it to its own summary.
338+
| linux x86_64 | **699 ms** |
339+
| macOS aarch64 | **1 416 ms** |
340+
341+
The jobs previously launched and curled without timing the interval, and Windows was never
342+
curled at all (`if: runner.os != 'Windows'`). Both were holes in `package.yml` rather than
343+
missing machines.
344+
345+
**These are not comparable with AC5's 231–245 ms.** That figure is a warm launch on this
346+
machine with the Burrito payload already extracted; a runner is cold every time, so 699 ms is
347+
the runner's equivalent of AC5's 1 578 ms first-launch figure, not of its warm one. Reporting
348+
them in one column would invite exactly that mistake.
333349

334350
**Cold-start-to-first-paint — PROVEN on Linux, 2026-09-07.** The owner timed **2–3 seconds**
335351
from pressing Enter on `mix ex_tauri.dev` to the scaffold appearing in the window. Timed by hand,

0 commit comments

Comments
 (0)