Releases: rabee-elkholy/android-harness-kit
Releases · rabee-elkholy/android-harness-kit
Release list
v0.10.8 - Automatic assume-unchanged for Tracked Git Hooks
Git Working Tree Cleanliness: Automatic --assume-unchanged for Tracked Hooks
- Tracked Hook Isolation (install_tool_adapters.py, setup_wizard.py): When the pre-commit quality gate is installed or updated on repositories that previously had tracked hook files, the kit now automatically executes \git update-index --assume-unchanged .githooks/pre-commit.
- Zero Dirty Changes: Guarantees that local hook overwrites never show up as uncommitted changes (\M .githooks/pre-commit) in developer Git status or IDE change lists, even if .githooks/\ was committed to the repository history by team members in the past.
v0.10.7 - Update Determinism, Strict Execution Order & Modal Hardening
Update & Setup Determinism: Strict Execution Order & Modal Hardening
- Strict Porting Sequence (docs/update-prompt.md, docs/setup-prompt.md): Enforced a strict execution order (copy engine -> populate _product.py and tool adapters -> run selftest/doctor). Prevents premature hook selftest failures caused by unported placeholder constants.
- Update Modal Elimination (docs/setup-prompt.md, docs/update-prompt.md): Scoped domain references approval modals (ask_question) strictly to first-time installations, completely eliminating redundant modal interruptions during update workflows where references are already preserved from backup.
- Single Diagnostic Execution: Hardened instructions to prevent duplicate background task spawning during diagnostics.
- Local Hooks Privacy Note: Clarified that .githooks/ is automatically excluded in .git/info/exclude to preserve clean shared team working trees.
v0.10.6 - Automatic Local Git Exclusion for Pre-Commit Gates
Team Cleanliness: Automatic local .git/info/exclude for .githooks/
- Automatic Local Git Exclusion: Installing or running setup with the staged quality gate now automatically registers .githooks/\ into the developer's local .git/info/exclude.
- Zero Team Friction: Pre-commit hooks remain active and protective locally on the individual developer's machine without polluting the shared git working tree, forcing unwanted team commits, or modifying shared .gitignore\ files.
v0.10.5 — Established & Modern Codebase Reviewer Enhancements
Established & Modern Codebase Reviewer Enhancement (Five-Leaf Review Gate)
- Established & Legacy Codebase Adaptive Reviewers: Upgraded the Five-Leaf Review Gate prompts (bug-reviewer-agent, perf-anr-guardian-agent, convention-reviewer-agent, security-reviewer-agent, regression-impact-reviewer-agent) to seamlessly handle both established/legacy codebases (XML Views, ViewBinding, MVVM, Java platform types, multi-module) and modern architectures (Jetpack Compose, MVI, KMP).
- Sharpened Quality Invariants: Added explicit checks for Java/Kotlin nullability boundaries, viewLifecycleOwner in Fragment LiveData observation, atomic StateFlow.update, onDestroyView ViewBinding nulling, unhandled Coroutine crashes, deep links/intent exports, and multi-module core contract blast radius.
- Architectural Rules Alignment: Aligned shift-left quality invariants in harness-rules.md to explicitly respect the target project's established architecture without forcing unadopted patterns.
v0.10.4 — Neutralize kit-shipped placeholders in installed-mode selftest
Fix: Neutralize Kit-Shipped Placeholders in Installed-Mode Selftest
- Replaced com.example needles across kit-shipped files (harness_doctor fallback defaults, new_feature_scaffold template imports, convention-reviewer-agent prompt illustration, and harness-rules example command) with neutral sentinels or generic tokens.
- Installed needle scan in _hook_selftest.py now runs cleanly on fresh installs without false failures while continuing to catch unported placeholders.
v0.10.3 — Fix: selftest crashes in installed checkouts
Android Agent Harness v0.10.3
Bug-fix release: the self-test suite no longer crashes when run from an installed app checkout. Reported by a user performing a fresh install of v0.10.2 following docs/install-prompt.md exactly.
The bug
python .agents/scripts/_hook_selftest.py crashed in any installed checkout (only agents/ is copied per the documented install flow) because three probe groups assumed the kit-root layout:
- Grants-example probe (
_hook_selftest.py:528) resolvedtemplates/gemini-runtime/config.grants.example.jsonfrom the app repo root ->FileNotFoundError. harness_cli.pyprobes (lines 593/604): anexplainsubprocess plusimport harness_cli->ModuleNotFoundError, since the CLI ships at kit root and is never copied.- Fixture builder import:
from make_android_fixture import ...resolvedscripts_dev/, also kit-only.
Ironically, the same file already contained a graceful skip for one CLI test ("OK (skipped - installed checkout)"); the newer v0.9.x/v0.10.x groups did not follow that pattern.
Fixes
- New
KIT_LAYOUTdetection; all kit-only probes now degrade to explicitOK (skipped - installed checkout)lines instead of crashing. - When
scripts_dev/is absent, minimal equivalent fixture builders are defined inline, so the flavor-discovery, multi-module, wizard pre-fill, and doctor-remediation engine tests keep running everywhere rather than being skipped. review_package.py:GIT_SHAand ledgergit_shanow accept only a valid 40-hex commit hash (empty outside a git repository), keeping package headers and ledger comparisons sane in non-git contexts.- Changelog consolidation (folded patch 0.5.4) to hold the milestone cap.
Verification
- Kit checkout:
_hook_selftest.pyTotal test failures: 0; security suite 0; preflight PASSED; doctor failures: 0. - Installed-checkout simulation (copying only
agents/into a clean directory): exit code 0, zero tracebacks, ten explicit skip lines,Total test failures: 0.
v0.10.2 — Maintenance & Documentation Consistency
Android Agent Harness v0.10.2
Maintenance and documentation-consistency release. No breaking changes.
Highlights
- Packaging version sync:
pyproject.tomlhad drifted to0.6.0while the engine was at0.10.1. Package metadata now matchesagents/VERSION, enforced by a new selftest gate (packaging metadata version alignment) and by release CI, so the drift cannot recur. - Pin-to-tag install/update prompts:
docs/install-prompt.mdanddocs/update-prompt.mdno longer instruct pullingmain. Manual kit provisioning now fetches an exact release tag, checks it out detached, and verifiesagents/VERSIONbefore copying anything — matching whatandroid-harness init/updatealready enforce. - Current wizard documentation: setup/install prompts, README configuration reference, and architecture guide now document the real question set (I.17 chat language, I.18 Zoho language, I.19 conditional flavor, I.20 project tracker, I.21 pre-commit git gate) instead of the legacy list.
- GitHub polish: issue forms cover all supported AI tools with a current version example and provider-neutral PM category; PR template includes the adversarial security suite and doctor gates; README claims about enforcement and health are accurate;
docs/restore.mdredirects to the canonical rollback prompt. - Dead-code removal (safe): unused imports (
first_physical_adb_serialconsumers,FORBIDDEN_TOOLS/poll counters in the safety hook, etc.) and stale runtime grants for the intentionally disabled feature scaffold. Public helper contracts were intentionally preserved for external consumers.
Verification
_hook_selftest.py: Total test failures: 0_security_selftest.py: 0 security selftest failurespreflight_check.py: PASSEDharness_cli.py doctor --json: failures: 0
v0.8.0: PM Abstraction Layer & Multi-Provider Adapters (Zoho, GitHub, Jira, Linear)
P1 Final Item: PM Abstraction Layer & Multi-Provider Adapters (Zoho, GitHub, Jira, Linear)
- Provider-Agnostic Policy Engine (
agents/scripts/pm_policy.py): New deterministic, offline registry generalizing rules section 5 to four trackers:zoho_sprints,github_projects,jira,linear. Per-provider status maps from kit canonical states (in_progress,ready_to_retest), denied Done-class labels, mutation trigger phrases (update zoho,update <provider>), and bilingual handoff validation (validate_handoff). - GitHub Projects Adapter (
agents/scripts/pm_github.py): Subprocess wrapper around the officialghCLI (issue list/view/comment/edit,gh project item-edit). Fail-closed, timeout-bounded, and credential-isolated. - External-MCP Trackers as Configuration (
agents/pm/mcp_registration.jira.md,.linear.md): Copy-paste registration playbooks for upstream Jira and Linear MCP servers. - Setup Wizard I.20 "Which project tracker?": Configures
pm_providerwith optionszoho_sprints/github_projects/jira_mcp/linear_mcp/none. - Doctor Upgrades (
harness_doctor.py): Dimension 11 renamed to Project Tracker & PM Security, auditingPM_PROVIDERconfiguration and credential isolation across all trackers. - Core Script Inventory: Expanded from 29 to 31 audited scripts (
pm_policy.py,pm_github.py).
v0.7.0: Build Flavors Lifecycle & Multi-Module Architectural Governance
P1 Domain Depth: Build Flavors (Variants) & Multi-Module Governance
- Build Flavor Support (
_variants.py,run_gradle_task.py --flavor,run_device.py --flavor, setup I.19): Full product-flavor lifecycle. The wizard discovers flavors from Groovy/KTSproductFlavorsblocks and asks which variant is the daily test target; runners resolve assemble tasks (:app:assemble{Flavor}Debug) and flavor APK paths automatically. - Multi-Module Governance (
_modules.py,fast_kt_lint.py,perf_guard.py): Source-root discovery across every module (*/src/main/{java,kotlin}including KMPandroidMain).fast_kt_lint --allandperf_guard --allscan all modules. New architecture gateFEATURE_CROSS_IMPORTflags feature-to-feature cross imports at lint time. - Doctor Upgrades (
harness_doctor.py): Dimension 2 reports discovered module source roots; install-consistency cross-check validates daily-flavor parity. - Core Script Inventory: Expanded from 27 to 29 audited scripts (
_variants.py,_modules.py).
v0.6.0: Standalone CLI Dispatcher, 11 Slash Command Packs & Pre-Commit Quality Gate
Standalone CLI Dispatcher, 11 Native Slash Command Packs, Pre-Commit Quality Gate & Claude Code PreToolUse Bridge
- Zero-Dependency CLI Dispatcher (
harness_cli.py,pyproject.toml): Standaloneandroid-harnesscommand-line executable (pipx install git+https://github.com/rabee-elkholy/android-harness-kit.git, orpython harness_cli.py). Features 6 core subcommands (init,update,doctor,preflight,selftest,version), automatic engine discovery, and remote fallback kit provisioning. - 11 Native Slash Command Packs (
agents/command-packs/,install_tool_adapters.py): Standardized, tool-native prompt templates automatically installed into.claude/commands/(Claude Code/deliver,/debug,/doctor, etc.),.github/prompts/*.prompt.md(GitHub Copilot), and.codex/prompts/(OpenAI Codex) with automated managed-marker pruning. - Deterministic Staged Pre-Commit Quality Gate (
agents/scripts/pre_commit_gate.py,--git-gate): Ultra-fast (<5s), stdlib-only Git hook scanning staged changes for bilingual string parity, Room entity migrations, and fast Kotlin lint issues prior to commit. - Claude Code PreToolUse Safety Bridge (
agents/scripts/cc_pre_tool_safety.py,--cc-hooks): Runtime safety hook integration for Claude Code sessions via.claude/settings.json, enforcing zero-tolerance Git mutations and ADB restrictions outside Antigravity. - Core Script Inventory Expansion (
harness_doctor.py,_hook_selftest.py): Audited core script manifest expanded from 25 to 27 scripts in Dimension 2.