)]}'
{
  "log": [
    {
      "commit": "50de14a4ee0d1ca15fee6aaf1e3a8f8a872014d9",
      "tree": "d59698eebe5848b9fd9635ecb01d5354a6786977",
      "parents": [
        "f47b8cb9dc7009090022e4ba7d4831ce60e8b8fc"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Jul 31 14:48:02 2026 +0900"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Jul 31 14:48:02 2026 +0900"
      },
      "message": "Write the memory mappable model form after training\n\nderekovecs memory maps \u003cmodel\u003e.vecs and \u003cmodel\u003e.words next to the model. When\nthey are missing it builds them on its first start, which takes a while and\nneeds write access to the directory the models live in. A server in a\ncontainer usually has that directory mounted read only and then does not start\nat all:\n\n  Converting /models/dereko-2026-i.vecs to memory mappable structures\n  Cannot open /models/dereko-2026-i.vecs.words or .../dereko-2026-i.vecs.vecs\n\ndereko2vec writes both files right after saving the vectors now, and\nvecs2mmap does it for models that were trained earlier.\n\nThe conversion mirrors init_net() of derekovecs including the order of the\nfloating point operations. Verified against the model of the derekovecs test\ndata: the vectors come out byte identical, and derekovecs serves the same\nneighbours and collocators from the generated files, with the model directory\nmounted read only and without converting anything itself.\n\nWords are cut off at 49 characters plus the terminator instead of filling all\n50 bytes, so that every entry is terminated within its own record.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\nChange-Id: I297e2db98bd425aa388e441aca6d2b0b14f0c66c\n"
    }
  ]
}
