Same bug class as #291, one instance left behind deliberately when #294 was scoped (agreed on review: file separately).
What: mind.py (self_debug dispatch, ~line 3498) calls run_claude_session("self_debug", ..., timeout=600). brain._DEADLINE_S declares 900s for self_debug. Since #294, run_claude_session(timeout=None) defaults to the kind's declared deadline — the ad-hoc 600 is now the only remaining call-site override, and it silently wins, so a self-debug run that would have finished between 600s and 900s is killed and recorded as a failure.
Why it matters: #291 showed exactly this shape kills a feature invisibly for weeks — consolidation failed at precisely 180.1s every night because an ad-hoc override defeated the per-kind deadline. The single-deadline-source rule exists so brain._DEADLINE_S is authoritative.
Fix: delete the timeout=600 argument at the self_debug call site (let it default to None → 900), and optionally add a repo-wide test asserting no production caller of run_claude_session passes a literal timeout= (test overrides excepted), so the class is closed rather than the instance.
Refs: #291, #294 (5b62a3da).
Same bug class as #291, one instance left behind deliberately when #294 was scoped (agreed on review: file separately).
What:
mind.py(self_debugdispatch, ~line 3498) callsrun_claude_session("self_debug", ..., timeout=600).brain._DEADLINE_Sdeclares 900s forself_debug. Since #294,run_claude_session(timeout=None)defaults to the kind's declared deadline — the ad-hoc 600 is now the only remaining call-site override, and it silently wins, so a self-debug run that would have finished between 600s and 900s is killed and recorded as a failure.Why it matters: #291 showed exactly this shape kills a feature invisibly for weeks — consolidation failed at precisely 180.1s every night because an ad-hoc override defeated the per-kind deadline. The single-deadline-source rule exists so
brain._DEADLINE_Sis authoritative.Fix: delete the
timeout=600argument at the self_debug call site (let it default to None → 900), and optionally add a repo-wide test asserting no production caller ofrun_claude_sessionpasses a literaltimeout=(test overrides excepted), so the class is closed rather than the instance.Refs: #291, #294 (
5b62a3da).