變化量序列的穩定偵測

smart_waits.wait_until_screen_stableactionability 的穩定檢查把穩定邏輯包在 time.sleep 輪詢迴圈內、作用於即時像素幀——你無法餵給它一段記錄好的 a11y 元素數或畫面 差異指標序列,也無法獨立於擷取去單元測試那個*決策*。settle_detector 把該決策抽離:它接收 一串*變化量*(churn,每個樣本變了多少——像素差、元素數差、digest 是否變的 0/1,皆可),並在 變化量連續 quiet_samples 次維持在 max_churn 以下時回報穩定。尖峰會重置 quiet run,因此 「穩定後又變動」也能處理。

純標準函式庫;確定性、可在注入序列上單元測試,不需擷取、不需時鐘。不匯入 PySide6

無頭 API

from je_auto_control import settle_point, is_settled, SettleTracker

churns = [5, 4, 0.5, 0.3, 0.2]          # 每幀變化量指標
settle_point(churns, quiet_samples=3, max_churn=1.0)   # -> 4
is_settled(churns, quiet_samples=3, max_churn=1.0)     # -> True

# 增量版,供即時迴圈(你每 tick 提供 churn)
tracker = SettleTracker(quiet_samples=3, max_churn=1.0)
state = tracker.update(current_churn)
if state.settled:
    observe_now()

settle_point 回傳序列首次穩定的索引(或 None);``is_settled`` 為布林。SettleTracker 為增量形式:update(churn) 回傳 SettleState``(``settled / quiet_run / churn); reset 清除 run(例如在再次動作後)。

執行器指令

AC_settle_point``(``churns / quiet_samples / max_churn{settled, index}) 以 MCP 工具 ``ac_settle_point``(唯讀)及 Script Builder 指令 Settle Point (churn series) (位於 Flow 分類下)形式提供。