Skip to content

Hardening candidates: v2.29.1 #252

Description

@jeiel85

Candidates surfaced while cutting v2.29.1 — the first release to run the pre-tag export gate from #248. Filed at the tag, not worked on in it. Nothing here blocks the release.

  • The GitLab mirror has now missed six eight consecutive releases, and the cause is always the same. The v2.29.1 tag pipeline failed with ci_quota_exceeded on all four jobs (verify_release_docs, verify_android, package_signed_release, publish_gitlab_release). GitLab's newest Release is still v2.27.2 from 2026-07-21 — v2.27.2 was the last one that got through. Hardening candidates: CI artifact retention and release assets #247 records that a missing mirror run is undetectable; this is the third confirmed instance and it is no longer an occasional gap but a standing outage. Either the quota gets addressed, or D064's description of GitLab as a secondary permanent copy should be rewritten to match reality. Affects: the assumption that AAB and mapping have an off-machine permanent home.
    • Re-measured 2026-07-24 against the GitLab API: newest Release is still v2.27.2 (2026-07-21). The gap is now eight releases — v2.28.0, v2.28.1, v2.28.2, v2.28.3, v2.29.0, v2.29.1, v2.30.0, v2.31.0. Two more have shipped since this was filed and neither reached the mirror.
    • Worth separating two things that read as one: refs are fine, Releases are not. mirror-push keeps main and the v* tags in sync, and the daily mirror-check workflow has been green — so the commits and tags for all eight are on GitLab. What is missing is the Release object and its attached AAB/mapping, which only the GitLab CI pipeline creates, and that pipeline is what the quota stops.
    • So the decision is narrower than "fix the mirror": D064 leans on GitLab for the artifacts, and those have had zero coverage since v2.27.2 while the git history has had full coverage the whole time.
  • Building a release from an isolated worktree needs a manual secret copy that is documented nowhere. release-signing.properties and .secrets/markleaf-release.p12 are gitignored, so a git worktree-based release checkout cannot run bundleRelease until both are copied in by hand. This release did exactly that and it worked, but docs/RELEASE.md describes the signing setup as though the repo root is always the build location. Worth writing down, since the worktree flow is now the norm for concurrent sessions. Affects: anyone following RELEASE.md from a worktree hitting an unexplained signing failure.
  • Store-note length is only checkable after the notes are written. The first draft came in at 545 characters for fr-FR and 517 for es-ES against the 500-char Play limit, and de-DE landed at 484 — all had to be rewritten. Romance-language translations run consistently longer than the English source, so an English note that fits is not evidence the set fits. A rough target for the English draft (~380 chars, which is what this release settled at) would make the first pass land more often. Affects: rework during release prep, and the risk of trimming meaning out under time pressure.
  • launch-smoke passed cleanly twice in a row and may no longer need to be non-required. It passed in 8m11s on release: v2.29.1 #250 and again on the v2.29.1 tag run. Hardening candidates: CI artifact retention and release assets #247 asks whether the flake is worth diagnosing; two consecutive clean runs are weak evidence but they are the first data points in a while. Worth watching for a few more releases before deciding, rather than leaving the job permanently excused. Affects: whether the emulator smoke path actually gates anything.
    • More data (measured 2026-07-24, last 6 android-build runs): 4 passed, 1 failed, 1 did not run. The trend this item spotted holds — launch-smoke is no longer the flaky one.
    • The complication is that instrumented-tests arrived in test: make the instrumented suite run, and run it in CI (#235, #239) #272 and failed 3 of those 6 runs, and it is continue-on-error for the same reason. Promoting launch-smoke to required is now a decision about which emulator job earns the gate, not whether the emulator path gets one at all.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions