• check_canary_task() creates a real project + task through the candidate's
    own HTTP API to verify the write path works, but only ever cleaned up its
    throwaway git directory -- the DB rows it created via the API were never
    removed. Every real health check permanently grew whatever DB the candidate
    was using by one dead project (pointing at an already-deleted temp dir) and
    one task stuck at 'queued' forever.
    
    Found by inspecting the real ~/.graphlemon/graphlemon.db, which had 5 such
    leaked 'deploy-canary' projects from earlier real health-check runs (now
    archived by hand). Fix: archive the created project in a finally block that
    covers every return path, including task-creation/verification failures
    where only the project (not the task) got created. Best-effort -- the
    archive call failing must not override the real check result.
    
    Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
    bboonnee authored
     
    Browse Code »