{
  "generatedAt": "2026-10-26T11:55:36.1694067+08:00",
  "result": "PASS",
  "package": "io.github.yudigaga.xai",
  "namespace": "io.github.xai",
  "displayName": "XAi",
  "versionName": "0.4.0",
  "versionCode": 8,
  "buildType": "release",
  "artifact": "XAi-0.4.0-api102-release.apk",
  "bytes": 4726507,
  "sha256": "798f52e39b48c211528ac863f0f6c6aebe4710a787825ad787e3750f3f5ab385",
  "sdk": {
    "min": 32,
    "target": 35,
    "compile": 37
  },
  "debuggable": false,
  "testOnly": false,
  "api": 102,
  "scope": "com.twitter.android",
  "entrypoint": "io.github.xai.ModuleEntry",
  "moduleProperties": {
    "minApiVersion": "102",
    "targetApiVersion": "102",
    "staticScope": "true",
    "exceptionMode": "protective",
    "autoHotReload": "false"
  },
  "signing": {
    "v2": true,
    "v3": true,
    "signers": 1,
    "certificateSha256": "07d29d49ee8c74d5c72e852fdf59fd8f674b6eb6cd63ed2c6a1a47a83c0baa44",
    "certificateDn": "CN=xai, OU=Android Modules, O=yudigaga",
    "source": "Externally configured release keystore; no key material archived",
    "knownDebugCertificateRejected": true,
    "v2Verification": "Explicit verifier SDK range 24-27; APK minSdk remains 32",
    "v3Verification": "Default verifier using APK manifest minSdk 32"
  },
  "alignment": {
    "command": "zipalign -c -P 16 -v 4",
    "result": "PASS"
  },
  "rules": {
    "schema": 1,
    "count": 11980,
    "bytes": 9273979,
    "sha256": "a0c054ac61f77fafa597d404d829ecec8c3092c6ed566e6c616297ca13f6aca2",
    "equalsSource": true
  },
  "r8": {
    "enabled": true,
    "resourceShrinking": false,
    "contract": "Private structural verification record for this exact APK; runtime validation is separate.",
    "reports": {
      "mapping": {
        "path": "r8-0.4.0/mapping.txt",
        "sha256": "4c1bf0fb9d025c32e423d329a44f9510c6189f57331146ce5226e495d1dc7694",
        "bytes": 40091898
      },
      "usage": {
        "path": "r8-0.4.0/usage.txt",
        "sha256": "32f4d7e27feb4614437cf1c563153ce2980ffe13899078902d11767b41dd6533",
        "bytes": 3724399
      },
      "seeds": {
        "path": "r8-0.4.0/seeds.txt",
        "sha256": "46f91e84b7d2b258d3f642e405f74ff7508b3f6400228f748554658426dbff2e",
        "bytes": 82274
      },
      "configuration": {
        "path": "r8-0.4.0/configuration.txt",
        "sha256": "f1e5e701aef8ec28bc12c0c3ae287fc2c96e8802a8d07737306640fe96018315",
        "bytes": 52787
      }
    },
    "runtimeValidation": "Mapping-aware APK checks are structural. Release JVM tests do not execute minified DEX; device validation remains pending.",
    "reportsAvailability": "Original matching R8 reports retained privately; recorded hashes identify their exact contents."
  },
  "tests": {
    "scope": "All :app:testReleaseUnitTest cases; no --tests filter",
    "totals": {
      "tests": 649,
      "failures": 0,
      "errors": 0,
      "skipped": 0
    },
    "suites": [
      {
        "name": "io.github.xai.AccentColorPolicyTest",
        "tests": 2,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.AnalyticsHooksLifecycleTest",
        "tests": 1,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.AnalyticsVisibilityStateTest",
        "tests": 4,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.BootstrapOnceTest",
        "tests": 3,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.BrowserPolicyTest",
        "tests": 8,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.diagnostics.ExportRequestStateTest",
        "tests": 4,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.diagnostics.HookCoverageTest",
        "tests": 1,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.diagnostics.LogBackendTest",
        "tests": 15,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.diagnostics.LogModeTest",
        "tests": 5,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.diagnostics.OperationContextTest",
        "tests": 4,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.DownloadBatchPolicyTest",
        "tests": 3,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.DownloadDirectoryTest",
        "tests": 6,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.DownloadWorkQueueTest",
        "tests": 1,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.analytics.AnalyticsBackupTest",
        "tests": 6,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.analytics.LocalAnalyticsTest",
        "tests": 19,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.analytics.PortraitAnalyticsTest",
        "tests": 14,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.automation.AutomationConfigTest",
        "tests": 5,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.automation.AutomationEngineTest",
        "tests": 18,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.automation.AutomationLedgerTest",
        "tests": 4,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.config.AiModelContactConfigTest",
        "tests": 3,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.config.AiModelReasoningEffortTest",
        "tests": 8,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.config.AiModelResponseModeTest",
        "tests": 3,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.config.DownloadConfigurationTest",
        "tests": 4,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.config.MiniMaxSpeechOptionsTest",
        "tests": 12,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.config.OfficialDownloadSettingsTest",
        "tests": 3,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.config.SpeechConfigurationTest",
        "tests": 6,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.config.SpeechSettingsTest",
        "tests": 8,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.config.ThirdPartyRequestTemplateTest",
        "tests": 9,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.config.XaiConfigTransferTest",
        "tests": 24,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.feature.AiTranslationClientTest",
        "tests": 5,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.feature.ChatCompletionClientTest",
        "tests": 35,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.feature.ChatImageTest",
        "tests": 3,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.feature.ChatMediaLoaderTest",
        "tests": 17,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.feature.HistoryImageBudgetTest",
        "tests": 6,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.feature.JsonRequestBodyTest",
        "tests": 4,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.feature.MediaMemoryBudgetTest",
        "tests": 3,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.feature.MediaReadCancellationTest",
        "tests": 4,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.feature.MiniMaxAudioFormatTest",
        "tests": 9,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.feature.MiniMaxSpeechClientTest",
        "tests": 29,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.feature.MiniMaxSpeechModelCatalogTest",
        "tests": 5,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.feature.ProtocolResponseStreamTest",
        "tests": 17,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.feature.SpeechHttpClientTest",
        "tests": 11,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.feature.SpeechSynthesisTest",
        "tests": 12,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.feature.TestChatMemoryTest",
        "tests": 6,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.feature.ThirdPartyDownloadPlanSelectionTest",
        "tests": 11,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.feature.ThirdPartyGetClientTest",
        "tests": 22,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.feature.ThirdPartyResponseTest",
        "tests": 9,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.extension.feature.VoiceCatalogTest",
        "tests": 7,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.GestureDispatchOrderTest",
        "tests": 2,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.GestureGutterPolicyTest",
        "tests": 3,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.GestureTimingPolicyTest",
        "tests": 10,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.HostActivityTrackerTest",
        "tests": 3,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.HostAutomationPolicyTest",
        "tests": 5,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.HostCoroutineBridgeTest",
        "tests": 6,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.HostMethodsTest",
        "tests": 7,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.HostPointerObserverTest",
        "tests": 2,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.HostPresetCatalogTest",
        "tests": 12,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.HostSymbolsTest",
        "tests": 4,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.LauncherVisibilityTest",
        "tests": 12,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.MediaTransferTest",
        "tests": 10,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.PublicMediaSnapshotTest",
        "tests": 2,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.PublicPostMetadataTest",
        "tests": 4,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.scan.AutomationRuleContractTest",
        "tests": 1,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.scan.HostDiscoveryTest",
        "tests": 15,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.scan.HostRulesBudgetTest",
        "tests": 2,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.scan.RestartTransportTest",
        "tests": 2,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.scan.ScanUiModelTest",
        "tests": 14,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.ScrollPolicyTest",
        "tests": 7,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.ShareAndUiPolicyTest",
        "tests": 6,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.ShareDownloadPolicyTest",
        "tests": 8,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.ThirdPartyBundleTest",
        "tests": 3,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.ThirdPartyDownloadPolicyTest",
        "tests": 3,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.ThirdPartyTransferIsolationTest",
        "tests": 2,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.TimelineModulePolicyTest",
        "tests": 6,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.TimelinePolicyTest",
        "tests": 6,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.TimelineSupplementPolicyTest",
        "tests": 2,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.TranslationPolicyTest",
        "tests": 3,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.ui.AiExtensionsUiTest",
        "tests": 2,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.ui.AiTranslationUiTest",
        "tests": 2,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.ui.AnalyticsReportDataTest",
        "tests": 2,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.ui.AutomationExtensionsUiTest",
        "tests": 2,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.ui.DownloadUiTest",
        "tests": 6,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.ui.ExtensionsMiuixTest",
        "tests": 4,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.ui.GestureExtensionsUiTest",
        "tests": 4,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.ui.HostComposeIsolationTest",
        "tests": 4,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.ui.MiuixAboutTest",
        "tests": 4,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.ui.MiuixLogsTest",
        "tests": 4,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.ui.MiuixSurfaceTest",
        "tests": 13,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.ui.ReportImageExportTest",
        "tests": 5,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.ui.SpeechDraftTest",
        "tests": 4,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.ui.SpeechExtensionsUiTest",
        "tests": 6,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.ui.WindowBackNavigationTest",
        "tests": 2,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      },
      {
        "name": "io.github.xai.VideoQualityPolicyTest",
        "tests": 5,
        "failures": 0,
        "errors": 0,
        "skipped": 0
      }
    ]
  },
  "lint": {
    "errors": 0,
    "warnings": 22,
    "totalIssues": 24
  },
  "stages": [
    {
      "task": ":app:assembleRelease",
      "arguments": [
        ":app:assembleRelease",
        "--no-daemon",
        "--console=plain",
        "--max-workers=1",
        "-PxaiTestHeap=768m",
        "-Dorg.gradle.jvmargs=-Xmx1536m -XX:MaxMetaspaceSize=384m -XX:ActiveProcessorCount=2 -XX:+UseSerialGC -Dfile.encoding=UTF-8"
      ],
      "startedAt": "2026-10-26T11:51:13.5422178+08:00",
      "finishedAt": "2026-10-26T11:51:38.0524527+08:00",
      "exitCode": 0,
      "log": "assembleRelease.log"
    },
    {
      "task": ":app:testReleaseUnitTest",
      "arguments": [
        ":app:testReleaseUnitTest",
        "--no-daemon",
        "--console=plain",
        "--rerun",
        "--max-workers=1",
        "-PxaiTestHeap=768m",
        "-Dorg.gradle.jvmargs=-Xmx512m -XX:MaxMetaspaceSize=384m -XX:ActiveProcessorCount=2 -XX:+UseSerialGC -Dfile.encoding=UTF-8"
      ],
      "startedAt": "2026-10-26T11:51:38.056302+08:00",
      "finishedAt": "2026-10-26T11:54:58.0877168+08:00",
      "exitCode": 0,
      "log": "testReleaseUnitTest.log"
    },
    {
      "task": ":app:lintRelease",
      "arguments": [
        ":app:lintRelease",
        "--no-daemon",
        "--console=plain",
        "--max-workers=1",
        "-PxaiTestHeap=768m",
        "-Dorg.gradle.jvmargs=-Xmx768m -XX:MaxMetaspaceSize=384m -XX:ActiveProcessorCount=2 -XX:+UseSerialGC -Dfile.encoding=UTF-8"
      ],
      "startedAt": "2026-10-26T11:54:58.0880415+08:00",
      "finishedAt": "2026-10-26T11:55:20.74341+08:00",
      "exitCode": 0,
      "log": "lintRelease.log"
    }
  ],
  "offline": false,
  "lowMemory": true,
  "reports": "Original build XML and logs retained privately; remote CI reports are available in GitHub Actions.",
  "toolVersion": "36.0.0",
  "deviceValidation": {
    "performed": false,
    "reason": "Not performed by this build script",
    "pending": [
      "Real LSPosed API 102 callbacks",
      "Host DEX discovery/cache",
      "Host settings and centered Miuix dialogs",
      "SAF export and restart handshake",
      "Feature behavior against real host/server"
    ]
  },
  "publication": {
    "record": "XAi-0.4.0-publication.json",
    "scope": "Tags, remote assets and CI are recorded separately from local build verification."
  },
  "sourceRepository": "https://github.com/yudigaga/xai",
  "sourceCommit": "b47981c3351e6c3d72228fd847f6a49ee43fd18e",
  "sourceModuleTree": "674a34cc4c7b1168820f1d05937d2ebd6717d54f",
  "reverifiedAt": "2026-10-26T04:08:37.4149415+00:00",
  "debugTests": {
    "tests": 649,
    "failures": 0,
    "errors": 0,
    "skipped": 0
  },
  "publicationVerificationScope": "Existing full Debug/Release reports reviewed; no Gradle test rerun during publication. Release source only received a whitespace-only blank-line cleanup in ConfigTransfer.java after the build."
}
