)]}'
{
  "commit": "0419e8d3826caa6fef5cefd5ce82898a970c19a9",
  "tree": "1b83098054649d1df1c9f0f149511100b33dce03",
  "parents": [
    "45c84f89d4d5da565267e553914814bbf7ef09ac"
  ],
  "author": {
    "name": "Kevin Lindkvist",
    "email": "lindkvist@fuchsia.infra.roller.google.com",
    "time": "Wed Sep 30 14:14:47 2026 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Wed Sep 30 15:19:41 2026 -0700"
  },
  "message": "[roll] Roll fuchsia [beads][planter] Add 3 machinery lessons\n\nMachinery updates planter learned from migration reviews. Each lesson\nin lessons/ explains the root cause and why it is a general rule:\n\n- 2026-09-29-bazel-device-and-host-test-migration.md: C++ device tests\n  and host tests migrate to Bazel (fx_test, host_*_test) via\n  bazel_test_suite; Rust device tests stay in GN\n- 2026-09-29-gn-build-argument-export-to-bazel-bidirectional.md: GN\n  build-argument export to Bazel: bidirectional LINT.IfChange/ThenChange\n  pairs into large shared build files must be scoped with named labels\n- 2026-09-29-gn-dependent-build-verification-empty-ninja.md: Gn\n  dependent build verification empty ninja outputs\n- 2026-09-29-preexisting-unwired-rust-with-unit-tests-parity.md:\n  Preexisting unwired rust with unit tests parity\n\nNO_IFTTT\u003dplanter machinery quotes LINT.IfChange blocks as examples\n\nTest: None, planter machinery (prompts and checks), not in build.\nOriginal-Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1855676\nOriginal-Original-Revision: 5f6a4514a4e2423ca4a6b99c9fbdc73a64af67fa\nGitOrigin-RevId: 1b8a280e01c61454279a651ea3ca141fd2cd5e7d\nChange-Id: I39b94f8f9bec52f0357e2dce20b36d9e81b0529a\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9c51635b941add630111e5a90cb8400e262da7b3",
      "old_mode": 33188,
      "old_path": "stem",
      "new_id": "3b558a7574736376da7166808295a92aefc0fd5c",
      "new_mode": 33188,
      "new_path": "stem"
    }
  ]
}
