)]}'
{
  "log": [
    {
      "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"
    }
  ]
}
