)]}'
{
  "commit": "de47206bee6ed1d0ea07df25534aa2425e07c6ce",
  "tree": "1a046b243857450b1a4c4b60696138a90853309a",
  "parents": [
    "a84457cc6c33f789341cd73a321dd47be3129095"
  ],
  "author": {
    "name": "Steven Troxler",
    "email": "stroxler@meta.com",
    "time": "Mon Sep 21 10:03:13 2026 -0700"
  },
  "committer": {
    "name": "meta-codesync[bot]",
    "email": "215208954+meta-codesync[bot]@users.noreply.github.com",
    "time": "Mon Sep 21 10:03:13 2026 -0700"
  },
  "message": "Consolidate symbolic expression tests\n\nSummary:\nMove arithmetic equivalence and generic expression substitution into the shape-generics suite. Representative concrete, symbolic, chained, commutative, and incompatible cases replace the repetitive outcome-separated coverage.\n\n___\n\nDifferential Revision: D120880634\n\nfbshipit-source-id: 8a36945a1d7188500850b1275cc6d39b1e3b28af\n",
  "tree_diff": [
    {
      "type": "delete",
      "old_id": "0df241bfec3e6be5b19164de442fe539b54166c3",
      "old_mode": 33188,
      "old_path": "tensor-shapes/pyrefly-torch-stubs/test/negative_tests/test_tensor_expr_equiv.py",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "6bfb86226f2e986c285c1dba676566e4deb417bc",
      "old_mode": 33188,
      "old_path": "tensor-shapes/pyrefly-torch-stubs/test/negative_tests/test_tensor_generic_exprs.py",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "319d42822f9a320bf3aa6bac4de56ce0f088554f",
      "old_mode": 33188,
      "old_path": "tensor-shapes/pyrefly-torch-stubs/test/test_shape_generics.py",
      "new_id": "4fe28acbb0ca268ccad9f6682020227e2891b106",
      "new_mode": 33188,
      "new_path": "tensor-shapes/pyrefly-torch-stubs/test/test_shape_generics.py"
    }
  ]
}
