)]}'
{
  "log": [
    {
      "commit": "3fe231584d547cdf491e00b67ce2682b714bbf81",
      "tree": "1469ea7a89103b6f3b719f852aa2170390f47275",
      "parents": [
        "1aec1f2a9e9c95a3ce6705ba07cb52206dd69cbb"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Mon Aug 31 14:29:55 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 31 14:29:55 2026 +0200"
      },
      "message": "feat: add message and list ids to cveprocess links (#11)\n\nTowards a richer #5"
    },
    {
      "commit": "1aec1f2a9e9c95a3ce6705ba07cb52206dd69cbb",
      "tree": "ccc7bd8c8bfc6b48d6ef90fa431d5e7ed657adac",
      "parents": [
        "fbb51741b3fa576b54c727497df8ab9e2eb46881",
        "a1cf5049caca8a7af7e3f323dd5c05dd2da0ff88"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Wed Aug 26 17:01:55 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 26 17:01:55 2026 +0200"
      },
      "message": "Merge pull request #10 from apache/attic-reports\n\nfeat: show attic project reports on the security dashboard"
    },
    {
      "commit": "fbb51741b3fa576b54c727497df8ab9e2eb46881",
      "tree": "5b4a1a9afa4e9d91dc2acf2540bf1e02135d40b0",
      "parents": [
        "a519527cbbfae96da1706a30ef19b652d312929f",
        "c73ba7411085c3673e5b75ea29c171c06e64e2c7"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Wed Aug 26 16:58:48 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 26 16:58:48 2026 +0200"
      },
      "message": "Merge pull request #8 from zhangxinyao88/codex/security-dash-1-footer-links\n\nAdd repository links to dashboard footer"
    },
    {
      "commit": "a1cf5049caca8a7af7e3f323dd5c05dd2da0ff88",
      "tree": "a306f0139ef3933ebb0374c302fafc0efc31bfcb",
      "parents": [
        "165006cec186a04eeb9fce66a7d5de823e114c96"
      ],
      "author": {
        "name": "Piotr P. Karwasz",
        "email": "piotr@github.copernik.eu",
        "time": "Wed Aug 26 14:02:34 2026 +0200"
      },
      "committer": {
        "name": "Piotr P. Karwasz",
        "email": "piotr@github.copernik.eu",
        "time": "Wed Aug 26 14:02:34 2026 +0200"
      },
      "message": "refactor: rename attic_pmcs to pmcs_in_attic\n\nAssisted-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01RZ9HrGxceN3MFigykAifKi\n"
    },
    {
      "commit": "165006cec186a04eeb9fce66a7d5de823e114c96",
      "tree": "f1c0e376c81a5d16a04b3f853c32eb4585cc4401",
      "parents": [
        "e8bf3efcbc087c407f13d0e0df3682b84dc6719f"
      ],
      "author": {
        "name": "Piotr P. Karwasz",
        "email": "piotr@github.copernik.eu",
        "time": "Wed Aug 26 12:12:57 2026 +0200"
      },
      "committer": {
        "name": "Piotr P. Karwasz",
        "email": "piotr@github.copernik.eu",
        "time": "Wed Aug 26 12:12:57 2026 +0200"
      },
      "message": "chore: seed attic_pmcs with the current list of retired PMCs\n\nCommittee ids from\nhttps://projects.apache.org/json/foundation/committees-retired.json,\nso the example config is deployable as-is.\n\nAssisted-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01RZ9HrGxceN3MFigykAifKi\n"
    },
    {
      "commit": "e8bf3efcbc087c407f13d0e0df3682b84dc6719f",
      "tree": "17a45bd83b0e83bf5e989c471c75353910c5105b",
      "parents": [
        "a519527cbbfae96da1706a30ef19b652d312929f"
      ],
      "author": {
        "name": "Piotr P. Karwasz",
        "email": "piotr@github.copernik.eu",
        "time": "Wed Aug 26 12:11:50 2026 +0200"
      },
      "committer": {
        "name": "Piotr P. Karwasz",
        "email": "piotr@github.copernik.eu",
        "time": "Wed Aug 26 12:11:50 2026 +0200"
      },
      "message": "feat: show attic project reports on the security dashboard\n\nProjects retired to the Attic no longer have a PMC to handle their\nsecurity reports, so the security team handles them directly. The\n\u0027security\u0027 project view now aggregates, in addition to its own\nreports, the reports of every PMC listed in the new \u0027attic_pmcs\u0027\nconfig option, labeling each with its originating PMC via the\nsubproject column.\n\nAssisted-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01RZ9HrGxceN3MFigykAifKi\n"
    },
    {
      "commit": "c73ba7411085c3673e5b75ea29c171c06e64e2c7",
      "tree": "5b4a1a9afa4e9d91dc2acf2540bf1e02135d40b0",
      "parents": [
        "a519527cbbfae96da1706a30ef19b652d312929f"
      ],
      "author": {
        "name": "Xinyao Zhang",
        "email": "43081360+zhangxinyao88@users.noreply.github.com",
        "time": "Sun Aug 23 23:50:18 2026 -0400"
      },
      "committer": {
        "name": "Xinyao Zhang",
        "email": "43081360+zhangxinyao88@users.noreply.github.com",
        "time": "Sun Aug 23 23:50:18 2026 -0400"
      },
      "message": "Add repository links to dashboard footer\n"
    },
    {
      "commit": "a519527cbbfae96da1706a30ef19b652d312929f",
      "tree": "d2c0e3b8ac2ae51195bd35df585c03985ea68345",
      "parents": [
        "8c78b0719cd056a488a7a6092ee8b0b031f46a3f"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Mon Aug 17 17:42:07 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Mon Aug 17 17:42:07 2026 +0200"
      },
      "message": "chore: enable github issues\n"
    },
    {
      "commit": "8c78b0719cd056a488a7a6092ee8b0b031f46a3f",
      "tree": "5ffc05f431a16b749edfb7088db6bc62e277d483",
      "parents": [
        "f2784d301627db87fc4cda5ba60dc2b1c77394f8"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Wed Aug 05 17:17:52 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Wed Aug 05 17:17:52 2026 +0200"
      },
      "message": "feat: audit log of project views\n"
    },
    {
      "commit": "f2784d301627db87fc4cda5ba60dc2b1c77394f8",
      "tree": "585150e6088399a55a7fbf38fc95fcd16d17c842",
      "parents": [
        "d36cab2340a995d94f288d18e98e9400ea0d50bc"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Mon Jul 13 17:55:27 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Mon Jul 13 17:55:27 2026 +0200"
      },
      "message": "feat: more accurate \u0027closed\u0027 date for stats\n"
    },
    {
      "commit": "d36cab2340a995d94f288d18e98e9400ea0d50bc",
      "tree": "27707557b0faaf5087d6e1ba68d7a350968f5269",
      "parents": [
        "c6df6a68f2c9539655c2fa0c9d481f2548c482b9"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Fri Jul 10 15:58:24 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Fri Jul 10 15:58:24 2026 +0200"
      },
      "message": "enh: small enhancements\n"
    },
    {
      "commit": "c6df6a68f2c9539655c2fa0c9d481f2548c482b9",
      "tree": "c023545a9a8145c6d1d73d1f4bf0cd6b93cd1cc2",
      "parents": [
        "0791d127df0378f880e4f1aa0769445bb95d0cdf",
        "4f333f82775e1eecc02c1a7922f287ebff39e315"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Fri Jul 03 17:35:24 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Fri Jul 03 17:35:24 2026 +0200"
      },
      "message": "Merge remote-tracking branch \u0027site/dashboard-frontend\u0027 into dashboard-frontend\n"
    },
    {
      "commit": "0791d127df0378f880e4f1aa0769445bb95d0cdf",
      "tree": "3106c081e656a2757b4f0b27a75a2a815dcdbfd0",
      "parents": [
        "2d66358efcbf9159b8c5c69da364ad65a5bf0fcb"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Fri Jul 03 17:33:51 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Fri Jul 03 17:33:51 2026 +0200"
      },
      "message": "security@openoffice is subscribed to officesecurity list\n"
    },
    {
      "commit": "4f333f82775e1eecc02c1a7922f287ebff39e315",
      "tree": "d8cb527710ed579fed2680985dc540d37f124359",
      "parents": [
        "2d66358efcbf9159b8c5c69da364ad65a5bf0fcb"
      ],
      "author": {
        "name": "Piotr P. Karwasz",
        "email": "pkarwasz-github@apache.org",
        "time": "Thu Jul 02 17:50:31 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 02 17:50:31 2026 +0200"
      },
      "message": "project page: randomly alternate Tokio and Mamba mascots (#67)\n\nWhen a project has no open security reports, the page now randomly\nshows either Tokio the cat or Mamba the dog, each with a random\nhumorous caption. Also ignore JetBrains IDE files.\n\nAssisted-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "2d66358efcbf9159b8c5c69da364ad65a5bf0fcb",
      "tree": "817d6e06d4ec3a2e2de09a3d1252e6a8b6116a85",
      "parents": [
        "e3074ceda12e59617235aa3326bd618419621ec8"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Thu Jul 02 17:13:09 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Thu Jul 02 17:13:09 2026 +0200"
      },
      "message": "feat: special-case spark addressing\n"
    },
    {
      "commit": "e3074ceda12e59617235aa3326bd618419621ec8",
      "tree": "5afadfe5dc71bef73a7797e508967f597b7172eb",
      "parents": [
        "9dfbdf5b59e25655de33a925beb00ed7539d6b22"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Thu Jul 02 10:53:19 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Thu Jul 02 10:53:19 2026 +0200"
      },
      "message": "feat: link to github issues\n"
    },
    {
      "commit": "9dfbdf5b59e25655de33a925beb00ed7539d6b22",
      "tree": "1775d518d8626cf86be4461be095021e8b66daab",
      "parents": [
        "16258783f2aaaca712b2382ffcc583d4d5cfbc9c"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Wed Jul 01 10:27:02 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Wed Jul 01 10:27:39 2026 +0200"
      },
      "message": "project page: explain debt metric\n"
    },
    {
      "commit": "16258783f2aaaca712b2382ffcc583d4d5cfbc9c",
      "tree": "412c32405c5fe60e4d372b7b605aa1e4cf13d4fa",
      "parents": [
        "8c5c068dda0cfe8794f786f7dc71b7b3d0bb25e1"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Wed Jul 01 10:09:39 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Wed Jul 01 10:09:39 2026 +0200"
      },
      "message": "project page: small reward\n"
    },
    {
      "commit": "8c5c068dda0cfe8794f786f7dc71b7b3d0bb25e1",
      "tree": "ed73bccfd4622aaebef286f115ae690f5b652ef3",
      "parents": [
        "dd07f460b6bfd78981293e8fe6c5c4b5efb05053"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Tue Jun 30 10:54:21 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Tue Jun 30 10:54:21 2026 +0200"
      },
      "message": "statistics: don\u0027t count zzz and aaa threads\n\nnot part of the backlog\n"
    },
    {
      "commit": "dd07f460b6bfd78981293e8fe6c5c4b5efb05053",
      "tree": "cd0980c829bd67a362784c851178dea8feaa3cd3",
      "parents": [
        "7be92255731268636631fe82a5f0dd5d1017944a"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Wed Jun 17 17:05:49 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Wed Jun 17 17:05:49 2026 +0200"
      },
      "message": "fix: import\n"
    },
    {
      "commit": "7be92255731268636631fe82a5f0dd5d1017944a",
      "tree": "e7ee16dfb70db9c64c1609eb69a4ac82f3daa01f",
      "parents": [
        "661ea87636ce6034638ee0d5e374fe0aa62ff8e9"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Wed Jun 17 17:02:23 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Wed Jun 17 17:03:44 2026 +0200"
      },
      "message": "feat: graph on project page\n"
    },
    {
      "commit": "661ea87636ce6034638ee0d5e374fe0aa62ff8e9",
      "tree": "ebf0197f85cf51ce27b6805a90c5cf56fb31c5b9",
      "parents": [
        "bcec456e4942b2ede0df34ac31342232572e1592"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Tue Jun 16 18:12:24 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Tue Jun 16 18:12:24 2026 +0200"
      },
      "message": "project report: show number of reports per section\n"
    },
    {
      "commit": "bcec456e4942b2ede0df34ac31342232572e1592",
      "tree": "f2d45c067d4366cf415eb766e088c8707f58b485",
      "parents": [
        "677e18618a608497aa7ee66cb83f9b58dcff8e2d"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Mon Jun 15 17:40:19 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Mon Jun 15 17:40:19 2026 +0200"
      },
      "message": "look at reports that turned out to be non-issues as well\n"
    },
    {
      "commit": "677e18618a608497aa7ee66cb83f9b58dcff8e2d",
      "tree": "86b82e580f9e9ab93ba1ff2bf71dc3a841c5aa59",
      "parents": [
        "76b9df67224691a9acf9aff83aa28ce214c074cf"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Sat Jun 13 17:14:57 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Sat Jun 13 17:14:57 2026 +0200"
      },
      "message": "deployment: expose trusted sll certs\n"
    },
    {
      "commit": "76b9df67224691a9acf9aff83aa28ce214c074cf",
      "tree": "483f54276485d22b86aec5ae030c12f215013d9d",
      "parents": [
        "aa4f59fd93875df927410d1da05ae5c41feccd99"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Sat Jun 13 17:07:31 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Sat Jun 13 17:07:31 2026 +0200"
      },
      "message": "deployment: expose DNS settings from host\n"
    },
    {
      "commit": "aa4f59fd93875df927410d1da05ae5c41feccd99",
      "tree": "9dda7b6caa8ddd3f5b5a3c9e1347280c559db8e5",
      "parents": [
        "ac71d36dfba7770a574971e7a7b43281bc449c0d"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Fri Jun 12 16:12:13 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Fri Jun 12 17:16:47 2026 +0200"
      },
      "message": "sandbox pipservice\n"
    },
    {
      "commit": "ac71d36dfba7770a574971e7a7b43281bc449c0d",
      "tree": "223fe05867e7f9e648afa4f144718e9844adacf5",
      "parents": [
        "b3d689d279f43eb77ff6a011a14ab59aa38f3e8e"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Thu Jun 11 14:11:14 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Thu Jun 11 14:11:14 2026 +0200"
      },
      "message": "fix: subproject: stop at first non-word character\n"
    },
    {
      "commit": "b3d689d279f43eb77ff6a011a14ab59aa38f3e8e",
      "tree": "36f8bc64d54ae041e032418ae73afb0066bd844c",
      "parents": [
        "80395bc435c99dec5c855281e24fad88ec9e4a99"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Fri Jun 05 20:30:28 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Fri Jun 05 20:30:28 2026 +0200"
      },
      "message": "make subproject column narrow\n"
    },
    {
      "commit": "80395bc435c99dec5c855281e24fad88ec9e4a99",
      "tree": "d8beb16c9c58d0a275f7580f38df54d484f04c96",
      "parents": [
        "5830e8716a324068acfbec08fdc219060914bc3c"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Fri Jun 05 20:28:10 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Fri Jun 05 20:28:10 2026 +0200"
      },
      "message": "feat: subproject column\n"
    },
    {
      "commit": "5830e8716a324068acfbec08fdc219060914bc3c",
      "tree": "7e3b6e7e1e0287dff47a49dae8db19e8d15a9f50",
      "parents": [
        "503977a54bdc88b07a7eb9fb48adbac6b9ea24aa"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Fri Jun 05 16:15:57 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Fri Jun 05 16:15:57 2026 +0200"
      },
      "message": "feat: project security debt statistics\n"
    },
    {
      "commit": "503977a54bdc88b07a7eb9fb48adbac6b9ea24aa",
      "tree": "f95fcb7304fe5f3ff18885bd1e4df840c7ea08ab",
      "parents": [
        "7415cbf54b41048a251e20ba470be5cff9968d76"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Mon Jun 01 14:25:06 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Mon Jun 01 14:25:06 2026 +0200"
      },
      "message": "Correctly determine reporter when \u0027via security@a.o\u0027\n\nWhen they send from a DMARC p\u003dreject domain to security@apache.org\n"
    },
    {
      "commit": "7415cbf54b41048a251e20ba470be5cff9968d76",
      "tree": "51a1359b93fe282a4b9593652d3a8f12af08b3aa",
      "parents": [
        "e6a1704cf82cd139e74479f3939719592d8dec23"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Mon Jun 01 14:18:32 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Mon Jun 01 14:18:32 2026 +0200"
      },
      "message": "show email address in mouseover\n\nstill not super convenient as it can\u0027t be copy-pasted,\nbut it\u0027s a start. maybe reporters should have their own\npage at some point.\n"
    },
    {
      "commit": "e6a1704cf82cd139e74479f3939719592d8dec23",
      "tree": "44ad1d4d7a85df47b18fec0ffaeff557dc17aac8",
      "parents": [
        "7f3ee1895793ec74d1111e07d1464edc87bb6fbf"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Fri May 29 09:21:05 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Fri May 29 09:21:05 2026 +0200"
      },
      "message": "feat: show reporter initials\n"
    },
    {
      "commit": "7f3ee1895793ec74d1111e07d1464edc87bb6fbf",
      "tree": "c1b127bb5cfc203e5ffa39b211ef0b2970a9e20a",
      "parents": [
        "909ec8425e7b4883346a406928f21651dd8378fe"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Thu May 28 17:15:12 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Thu May 28 17:15:12 2026 +0200"
      },
      "message": "feat: look at cc to determine list address if available\n"
    },
    {
      "commit": "909ec8425e7b4883346a406928f21651dd8378fe",
      "tree": "408e28245f0671469283710145ca93739b06270f",
      "parents": [
        "02bd7493c394400138869877a37146c2b322b410"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Thu May 28 17:10:44 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Thu May 28 17:10:44 2026 +0200"
      },
      "message": "feat: support emails with multiple \u0027to\u0027 addresses\n"
    },
    {
      "commit": "02bd7493c394400138869877a37146c2b322b410",
      "tree": "26171b9183067f6497a4442a06c118aa1a2a6ed9",
      "parents": [
        "30439147e21b4ee937cbf80a23588df9f0a68efd"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Thu May 28 16:51:32 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Thu May 28 16:52:15 2026 +0200"
      },
      "message": "link to first email that went to the PMC\n\nPMC or project security team members that are not also ASF members\ncan\u0027t view the security@apache.org mailbox, so link to the first\nemail that actually went to a project-specific mailbox. That should\nwork for PMC members.\n\nCurrently not for project-specific security team members, but\nthat\u0027s a larger change: we don\u0027t record that membership in LDAP\nat all yet.\n"
    },
    {
      "commit": "30439147e21b4ee937cbf80a23588df9f0a68efd",
      "tree": "cb2f73afe1bc549fd154b2fac9f441c9cb874bd5",
      "parents": [
        "212c0c5d212071b17bd9fec2b524722fd9002c92"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Thu May 28 16:35:56 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Thu May 28 16:35:56 2026 +0200"
      },
      "message": "use security.apache.org as list id by default\n"
    },
    {
      "commit": "212c0c5d212071b17bd9fec2b524722fd9002c92",
      "tree": "10da493435329c890d75f6cc5f561cbc0ae3d9c7",
      "parents": [
        "83dc052bae926e9b8f27465adfdce59494a01c90"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Wed May 27 14:50:00 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Wed May 27 14:50:00 2026 +0200"
      },
      "message": "feat: decode titles\n"
    },
    {
      "commit": "83dc052bae926e9b8f27465adfdce59494a01c90",
      "tree": "e74bf5b222d62e6d78e394d02a01a222a76c115d",
      "parents": [
        "27f47e9872be6f2962f5fef6b0b5ebd70827dc91"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Wed May 27 09:47:44 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Wed May 27 09:47:44 2026 +0200"
      },
      "message": "chore: security headers\n"
    },
    {
      "commit": "27f47e9872be6f2962f5fef6b0b5ebd70827dc91",
      "tree": "16defb33248321ac08cf05cf72a73d650b4d742a",
      "parents": [
        "f49a3bb1aa224b6b5b763028e390a360f345357b"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Wed May 27 09:42:34 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Wed May 27 09:42:34 2026 +0200"
      },
      "message": "fix: just throw when authentication fails\n"
    },
    {
      "commit": "f49a3bb1aa224b6b5b763028e390a360f345357b",
      "tree": "ecfbe5c520f18299ab5a74cb5d7f47dbe728fdf1",
      "parents": [
        "43a76d54db912f480c16883b527f21cc9243ac9c"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Wed May 27 09:42:19 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Wed May 27 09:42:19 2026 +0200"
      },
      "message": "fix: api method name\n"
    },
    {
      "commit": "43a76d54db912f480c16883b527f21cc9243ac9c",
      "tree": "33914f002c36118f976fe1f64db04106a8bbcdab",
      "parents": [
        "3f3752de1866706089cd64daa057906b231e4eb2"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Tue May 26 18:03:29 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Tue May 26 18:03:29 2026 +0200"
      },
      "message": "template: add private label\n"
    },
    {
      "commit": "3f3752de1866706089cd64daa057906b231e4eb2",
      "tree": "dfc35f3747f91e0e6c292bc5a3cb14e5d30c5351",
      "parents": [
        "da22081df9f76699f4a6735500a90049c5365e66"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Tue May 26 17:57:05 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Tue May 26 17:57:05 2026 +0200"
      },
      "message": "feat: also actually show \u0027infra\u0027 in the lists for root users\n"
    },
    {
      "commit": "da22081df9f76699f4a6735500a90049c5365e66",
      "tree": "59a509c3aee7359fac7027128ee36aaa39529e9b",
      "parents": [
        "8bebed9a12ff9d1200d11e588a926771cb48dc83"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Tue May 26 17:49:53 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Tue May 26 17:49:53 2026 +0200"
      },
      "message": "templates: make h3 more prominent\n"
    },
    {
      "commit": "8bebed9a12ff9d1200d11e588a926771cb48dc83",
      "tree": "86b1245e22b8100ca656eaa359365622ad7cfee4",
      "parents": [
        "d656a98ab0a037ed511d2a490cb8568ce9dfa0ba"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Tue May 26 17:48:28 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Tue May 26 17:48:28 2026 +0200"
      },
      "message": "feat: make \u0027infra\u0027 available to root users\n"
    },
    {
      "commit": "d656a98ab0a037ed511d2a490cb8568ce9dfa0ba",
      "tree": "d8bd0cd931b31168cb5e6274c2c3640413c8be14",
      "parents": [
        "2bb3aebc8125451c0b78d47f4880cd967e411ab4"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Tue May 26 17:35:49 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Tue May 26 17:35:49 2026 +0200"
      },
      "message": "template: \u0027allocate CVE\u0027 for confirmed reports\n"
    },
    {
      "commit": "2bb3aebc8125451c0b78d47f4880cd967e411ab4",
      "tree": "89d7e94dc0548bb2ad21fbad54f7f82031223d61",
      "parents": [
        "b16d6a3d3d1d6fe73b82446516c29fd68b0667a4"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Tue May 26 17:23:53 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Tue May 26 17:23:53 2026 +0200"
      },
      "message": "template: nicer table layout\n"
    },
    {
      "commit": "b16d6a3d3d1d6fe73b82446516c29fd68b0667a4",
      "tree": "33c4026c1895b40b5006b70c2bee7209976e25d3",
      "parents": [
        "29b7a1f9fd2a0316d8a872dd752e4b92f4843f4e"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Tue May 26 13:25:00 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Tue May 26 13:25:00 2026 +0200"
      },
      "message": "feat: link to Jira issues when used\n"
    },
    {
      "commit": "29b7a1f9fd2a0316d8a872dd752e4b92f4843f4e",
      "tree": "80d829757bbf0163a88afbb75ad96d340272573d",
      "parents": [
        "3f58ae10a19b1ea5290241ebddd89b99c2018793"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Tue May 26 13:02:37 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Tue May 26 13:02:37 2026 +0200"
      },
      "message": "feat: sort by timestamp\n"
    },
    {
      "commit": "3f58ae10a19b1ea5290241ebddd89b99c2018793",
      "tree": "a3b794fc83c628755264a2dc95db3e6c9d8c99b5",
      "parents": [
        "5a0fd673d15a5c2953dae977bdcbbecd8775de60"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Tue May 26 12:59:01 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Tue May 26 12:59:01 2026 +0200"
      },
      "message": "feat: add date to project view\n"
    },
    {
      "commit": "5a0fd673d15a5c2953dae977bdcbbecd8775de60",
      "tree": "9acc89e6ca682ff5de0dbe85af7d410b7810ce04",
      "parents": [
        "dcb45e59b88e541d0d8f248dc3899ebda282429d"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Tue May 26 12:03:02 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Tue May 26 12:03:02 2026 +0200"
      },
      "message": "deployment: don\u0027t buffer output\n"
    },
    {
      "commit": "dcb45e59b88e541d0d8f248dc3899ebda282429d",
      "tree": "86b3810fb00e3c13f008c4981c716859774b58f1",
      "parents": [
        "468f8c0fe3cfd1ca972d88f5848af4b3ffcfeb1b"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Tue May 26 12:01:35 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Tue May 26 12:01:35 2026 +0200"
      },
      "message": "resilient against empty labels\n"
    },
    {
      "commit": "468f8c0fe3cfd1ca972d88f5848af4b3ffcfeb1b",
      "tree": "06a23697edf490b46b37497b1eace8f935c8faae",
      "parents": [
        "00c5cec8bc9cda79bc5ae284241b511030748f3a"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Tue May 26 12:01:26 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Tue May 26 12:01:26 2026 +0200"
      },
      "message": "add internal label as comment\n"
    },
    {
      "commit": "00c5cec8bc9cda79bc5ae284241b511030748f3a",
      "tree": "41556cb01eddd2a260e595198cdd03576acc374d",
      "parents": [
        "d4a583f07adcb58f9aee4be3dc5ecdea1f0fa952"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Mon May 25 09:53:42 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Mon May 25 09:53:42 2026 +0200"
      },
      "message": "ASF group ACL\n"
    },
    {
      "commit": "d4a583f07adcb58f9aee4be3dc5ecdea1f0fa952",
      "tree": "32f6a70d89d8f9435ec42476483831966db00eca",
      "parents": [
        "e8347aa42a3c15e4283b98c87d71318fb4d81e69"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Fri May 22 18:44:41 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Fri May 22 18:44:41 2026 +0200"
      },
      "message": "deployment: hypercorn\n"
    },
    {
      "commit": "e8347aa42a3c15e4283b98c87d71318fb4d81e69",
      "tree": "bcfaf4ef0104e737e7045d67e8c81b577f54f068",
      "parents": [
        "1c323f14d6efb6f218ea28937bab075cbf9ff300"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Fri May 22 14:54:15 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Fri May 22 14:54:15 2026 +0200"
      },
      "message": "try running with uv\n"
    },
    {
      "commit": "1c323f14d6efb6f218ea28937bab075cbf9ff300",
      "tree": "b851b0ea25be1280d4678beaa537217293774e50",
      "parents": [
        "c35ee973987ff467173bdbc761a2403a3f4bd7c7"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Fri May 22 12:18:59 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Fri May 22 12:18:59 2026 +0200"
      },
      "message": "run executable\n"
    },
    {
      "commit": "c35ee973987ff467173bdbc761a2403a3f4bd7c7",
      "tree": "7a2c03747e56c6466941e96b736a63b49e939b28",
      "parents": [
        "ecb3c03c62103f6849381b60aa93b8550607d227"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Fri May 22 12:11:47 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Fri May 22 12:11:47 2026 +0200"
      },
      "message": "define dependencies in pyproject/requirements.txt\n"
    },
    {
      "commit": "ecb3c03c62103f6849381b60aa93b8550607d227",
      "tree": "d40c939f7d7b39a19d24b861a3cd68a349938ea6",
      "parents": [
        "da7746d72ab3159afe3c663cf48d09fe99a729e0"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Thu May 21 16:27:34 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Thu May 21 16:27:34 2026 +0200"
      },
      "message": "initial deployment utilities\n"
    },
    {
      "commit": "da7746d72ab3159afe3c663cf48d09fe99a729e0",
      "tree": "7adf48a9eba7152a2e3950e1297fae43809fc538",
      "parents": [
        "16cde1d5791d5c6ea42f32a21d9bf48ba3d98efa"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Thu May 21 16:25:37 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Thu May 21 16:25:37 2026 +0200"
      },
      "message": "remove swap file\n"
    },
    {
      "commit": "16cde1d5791d5c6ea42f32a21d9bf48ba3d98efa",
      "tree": "6ea0ca908346f6e4a613dba0acd68614d47a06f6",
      "parents": [
        "4936600b82ef0ba18c51fff9aca36f4bba5e6e85"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Thu May 21 16:25:00 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Thu May 21 16:25:00 2026 +0200"
      },
      "message": "link to api endpoint\n"
    },
    {
      "commit": "4936600b82ef0ba18c51fff9aca36f4bba5e6e85",
      "tree": "44dcb5f7a8889639b17ea19ea09fada447a02517",
      "parents": [
        "cd7588389f605389f14c96103ac9c4a4a44c9fe3"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Thu May 21 16:16:14 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Thu May 21 16:16:14 2026 +0200"
      },
      "message": "presentation tweaks\n\nwith this bootstrap isn\u0027t really needed yet\n"
    },
    {
      "commit": "cd7588389f605389f14c96103ac9c4a4a44c9fe3",
      "tree": "15e32c70be355853c0101dde81eda603407b6ed2",
      "parents": [
        "097c829d520a5c459bcdd3b228da9e97f6198b74"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Thu May 21 12:30:05 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Thu May 21 12:30:05 2026 +0200"
      },
      "message": "some very basic styling\n\nbased on agenda-tool\n"
    },
    {
      "commit": "097c829d520a5c459bcdd3b228da9e97f6198b74",
      "tree": "68c15bcf9ec6a765a18a0da696e076a1d1f29b71",
      "parents": [
        "17e78f30690c0f060e1638d541893b8c98b85738"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Thu May 21 10:49:10 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Thu May 21 10:49:10 2026 +0200"
      },
      "message": "intro text\n"
    },
    {
      "commit": "17e78f30690c0f060e1638d541893b8c98b85738",
      "tree": "9382e2b6c0294b3c5880b6c0c292b7246029be32",
      "parents": [
        "7c5b83ac9d4e3f7510fdd86aa73ec40920aa7017"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Thu May 21 10:43:39 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Thu May 21 10:43:39 2026 +0200"
      },
      "message": "redirect to report overview if you\u0027re on a single PMC\n"
    },
    {
      "commit": "7c5b83ac9d4e3f7510fdd86aa73ec40920aa7017",
      "tree": "04d879949e3f525fea8f5f682a8f15d1ce789d4f",
      "parents": [
        "dbbfdf94e0a781148ace5530191918690e48b0a7"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Thu May 21 10:42:02 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Thu May 21 10:42:02 2026 +0200"
      },
      "message": "basic json api for reports\n"
    },
    {
      "commit": "dbbfdf94e0a781148ace5530191918690e48b0a7",
      "tree": "c4651a9633e37552ffd568c87ab64388d991ec41",
      "parents": [
        "685232b586c7f66d0c311df86007f50126333bec"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Thu May 21 10:34:24 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Thu May 21 10:34:24 2026 +0200"
      },
      "message": "rudimentary project report\n"
    },
    {
      "commit": "685232b586c7f66d0c311df86007f50126333bec",
      "tree": "9a6d5427d639133eb9083ab48edbe56ccfdf026c",
      "parents": [
        "39bc33022fc47afcbd6e1737c80ab395d3294e19"
      ],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Tue May 19 12:28:09 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Tue May 19 12:28:09 2026 +0200"
      },
      "message": "project page\n"
    },
    {
      "commit": "39bc33022fc47afcbd6e1737c80ab395d3294e19",
      "tree": "6f12a0e322d970761c06ecc99d5dc0187f121dc7",
      "parents": [],
      "author": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Tue May 19 12:04:15 2026 +0200"
      },
      "committer": {
        "name": "Arnout Engelen",
        "email": "arnout@bzzt.net",
        "time": "Tue May 19 12:04:15 2026 +0200"
      },
      "message": "initial scaffold: login\n"
    }
  ]
}
