變化量序列的穩定偵測
smart_waits.wait_until_screen_stable 與 actionability 的穩定檢查把穩定邏輯包在
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 分類下)形式提供。