)]}'
{
  "log": [
    {
      "commit": "c20e37259411b9cc1d6be4f179ab34fb940c1029",
      "tree": "f84f66494f198611935d870747cbde6b85fdd5ec",
      "parents": [
        "af821c801fb70dc3d178dc3ca0c3d4538f9f29aa"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Apr 23 15:04:45 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Apr 24 13:15:14 2024 +0000"
      },
      "message": "treewide: replace errors.Wrap assertions with fmt.Errorf\n\nChange-Id: Ib67c949c492654df402e0f49670167fb7857aabb\nReviewed-on: https://review.monogon.dev/c/monogon/+/3040\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "af821c801fb70dc3d178dc3ca0c3d4538f9f29aa",
      "tree": "a5f527030125139c9b09be3c37ea2ee862320ce3",
      "parents": [
        "d5f851bb477638436826adec756fe562db526865"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Apr 23 15:03:52 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Apr 24 13:15:14 2024 +0000"
      },
      "message": "treewide: replace error assertions with errors.As\n\nChange-Id: I369cc1dd8f745203f6f24093049d60d971acdf11\nReviewed-on: https://review.monogon.dev/c/monogon/+/3038\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "d5f851bb477638436826adec756fe562db526865",
      "tree": "d981b1c62d613b45fb55023da289098d7e377705",
      "parents": [
        "69fec522d5db79d07bb1f227c2ab39c57fdf2831"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Apr 23 14:59:37 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Apr 24 13:15:14 2024 +0000"
      },
      "message": "treewide: replace error comparisons and assertions with errors.Is\n\nChange-Id: Id2424eb155f2c6842c72c5fafd124d428ef901f2\nReviewed-on: https://review.monogon.dev/c/monogon/+/2994\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "69fec522d5db79d07bb1f227c2ab39c57fdf2831",
      "tree": "df6b114dbf9fa2e7992c1a0771ea87bba5aedd4a",
      "parents": [
        "6b20781437269c2d7a2497896bf396f9ecd3c184"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 18 14:15:52 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Apr 23 19:37:31 2024 +0000"
      },
      "message": "metropolis/pkg: delete unused package combinectx\n\nChange-Id: I7d92c2055f6010263013b6e0bd759d7f7906f2c0\nReviewed-on: https://review.monogon.dev/c/monogon/+/3000\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "6b20781437269c2d7a2497896bf396f9ecd3c184",
      "tree": "7cf726bde966a9e8945a82fc32619aa508708142",
      "parents": [
        "690511d310507c9435916256869b7a0ead6fa8cf"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Apr 22 19:13:15 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Apr 23 19:37:31 2024 +0000"
      },
      "message": "treewide: replace fmt.Errorf with fmt.Sprintf in panic calls\n\nSince we are inside a panic anyway, let\u0027s not use Errorf as we only need\na string.\n\nChange-Id: Id43e403124e0fa60e038397d3153f96181c916e2\nReviewed-on: https://review.monogon.dev/c/monogon/+/3034\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "13b83f704367d9dd32359ff29b51b90cfbc4b361",
      "tree": "9524284335194acc67f88368821a044e10e60c1f",
      "parents": [
        "ee8c81bebb610af692db594dfbb848c506a5fd6a"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 11 23:10:16 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Apr 23 12:07:38 2024 +0000"
      },
      "message": "metropolis/node/core: fix invalid write in console setup\n\nWhen configuring the console writers, we are iterating over a slice of\nconsole structs, this is fine by itself, but we are also storing a\nreference to the logtree reader. Since we are iterating over a struct\nvalue and aren\u0027t using a pointer, this write won\u0027t persist into the\nunderlying slice and we cannot close the reader anymore. By using a\npointer to a struct instead of the raw value the issue is fixed.\n\nChange-Id: Iaf753345cd275a03aecf9748b344c60eefcf9d69\nReviewed-on: https://review.monogon.dev/c/monogon/+/2973\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "ee8c81bebb610af692db594dfbb848c506a5fd6a",
      "tree": "ced910e5099b8e465516639918e8e336cd27c826",
      "parents": [
        "28296493299f49fe82c2fe4b085ad6cf72097daf"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Apr 03 11:59:38 2024 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Apr 23 12:05:29 2024 +0000"
      },
      "message": "m/t/launch/cluster: make LaunchNode non-blocking\n\nThis is an API change that will help down the line when implementing\nnode shutdowns/startups. It brings the \u0027done\u0027 channel as a LaunchNode\nargument, making the function call itself non-blocking.\n\nChange-Id: Ic536826be8a25b9af9376c771c35c8767641ec8c\nReviewed-on: https://review.monogon.dev/c/monogon/+/2940\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "28296493299f49fe82c2fe4b085ad6cf72097daf",
      "tree": "2e455019bdfca4df3ad3df3fb7e669100a5e242d",
      "parents": [
        "07e7f0d47bb5e60a4a6195717cc362d574b0d3ad"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Apr 17 14:50:53 2024 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Apr 23 12:05:29 2024 +0000"
      },
      "message": "m/n/core/n/hostsfile: persist and load node names to/from Cluster Directory\n\nThis change persists node IDs alongside their addresses to the ESP\nClusterDirectory, and loads them up on startup to pre-populate\n/etc/hosts.\n\nThis is important to bring up clusters from a full cold shutdown, as\nthese name/address mappings are needed by etcd to connect to other\nnodes (etcd connects to other members over metropolis node names, and\nexpects to be able to resolve them to actual IP addresses).\n\nThis didn\u0027t affect rolling restarts as other nodes would connect to a\nnewly started up node. But if all nodes are down, this is needed to\nactualy run.\n\nChange-Id: Ifa944bb231909983af2fcb9418a2769e7af65509\nReviewed-on: https://review.monogon.dev/c/monogon/+/2989\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "07e7f0d47bb5e60a4a6195717cc362d574b0d3ad",
      "tree": "ccf5859e4301a469390b1092f6a8b63c54b63108",
      "parents": [
        "65546898bf8f7777eef652dae0b145144a463b6f"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Apr 22 10:38:47 2024 +0000"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Apr 22 18:16:22 2024 +0000"
      },
      "message": "m/n/c/n/dhcp4c: use net.ErrClosed\n\nWe\u0027re now on Go 1.22, resolve this old TODO.\n\nChange-Id: If2d2d2dd3a2b79dafdcd24baf9a666e9028129de\nReviewed-on: https://review.monogon.dev/c/monogon/+/3032\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "65546898bf8f7777eef652dae0b145144a463b6f",
      "tree": "b251d9d2837d1f9fd2f71530ea40ec50b357fd20",
      "parents": [
        "e84726bf41988c062c86968fd17e1a90a53a9174"
      ],
      "author": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Mon Apr 15 14:49:13 2024 +0200"
      },
      "committer": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Wed Apr 17 16:48:46 2024 +0000"
      },
      "message": "m/n/c/update/e2e: remove unreachable code\n\nt.Fatal does not return, anything after is unreachable.\n\nChange-Id: Id67e523911b733a6992e0166c422f821c268fea2\nReviewed-on: https://review.monogon.dev/c/monogon/+/2977\nVouch-Run-CI: Lorenz Brun \u003clorenz@monogon.tech\u003e\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "e84726bf41988c062c86968fd17e1a90a53a9174",
      "tree": "aefd64754a2a02819bd3d0fd012129f635f15b53",
      "parents": [
        "f779b8fbd5b9d7deb17bb8833ade823bd6ebc185"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Apr 17 16:32:32 2024 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Apr 17 16:16:51 2024 +0000"
      },
      "message": "m/test/launch/cluster: make runfile aware\n\nResolving paths from metropolis/... doesn\u0027t seem to work in some tests\n(noticed while reworking E2E test package layout, but I\u0027m not exactly\nsure why it\u0027s only surfacing then...).\n\nChange-Id: Idc30ba79b188f60f0502910ad065aefacdb2db83\nReviewed-on: https://review.monogon.dev/c/monogon/+/2992\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "f779b8fbd5b9d7deb17bb8833ade823bd6ebc185",
      "tree": "19310389f1b07e2b6931d730b010f00527785a9f",
      "parents": [
        "538292d66196e8ba1a63454c4a9e2aa547684ef3"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Apr 17 16:30:55 2024 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Apr 17 16:16:51 2024 +0000"
      },
      "message": "m/pkgs/localregistry: make runfile aware\n\nResolving paths from metropolis/... doesn\u0027t seem to work in some tests\n(noticed while reworking E2E test package layout, where the test target\nisn\u0027t in the same package as the localregistry_manifest target).\n\nChange-Id: Id7d9283b9675cbab56ecdb83df6a4b0f5578e5f6\nReviewed-on: https://review.monogon.dev/c/monogon/+/2991\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "538292d66196e8ba1a63454c4a9e2aa547684ef3",
      "tree": "d590a37f8d29c49e041411b07d83eec84c6931f5",
      "parents": [
        "5ad3144690965827669ce29f71c534caae42b901"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Apr 17 14:50:02 2024 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Apr 17 15:12:25 2024 +0000"
      },
      "message": "metropolis: replace node pubkey with id in cluster directory\n\nThe pubkey in the cluster directory was never used in the first place,\nand its presence complicates things (exposes the notion of nodes having\na public key and potentially causes reliance on the public key in\nuntrusted scenarios, eg. when the cluster directory is persisted to\nuntrusted storage).\n\nLet\u0027s just replace that field with a string node ID instead, as that\u0027s\nalso immediately useful in future code (persisting host name mapping\nbetween reboots).\n\nChange-Id: I9b29ee36974ef6edce6076b5df1b8b330fef8bd8\nReviewed-on: https://review.monogon.dev/c/monogon/+/2981\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "5ad3144690965827669ce29f71c534caae42b901",
      "tree": "c68a35fc564ce751809ee73eb6681f8f2a7a26b7",
      "parents": [
        "88049727772bb3ad1f00307919da67c6d2743402"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Apr 17 15:40:52 2024 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Apr 17 15:12:19 2024 +0000"
      },
      "message": "m/n/core/consensus: remove unused fifoPath argument\n\nThis is dead code. The fifoPath is actually passed through the\nconfiguration object, which is built directly from a localstorage file\nwhose full path is used as the location of the log FIFO.\n\nChange-Id: Ibf395336f7892e425a69fb3092f7b42d39317b73\nReviewed-on: https://review.monogon.dev/c/monogon/+/2990\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "88049727772bb3ad1f00307919da67c6d2743402",
      "tree": "13b0015edb805c3c39f7f77e0bead11436f68713",
      "parents": [
        "2006753ea2e8f51cdfc51ad085663fdae4ff8782"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 11 23:09:23 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Apr 17 15:04:59 2024 +0000"
      },
      "message": "treewide: fix t.Fatal calls in non-test goroutines\n\nFunctions that abruptly terminate a test, such as the\nFatal, Fatalf, FailNow, and Skip{,f,Now} methods of *testing.T,\nmust be called from the test goroutine itself, as they call\nruntime.Goexit internally to stop the calling goroutine, not the\ntest.\n\nChange-Id: I4926c802bfbb11aeec6e130b0f4fb2407879cbd4\nReviewed-on: https://review.monogon.dev/c/monogon/+/2972\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "8ae96a4ba3dc7cca7794acd011d558872cf0f041",
      "tree": "a8cecb808e3fbb3600882c69d1d57cf2f77a03a2",
      "parents": [
        "322e0d9f8f234e08e7dd3422ebda54a29b6cb95f"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Apr 17 12:46:32 2024 +0000"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Apr 17 13:00:58 2024 +0000"
      },
      "message": "m/p/erofs: handle metadata alignment correctly\n\nallocateMetadata has an alignment argument but doesn\u0027t pass that down\nto findBlocks, instead opting to hardcode it to 32.\nPass down the alignment argument and add support for zero alignment to\nfindBlocks.\n\nThis does not cause any functional changes as this function was only\never called with 32 alignment and once at the zero position with 0\nalignment, but the zero position is aligned to every possible\nalignment anyways.\n\nChange-Id: Iad44e2a5ae5a99cf9449bba3ec88116e0e009b64\nReviewed-on: https://review.monogon.dev/c/monogon/+/2987\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "bda384c5536d1c3a92d2dd4a814fbaeb62ab6a46",
      "tree": "bb5103730036fc1c8131c685eebb1200e5137a7e",
      "parents": [
        "1d3a83d3a45e5d872245efc2bf3415a8132e86fe"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 11 01:41:57 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Apr 15 21:31:42 2024 +0000"
      },
      "message": "treewide: use nil value for empty slices\n\nChange-Id: I3a0d9c254841157e6dde1bc21921fdb76db7dde5\nReviewed-on: https://review.monogon.dev/c/monogon/+/2966\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "1d3a83d3a45e5d872245efc2bf3415a8132e86fe",
      "tree": "d09aff051a045aa804459c81ac4f02391bc85737",
      "parents": [
        "33306eb263f4124f7dc0d8528bdcf5b2de79e604"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 11 01:40:58 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Apr 15 21:31:42 2024 +0000"
      },
      "message": "metropolis/pkg/fsquota/quotactl: remove redundant parentheses\n\nChange-Id: I66f0394814094c32f52fb11b8fe703c45b131f36\nReviewed-on: https://review.monogon.dev/c/monogon/+/2964\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "33306eb263f4124f7dc0d8528bdcf5b2de79e604",
      "tree": "988b341b61cda93f4ae451d3ba0cfc827efd2520",
      "parents": [
        "9b2c15699524ad21a12c64d245f6fe25252a2afd"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 11 01:39:48 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Apr 15 21:31:42 2024 +0000"
      },
      "message": "metropolis/installer/test: check for part table parse error\n\nChange-Id: Ibd80c02dbb356c5d120b7787ae50dc487b253223\nReviewed-on: https://review.monogon.dev/c/monogon/+/2962\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "9b2c15699524ad21a12c64d245f6fe25252a2afd",
      "tree": "ab4180fc195d09cea864b4d06be61a4a8769148c",
      "parents": [
        "49c9ab02d7ce200db6defbc82d95646ac4d64804"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 11 01:39:25 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Apr 15 21:31:42 2024 +0000"
      },
      "message": "treewide: add empty default case to switch statements\n\nWe are ignoring all other possible cases, but without a proper default\ncase this looks like the other ones where just forgotten.\n\nChange-Id: I7a6e490d91c4e7e8c89a2d2d2ace1a82b7c5391b\nReviewed-on: https://review.monogon.dev/c/monogon/+/2961\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "49c9ab02d7ce200db6defbc82d95646ac4d64804",
      "tree": "da4d21a21fe25fa6a9e6211e26d8c0ef4ebece1f",
      "parents": [
        "0c57d34190434556847345072371a42a9e1c3154"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 11 01:39:06 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Apr 15 21:31:42 2024 +0000"
      },
      "message": "treewide: dont seed random\n\nAs of Go 1.20 there is no reason to call Seed with a random value.\nPrograms that call Seed with a known value to get a specific sequence\nof results should use New(NewSource(seed)) to obtain a local random generator.\n\nChange-Id: Ice1bbfefd900e6e9241428ec345f51f780eed91f\nReviewed-on: https://review.monogon.dev/c/monogon/+/2960\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "0c57d34190434556847345072371a42a9e1c3154",
      "tree": "adb53fda3b8b6e6d996e1696c9dadd2d506ef545",
      "parents": [
        "3810567012959d2871400ce2ecd39f53b9072bc3"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 11 01:38:47 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Apr 15 21:31:42 2024 +0000"
      },
      "message": "treewide: cleanup function receiver names\n\nChange-Id: I0575175ea249a2bd39b4b7769e49a9995fae6f6d\nReviewed-on: https://review.monogon.dev/c/monogon/+/2959\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "3810567012959d2871400ce2ecd39f53b9072bc3",
      "tree": "d1821ba3db669deec3a240dceb9bbf544b68c611",
      "parents": [
        "2a74e58ac02d0bf6ae25ae1ec4d8f187dd7db5ba"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 11 01:37:29 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Apr 15 21:31:42 2024 +0000"
      },
      "message": "treewide: remove shadowing of stdlib functions\n\nChange-Id: Iaccb22769d53568f6a4004924c218b9929090d89\nReviewed-on: https://review.monogon.dev/c/monogon/+/2957\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "6b6428da110db384cad1f1d65c81f1874c8cecae",
      "tree": "f44e7d1ffcc410893a9851e76e81939b178853df",
      "parents": [
        "5e460a92353ec619f4f12fffbe3281d40c85cf61"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 11 01:35:41 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Apr 15 21:31:42 2024 +0000"
      },
      "message": "treewide: remove redundant loop vars\n\nChange-Id: I61bada9e3df38e6a94cd6c8fe2d0d8f3ba41c1af\nReviewed-on: https://review.monogon.dev/c/monogon/+/2955\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "5e460a92353ec619f4f12fffbe3281d40c85cf61",
      "tree": "193a72608c05ad45f3a60a4ac84a8f5d731d7f73",
      "parents": [
        "438ae2e52cb0aa8dea021419d921c687330e7d3b"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 11 01:33:09 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Apr 15 21:19:50 2024 +0000"
      },
      "message": "treewide: remove unnecessary types and conversions\n\nChange-Id: Ifcaa9ceeec243b3646c9b6e0a6fad7ef2db8fd90\nReviewed-on: https://review.monogon.dev/c/monogon/+/2954\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "a27272c3219b22cf8470c81eaf529234e744332c",
      "tree": "ad4039f178e4566c3d879eccb5a82082e5694749",
      "parents": [
        "1a8062f7171aefab8bacb9a5a378db97dfea1c12"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 11 22:54:29 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Apr 15 19:08:20 2024 +0000"
      },
      "message": "metropolis/test/ktest/init: remove redundant error check\n\nChange-Id: I0af54a6d947481e3513ac82ee5790e70a71ed4c0\nReviewed-on: https://review.monogon.dev/c/monogon/+/2971\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "1a8062f7171aefab8bacb9a5a378db97dfea1c12",
      "tree": "a4d3b1201bc35d06cde45b5368b971425884c8d9",
      "parents": [
        "a7a82f32c7e0ab2765cda5f32f8d3bc6ff7a6fca"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 11 22:54:24 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Apr 15 19:08:20 2024 +0000"
      },
      "message": "metropolis/node/core/rpc: remove noop append\n\nChange-Id: I9817807cf15c2f2b2a8ea6b8292a15e44cbdccb8\nReviewed-on: https://review.monogon.dev/c/monogon/+/2970\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "a7a82f32c7e0ab2765cda5f32f8d3bc6ff7a6fca",
      "tree": "6867ed20da73232d289d0e7b701361a877cd8532",
      "parents": [
        "1ba1e1d299dd398db1c4434e0a0081edacfe3676"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 11 01:40:25 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Apr 15 19:08:20 2024 +0000"
      },
      "message": "metropolis/test/launch/cluster: remove redundant logic\n\nChange-Id: I993ac428f29423da62469a2fcea6b8d1d0ea7b87\nReviewed-on: https://review.monogon.dev/c/monogon/+/2963\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "1ba1e1d299dd398db1c4434e0a0081edacfe3676",
      "tree": "36e66505f9e4f20f19dd5ea30011dc14deb623a6",
      "parents": [
        "c12b797f2db5c7afba3eea571aa0e9038c28648f"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 11 01:41:28 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Apr 15 19:08:20 2024 +0000"
      },
      "message": "metropolis/pkg/kexec: fix scanner error check\n\nChange-Id: Ib2fff5e782ebd0fcef334b509900af995ce92264\nReviewed-on: https://review.monogon.dev/c/monogon/+/2965\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "6211e4dc404a285d858e1ecc69ac488c9cabb96b",
      "tree": "ff3b84efffb58982e0e55e61ed7fceb5df9609dc",
      "parents": [
        "2ac249bf8e571ae7fd134b586ff9c87dce520956"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Nov 14 19:09:40 2023 +0100"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Apr 15 14:45:53 2024 +0000"
      },
      "message": "treewide: k8s 1.28 and lots related updates\n\nFirst, this contains a bunch of dependency updates. Important ones in no\nparticular order:\nKubernetes 1.24.2 -\u003e 1.28.8\netcd 3.5.4 -\u003e 3.5.13\nProtobuf 1.32.0 -\u003e 1.33.0\nOpenTelemetry 0.20.0 -\u003e 1.20.0\ncontainerd 1.6.6 -\u003e 1.7.15\nCoreDNS 1.9.2 -\u003e 1.11.1\n\nWith Kubernetes 1.25 PodSecurityPolicies are removed, this replaces them\nwith a static PodSecurity admission configuration which behaves the same\nor is slightly more permissive in most ways. Only known exceptions are\nthat NET_RAW is no longer an allowed permission and non-standard SELinux\nlabels are no longer permitted (but these never did anything anyways).\nThe RBAC policies are intentionally not removed yet as we do not yet\nhave the capability to actually update these, so they will be removed\nwhen that is available (#288), until then they will stay in-place but\ndo nothing.\n\nWith the containerd upgrade the deprecated option for ignoring\npreseeded/pinned images for garbage collection in Kubelet can be\nremoved.\n\nThis change also contains some drive-by fixes to the controller-manager,\nlike passing the Service IP net and disabling cloud-related control\nloops which generate spurious warnings if enabled.\n\nThe containerd tracing patch is removed as we can now use OTel v1, thus\nthat patch is no longer necessary.\n\nAn actual upgrade test will be part of a future CL as this one is\nalready quite large and it works stand-alone.\n\nCo-authored-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nChange-Id: I8e5f51e6e6240a1b67590458b2f1c24d58c8e91e\nReviewed-on: https://review.monogon.dev/c/monogon/+/2315\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "2ac249bf8e571ae7fd134b586ff9c87dce520956",
      "tree": "d7796a3cda62176e4111ffe9714ebee142053ade",
      "parents": [
        "65bf311fbf47fec70019477237f6411123ef5727"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Apr 11 21:27:35 2024 +0000"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Apr 15 11:57:11 2024 +0000"
      },
      "message": "m/n/c/update/e2e: abort test when timing out\n\nThe test has failed when it hits timeout, everything afterwards\nis just misleading.\n\nChange-Id: Id20a525b6786de1b3b99eb3f24d4cc33f06d9912\nReviewed-on: https://review.monogon.dev/c/monogon/+/2976\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "65bf311fbf47fec70019477237f6411123ef5727",
      "tree": "daaa15a7c708f746e16301a2ea8e8175ebeff466",
      "parents": [
        "37cfcc109508d5370900228d5f20f2183ed2d65b"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Apr 08 21:32:14 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 11 19:21:02 2024 +0000"
      },
      "message": "third_party: expose firmware and ucode targets\n\nThat way we don\u0027t have to redefine it with every target that does\nany kind of takeover.\n\nChange-Id: I816b42a87c755da7b42944b2768f71b53d8d77f3\nReviewed-on: https://review.monogon.dev/c/monogon/+/2929\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "37cfcc109508d5370900228d5f20f2183ed2d65b",
      "tree": "8f6ed3609c784eab89d28b8e7b8e5b8ab83a1bda",
      "parents": [
        "c16f0488f8466a3e0ea81fb12ae249fe46bba892"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Mar 21 11:59:07 2024 +0100"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Apr 11 15:16:05 2024 +0000"
      },
      "message": "m/test/e2e: Implement TestE2ECoreHA\n\nThis is a basic test which exercises a TPM-sealed three-node cluster by\nperforming a rolling restart of control plane nodes.\n\nChange-Id: Ic6f46192d8ccba1ef7a767988cf5a216beb5a4c6\nReviewed-on: https://review.monogon.dev/c/monogon/+/2884\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "c16f0488f8466a3e0ea81fb12ae249fe46bba892",
      "tree": "123524a64bf0c1aadf29c8384127a6ea9ddc021c",
      "parents": [
        "bc969572bb153f88ac164243b4ad82fda435b748"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Mar 21 11:57:41 2024 +0100"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Apr 11 15:16:05 2024 +0000"
      },
      "message": "m/test/util: implement MustTestEventual\n\nThis allows us to early abort tests in which some critical TestEventual\nblocks fail.\n\nChange-Id: I82d2dd692abdc04b33d30571ea5ff55dc52635c9\nReviewed-on: https://review.monogon.dev/c/monogon/+/2883\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "bc969572bb153f88ac164243b4ad82fda435b748",
      "tree": "a9f50923fbb47025b2d5ebcdf0282464c2b220ad",
      "parents": [
        "19b110bd2f003e9e56bc5b1ca908a342beac9828"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Mar 21 11:56:13 2024 +0100"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Apr 11 15:16:05 2024 +0000"
      },
      "message": "m/t/launch/cluster: use Health for node liveness in RebootNode\n\nDepending on just heartbeat timestamps is buggy. A node\u0027s Health is\ncalculated on demand, and the calculation is aware of expected heartbeat\nintervals configured within the cluster, let\u0027s use that, gated by an\nadditional condition to make sure that the last heartbeat has been\nissued after the check has started.\n\nChange-Id: Id5982182a43ae9371b7d25451fedf91df3329218\nReviewed-on: https://review.monogon.dev/c/monogon/+/2882\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "19b110bd2f003e9e56bc5b1ca908a342beac9828",
      "tree": "200226890c86a361157419177d5ebcabc2b52fb3",
      "parents": [
        "0af4dab5326f7aa7cef1b8cc36e7324d784fc237"
      ],
      "author": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Wed Apr 10 14:07:05 2024 +0200"
      },
      "committer": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Thu Apr 11 15:10:37 2024 +0000"
      },
      "message": "m/n/core/consensus: remove unused variable\n\nChange-Id: I84e034adcd9ec956b91bba16e40d06a3ae40a846\nReviewed-on: https://review.monogon.dev/c/monogon/+/2951\nVouch-Run-CI: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "0af4dab5326f7aa7cef1b8cc36e7324d784fc237",
      "tree": "49c976c5c6a9206b9806d5d0c8aa223d86ee1477",
      "parents": [
        "0ea961c0d2ba446b99852a8f32719c0dfab23b2e"
      ],
      "author": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Thu Apr 11 15:04:12 2024 +0200"
      },
      "committer": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Thu Apr 11 14:55:24 2024 +0000"
      },
      "message": "treewide: increase test timeouts\n\nThese tests often time out in CI.\n\nChange-Id: Ifd8e6be958923bdbb90faf1aa3627ee77a33267d\nReviewed-on: https://review.monogon.dev/c/monogon/+/2967\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nVouch-Run-CI: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "0ea961c0d2ba446b99852a8f32719c0dfab23b2e",
      "tree": "fe95facb465d0cac76c4d99db8b31bdc0eef88e4",
      "parents": [
        "107eb062d8ebbc9a659c67e8fdfe762d1a968edb"
      ],
      "author": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Thu Apr 11 13:41:40 2024 +0200"
      },
      "committer": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Thu Apr 11 14:53:19 2024 +0000"
      },
      "message": "m/p/blockdev: fix discard\n\nFix various problems with discard. Because discard errors are ignored in \nosimage, these problems were not noticed.\n\nDiscard takes byte offsets, not block offsets, and multiple places were \nmissing the multiplication with BlockSize.\n\nThe BLKDISCARD and BLKZEROOUT ioctls take start and length, not start \nand end.\n\nunix.Fallocate already converts errno 0 to nil.\n\nI manually tested that discard now works correctly in the installer.\n\nChange-Id: I52d9e30a087bb6a792396baaefb2d7d09c43abfe\nReviewed-on: https://review.monogon.dev/c/monogon/+/2953\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nVouch-Run-CI: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "107eb062d8ebbc9a659c67e8fdfe762d1a968edb",
      "tree": "5cba0b187b1877964f239d0adffa25326bb21065",
      "parents": [
        "a8cfb564d677c789ab1f4feebff436cd423b6d25"
      ],
      "author": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Wed Apr 10 13:50:04 2024 +0200"
      },
      "committer": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Thu Apr 11 14:51:37 2024 +0000"
      },
      "message": "m/n/c/curator: use full election prefix\n\nNewElection appends \"/\" to the prefix. If we manually get the leader, we \nshould also append \"/\". Otherwise, we could get the wrong result if a \nnew key which starts with \"/leader\" is added.\n\nChange-Id: I4bcafa945b14d610a6a1f4903452081c3e802e73\nReviewed-on: https://review.monogon.dev/c/monogon/+/2950\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nVouch-Run-CI: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "a8cfb564d677c789ab1f4feebff436cd423b6d25",
      "tree": "9101f7c1b0f8052b1ae75582aea9f52047797cd0",
      "parents": [
        "b976967d7baff84ab625fb774b4c016ad5fe4caa"
      ],
      "author": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Mon Apr 08 14:54:15 2024 +0200"
      },
      "committer": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Thu Apr 11 13:32:06 2024 +0000"
      },
      "message": "m/pkg/supervisor: propagate panic in TestHarness\n\nBefore this change, the following test passes, which is not what you \nwould expect:\n\nfunc TestHarnessPanic(t *testing.T) {\n\tTestHarness(t, func(ctx context.Context) error {\n\t\tpanic(\"PANIC!\")\n\t})\n}\n\nChange-Id: I3356241c022a75a552f8338e532196fb9100a307\nReviewed-on: https://review.monogon.dev/c/monogon/+/2920\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nVouch-Run-CI: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "b976967d7baff84ab625fb774b4c016ad5fe4caa",
      "tree": "acee85bffdd1352e1e0eda0a25768882c731211c",
      "parents": [
        "d6d809a51db99b7cabb8e6dba098fae6f79d63ca"
      ],
      "author": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Tue Apr 09 15:31:40 2024 +0200"
      },
      "committer": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Thu Apr 11 13:22:17 2024 +0000"
      },
      "message": "m/n/c/consensus: fix handling of status request error\n\nIf we don\u0027t return here, the next line will panic because status is nil.\n\nThis bug was found after enabling WithPropagatePanic in the supervisor \nTestHarness.\n\nChange-Id: Ifb6338ebf817fc36f242a231d11af45c39c6c47f\nReviewed-on: https://review.monogon.dev/c/monogon/+/2948\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nVouch-Run-CI: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "d6d809a51db99b7cabb8e6dba098fae6f79d63ca",
      "tree": "877651eba56931d580e0829c207d75be460daed5",
      "parents": [
        "2c38850bc6136be5dc16dc3f41812b8fe4672083"
      ],
      "author": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Wed Apr 10 13:14:45 2024 +0200"
      },
      "committer": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Thu Apr 11 13:21:40 2024 +0000"
      },
      "message": "m/pkg/socksproxy: fix parsing of IPv6 addresses\n\nATYP\u003d4 means that the address is an IPv6 address, of length 16 bytes.\n\nChange-Id: Idc9701874a5b6a111cf15dbf55f82e1b8a2b68bc\nReviewed-on: https://review.monogon.dev/c/monogon/+/2949\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nVouch-Run-CI: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "2c38850bc6136be5dc16dc3f41812b8fe4672083",
      "tree": "37af76b5420b8f1ca470d0084bcc632778f6e3b5",
      "parents": [
        "a6fe4ef0b60de6749cc41fe177af381f060d4b9b"
      ],
      "author": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Wed Apr 10 14:48:39 2024 +0200"
      },
      "committer": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Thu Apr 11 07:41:43 2024 +0000"
      },
      "message": "m/p/scsi: add missing length check\n\nThe same check is already present in ReadDefectDataPhysical below.\n\nChange-Id: If03c2f725c9d6f8fa665192c8cc8662b2e629253\nReviewed-on: https://review.monogon.dev/c/monogon/+/2952\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nVouch-Run-CI: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "a6fe4ef0b60de6749cc41fe177af381f060d4b9b",
      "tree": "625f6d80484e5a692fcf6e16560fd038ba501afb",
      "parents": [
        "5438968d639bb49b0661a90aa3f114c97b6378da"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Apr 03 04:06:57 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Apr 10 14:37:04 2024 +0000"
      },
      "message": "metropolis/node: add metrics ports to reserverd ports list\n\nI forgot to add these when implementing their functionality, woops.\n\nChange-Id: I316f0c44577f22ea7f911424f0b8437466a99170\nReviewed-on: https://review.monogon.dev/c/monogon/+/2913\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "5438968d639bb49b0661a90aa3f114c97b6378da",
      "tree": "cb7689a47f58fc10b31802ac7870e6b1e6ce9b48",
      "parents": [
        "48a7debc1a9b3ef44d37e07169d5fe824f6bd1f7"
      ],
      "author": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Tue Apr 09 13:47:39 2024 +0200"
      },
      "committer": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Tue Apr 09 12:51:40 2024 +0000"
      },
      "message": "m/n/c/curator: handle election observation failure\n\nFailure of the observation is signalled by closing the channel. Before \nthis fix, this caused a panic at the o.Kvs[0] indexing operation.\n\nThis bug was found after enabling WithPropagatePanic in the supervisor \nTestHarness.\n\nChange-Id: I94487720a106d752612153d23c83b4d9bff598f4\nReviewed-on: https://review.monogon.dev/c/monogon/+/2945\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nVouch-Run-CI: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "ae07661469b5685d295658fa291fb48053d05549",
      "tree": "fdddf0163dbf529776a9ab4aaf32885cd1fd3f8a",
      "parents": [
        "9ded9940bbdecf0453132077db997878db1e8f76"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Apr 08 21:31:29 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Apr 09 12:17:06 2024 +0000"
      },
      "message": "metropolis/pkg/supervisor: define WithPropagatePanic as func not var\n\nThis is just to keep the code style in line, no real behaviour change.\n\nChange-Id: Ica5aa2119e248681d2fff951820e9bc77c77a23d\nReviewed-on: https://review.monogon.dev/c/monogon/+/2928\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "9ded9940bbdecf0453132077db997878db1e8f76",
      "tree": "26887ae0a8b3dbf4d42381c07a6565254f74e269",
      "parents": [
        "fb94c758e8c2a878905aeb1e7a3d46820c21b7a2"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Apr 08 21:30:17 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Apr 09 12:17:06 2024 +0000"
      },
      "message": "metropolis/cli/metroctl: don\u0027t try to use the bundle as installer\n\nThis slipped in when I refactored the install command, woops.\n\nChange-Id: I5c6178f9dcf4840b0d7efe9b6e62e35df242f7ae\nReviewed-on: https://review.monogon.dev/c/monogon/+/2927\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "fb94c758e8c2a878905aeb1e7a3d46820c21b7a2",
      "tree": "ab2a286e1e97f43311fe6b62668a33bc75f787a4",
      "parents": [
        "6bcd296878c0b6d57b712b29ae87d7150eb15448"
      ],
      "author": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Tue Apr 09 11:51:13 2024 +0200"
      },
      "committer": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Tue Apr 09 11:59:06 2024 +0000"
      },
      "message": "m/pkg/jsonpatch: remove duplicate file ending\n\nThe duplicate .go ending appears to be unintentional.\n\nChange-Id: I25d0800e29212da27186ea8636f6eddb113b5814\nReviewed-on: https://review.monogon.dev/c/monogon/+/2936\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nVouch-Run-CI: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "6bcd296878c0b6d57b712b29ae87d7150eb15448",
      "tree": "e198000d4cf4b4779d3c0e7daa3bd86d57b047b5",
      "parents": [
        "20b9812e5138784e4e451911f85136e790a759fd"
      ],
      "author": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Tue Apr 09 11:05:40 2024 +0200"
      },
      "committer": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Tue Apr 09 10:18:20 2024 +0000"
      },
      "message": "metropolis/proto/private: removed unused Node message\n\nThis has been replaced by the Node message in \n//metropolis/node/core/curator/proto/private/storage.proto and is not \nused anymore.\n\nChange-Id: I7cdaa5f4104b0fba885d5806b2bb14f4e93c2489\nReviewed-on: https://review.monogon.dev/c/monogon/+/2935\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nVouch-Run-CI: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "20b9812e5138784e4e451911f85136e790a759fd",
      "tree": "d66d8ad643cc9c5f9ea77520856aa092fcab75f2",
      "parents": [
        "db3866a782c443baf4eac4e1cf2b7d03b1bf6c5e"
      ],
      "author": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Tue Apr 09 10:44:49 2024 +0200"
      },
      "committer": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Tue Apr 09 10:17:51 2024 +0000"
      },
      "message": "m/n/k/clusternet: delete unused file\n\nThe mentioned pull request was merged, this file is no longer used.\n\nChange-Id: Ibc573e054e53e6ef23684707ec4178afdc301878\nReviewed-on: https://review.monogon.dev/c/monogon/+/2934\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nVouch-Run-CI: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "52c640737d32c709e8219c2607918ca7e780b485",
      "tree": "d2999e7b152b9365cf750527375a9ca87cd3294c",
      "parents": [
        "4912c5a6ba94166c49ed2bf2cbb1a7289e48bb30"
      ],
      "author": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Mon Apr 08 18:22:25 2024 +0200"
      },
      "committer": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Mon Apr 08 16:42:17 2024 +0000"
      },
      "message": "m/n/c/network: fix handling of nameserver parse failure\n\nIf parsing failed, don\u0027t append the IP to the list.\n\nChange-Id: Ie2fa2812790a919697458ec178b475a420417f6f\nReviewed-on: https://review.monogon.dev/c/monogon/+/2924\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\nVouch-Run-CI: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "4912c5a6ba94166c49ed2bf2cbb1a7289e48bb30",
      "tree": "bc4ff093435dc5931c23ee6433c780f91fed4b08",
      "parents": [
        "3bdb5fcf023968526dfe7fadb89b0911bc6d7074"
      ],
      "author": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Mon Apr 08 18:01:09 2024 +0200"
      },
      "committer": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Mon Apr 08 16:41:58 2024 +0000"
      },
      "message": "m/n/b/fwprune: fix link regexp\n\nThere was an extra + inside the character group, which appears to be \nunintended.\n\nThere are currently no firmware files with a + in the filename, so there \nshould be no change in behavior.\n\nChange-Id: I9c224f016f4769b3da28211f6bca3e34c610641d\nReviewed-on: https://review.monogon.dev/c/monogon/+/2923\nVouch-Run-CI: Lorenz Brun \u003clorenz@monogon.tech\u003e\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "3bdb5fcf023968526dfe7fadb89b0911bc6d7074",
      "tree": "37a8c1abdee1cf54b25ca0adf868ed879e4db7b3",
      "parents": [
        "22a71c147af31d02a0db298e2ca8356078471b93"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Mar 14 18:47:35 2024 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Apr 03 15:49:26 2024 +0000"
      },
      "message": "metropolis/core/metrics: expose containerd metrics endpoint\n\nThis adds containerd as another metrics endpoint. It is only available\non nodes with the KubernetesWorker role.\n\nChange-Id: I5f6269165a81d9a4c4cff48d3ed6b6a55d7f4f46\nReviewed-on: https://review.monogon.dev/c/monogon/+/2861\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "22a71c147af31d02a0db298e2ca8356078471b93",
      "tree": "7f532c633bb06664a105a28e5aa770e00724d977",
      "parents": [
        "ec2906a6874e223813593128b6e72594a1ecfb0f"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Apr 03 04:06:08 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Apr 03 14:55:50 2024 +0000"
      },
      "message": "metropolis/node/kubernetes/metricsproxy: clarify error message\n\nIf the metricsproxy fails to reach its target, we should not return the\nsame error message as the metrics service as that would be confusing.\n\nChange-Id: Ia158686d5a7db3e8e62e149a1c7dc8773702a233\nReviewed-on: https://review.monogon.dev/c/monogon/+/2912\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "ec2906a6874e223813593128b6e72594a1ecfb0f",
      "tree": "41dbab79fd40e9e84c4a2398cb6d3d2fd51298fe",
      "parents": [
        "000450835393a02845d425695947ecb3576e9b82"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Mar 27 01:36:43 2024 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Apr 03 14:55:50 2024 +0000"
      },
      "message": "treewide: rename node.NodeManagement to node.NodeManagementPort\n\nThis is the only constant not having Port in its name which breaks the\nnaming scheme. Lets clean this up by adding it.\n\nChange-Id: Ic34c81c6d80c69e20516f4fca3c26560bbcf3ac6\nReviewed-on: https://review.monogon.dev/c/monogon/+/2911\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "8d377ce3026e1f1477d7f42edbb48fb4a4880d66",
      "tree": "55a394724b4cd6bdcc6b8d773ca1eb8123672f28",
      "parents": [
        "d8e5e27b9bb7b99239ac2d618809a9f6b8aade7f"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Mar 28 14:20:03 2024 +0100"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Fri Mar 29 12:44:19 2024 +0000"
      },
      "message": "m/pkg/event: fix potential stuckness in Pipe\n\nIf we want to restart a Pipe runnable, we cancel its\u0027 context. However,\nif the pipe function is currently stuck sending to a channel (perhaps\nbecause a sister runnable also got canceled and isn\u0027t reading from it),\nwe will never exit.\n\nTo fix this, ensure that we don\u0027t block on this send.\n\nChange-Id: Ic525ebec83748f6a6c4b4fb731617ccb7f95f807\nReviewed-on: https://review.monogon.dev/c/monogon/+/2901\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "7f72748c67df593b110176422d27be878a7a37f4",
      "tree": "75a621c3ae4ec5daf0d90dffcf298583ef3240c9",
      "parents": [
        "23e5230930b482807be2f7fd29c6f14badf3ad0f"
      ],
      "author": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Mon Mar 25 13:03:51 2024 +0100"
      },
      "committer": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Mon Mar 25 19:41:38 2024 +0000"
      },
      "message": "m/n/k/reconciler: refactor resource interface\n\nReplace interface{} with meta.Object, an interface which provides \naccessors for and is implemented by meta.ObjectMeta. List now returns \nthe objects themselves instead of their names. This makes the reconciler \nslightly less generic, as it now only supports kubernetes objects.\n\nThis is a refactoring in preparation for implementing updates in the \nreconciler. There should be no change in behavior.\n\nChange-Id: I97a4b1c0166a1e6fd0f247ee04e7c44cff570fd7\nReviewed-on: https://review.monogon.dev/c/monogon/+/2891\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\nVouch-Run-CI: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "23e5230930b482807be2f7fd29c6f14badf3ad0f",
      "tree": "ccb6d1d153b513a3c0cda87c1c0d1db53c7ee7ca",
      "parents": [
        "76cae0b170143f021fe1e186f7eebb2ece6974c1"
      ],
      "author": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Thu Mar 21 16:50:15 2024 +0100"
      },
      "committer": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Mon Mar 25 12:21:53 2024 +0000"
      },
      "message": "m/pkg/supervisor: close connections when grpc server exits\n\nWhen the Listener is closed, Serve will return with an error, but \nalready established connections will continue to serve requests. Stop or \nGracefulStop must be called to close these connections.\n\nThis bug often caused the metropolis e2e test to fail on my machine with \nthe same symptoms as in #276: Node commit always failed with \"lost \nleadership\". This happened because the nodes were sending requests on a \nconnection that was established before the leader was re-elected and the \ngrpc listener restarted, and still had the old leadership info.\n\nChange-Id: I797ffa4a40914e5d45e7e4cd15fbb7655e930fa3\nReviewed-on: https://review.monogon.dev/c/monogon/+/2885\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\nVouch-Run-CI: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "76cae0b170143f021fe1e186f7eebb2ece6974c1",
      "tree": "1ea3839fc6044cca968c55590708d910517f40d6",
      "parents": [
        "07fab03dcabf769cbf0d3747b295c1328bea329c"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Mar 19 13:13:38 2024 +0100"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Mar 21 12:35:30 2024 +0000"
      },
      "message": "m/n/core/network/hostsfile: fix stale curator entries\n\nThis prevents the cluster from getting in a state where nodes are not\naware of new control plane nodes on restart (because the only thing that\nchanged about them is their role, not their IP address).\n\nThis fixes the deduplication to also take into consideration role\nchanges.\n\nChange-Id: I184916427650fdbf68fb0fdf5ced365b94af190e\nReviewed-on: https://review.monogon.dev/c/monogon/+/2880\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "07fab03dcabf769cbf0d3747b295c1328bea329c",
      "tree": "d1c08cc031487d802f8c6e07ccff9343ec92ff06",
      "parents": [
        "b63ed8a6d7eaaf0fa58b127d90001dc805d72c45"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Mar 05 14:27:13 2024 +0000"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Mar 21 11:03:54 2024 +0000"
      },
      "message": "m/n/core/hostsfile: narrow down network service type to just network status\n\nThis will allow testing the hostsfile service more easily in the future.\n\nChange-Id: Ic61337bac77f643543e1a83837b009f9ea73439f\nReviewed-on: https://review.monogon.dev/c/monogon/+/2877\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "b63ed8a6d7eaaf0fa58b127d90001dc805d72c45",
      "tree": "4c1cec25146e8936f7d3f9a09c1e031453e1c5d4",
      "parents": [
        "1ac503c7ddd16c796fb163bcbace7a1db24d5201"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Mar 05 14:24:38 2024 +0000"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Mar 21 11:03:54 2024 +0000"
      },
      "message": "m/n/core/network: drop Watch/Value methods, expose Status\n\nThe Watch/Value methods were a leftover from before we had a unified\nevent value API.\n\nChange-Id: Id61732e0570e5fe3d9420857728b1f8a9769e697\nReviewed-on: https://review.monogon.dev/c/monogon/+/2876\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "276a746de8b2b551f7088e88c93da0e0b15c99d6",
      "tree": "de82f9b1f243151c7a7d8d52bb8136a1d07c4f3f",
      "parents": [
        "87d9c59a3b3dbbd4264f9c8b224e58fc5ff18815"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Jul 12 21:28:54 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Mar 21 10:09:21 2024 +0000"
      },
      "message": "m/test/e2e: test NodePort\n\nThis was originally written as a test for validating fixes for\nthe issue that NodePort was not working if any non-local pods were in\nthe NodePort service, even for externalTrafficPolicy: cluster services.\nAs it turns out CL:2795 fixed this, the changes in previous versions of\nthis CL broke it again. So now it just consists of the test itself,\nwhich passes.\n\nChange-Id: If4cf4ffc46a5456b4defa330776e043593e61b29\nReviewed-on: https://review.monogon.dev/c/monogon/+/1924\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "87d9c59a3b3dbbd4264f9c8b224e58fc5ff18815",
      "tree": "d927065d7f56bc46207a9df2c60c9c580757e5dd",
      "parents": [
        "5d5d733b9fb3d9892b37840124d959fae07c98b9"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Mar 20 12:35:11 2024 +0100"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Mar 20 12:11:01 2024 +0000"
      },
      "message": "m/test/launch/cluster: fix duplicate NodeIDs entries\n\nThis code loop looks for any NEW nodes and inserts them into\ncluster.{Nodes,NodeIDs}. The first structure is a lookup from NodeID to\nnode information, the latter is a list of NodeIDs used to look up\nnumeric node IDs (in order of startup/detection) to NodeIDs.\n\nThe loop in the code runs multiple times to catch any NEW nodes might\ntake a while to appear, and exits once the expected number of nodes have\nbeen detected.\n\nThe bug caused the code to repeatedly insert into Nodes[NodeID] (which\nis fine, but wasteful) and into NodeIDs. The latter resulted in a\nNodeIDs that contained duplicate entries.\n\nTo make sure we only handle each NEW node once, we skip nodes that have\nalready been seen.\n\nThis bug caused us to sometimes act on wrong nodes in E2E tests (any\ntime tests were looking up node number -\u003e node ID -\u003e Node via .NodeIDs\nand .Nodes, they had a chance of picking the wrong node ID / node for a\ngiven node number).\n\nChange-Id: Ie459c8277c0d03902ce23f3b20b0c4e367cc015b\nReviewed-on: https://review.monogon.dev/c/monogon/+/2881\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "5d5d733b9fb3d9892b37840124d959fae07c98b9",
      "tree": "5afdd8bde96b5712274e3fdc13706874f0ba7823",
      "parents": [
        "36bde9cd3407402ef6e0b4d10b038a4020bdf295"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Mar 19 13:13:02 2024 +0100"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Mar 19 16:46:01 2024 +0000"
      },
      "message": "m/n/core/curator: expose consensus service status\n\nThis replaces https://review.monogon.dev/2071 .\n\nConsensus service status will be used in e2e tests to more accurately\ndetermine the health of a cluster.\n\nChange-Id: Ia304d2a679f5ffdccd5737d5770d40a4a08f7f4a\nReviewed-on: https://review.monogon.dev/c/monogon/+/2879\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "36bde9cd3407402ef6e0b4d10b038a4020bdf295",
      "tree": "df868c44f56171a2dfef74f844848a218820846d",
      "parents": [
        "87bbf7e4b41500316e93f98bee0564eb2cfb0366"
      ],
      "author": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Tue Mar 19 15:05:33 2024 +0100"
      },
      "committer": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Tue Mar 19 15:25:01 2024 +0000"
      },
      "message": "m/pkg/event/memory: simplify and fix implementation\n\nThe old implementation is very complicated and has multiple concurrency \nbugs. One of these bugs is already described in a block comment. Another \nbug is that if a watcher is closed while being updated, `update` will \ntry to send on the closed channel `deadletterSubmitC`, which panics.\n\nThis changes it to a much simpler implementation.\n\nIt could be further simplified it by dropping the Sync flag entirely, \nwhich is currently unused. Or we could use the buffered channel also for \nSync values, and just skip dropping previous values. This still ensures \nthat all values are delivered, but changes the semantics slightly: Set \nwould no longer block until Get is called, if there is space in the \nchannel buffer.\n\nAdditionally, there is no longer a memory leak when a watcher is \nrepeatedly closed and readded, but Set never called. I added a test for \nthis.\n\nFixes #127\n\nChange-Id: I2775a36cf2d097c5961a09a387428774a068e1f5\nReviewed-on: https://review.monogon.dev/c/monogon/+/2875\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nVouch-Run-CI: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "87bbf7e4b41500316e93f98bee0564eb2cfb0366",
      "tree": "c0b34141f5ee75e73a6e490e40540928594453f6",
      "parents": [
        "d6a88022d0c8ffdd2b938f161b8825148762b099"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Mar 18 18:22:25 2024 +0100"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Mar 19 12:51:28 2024 +0000"
      },
      "message": "m/test/l/cluster: use sparse-aware copy for images\n\nThis speeds up the image copy significantly as the file is less than 10%\nallocated. Especially for many concurrent runs this greatly reduces disk\nbottlenecking.\n\nThis has been tested by comparing the SHA256 hash of both the original\nand the copied image, which is still the same.\n\nChange-Id: I65f62537f048bc180cd732c53a03f980e016b723\nReviewed-on: https://review.monogon.dev/c/monogon/+/2874\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "d6a88022d0c8ffdd2b938f161b8825148762b099",
      "tree": "a5a0e0c0b1e6970c1aef8a38e2b45978c00b8592",
      "parents": [
        "42ef7c742ab128b25478833a52af25ba0be5bf15"
      ],
      "author": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Mon Mar 18 17:03:37 2024 +0100"
      },
      "committer": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Mon Mar 18 17:24:36 2024 +0000"
      },
      "message": "m/node: fix appending to read-only slices\n\n`append` modifies its first argument if there is sufficient capacity \ninstead of allocating a new slice. If the slice to be appended to is \nsupposed to be read-only, this can lead to unexpected aliasing.\n\nAn example of what can go wrong, here with the consensus client:\n\n    l :\u003d NewLocal(nil)\n    sub1, _ :\u003d l.Sub(\"I\")\n    sub2, _ :\u003d sub1.Sub(\"am\")\n    sub3, _ :\u003d sub2.Sub(\"a\")\n    dog, _ :\u003d sub3.Sub(\"dog\")\n    _, _ \u003d sub3.Sub(\"cat\")\n    fmt.Print(dog.(*local).path)\n\nResult before this change: \"I am a cat\"\nResult after this change: \"I am a dog\"\n\nAfter creating a subnamespace of length 3, the capacity of the `path` is \n4, so any subnamespace will share the same slice. The fix is to always \nensure a new slice is allocated.\n\nImpact\n------\n\nFor the consensus client, Sub is currently never called multiple times \non the same namespace, so there is no impact there. In case of the dhcp \nclient and rpc resolver, the slices that are appended to are slice \nliterals in all cases, which don\u0027t have extra capacity.\n\nBut for the curator `etcdPrefix`, `p.parts` has capacity 1 larger than \nthe length, due to the slicing in `newEtcdPrefix`. That means that \nconcurrent calls to `Key` can overwrite each other\u0027s `path`. It looks \nlike `Key` can in fact be called concurrently, which means there is \npotential for data corruption to occur before this change.\n\nChange-Id: I28e7dc797365c2beea97023ed31a20eea599e678\nReviewed-on: https://review.monogon.dev/c/monogon/+/2873\nVouch-Run-CI: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "42ef7c742ab128b25478833a52af25ba0be5bf15",
      "tree": "4e1e541f78eff49a21187b483ff0b9b4e1abee5e",
      "parents": [
        "011dce6623dffbaf5adcd3d3a353521649b0b997"
      ],
      "author": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Mon Mar 18 15:09:51 2024 +0100"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Mar 18 14:37:41 2024 +0000"
      },
      "message": "m/installer: fix minimum disk calculation for A/B partitions\n\nSince the introduction of A/B updates two system partitions are created. \nReflect that in the minimum root disk size calculation.\n\nChange-Id: I3ad875bbae07e539b68f7a32409e5fdd4105a998\nReviewed-on: https://review.monogon.dev/c/monogon/+/2868\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nVouch-Run-CI: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    },
    {
      "commit": "011dce6623dffbaf5adcd3d3a353521649b0b997",
      "tree": "8e661bd0988c6a5d808cd213c1f7a8eef9ca22b9",
      "parents": [
        "68cf38a2ca4fdc370e78e9b8d23e55c0b9cc9c72"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Sun Mar 03 16:00:52 2024 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Mar 14 12:55:30 2024 +0000"
      },
      "message": "m/n/c/clusternet: add clusternet node ip to lo\n\nWithout this address the kernel will send all traffic through clusternet\nwill with the external IP as source address, which prevents any access\nfrom the k8s api-server to pods. By adding the address to the lo\ninterface, the kernel decides that this is the best match for the\ngeneric clusternet route and uses it as source address.\n\nBefore: 10.192.1.2 dev clusternet src 233.252.0.1\nAfter: 10.192.1.2 dev clusternet src 10.192.0.1\n\nChange-Id: I1a78de9d4cc043f93398fe5b6cb10dd202bf75fe\nReviewed-on: https://review.monogon.dev/c/monogon/+/2795\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "68cf38a2ca4fdc370e78e9b8d23e55c0b9cc9c72",
      "tree": "c0aa9300bdb617fb577e3a0a6b2e802c0ddad15d",
      "parents": [
        "240faa45248cb64227fa74ae57822af0340b884f"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Mar 07 15:52:28 2024 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Mar 11 16:34:34 2024 +0000"
      },
      "message": "m/t/l/cluster: fix wrong metroctl path in launch-cluster wrapper\n\nChange-Id: I3dfd740fb45809bc81555d87083a0476600f60e1\nReviewed-on: https://review.monogon.dev/c/monogon/+/2836\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "240faa45248cb64227fa74ae57822af0340b884f",
      "tree": "b2a754b4f5a4e0a928fff0fd41f0cdf1a04c8c84",
      "parents": [
        "700f1c97e6e63635b1010f1080340f593411f96c"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Mar 04 20:03:32 2024 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Mar 11 16:34:27 2024 +0000"
      },
      "message": "m/cli/metroctl: fix nil pointer for \"node describe\"\n\nCloses monogon-dev/monogon#293\n\nChange-Id: Ic2397c3a145f39d0d41d1e74a7d18fce98606043\nReviewed-on: https://review.monogon.dev/c/monogon/+/2826\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "7661202fe654da6ea6403bce89157c4d678abf22",
      "tree": "aa48910ef8bcd14a50d69ebb099e913a6965ab4a",
      "parents": [
        "7c8684b9e8aa4b0b16efd5f01a040a504a814ebc"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Mar 05 19:20:36 2024 +0100"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Mar 05 19:00:45 2024 +0000"
      },
      "message": "m/c/metroctl: fix update logic when errors happen\n\nError handling in the node status polling loop did not exit the current\niteration of the loop when an error was encountered due to missing\ncontrol flow statements. This caused the update command to panic when\nthe node state could not be retrieved.\n\nChange-Id: I802d3073ca0ce85248f6692360879b391ac64e7d\nReviewed-on: https://review.monogon.dev/c/monogon/+/2834\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "0a8797d0dc8055b5c2c300570ca9297fee2cf86f",
      "tree": "d47e4d7e924e76250fa90f9e91b17b8bcc6981a2",
      "parents": [
        "5f5f3300dec2d65eb0321a19f789cfdd65c12c17"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Mar 04 18:58:47 2024 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Mar 05 18:40:23 2024 +0000"
      },
      "message": "m/cli/metroctl: add flag for k8s context name\n\nChange-Id: I57b261e7fdb0ceef63f8ce5f098ecb322ed85874\nReviewed-on: https://review.monogon.dev/c/monogon/+/2825\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "543756fdf954fc09f032bb91a59916a784b21cff",
      "tree": "e326636c7d4a56c501c6bdf799cc96aa10a77338",
      "parents": [
        "6c851e2f8270e2a08077a5d35cc5d7869e2c9188"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Sun Mar 03 15:58:32 2024 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Mar 04 15:14:02 2024 +0000"
      },
      "message": "m/n/c/network: inline error checks\n\nChange-Id: I2ee028761cb407c0231740933f405c6894a72607\nReviewed-on: https://review.monogon.dev/c/monogon/+/2794\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "7006cafc58cbff6765726447d84df1cd1531d346",
      "tree": "63f1d3af24e02e69f1d63fbc38dd2fad0785b292",
      "parents": [
        "79ffbbe040d0db6c4ff6f8cdc84fe13d537e2bfe"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Feb 27 16:49:39 2024 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Feb 27 16:30:34 2024 +0000"
      },
      "message": "m/c/metroctl: split cmd_install for future changes\n\nChange-Id: I99119cc8f5e3728cf832427d1cad79f69fbd48bc\nReviewed-on: https://review.monogon.dev/c/monogon/+/2793\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "1dd0c6591533bf63389e81a2104bca3c8326e871",
      "tree": "e33a710087b67dfe7f34e8434cff8885dc38420c",
      "parents": [
        "456961d6589c1afec75954ca94ed631e1f380566"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Feb 20 18:45:06 2024 +0100"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Feb 20 18:12:12 2024 +0000"
      },
      "message": "m/n/kubernetes: improve CSI registration reliability\n\nKubelet\u0027s plugin registration mechanism is quite awful, it\nrelies on being notified by inotify that a new registration socket has\nbeen placed into a specific path, which it then interrogates and\nreports back if the registration succeeded.\n\nThat registration sometimes involves network operations which are prone\nto failure. It reports that failure back to the registration server\nasynchronously but does not attempt to retry the process.\n\nTo actually get Kubelet to retry, one needs to remove and recreate the\nregistration socket.\n\nThis change implements such a mechanism, recreating the socket and\nregistration server on every reported registration failure.\n\nSupervisor backoff is used to prevent busy-looping on non-transient\nerrors.\n\nChange-Id: I79eaf0efdf55ccdede15d8cee42cda7c276e4b50\nReviewed-on: https://review.monogon.dev/c/monogon/+/2785\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "456961d6589c1afec75954ca94ed631e1f380566",
      "tree": "ac99bfa39deefe0f4aca7478077a66ef8b7c9d74",
      "parents": [
        "1e90c6d29a4af63fa01b472b7a49bdba256797b2"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Feb 20 13:18:26 2024 +0100"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Feb 20 18:12:12 2024 +0000"
      },
      "message": "m/n/k/reconciler: set fsGroupPolicy for CSI driver\n\nThis fixes an issue where kubelet did not apply fsGroupChangePolicy due\nto questionable capability detection code with the default\nfsGroupPolicy. Setting this to the File policy asserts that this driver\nalways supports ownership changes and thus bypasses that Kubernetes\ncapability detection code.\n\nChange-Id: I4799a01561af4f3d9c0de7a6040fd5f9db784d3e\nReviewed-on: https://review.monogon.dev/c/monogon/+/2784\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "1e90c6d29a4af63fa01b472b7a49bdba256797b2",
      "tree": "dd4e37ad5679bc397c63041490032ab7eb88f6ec",
      "parents": [
        "c4dd0032736567ca7873a11588f3a64d1dddea88"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Feb 19 22:21:01 2024 +0100"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Feb 19 21:40:47 2024 +0000"
      },
      "message": "m/n/c/mgmt: disable interfaces before kexec\n\nThis is done to prevent network interface DMA transactions from\ninterfering with an in-progress kexec. [1]\n\n[1] https://lists.infradead.org/pipermail/kexec/2011-January/004795.html\n\nChange-Id: I12ab22c095fcff56873d980d524c461b1b2d57ee\nReviewed-on: https://review.monogon.dev/c/monogon/+/2783\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "968d72095a54aabed1a59cccf3591c4f32a7b70a",
      "tree": "815d7df587bd967164a572d2aef21a769aa2474e",
      "parents": [
        "6a328e61aece941c0b91a97c8303c235ce80f596"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Feb 07 16:33:38 2024 +0100"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Feb 19 10:08:55 2024 +0000"
      },
      "message": "root: move Metropolis README contents to metropolis/README.md, document launch-cluster\n\nChange-Id: I3555ce1d31e83e27239bcd8dde20bdc69deac35c\nReviewed-on: https://review.monogon.dev/c/monogon/+/2765\nTested-by: Jenkins CI\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    },
    {
      "commit": "6a328e61aece941c0b91a97c8303c235ce80f596",
      "tree": "2a4fe2f61f6fa669de2b1df016e8c6df05a70c13",
      "parents": [
        "9ce4071f43ce45198b702176a84342e9a8fc6e90"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Feb 12 17:37:50 2024 +0100"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Feb 19 10:08:55 2024 +0000"
      },
      "message": "root: move metropolis-specific tools to metropolis/, rename launch-multi2 to launch-cluster\n\nSince we now have more than one top-level project it makes sense to not\nhave metropolis aliases in the root.\n\nWe also drive-by rename launch-multi2 to launch-cluster and bump it up\nto three nodes.\n\nChange-Id: Ic99065465006e0dace05bcc1f2a702d430014b84\nReviewed-on: https://review.monogon.dev/c/monogon/+/2764\nTested-by: Jenkins CI\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    },
    {
      "commit": "9ce4071f43ce45198b702176a84342e9a8fc6e90",
      "tree": "49eb5319403c5b381b1c7d31cd5ba57619eafd32",
      "parents": [
        "c51d47d2b9990eb2196f5790f85895987f67daf4"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Feb 13 21:54:46 2024 +0100"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Feb 14 15:07:52 2024 +0000"
      },
      "message": "mc/c/metroctl: implement simple update sequencing\n\nAdds support for the max-unavailable flag, specifying the number of\nnodes which can be concurrently in the update process.\n\nTo implement this, we now wait for the node to report as healthy again\nbefore considering the update complete.\n\nThis allows simple gradual cluster updates.\n\nChange-Id: If6aa44d1b8f12aadd77e35f16513a4af521fa356\nReviewed-on: https://review.monogon.dev/c/monogon/+/2770\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "c51d47d2b9990eb2196f5790f85895987f67daf4",
      "tree": "d9264dfb89d98f993d7c243484b3f36039c15e35",
      "parents": [
        "9c4bece001c15d6ae4793016b2e3854627b2164c"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Feb 13 18:40:26 2024 +0100"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Feb 14 11:44:08 2024 +0000"
      },
      "message": "metroctl: use persisted CA certificate for node connections\n\nAfter the TOFU change (review/2744 and friends), we can now use the\npersisted CA certificate (or a CA certificate from TOFU) when connecting\nto node services.\n\nChange-Id: I103b558f4f7a3087f1f27fdc4ee7f7e2ec03a981\nReviewed-on: https://review.monogon.dev/c/monogon/+/2769\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "9c4bece001c15d6ae4793016b2e3854627b2164c",
      "tree": "3381a01d7f7d3e9fd9f6c6e2e037a3a76e5ce8ce",
      "parents": [
        "93020d77a383e68fd4b1adfafaf136c405648172"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Feb 13 18:32:44 2024 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Feb 13 19:53:58 2024 +0000"
      },
      "message": "m/n/k/containerd: clarify preseed log message\n\nChanging this log message makes it easier to understand what happens.\n\nBefore:\n```\nSuccessfully imported preseeded bundle\nk8s.io/docker.io/bazel/metropolis/test/e2e/preseedtest:preseedtest_image\ninto containerd\n```\n\nAfter:\n```\nSuccessfully imported preseeded bundle\n\"docker.io/bazel/metropolis/test/e2e/preseedtest:preseedtest_image\" into\ncontainerd namespace k8s.io\n```\n\nCloses monogon-dev/monogon#287\n\nChange-Id: I932d36b0cc1926d7248028c8a412f921562a9858\nReviewed-on: https://review.monogon.dev/c/monogon/+/2768\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "93020d77a383e68fd4b1adfafaf136c405648172",
      "tree": "f35720a2f35a6efdb63b8044ece9d71121929bd9",
      "parents": [
        "502f9973502fec41d358e0c3939f61c5cf58e0de"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Feb 13 18:13:07 2024 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Feb 13 19:53:34 2024 +0000"
      },
      "message": "m/n/k/containerd: use preseeded pause container\n\nTo allow no-network tests we need to bundle the pause container.\n\nChange-Id: I1fa6bb70c10a16097d35d919941f501ddc5f784d\nReviewed-on: https://review.monogon.dev/c/monogon/+/2767\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "6cb00ed6d867466d824ee5e3464f707787ed035c",
      "tree": "fd7f6a1340634ed4233f6f9ec1bad479f17b5ec6",
      "parents": [
        "acdfba5e65701520a23e3b3a90c5cb17c0cf3ac2"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Feb 08 17:49:19 2024 +0100"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Feb 12 18:10:28 2024 +0000"
      },
      "message": "m/node: panic on unknown NMIs\n\nConfigure the kernel to panic in case it receives an unknown NMI.\n\nThis can be used to induce a crash in a hanging kernel, allowing\ncrash diagnostics (pstore currently, maybe kdump in the future) to be\nused to diagnose the hang.\n\nThis can have false positives on some badly-configured client systems,\nbut is expected to be fine on servers as other server kernels like\nESXi\u0027s vmkernel behave the same.\n\nChange-Id: Ie41e7b816be8492636b6fa596c1c299c0a7a0fc2\nReviewed-on: https://review.monogon.dev/c/monogon/+/2754\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "d1f82e98ffe72d8378fbff4d127c6863d96b1f72",
      "tree": "5c5e47642c62a059307b7cb72f46edc302b86750",
      "parents": [
        "38b959fcda1df417ad833acc006fb4a039b4f9ce"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Feb 08 19:27:46 2024 +0100"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Feb 12 18:10:28 2024 +0000"
      },
      "message": "m/node: use pstore for panic storage\n\nThe old solution never worked as the ESP was not mounted at that stage.\nIn general storing crash data there is suboptimal as it makes lots of\nassumptions about the system state.\n\nFor kernel crashes we already use pstore and there is an interface for\nstoring userspace messages in pstore as well. Set up the panic handler\nto put its logs in there and extend the pstore cleanup runnable to also\ndump that part of pstore into the logtree after reboot.\n\nIn most cases this also requires a kernel patch as most pstore backends\nto not allow userspace messages, probably to preserve limited space.\nSince we always clean pstore after reboot, this should be fine.\n\nChange-Id: I011109112e7bfd24d1772d5853a1d491c0cfd026\nReviewed-on: https://review.monogon.dev/c/monogon/+/2753\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "223609ced73e359b040cb56a873880e3f9efbd7e",
      "tree": "a87172ffa26304528ef2ec0c52227318b9f67240",
      "parents": [
        "244b567d827331be5bcc147562dd00db1d2b6579"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Fri Jan 12 22:59:20 2024 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Feb 12 14:23:51 2024 +0000"
      },
      "message": "WORKSPACE: update rules_rust and replace cargo-raze with crate_universe\n\ncargo-raze is deprecated, unmaintained and doesn\u0027t build anymore.\ncreate_universe reduces the clutter inside the repo and allows simpler\nsetup of rust requirements.\n\nChange-Id: Iebe88902ae469a28c0378707447f7d97006d0479\nReviewed-on: https://review.monogon.dev/c/monogon/+/2749\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "244b567d827331be5bcc147562dd00db1d2b6579",
      "tree": "8a0222cdfbe1fd2e10bc682ec1871ba263bbfae7",
      "parents": [
        "b40b918b88971002fd82f4e172ee347b435e41f5"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Feb 06 10:18:56 2024 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Feb 12 14:23:45 2024 +0000"
      },
      "message": "treewide: remove direct access to external/\n\nThis prepares the repositoriy to be compatible with the flag\n--nolegacy_external_runfiles. This reduces runfiles \u0026 sandbox creation\n times.\n\nChange-Id: I06720be4a3c873d68d8278dcb24271ed874f7134\nReviewed-on: https://review.monogon.dev/c/monogon/+/2747\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "b40b918b88971002fd82f4e172ee347b435e41f5",
      "tree": "e225e83ee1cc281b8ba8728efa0a4c1029559faf",
      "parents": [
        "2a1d1b2e90a44e140dd95a492de0c857287e071f"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Feb 06 07:08:35 2024 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Feb 12 14:11:09 2024 +0000"
      },
      "message": "treewide: replace deprecated qemu short-form option \u0027readonly\u0027\n\nChange-Id: Id9fb95ab8b975cdbe76fc711ab20c16e3a91592a\nReviewed-on: https://review.monogon.dev/c/monogon/+/2746\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "2a1d1b2e90a44e140dd95a492de0c857287e071f",
      "tree": "392015b9ffa5f6f38da494c0a2fc519f16883113",
      "parents": [
        "5d556cae21803212ac72a3713ed449b412f777af"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Feb 06 07:07:42 2024 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Feb 12 14:11:04 2024 +0000"
      },
      "message": "treewide: replace datafile pkg with rules_go/runfiles pkg\n\nrules_go/runfiles provides the same functionality as our datafile\npackage. This change also contains some specifics for the now active\nbzlmod, which replaces all WORKSPACE related behaviour. As example the\nWORKSPACE name is now always set to _main.\n\n\nChange-Id: I1a69c72b479330a627b402135670f218c297906f\nReviewed-on: https://review.monogon.dev/c/monogon/+/2745\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "568c38c74f95612fc3c236539b037ebe490302ee",
      "tree": "8380bdc8956c3843cce7fae9cf4c700576d22d87",
      "parents": [
        "7eeef0f448a4ec1737e2e63961f24f51eec5deae"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Feb 05 14:40:39 2024 +0100"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Feb 08 11:10:07 2024 +0000"
      },
      "message": "m/c/metroctl: use TOFU CA for Kubernetes with node pinning hack\n\nNow that we have a persisted CA certificate in metroctl, we can use it\nwhen generating a kubeconfig to verify the cluster.\n\nThere\u0027s a catch though: the presented node certificates do not have any\n\u0027global\u0027 name (just per-node names), and we can\u0027t easily tell Kubernetes\nto trust any name from a given CA. Thus, we introduce a hack to pin the\nname of the node we\u0027re connecting to within the generated kubeconfig.\n\nChange-Id: Iea6aa5c0012c793fcb42a94c3c9bf35ea5787ab1\nReviewed-on: https://review.monogon.dev/c/monogon/+/2744\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "7eeef0f448a4ec1737e2e63961f24f51eec5deae",
      "tree": "690afce7d61fed7284991d3622d2b4b7f5948c14",
      "parents": [
        "925ec3de7a8562ef478216c77dff68c8235aeabd"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Feb 05 14:40:15 2024 +0100"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Feb 08 11:10:07 2024 +0000"
      },
      "message": "m/c/metroctl: implement TOFU for CA certificates\n\nThis implements trust-on-first-use (TOFU) for connecting to a Metropolis\ncluster.\n\nIf no locally persisted CA is available, one will be retrieved from the\ncluster. If it is then accepted, it will be persisted for future use.\n\nTo retrieve the Cluster CA certificate we implement a new\nunauthenticated call in the CuratorLocal service. The alternative would\nbe to include the CA certificate in the served TLS chain, but that would\nlikely cause some backwards compatibility problems with existing client\nsoftware.\n\nFull TOFU (with an SSH style prompt) will be performed when the user\nfirst takes ownership of a cluster. Otherwise, user credentials\nincluding a certificate will be present, which allows the process to be\nsimplified by just retrieving a remote CA and checking it against the\nsignature of the credentials.\n\nChange-Id: I20002399935c2f13adc4526f5cceddad84b36a8f\nReviewed-on: https://review.monogon.dev/c/monogon/+/2743\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "925ec3de7a8562ef478216c77dff68c8235aeabd",
      "tree": "da40b46730911a514b5f03e842ab3b3951f8f9cf",
      "parents": [
        "0c2801516b5191472bd4bc1a07ab6f414a805b27"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Feb 05 14:38:20 2024 +0100"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Feb 08 11:10:07 2024 +0000"
      },
      "message": "m/cli/metroctl: clean up RPC API\n\nThis removes a bunch of logic from the metroctl core RPC functions,\nforcing users (currently only other metroctl code) to use grpc.Dial and\nthe metropolis RPC library directly.\n\nWe also make the core functions take ConnectOptions structures where\nappropriate instead of passing around tons of arguments.\n\nChange-Id: I4d7aa232a659097da35027dfb9b87c58cbb4ab84\nReviewed-on: https://review.monogon.dev/c/monogon/+/2742\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "0c2801516b5191472bd4bc1a07ab6f414a805b27",
      "tree": "ddcffa8351f934c0a7066a6341b8bc6888e90ab3",
      "parents": [
        "ad86a55c9c507478e2c4989f50912d7869164066"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Feb 05 14:33:19 2024 +0100"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Feb 08 11:10:07 2024 +0000"
      },
      "message": "m/n/core/rpc: limit API footgun availability\n\nThis unifies the interface of the\nNew{Ephemeral,Authenticated}Credentials calls. They now use the same set\nof CredentialsOpt options which allows both calls to request a\nparticular verification of the remote side of the connection.\nNewEphemeralCredentials also now requires an explicit WantInsecure\noption which surfaces attempts to dial the cluster without CA/node\nverification.\n\nChange-Id: Ibb65cb0952f6ff2092a3f55fe1c5a31bd2b72b36\nReviewed-on: https://review.monogon.dev/c/monogon/+/2741\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "ad86a55c9c507478e2c4989f50912d7869164066",
      "tree": "214d48bcad4ede5909af88ce7deaadedd2d9fbe0",
      "parents": [
        "7dbf18c1932b5c7945a2ba53d7580a6857cda5d3"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Jan 31 17:46:47 2024 +0100"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Feb 08 11:10:07 2024 +0000"
      },
      "message": "m/n/kubernetes: serve authproxy with node certificate\n\nWe are currently serving authproxy with the Kubernetes node certificate,\nwhich is somewhat useless, considering that this certificate isn\u0027t even\nissued by the same CA that the client certificates (which are Metropolis\ncertificates) presented.\n\nThis changes the authproxy to serve with Metropolis node certificates\ninstead.\n\nChange-Id: I03ff19c919c6a9fa72c98997432cc06a59e9958e\nReviewed-on: https://review.monogon.dev/c/monogon/+/2740\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "7dbf18c1932b5c7945a2ba53d7580a6857cda5d3",
      "tree": "18b42442d4585153e7644e1250993122d523c8b2",
      "parents": [
        "d5cace605ffd48f89db25456b260c550621b8b4c"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Oct 31 22:39:42 2023 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Feb 06 21:04:03 2024 +0000"
      },
      "message": "metropolis/cli/metroctl: add `node delete` command\n\nChange-Id: I804829efe3e78a56cd44915c8351272ffa5c670f\nReviewed-on: https://review.monogon.dev/c/monogon/+/2276\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "d5cace605ffd48f89db25456b260c550621b8b4c",
      "tree": "3a020de589b3931d069a29deebddbb47e1f41d7f",
      "parents": [
        "961a7cc7f4794833f821a368b68d12ec70353d6c"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Jan 25 14:01:54 2024 +0100"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Jan 25 17:43:22 2024 +0000"
      },
      "message": "metropolis/node/curator: restart listener on status changes\n\nThis change ensures that a Curator\u0027s gRPC listener restart not only when\nit switches from leader to follower (and vice versa), but also when the\ncurator instance keeps being a leader/follower but the leadership status\nchanges in an important way.\n\nRestarting the listener is important when the Curator is a re-elected\nleader, as otherwise the listener will continue running with the old\nleadership data which includes the old leadership election key/revision,\nsubsequently failing any leadership transactions when serving gRPC\nrequests.\n\nSimilarly, we need to restart the follower listener when the we the\nleader changes to some other node, otherwise we end up serving old\nleadership data in GetCurrentLeader.\n\nAn alternative fix would be to move the leadership status to an Event\nvalue that gets updated and passed through to the listeners. This would\navoid somewhat unnecessary listener restarts on leadership changes, but\nthis will do for now.\n\nThis should fix issue #276 and perhaps some related flakiness. I\u0027ll try\nto write a test for this on top of this CR, but this will require a new\nkind of Curator test which we don\u0027t have yet.\n\nChange-Id: I20ef147adeb0c976b904ef55dbadb9b461111e94\nReviewed-on: https://review.monogon.dev/c/monogon/+/2722\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "961a7cc7f4794833f821a368b68d12ec70353d6c",
      "tree": "628530eb9b533df3e047e0db2af960ccfa84242d",
      "parents": [
        "0974b2275edc21ce3b76606ba7f8eed84e5cc9f0"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Sat Jan 13 21:00:02 2024 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Jan 23 17:10:41 2024 +0000"
      },
      "message": "WORKSPACE: bump bazel to 7.0.0\n\nChange-Id: Ic074b7b83f229e3c7f6ace7fdb46d33e5bd7c37b\nReviewed-on: https://review.monogon.dev/c/monogon/+/2708\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "0974b2275edc21ce3b76606ba7f8eed84e5cc9f0",
      "tree": "b9bd73528dc6823168273fb8eb58d02054e90047",
      "parents": [
        "c834b7dd62f20188f3ffd7cbb092e2536403474b"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Jan 16 14:04:15 2024 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Jan 23 15:52:54 2024 +0000"
      },
      "message": "treewide: replace rules_docker with rules_oci\n\nrules_docker is not maintained anymore and recommends migration to\nrules_oci\n\nChange-Id: I089f3cf44888b3c3c0baa2c84a319b04b1a7dec4\nReviewed-on: https://review.monogon.dev/c/monogon/+/2712\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "30494c151b8dee3e20f681f800376a04e8f3965b",
      "tree": "ea622a06ea15ad4892d51896ef79002639c6cff6",
      "parents": [
        "0ccc85ba1eb4e067dc3eea0dd58b9ab0ebf48d29"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Nov 28 16:27:24 2023 +0100"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Dec 21 14:46:59 2023 +0000"
      },
      "message": "build/status: remove old compatibility fields for metropolis/cloud\n\nChange-Id: I5e314714b02e87b5f955798dd2bcf497de699ac9\nReviewed-on: https://review.monogon.dev/c/monogon/+/2405\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    }
  ],
  "next": "0ccc85ba1eb4e067dc3eea0dd58b9ab0ebf48d29"
}
