Conversation
Hardcoding proc2 broke distros that only ship libprocps, and skipped include dirs for getpid.c. Pass LIBPROC2 or LIBPROCPS through PROC_LIBS instead. Co-authored-by: Cursor <cursoragent@cursor.com>
Do not treat a failed Moza open as a valid fd, stop spinning if PulseAudio never becomes ready, and keep haptic slip from collapsing to abs() of a float. Co-authored-by: Cursor <cursoragent@cursor.com>
simulatorapi already exports the procps library publicly, so repeating it on monocoque, the CLI, and the GUI was redundant. Co-authored-by: Cursor <cursoragent@cursor.com>
Replace the remaining magic velocity limits and payload loop bound so the fail-closed device paths stay readable. Co-authored-by: Cursor <cursoragent@cursor.com>
Monocoque locates and launches the required daemon itself. The only human step left is installing simd if the binary is missing. Co-authored-by: Cursor <cursoragent@cursor.com>
…which corrupts curses. Co-authored-by: Cursor <cursoragent@cursor.com>
Start and Restart only launch monocoque; simd comes up with it. Missing simd is reported as an install problem instead of a disabled menu item. Co-authored-by: Cursor <cursoragent@cursor.com>
Tell users to run start-monocoque; enable simd.service at install time when possible. Steam instructions keep the bridge EXE only. Co-authored-by: Cursor <cursoragent@cursor.com>
Keep __pycache__ and .pyc files out of the tree when running monocoque-manager locally. Co-authored-by: Cursor <cursoragent@cursor.com>
CLI and GUI both go through require_simd(), and LD_LIBRARY_PATH / log path literals are named constants. Co-authored-by: Cursor <cursoragent@cursor.com>
Menu keys live in one place, and stale PID cleanup no longer nests process checks four layers deep. Co-authored-by: Cursor <cursoragent@cursor.com>
ctest covers missing vs started simd. Give PR builds cmake/pkg-config and a 30s test timeout so a hung spawn cannot stall the job. Co-authored-by: Cursor <cursoragent@cursor.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Telemetry is two processes: simd publishes
SimDatainto shared memory, monocoque consumes it in play mode. The product treated that split as a human launch order (simd, then game, then monocoque). If simd was not already running, play mode looped against empty memory. The manager TUI also wrote status withprint(), which corrupts curses.This PR includes #56 (fail-closed init). Merge #56 first; this one is the rest of the stack.
How it is solved
Ownership of the telemetry stack moves into play-mode startup.
ensure_simd()is called from the game loop (and GUI play entry). It is a no-op if simd is already running. Otherwise it locates a binary ($SIMD, thenPATH, then install prefixes including/usr/local/binand the XDG source-install layout) and starts it via the user unit or the binary. The result is a status, not a guess:SIMD_OK— running or startedSIMD_NOT_INSTALLED— tell the user to install simd; do not enter a hollow game loopSIMD_START_FAILED— binary existed but did not come upThe manager’s Start action is then “run play”. It does not have a second daemon step. Stop/restart notes go through the TUI, not stdout.
Docs stop mandating a start order. ctest covers discovery and play-mode start without a packaged daemon.
Test plan
Spacefreak18/masterthroughfix/fail-closed-initubuntu:24.04container (4/4, including missing simd and start-simd)AI disclaimer. This change was drafted with Cursor. Review process lifetime, binary discovery, and the manager TUI as you would any other contribution. Do not merge on the assistant’s summary alone. The author owns the result.