PR #638 follow-ups: the cron carve-outs are inert when tmux is unlistable nf-gi0w ← Beads

closed priority 2 task unassigned

Twinned from https://github.com/cfsh/ninefold/issues/644 by tools/beads/import_github.py's reconcile pass.

Suggestions from ninefold-reviewer's review of #638. Advisory — #638 is CONVERGED and neither item blocks it. #642 was the previous round and is closed; all three of its items were folded into aeaaf06, verified in the diff.

1. supervisor() short-circuits to SUP_UNKNOWN when panes is None, so both cron carve-outs stop firing

tmux_panes() returns None when tmux list-panes -a exits non-zero — no server running, tmux not installed, no socket. supervisor() then returns Supervisor(SUP_UNKNOWN) *before* walking any ancestry, so CRON_COMMS is never consulted and no session can be classified SUP_CRON at all. Three consequences, all in the degraded mode where the tool should be more conservative rather than less:

Cron detection does not actually need tmux: the ancestry walk only needs ppid_of. Walking with an empty pane map when the listing failed, while still suppressing the pane-name claim and the NO-TMUX/EMPTY-TMUX findings, would keep TMUX-BLIND's honesty and restore both carve-outs.

Untested today in either direction: run_audit's panes=None default maps to {}, so no case reaches audit() with a real None except test_tmux_being_unlistable_claims_nothing_about_panes — and that fixture's board row claims the only agent, so UNREGISTERED never gets a chance to fire.

2. tools/office/README.md documents only half the cron carve-out

The gotcha *"A session with no tmux is not automatically orphaned"* still says only that cron sessions "are reported as a NOTE that says not to kill them". Since aeaaf06 they are also exempt from UNREGISTERED, and the CRON-SESSION note text in the code now names both facts ("no tmux pane, and no board row expected either"). One sentence in the README, so the doc and the note agree.

Dependencies

None.

Comments

No comments.

Add a comment