)]}'
{
  "log": [
    {
      "commit": "076bc9711a7155077c8cc2e9dc451ca4678f7df7",
      "tree": "d19c255b7d788cf4fc79658b4cceb8db969e9ac9",
      "parents": [
        "c5a939102931281951f3f9b8b740b99a1399c0eb"
      ],
      "author": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Thu Nov 05 16:42:09 2026 +0100"
      },
      "committer": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Thu Nov 05 16:42:09 2026 +0100"
      },
      "message": "git: Keep the cgit image away from gitolite\u0027s ~/.ssh.\n\nThe image\u0027s sshd setup runs chown -R on $S6_USERHOME/.ssh, which was\ngitolite\u0027s .ssh on the shared volume, and broke gitolite.  Give cgit\u0027s\nuser a home inside the container and set PUID to that user so its key\ngeneration succeeds.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\nChange-Id: I67527fba73527fc71b87aac876ec1ea09860c76b\n"
    },
    {
      "commit": "68157fd7f91183d944183c9175eb46362d60a4ff",
      "tree": "97877660372ba9b285ce797a222f88ab9ba83587",
      "parents": [
        "e4807d80026b16438a907d8543bc7c6452483f93"
      ],
      "author": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Thu Nov 05 15:58:35 2026 +0100"
      },
      "committer": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Thu Nov 05 15:58:35 2026 +0100"
      },
      "message": "git: Update cgit image to 1.3_20260805.\n\nThe new image serves cgit at / via a lighttpd rewrite, so the Traefik\nrewrite only strips .git suffixes now.  Packages are installed through\nS6_NEEDED_PACKAGES instead of a command override.  CGIT_SKIP_PERMFIX and\nan empty S6_USER keep the image from chowning gitolite\u0027s home volume.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\nChange-Id: Ifc6fade953f8d584efc38c1bdcd920f3814c3494\n"
    },
    {
      "commit": "7cc90d41ca0524aee21f31e673404ad991725304",
      "tree": "824db4274873e1d2360df2f514a6c7bbc90b8396",
      "parents": [
        "aef87fc607281c13b75b971c29595b2b101807a8"
      ],
      "author": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Thu Nov 05 14:43:06 2026 +0100"
      },
      "committer": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Thu Nov 05 14:43:06 2026 +0100"
      },
      "message": "Pin coturn, Dendrite and gitolite to the versions running.\n\ncoturn 4.18.0, Dendrite v0.15.2 and gitolite v3.6.15 (same digest as\nlatest) instead of floating :latest tags with imagePullPolicy Always.\nThe Dendrite manifest also catches up with the live memory limit.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\nChange-Id: I2e60f8aff4d6dc50cd12d2fc50c1553aa99bb71f\n"
    },
    {
      "commit": "8528b5239fd77993812adebc4b3470541e1972cb",
      "tree": "86b976e7e6b1fdd46b4a84a0323182069f46b092",
      "parents": [
        "6fa2337c2312e81d544c5ba63f1a09533f994679"
      ],
      "author": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Thu Nov 05 10:57:03 2026 +0100"
      },
      "committer": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Thu Nov 05 10:57:03 2026 +0100"
      },
      "message": "git: Replace the cgit Ingress with a standalone Certificate.\n\nThe cgit IngressRoute only needed the Ingress for cert-manager\u0027s\ningress-shim.  HTTP-01 challenges are served by Traefik\u0027s ingress-nginx\ncompat provider (verified 2026-11-05).\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\nChange-Id: Ia3c66912a2a19f8a5eb54a1f2648abfc832838a5\n"
    },
    {
      "commit": "b4f91a1000d4c6240a9e558495ada6a4b1c3f898",
      "tree": "78939777c59d1561a30d655f966e93bc7bd1ff62",
      "parents": [
        "880a160501b6e285a6a724fd38747f0382997f62"
      ],
      "author": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Wed Nov 04 21:36:23 2026 +0100"
      },
      "committer": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Wed Nov 04 21:36:23 2026 +0100"
      },
      "message": "git: Serve cgit via a Traefik IngressRoute.\n\nTraefik\u0027s ingress-nginx provider rejects the cgit Ingress because of its\nlimit_req snippet.  Add an IngressRoute with the same rewrite and a\nglobal per-host rate limit (5 r/s, burst 20) as Traefik middlewares.\nThe Ingress stays until ingress-nginx is gone.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\nChange-Id: Ib5d6c229380a9f181695deec0b5faa2e90d24a53\n"
    },
    {
      "commit": "191bbf126ac037ffc902148b8a1cf583369dbfc1",
      "tree": "d97a1ea4e7692d72291b8a82516583e5c24b09a9",
      "parents": [
        "1f53cd8e2f9bf5f7aa52bbc06d786f10fcd5d950"
      ],
      "author": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Wed Nov 04 19:59:58 2026 +0100"
      },
      "committer": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Wed Nov 04 19:59:58 2026 +0100"
      },
      "message": "git: Cap cgit at 5 requests per second.\n\nA crawler botnet with thousands of rotating IPs and browser user agents\nsends about 60 requests per second to cgit, almost all of which time out\n(499) and saturate ifirn\u0027s CPU.  Neither the per-bot limit nor a per-IP\nlimit catches it, so add a per-host limit_req zone in ingress-nginx and\nuse it for git.benkard.de.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\nChange-Id: I54a92f89d36e1a1800dfdd82310b75c4b3a73b7d\n"
    },
    {
      "commit": "7f8981a5e418880e9dbf48db7f7e296a9782787d",
      "tree": "cacf333f3f59685bcfba5040a682a779a67d4f5e",
      "parents": [
        "65b41324ca548710ac5caef3b72b80ea9b8c1bf8"
      ],
      "author": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Wed Nov 04 11:41:17 2026 +0100"
      },
      "committer": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Wed Nov 04 11:41:17 2026 +0100"
      },
      "message": "git: Sync GitHub replication job with cluster state.\n\nThe live CronJob also mirrors kellertomaten/kartipalist, includes the\nmulkbav and dose repositories, and logs SKIP/COPY lines for each\nrepository and branch.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\nChange-Id: I663b5e6b96f584a10594f0f815d6e671a58deb46\n"
    },
    {
      "commit": "65b41324ca548710ac5caef3b72b80ea9b8c1bf8",
      "tree": "370485476a8b199c0b907385937c1c21e1c48f6d",
      "parents": [
        "05e482e3b905b1a32575239da6d6280ea4182efe"
      ],
      "author": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Wed Nov 04 11:41:16 2026 +0100"
      },
      "committer": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Wed Nov 04 11:41:16 2026 +0100"
      },
      "message": "git: Pin cgit image to the deployed version.\n\nThe cluster runs docker.io/woahbase/alpine-cgit:x86_64_1.2.1_20210405,\nnot :latest.  Sync the manifest with the live Deployment.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\nChange-Id: Ia94cf7e3844b3186c1cb5d8781b34b711bf56cd7\n"
    },
    {
      "commit": "8c9b6135ae950c29cdb3e25d37ce0fc50c60e3fb",
      "tree": "0902f6618df82032d79b730852174881c271177c",
      "parents": [
        "faf5a0974b6edc0f875b0899878d4ce3b95b5971"
      ],
      "author": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Wed Mar 06 12:51:33 2024 +0100"
      },
      "committer": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Wed Mar 06 12:51:33 2024 +0100"
      },
      "message": "git: Add Gitolite back.\n\nChange-Id: If7c9e57546f4335830f7ff5277e31ccd2cd7b091\n"
    },
    {
      "commit": "faf5a0974b6edc0f875b0899878d4ce3b95b5971",
      "tree": "6495af031b6710370707e035f62002bebae28040",
      "parents": [
        "e96ddfba322ddaf633fca91119903b84692f778b"
      ],
      "author": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Wed Mar 06 12:51:07 2024 +0100"
      },
      "committer": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Wed Mar 06 12:51:07 2024 +0100"
      },
      "message": "git: Install packages for CGit Markdown rendering.\n\nChange-Id: I5b2eac3cf9e6f888dae16d37defadb4c271e2b0c\n"
    },
    {
      "commit": "e96ddfba322ddaf633fca91119903b84692f778b",
      "tree": "40ec2dfe562babad397e9fb6205bf234ebe0fcbc",
      "parents": [
        "06e9d791784cf6e38508041e6faa7016fd308a27"
      ],
      "author": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Wed Mar 06 12:50:00 2024 +0100"
      },
      "committer": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Wed Mar 06 12:50:00 2024 +0100"
      },
      "message": "git: Sync between GitLab, Gerrit, and GitHub.\n\nIt was previously only GitLab and GitHub.\n\nChange-Id: I2aa3041c030f4aea7384947e586fe433d80e2742\n"
    },
    {
      "commit": "06e9d791784cf6e38508041e6faa7016fd308a27",
      "tree": "251d379c3ccb10c5af3786468208b4cf287b4757",
      "parents": [
        "b214893ebecab32557a7bd9e811e7ffcb599ba88"
      ],
      "author": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Wed Mar 06 12:49:24 2024 +0100"
      },
      "committer": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Wed Mar 06 12:49:24 2024 +0100"
      },
      "message": "git: Add more repositories to sync between remotes.\n\nChange-Id: I690b65e7726a043ffeb06658912405e647a54410\n"
    },
    {
      "commit": "11298da4b8bb8a19d2696fc2f263938133124420",
      "tree": "b73ff6d5ca4994a473f68c0e9c188704d5d146f2",
      "parents": [
        "40bdab6942855592037707f53f87ef978078f856"
      ],
      "author": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Sun Apr 02 18:27:17 2023 +0200"
      },
      "committer": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Sun Apr 02 18:27:17 2023 +0200"
      },
      "message": "git: Sync GitLab --\u003e Gitolite --\u003e GitHub.\n\nCloses #3, #5.\n\nChange-Id: I92426323d6ba9bd8d7f7cfa7fc4af37d3b9bbb93\n"
    },
    {
      "commit": "cbdcd90f32086a6032e2dd139eff9fa7edb40f7d",
      "tree": "4a068fbe09f10e2bad373c10c0766684558fd850",
      "parents": [
        "9216f7bda908a4da2c45b9ad1b854daa161f43fb"
      ],
      "author": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Tue Dec 27 15:31:15 2022 +0100"
      },
      "committer": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Tue Dec 27 15:31:15 2022 +0100"
      },
      "message": "git: Set concurrency policy.\n\nChange-Id: Iff4d53f7866f3069899813a4dd88703e67c0b75a\n"
    },
    {
      "commit": "7d78f7f911c2687180759770402861fa00bebaff",
      "tree": "e972d7b502a71a74b5588eebfc37c43db85505e2",
      "parents": [
        "c756035c2d2545551641fb6fe3b04c04ff23fa47"
      ],
      "author": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Tue Dec 28 17:44:20 2021 +0100"
      },
      "committer": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Tue Dec 28 17:44:20 2021 +0100"
      },
      "message": "git: Add GitHub synchronization.\n\nChange-Id: I265ee9627d113febc9da97aee3a4324367a30fc7\n"
    },
    {
      "commit": "c756035c2d2545551641fb6fe3b04c04ff23fa47",
      "tree": "519036c5945be86e2472ac39dd7b9474cfaa3935",
      "parents": [
        "ae8f4ccff6059195fe71d705f5f969e7caa70595"
      ],
      "author": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Sun Sep 05 12:25:13 2021 +0200"
      },
      "committer": {
        "name": "Matthias Andreas Benkard",
        "email": "code@mail.matthias.benkard.de",
        "time": "Sun Sep 05 12:25:13 2021 +0200"
      },
      "message": "Git: Import.\n\nChange-Id: I08532649a9cf8bcea8a79b8cade8bd6a87fdc12c\n"
    }
  ]
}
