)]}'
{
  "log": [
    {
      "commit": "d0aa7e9ab92880217a5a36046faf3eb07d273e4c",
      "tree": "baa43ccd880b3d33cf4d97a2a7f78bcbf8817d69",
      "parents": [
        "215bb8bc363864e3311100c7f9d73e20ac1e4647"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Apr 02 11:32:10 2026 -0500"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Apr 02 11:32:10 2026 -0500"
      },
      "message": "Use aider/Grok to construct an architecture overview of v3\n"
    },
    {
      "commit": "215bb8bc363864e3311100c7f9d73e20ac1e4647",
      "tree": "0bf19c78c7af1b9259df8889d9182775f0a05dd2",
      "parents": [
        "564fdf2f35cc9bbf874dd840706bbc3b12903ffe",
        "e39d067cae4ad324475608fbbc793f081759f37c"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@apache.org",
        "time": "Mon Mar 09 05:59:04 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 09 05:59:04 2026 -0500"
      },
      "message": "Merge pull request #96 from apache/remove-old-files\n\nRemove old files"
    },
    {
      "commit": "e39d067cae4ad324475608fbbc793f081759f37c",
      "tree": "0bf19c78c7af1b9259df8889d9182775f0a05dd2",
      "parents": [
        "564fdf2f35cc9bbf874dd840706bbc3b12903ffe"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Mon Mar 09 11:09:37 2026 +0800"
      },
      "committer": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Mon Mar 09 11:09:37 2026 +0800"
      },
      "message": "Remove old files\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n"
    },
    {
      "commit": "564fdf2f35cc9bbf874dd840706bbc3b12903ffe",
      "tree": "60f2aceb96b9bd6ffed4f1e5f731399150654c7f",
      "parents": [
        "870f5661cb04213b90109e55c63d41da6bf97ef8"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Mar 06 09:21:20 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Mar 06 09:21:20 2026 -0600"
      },
      "message": "factor out loading the vote file, enable v3\n"
    },
    {
      "commit": "870f5661cb04213b90109e55c63d41da6bf97ef8",
      "tree": "403a5636a1c1cc741a3e0a7e2d2aa5410db0decc",
      "parents": [
        "1e584ac373513dda1518eab50c76b41f78ba60b6"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Mar 06 09:07:13 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Mar 06 09:07:13 2026 -0600"
      },
      "message": "factor out load_v3, for whatif support\n"
    },
    {
      "commit": "1e584ac373513dda1518eab50c76b41f78ba60b6",
      "tree": "bdbab35c35c78cdf0b7b8da10fad1f62968afcfb",
      "parents": [
        "f65ec112da20e2f3f0ec483390e122753b1c0410"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Mar 06 06:46:35 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Mar 06 06:46:35 2026 -0600"
      },
      "message": "tweak to use pathlib rather than argv[0]\n"
    },
    {
      "commit": "f65ec112da20e2f3f0ec483390e122753b1c0410",
      "tree": "99aece6aa53b74eabd8060a8955d5650c29c84e9",
      "parents": [
        "9c7d674c61eb4983280df89689d1230723917c28"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Mar 06 06:30:30 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Mar 06 06:30:30 2026 -0600"
      },
      "message": "whitespace only. no functional change.\n"
    },
    {
      "commit": "9c7d674c61eb4983280df89689d1230723917c28",
      "tree": "a533decb49792e6a524dfc45a0a8aa1da23554f7",
      "parents": [
        "b9ec1266085407efbddd910974beb96f535b1804"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Mar 06 06:16:19 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Mar 06 06:16:19 2026 -0600"
      },
      "message": "Some simplifications and tweaks for more modern code.\n"
    },
    {
      "commit": "b9ec1266085407efbddd910974beb96f535b1804",
      "tree": "d76492ab4dc829c82420cae626224b41d6567c77",
      "parents": [
        "e81e78f99fc2f48aeb2e802b4fac172f21c623f1"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Mar 06 06:12:09 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Mar 06 06:12:09 2026 -0600"
      },
      "message": "There is no workable \"new format\" inputs. Strip that broken \"feature\" out.\n"
    },
    {
      "commit": "e81e78f99fc2f48aeb2e802b4fac172f21c623f1",
      "tree": "25b06eaff7ddf9418922e94c96e77043ab710fbd",
      "parents": [
        "1412802dfd3174e9f7209ef2dd4396ab538d3fe3"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Mar 05 17:07:25 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Mar 05 17:07:25 2026 -0600"
      },
      "message": "final tweak for new vote-results.json format\n"
    },
    {
      "commit": "1412802dfd3174e9f7209ef2dd4396ab538d3fe3",
      "tree": "a5343db524f73c8abd6e446f46a21232f20b5b30",
      "parents": [
        "6f53030cdadb4494d3cbe1b018fac94f3bb7ff8f"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Mar 05 05:59:29 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Mar 05 05:59:29 2026 -0600"
      },
      "message": "whitespace in an email is important. don\u0027t compress/lose it.\n"
    },
    {
      "commit": "6f53030cdadb4494d3cbe1b018fac94f3bb7ff8f",
      "tree": "dd49b4fde811093964b944a42fc01d25cd2b6524",
      "parents": [
        "2c8dd65012846c783e0f42d5e848cef3e0c45a56"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Mar 05 03:28:03 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Mar 05 03:28:03 2026 -0600"
      },
      "message": "feat: make list_elections return edict with issue_count and person_count\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "2c8dd65012846c783e0f42d5e848cef3e0c45a56",
      "tree": "b86f108744bd38f9a7a5e85c8ab076077f0b282e",
      "parents": [
        "ce0467f6b5383164cb2270cabec2d45bbd038f2a"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Mar 05 03:28:01 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein (aider)",
        "email": "gstein@gmail.com",
        "time": "Thu Mar 05 03:28:01 2026 -0600"
      },
      "message": "fix: correct typo in log message and add optional pbar import\n"
    },
    {
      "commit": "ce0467f6b5383164cb2270cabec2d45bbd038f2a",
      "tree": "377825179d65173e94e8e16cf2651466bb230c47",
      "parents": [
        "2d68602614db5d0153bb8d4e101a46e3afaedfcd"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Mar 05 01:31:01 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Mar 05 01:31:01 2026 -0600"
      },
      "message": "remove some print() to clean up output\n"
    },
    {
      "commit": "2d68602614db5d0153bb8d4e101a46e3afaedfcd",
      "tree": "d796a622431a398fba8b251b3a881e641a1adb8d",
      "parents": [
        "9d905cb877c9892b0323d48e6b5229b4bf417218"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Mar 05 01:26:30 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Mar 05 01:26:30 2026 -0600"
      },
      "message": "Improve tallying options and storage.\n\n* --output json now includes all issues into one dict, and a list of\n  all those who voted (not on what or how; just \"seen\")\n* --issue_id now allows tallying a single issue for testing/speed\n* improve some logging; switch some stuff from print()\n* Election.tally_issue() returns the list of voters seen, so support\n  the above JSON output feature\n"
    },
    {
      "commit": "9d905cb877c9892b0323d48e6b5229b4bf417218",
      "tree": "24cb1abb15faf7a19ca11cd30eab31e612a1d3a9",
      "parents": [
        "174aca193bad4ae6cf09c8b1b81294f8fbc8fefa"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Mar 05 00:37:24 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Mar 05 00:37:24 2026 -0600"
      },
      "message": "Improve the trimming of empty votes in an STV Issue.\n"
    },
    {
      "commit": "174aca193bad4ae6cf09c8b1b81294f8fbc8fefa",
      "tree": "5f79de9bbd5a6e019bd76464b6c0b5e1b056736d",
      "parents": [
        "6b17ab25ead6638b001c03c2c9c1debc13a29c72"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Tue Mar 03 22:33:14 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Tue Mar 03 22:33:14 2026 -0600"
      },
      "message": "Read/process v3 result files in the stv_tool.py.\n"
    },
    {
      "commit": "6b17ab25ead6638b001c03c2c9c1debc13a29c72",
      "tree": "89cc1f4214d3ea60cc97b5dbce8c7048bf9476c6",
      "parents": [
        "dcf4fc03e6d7eb10d628ce4070c5e31d3c6170a3"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Tue Mar 03 21:47:19 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Tue Mar 03 21:47:19 2026 -0600"
      },
      "message": "expand result details\n"
    },
    {
      "commit": "dcf4fc03e6d7eb10d628ce4070c5e31d3c6170a3",
      "tree": "137866645ef949bbf5be4a8a6cec694782bc6aaf",
      "parents": [
        "c3969e74cf38ad804520c9bcebe5665bf8def6bc"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sun Mar 01 02:37:48 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sun Mar 01 02:37:48 2026 -0600"
      },
      "message": "use correct grammar. Fixes #90\n"
    },
    {
      "commit": "c3969e74cf38ad804520c9bcebe5665bf8def6bc",
      "tree": "4c2f0d464e546b0494f000538cdcb62c9f5fb661",
      "parents": [
        "c72df2af47b5a34333c5e45614acb6648ef14569"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sat Feb 28 12:03:28 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sat Feb 28 12:03:28 2026 -0600"
      },
      "message": "feat: add description rewriting for issues in vote-on page\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "c72df2af47b5a34333c5e45614acb6648ef14569",
      "tree": "d9a54dee9fc8a9c9238ed48fce02caff571f0ed3",
      "parents": [
        "eaa66342b22a4b4fd9c6ae71a3c64bfc8a75901f",
        "e15dd60e21561f918032dcdfa770f6725ba592c8"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@apache.org",
        "time": "Fri Feb 27 21:00:23 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 27 21:00:23 2026 -0700"
      },
      "message": "Merge pull request #87 from apache/tisonkun-patch-1\n\nAdd pull request settings to .asf.yaml"
    },
    {
      "commit": "e15dd60e21561f918032dcdfa770f6725ba592c8",
      "tree": "d9a54dee9fc8a9c9238ed48fce02caff571f0ed3",
      "parents": [
        "eaa66342b22a4b4fd9c6ae71a3c64bfc8a75901f"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Sat Feb 28 11:58:57 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Feb 28 11:58:57 2026 +0800"
      },
      "message": "Add pull request settings to .asf.yaml\n\n* allow_update_branch enables the button to auto merge/rebase PR; this simplifies the manual workflow with git.\r\n* del_branch_on_merge is for reducing stable branches. Upon PR merged we\u0027ll have the change set in upstream\u0027s commit history already."
    },
    {
      "commit": "eaa66342b22a4b4fd9c6ae71a3c64bfc8a75901f",
      "tree": "9b3d95485162b3930d8073e6ea81ee45a5ae0167",
      "parents": [
        "6c1d8e3b044e2ad01f2e0a3b9f975ea480018f6e",
        "e8d71e54469cfdc22b09f5b6e1b499fd7dc23c5a"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@apache.org",
        "time": "Fri Feb 27 20:54:34 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 27 20:54:34 2026 -0700"
      },
      "message": "Merge pull request #86 from apache/revert-85-tisonkun-patch-1\n\nRevert \"Enable auto merge and branch management for PRs\""
    },
    {
      "commit": "e8d71e54469cfdc22b09f5b6e1b499fd7dc23c5a",
      "tree": "9b3d95485162b3930d8073e6ea81ee45a5ae0167",
      "parents": [
        "6c1d8e3b044e2ad01f2e0a3b9f975ea480018f6e"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 27 21:53:44 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 27 21:53:44 2026 -0600"
      },
      "message": "Revert \"Enable auto merge and branch management for PRs (#85)\"\n\nThis reverts commit 6c1d8e3b044e2ad01f2e0a3b9f975ea480018f6e.\n"
    },
    {
      "commit": "6c1d8e3b044e2ad01f2e0a3b9f975ea480018f6e",
      "tree": "3c8e7076e4f7b63d0e5a9abcf3165bf1ff5e6b0c",
      "parents": [
        "7cc80ab1ddc3d28ef17128e8db23279d6f0dc0bb"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Sat Feb 28 11:50:23 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Feb 28 11:50:23 2026 +0800"
      },
      "message": "Enable auto merge and branch management for PRs (#85)\n\n"
    },
    {
      "commit": "7cc80ab1ddc3d28ef17128e8db23279d6f0dc0bb",
      "tree": "9b3d95485162b3930d8073e6ea81ee45a5ae0167",
      "parents": [
        "f0b723464679dc2cf556181fb520a60454e7bd17",
        "299fb677383a4a1c468306e93c1404152f681995"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@apache.org",
        "time": "Fri Feb 27 20:37:10 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 27 20:37:10 2026 -0700"
      },
      "message": "Merge pull request #84 from apache/display\n\nuv run ruff format"
    },
    {
      "commit": "299fb677383a4a1c468306e93c1404152f681995",
      "tree": "9b3d95485162b3930d8073e6ea81ee45a5ae0167",
      "parents": [
        "f0b723464679dc2cf556181fb520a60454e7bd17"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Sat Feb 28 11:34:16 2026 +0800"
      },
      "committer": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Sat Feb 28 11:34:55 2026 +0800"
      },
      "message": "uv run ruff format\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n"
    },
    {
      "commit": "f0b723464679dc2cf556181fb520a60454e7bd17",
      "tree": "d0e06eb7453481082ea8625e11cb03546319fc9e",
      "parents": [
        "0afdf6bcb8876097afdf43048f6e3a3b8f20bf43",
        "098f5d6bc1f0bd55e22ca0192e4bf04b6ab30e6d"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@apache.org",
        "time": "Fri Feb 27 20:33:57 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 27 20:33:57 2026 -0700"
      },
      "message": "Merge pull request #83 from apache/display\n\nDisplay vote creator and authz clear"
    },
    {
      "commit": "098f5d6bc1f0bd55e22ca0192e4bf04b6ab30e6d",
      "tree": "d0e06eb7453481082ea8625e11cb03546319fc9e",
      "parents": [
        "0afdf6bcb8876097afdf43048f6e3a3b8f20bf43"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Sat Feb 28 11:31:31 2026 +0800"
      },
      "committer": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Sat Feb 28 11:31:31 2026 +0800"
      },
      "message": "Display vote creator and authz clear\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n"
    },
    {
      "commit": "0afdf6bcb8876097afdf43048f6e3a3b8f20bf43",
      "tree": "8ba256de1a68f4dac142799cd216f48d3ac2ae74",
      "parents": [
        "b62561d0b896534a8618d52cdda7f310b589175a",
        "0bce64a47704608ac25a740b9efd50be069dd313"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Sat Feb 28 06:40:16 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Feb 28 06:40:16 2026 +0800"
      },
      "message": "Merge pull request #68 from apache/sortable-placeholder\n\nEmpty hint should be excluded from sortable elements"
    },
    {
      "commit": "b62561d0b896534a8618d52cdda7f310b589175a",
      "tree": "617832dd19c9bb29bffab5ab58a0cdd64ab9b16c",
      "parents": [
        "972fb5577331a72ee3b4a20fee9fe230cd05be36"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 27 08:49:44 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 27 08:49:44 2026 -0600"
      },
      "message": "switch shebang to \"uv run\"\n"
    },
    {
      "commit": "972fb5577331a72ee3b4a20fee9fe230cd05be36",
      "tree": "2e6b1782c95b36e52c98793d5ef83a4029b11237",
      "parents": [
        "12fe75b739a86572223c00685e6e7f32ca8f1d53"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 27 08:17:36 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 27 08:17:36 2026 -0600"
      },
      "message": "chore: add display name to email sender\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "12fe75b739a86572223c00685e6e7f32ca8f1d53",
      "tree": "931005a3fe90098fd69fb0badbe608cffeba945a",
      "parents": [
        "1447c5e2aa0e1840188d5736656750c6f5efa923"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 27 08:16:35 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 27 08:16:35 2026 -0600"
      },
      "message": "fix: update sender email to voter@apache.org\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "1447c5e2aa0e1840188d5736656750c6f5efa923",
      "tree": "1753255b8d5a341259ff36f3092da65fcc632912",
      "parents": [
        "a8641e51731935f347eb2fa633ed5179209f7a54"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 27 08:14:22 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 27 08:14:22 2026 -0600"
      },
      "message": "feat: implement EZT template rendering for voter emails\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "a8641e51731935f347eb2fa633ed5179209f7a54",
      "tree": "3d451ec5a3f375d46f90b14931e973252ec3f239",
      "parents": [
        "b6a278541b77109c66a76901d640c327cc543e75"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 27 08:04:30 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 27 08:04:30 2026 -0600"
      },
      "message": "feat: add mail-voters.py script for emailing eligible voters\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "b6a278541b77109c66a76901d640c327cc543e75",
      "tree": "8269fdd9a953ab55fd91fbb1be12b86bf26fd4da",
      "parents": [
        "59c991776e2f3389cebc40083d04cb33c8b57364"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 27 07:40:54 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 27 07:40:54 2026 -0600"
      },
      "message": "refactor: return voter records as EasyDict objects in get_voters_for_email\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "59c991776e2f3389cebc40083d04cb33c8b57364",
      "tree": "151241fbc8fd3285ebcce82945d1df318ba59adb",
      "parents": [
        "a91c55dc0fac2f680f6f3b063a289151b7ceaf2e"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 27 07:39:07 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 27 07:39:07 2026 -0600"
      },
      "message": "feat: add get_voters_for_email method and include name in voting persons query\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "a91c55dc0fac2f680f6f3b063a289151b7ceaf2e",
      "tree": "78eb96d3f62944fa1a400879a570d27bfb540499",
      "parents": [
        "ce01b6274788465eecd4a2fa84cad830513fdae0"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Feb 26 12:48:16 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Feb 26 12:52:04 2026 -0600"
      },
      "message": "add endpoint for issue support documents\n"
    },
    {
      "commit": "ce01b6274788465eecd4a2fa84cad830513fdae0",
      "tree": "9ae6d6d9542f91aeb77c5e03566245a01e9d8778",
      "parents": [
        "decff64ccd1cf7749a260738d518a33183cabc36",
        "8de5ff1c5ece532f54d648afd52423d5e63b5134"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Thu Feb 26 16:39:20 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 26 16:39:20 2026 +0800"
      },
      "message": "Merge pull request #72 from apache/agents\n\nAdd AGENTS.md"
    },
    {
      "commit": "8de5ff1c5ece532f54d648afd52423d5e63b5134",
      "tree": "9ae6d6d9542f91aeb77c5e03566245a01e9d8778",
      "parents": [
        "cdc58a61c4a444c1811b6cdf4a09902964a253c6"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Thu Feb 26 09:27:02 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 26 09:27:02 2026 +0800"
      },
      "message": "Update AGENTS.md\n\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "cdc58a61c4a444c1811b6cdf4a09902964a253c6",
      "tree": "a3041a8ee10d6e5f5ac324d44c2790fab001174f",
      "parents": [
        "decff64ccd1cf7749a260738d518a33183cabc36"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Thu Feb 26 09:19:09 2026 +0800"
      },
      "committer": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Thu Feb 26 09:19:09 2026 +0800"
      },
      "message": "Add AGENTS.md\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n"
    },
    {
      "commit": "decff64ccd1cf7749a260738d518a33183cabc36",
      "tree": "21f7f158eb581ac737da2cd2626a71d3295361e9",
      "parents": [
        "6a85428dfa4d66d477ee06dc8d1163e3127f3a8c",
        "5639fdfc03a0ede5ea42235a9eab5b4b95459387"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Thu Feb 26 08:58:23 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 26 08:58:23 2026 +0800"
      },
      "message": "Merge pull request #69 from sebbASF/ruff\n\nThist fixes the current linting errors"
    },
    {
      "commit": "5639fdfc03a0ede5ea42235a9eab5b4b95459387",
      "tree": "21f7f158eb581ac737da2cd2626a71d3295361e9",
      "parents": [
        "6a85428dfa4d66d477ee06dc8d1163e3127f3a8c"
      ],
      "author": {
        "name": "Sebb",
        "email": "sebb@apache.org",
        "time": "Wed Feb 25 17:37:52 2026 +0000"
      },
      "committer": {
        "name": "Sebb",
        "email": "sebb@apache.org",
        "time": "Wed Feb 25 17:37:52 2026 +0000"
      },
      "message": "ruff fixes\n"
    },
    {
      "commit": "0bce64a47704608ac25a740b9efd50be069dd313",
      "tree": "d2b21e8c42bfa9d2e6012ee8128efe2c50e23159",
      "parents": [
        "6a85428dfa4d66d477ee06dc8d1163e3127f3a8c"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Wed Feb 25 20:20:50 2026 +0800"
      },
      "committer": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Wed Feb 25 20:20:50 2026 +0800"
      },
      "message": "Empty hint should be excluded from sortable elements\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n"
    },
    {
      "commit": "6a85428dfa4d66d477ee06dc8d1163e3127f3a8c",
      "tree": "9e4a65cb3c1304f8836090b7fc406f37b52e0d01",
      "parents": [
        "d09cfa96da3a38fe40c84c58354482748c88de74"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Tue Feb 24 18:36:28 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Tue Feb 24 18:36:28 2026 -0600"
      },
      "message": "Link to ASF Privacy Policy. Remove private policy page.\n"
    },
    {
      "commit": "d09cfa96da3a38fe40c84c58354482748c88de74",
      "tree": "49167340cc8876467558bba8b45055e7a6ebdf5a",
      "parents": [
        "818919a133153c033696b060569abe596ff72fe5"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Mon Feb 23 09:47:02 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Mon Feb 23 09:47:02 2026 -0600"
      },
      "message": "docs: improve comments and documentation in create-election.py and election.yaml.sample\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "818919a133153c033696b060569abe596ff72fe5",
      "tree": "7e6b9b6906ff57649e8f99e9bfc2cad85a051035",
      "parents": [
        "41903940eac27daa74fd2bac6bf3f167351e568b"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Mon Feb 23 09:34:25 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Mon Feb 23 09:34:25 2026 -0600"
      },
      "message": "docs: update sample election YAML to use record list and Unix timestamps\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "41903940eac27daa74fd2bac6bf3f167351e568b",
      "tree": "037ed452ca0cee7f52c6d4b733d41cdeadfa94c0",
      "parents": [
        "356107fa575207a0ea1a5f5c2a1163141f5e6a15"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Mon Feb 23 07:32:49 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Mon Feb 23 07:32:49 2026 -0600"
      },
      "message": "Various fixes for election tallying.\n\n* is_tampered() is now available for both open and closed elections.\n* tallying now understands that a person may have not voted on an issue\n\n.. separate: quiet down some print() calls\n"
    },
    {
      "commit": "356107fa575207a0ea1a5f5c2a1163141f5e6a15",
      "tree": "cdc93c76e0abc93fa347cd93cde8c82949926c5a",
      "parents": [
        "2fe46a1d59d46ebb5ed30cecbd68cbd5ce22fb29"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sun Feb 22 23:29:47 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sun Feb 22 23:29:47 2026 -0600"
      },
      "message": "clarify what run-mode is being used.\n"
    },
    {
      "commit": "2fe46a1d59d46ebb5ed30cecbd68cbd5ce22fb29",
      "tree": "14fc4f8e3795e40ebf5bd4fd8869e9b2dd1b81f9",
      "parents": [
        "38fcdfde21a3793be0095b2b149fb46add42c649"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sun Feb 22 23:26:49 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sun Feb 22 23:26:49 2026 -0600"
      },
      "message": "rebuild to run standalone, or under hypercorn/etc\n"
    },
    {
      "commit": "38fcdfde21a3793be0095b2b149fb46add42c649",
      "tree": "9396abc226e5f62ccaa3d81e1533c5a6a36ace7a",
      "parents": [
        "2b10e79ce4de5f6e58df1bc4bdd8072b8a10a3a9"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sun Feb 22 00:09:21 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sun Feb 22 00:12:21 2026 -0600"
      },
      "message": "Grok made a mistake and is owning up to it. Reverting the erroneous change to c_edit_issue.\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "2b10e79ce4de5f6e58df1bc4bdd8072b8a10a3a9",
      "tree": "ba4941bbfbff348c6ab04a6b95246cebd774c520",
      "parents": [
        "26c7d5406ffb5f02bf93e6696d1ee1503c8a57c7"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sun Feb 22 00:05:48 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sun Feb 22 00:05:48 2026 -0600"
      },
      "message": "feat: add queries and method to list closed and open election IDs\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "26c7d5406ffb5f02bf93e6696d1ee1503c8a57c7",
      "tree": "78001ad1abfd2ea951f9f50c34bad6b790b924a2",
      "parents": [
        "5c5e70b81898521a4897e2267ac8ff2c6a0c962c"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sat Feb 21 23:52:43 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sat Feb 21 23:52:43 2026 -0600"
      },
      "message": "feat: implement tally script for election issues\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "5c5e70b81898521a4897e2267ac8ff2c6a0c962c",
      "tree": "0c21e9fb47ce8112726e68285cdd0e666b441cd5",
      "parents": [
        "ff3e75ff6ad0981d399dfb30d9c98b5760824abe"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sat Feb 21 23:52:39 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein (aider)",
        "email": "gstein@gmail.com",
        "time": "Sat Feb 21 23:52:39 2026 -0600"
      },
      "message": "feat: add tally script for elections\n"
    },
    {
      "commit": "ff3e75ff6ad0981d399dfb30d9c98b5760824abe",
      "tree": "d6579508fc323755aee239826fa08d0e2e09be58",
      "parents": [
        "5235933232411c0b5bc05f483c30b2b6d21f0a7c"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sat Feb 21 21:27:04 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sat Feb 21 21:27:04 2026 -0600"
      },
      "message": "refactor: use showModal utility for STV modal\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "5235933232411c0b5bc05f483c30b2b6d21f0a7c",
      "tree": "2085396039bc56a63c3ab7b263fb651d1e090bc9",
      "parents": [
        "82a66a6d23a5693cf7c70dbd585c9ece47d27558"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sat Feb 21 21:15:14 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sat Feb 21 21:15:14 2026 -0600"
      },
      "message": "Serve third-party content from our own servers.\n\nSortable is MIT licensed: safe to copy/serve.\n\nUpdate the fetching script. Add the JS. Update vote-on with the new\nlink and correct integrity value.\n"
    },
    {
      "commit": "82a66a6d23a5693cf7c70dbd585c9ece47d27558",
      "tree": "a6919e1c7affa43f12fa45c4e088483836542cdd",
      "parents": [
        "abdfb3ae7b22cf79b3d0a76feeb6e416dd00ffce"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sat Feb 21 20:59:36 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sat Feb 21 20:59:36 2026 -0600"
      },
      "message": "we are fetching more stuff. rename the fetch script\n"
    },
    {
      "commit": "abdfb3ae7b22cf79b3d0a76feeb6e416dd00ffce",
      "tree": "330cfe409509c7128092a1500870fe384447b16e",
      "parents": [
        "65d13fa86b456525360693dcf60afdfd2ee037e9"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sat Feb 21 20:53:12 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sat Feb 21 20:53:12 2026 -0600"
      },
      "message": "feat: add SortableJS library download to fetch-bootstrap.sh\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "65d13fa86b456525360693dcf60afdfd2ee037e9",
      "tree": "07bda329c89fe31c8b21d65b8263dca90a2a4383",
      "parents": [
        "12b8a9c30fc2ba9ad24c01e9f6fb61da72fb0817"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sat Feb 21 20:43:33 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sat Feb 21 20:43:33 2026 -0600"
      },
      "message": "refactor: shuffle candidates in vote_on_page to prevent bias\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "12b8a9c30fc2ba9ad24c01e9f6fb61da72fb0817",
      "tree": "cbdc4721f8af210ed770c8dfa7e47f67e834675e",
      "parents": [
        "21349fa18746896096907bc79c0c3d227750fc40"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sat Feb 21 20:23:44 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sat Feb 21 20:23:44 2026 -0600"
      },
      "message": "feat: make labelmap an easydict and add sorted candidates to STV issues\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "21349fa18746896096907bc79c0c3d227750fc40",
      "tree": "591ae2929596dc43bd0ae46b1850d568ffe53da3",
      "parents": [
        "f783e5a1bbf72fabb73dc76a8dc73a16803c7eac"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sat Feb 21 19:53:13 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sat Feb 21 19:53:13 2026 -0600"
      },
      "message": "better way to run main.py, to always use \"uv run\"\n"
    },
    {
      "commit": "f783e5a1bbf72fabb73dc76a8dc73a16803c7eac",
      "tree": "61d9a50be7d3f40811c493fa3dc95853b8ef109b",
      "parents": [
        "aa4618892fdd821e51bd1d20d6ed2f8c2a2d70be"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sat Feb 21 02:12:30 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sat Feb 21 02:12:30 2026 -0600"
      },
      "message": "feat: add seats attribute to STV issues from KV value\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "aa4618892fdd821e51bd1d20d6ed2f8c2a2d70be",
      "tree": "37cded0c819d09b4a251385ce4c4be017080115b",
      "parents": [
        "160ff92620c6622292449e7638a32d4574f7a944"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sat Feb 21 01:56:17 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sat Feb 21 01:56:17 2026 -0600"
      },
      "message": "feat: add voting eligibility check and issue sorting to vote_on_page\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "160ff92620c6622292449e7638a32d4574f7a944",
      "tree": "f71f21611fc6e2825f009bbbc2f88876c153a146",
      "parents": [
        "f4a0f2f6c813cc3a73bb2714a8e7d7826dd4f24b"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 19:46:06 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 19:46:06 2026 -0600"
      },
      "message": "add comment about serialization of the KV column\n"
    },
    {
      "commit": "f4a0f2f6c813cc3a73bb2714a8e7d7826dd4f24b",
      "tree": "b47dded0c240b3699014aa14f612024ad83c5dde",
      "parents": [
        "c6a3f10768c3a266a59181d99018bacca5465a71"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 19:32:44 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 19:32:44 2026 -0600"
      },
      "message": "Switch from passlib to argon2-cffi.\n\nThe cffi was already imported so that passlib could use it. However,\nwe don\u0027t need the \"stored password formatting\" that passlib provides.\nWe simply want the Argon2 hashing algorithm.\n\nStrip out passlib.\n\nAdd a benchmarking tool to measure/tune our use of Argon2. We can\nperform some tuning in the future to ensure (minimum time) that brute\nforce can\u0027t be used against our vote database.\n"
    },
    {
      "commit": "c6a3f10768c3a266a59181d99018bacca5465a71",
      "tree": "065a09b5837019ffc3ea7a484a09e48a54acff4f",
      "parents": [
        "b3c0db27188815daa3b035f8775d4f56cfdc3eae"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 19:28:51 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 19:28:51 2026 -0600"
      },
      "message": "STV votestrings were switched to comma-separated\n"
    },
    {
      "commit": "b3c0db27188815daa3b035f8775d4f56cfdc3eae",
      "tree": "19823eab3371aebae3913d6e3ee06891c1dc7ac6",
      "parents": [
        "8457a59da6e58fd62ea20335dc6a2e84af0cc8fa"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 18:21:20 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 18:21:20 2026 -0600"
      },
      "message": "Intermediate hash of the EDATA glom.\n"
    },
    {
      "commit": "8457a59da6e58fd62ea20335dc6a2e84af0cc8fa",
      "tree": "ba6b3a5bee84f604701ccd582272e5b193f44c12",
      "parents": [
        "cf01ff003ec008786848147cf188fec06c47fd9b"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 10:49:45 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 10:49:45 2026 -0600"
      },
      "message": "fix: restrict election data gathering to eligible voters using mayvote table\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "cf01ff003ec008786848147cf188fec06c47fd9b",
      "tree": "86fe9d906b86dd638f2731f796af61273b3ccf57",
      "parents": [
        "8311dfb344fb492792c014d4f464675e69c04f0e"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 10:29:12 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 10:29:12 2026 -0600"
      },
      "message": "quick hack to remap PID values from old to current\n"
    },
    {
      "commit": "8311dfb344fb492792c014d4f464675e69c04f0e",
      "tree": "75938ebe56b8d7df80a31437dbbeeab9d0dbc8dc",
      "parents": [
        "b3b67847dec5e291c5cada846f1905a38c9135dd"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 10:09:42 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 10:09:42 2026 -0600"
      },
      "message": "refactor: adjust parse_datetime to handle Unix timestamps as ints or strings\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "b3b67847dec5e291c5cada846f1905a38c9135dd",
      "tree": "86b929be04667fd8e5dc5d262aad513c9a40c2a6",
      "parents": [
        "b2e838cbf99475dae19d02958557bfa5e0fa9629"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 10:05:58 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 10:05:58 2026 -0600"
      },
      "message": "feat: replace eligible_voters with record-based voter list from YAML\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "b2e838cbf99475dae19d02958557bfa5e0fa9629",
      "tree": "e090dece8842334aea9fcd39db790cb89c09a08a",
      "parents": [
        "c101b756b3bc4fa72499dabba5219395f07e2571"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 07:52:05 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 07:52:05 2026 -0600"
      },
      "message": "Massive revamp of the voter page to enable STV.\n\n* Added/moved election metadata to a sticky card at top.\n* added STV modal dialog with SortableJS\n* added a Submit butt at top, in addition to bottom\n* revised the bulk voting\n"
    },
    {
      "commit": "c101b756b3bc4fa72499dabba5219395f07e2571",
      "tree": "9655bdec7762743e6ba843b14b4ea0f4899273ea",
      "parents": [
        "a66f14270697a1ba1aa56439185dc30ddd927c84"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 07:44:17 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 07:44:17 2026 -0600"
      },
      "message": "avoid the type() python builtin name. use vtype\n"
    },
    {
      "commit": "a66f14270697a1ba1aa56439185dc30ddd927c84",
      "tree": "b3199f19f79d4ac4559c475d80c6437d0826f2fe",
      "parents": [
        "37acd3dce2d0bd326296120fc485483354851774"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 07:29:53 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 07:29:53 2026 -0600"
      },
      "message": "Update the page footer: copyright year, version number.\n\nProvided-by: andreww\n"
    },
    {
      "commit": "37acd3dce2d0bd326296120fc485483354851774",
      "tree": "c226ea4363d54cce634692cad822806e9740631f",
      "parents": [
        "1caa49b1ea136209a5b9a74cf6da3a3a2f64ff67"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 07:09:08 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 07:09:08 2026 -0600"
      },
      "message": "Improve readability of the admin box on the home page.\n\nProvided-by: andreww\n"
    },
    {
      "commit": "1caa49b1ea136209a5b9a74cf6da3a3a2f64ff67",
      "tree": "7187ca1718a210df76521b693a2c6b9a07b942e1",
      "parents": [
        "cc6eaa3821c34068c409ede7fb7b3667441c5fa0"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 05:49:34 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 05:49:34 2026 -0600"
      },
      "message": "refactor: update voting to use form-based submission with submitFormWithLoading\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "cc6eaa3821c34068c409ede7fb7b3667441c5fa0",
      "tree": "a11b34af1e5bd0f2fdee9e98671ebeec340227d1",
      "parents": [
        "600b33fd2f052381f8d85a65ab2c5605365335b6"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 05:08:03 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 05:08:03 2026 -0600"
      },
      "message": "feat: allow recasting ballots without warning\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "600b33fd2f052381f8d85a65ab2c5605365335b6",
      "tree": "f4506e57701fd47f5cb4c0aa9ee97a5e202cf742",
      "parents": [
        "3eb6a074ef509ce64879e0afe22931d139976863"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 04:54:44 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 04:54:44 2026 -0600"
      },
      "message": "style: rename do_vote route to do-vote with dash\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "3eb6a074ef509ce64879e0afe22931d139976863",
      "tree": "9e75560bb7de0c7ea79982ab21848a7da4ae0f54",
      "parents": [
        "3ab9679455eedf6f4c9435a8b039c5db68705cf5"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 04:32:43 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 04:32:43 2026 -0600"
      },
      "message": "feat: add voting endpoint for elections\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "3ab9679455eedf6f4c9435a8b039c5db68705cf5",
      "tree": "8b09d04747ab846babfabf695ff30e058ec991b1",
      "parents": [
        "0f12c601cd7563c4059e5c5903b9a8a853db86c8"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 04:15:47 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 04:15:47 2026 -0600"
      },
      "message": "Revamp voter landing page.\n\nBetter organization for open/current elections, upcoming, and past.\n\nBig template change to move to tabs. Supporting template variables in\npages.py\n\nh/t Claude Sonnet\n"
    },
    {
      "commit": "0f12c601cd7563c4059e5c5903b9a8a853db86c8",
      "tree": "b72cd5b7a613a80fc11831eb984fc088b0198331",
      "parents": [
        "9de6a7e665cd208c60ca298b26f3c61b7da53dfa"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 02:47:24 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 02:47:24 2026 -0600"
      },
      "message": "feat: include owner_pid in q_upcoming_to_me query results\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "9de6a7e665cd208c60ca298b26f3c61b7da53dfa",
      "tree": "117ab7b705bde06529d2c102713161abf88dfa9b",
      "parents": [
        "623a4126cc2b460d2103a61c8574ee9b4cb01568"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 02:45:33 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 02:45:33 2026 -0600"
      },
      "message": "fix issue with checking state\n"
    },
    {
      "commit": "623a4126cc2b460d2103a61c8574ee9b4cb01568",
      "tree": "c178458e7467da8974f5d7b0e88951407891d268",
      "parents": [
        "92843a9b67f8a373debc84554e6c73f986134994"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 02:26:51 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 02:26:51 2026 -0600"
      },
      "message": "feat: add authz and closed fields to q_upcoming_to_me query\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "92843a9b67f8a373debc84554e6c73f986134994",
      "tree": "b6457572be47dca4b2f3d648054dc556a1f42850",
      "parents": [
        "c4f7cd8fd41f955e2544f483daa4a16f8c418b8c"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 02:05:14 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 02:05:14 2026 -0600"
      },
      "message": "fix: correct undefined name \u0027iid\u0027 in IssueNotFound.__str__\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "c4f7cd8fd41f955e2544f483daa4a16f8c418b8c",
      "tree": "03ebd10254949c56b9979f7b5bdecb284c62bb47",
      "parents": [
        "e805ed5db52eac09b80fe9f144cb6798013cbcc5"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 02:03:55 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 02:03:55 2026 -0600"
      },
      "message": "feat: add upcoming_to_pid method and q_upcoming_to_me query\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "e805ed5db52eac09b80fe9f144cb6798013cbcc5",
      "tree": "e0771fd2bb55232d0fd159939027be196591e0ec",
      "parents": [
        "572d2393463a4465d65fc9c470f1584ecb8a79b4"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 02:00:19 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 02:00:19 2026 -0600"
      },
      "message": "feat: add upcoming elections section to voter page\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "572d2393463a4465d65fc9c470f1584ecb8a79b4",
      "tree": "f52879310b111fb6bb877b516f5e8a02e81c68d4",
      "parents": [
        "62facf9620efd8272a48cb06d5cd445679ab396d"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 01:31:44 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 01:31:44 2026 -0600"
      },
      "message": "feat: add set_open_at and set_close_at methods to Election class\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "62facf9620efd8272a48cb06d5cd445679ab396d",
      "tree": "8395d733f88f19f17e15da3634b10fbb6ea3824f",
      "parents": [
        "7e12b2bf3a4c3177f1e4dac6dafd775a833611b0"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 00:33:23 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 00:33:23 2026 -0600"
      },
      "message": "thanks dependabot\n"
    },
    {
      "commit": "7e12b2bf3a4c3177f1e4dac6dafd775a833611b0",
      "tree": "66d1ff7167c885177fbaf94043e747810a534a33",
      "parents": [
        "2d8ae1cbe7d1dacbc126390c07443f9a5e7eb98c"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 00:26:12 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 00:26:12 2026 -0600"
      },
      "message": "refactor: add helper function and refactor date-setting endpoints to reduce duplication\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "2d8ae1cbe7d1dacbc126390c07443f9a5e7eb98c",
      "tree": "4645bd138bf86e81ec5665cfb54404014ed8b351",
      "parents": [
        "34094c8f4bd17a4f8d298b154451574d00d93b85"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 00:26:08 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein (aider)",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 00:26:08 2026 -0600"
      },
      "message": "feat: add endpoints for setting election open and close dates\n"
    },
    {
      "commit": "34094c8f4bd17a4f8d298b154451574d00d93b85",
      "tree": "b6b198b9c73d138ecb073170e123521984dea215",
      "parents": [
        "2d931346200c78107f389d23da45db15ed0cfb11"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 00:07:26 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 20 00:07:26 2026 -0600"
      },
      "message": "docs: add TODO file documenting pages.py review and fixes\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "2d931346200c78107f389d23da45db15ed0cfb11",
      "tree": "7de21e9a49fd8b6dc6aac80b925e11d52ba3bd7d",
      "parents": [
        "bcff294edb7a2874aade162c84ab383be55fefe7"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Feb 19 23:51:16 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Feb 19 23:51:16 2026 -0600"
      },
      "message": "Revise the state transition UX.\n\nNeeded to incorporate the estimated open/close dates, their date\npickers, their conversion to static values, and clarify how the\ntransitions worked for clarity.\n\nThere is now an \"info box\" and an \"action box\". Pulls this all\ntogether cleanly into the election management page.\n\nh/t Claude Sonnet 4.6\n"
    },
    {
      "commit": "bcff294edb7a2874aade162c84ab383be55fefe7",
      "tree": "940a12acb88f816ea7e509280128f58377a12686",
      "parents": [
        "0f201aee3b52e36b8d82b87cffcc6073e0066a6d"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Feb 19 22:04:47 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Feb 19 22:04:47 2026 -0600"
      },
      "message": "fix template references\n"
    },
    {
      "commit": "0f201aee3b52e36b8d82b87cffcc6073e0066a6d",
      "tree": "497e4d31ad86827038824a0dd9d1991abd26cf39",
      "parents": [
        "36a7d8b6aee29b7e09402ec2bf8b76e96c9fe5b4"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Feb 12 07:42:17 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Feb 12 07:42:17 2026 -0600"
      },
      "message": "revert change of path for steve.db ... it is located with the server\n"
    },
    {
      "commit": "36a7d8b6aee29b7e09402ec2bf8b76e96c9fe5b4",
      "tree": "b87a22909795a0f0aac81f03aaae870502ede85b",
      "parents": [
        "d08196a0d559783f20eb1d085e8c2573018e839b"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Feb 12 07:31:49 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Feb 12 07:31:49 2026 -0600"
      },
      "message": "feat: populate open/close date inputs and display actual times in state box\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "d08196a0d559783f20eb1d085e8c2573018e839b",
      "tree": "d79f0a6a7468ebb825aa787c8bc1e383a98ba55d",
      "parents": [
        "9bb755271ef35beb9f787d790f7833c7e2621d71"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Feb 12 07:16:30 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Feb 12 07:16:30 2026 -0600"
      },
      "message": "feat: add expected opening and closing timestamps to admin election cards\n\nCo-authored-by: aider (openrouter/x-ai/grok-code-fast-1) \u003caider@aider.chat\u003e\n"
    },
    {
      "commit": "9bb755271ef35beb9f787d790f7833c7e2621d71",
      "tree": "cd7dcd5d22043141b1e2b9ffc8a0f4fbf50bf952",
      "parents": [
        "7a5db4e328054c085475c74c82173ce9d5ddb002",
        "7a0a94afcdbf215fc1fdb5b5190ab304c6a861db"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Sat Feb 07 11:21:34 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Feb 07 11:21:34 2026 +0800"
      },
      "message": "Merge pull request #64 from apache/finetune\n\nFix load-fakedata.py"
    },
    {
      "commit": "7a0a94afcdbf215fc1fdb5b5190ab304c6a861db",
      "tree": "cd7dcd5d22043141b1e2b9ffc8a0f4fbf50bf952",
      "parents": [
        "cd51b5b609ccb609daccf77809a567f6d9089e9f"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Sat Feb 07 11:04:51 2026 +0800"
      },
      "committer": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Sat Feb 07 11:04:51 2026 +0800"
      },
      "message": "more format\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n"
    },
    {
      "commit": "cd51b5b609ccb609daccf77809a567f6d9089e9f",
      "tree": "5b91e85065cef07aa4c4b6f153f5601acc161aef",
      "parents": [
        "b1e3c5336d6a866c31519a2ec05acaba4bfaec99",
        "7a5db4e328054c085475c74c82173ce9d5ddb002"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Sat Feb 07 11:04:33 2026 +0800"
      },
      "committer": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Sat Feb 07 11:04:33 2026 +0800"
      },
      "message": "Merge branch \u0027trunk\u0027 into finetune\n"
    },
    {
      "commit": "7a5db4e328054c085475c74c82173ce9d5ddb002",
      "tree": "5d33207882b4ed4848fac801f2c01b8a09712602",
      "parents": [
        "9bf0c7372f8b891bfaf6017ab9a3b9371854163c"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 06 19:25:06 2026 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Feb 06 19:25:06 2026 -0600"
      },
      "message": "Improvement to q_open_to_me query.\n\nUse LEFT JOIN in case the owner is missing (??) ... owner_name will be\nNULL, but at least the election will be returned.\n\nImprove the comment for the query. (h/t Claude)\n"
    }
  ],
  "next": "9bf0c7372f8b891bfaf6017ab9a3b9371854163c"
}
