fix(executor): timeout _capture_human_correction 120s → 30s

Friction UX remontée par Dom sur replay live (replay_sess_63a1313b) :
latence excessive 2-3 minutes après un échec d'action avant que Léa
ne reprenne la main. 120s = trop long pour un humain en supervision.

10s d'inactivité reste le critère prioritaire (déjà en place), donc :
- humain actif : la correction est captée et le replay reprend en ~1s
- humain absent : on libère après 30s au lieu de 120s

5 sites d'appel + signature de fonction (default param) alignés.

Tag rollback : rollback/pre-P0.8-2026-05-24_1912
Référence : message 2026-05-24_1910_claude-to-codex_p07-memory-sanity-fix-human-supervised-bug-frictions-ux.md
This commit is contained in:
Dom
2026-05-24 19:14:12 +02:00
parent 5ed1810ef3
commit 9a029a221d

View File

@@ -1349,7 +1349,7 @@ class ActionExecutorV1:
# (ex: Ctrl+S a sauvé sans dialogue), soit l'app
# est dans un état différent. L'humain montre.
human_actions = self._capture_human_correction(
timeout_s=120,
timeout_s=30,
)
if human_actions:
result["success"] = True
@@ -1612,7 +1612,7 @@ class ActionExecutorV1:
pass
human_actions = self._capture_human_correction(
timeout_s=120,
timeout_s=30,
)
if human_actions:
result["success"] = True
@@ -1671,7 +1671,7 @@ class ActionExecutorV1:
pass
human_actions = self._capture_human_correction(
timeout_s=120,
timeout_s=30,
)
if human_actions:
# L'humain a montré un mini-workflow
@@ -1967,7 +1967,7 @@ class ActionExecutorV1:
)
except Exception:
pass
human_actions = self._capture_human_correction(timeout_s=120)
human_actions = self._capture_human_correction(timeout_s=30)
if human_actions:
result["success"] = True
result["resolution_method"] = "human_supervised"
@@ -2060,7 +2060,7 @@ class ActionExecutorV1:
pass
human_actions = self._capture_human_correction(
timeout_s=120,
timeout_s=30,
)
if human_actions:
result["success"] = True
@@ -3462,7 +3462,7 @@ Example: x_pct=0.50, y_pct=0.30"""
# Hotkey pour signaler la fin de la correction humaine
_LEARNING_DONE_HOTKEY = {Key.ctrl_l, Key.shift, KeyCode.from_char("l")}
def _capture_human_correction(self, timeout_s: float = 120.0) -> list[dict]:
def _capture_human_correction(self, timeout_s: float = 30.0) -> list[dict]:
"""Capturer un mini-workflow de correction humaine.
Léa est perdue — elle passe en mode capture et enregistre