From 2f14d12032d35c3a2f454dcc276ba114a2593b65 Mon Sep 17 00:00:00 2001 From: openhands Date: Fri, 13 Mar 2026 20:21:54 +0000 Subject: [PATCH] =?UTF-8?q?factory:=20learned=20=E2=80=94=20False=20Positi?= =?UTF-8?q?ve:=20Status=20Unchanged=20Alert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- factory/best-practices/dev-agent.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/factory/best-practices/dev-agent.md b/factory/best-practices/dev-agent.md index 03bd4aa..99bb9da 100644 --- a/factory/best-practices/dev-agent.md +++ b/factory/best-practices/dev-agent.md @@ -47,3 +47,6 @@ DO NOT try to find the specific PR that closed an issue. This is over-engineerin - The factory itself closes issues after merging, so closed = merged The only check needed: `issue.state == "closed"`. + +### False Positive: Status Unchanged Alert +The factory-poll alert 'status unchanged for Nmin' is a false positive for complex implementation tasks. The status is set to 'claude assessing + implementing' at the START of the `timeout 7200 claude -p ...` call and only updates after Claude finishes. Normal complex tasks (multi-file Solidity changes + forge test) take 45-90 minutes. To distinguish a false positive from a real stuck agent: check that the claude PID is alive (`ps -p `), consuming CPU (>0%), and has active threads (`pstree -p `). If the process is alive and using CPU, do NOT restart it — this wastes completed work.