Skip to content

Releases: rabee-elkholy/android-harness-kit

v0.10.8 - Automatic assume-unchanged for Tracked Git Hooks

Choose a tag to compare

@rabee-elkholy rabee-elkholy released this 25 Aug 15:10

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

Choose a tag to compare

@rabee-elkholy rabee-elkholy released this 25 Aug 14:53

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

Choose a tag to compare

@rabee-elkholy rabee-elkholy released this 25 Aug 14:29

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

Choose a tag to compare

@rabee-elkholy rabee-elkholy released this 25 Aug 14:21

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

Choose a tag to compare

@rabee-elkholy rabee-elkholy released this 25 Aug 14:01

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

Choose a tag to compare

@rabee-elkholy rabee-elkholy released this 25 Aug 13:34

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:

  1. Grants-example probe (_hook_selftest.py:528) resolved templates/gemini-runtime/config.grants.example.json from the app repo root -> FileNotFoundError.
  2. harness_cli.py probes (lines 593/604): an explain subprocess plus import harness_cli -> ModuleNotFoundError, since the CLI ships at kit root and is never copied.
  3. Fixture builder import: from make_android_fixture import ... resolved scripts_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_LAYOUT detection; all kit-only probes now degrade to explicit OK (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_SHA and ledger git_sha now 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.py Total 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

Choose a tag to compare

@rabee-elkholy rabee-elkholy released this 25 Aug 12:52

Android Agent Harness v0.10.2

Maintenance and documentation-consistency release. No breaking changes.

Highlights

  • Packaging version sync: pyproject.toml had drifted to 0.6.0 while the engine was at 0.10.1. Package metadata now matches agents/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.md and docs/update-prompt.md no longer instruct pulling main. Manual kit provisioning now fetches an exact release tag, checks it out detached, and verifies agents/VERSION before copying anything — matching what android-harness init/update already 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.md redirects to the canonical rollback prompt.
  • Dead-code removal (safe): unused imports (first_physical_adb_serial consumers, 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 failures
  • preflight_check.py: PASSED
  • harness_cli.py doctor --json: failures: 0

v0.8.0: PM Abstraction Layer & Multi-Provider Adapters (Zoho, GitHub, Jira, Linear)

Choose a tag to compare

@rabee-elkholy rabee-elkholy released this 25 Aug 09:00

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 official gh CLI (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_provider with options zoho_sprints / github_projects / jira_mcp / linear_mcp / none.
  • Doctor Upgrades (harness_doctor.py): Dimension 11 renamed to Project Tracker & PM Security, auditing PM_PROVIDER configuration 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

Choose a tag to compare

@rabee-elkholy rabee-elkholy released this 25 Aug 09:00

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/KTS productFlavors blocks 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 KMP androidMain). fast_kt_lint --all and perf_guard --all scan all modules. New architecture gate FEATURE_CROSS_IMPORT flags 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

Choose a tag to compare

@rabee-elkholy rabee-elkholy released this 25 Aug 09:00

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): Standalone android-harness command-line executable (pipx install git+https://github.com/rabee-elkholy/android-harness-kit.git, or python 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.