)]}'
{
  "commit": "37f96075e1fdcab348c358be3ce2820eb5ac0a50",
  "tree": "d46205219fa10a6373ca793dbdbefbc8ccf96fc1",
  "parents": [
    "ef5b7c1b03f9e83b0d6ef9a4f10d56d4e1a44c5d"
  ],
  "author": {
    "name": "Marc Kupietz",
    "email": "kupietz@ids-mannheim.de",
    "time": "Thu Sep 03 07:18:11 2026 +0200"
  },
  "committer": {
    "name": "Marc Kupietz",
    "email": "kupietz@ids-mannheim.de",
    "time": "Thu Sep 03 07:18:11 2026 +0200"
  },
  "message": "CA: check the parameters a cacheAs file was created with\n\nUntil now, a cacheAs file was used whenever it existed. Changing a\nparameter and forgetting to delete the file therefore silently returned\nan analysis computed with the old parameters. Inferring the parameters\nfrom the cached data frame would not help much: of the 23 parameters\nthat affect the result, only node, vc, leftContextSize and\nrightContextSize are recoverable from it, which leaves out exactly the\nones that are typically tuned between runs, such as minOccur,\ntopCollocatesLimit, searchHitsSampleLimit, exactFrequencies, stopwords\nand threshold.\n\nThe parameters are therefore recorded when the file is written, and\ncompared on the next call. They are collected from the call frame rather\nthan listed explicitly, so that parameters added later are covered\nwithout having to remember to register them. Also recorded is the API\nURL, since reusing one cache file for two KorAP instances is a mistake\nworth catching, and, for reference only, the index revision: corpus\nupdates should not invalidate an analysis that was deliberately kept.\n\nIf parameters differ, the analysis is recomputed and the file\noverwritten, with a warning naming the differing parameters. That is\npreferred over an error: it never returns results that disagree with the\nrequested parameters, and never breaks a long pipeline. Users who want\nto keep an old analysis can pass a different cacheAs file name.\n\nThe parameters are stored in an attribute, so the file stays a plain\ndata frame for anyone reading it with readRDS(), and the attribute is\nstripped when loading, so the returned value is the same whether it came\nfrom the cache or not. Cache files written by 1.3.0 carry no attribute\nand are used as they are.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\nChange-Id: Ib21aa93fa3c2bf1cd42dd07dbfcbd2970841a412\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "732f8959d8dea670b431d8d7c3da63df6c8dec60",
      "old_mode": 33188,
      "old_path": "NEWS.md",
      "new_id": "49b43199a602c0251c4115befa2ff8a69e8b4e1c",
      "new_mode": 33188,
      "new_path": "NEWS.md"
    },
    {
      "type": "modify",
      "old_id": "d185a0c916369e063086e6c180fa6218f5951aaf",
      "old_mode": 33188,
      "old_path": "R/collocationAnalysis.R",
      "new_id": "2d686368c87ff09c1959ab3793cc9c835d9127da",
      "new_mode": 33188,
      "new_path": "R/collocationAnalysis.R"
    },
    {
      "type": "modify",
      "old_id": "02c3f037ba4dfeb766204404af331f0e366e9cc3",
      "old_mode": 33188,
      "old_path": "man/collocationAnalysis-KorAPConnection-method.Rd",
      "new_id": "734a2f635c73f55c59b8246ab373fcc79a81f8b7",
      "new_mode": 33188,
      "new_path": "man/collocationAnalysis-KorAPConnection-method.Rd"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "06e8ca186f1c305ea18f6dbfafa01edfb2f3b9b5",
      "new_mode": 33188,
      "new_path": "tests/testthat/test-collocation-cache-parameters.R"
    }
  ]
}
