)]}'
{
  "commit": "270c3d38832c9ead3eb310ebbade94aa5fe275bb",
  "tree": "00358d17d3ecf8d123da4e60f252b0f05264d547",
  "parents": [
    "babcc346b496e25ee970c4f3049a820943a3a6f0"
  ],
  "author": {
    "name": "deacon",
    "email": "marksoccerman1@aol.com",
    "time": "Mon Mar 16 00:51:37 2026 -0400"
  },
  "committer": {
    "name": "deacon",
    "email": "marksoccerman1@aol.com",
    "time": "Mon Mar 16 00:51:37 2026 -0400"
  },
  "message": "fix: address Copilot review feedback on learning-svc-model-cache\n\n- Coerce cache_ttl to int (clamped \u003e\u003d 1s) since get_config() may return string\n- Rebuild model into a fresh local set to remove stale entries from deleted\n  abilities before assigning to self.model\n- Fix test: explicitly set mock_data_svc.locate \u003d AsyncMock() before\n  assert_not_called() to avoid false-positive child mock assertion\n- Add test for TTL-expiry rebuild (dirty\u003dFalse but TTL elapsed)\n- Add test for string TTL coercion path\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5c9a7049f7e2c1caf3a295d5e3330377d566f37f",
      "old_mode": 33188,
      "old_path": "app/service/learning_svc.py",
      "new_id": "f8216081ffac4bd0d4f61e9e56dfc9d6de6047f8",
      "new_mode": 33188,
      "new_path": "app/service/learning_svc.py"
    },
    {
      "type": "modify",
      "old_id": "d510d1e98943316e03640232700c28d202b7176e",
      "old_mode": 33188,
      "old_path": "tests/test_learning_svc_cache.py",
      "new_id": "8b0cfcefa16ced726c31f9ff953247b801bb29c3",
      "new_mode": 33188,
      "new_path": "tests/test_learning_svc_cache.py"
    }
  ]
}
