Repository navigation
Preserve main-thread cleanup admission during shutdown - #100
Conversation
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
There was a problem hiding this comment.
Actionable comments posted: 1

Review info
-
Run configuration-
- Source mode: Auto
- Repository: CheatEngineNet/CheatEngine.SDK
- Branch: codex/lifecycle-cleanup-20261025
- File: .coderabbit.yaml
- Commit: 1e45f32
- Layers: Repository YAML
- Review profile: ASSERTIVE
- Plan: Advanced
- Run ID:
e220f611-0d01-44dd-8197-17eaacafdc6d
Files selected for processing: 8-
libs/CheatEngine.SDK.Hosting/Bootstrap/PluginHost.Lifecycle.cslibs/CheatEngine.SDK.Hosting/Bootstrap/PluginHost.cslibs/CheatEngine.SDK.Hosting/Plugin/CheatEnginePlugin.cslibs/CheatEngine.SDK.Hosting/PublicAPI.Unshipped.txtlibs/CheatEngine.SDK.Hosting/README.mdlibs/CheatEngine.SDK.Hosting/Threading/MainThread.cstests/CheatEngine.SDK.Hosting.Tests/Lifecycle/AdmissionLifecycleTests.cstests/CheatEngine.SDK.Hosting.Tests/README.md
🔗 Linked repositories identified
-
CodeRabbit considers these linked repositories for cross-repo context during reviews:
CheatEngineNet/CheatEngine.Client(manual) → reviewed against open PR#70codex/lifecycle-cleanup-20261025instead of the default branch
Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.
-
|



Summary
Plugin shutdown and failed-enable rollback need a bounded way to finish owned cleanup after normal admission closes. Capture the main-thread lifecycle context, permit inline dispatch within that scope, and expose the failed-enable rollback transition consumed by Client hosting. Reject rollback initiated inside nested dispatch work before changing shutdown state, preventing the caller from waiting for its own admission lease.
Scope and ownership
SDK owns the host admission and main-thread dispatch boundary. This adds protected
CheatEnginePlugin.BeginFailedEnableRollback()and updates the unshipped API inventory. No stable API is removed.Validation
dotnet test --project externals/CheatEngine.SDK/tests/CheatEngine.SDK.Hosting.Tests -c Release --no-restore --filter-class '*AdmissionLifecycleTests' --filter-class '*ReentrancyTests' --fail-skips on, with Lua 5.3Compatibility and release impact
Client's companion change consumes the new protected SDK method. Publish a compatible SDK package before releasing the paired Client package. Consumer-visible changes are recorded under Unreleased. This change preserves the tested source integration; it does not claim standalone package or native host qualification.
Checklist
PublicAPI.Unshipped.txt.Summary
MainThread.Invokenow admits inline work on the captured main thread duringOnEnableandOnDisable. Worker dispatch remains closed during those callbacks.CheatEnginePlugin.BeginFailedEnableRollback()for synchronous cleanup afterOnEnablefailure. The host closes general admission and signals shutdown; activation cannot complete if rollback was signaled.Tests