DLL public-contract verification — October 23, 2026 America/Toronto

Self-authored unsigned .NET 8 invoice library, not a customer SDK. Only InvoiceLibrary.dll was uploaded to the production anonymous Free endpoint. The consumer DLL stays byte-identical. No Pro layers enabled.

Review source before executing. With .NET 8 runtime/SDK, run from this extracted directory:
 dotnet original/InvoiceConsumer.dll
 dotnet protected/InvoiceConsumer.dll
Both should emit identical JSON, checks=10, events=5, count=5. Known results and exceptions are asserted by the consumer.

To repeat the contract comparison in PowerShell 7:
 pwsh -File verify-public-api.ps1 -SamplePath . -ReportPath contract-rerun.json
The expected unsigned assembly identity and 24 reflection entries match, including 3 exported types. Accessor methods are counted separately from properties/events; 24 entries are not 24 independent behavior tests. This comparison does not cover every binary-compatibility dimension.

contract-report.json gives public signatures and DLL hashes. runtime-report.json gives the ten runtime checks and unchanged-consumer hash. ILSpyCmd 11.0.0.9375 listings show private RoundMoney -> @d and _calculationCount -> @b. Arithmetic remains readable; free renaming is not algorithm encryption.

Source contains library/consumer projects and optional upload scripts. verify-online.ps1 recompiles and UPLOADS THE SYNTHETIC LIBRARY to https://freeobfuscator.com/ to rerun online protection. Running the prebuilt folders or verify-public-api.ps1 does not upload anything.

No customer data, product engine source, payment configuration or private mapping is included. Test your own consumer dependencies, reflection, serializers, signing, nested APIs, UI bindings and package layout; this is not a universal compatibility certification.
