)]}'
{
  "commit": "9dcbb5668217b3c625e7fc7bc703d372b797866e",
  "tree": "8f087d968543c1472d28ea9f676c61ea627ce1da",
  "parents": [
    "5dad4a08d68421a7105e77540c26d8bb639ff6d2"
  ],
  "author": {
    "name": "Takuto Ikuta",
    "email": "tikuta@google.com",
    "time": "Mon Jun 15 00:16:30 2026 -0700"
  },
  "committer": {
    "name": "dawn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "dawn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Mon Jun 15 00:16:30 2026 -0700"
  },
  "message": "[siso] Precise input verification for dawn generators\n\nTo enable safe and correct remote execution (Siso/RBE) for Dawn\u0027s\ncode generators, this CL implements a robust self-verification\nsystem that asserts GN inputs match actual Python dependencies.\n\nKey improvements:\n1. Strict Assertion System:\n   `generator_lib.py` now accepts `--expected-inputs-file` and\n   asserts that the actual dependencies (including imported Python\n   modules and templates) match the GN-specified inputs exactly.\n\n2. Glob Pattern Support:\n   To handle dynamic dependencies like third-party libraries (Jinja2,\n   MarkupSafe) and Git metadata (.git/HEAD), we introduced glob pattern\n   matching in the expected inputs (e.g. `*third_party/jinja2/*`).\n   The generator uses `fnmatch` to strictly detect missing inputs\n   while safely allowing unused, over-specified inputs. Misplaced\n   glob patterns are filtered out from Ninja\u0027s physical inputs in\n   `generator_lib.gni`.\n\n3. Dynamic Argument Construction:\n   The `dawn_json_generator` template in `dawn_generator.gni` now\n   automatically detects the presence of optional files (like\n   `dawn_wire.json` or `dawn_kotlin.json`) in the target\u0027s `inputs` using\n   `filter_include`, and dynamically appends the corresponding generator\n   arguments (e.g., `--wire-json`). This completely eliminates the need to\n   hardcode target-to-JSON mappings in both Python and GN sides.\n\n4. Explicit Target inputs:\n   All individual generator targets in `BUILD.gn` files now explicitly\n   list their required templates and JSON files in their `inputs`,\n   ensuring clean and maintainable dependency tracking.\n\nBug: 466134210\nChange-Id: I0155aa259474c8e8b8e8e08861c55fd1fed63c04\nReviewed-on: https://dawn-review.googlesource.com/c/dawn/+/315915\nCommit-Queue: Corentin Wallez \u003ccwallez@chromium.org\u003e\nReviewed-by: Brandon Jones \u003cbajones@chromium.org\u003e\nAuto-Submit: Takuto Ikuta \u003ctikuta@google.com\u003e\nReviewed-by: Corentin Wallez \u003ccwallez@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "bcce8848ef62722d01cf1fe772f12d9603c55299",
      "old_mode": 33188,
      "old_path": "generator/dawn_generator.gni",
      "new_id": "51c7d3a8598b7416d9bbd04aa5d39146afe53f18",
      "new_mode": 33188,
      "new_path": "generator/dawn_generator.gni"
    },
    {
      "type": "modify",
      "old_id": "1900b02d6e0340adcd29f06d14337768d96906ff",
      "old_mode": 33188,
      "old_path": "generator/dawn_json_generator.py",
      "new_id": "216efef2db24a7503ee655566cd7adbf7612a6e9",
      "new_mode": 33188,
      "new_path": "generator/dawn_json_generator.py"
    },
    {
      "type": "modify",
      "old_id": "4d5c1285d2f3a0827286a7772a8ba78c982e1c0d",
      "old_mode": 33188,
      "old_path": "generator/generator_lib.gni",
      "new_id": "380c04697508772e08d20e8beb924d6383ba383b",
      "new_mode": 33188,
      "new_path": "generator/generator_lib.gni"
    },
    {
      "type": "modify",
      "old_id": "e9f8c2e2ab91a14c2ed3787f025a9a67d78c4bd8",
      "old_mode": 33188,
      "old_path": "generator/generator_lib.py",
      "new_id": "d689e6d79f00d29f5a8b5fa1d33c295a84955725",
      "new_mode": 33188,
      "new_path": "generator/generator_lib.py"
    },
    {
      "type": "modify",
      "old_id": "4729ac093bb08ec512e3b9d7d7e651ea3cb72205",
      "old_mode": 33188,
      "old_path": "include/dawn/BUILD.gn",
      "new_id": "c73ce3fe40a07cb3d3b8237e333b80029701faf9",
      "new_mode": 33188,
      "new_path": "include/dawn/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "0882401498227157bd0eeece9395da5bd18952f8",
      "old_mode": 33188,
      "old_path": "src/dawn/BUILD.gn",
      "new_id": "20f26215c90a30a9b5ed0fd4b846717f5666f24f",
      "new_mode": 33188,
      "new_path": "src/dawn/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "a2669b5ace54fe387f4b56455d7053e925928b8b",
      "old_mode": 33188,
      "old_path": "src/dawn/native/BUILD.gn",
      "new_id": "5386a0ce07c38146975ff0a3549b67de9d9afbac",
      "new_mode": 33188,
      "new_path": "src/dawn/native/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "f3d36f51778b80d9af9afa39380dae8d22386c5d",
      "old_mode": 33188,
      "old_path": "src/dawn/tests/BUILD.gn",
      "new_id": "c608b37d5b26a9eb8dd275bc96fad57732562c10",
      "new_mode": 33188,
      "new_path": "src/dawn/tests/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "875d04c09b180145c46324f7436177e39ca5c0e3",
      "old_mode": 33188,
      "old_path": "src/dawn/utils/BUILD.gn",
      "new_id": "86dcc6ab43953111c1772c464fb4cb10959e0073",
      "new_mode": 33188,
      "new_path": "src/dawn/utils/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "4dc787d071c94a4d3bb0ab3a232c911312122a92",
      "old_mode": 33188,
      "old_path": "src/dawn/wire/BUILD.gn",
      "new_id": "3782ea20db85e8132d42d74aa45fe9468419419c",
      "new_mode": 33188,
      "new_path": "src/dawn/wire/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "718e3c4c269a3e1bb185056ac28e6a0e81a1f050",
      "old_mode": 33188,
      "old_path": "src/emdawnwebgpu/BUILD.gn",
      "new_id": "67dd00353559b3f74d8f68df9eebd412f05371e3",
      "new_mode": 33188,
      "new_path": "src/emdawnwebgpu/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "d054d6242474becae632a0b2ee9131c328c3af23",
      "old_mode": 33188,
      "old_path": "tools/android/BUILD.gn",
      "new_id": "66f398111338e75b76d8cbe7eb2cc9bf317bd134",
      "new_mode": 33188,
      "new_path": "tools/android/BUILD.gn"
    }
  ]
}
