{
  "schemaVersion": 1,
  "startedAt": "2026-10-03T08:12:10.579Z",
  "command": [
    "/usr/bin/node",
    "/home/qpzhou/sources/appinventor-sources/appinventor/appengine/tools/block-preview/check-aia-projects.js",
    "--import",
    "--apk",
    "--report",
    "/tmp/real-editor-final.json",
    "docs/markdown/reference/components/guide/files/UniversityLayoutList.aia",
    "docs/markdown/reference/creative/files/BinaryHttpLab.aia",
    "docs/markdown/reference/creative/files/BinaryMqttController.aia",
    "docs/markdown/reference/creative/files/BinaryMqttDevice.aia",
    "docs/markdown/reference/creative/files/BinaryTcpLab.aia",
    "docs/markdown/reference/creative/files/BinaryWebSocketLab.aia",
    "docs/markdown/reference/creative/files/SerialBinaryLab.aia"
  ],
  "status": "passed",
  "evidenceDirectory": "/tmp/aia-project-check-5C7RFt",
  "artifacts": [
    {
      "file": "/home/qpzhou/sources/appinventor-sources/appinventor/docs/markdown/reference/creative/files/BinaryHttpLab.aia",
      "name": "BinaryHttpLab",
      "sha256": "1ee465b4f2941d8a74e49d1b1d40a54bdb9eaef97b1ca7f686fe501fdfd6ae89",
      "structure": "passed",
      "workspace": "passed",
      "import": "passed",
      "build": "passed",
      "platform": "android",
      "screens": [
        {
          "name": "Screen1",
          "loadedBlocks": 72,
          "variableDropdowns": "passed",
          "editorFirstLoad": "passed",
          "editorSaveReload": "passed",
          "editorErrors": 0,
          "variableReferences": 11
        }
      ],
      "apk": "/tmp/aia-project-check-5C7RFt/BinaryHttpLab/apk/BinaryHttpLab.apk",
      "apkBytes": 4626435
    },
    {
      "file": "/home/qpzhou/sources/appinventor-sources/appinventor/docs/markdown/reference/creative/files/BinaryMqttController.aia",
      "name": "BinaryMqttController",
      "sha256": "58a0e2d1901ce9cc83f7cab4f7dbd919b970a2a1120fc1b8c3aa8645a71f89a4",
      "structure": "passed",
      "workspace": "passed",
      "import": "passed",
      "build": "passed",
      "platform": "android",
      "screens": [
        {
          "name": "Screen1",
          "loadedBlocks": 82,
          "variableDropdowns": "passed",
          "editorFirstLoad": "passed",
          "editorSaveReload": "passed",
          "editorErrors": 0,
          "variableReferences": 11
        }
      ],
      "apk": "/tmp/aia-project-check-5C7RFt/BinaryMqttController/apk/BinaryMqttController.apk",
      "apkBytes": 4597763
    },
    {
      "file": "/home/qpzhou/sources/appinventor-sources/appinventor/docs/markdown/reference/creative/files/BinaryMqttDevice.aia",
      "name": "BinaryMqttDevice",
      "sha256": "0b04d162cc458c7797a1d8bc6db6469c503ffa6f1f8d2d6c660e19d562c5bb14",
      "structure": "passed",
      "workspace": "passed",
      "import": "passed",
      "build": "passed",
      "platform": "android",
      "screens": [
        {
          "name": "Screen1",
          "loadedBlocks": 70,
          "variableDropdowns": "passed",
          "editorFirstLoad": "passed",
          "editorSaveReload": "passed",
          "editorErrors": 0,
          "variableReferences": 10
        }
      ],
      "apk": "/tmp/aia-project-check-5C7RFt/BinaryMqttDevice/apk/BinaryMqttDevice.apk",
      "apkBytes": 4597763
    },
    {
      "file": "/home/qpzhou/sources/appinventor-sources/appinventor/docs/markdown/reference/creative/files/BinaryTcpLab.aia",
      "name": "BinaryTcpLab",
      "sha256": "93d8813025e1ba7d7bc6852360be7d2c90a75b1623a7f2e00fd35164b668a96a",
      "structure": "passed",
      "workspace": "passed",
      "import": "passed",
      "build": "passed",
      "platform": "android",
      "screens": [
        {
          "name": "Screen1",
          "loadedBlocks": 419,
          "variableDropdowns": "passed",
          "editorFirstLoad": "passed",
          "editorSaveReload": "passed",
          "editorErrors": 0,
          "variableReferences": 107
        }
      ],
      "apk": "/tmp/aia-project-check-5C7RFt/BinaryTcpLab/apk/BinaryTcpLab.apk",
      "apkBytes": 4605955
    },
    {
      "file": "/home/qpzhou/sources/appinventor-sources/appinventor/docs/markdown/reference/creative/files/BinaryWebSocketLab.aia",
      "name": "BinaryWebSocketLab",
      "sha256": "7751664846b9835bb8650f0a613d29d783a3570346a7a6c7b98aafd94ce28239",
      "structure": "passed",
      "workspace": "passed",
      "import": "passed",
      "build": "passed",
      "platform": "android",
      "screens": [
        {
          "name": "Screen1",
          "loadedBlocks": 81,
          "variableDropdowns": "passed",
          "editorFirstLoad": "passed",
          "editorSaveReload": "passed",
          "editorErrors": 0,
          "variableReferences": 11
        }
      ],
      "apk": "/tmp/aia-project-check-5C7RFt/BinaryWebSocketLab/apk/BinaryWebSocketLab.apk",
      "apkBytes": 4597763
    },
    {
      "file": "/home/qpzhou/sources/appinventor-sources/appinventor/docs/markdown/reference/creative/files/SerialBinaryLab.aia",
      "name": "SerialBinaryLab",
      "sha256": "bc676ee74a6895e5e11231788039a5b342554c47cbe89dbb3ca42f6b65d88d74",
      "structure": "passed",
      "workspace": "passed",
      "import": "passed",
      "build": "passed",
      "platform": "android",
      "screens": [
        {
          "name": "Screen1",
          "loadedBlocks": 208,
          "variableDropdowns": "passed",
          "editorFirstLoad": "passed",
          "editorSaveReload": "passed",
          "editorErrors": 0,
          "variableReferences": 51
        }
      ],
      "apk": "/tmp/aia-project-check-5C7RFt/SerialBinaryLab/apk/SerialBinaryLab.apk",
      "apkBytes": 4651011
    }
  ],
  "unverified": [
    "browser_ui_import",
    "companion",
    "device_run",
    "harmony_hap"
  ],
  "regressions": {
    "schemaVersion": 1,
    "status": "passed",
    "startedAt": "2026-10-03T08:12:10.630Z",
    "evidenceDirectory": "/tmp/ai2-generation-regressions-1NKT6f",
    "checks": [
      {
        "name": "editorLoad",
        "status": "passed",
        "command": [
          "/usr/bin/node",
          "appengine/tools/block-preview/check-editor-load-regressions.js"
        ],
        "log": "/tmp/ai2-generation-regressions-1NKT6f/editorLoad.log",
        "exitCode": 0
      },
      {
        "name": "downloadVersions",
        "status": "passed",
        "command": [
          "python3",
          "appengine/tools/test-version-doc-downloads.py"
        ],
        "log": "/tmp/ai2-generation-regressions-1NKT6f/downloadVersions.log",
        "exitCode": 0
      },
      {
        "name": "compiler",
        "status": "passed",
        "command": [
          "/usr/bin/node",
          "appengine/tests/ai-assistant/test-block-script.js"
        ],
        "log": "/tmp/ai2-generation-regressions-1NKT6f/compiler.log",
        "exitCode": 0
      },
      {
        "name": "intentConverter",
        "status": "passed",
        "command": [
          "/usr/bin/node",
          "appengine/tests/ai-assistant/test-intent-converter.js"
        ],
        "log": "/tmp/ai2-generation-regressions-1NKT6f/intentConverter.log",
        "exitCode": 0
      },
      {
        "name": "preview",
        "status": "passed",
        "command": [
          "/usr/bin/node",
          "appengine/tests/ai-assistant/test-block-preview.js"
        ],
        "log": "/tmp/ai2-generation-regressions-1NKT6f/preview.log",
        "exitCode": 0
      },
      {
        "name": "skill",
        "status": "passed",
        "command": [
          "/usr/bin/node",
          "skills/ai2-app/tests/selftest.js"
        ],
        "log": "/tmp/ai2-generation-regressions-1NKT6f/skill.log",
        "exitCode": 0
      },
      {
        "name": "parameterStyles",
        "status": "passed",
        "command": [
          "/usr/bin/node",
          "appengine/tools/block-preview/check-parameter-field-styles.js"
        ],
        "log": "/tmp/ai2-generation-regressions-1NKT6f/parameterStyles.log",
        "exitCode": 0
      },
      {
        "name": "eventParameterValues",
        "status": "passed",
        "command": [
          "/usr/bin/node",
          "appengine/tools/block-preview/check-event-parameter-values.js"
        ],
        "log": "/tmp/ai2-generation-regressions-1NKT6f/eventParameterValues.log",
        "exitCode": 0
      },
      {
        "name": "documentBindingRegression",
        "status": "passed",
        "command": [
          "/usr/bin/node",
          "appengine/tools/block-preview/check-doc-block-bindings.js",
          "--self-test"
        ],
        "log": "/tmp/ai2-generation-regressions-1NKT6f/documentBindingRegression.log",
        "exitCode": 0
      },
      {
        "name": "documentVariableBindings",
        "status": "passed",
        "command": [
          "/usr/bin/node",
          "appengine/tools/block-preview/check-doc-block-bindings.js"
        ],
        "log": "/tmp/ai2-generation-regressions-1NKT6f/documentVariableBindings.log",
        "exitCode": 0
      }
    ],
    "resourceSha256": {
      "blockly-all.min.js": "49befd50cdc5bfd935fdb2503155224aa9fd842edaec56736c45aba62d80f7f9",
      "ai2-block-preview.min.js": "51dc69ee54d3f132bc845c65f3d9ae7a928092f1a544582cc93b427528496446",
      "component_types.json": "72829c9d9a39a58f019ed608be0793a3b5a824a3b365f979553d540f7967a504",
      "component_translations_zh.json": "5bd8a0a7a69f592549ca28a7dcf44f06eeed2453822242ef6f81c90f45d1d3b6"
    },
    "completedAt": "2026-10-03T08:12:32.150Z"
  },
  "editorResourceSha256": "b273175af95516a2e948e9e249f39564b0eee8ed93b2cf734850168b1600a275",
  "completedAt": "2026-10-03T08:14:34.401Z"
}
