New Features (2026-06-19) — Heal Analytics & Secret Scan

Two pure-standard-library audit/analysis tools: aggregate the self-healing log into drift metrics, and scan action JSON for hardcoded secrets. Full stack.

Self-heal analytics

from je_auto_control import analyze_heal_log, heal_stats

analyze_heal_log(limit=200)     # over the live self-heal log
heal_stats(events)               # over a supplied event list

Aggregates self-heal events into {total, healed, heal_rate, by_method, fallbacks, fallback_rate, avg_duration_ms, top_brittle} — surfacing locators that increasingly need the VLM fallback (decaying selectors) before they fail. Exposed as AC_heal_stats / ac_heal_stats.

Secret scan

from je_auto_control import scan_secrets

scan_secrets(action_json)   # [{path, kind, preview}, ...]

Walks a JSON-like structure and flags string values that look like secrets — by key name (password / token / api_key …), by value pattern (AWS / GitHub tokens, private-key blocks), or by high Shannon entropy — that should reference the vault (${secrets.NAME}). Values already referencing the vault are ignored; previews are masked. Exposed as AC_scan_secrets / ac_scan_secrets.