diff --git a/CHANGELOG.md b/CHANGELOG.md index 515ccd2..1ce869d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,11 +25,21 @@ ship. ### Added +### Changed + +### Security + +### Deployment + +## [1.1.0] - 2026-10-16 + +### Added + - **Optional Lua operations.** Generated operations accept trailing SDK `LuaOptional` inputs of SDK-supported scalar types and one optional trailing `out` result on a `bool` binding. Their public surface uses the Client-owned - `LuaOptional` and its - `Omitted`, `Nil` and `Of` factories; omitted arguments, absent results, explicit `nil` and present values stay - distinct. Result mappers run only for present optional values. Existing scalar operation signatures stay unchanged. + `LuaOptional` and its `Omitted`, `Nil` and `Of` factories; omitted arguments, absent results, explicit `nil` and + present values stay distinct. Result mappers run only for present optional values. Existing scalar operation + signatures stay unchanged. ### Changed diff --git a/RELEASING.md b/RELEASING.md index b08cc40..e3d1775 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -173,6 +173,17 @@ The recorded run's id is written here, and its scenario results go to the `CHANG from that evidence. Until it is committed, no document claims a host qualification (`QualificationEvidenceTests`). A CI result is never presented as a host result, and a scenario that was not run stays not run. +### 1.1.0 release-only host-check waiver — 2026-10-16 + +For the requested 1.1.0 package publication, this dated waiver covers the release-only host checks Q09, Q10, Q40, +Q43, Q44, Q45 and Q46. They are not executed in this release session: no operator-driven Cheat Engine qualification +session or committed live receipts are available. The package-consumer fixtures cover installation and template +contracts independently; they do not establish the host portion of Q40. + +This waiver permits package publication only. It does not provide a scenario result, populate +`HostQualificationEvidence.Recorded`, satisfy a capability's qualification gate, close F05, or lift CECLIENT5001–5004. +Runtime qualification remains `Unknown`. A later release needs its own live evidence or a newly dated release waiver. + ## Publish The release commit must first land on the first-parent history of `main`; the workflow rejects a tag on any other diff --git a/ROADMAP.md b/ROADMAP.md index ab68542..d6b8e1e 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -62,7 +62,7 @@ Source status as of October 7, 2026. "Shipped" below describes the 1.0.0 impleme | CLI-022–023 | Shipped; host deployment evidence pending | Package-consumer, template and deployment-closure checks exist. Actual Cheat Engine loading and coexistence remain a separate gate. | | CLI-024 | Partly implemented; host evidence pending | The qualification runner and fake-port benchmarks exist. Committed live receipts, hosted Client-versus-SDK measurements and published performance budgets remain outstanding. | -The current development line is 1.1. Optional Lua operations are implemented for this line, and package validation uses the published 1.0.0 baseline. Neither change is a published 1.1 release. Qualification and hosted benchmarks remain separate tasks; no receipt or performance result is inferred from a build, package check or fake-port benchmark. +The 1.1 release line adds optional Lua operations, and package validation uses the published 1.0.0 baseline. The [1.1.0 changelog](CHANGELOG.md#110---2026-10-16) records its release scope; package publication is verified through NuGet separately. Qualification and hosted benchmarks remain separate tasks; no receipt or performance result is inferred from a build, package check or fake-port benchmark. | Phase | Outcome | Exit evidence | |---|---|---| diff --git a/libs/CheatEngine.Client.Abstractions/PublicAPI.Shipped.txt b/libs/CheatEngine.Client.Abstractions/PublicAPI.Shipped.txt index 38c900e..1f378e0 100644 --- a/libs/CheatEngine.Client.Abstractions/PublicAPI.Shipped.txt +++ b/libs/CheatEngine.Client.Abstractions/PublicAPI.Shipped.txt @@ -109,6 +109,15 @@ CheatEngine.Client.Lua.LuaModuleReleaseOutcome.RemainingCount.get -> int CheatEngine.Client.Lua.LuaModuleReleaseOutcome.RemovedCount.get -> int CheatEngine.Client.Lua.LuaModuleReleaseOutcome.ReplacementCount.get -> int CheatEngine.Client.Lua.LuaModuleReleaseOutcome.RestoredCount.get -> int +CheatEngine.Client.Lua.LuaOptional +CheatEngine.Client.Lua.LuaOptional +CheatEngine.Client.Lua.LuaOptional.Equals(CheatEngine.Client.Lua.LuaOptional other) -> bool +CheatEngine.Client.Lua.LuaOptional.HasValue.get -> bool +CheatEngine.Client.Lua.LuaOptional.IsNil.get -> bool +CheatEngine.Client.Lua.LuaOptional.IsOmitted.get -> bool +CheatEngine.Client.Lua.LuaOptional.LuaOptional() -> void +CheatEngine.Client.Lua.LuaOptional.TryGetValue(out T? value) -> bool +CheatEngine.Client.Lua.LuaOptional.Value.get -> T? CheatEngine.Client.Lua.LuaScript CheatEngine.Client.Lua.LuaScript.ChunkName.get -> string? CheatEngine.Client.Lua.LuaScript.Equals(CheatEngine.Client.Lua.LuaScript other) -> bool @@ -941,6 +950,8 @@ override CheatEngine.Client.Inspection.InspectionCollectionRequest.GetHashCode() override CheatEngine.Client.Inspection.SymbolRegistration.GetHashCode() -> int override CheatEngine.Client.Lua.LuaExportDescriptor.GetHashCode() -> int override CheatEngine.Client.Lua.LuaModuleReleaseOutcome.ToString() -> string! +override CheatEngine.Client.Lua.LuaOptional.Equals(object? obj) -> bool +override CheatEngine.Client.Lua.LuaOptional.GetHashCode() -> int override CheatEngine.Client.Lua.LuaScript.GetHashCode() -> int override CheatEngine.Client.Memory.MemoryBytesReadRequest.GetHashCode() -> int override CheatEngine.Client.Memory.MemoryReadRequest.GetHashCode() -> int @@ -996,6 +1007,11 @@ static CheatEngine.Client.Lua.LuaModuleReleaseOutcome.Create(string! moduleName, static CheatEngine.Client.Lua.LuaModuleReleaseOutcome.PartiallyReleased(string! moduleName, int removedCount, int restoredCount, int replacementCount, System.Collections.Immutable.ImmutableArray failedExports) -> CheatEngine.Client.Lua.LuaModuleReleaseOutcome! static CheatEngine.Client.Lua.LuaModuleReleaseOutcome.RefusedRuntimeChanged(string! moduleName, int remainingCount) -> CheatEngine.Client.Lua.LuaModuleReleaseOutcome! static CheatEngine.Client.Lua.LuaModuleReleaseOutcome.Released(string! moduleName, int removedCount, int restoredCount, int replacementCount) -> CheatEngine.Client.Lua.LuaModuleReleaseOutcome! +static CheatEngine.Client.Lua.LuaOptional.Nil() -> CheatEngine.Client.Lua.LuaOptional +static CheatEngine.Client.Lua.LuaOptional.Of(T value) -> CheatEngine.Client.Lua.LuaOptional +static CheatEngine.Client.Lua.LuaOptional.Omitted() -> CheatEngine.Client.Lua.LuaOptional +static CheatEngine.Client.Lua.LuaOptional.operator !=(CheatEngine.Client.Lua.LuaOptional left, CheatEngine.Client.Lua.LuaOptional right) -> bool +static CheatEngine.Client.Lua.LuaOptional.operator ==(CheatEngine.Client.Lua.LuaOptional left, CheatEngine.Client.Lua.LuaOptional right) -> bool static CheatEngine.Client.Lua.LuaScript.operator !=(CheatEngine.Client.Lua.LuaScript left, CheatEngine.Client.Lua.LuaScript right) -> bool static CheatEngine.Client.Lua.LuaScript.operator ==(CheatEngine.Client.Lua.LuaScript left, CheatEngine.Client.Lua.LuaScript right) -> bool static CheatEngine.Client.Memory.MemoryBytesReadRequest.operator !=(CheatEngine.Client.Memory.MemoryBytesReadRequest left, CheatEngine.Client.Memory.MemoryBytesReadRequest right) -> bool diff --git a/libs/CheatEngine.Client.Abstractions/PublicAPI.Unshipped.txt b/libs/CheatEngine.Client.Abstractions/PublicAPI.Unshipped.txt index 8f5a1a9..7dc5c58 100644 --- a/libs/CheatEngine.Client.Abstractions/PublicAPI.Unshipped.txt +++ b/libs/CheatEngine.Client.Abstractions/PublicAPI.Unshipped.txt @@ -1,17 +1 @@ #nullable enable -CheatEngine.Client.Lua.LuaOptional -CheatEngine.Client.Lua.LuaOptional -CheatEngine.Client.Lua.LuaOptional.Equals(CheatEngine.Client.Lua.LuaOptional other) -> bool -CheatEngine.Client.Lua.LuaOptional.HasValue.get -> bool -CheatEngine.Client.Lua.LuaOptional.IsNil.get -> bool -CheatEngine.Client.Lua.LuaOptional.IsOmitted.get -> bool -CheatEngine.Client.Lua.LuaOptional.LuaOptional() -> void -CheatEngine.Client.Lua.LuaOptional.TryGetValue(out T? value) -> bool -CheatEngine.Client.Lua.LuaOptional.Value.get -> T? -override CheatEngine.Client.Lua.LuaOptional.Equals(object? obj) -> bool -override CheatEngine.Client.Lua.LuaOptional.GetHashCode() -> int -static CheatEngine.Client.Lua.LuaOptional.Nil() -> CheatEngine.Client.Lua.LuaOptional -static CheatEngine.Client.Lua.LuaOptional.Of(T value) -> CheatEngine.Client.Lua.LuaOptional -static CheatEngine.Client.Lua.LuaOptional.Omitted() -> CheatEngine.Client.Lua.LuaOptional -static CheatEngine.Client.Lua.LuaOptional.operator !=(CheatEngine.Client.Lua.LuaOptional left, CheatEngine.Client.Lua.LuaOptional right) -> bool -static CheatEngine.Client.Lua.LuaOptional.operator ==(CheatEngine.Client.Lua.LuaOptional left, CheatEngine.Client.Lua.LuaOptional right) -> bool diff --git a/source-generators/CheatEngine.Client.SourceGenerators.Lua/AnalyzerReleases.Shipped.md b/source-generators/CheatEngine.Client.SourceGenerators.Lua/AnalyzerReleases.Shipped.md index 81ec099..b692700 100644 --- a/source-generators/CheatEngine.Client.SourceGenerators.Lua/AnalyzerReleases.Shipped.md +++ b/source-generators/CheatEngine.Client.SourceGenerators.Lua/AnalyzerReleases.Shipped.md @@ -1,6 +1,15 @@ ; Shipped analyzer releases ; https://github.com/dotnet/roslyn/blob/main/src/RoslynAnalyzers/Microsoft.CodeAnalysis.Analyzers/ReleaseTrackingAnalyzers.Help.md +## Release 1.1.0 + +; No diagnostic IDs or severities were added or changed in this release. + +### New Rules + + Rule ID | Category | Severity | Notes +------------|------------------------|----------|-------------------------------------------------------------------------------------- + ## Release 1.0.0 ### New Rules