mirror of
https://gh-proxy.org/https://github.com/klinsmaya/multica.git
synced 2026-11-09 18:06:45 +08:00
* MUL-7415 ci: retire the standalone Cursor lifecycle job cursor-background-lifecycle ran a macos-latest and a windows-latest runner on the runtime scope, i.e. on nearly every backend change, to cover one integration's background shell. Neither leg needed to be its own job. Windows: windows-execenv is already a windows-latest job on the same runtime scope testing ./pkg/agent process-tree ownership. The Cursor patterns move there as a step, so a backend PR spins up one Windows runner instead of two. The ./internal/daemon watchdog command does not come along: every test it selected is untagged except cursor_uncaptured_watchdog_test.go, which is `linux || darwin` and never built on Windows, so the ubuntu backend suite already runs all of them under -race. macOS: nothing else in this workflow runs Go on macOS, and cursor_background_process_darwin.go is 208 lines of XNU identity signalling whose two tests are `//go:build darwin`. Deleting outright would leave it with no coverage anywhere, so it becomes macos-runtime, gated on `full` — the daily cron and workflow_dispatch that #8451 added for exactly this trade. Its single-count finalization step is dropped as dead: `full` is now always true here, so the -count=5 stress pass that was already the full-run variant is the only one left. The backend gate tracks both moves; ci-scope's production gate test parses ci.yml, so it verifies the new needs/if/scope wiring directly. Co-authored-by: multica-agent <[email protected]> * MUL-7415 test(agent): stop building the Cursor late-descendant test on Windows TestCaptureCursorBackgroundLateDescendant failed twice in the last 43 main pushes on windows-latest and zero times in 40 on ubuntu. The two Windows failures reported different errors -- `Access is denied.` and `not an owned descendant` -- from the same captureCursorBackgroundProcess call, which is one race wearing two faces: cursorWindowsProcessParents snapshots every PID->PPID pair on the machine, Windows keeps a child's recorded PPID after the parent exits, and that PID is then free to be reused, so the ancestry walk can reach a PID someone else now owns. Narrowing the tag to `linux || darwin` keeps the Linux and Darwin arms, which have never flaked and still cover the whole contract: a descendant forked after capture is owned and terminated, the leader's death does not orphan it, and an unrelated process is never signalled. Windows keeps TestCaptureCursorBackgroundProcessRejectsForeignJob for Job membership. This is deliberately a mute, not a fix. MUL-7417 carries the race itself and restores the tag. Co-authored-by: multica-agent <[email protected]> * MUL-7415 ci: run the Windows Cursor step last in windows-execenv Folding the Cursor job into windows-execenv means Cursor's failures now truncate windows-execenv's own steps, which the separate job could never do. Eight Windows-only checks -- bounded output collection, the Pi session lock, the OpenClaw npm shim, junction resolution -- sat after it and would be skipped by a single Cursor failure. Moving the step behind `Build Windows CLI helper entrypoint` keeps the one-runner saving while leaving the pre-existing coverage first in line. Also adds the -timeout=5m this job's other test steps carry. Co-authored-by: multica-agent <[email protected]> --------- Co-authored-by: J <[email protected]> Co-authored-by: multica-agent <[email protected]>