Skip to content

Speed up Definition of Done and prepare 1.0.51 - #175

Merged
stozo04 merged 4 commits into
mainfrom
feature/faster-pre-pr-sweep
Sep 4, 2026
Merged

Speed up Definition of Done and prepare 1.0.51#175
stozo04 merged 4 commits into
mainfrom
feature/faster-pre-pr-sweep

Conversation

@stozo04

@stozo04 stozo04 commented Sep 4, 2026

Copy link
Copy Markdown
Owner

What changed

  • Run Markdown, link, harness, script, spelling, JSON, dictionary, and secret gates before Gradle so cheap failures surface first.
  • Merge debug/release assembly, Android Lint, and JVM tests into one cached, parallel Gradle invocation with --continue; lint and JUnit gates parse that run's fresh reports.
  • Make clean opt-in via -Clean, record every gate's durationSec, and record whether the build was clean in the receipt.
  • Pin the three Node text tools in package-lock.json and use the local binaries in both PowerShell and CI.
  • Make Pixel 8 the full default device sweep; keep Fold and API 34 as risk-triggered lanes, with API 34 mandatory for every release.
  • Add one lightweight orchestration contract check and fix JSON validation so valid npm lockfiles with an empty root-package key are accepted.
  • Bump the app to versionName 1.0.51 / versionCode 51 so /cut-release can resume from merged main.

Measured result

Run Command / scope Wall time Result
Current-main control (41a1e4d) pre-pr-sweep -SkipConnected -SkipInspectCode 279.5s 647 JVM tests green
Optimized warm same scope 25.4s 647 JVM tests green; 11.0x faster / 90.9% less time
Optimized clean -Clean -SkipConnected -SkipInspectCode 47.4s 647 JVM tests green; 5.9x faster / 83.0% less time
Broad full sweep (81eccc7) -Clean -SkipInspectCode, Pixel 8 attached 412.0s full sweep green

The broad full-sweep receipt attributes the 412.0s instead of hiding it: text/static 27.0s, clean merged build 17.3s, onboarding UI loops 182.6s, and connected tests 183.4s. The remaining runtime is real device coverage, not repeated JVM/lint builds.

Regression proof

  • Deliberate misspelling: gate 7 red in 3.7s; whole sweep red in 13.8s; no receipt written.
  • Deliberate failing JVM class: merged Gradle run remained red, gate 3 still reported lint, and gate 4 reported 648 tests / 1 failure because --continue ran both.
  • After deleting that class: next run reported exactly 647 tests / 0 failures, proving stale XML was removed.
  • Full clean-tree sweep receipt matched 81eccc77adf47dd001a5994c4b14d09d69f3b0e5, with cleanBuild=true, connected=true, and onboardingLoop=passed. Narrow follow-ups updated setup-python and restored the signing guide to main; the final release-metadata change then passed a clean rebuild, 647 JVM tests, and a final-head receipt at 77100e5. Those focused edits do not invalidate the earlier app/device evidence.

Release preparation

  • Source: versionCode = 51, versionName = "1.0.51".
  • Built APK: aapt dump badging reports versionCode='51' versionName='1.0.51'.
  • First cache-miss rebuild after the version change: 196.5s, green. After that populated the current-head cache, an independently verified gradlew clean followed by the sweep completed in 34.4s with 647/647 JVM tests green.

Final coverage

  • 647 JVM tests, 0 failures/errors
  • 123 connected Android tests, 0 failures/errors
  • Five autonomous Pixel 8 loops: lenses, onboarding, photo mode, record clip, reverse preview with a nonzero trim
  • 24 native libraries pass 16 KB alignment
  • 195 Markdown files linted; all 7 changed Markdown files link-checked
  • 0 hard Android Lint findings; 0 spelling, harness-drift, JSON, dictionary, tracked-file, or Gitleaks findings

Android Studio Inspect Code was unavailable in this unattended run and is explicitly recorded as skipped; the owner still runs it before merge.

Fixes #174


Note

Medium Risk
Touches CI/sweep orchestration, Gradle caching/configuration-cache settings, and release versioning; behavioral app changes are minimal but a mis-tuned sweep or cache could mask stale build artifacts without -Clean.

Overview
Speeds up the Definition of Done by reordering pre-pr-sweep.ps1 so cheap text/static gates run before Gradle, merging debug/release assembly, Android Lint, and JVM tests into one cached parallel Gradle invocation (with optional -Clean), and enriching build/sweep-receipt.json with per-gate durations and whether a clean build ran.

Pins Tier-3 Node tools (markdownlint-cli2, markdown-link-check, cspell) via package-lock.json and npm ci in CI and locally (root node_modules/ gitignored); CI bumps setup-python to v7 and drops npx --yes in favor of local binaries. Gradle enables configuration cache, build cache, and parallel execution in gradle.properties.

Narrows default emulator E2E guidance from a mandatory four-AVD sweep to Pixel 8 by default, with Pixel 10 Pro Fold and Pixel 8 API 34 only for posture/preview or FGS/WorkManager/release risks—updated across harness skills and OEM/testing docs.

Release prep: bumps to versionCode 51 / versionName 1.0.51.

Reviewed by Cursor Bugbot for commit 77100e5. Bugbot is set up for automated code reviews on this repo. Configure here.

@stozo04 stozo04 changed the title Speed up the Definition of Done sweep Speed up Definition of Done and prepare 1.0.51 Sep 4, 2026
@stozo04
stozo04 merged commit e50d32d into main Sep 4, 2026
3 checks passed
@stozo04
stozo04 deleted the feature/faster-pre-pr-sweep branch September 4, 2026 20:18
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.

Definition of Done takes ~2h per PR: 7.6x sweep speedup measured, plus 30 min of redundant emulator lanes

1 participant