)]}'
{
  "commit": "345547058f9d7e0cb2f5968582aace578885b80f",
  "tree": "5557c50ac746a0fafb6c521576f48f367f42ee89",
  "parents": [
    "517ff4b6e333c2ef5671339760ffc9a1ea2aa0f2"
  ],
  "author": {
    "name": "Marc Kupietz",
    "email": "kupietz@ids-mannheim.de",
    "time": "Sun Jun 07 10:56:50 2026 +0200"
  },
  "committer": {
    "name": "Marc Kupietz",
    "email": "kupietz@ids-mannheim.de",
    "time": "Sun Jun 07 10:56:50 2026 +0200"
  },
  "message": "Add stand-off metadata support for Krill output\n\nCollect text-level metadata from stand-off XML files (one file per corpus,\nin the \u003cstandOff\u003e form produced e.g. by the wiki-taxonomy classifier) and\nemit it as Krill metadata fields, joined to texts by raw_text/@docid.\n\n- StandoffMetadata: auto-detects inputs by content (root element \u003cstandOff\u003e),\n  so no CLI option is needed; filenames are cosmetic. Classification layers\n  become type:keywords fields named after the layer xml:id; links layers\n  become type:attachement (KorAP-link encoding).\n- By default ingest everything in the file (the annotation tool already\n  applied its own top-k/threshold). The top-n/min-cert knobs are kept as\n  constants/params for a future --standoff-select option.\n- KrillJsonGenerator: new StandoffField type and KrillTextData.standoffFields,\n  rendered after header fields; never clobbers an existing header field key.\n- KorapXmlTool: detects and strips stand-off XML inputs from the ZIP list,\n  parses them (krill only; warns otherwise), and injects per text.\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n\nChange-Id: Ibd50d9393c052ab8172d1e41759b19ce47380e2c\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "65421285f55b9e8e1a4df8046d03f7f02c5da380",
      "old_mode": 33188,
      "old_path": "app/src/main/kotlin/de/ids_mannheim/korapxmltools/KorapXmlTool.kt",
      "new_id": "bdd01d24dc47a1c5170f8a9ba0e6323e9d3ddd88",
      "new_mode": 33188,
      "new_path": "app/src/main/kotlin/de/ids_mannheim/korapxmltools/KorapXmlTool.kt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "484660224e5c65e2decdde9c78314b684916c9b1",
      "new_mode": 33188,
      "new_path": "app/src/main/kotlin/de/ids_mannheim/korapxmltools/StandoffMetadata.kt"
    },
    {
      "type": "modify",
      "old_id": "b57af66ece0180433555418ab3bb6940bddf99bf",
      "old_mode": 33188,
      "old_path": "app/src/main/kotlin/de/ids_mannheim/korapxmltools/formatters/KrillJsonGenerator.kt",
      "new_id": "e3fafeae56d675772d817c32a8211b13be34d77c",
      "new_mode": 33188,
      "new_path": "app/src/main/kotlin/de/ids_mannheim/korapxmltools/formatters/KrillJsonGenerator.kt"
    },
    {
      "type": "modify",
      "old_id": "fb742fb8342d1bd905b293d6e3792ac66f12ab08",
      "old_mode": 33188,
      "old_path": "app/src/test/kotlin/de/ids_mannheim/korapxmltools/KrillJsonGeneratorTest.kt",
      "new_id": "431e31b3d42bc87baee312911fd1e27964a1ae73",
      "new_mode": 33188,
      "new_path": "app/src/test/kotlin/de/ids_mannheim/korapxmltools/KrillJsonGeneratorTest.kt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4138bd12eaa5f0fa4e5b82ea7d5590b7bd6566a3",
      "new_mode": 33188,
      "new_path": "app/src/test/resources/rei_sample.domains.meta.xml"
    }
  ]
}
