v0.27.2: Anti-Dummy Maestro Gate, APK Freshness Parity & Final Verdict Hardening
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) invalidate_maestro_flow(). - Added pre-execution validation in
run_e2e_qa.py, immediately rejecting hollow or dummy test flows containing onlylaunchApp/scroll. - Added automated unit test in
_maestro_selftest.pyensuring dummy flows fail linting and execution.
- Enforced a meaningful assertion and interaction floor (
- APK Freshness & Unpacking Signature Parity (
_apk_freshness.py,run_e2e_qa.py,run_e2e_smoke.py):- Converted input APK paths to
Pathobjects before checkingis_absolute(), preventing string attribute errors. - Updated
run_e2e_qa.pyandrun_e2e_smoke.pyto checkfresh_verdict.is_freshdirectly rather than attempting tuple unpacking.
- Converted input APK paths to
- 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_leafto extracttokenfrom dictionary leaf objects containing cryptographic review evidence.
- Accepted
- Application ID & Namespace Fallback Discovery (
wizard/discovery.py):- Added
AndroidManifest.xmlpackage attribute fallback to ensure real package name is always discovered even when missing from Gradle DSL blocks.
- Added
Full Changelog: v0.27.1...v0.27.2