ci(folio): pin the recalibrated seeds and drop android to a health gate

web 3 and ios 7 convict 3 runs out of 3 with an exactly 2x witness.
android convicts 2 in 5 because the same seed does not walk the same
trajectory there, so it proves the app runs instead.
This commit is contained in:
pj committed 2026-08-14 19:03:51 +05:30
1 parent 21ae7fde83
commit a9334b2927
2 files changed
+33 -7

No files matched your search

+24 -2
View File
@@ -5,8 +5,10 @@
#
# SEED=3 MAX_STEPS=240 .github/scripts/folio-run.sh android
#
# Every platform expects exit 2: folio's double-submit bug is still there, and a
# run that no longer finds it is a regression in the fuzzer, not a pass.
# web and ios expect exit 2: folio's double-submit bug is still there, and a run
# that no longer finds it is a regression in the fuzzer, not a pass. android is a
# health gate instead, because a run there is not a function of its seed; see
# docs/development/ci.md.
set -uo pipefail
platform="${1:?usage: folio-run.sh android|ios|web}"
@@ -96,6 +98,26 @@ violated=$(grep -ho '"violations":\[[^]]*\]' "$run_dir/trace.jsonl" 2>/dev/null
[ -n "$violated" ] && echo "- $violated"
} >> "$summary"
if [ "$platform" = "android" ]; then
# A health gate, not a conviction gate. The android hierarchy dump can show
# two screens mid-transition, and such a step applies no action, so the same
# seed walks a different trajectory each run and the bug turns up in about two
# runs in five. Demanding a conviction would cry wolf more often than it would
# catch the regression it exists to catch. Reaching the transaction screen is
# what this leg proves: the app built, installed, launched and drove.
case "$code" in
0) ;;
2) echo "folio/android: found the submit bug in $steps steps (a bonus, not required)" ;;
*) echo "folio/android: the harness failed with exit $code" >&2; exit "$code" ;;
esac
if ! grep -q '"AddTransactionScreen"' "$run_dir/trace.jsonl"; then
echo "folio/android: the run never reached AddTransactionScreen, so it never got past login" >&2
exit 1
fi
echo "folio/android: healthy run over $steps steps, reached the transaction screen"
exit 0
fi
case "$code" in
2) echo "folio/$platform: found the submit bug in $steps steps"; exit 0 ;;
0) echo "folio/$platform: the run finished clean; the double-submit bug was NOT found in $steps steps (seed $seed)" >&2; exit 1 ;;