)]}'
{
  "commit": "2084c45a3d7a782cbb480f364862174e2fd39333",
  "tree": "5d9f2f80755801da4098747616897f772ef46233",
  "parents": [
    "a1ec46d7f7bb58eee59bdf5730ad5693186fd4cc"
  ],
  "author": {
    "name": "shahan",
    "email": "shahan@google.com",
    "time": "Fri Oct 23 16:28:21 2026 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Fri Oct 23 16:29:22 2026 -0700"
  },
  "message": "Move upload layout computation into UploadLayout, formerly SelectionPartition.\n\nPure refactoring; no behavior change.\n\nFileOpNodeMemoizingLookup.computeLeafIdsAndUploadOrder produced two results from\none walk: dense leaf IDs, computed by the private NodeGraphLayout, and the\nupload order, computed by SelectionPartition. Moves the method, its\nDenseLeafIdsAndUploadOrder result and NodeGraphLayout into SelectionPartition,\nso that the whole layout lives in one class and FileOpNodeMemoizingLookup goes\nback to only materializing nodes.\n\nSince the class now assigns leaf IDs as well as partitioning the selection, it\nis renamed to UploadLayout, and its test to UploadLayoutTest.\n\n- UploadLayout.computeLeafIdsAndUploadOrder is static and takes the lookup,\n  whose isSkipped and resolvedNode become package-private.\n- The computeLeafIdsAndUploadOrder tests stay in FileOpNodeMemoizingLookupTest,\n  which has the build fixture they need, and only change their call site.\n\nPiperOrigin-RevId: 1005947594\nChange-Id: I596d781841be1ab599a6de8253fc1c60f0571e0e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2290018b30db0b2d73fb9e02338e14b990489c4d",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/analysis/BUILD",
      "new_id": "f93a1b12280bee76f55fd21b7143bd01a79fbd4d",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/analysis/BUILD"
    },
    {
      "type": "modify",
      "old_id": "40a3675a130af359449af2e66df106801203683e",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/analysis/FileOpNodeMemoizingLookup.java",
      "new_id": "2a1cfc8954358cb4b0bdaedf0ddfba5e85f36885",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/analysis/FileOpNodeMemoizingLookup.java"
    },
    {
      "type": "modify",
      "old_id": "60393035dc940b60fb1c4cf91219fd15e45baa97",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/analysis/LeafIdAssignment.java",
      "new_id": "4deb7c05e1dde8107b58aca1d722be7dc7971dc2",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/analysis/LeafIdAssignment.java"
    },
    {
      "type": "modify",
      "old_id": "bb3d9cef9fbaf3043a0cc98c1cba2ed4b93db1e3",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/analysis/SelectedEntrySerializer.java",
      "new_id": "e8ee79687ccb190653066a2c2fa03d7125d6cca8",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/analysis/SelectedEntrySerializer.java"
    },
    {
      "type": "delete",
      "old_id": "0f5033bfdeca20cbf89c1ca04f2b98eefe79b759",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/analysis/SelectionPartition.java",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "360bb4a09faec538d69b5252dfbffa6ba71351fd",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/analysis/UploadLayout.java"
    },
    {
      "type": "modify",
      "old_id": "a82dce6133dd043f2537ec6c4e817cee83e61f62",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/skyframe/serialization/analysis/BUILD",
      "new_id": "1435b6b1e9f1e4027f2f307f28eb3531a32f37e8",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skyframe/serialization/analysis/BUILD"
    },
    {
      "type": "modify",
      "old_id": "2cfd0fcba06085354a3712bd6e396af465234289",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/skyframe/serialization/analysis/FileOpNodeMemoizingLookupTest.java",
      "new_id": "bb0eaa64df1881bdd5beec8a50a8374d3ba97741",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skyframe/serialization/analysis/FileOpNodeMemoizingLookupTest.java"
    },
    {
      "type": "rename",
      "old_id": "afe6bf467d93dd9038305c7d015c86d941e1295b",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/skyframe/serialization/analysis/SelectionPartitionTest.java",
      "new_id": "12aaf9d815cbab7aa75a9a5d1b9798bf7253afc4",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skyframe/serialization/analysis/UploadLayoutTest.java",
      "score": 91
    }
  ]
}
