1. CI Logging Enhancements:
- Added comprehensive diagnostics with process tree, network listeners, file descriptors
- Added timestamps at every stage (before/during/after pytest)
- Added trap EXIT to always show diagnostics
- Added immediate process checks after pytest finishes
- Added sub-shell execution with immediate cleanup
2. Fixed Subprocess PIPE Blocking:
- Changed Colab mode from PIPE to DEVNULL to prevent blocking
- PIPE without reading can cause parent process to wait indefinitely
3. Pytest Session Hooks:
- Added pytest_sessionstart to log initial state
- Added pytest_sessionfinish for aggressive cleanup before exit
- Shows all child processes and their status
This should reveal exactly where the hang is happening.