Skip to content

Add optional Lua operations and prepare the 1.1 development line - #61

Merged
ShadowNineX merged 1 commit into
mainfrom
codex/optional-lua-roadmap
Oct 7, 2026
Merged

ShadowNineX merged 1 commit into
mainfrom
codex/optional-lua-roadmap

Conversation

@ShadowNineX

Copy link
Copy Markdown
Contributor

Outcome and linked issue

After 1.0.0 was published, the repository still treated its API and analyzer rules as unshipped and had no published compatibility baseline. Generated Lua operations also rejected SDK optional arguments and results. This change opens the 1.1 development line and adds Client-owned optional values that preserve omitted, explicit nil, and present values, including false and zero.

No linked issue.

Scope and architectural ownership

  • Add LuaOptional<T> and generated adapters for trailing optional inputs and one optional trailing out result on a bool binding. Accept exactly the optional scalar types supported by SDK 2.0.0; reject unsupported and nullable shapes before generation.
  • Preserve optional result states, map only present inner values, and propagate application mapper exceptions unchanged. SDK marshalling values stay inside private generated adapters; the exact SDK member ratchet remains enforced.
  • Record the released 1.0.0 public API and analyzer rules as shipped. The large API-file diff moves existing entries unchanged; only the 16 new optional-value entries remain unshipped.
  • Set the 1.1 version floor/template default, validate packages against published 1.0.0 with additive APIs allowed, regenerate project-reference locks, and update roadmap/release documentation.
  • Shorten the package-consumer fixture's temporary folder segment to keep prerelease cache DLL paths below Windows' legacy path limit while retaining GUID isolation and containment checks.

SDK owns Cheat Engine integration; Client owns the public value contract and workflow adapters. Live qualification, hosted performance measurements, and domains awaiting SDK primitives remain pending.

Dependencies and containing artifacts

The consumed primitive is CheatEngine.SDK 2.0.0's LuaOptional<T> and LuaBindings generator. The SDK pin and dependency versions are unchanged; no dependency was added. Project-reference lock entries were regenerated for the 1.1 floor.

Validation actually performed

Local results were collected from the final source tree before the PR commit; CI validates the published commit.

Check Command, run link or artifact Qualification level and Q-IDs Actual result
CI / Gate PR CI Hosted CI, no host qualification Pending
Locked restore dotnet restore CheatEngine.Client.slnx --locked-mode C0 dependency graph Passed
Debug build/tests dotnet build CheatEngine.Client.slnx -c Debug --no-restore; dotnet test --solution CheatEngine.Client.slnx -c Debug --no-build --no-restore --fail-skips on --filter-not-trait Category=PackageConsumption --filter-not-trait Category=LiveQualification C0/C1 2,836 passed, 0 failed/skipped; build had 0 warnings/errors
Release build dotnet build CheatEngine.Client.slnx -c Release --no-restore --no-incremental C0 clean compilation Passed, 0 warnings/errors
Release tests / packed consumer dotnet pack CheatEngine.Client.slnx -c Release --no-build -o artifacts/roadmap-fix-validation-final/nuget; set CHEATENGINE_CLIENT_PACKAGE_SOURCE to that directory; dotnet test --solution CheatEngine.Client.slnx -c Release --no-build --no-restore --fail-skips on --filter-not-trait Category=LiveQualification C0/C1 and isolated package/template fixtures, Q40; no C3/C4 claim 2,892 passed, 0 failed/skipped; seven packages and five symbol packages; 1.0.0 compatibility validation passed
Live host Not run C3/C4 Not executed; live evidence remains absent
AOT publication dotnet publish tests/CheatEngine.Client.AotProbe/CheatEngine.Client.AotProbe.csproj -c Release --no-restore -o artifacts/roadmap-fix-validation-final/aot-probe; run CheatEngine.Client.AotProbe.exe Offline graph/execution probe; no CE host Publish passed; executable exited 0
Formatting dotnet format whitespace . --folder --verify-no-changes --exclude artifacts; git diff --check C0 Passed

API and compatibility

  • Public API: add the Client LuaOptional factories and LuaOptional<T> immutable tri-state value type, including safe default access, TryGetValue, and value equality.
  • 1.x compatibility: no stable public API was removed or changed; no call-only interface members or enum values were added. The compatibility baseline checks breaks while allowing additive APIs.
  • Experimental APIs: none added, changed, or lifted; CECLIENT5001-5004 remain experimental.
  • Behavior, ownership, lifetime, cleanup, cancellation and partial effects: existing scalar operation signatures retain their behavior. Optional argument holes are rejected by the SDK before Lua admission and reported as BindingError. Mapper exceptions remain application exceptions.
  • CheatEngine.SDK pin and lock files: SDK remains 2.0.0; locks were regenerated rather than hand edited.
  • Migration: none for existing consumers. Optional-operation consumers use the new Client wrappers at the generated public boundary.

Evidence

The new executable generated-operation tests cover omitted/nil/present false and zero, failed Try bindings, invalid argument holes, mapper value fidelity and unchanged exception identity. The composition tests compile alongside the generator from the pinned SDK package and verify its omission-hole guard precedes admission/calls. The exact generated SDK-member ratchet and public API/XML documentation checks pass. Existing public API entries were compared with the pre-change tree and none were removed.

Local logs are retained under artifacts/roadmap-fix-validation-final/. Package DLL bytes were compared with the final clean build. No live host receipts or hosted performance results are claimed.

Documentation and review checklist

  • Scope is focused; existing repository style and contribution rules are preserved.
  • Relevant regression evidence is recorded; pending gates remain explicit.
  • No raw state/owner escapes the normal Client boundary.
  • Capability and artifact claims match actual results and state their qualification level.
  • CHANGELOG.md has entries under [Unreleased].
  • The SDK pin is unchanged; lock files were regenerated with dotnet restore <project> --force-evaluate.
  • No new missing-primitive architecture ratchet exception was added; private optional conversions have an exact tri-state-only allowlist.
  • No commit in this PR is listed in .git-blame-ignore-revs; the normal squash policy applies.
  • Documentation and release impact are recorded.
  • No automatic merge, release, protection change or unsupported capability activation is requested.

@ShadowNineX
ShadowNineX marked this pull request as ready for review October 7, 2026 15:18
@ShadowNineX
ShadowNineX requested a review from AriusII as a code owner October 7, 2026 15:18
@coderabbitai

coderabbitai Bot commented Oct 7, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

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

⚙️ Run configuration
  • Configuration used: Repository: CheatEngineNet/CheatEngine.Client/.coderabbit.yaml
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 452acc2e-b11a-4fa8-90ed-2f5cf24b2874
  • Autopilot · 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.

@sonarqubecloud

sonarqubecloud Bot commented Oct 7, 2026

Copy link
Copy Markdown

@ShadowNineX
ShadowNineX merged commit 990c05c into main Oct 7, 2026
15 checks passed
@ShadowNineX
ShadowNineX deleted the codex/optional-lua-roadmap branch October 7, 2026 15:33
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