Skip to content

Contract audit and compatibility

This guide describes source contracts reviewed on 15 September 2026. A deployed engine or operator adapter can use a different release.

Sources

ComponentReviewed revisionContract locations
Engine SDK 0.2.18743feb4src/api.ts, network.ts, websocket.ts, types/.
Engine 1.0.504a3d08src/index.ts, games/util.ts, games/fixed-odds/, and each vertical handler.
Creatorb244de6BuildPicker.tsx, slot/api.ts, generate/, and each vertical exporter.
Operator Interface 1.6.113701ea1src/operatorInterface.ts.
Hizi settings1e03467packages/data/src/presets/jurisdiction/ and types/app-plane/game-setting.type.ts.
RGS Game APIbbb46a3Login/refresh and services/internal.service.ts response sanitization.

The guides include the required wire fields. Access to these repositories is not a prerequisite for reading the SDK guide. Source links let maintainers verify changes later.

Known contract gaps

GapRequired integration behavior
SDK login does not return gameVariables.rcElapsed or the singular freePlayInfoIdentity fields arrive in tokenData. Do not replace login to recover the other two: agree the owner of the reality-check offset with the operator, and read freeplay progress from freePlaysAvailable and the gameround replies. See what login() does not return.
SDK socket helper discards broadcastsUse the Crash transport for request and event delivery on one connection.
customStakes bypasses engine min/max checksApply independent legal and player limits. Reject conflicting release configurations.
Engine maxPackageStake checks can use base stakeValidate the full purchase amount in the frontend. Test the operator limit contract.
Slot CLI export can omit rules and layout dataSupply a versioned frontend manifest. Validate all required configuration before enabling play.
maxPayoutOdds repeats maxWinOddsObtain approved accumulated-payout odds when required. Do not label the duplicate as independent odds.
One UKGC preset covers different player tiers and productsSupply player-specific stake caps and product-specific timing.
German break state is not described by the presetIntegrate the approved reminder and break owner, with persistence.
rcInterval comment says secondsUse milliseconds. RGS documentation and the existing client implementation use milliseconds.
Numeric SDK orientation versus string Hizi configurationNormalize 0/1/2 and none/landscape/portrait explicitly.
Some additional settings lack named SDK fieldsType-check turboDefaultEnabled, performanceMode, and progressionAnimations at runtime.
A bank request that rounds to a zero multiplier credits only that amount, reports the round settled, and leaves the remainder outstandingReject it. A complete-risk request takes the full-collect path; reject that too. Offer full collection without amount.
Collect can bank without creditingRead updated result and round state. Never infer payment from a successful partial request.
Bought rounds can use full debit in RGS base stakePrefer engineData.baseStake. Resolve older missing values from history.
SDK does not export Match or Progressive scenario typesUse the local types in those game guides.
Shared jackpots, common draws, storage, and operator packages lack generic SDK helpersImplement the agreed operator protocol before exposing those controls.
No universal jurisdiction-message or loading-screen bundleSupply approved localized frontend assets and loading screens.

These are documentation compatibility requirements. This change does not modify an engine, jurisdiction preset, or operator service.

Definition of a complete frontend

A complete frontend implements the common contract, its vertical contract, and every enabled game mechanic. It also implements the operator wrapper and approved jurisdiction behavior.

An AI agent can use this guide to build that frontend. It must still receive game assets, a launch integration, approved rules, and the release's regulatory inputs. It must not invent those inputs or claim certification from passing example tests.

For new fields, update the relevant guide and the release matrix. Retain exact wire identifiers and state whether a field is optional. Regenerate the AI exports through the normal documentation build.