be62660be9
Step 5 of the board build. internal/tasks/stall.go counts three shapes — overdue, sitting longer than StallDays, waiting for confirmation — and states nothing about what any of them means. That is the line internal/memory/behavior.go already drew for habits, and the reason is the same: a 1.7B asked to judge will agree fluently and launder a guess into a decision. A test asserts the wording carries no assessment. Sitting is measured from created_ts, the only clock a live row carries: the store stamps resolved_ts and nothing else. So "no state change in eleven days" is exactly "captured eleven days ago and still live", which is narrower than the plan's wording and is the claim the data supports. A candidate is never counted as overdue, because its due date is Maven's reading of a mail rather than a deadline he set. Not a nag. No tick rule reads the counts; they go on /tasks and into the list reply when he asks, and tickLoop.dayPlan still does not read tasks at all. The empty case renders as nothing: "ничего не залежалось" appended to every list read is a nag with a friendly face. Three say entries, so the page and the spoken list cannot word it differently. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SoL7EBdYC5Mhz3DJd49GJy