Problem
commitTask in pulse.ts marks the task as stage: done after the @ops session finishes, regardless of whether a commit was actually made. If git commit reports 'nothing to commit', the task is still closed as 'approved and committed' — silently losing all developer work.
Root Cause
commitTask (pulse.ts ~line 604) polls until the ops session is no longer actively running, then unconditionally marks the task done. It never reads the ops session output to verify a commit hash was produced.
Acceptance Criteria