{"session": "28585272-a6c8-4e89-9ca9-459772bc64e0", "env": "main-hedy-lockwell", "command": "journal work end 24 --how \"own-command hole closed\" 2>&1 | tail -1; journal helper report \"Alfred: the 3766 hole is closed, branch update-steps, new tip fcb10a684 (up to date with origin/main). waiting.running() now skips a run whose command is a journal upgrade (journal, journal.py or install.py ... upgrade) and any live agent whose session process is an ancestor of the upgrade's own process (walked from os.getppid() with ps), so an upgrade run from an agent's shell neither waits on itself nor marks itself ended; the 60 s limit is unchanged. Tests written, not run: features/auto_update/test.py, two cases after the existing wait: a 'python3 src/journal.py --root .journal upgrade --yes' run returns at once with nothing ended, and a run of an agent whose pid is an ancestor of the upgrade returns at once too (the ancestor lookup is stubbed there). Resuming 3759.\" 2>&1 | tail -1", "parts": ["journal work end 24 --how \"own-command hole closed\" 2>&1 | tail -1", "journal helper report \"Alfred: the 3766 hole is closed, branch update-steps, new tip fcb10a684 (up to date with origin/main). waiting.running() now skips a run whose command is a journal upgrade (journal, journal.py or install.py ... upgrade) and any live agent whose session process is an ancestor of the upgrade's own process (walked from os.getppid() with ps), so an upgrade run from an agent's shell neither waits on itself nor marks itself ended; the 60 s limit is unchanged. Tests written, not run: features/auto_update/test.py, two cases after the existing wait: a 'python3 src/journal.py --root .journal upgrade --yes' run returns at once with nothing ended, and a run of an agent whose pid is an ancestor of the upgrade returns at once too (the ancestor lookup is stubbed there). Resuming 3759.\" 2>&1 | tail -1"]}