Skip to content

ci: diagnose the launch-smoke flake, pin artifact retention, gate demo GIFs (#247, #258) - #277

Merged
jeiel85 merged 2 commits into
mainfrom
claude/247-258-gates
Jul 24, 2026
Merged

ci: diagnose the launch-smoke flake, pin artifact retention, gate demo GIFs (#247, #258)#277
jeiel85 merged 2 commits into
mainfrom
claude/247-258-gates

Conversation

@jeiel85

@jeiel85 jeiel85 commented Jul 24, 2026

Copy link
Copy Markdown
Owner

Three items from #247 and two from #258, picked up during a sweep over the open issue backlog.

launch-smoke is not the flake it was filed as

Three issues describe this job as an unexamined flake. The failure on PR #274 gave it a name, and it is not Broken pipe:

Performing Streamed Install
Success
Starting: Intent { cmp=com.markleaf.notes/.MainActivity }
Error type 3
Error: Activity class {com.markleaf.notes/com.markleaf.notes.MainActivity} does not exist.

adb install returns when the install session commits — which is before the package manager has the app indexed. Starting the activity in that window fails exactly as though the build were broken. On a slow CI emulator that window is seconds wide; locally it is nothing, which is why the job reads as random.

The script now waits for pm path to answer before starting the activity (up to a minute) and fails with a distinct message if it never does. That is a wait on the real signal rather than a sleep.

The job stays continue-on-error — one green run is not evidence, and #252 already asked for a few more data points before promoting it. But the flake now has a diagnosis instead of a reputation.

Artifact retention

roborazzi-diff-images, lint-report-release and roborazzi-goldens-linux were the three still on the 90-day default. They now carry explicit values with the reasoning next to them:

  • 7 days for the two failure-only reports — read while the failure is fresh, or not at all.
  • 30 days for the recorded goldens — downloaded and committed by hand, so they have to survive the gap between dispatching the run and getting round to the commit.

Demo GIFs

verify-landing-versions.ps1 now asserts each of the twelve public surfaces references its own markleaf-tablet-<lang>.gif, and that the file exists. README.ko.md pointing at the English clip renders fine and would have shipped silently — the same class of gap this script already closes for version strings.

It lives here rather than in landing-check.yml on purpose: this script runs in the required build check, so it covers the six READMEs too, which the docs-only workflow does not.

docs/assets/README.md records the two remaining #258 items — which version each clip was recorded on, and why markleaf-preview-720/1280.webp are kept despite being referenced nowhere (their GitHub Pages URLs may be linked from outside the repository; ~93 KB total, deleting them breaks those links for no benefit).

Verification

bash -n on the script, YAML parse on the workflow, and the new check exercised both ways: 12/12 surfaces pass as the tree stands, and pointing README.ko.md at the English clip fails it with 기대 markleaf-tablet-ko.gif, 실제 -> markleaf-tablet-en.gif and exit 2.

The install-window fix itself can only be confirmed by the job running on this PR.

Still open on #247: the Release asset list has no CI gate, and gh release create arguments are still only exercised on a tag push.

🤖 Generated with Claude Code

jeiel85 and others added 2 commits July 24, 2026 17:40
…o GIFs (#247, #258)

## launch-smoke: not the flake it was filed as

The failure on the run that prompted this was not `Broken pipe`, which
is what #262 recorded. It was:

    Performing Streamed Install
    Success
    Starting: Intent { cmp=com.markleaf.notes/.MainActivity }
    Error type 3
    Error: Activity class {...MainActivity} does not exist.

`adb install` returns when the install session commits, which is before
the package manager has the app indexed. Starting the activity in that
window fails as though the build were broken. On a slow CI emulator the
window is seconds wide; locally it is nothing, which is why this reads as
random.

The script now waits for `pm path` to answer before starting the
activity, up to a minute, and fails with a distinct message if it never
does. That is a real wait on the real signal rather than a sleep. The
job stays `continue-on-error` -- one green run is not evidence -- but the
flake now has a diagnosis instead of a reputation (#247, #252, #262).

## Artifact retention

The three artifacts still on the 90-day default now carry explicit
values and the reasoning sits next to them: 7 days for the two
failure-only reports (Roborazzi diffs, lint HTML), which are read while
the failure is fresh or not at all; 30 for the recorded goldens, which
are downloaded and committed by hand and have to survive the gap between
dispatching the run and getting round to it.

## Demo GIFs

`verify-landing-versions.ps1` now asserts that each of the twelve public
surfaces references its own `markleaf-tablet-<lang>.gif` and that the
file exists. `README.ko.md` pointing at the English clip renders fine and
would have shipped silently -- the same gap this script already closes
for version strings. It runs in the required `build` check, so it covers
the READMEs too, which the docs-only landing-check workflow does not.

`docs/assets/README.md` records what the other two items asked for: the
version each clip was recorded on, and why `markleaf-preview-720/1280.webp`
are kept despite being referenced nowhere (their Pages URLs may be linked
from outside the repository; ~93 KB total).

Verified: bash -n on the script, YAML parse on the workflow, and the new
check exercised both ways -- 12/12 pass as the tree stands, and pointing
README.ko.md at the English clip fails it with the expected message.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@jeiel85
jeiel85 merged commit 256140a into main Jul 24, 2026
5 checks passed
@jeiel85
jeiel85 deleted the claude/247-258-gates branch July 24, 2026 09:34
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