Summary
confirmBatch displays DIRTY and UNPUSHED columns from protocol.SessionInfo, but these fields are populated by the daemon's background refresh loop which explicitly skips non-running sessions.
Impact
This is especially risky for gr delete --stopped: stopped sessions can have dirty files or unpushed commits, but the batch confirmation table shows DIRTY no / UNPUSHED -. The user is misled about whether it's safe to delete.
Single-session confirmDelete does a live git check; batch delete does not.
Suggested Fix
Recompute dirty/unpushed state for matched sessions before displaying the confirmation table, or reuse confirmDelete-style live checks. Surface git check failures prominently.
Found during review tribunal audit.
Summary
confirmBatchdisplaysDIRTYandUNPUSHEDcolumns fromprotocol.SessionInfo, but these fields are populated by the daemon's background refresh loop which explicitly skips non-running sessions.Impact
This is especially risky for
gr delete --stopped: stopped sessions can have dirty files or unpushed commits, but the batch confirmation table showsDIRTY no/UNPUSHED -. The user is misled about whether it's safe to delete.Single-session
confirmDeletedoes a live git check; batch delete does not.Suggested Fix
Recompute dirty/unpushed state for matched sessions before displaying the confirmation table, or reuse
confirmDelete-style live checks. Surface git check failures prominently.Found during review tribunal audit.