Problem
base_logs.open_log() calls the configured PAGER or EDITOR with subprocess.call() and no timeout. That blocking behavior is intentional for an interactive pager, but the file currently has no comment explaining why this subprocess call is exempt from the Python timeout convention.
Evidence:
cli/python/base_logs/engine.py:326 returns subprocess.call([*args, str(path)]).
- Other production Python subprocess calls now either pass a timeout or wrap command execution through timeout-aware helpers.
- The logs command would be broken by a normal timeout because
less, editors, and similar tools are expected to run until the user exits.
Desired outcome
The intentional no-timeout pager call should be documented in code so future subprocess sweeps distinguish it from accidental timeout omissions.
Scope
- Add a concise comment immediately before the call explaining that this is an interactive pager/editor path and blocks until the user exits.
- Keep the existing behavior unchanged.
- Preserve current tests and command behavior.
Non-goals
- Adding a timeout to the pager/editor path.
- Reworking log viewing behavior.
Acceptance criteria
open_log() documents why the subprocess call intentionally has no timeout.
- The comment is specific enough to explain the interactive blocking behavior.
- Existing
base logs tests continue to pass.
Demo impact
None.
Problem
base_logs.open_log()calls the configuredPAGERorEDITORwithsubprocess.call()and no timeout. That blocking behavior is intentional for an interactive pager, but the file currently has no comment explaining why this subprocess call is exempt from the Python timeout convention.Evidence:
cli/python/base_logs/engine.py:326returnssubprocess.call([*args, str(path)]).less, editors, and similar tools are expected to run until the user exits.Desired outcome
The intentional no-timeout pager call should be documented in code so future subprocess sweeps distinguish it from accidental timeout omissions.
Scope
Non-goals
Acceptance criteria
open_log()documents why the subprocess call intentionally has no timeout.base logstests continue to pass.Demo impact
None.