Skip to content

v0.27.2: Anti-Dummy Maestro Gate, APK Freshness Parity & Final Verdict Hardening

Choose a tag to compare

@rabee-elkholy rabee-elkholy released this 02 Sep 15:51
· 30 commits to main since this release

Anti-Dummy Maestro Gate, APK Freshness Parity & Final Verdict Hardening

  • Anti-Dummy Maestro Gate & Assertion Floor (_maestro_core.py, run_e2e_qa.py, _maestro_selftest.py):
    • Enforced a meaningful assertion and interaction floor (assertVisible, assertNotVisible, assertTrue, tapOn, inputText, doubleTapOn, longPressOn, openLink, scrollUntilVisible) in validate_maestro_flow().
    • Added pre-execution validation in run_e2e_qa.py, immediately rejecting hollow or dummy test flows containing only launchApp/scroll.
    • Added automated unit test in _maestro_selftest.py ensuring dummy flows fail linting and execution.
  • APK Freshness & Unpacking Signature Parity (_apk_freshness.py, run_e2e_qa.py, run_e2e_smoke.py):
    • Converted input APK paths to Path objects before checking is_absolute(), preventing string attribute errors.
    • Updated run_e2e_qa.py and run_e2e_smoke.py to check fresh_verdict.is_fresh directly rather than attempting tuple unpacking.
  • Final Verdict Status & Leaf Token Extraction (final_verdict.py, _final_verdict_selftest.py):
    • Accepted ("APPROVED", "PASS") as valid success states in review outcome evaluation.
    • Enhanced _pick_leaf to extract token from dictionary leaf objects containing cryptographic review evidence.
  • Application ID & Namespace Fallback Discovery (wizard/discovery.py):
    • Added AndroidManifest.xml package attribute fallback to ensure real package name is always discovered even when missing from Gradle DSL blocks.

Full Changelog: v0.27.1...v0.27.2