)]}'
{
  "commit": "2d91e9b14cd281d2c2938ca427c9dba60d3d82d3",
  "tree": "4bccb628e92cbf73188fc7121e1e45d9c03dcdcb",
  "parents": [
    "f2e191d0afbb5adcc6f12e1779c8b141fc9af996"
  ],
  "author": {
    "name": "Kim Morrison",
    "email": "kim@tqft.net",
    "time": "Tue Nov 25 02:40:58 2025 +0100"
  },
  "committer": {
    "name": "Kim Morrison",
    "email": "kim@tqft.net",
    "time": "Tue Nov 25 02:50:56 2025 +0100"
  },
  "message": "feat: implement `grind_annotated` command\n\n- Add syntax declaration in Init/Grind/Annotated.lean\n- Add elaborator with YYYY-MM-DD date validation in Lean/Elab/Tactic/Grind/Annotated.lean\n- Add SimplePersistentEnvExtension to track grind-annotated modules\n- Add filterGrindAnnotated wrapper for Selector\n- Apply filter to sineQuaNonSelector in default library suggestions\n- Set caller field to \"grind\" when grind tactic calls LibrarySuggestions\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c719cd4b9233d325efc5bf58bd43ceeb69d44641",
      "old_mode": 33188,
      "old_path": "src/Init/Data/List/Lemmas.lean",
      "new_id": "341de59c971acb7fdeb7a46bbab94f2b9379dff4",
      "new_mode": 33188,
      "new_path": "src/Init/Data/List/Lemmas.lean"
    },
    {
      "type": "modify",
      "old_id": "aa7ed691f81099529755108e88d8c7af3806e617",
      "old_mode": 33188,
      "old_path": "src/Init/Grind.lean",
      "new_id": "af0601e5178056fd6311f3eb999a20b5a1291c63",
      "new_mode": 33188,
      "new_path": "src/Init/Grind.lean"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "cb329fc4044b1aa78fccb8b01de8d9075950a484",
      "new_mode": 33188,
      "new_path": "src/Init/Grind/Annotated.lean"
    },
    {
      "type": "modify",
      "old_id": "e15ca2fab850b7dd9237e05a36fd5f6ba1e86eaf",
      "old_mode": 33188,
      "old_path": "src/Lean/Elab/Tactic/Grind.lean",
      "new_id": "b431b92e50fd5a1f9bc8d1cfd2df498baf1104d7",
      "new_mode": 33188,
      "new_path": "src/Lean/Elab/Tactic/Grind.lean"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f92e7d96182cee7bf280ad0e63495c9c7894de92",
      "new_mode": 33188,
      "new_path": "src/Lean/Elab/Tactic/Grind/Annotated.lean"
    },
    {
      "type": "modify",
      "old_id": "52fab04568349cc96c42075255c6e38c8caef15e",
      "old_mode": 33188,
      "old_path": "src/Lean/Elab/Tactic/Grind/Main.lean",
      "new_id": "ff3e6afdb73a6b1c7c0b41500627f1a6d7188cd2",
      "new_mode": 33188,
      "new_path": "src/Lean/Elab/Tactic/Grind/Main.lean"
    },
    {
      "type": "modify",
      "old_id": "c053da959998d9e9a90e61fd3b698489017603d8",
      "old_mode": 33188,
      "old_path": "src/Lean/LibrarySuggestions/Basic.lean",
      "new_id": "b92b337b772beb59f57bcb750a1415d0666eaedb",
      "new_mode": 33188,
      "new_path": "src/Lean/LibrarySuggestions/Basic.lean"
    },
    {
      "type": "modify",
      "old_id": "976155419dbc601f0c2a883cf321a3815be905df",
      "old_mode": 33188,
      "old_path": "src/Lean/LibrarySuggestions/Default.lean",
      "new_id": "03c6be41088c94e4bb5c8c3f6667f4f296eec845",
      "new_mode": 33188,
      "new_path": "src/Lean/LibrarySuggestions/Default.lean"
    },
    {
      "type": "modify",
      "old_id": "79a0e58eddae8d9204ad48029c570bc7c84302ad",
      "old_mode": 33188,
      "old_path": "src/stdlib_flags.h",
      "new_id": "108af479bc04934140ab689d025ed51ca2d02b01",
      "new_mode": 33188,
      "new_path": "src/stdlib_flags.h"
    },
    {
      "type": "modify",
      "old_id": "767cc1863e5852d7cea7f5fd16ea63a010c5703d",
      "old_mode": 33188,
      "old_path": "tests/lean/run/library_suggestions_persistent.lean",
      "new_id": "de8db28d43a249d3b9858c4dc29d8c1db3056a9b",
      "new_mode": 33188,
      "new_path": "tests/lean/run/library_suggestions_persistent.lean"
    }
  ]
}
