Skip to content

fix: complete lifecycle cleanup with the pinned SDK submodule - #70

Merged
ShadowNineX merged 5 commits into
mainfrom
codex/lifecycle-cleanup-20261025
Oct 25, 2026
Merged

ShadowNineX merged 5 commits into
mainfrom
codex/lifecycle-cleanup-20261025

Conversation

@ShadowNineX

@ShadowNineX ShadowNineX commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor

Outcome and linked issue

Complete activation cleanup after normal shutdown and failed enable. Module deactivation notifications run before owned-resource cleanup, and failures do not abandon later cleanup stages.

Standalone Client builds previously failed because the published SDK lacks BeginFailedEnableRollback(). Repository builds and tests now use the SDK Git submodule pinned to merged commit 524979c2d5f9de984afd95a4dbebebc92f2ae894 from CheatEngineNet/CheatEngine.SDK#100.

Scope and architectural ownership

  • SDK owns host admission; Client owns activation ordering and resource policy.
  • Default source references cover runtime libraries, plugin generators, analyzers, the native bridge, test fixtures and the AOT probe. Parent workspace SDK overrides remain supported.
  • Dedicated source lock files preserve the separate production NuGet graph. Clone recursively; builds follow the committed gitlink rather than a moving branch.
  • PR CI, Sonar and CodeQL use the source graph. Production releases explicitly enable production-packages, retain SDK as a separate NuGet dependency, and run the exact packaged-consumer checks.
  • Normalize direct and transitive SDK project-reference configuration and platform properties to prevent duplicate SDK generator builds from racing on shared outputs. Align the repository .NET SDK with the submodule at 10.0.402.

Validation actually performed

Check Result Evidence boundary
Locked solution restore against nested SDK submodule Passed Reproducible source dependency graph
Debug portable suite 2,870 passed; 0 failed; 0 skipped Managed/offline tests; excludes production package consumption and live qualification
Release portable suite 2,870 passed; 0 failed; 0 skipped Same source graph and exclusions
Native AOT publish and executable probe Passed; exit 0 Native AOT graph compatibility, not a Cheat Engine plugin load
Formatting and whitespace checks Passed Client-owned files; SDK submodule owns its formatting
MSBuild collision trace One SDK LuaBridgeContract and Lua.Interop evaluation after normalization; previously competing evaluations Confirms normalized global Platform inputs
Live host qualification / production packages Not run No release or native-host qualification claimed

Commands use -p:CheatEngineImportSourceSettings=false locally to exercise the nested SDK submodule instead of the containing MCP workspace's SDK override. Portable tests use --filter-not-trait Category=PackageConsumption --filter-not-trait Category=LiveQualification --fail-skips on.

API and compatibility

  • Added optional ICheatEngineClientModuleDeactivationNotification and ICheatEngineClientResourceCleanup; no existing interface members changed.
  • Source runtime identity requires the exact SDK assembly version and Git commit, without claiming a NuGet hash. Production package identity assertions remain intact.
  • Production package release still requires a published SDK containing the rollback API and a reviewed NuGet pin/hash/lock update. That is a release prerequisite; ordinary source development and PR CI no longer depend on an SDK release.
  • The live package/template qualification runner remains an explicit production-artifact test with its existing live-operation acknowledgement requirement.

Checklist

  • Lifecycle documentation, interface contracts, changelog and SDK usage inventory updated.
  • Submodule checkout, source lock files, generators, fixtures and CI updated together.
  • Debug/Release portable checks and Native AOT probe passed locally.
  • Source and production-package evidence remain separate.
  • All remote checks passed on 86ba0832f0e8f74fe46dd83d1edc9aeccef21a55, including Debug/Release, Native AOT, SonarCloud, CodeQL and CI Gate; GitHub verifies its signature.
  • Production SDK package pin and package/live qualification before release.

@coderabbitai

coderabbitai Bot commented Oct 25, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

Run configuration
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@ShadowNineX ShadowNineX changed the title Order deactivation notifications and owned resource cleanup fix: complete lifecycle cleanup with the pinned SDK submodule Oct 25, 2026
@sonarqubecloud

Copy link
Copy Markdown

@ShadowNineX
ShadowNineX merged commit 86db625 into main Oct 25, 2026
16 checks passed
@ShadowNineX
ShadowNineX deleted the codex/lifecycle-cleanup-20261025 branch October 25, 2026 13:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant