← BUILD DELTA GUARD / LOCAL EVIDENCE
SOURCE VISIBLE · VERSION 0.1.0
UNITY PLAYER BUILD / CORE EVIDENCE EXPORTER

One Player build.
One reviewable core summary.

Install one small Editor-only package, declare the comparison contract in the build job, and receive a local `bdg-summary-v0.1` file after a successful Player build. Inspect the source and JSON, then compare accepted and candidate summaries in the existing browser-local evaluator.

PACKAGE
UPM tarball · 0.1.0
CALLBACK
Successful Player builds only
OUTPUT
One local UTF-8 JSON file
NETWORK
None
SHA-256E8F068A74DC3348EB28E7333417790628340C7E4FD2864B6271D68CC6527A9F7Checksum file ↘
01 / EVIDENCE BOUNDARY

Observe two core signals.
Refuse everything else.

The kit is intentionally narrower than the private-pilot exporter. It exists to make the first real comparison possible without collecting project content.

INCLUDED

Build-owned evidence

  • Unity version and Player build target
  • BuildSummary.totalSize
  • BuildSummary.totalTime
  • Eight explicit non-sensitive contract labels
  • Registered package name/version pairs
EXCLUDED

Project and operator data

  • Build and project paths
  • Repository files, source, logs, and asset names
  • Package paths and package source URLs
  • Artifacts, signing material, and credentials
  • Personal, player, and analytics data
NOT MEASURED / 0.1.0

Optional delta surfaces

  • Texture and audio payload
  • Shader variants
  • Addressables bundles
  • Scene payload
  • Duplicated bundle payload
02 / INSTALL AND RUN

Use the normal build.
Keep the evidence local.

The package adds no window or background process. Unity invokes it after a successful Player build; AssetBundle-only builds are outside this callback.

01

Inspect and install

Download the `.tgz`, inspect its eight files, then use Unity Package Manager’s “Install package from tarball” action.

02

Declare the contract

Set the nine environment labels below in the accepted and candidate jobs. Use short, non-sensitive values.

03

Run a Player build

The package writes one local JSON file under `Library/XeSoft/BuildDelta`, or the explicit output directory.

04

Compare locally

Review both files, paste them into the browser evaluator, and keep any incomplete or mismatched result unknown.

03 / EXACT BUILD CONTRACT

Nine labels in.
No inferred comparability.

Only the revision changes. Every other value must describe the same build setup in both jobs.

Environment variableComparison ruleMeaning
XESOFT_BDG_REVISIONChanges per buildA short baseline or candidate revision label
XESOFT_BDG_ARTIFACT_FORMATMust matchAAB, APK, IPA, player directory, or the studio's stable label
XESOFT_BDG_SCRIPTING_BACKENDMust matchFor example IL2CPP or Mono
XESOFT_BDG_CONFIGURATIONMust matchFor example release or development
XESOFT_BDG_ARCHITECTUREMust matchFor example ARM64 or x86_64
XESOFT_BDG_STRIPPING_LEVELMust matchThe studio's stable stripping label
XESOFT_BDG_COMPRESSIONMust matchFor example LZ4HC or the studio's stable label
XESOFT_BDG_BUILD_ENTRYMust matchThe non-sensitive build-method label
XESOFT_BDG_RUNNER_PROFILEMust matchThe non-sensitive CI runner class
EXAMPLE / SHELL
export XESOFT_BDG_REVISION="main@8f32c1"
export XESOFT_BDG_ARTIFACT_FORMAT="AAB"
export XESOFT_BDG_SCRIPTING_BACKEND="IL2CPP"
export XESOFT_BDG_CONFIGURATION="release"
export XESOFT_BDG_ARCHITECTURE="ARM64"
export XESOFT_BDG_STRIPPING_LEVEL="medium"
export XESOFT_BDG_COMPRESSION="LZ4HC"
export XESOFT_BDG_BUILD_ENTRY="Build.ReleaseAndroid"
export XESOFT_BDG_RUNNER_PROFILE="windows-build-a"
OUTPUT SHAPE / CORE ONLY
{
  "schemaVersion": "bdg-summary-v0.1",
  "revision": "main@8f32c1",
  "metadata": { "…": "exact contract labels" },
  "metrics": {
    "totalBuildBytes": 1120000000,
    "buildDurationSeconds": 770
  },
  "dependencies": { "package.name": "version" }
}
04 / FAILURE BEHAVIOR

No evidence file is safer
than an invented one.

The exporter skips the file and logs one bounded warning when a required label is missing, a package has no usable name/version, the package ceiling is exceeded, a duplicate name appears, or the local write fails. It never converts missing evidence to zero and does not throw out of the callback.

The output filename is derived from a filesystem-safe revision label. The exporter does not read or serialize `BuildSummary.outputPath`.

Compare two reviewed summaries
PRIMARY UNITY REFERENCES
BUILD SUMMARYSize, duration, target, result, and build-owned metadataPOST-BUILD CALLBACKSuccessful Player-build callback contractPACKAGE INFORegistered package name and version inventoryUPM TARBALLInstall a local `.tgz` package