)]}'
{
  "commit": "84f10d13f9041068a7da8f9dfc9b991e1049823a",
  "tree": "dd53ce1ebf874ac04939e5684fc39e81d87c2008",
  "parents": [
    "fce90bf1c6dedf72ce95516903dc0456fecd7e02"
  ],
  "author": {
    "name": "Roland McGrath",
    "email": "mcgrathr@google.com",
    "time": "Mon Oct 26 14:20:56 2026 -0700"
  },
  "committer": {
    "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Tue Oct 27 01:31:22 2026 -0700"
  },
  "message": "Propagate should_generate to sub-configs\n\nPreviously, Builder::ConfigDefined() did not propagate should_generate\nto sub-configs (only calling ScheduleItemLoadIfNecessary()), assuming\nthat the flag was irrelevant for configs since they are not written\ndirectly to Ninja files.\n\nHowever, Builder::CheckForBadItems() only populates bad_records with\nunresolved items that have should_generate() set, and only checks\ndirect unresolved dependencies of bad_records for missing definitions.\nWhen a config chain had an undefined sub-config (or cycle) and an\nintermediate config was defined after the referencing target or parent\nconfig, the intermediate config did not have should_generate() set. It\nwas omitted from bad_records, and CheckForBadItems() fell through to\nthe unhelpful \"I have no idea what went wrong, but these are\nunresolved, possibly due to an internal error:\" message.\n\nUpdate Builder::ConfigDefined() to call RecursiveSetShouldGenerate()\nwhen record-\u003eshould_generate() is true, and update\nBuilder::CheckForCircularDependencies() to check all bad_records rather\nthan only bad_records[0].\n\nProduced with Gemini assistance; reviewed and verified by the author.\n\nTest: gn_unittests\nAi-Assisted: true\nChange-Id: I16e1120d476ddc8b9ba82c7198c90ea1272c56a4\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/27880\nCommit-Queue: Roland McGrath \u003cmcgrathr@google.com\u003e\nReviewed-by: David Turner \u003cdigit@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "cdcf42295b5a7a5be6bfb93bc08656323fb5106d",
      "old_mode": 33188,
      "old_path": "src/gn/builder.cc",
      "new_id": "d2413f19d1ae731bd1ce8d99833f32f999ccfd13",
      "new_mode": 33188,
      "new_path": "src/gn/builder.cc"
    },
    {
      "type": "modify",
      "old_id": "1b38d0aad7389638ce474b3515a1fdb846cbbbb8",
      "old_mode": 33188,
      "old_path": "src/gn/builder_unittest.cc",
      "new_id": "e4fd5cca2fa1fbb449ae626c6148f72653f4369c",
      "new_mode": 33188,
      "new_path": "src/gn/builder_unittest.cc"
    }
  ]
}
