Repository navigation
Fix GUI ownership and cleanup through runtime wrappers - #48
Conversation
Track verified members of each launched session/process group for window selection and cleanup; defer TERM across registration and registry drain. Preserve the existing 16 assertions, three faults and pixel thresholds. Validation: process12/12; actual GUIv2 8/8 with94/94glyphs; direct16/16+3/3 and counting-proxy16/16+3/3; pinnedv0.43 normalCI8/8. Original wrapper failure reproduced. Occluded first GUI calibration explicitly excluded. Refs #47; complete consumer-wave integration acceptance remains pending.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 74f9fcaa53
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if proc is not None: | ||
| stop_app(proc) | ||
| try: | ||
| stop_apps() |
There was a problem hiding this comment.
Block SIGTERM before entering the final cleanup
When SIGTERM arrives after normal execution has entered this finally block but before stop_apps() executes its first pthread_sigmask, interrupted() raises immediately and changes SIGTERM to SIG_IGN. Depending on the exact bytecode, that exception either skips this call entirely or is caught by the nested except, which only records the error and never retries cleanup. Because the applications were launched with start_new_session=True, the active GUI process can then outlive the oracle and ignore the supervisor's subsequent TERM; block SIGTERM before entering this cleanup region or ensure the exception path still drains OWNED_APPS.
Useful? React with 👍 / 👎.
The mouse oracle misses the runtime window when
EIGENSCRIPTis a synchronous counting wrapper: it searches the wrapper PID and eventually reportsapp exited rc0. Track live members of a dedicated process group and session, retaining visible exact-title and PID matching. Cleanup covers the owned family even after its launcher exits, and defers SIGTERM through registration and cleanup.Validation against the frozen one-file change:
The initial external GUI calibration had an occluded screenshot and is excluded from acceptance; the corrected calibration verifies on-screen, nonoverlapping geometry and exact pixels. Cleanup is bounded under the tested conditions; direct SIGKILL cannot run Python cleanup.
Refs #47. The complete 16-consumer integration wave remains pending and the issue stays open until that acceptance finishes.