Skip to content

ci(simulation): carry results as annotations, not artifacts - #23

Open
Julian Gruber (juliangruber) wants to merge 2 commits into
mainfrom
ci/simulation-results-via-annotations
Open

Julian Gruber (juliangruber) wants to merge 2 commits into
mainfrom
ci/simulation-results-via-annotations

Conversation

@juliangruber

@juliangruber Julian Gruber (juliangruber) commented Sep 30, 2026 •

Copy link
Copy Markdown
Member

Why

The first dispatch of the simulation on main (run 36721798455) lost all 50 install results: every job failed at the upload step because .github/actions/fleet/upload-artifact has no action.yml on a bare checkout. The fleet's artifact composites are hydrated payload, not tracked files. The installs themselves completed and classified correctly; the results were only recoverable by reading each job's log by hand.

What

Each install job emits its result as a ::notice title=sim-result::{json} annotation. The report job lists the run's install jobs and reads those annotations back through the checks API, which is how it already counts binary download failures. No artifacts, no third-party actions.

🤖 Generated with Claude Code


Note

Low Risk
CI workflow-only change to how simulation results are collected; no runtime product or auth logic is touched.

Overview
Fixes lost simulation metrics when install jobs completed but artifact upload failed on a bare checkout (fleet upload/download composites are not present in that shape).

Each Install job now publishes its classification JSON via a ::notice title=sim-result:: workflow annotation instead of writing results/install-*.json and calling fleet/upload-artifact. The Report job gathers those rows with gh api on each install job’s check-run annotations (same pattern already used for binary-download failure counts), builds results.jsonl, and feeds the existing jq flake table from that file. Summary output uses tee -a on the step summary for the table and download-failure breakdown.

Reviewed by Cursor Bugbot for commit 188601c. Configure here.

The fleet's upload-artifact and download-artifact composites are
hydrated payload, so on the bare bootstrap checkout this workflow uses
they have no action.yml and every install job failed at the upload step
(run 36721798455, 51 of 52 jobs). The installs themselves completed and
classified fine.

Emit each result as a `sim-result` notice annotation instead, and have
the report job read the install jobs' annotations back through the
checks API, which it already does for the download-failure breakdown.
@juliangruber
Julian Gruber (juliangruber) force-pushed the ci/simulation-results-via-annotations branch from f706ec9 to 64040f1 Compare September 30, 2026 13:42
Comment thread .github/workflows/test-sfw-ci-simulation.yml Outdated
@juliangruber
Julian Gruber (juliangruber) marked this pull request as ready for review October 1, 2026 10:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant