Summary
Accepting an intake item and then declining it leaves the work item live in all lists, because Decline never restores the draft flag.
Where
internal/service/intake.go. Accept (via AcceptTx) sets the issue is_draft = false. Decline, Snooze, and MarkDuplicate only update the intake row's status (and snoozed_till), they never restore is_draft, and nothing guards transitions out of Accepted.
Repro
Accept an intake item, then decline it. The issue is still a non-draft work item visible everywhere, while its intake row says "declined". Decline's own comment ("it stays a draft, out of the active lists") is false once the item was accepted.
Suggested fix
On Decline (and probably Snooze back to pending) restore is_draft = true, or block transitioning an already-accepted item.
Summary
Accepting an intake item and then declining it leaves the work item live in all lists, because Decline never restores the draft flag.
Where
internal/service/intake.go.Accept(viaAcceptTx) sets the issueis_draft = false.Decline,Snooze, andMarkDuplicateonly update the intake row'sstatus(andsnoozed_till), they never restoreis_draft, and nothing guards transitions out ofAccepted.Repro
Accept an intake item, then decline it. The issue is still a non-draft work item visible everywhere, while its intake row says "declined". Decline's own comment ("it stays a draft, out of the active lists") is false once the item was accepted.
Suggested fix
On Decline (and probably Snooze back to pending) restore
is_draft = true, or block transitioning an already-accepted item.