)]}'
{
  "log": [
    {
      "commit": "d8a3fa2d6a84617b3013b07e15293ae266af8922",
      "tree": "c2cf863c5ddc2bd770c99c3fc70386247dbd30c6",
      "parents": [
        "63b346d8a41f2c6e668bb17600fbc15c4feb1f2f"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Fri Nov 24 23:14:09 2023 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Fri Dec 01 21:22:22 2023 +0000"
      },
      "message": "third_party/go: disable unused node_exporter collectors\n\nChange-Id: I56115f0b37aeeaca7e7b1648e423f61476186563\nReviewed-on: https://review.monogon.dev/c/monogon/+/2369\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "63b346d8a41f2c6e668bb17600fbc15c4feb1f2f",
      "tree": "e1422afea67211d2dc3b55626d7897df89860bc8",
      "parents": [
        "e6e570ae3c26c5fda4855522e8cf04644627295f"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Nov 30 12:54:19 2023 +0100"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Nov 30 15:48:00 2023 +0000"
      },
      "message": "metropolis/node/c/localstorage: make writes durable\n\nWith just a write() -\u003e rename() we can end up with an empty file in case\nof an outage. The write() needs to be followed by an fsync() to avoid\nthat.\n\nSince all of our localstorage framework contains only rarely-written\n\u0027configuration\u0027 style files, we now add such an fsync() to every\nwrite().\n\nThis should fix some flakes in tests and low-load clusters where eg. a\nnode can\u0027t read back its key material or persisted node roles after\nreboot.\n\nChange-Id: Iefae4f8bd68ee2972860a7c58326442c80d8aa8c\nReviewed-on: https://review.monogon.dev/c/monogon/+/2411\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "e6e570ae3c26c5fda4855522e8cf04644627295f",
      "tree": "1678ee01ccfc5277f2e6f79858466a2847d291fd",
      "parents": [
        "6fa92ac53f2cbeb3b2e63dea9f87b1b19a680434"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Nov 28 19:23:19 2023 +0100"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Nov 29 12:23:41 2023 +0000"
      },
      "message": "m/n/k/nfproxy: use discovery/v1 API\n\nThe old discovery/v1beta1 is deprecated and removed in 1.25. We need to\nget nfproxy to use the new API (available since 1.21) before we jump\nto a K8s control plane version above 1.25.\n\nChange-Id: I6336e168e9efbfc4a7b41f6fe15efebf95624df2\nReviewed-on: https://review.monogon.dev/c/monogon/+/2407\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "6fa92ac53f2cbeb3b2e63dea9f87b1b19a680434",
      "tree": "4ba7bb0c1308b670c6e72718ea422a8c0d937883",
      "parents": [
        "7a5422e2718017958c0c408cd6f363d33f41fefb"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Nov 28 17:42:26 2023 +0100"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Nov 29 10:27:26 2023 +0000"
      },
      "message": "metropolis/node: sanitize served logs to remove invalid UTF-8 characters\n\nIdeally we would instead either use bytes instead of a string, or never\nallow submitting log lines which are invalid UTF-8. And some day we\nmight still prohibit that - but for now let\u0027s add this failsafe anyway.\n\nFixes #277.\n\nChange-Id: I3d057f4bd1de0ce86e9724e2234b2a40efea8507\nReviewed-on: https://review.monogon.dev/c/monogon/+/2406\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "7a5422e2718017958c0c408cd6f363d33f41fefb",
      "tree": "f14a3dc1383555eecf538fe8a6ef05257fa9e0e3",
      "parents": [
        "3e756907d9c769bc92efde5325cd965a4dacf5bd"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Nov 27 19:34:53 2023 +0100"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Nov 27 18:43:16 2023 +0000"
      },
      "message": "gomod: update rtnentlink to fix ARP table issue\n\nSee https://github.com/prometheus/node_exporter/issues/2849 and\nhttps://github.com/jsimonetti/rtnetlink/releases/tag/v1.4.0\nfor discussion.\n\nChange-Id: Id9d9630bf32c121ec059a3ee1de9b4e8aa42fb92\nReviewed-on: https://review.monogon.dev/c/monogon/+/2402\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "3e756907d9c769bc92efde5325cd965a4dacf5bd",
      "tree": "e6b11184fd17367cde826cc2f561d228c881f0ba",
      "parents": [
        "947c0267b97834c4538777426f1a657f118a3945"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Fri Nov 24 23:12:06 2023 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Nov 27 18:15:51 2023 +0000"
      },
      "message": "metropolis/node/core/metrics: build command inside runnable\n\nIt is not allowed to reuse exec.Command. The command has to be rebuild\nevery time the runnable restarts, because go does not allow command\nrestarts.\n\nChange-Id: Ia0f7c8e598bbd0c275d0cb47c020099d1baa5865\nReviewed-on: https://review.monogon.dev/c/monogon/+/2368\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "947c0267b97834c4538777426f1a657f118a3945",
      "tree": "39eb8d886197b457b0c611335421cbb1f8bcad90",
      "parents": [
        "5bfdb97df902a2ef27aecf40620d56773f9e90b3"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Nov 23 00:11:48 2023 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Nov 27 17:01:33 2023 +0000"
      },
      "message": "metropolis/node/core/metrics: enable more node_exporter metrics\n\nChange-Id: Ie4441cdb5c9c5ba6da8542aaeff8d60cd734030c\nReviewed-on: https://review.monogon.dev/c/monogon/+/2346\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "5bfdb97df902a2ef27aecf40620d56773f9e90b3",
      "tree": "59684e3bed0821b6f1139d32042cb76ac0d2d8ec",
      "parents": [
        "1a773dd14503c985d4f4a8717a7d5a5ebcbe6552"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Sat Nov 25 06:01:28 2023 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Sat Nov 25 19:29:46 2023 +0000"
      },
      "message": "tools/bazel: Allow direct invocation of bazel wrapper and add more docs\n\nChange-Id: I5f03225fb3d5c0304e2f3843ac3d81af2d1b504e\nReviewed-on: https://review.monogon.dev/c/monogon/+/2384\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "1a773dd14503c985d4f4a8717a7d5a5ebcbe6552",
      "tree": "68833ddba21b8712d41c0aaa45c5583d3289f6a3",
      "parents": [
        "4ff00f89bac159848b5a694a1868885a9dcd2387"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Fri Nov 24 00:14:05 2023 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Fri Nov 24 22:44:14 2023 +0000"
      },
      "message": "metropolis/node/core/metrics: fix ephemeral typo\n\nChange-Id: I10bee18e1174dd0b5a6b74b14eda8c1859d50cad\nReviewed-on: https://review.monogon.dev/c/monogon/+/2356\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "4ff00f89bac159848b5a694a1868885a9dcd2387",
      "tree": "119cd2a2cb4a6fd03f969b5c2d0b7c7c79e53fde",
      "parents": [
        "538d3098711d0b8ca0ddd2e76c301f45a46eba9f"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Nov 14 00:33:27 2023 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Nov 23 21:47:02 2023 +0000"
      },
      "message": "treewide: update x/exp\n\nChange-Id: Ie8954ba4f170477ff676b64a64bc017e100a01bd\nReviewed-on: https://review.monogon.dev/c/monogon/+/2311\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "538d3098711d0b8ca0ddd2e76c301f45a46eba9f",
      "tree": "4ba3e2cf0010d359498449df741baf14a76d3de3",
      "parents": [
        "cf8a324b54ad8ab1b6adeb5c54b34de59a936143"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Nov 16 07:59:55 2023 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Nov 23 21:47:02 2023 +0000"
      },
      "message": "treewide: update github.com/insomniacslk/dhcp\n\nChange-Id: Ia53b40a5ef3868043f0d6244ce08c6af458c6a24\nReviewed-on: https://review.monogon.dev/c/monogon/+/2321\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "cf8a324b54ad8ab1b6adeb5c54b34de59a936143",
      "tree": "c1cf639ddf65ea95fc438752578325950c659a5d",
      "parents": [
        "3fdaeaca3820de37a000a4157617b8c7fca7877c"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Nov 23 02:22:57 2023 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Nov 23 21:47:02 2023 +0000"
      },
      "message": "treewide: update node_exporter and dependencies\n\nChange-Id: I57f73c01905e77459b6c70a196c76ba331c80d8b\nReviewed-on: https://review.monogon.dev/c/monogon/+/2347\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "3fdaeaca3820de37a000a4157617b8c7fca7877c",
      "tree": "654df63825aa91aa8615e21954dc15e11a450eb9",
      "parents": [
        "37dbb942110eb68df407f43ba1a40d872bb4cb67"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Nov 13 23:33:07 2023 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Nov 23 21:47:02 2023 +0000"
      },
      "message": "treewide: update sqlc\n\nChange-Id: I72b0f33989bb0032d5a42bc888cdfac666db2a54\nReviewed-on: https://review.monogon.dev/c/monogon/+/2309\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "37dbb942110eb68df407f43ba1a40d872bb4cb67",
      "tree": "8d2972e43004d6bff4061c2894febca3edf273e5",
      "parents": [
        "a56cc4b99f6274fc2f70916b035e4d1da3205d45"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Nov 13 16:06:18 2023 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Nov 23 21:47:02 2023 +0000"
      },
      "message": "treewide: update gazelle,rules_go\n\nnogo does fail with errors because of file in bazel-out/. To fix this we\njust disable the import sort check there.\n\nChange-Id: I241c354f0b23451b4afc989deceb4b38c4e20ee0\nReviewed-on: https://review.monogon.dev/c/monogon/+/2307\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "a56cc4b99f6274fc2f70916b035e4d1da3205d45",
      "tree": "7f9f6c0207ef375f9865cc408a063fd63065eec1",
      "parents": [
        "321cd715b52fb5c252cc2f99030883001748a63f"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Nov 22 23:45:39 2023 +0100"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Nov 23 04:45:38 2023 +0000"
      },
      "message": "m/n/c/network: add quirks infra and i40e quirk\n\nThis adds the applyQuirks function which is called during early\ninitialization of the network stack, before any network interfaces are\nenabled. This function applies device and/or driver-specific fixups to\nmake them work better. For that purpose it examines relevant metadata\n(driver in use, firmware version and OpROM version) to decide which\nquirks should be applied to which device.\n\nAs we do not yet have another way of exposing firmware versions, this\nalso takes care of logging all non-zero firmware versions.\n\nIt also adds a first quirk for i40e which disables firmware-based LLDP\nprocesing.\n\nChange-Id: I456753880102dfb5b3e94847cf5627a003d70eeb\nReviewed-on: https://review.monogon.dev/c/monogon/+/2344\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "321cd715b52fb5c252cc2f99030883001748a63f",
      "tree": "cf4e308ed0cff46be32b58a0b4f4745434dea82d",
      "parents": [
        "3aa00d46256216c799b0a8c4bcaeddcdfada483a"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Nov 22 21:22:16 2023 +0100"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Nov 23 04:31:42 2023 +0000"
      },
      "message": "gomod: use our ethtool fork with privflags support\n\nThis change is going upstream, but until it is, pull it in via replace.\n\nThe privflags support will be used in a subsequent CL to set better\ndefaults for certain NIC parameters.\n\nChange-Id: Ied85619ea3fce097722be5c244dcfcb019db7c6e\nReviewed-on: https://review.monogon.dev/c/monogon/+/2343\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "3aa00d46256216c799b0a8c4bcaeddcdfada483a",
      "tree": "8fed2cccd0de0b0693af6bc27bf9612de2e373d3",
      "parents": [
        "600e2eb39a6581b5c48deac66c4c29015e48b877"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Nov 20 23:08:41 2023 +0100"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Nov 22 20:54:23 2023 +0000"
      },
      "message": "third_party/nix: make run launch-multi2 work\n\nThis makes commands like `bazel run //:launch-multi2` work in the\nnix-shell which is nicer than running it inside a Bazel test.\n\nLong-term we should work on reducing these ambient deps, but\nconsidering all the other deps in that list I think this makes sense for\nthe time being.\n\nChange-Id: Iaef701f19bf363536e415b9a0c51a220b8785ca6\nReviewed-on: https://review.monogon.dev/c/monogon/+/2337\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "600e2eb39a6581b5c48deac66c4c29015e48b877",
      "tree": "69b6850121e5a9896dded1bbd3afa881ebe03430",
      "parents": [
        "cf7f8c0475b8eaddb02869aaa9cb83ce3928b5f6"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Nov 21 05:29:14 2023 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Nov 22 13:33:24 2023 +0000"
      },
      "message": "metropolis/node: fix api-server metrics docs\n\nChange-Id: I28b4860a11a1fb4beb49feb65317220fcb683efd\nReviewed-on: https://review.monogon.dev/c/monogon/+/2340\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "cf7f8c0475b8eaddb02869aaa9cb83ce3928b5f6",
      "tree": "0563191b7e033a230d4de6980aa38e8dc8b14f47",
      "parents": [
        "eb2520f048df92de2e48ff69d4b9a5431f0372d1"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Nov 21 15:16:21 2023 +0100"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Nov 21 18:50:45 2023 +0000"
      },
      "message": "m/n/c/curator: log leadership key details when transaction gets aborted due to leadership loss\n\nThis should allow us to debug\nhttps://github.com/monogon-dev/monogon/issues/276 a bit further.\n\nChange-Id: If709858df15de67f19beffc8e14b0ab09bba89c8\nReviewed-on: https://review.monogon.dev/c/monogon/+/2341\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "eb2520f048df92de2e48ff69d4b9a5431f0372d1",
      "tree": "de8e9cb052cad3a6b8993f6814974b94abb4c0fb",
      "parents": [
        "4b42c8a429b1d061faa9823c1ac26adaac3dc012"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Sun Nov 19 07:04:15 2023 +0100"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Nov 20 22:13:16 2023 +0000"
      },
      "message": "m/n/c/metrics: add node name to discovery labels\n\nThis allows for identifying the node directly without taking a detour\nvia its IP address.\n\nChange-Id: Ia36ba52385292264a42f451ce2c63e9a6c76fdb6\nReviewed-on: https://review.monogon.dev/c/monogon/+/2336\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "4b42c8a429b1d061faa9823c1ac26adaac3dc012",
      "tree": "e5bf8412d8fceb0178cbf93b7623934299b475e3",
      "parents": [
        "a6a039209495ee74c2e830a55f496e901b6a3b5b"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Sun Nov 19 07:02:51 2023 +0100"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Nov 20 22:13:16 2023 +0000"
      },
      "message": "m/n/c/metrics: add kube-apiserver\n\nThis adds the Kubernetes API Server metrics to the list of exported\nmetrics.\n\nChange-Id: Ie5827441362787a3bff03ec6cff1f07332b0ae34\nReviewed-on: https://review.monogon.dev/c/monogon/+/2335\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "a6a039209495ee74c2e830a55f496e901b6a3b5b",
      "tree": "11c915326c4b2c7b16dec2f67f595a3cb9a5db3b",
      "parents": [
        "79d0b0d518efef2f86904443b8612ed6bd90cb8c"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Nov 13 19:57:48 2023 +0100"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Nov 20 11:36:53 2023 +0000"
      },
      "message": "build: new workspace status script, new versioning scheme\n\nThis reimplements the workspace status script and fixes a bunch of\nissues along the way:\n\n1. The script is now in Python, which allows us to better express some\n   complexity.\n2. We now retrieve the Kubernetes version from\n   third_party/go/repositories.bzl, thereby unhardcoding the Kubernetes\n   version.\n3. We now support for multiple \u0027products\u0027 with different versions.\n   Currently we have only one product, which is metropolis. This is the\n   basis for tying Git tags to releases of a particular codebase within\n   the monorepo.\n4. Git tags are now parsed to retrieve the version of a product, instead\n   of it being hardcoded in the workspace status script.\n5. We use a vX.Y.Z-devNNN versioning system for builds which have\n   happened in between tags. NNN is the number of commits since vX.Y.Z.\n\nThis changes the current version of Metropolis from 0.1 to 0.1.0-dev440.\n\nIn an upcoming change we will implement a Go-side library to caputure\ninformation about the workspace state, both the per-repo data like VCS\nstate and per-product data like versions. For now we keep a stopgap in\nthe new script to emit version data as expected by the current codebase.\n\nChange-Id: I07cb17efc7d60aa269627a549f56ffa1bfdeb5b7\nReviewed-on: https://review.monogon.dev/c/monogon/+/2304\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "79d0b0d518efef2f86904443b8612ed6bd90cb8c",
      "tree": "4694fc178feea953957e92814de0fd9aa358b34c",
      "parents": [
        "9907d199d9397dd90e1ff37e70ede151f2f89db6"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Sat Nov 18 23:12:13 2023 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Sat Nov 18 22:24:59 2023 +0000"
      },
      "message": "metropolis/node/core/metrics: Enable cpu info exporter\n\nChange-Id: I625485570360908810fad3f56e8958ed2d5bbcad\nReviewed-on: https://review.monogon.dev/c/monogon/+/2327\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "9907d199d9397dd90e1ff37e70ede151f2f89db6",
      "tree": "d9c04e69c126e74a157e522c5c2a75e5ad8951b7",
      "parents": [
        "449daf6f134c9473351921883f7481204f584ce9"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Sat Nov 18 23:11:56 2023 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Sat Nov 18 22:21:40 2023 +0000"
      },
      "message": "metropolis/node/core/metrics: Exclude veth interfaces from metrics\n\nChange-Id: If4059eb9aae225ab283c4f7d6d49342e626e206f\nReviewed-on: https://review.monogon.dev/c/monogon/+/2326\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "449daf6f134c9473351921883f7481204f584ce9",
      "tree": "b4e20c7f33b4cba565272f6aa26e226bb5a3c7d6",
      "parents": [
        "786134dcac2737cb3ab62f1b54389946b1bc7fd4"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Nov 13 23:13:54 2023 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Sat Nov 18 02:35:40 2023 +0000"
      },
      "message": "treewide: update to go 1.21.4\n\nChange-Id: I4f4cdaf696a13dd967834ec5ea690aa266e3aea8\nReviewed-on: https://review.monogon.dev/c/monogon/+/2310\nTested-by: Jenkins CI\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    },
    {
      "commit": "786134dcac2737cb3ab62f1b54389946b1bc7fd4",
      "tree": "4e2e7ebfc8a74ca2264f73a8acc69c39d26243a0",
      "parents": [
        "b6308cd63854e3ef48e6afcc4c1f51e0c6ac1203"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Nov 13 16:55:14 2023 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Nov 16 18:09:22 2023 +0000"
      },
      "message": "m/n/c/n/dhcp4c/transport: replace mdlayher/raw with mdlayher/packet\n\nChange-Id: Iee27f977434d795fd16df6a16096fd8439f423ba\nReviewed-on: https://review.monogon.dev/c/monogon/+/2308\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "b6308cd63854e3ef48e6afcc4c1f51e0c6ac1203",
      "tree": "ca6a5e292e05e420b7f04250c1e189511a6de3f7",
      "parents": [
        "a85c86f5b2d80251811f3a659fe9570694dd6056"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Oct 10 21:19:03 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Nov 16 18:09:16 2023 +0000"
      },
      "message": "cloud: split shepherd up\n\nChange-Id: I8e386d9eaaf17543743e1e8a37a8d71426910d59\nReviewed-on: https://review.monogon.dev/c/monogon/+/2213\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "a85c86f5b2d80251811f3a659fe9570694dd6056",
      "tree": "987fdd08f23f5ccb5df390927db6905f3804d03b",
      "parents": [
        "b4f5024731f2f61b0f5b377fe9bcbb4934a5e83b"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Nov 16 05:19:12 2023 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Nov 16 18:09:06 2023 +0000"
      },
      "message": "go/types/mapsets: replace x/exp dependency with stdlib/cmp\n\nChange-Id: I5a97afb12ae161b607e2c5640ca9429dba1461b0\nReviewed-on: https://review.monogon.dev/c/monogon/+/2320\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "b4f5024731f2f61b0f5b377fe9bcbb4934a5e83b",
      "tree": "d71e84a77c0e77849390bacbde7554bc02fa48b6",
      "parents": [
        "62f1d3680947e1d78bacf2a7277fb4b2007ebacb"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Nov 14 21:51:07 2023 +0100"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Nov 15 13:10:19 2023 +0000"
      },
      "message": "treewide: use Pinner to resolve safety issues\n\nPrior to Go 1.21 the only way to pass Go-managed pointers to the kernel\nwas to convert them to a uintptr inside the syscall argument expression.\nThis pattern was special-cased in the compiler to prevent the referenced\nmemory from being moved by an eventual moving GC in Go while the syscall\nis running (thus corrupting the Go heap).\n\nBut this was very restrictive as there are syscalls which take inputs\ncontaining further pointers.  According to the official rules this could\nnot be implemented safely.\n\nIn practice you could just do it anyways as the current Go GC does\nin general not move objects, but it was always kind of a hack.\nWith Go 1.21 there is a new Pinner API which can be used to pin the\nmemory which is going to be referenced in these structures, allowing\nthem to be constructed and used over multiple calls.\n\nruntime.KeepAlive is still required to prevent finalizers from running\nprematurely.\n\nUse this new API and remove the relevant comments.\n\nChange-Id: I26bce06e1c20a5fe0c41f9ae736a895f533674c1\nReviewed-on: https://review.monogon.dev/c/monogon/+/2316\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "62f1d3680947e1d78bacf2a7277fb4b2007ebacb",
      "tree": "38c2fe1d57b68788f79ae018075b246f228310cc",
      "parents": [
        "60461b2b23eb57319525a3e00d7ae57e51598ebc"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Nov 14 16:18:24 2023 +0100"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Nov 14 16:44:03 2023 +0000"
      },
      "message": "treewide: stop using LZ4 for initrd compression\n\nThere are two issues at play here: One is a bug in pierrec/lz4 when\nusing the legacy framing format [1]. This bit us when we hit a broken\nsize region with CL:2130, taking hours to debug.\n\nThe other is the fact that the Linux LZ4 frame format has significant\ndesign issues [2], especially with concatenanted initrds.\n\nThe first issue could be fixed by switching to a different LZ4\nimplementation (we do even have the reference impl in the monorepo) but\nthere is no API to generate the legacy frame format and things like [3],\na patch carried by Ubuntu to fix more edge cases just do not inspire\nconfidence in such a solution.\n\nThus, this CL switches over to using zstd for compressing initrds.\n\nZstd is slower than LZ4 for decompressing, but it still decompresses at\nmultiple GB/s per core while having a much better compression ratio.\nIt also doesn\u0027t have any Linux-specific bits and Linux uses the\nreference implementation for decoding, which should make it much more\nrobust. So overall I think this is a good tradeoff.\n\n[1] https://github.com/pierrec/lz4/issues/156\n[2] https://github.com/lz4/lz4/issues/956#issuecomment-736705712\n[3] https://launchpadlibrarian.net/507407918/0001-unlz4-Handle-0-size-chunks-discard-trailing-padding-.patch\n\nChange-Id: I69cf69f2f361de325f4b39f2d3644ee729643716\nReviewed-on: https://review.monogon.dev/c/monogon/+/2313\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "60461b2b23eb57319525a3e00d7ae57e51598ebc",
      "tree": "17f4eb857a29b08a6e2be059279b9d88691aff09",
      "parents": [
        "3fd0977e92c3e86cdfde736debdda66af05d1015"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Oct 26 19:16:59 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Nov 13 21:05:16 2023 +0000"
      },
      "message": "metropolis: move curator client watches to curator/watcher\n\nThis replaces all the ad-hoc code to watch Curator node(s) with calls\nthrough the new curator/watcher library.\n\nChange-Id: Ie2a82b330e4108b9b725515cb10595916c38b323\nReviewed-on: https://review.monogon.dev/c/monogon/+/2263\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "3fd0977e92c3e86cdfde736debdda66af05d1015",
      "tree": "879808d1406f1f1caeb5030a10779d25a6c05a07",
      "parents": [
        "8ec6ef0931c7e3d3084bc3180a9d88c002a1618d"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Thu Oct 26 19:13:32 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Nov 13 20:11:06 2023 +0000"
      },
      "message": "m/n/c/curator/watcher: init\n\ncurator/watcher is a new library which simplifies access to the Curator\nfrom client code.\n\nIt implements common logic found in a bunch of Metropolis code, where a\nnode or multiple nodes are watched for updates. The single-node version\nof this RPC is not that complex, but the many-node version is and\ndefinitely deserves a client library to remove possible sources of\nimplementation bugs.\n\nThis doesn\u0027t yet switch over any of the existing code to use this\nlibrary - that will come up in another CR on the stack.\n\nChange-Id: Ia1df6f21473f86cb9af1e962d157350a5cfd7d07\nReviewed-on: https://review.monogon.dev/c/monogon/+/2262\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "8ec6ef0931c7e3d3084bc3180a9d88c002a1618d",
      "tree": "d9963dad7d76071fcb3d42bc84123f2aaaaa4867",
      "parents": [
        "ea762f621a91400569c3118bbaef395336d90979"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Nov 13 13:30:28 2023 +0100"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Nov 13 20:11:06 2023 +0000"
      },
      "message": "go/types/mapsets: implement OrderedMap.{Count,Clear}\n\nChange-Id: Iaee5b914fe63ee7a60f796ef986535f6f8e72960\nReviewed-on: https://review.monogon.dev/c/monogon/+/2302\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "ea762f621a91400569c3118bbaef395336d90979",
      "tree": "f2d09d28d42e91795c83e5b9b15e88e00a484bf6",
      "parents": [
        "d0424439e5c6637afa5b8156464d14933d955404"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Nov 08 18:54:56 2023 +0100"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Nov 13 15:39:29 2023 +0000"
      },
      "message": "m/n/c/n/hostsfile: do not log individual entries\n\nThis gets extremely spammy when spinning up large clusters as it\nemits all entries for every new hostsfile into the log.\nFor a fresh cluster of n nodes this is O(n^2) log lines, which is\nfar too many. The number of entries is already logged and should be\nsufficient for debugging purposes.\n\nChange-Id: I6bf4e489aea52bad3a32a8a0f900e832b6a4f197\nReviewed-on: https://review.monogon.dev/c/monogon/+/2298\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "d0424439e5c6637afa5b8156464d14933d955404",
      "tree": "98a243e7e4612b6db6271c3ef9c5ef1036d1f519",
      "parents": [
        "60fab1cd31c77234e4840f95d12e2062ca7f0a5c"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Nov 08 15:12:54 2023 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Nov 13 13:53:51 2023 +0000"
      },
      "message": "cloud/bmaas/bmdb/webug: Add provider ip address to webug\n\nChange-Id: Ic0b2767ef6b8dd86b158119e6e109c5acb406121\nReviewed-on: https://review.monogon.dev/c/monogon/+/2297\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "60fab1cd31c77234e4840f95d12e2062ca7f0a5c",
      "tree": "9ba6f87941285551ae62e3e165e622f148196511",
      "parents": [
        "246f2fe5d8139b167550b957365118d62ad8f4a9"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Jun 13 20:41:07 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Nov 06 18:35:37 2023 +0000"
      },
      "message": "cloud/bmaas/scruffy: add nodes per region metric\n\nChange-Id: If9edcdd4a486fd2f141bfcd89dd1a2b60424ab4c\nReviewed-on: https://review.monogon.dev/c/monogon/+/2281\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "246f2fe5d8139b167550b957365118d62ad8f4a9",
      "tree": "fbded2cea378207e9a605225a75bfbb84995da21",
      "parents": [
        "d9f1f1ec67af21eba685505d7b3086fc222106e1"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Oct 26 04:39:35 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Nov 01 12:54:17 2023 +0000"
      },
      "message": "tools: extend bazel wrapper to execute commands inside nix-shell\n\nChange-Id: I27fd2e2ac863fabdc015437594bc2cc677279af1\nReviewed-on: https://review.monogon.dev/c/monogon/+/2239\nTested-by: Jenkins CI\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    },
    {
      "commit": "d9f1f1ec67af21eba685505d7b3086fc222106e1",
      "tree": "9281d846ff2d20f66dc24d2231969deb7fd1348d",
      "parents": [
        "8456ddf02aea2e1015805f18ef1871812c5cb7f6"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Oct 31 15:44:35 2023 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Oct 31 17:33:45 2023 +0000"
      },
      "message": "node/core: add sysctls\n\nChange-Id: I47b0d639a62f73f134430c5164a35eef2b5622d7\nReviewed-on: https://review.monogon.dev/c/monogon/+/2273\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "8456ddf02aea2e1015805f18ef1871812c5cb7f6",
      "tree": "7ea30de34d2ed42e2da1c044fb62576464b4e2cc",
      "parents": [
        "7acd92dae19109fff8e6036d0a7fcd64aa1851c1"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Oct 30 18:56:59 2023 +0100"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Oct 30 22:12:01 2023 +0000"
      },
      "message": "metropolis: implement node Deletion and framework for Decommissioning\n\nThis implements the basic ability to remove nodes from a cluster.\n\nWe prepare for a more complex workflow involving multi-sage\ndecommissioning, but first implement the \u0027worst case\u0027 workflow, in which\na node needs to be deleted if it hasn\u0027t been gracefully decommissioned.\nThis is what we currently need most in practice, as we have node\nfailures we\u0027d like to deal with.\n\nThe Delete functionality is still not fully complete though, as we\u0027re\nstill accepting client certificates from decommissioned nodes. But we\u0027ll\nfix that in an upcoming CR.\n\nChange-Id: I7322cb1464a9e5bc924363321534033dcc8a6246\nReviewed-on: https://review.monogon.dev/c/monogon/+/2270\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "7acd92dae19109fff8e6036d0a7fcd64aa1851c1",
      "tree": "23f299c22f1b40014e9bf7bfca47b1788c1f7f28",
      "parents": [
        "91c0397b2f8eab309e0958afa1746c2a2d02b433"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Oct 30 18:56:00 2023 +0100"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Oct 30 22:12:01 2023 +0000"
      },
      "message": "metropolis: renamed DISOWNED to DECOMMISSIONED\n\nThis seems like a better name, and the old one was never actually used\nanywhere.\n\nChange-Id: I66b17a9145225828bb978c999bbecd5118188389\nReviewed-on: https://review.monogon.dev/c/monogon/+/2269\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "91c0397b2f8eab309e0958afa1746c2a2d02b433",
      "tree": "1be5ceff1a23a179d2bbcdf5ca744624112131b4",
      "parents": [
        "da342a424ffbd981df2250ebed2aa845a18356eb"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Oct 30 18:54:32 2023 +0100"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Oct 30 22:12:01 2023 +0000"
      },
      "message": "m/n/core/curator: add FsmState to Curator Node data\n\nThe node state from the point of view of the cluster is already exposed\nthrough the Management Node data. Add the same to the Curator Node data.\nWe\u0027ll use this in nodes to detect when a node is requested to be\ndecommissioned.\n\nChange-Id: I60408a5e3a22c21dae6f073e21528ccc309b3fbe\nReviewed-on: https://review.monogon.dev/c/monogon/+/2268\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "da342a424ffbd981df2250ebed2aa845a18356eb",
      "tree": "2eae1557414e3d3982206e267d2e8ee0bd219bc2",
      "parents": [
        "c0f72dc5bd129a27d9a141a84f3602480a28400a"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Oct 24 15:47:54 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Oct 26 20:58:17 2023 +0000"
      },
      "message": "m/n/b/fwprune: fix bug in firmware deduplication\n\nThe populatedPaths set was checked for the path relative to\n/lib/firmware, but the absolute path was added. This caused the\nbailout for duplicate firmware requests to be ineffective.\n\nFound while using this for a weekend project.\n\nChange-Id: I74f6cd0dd7e2da1fc189da8a4d01aba7ac29b837\nReviewed-on: https://review.monogon.dev/c/monogon/+/2264\nTested-by: Jenkins CI\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    },
    {
      "commit": "c0f72dc5bd129a27d9a141a84f3602480a28400a",
      "tree": "edc135243ce1caf6b11a448339b738629dd91bdb",
      "parents": [
        "f64f197c8039a72d82efaae6a21f725d3cd3ac7a"
      ],
      "author": {
        "name": "Leopold Schabel",
        "email": "leo@monogon.tech",
        "time": "Thu Oct 19 16:54:38 2023 +0200"
      },
      "committer": {
        "name": "Leopold Schabel",
        "email": "leo@monogon.tech",
        "time": "Mon Oct 23 21:07:09 2023 +0000"
      },
      "message": "third_party/sandboxroot: bump\n\nMirror is up to date now.\n\nChange-Id: Idfbedccac30000a54ebc8fc0a95f4ff008f7a640\nReviewed-on: https://review.monogon.dev/c/monogon/+/2227\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "f64f197c8039a72d82efaae6a21f725d3cd3ac7a",
      "tree": "302a5d9c6ee1d5cdf2b2c8e4abe7b0609c9a2ffa",
      "parents": [
        "54a5a053f2250c03d8476293ecb98fdb458ee5fd"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Fri Jul 28 00:00:50 2023 +0000"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Oct 11 10:53:00 2023 +0000"
      },
      "message": "metropolis/node/core/metrics: fixup metrics authentication\n\nChange-Id: I67643855ab61bfdea980211ffe01e50c2409882b\nReviewed-on: https://review.monogon.dev/c/monogon/+/1979\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "54a5a053f2250c03d8476293ecb98fdb458ee5fd",
      "tree": "acfde3ff61c5181ca89998d725001071f86d9356",
      "parents": [
        "4811e70b3cd8f237c1b57ac85cc4c02b57c82535"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Oct 02 16:40:11 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Oct 10 15:14:57 2023 +0000"
      },
      "message": "metropolis: implement and use A/B preloader\n\nThis switches over from using the EFI built-in bootloader for A/B\nupdates to using our own EFI preloader due to significant issues with\nin-the-wild EFI implementations.  It is a very minimal design relying\non a single Protobuf state file instead of EFI variables.\n\nChange-Id: Ieebd0a8172ebe3f44c69b3e8c278c53d3fe2eeb4\nReviewed-on: https://review.monogon.dev/c/monogon/+/2203\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "4811e70b3cd8f237c1b57ac85cc4c02b57c82535",
      "tree": "aefc6d2f568c61ab5afcb2a7cb4f2c46b479deaf",
      "parents": [
        "0f43359cd444ab84167c9f5305ad5bfb9ffd3a3c"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Oct 09 22:13:34 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Oct 09 20:27:06 2023 +0000"
      },
      "message": "linux: bump to 6.1.56\n\nThis gets us to the latest LTS kernel, 5.15 is nearly two years old.\n\nChange-Id: I2f386c334b5067b9ced1b5286253d439884182bf\nReviewed-on: https://review.monogon.dev/c/monogon/+/2210\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "0f43359cd444ab84167c9f5305ad5bfb9ffd3a3c",
      "tree": "cea0e3688f15af00f6f2fa28f1119593389835c1",
      "parents": [
        "5a90d306602a5ccb7022fa8c80b7b1e4fb6c85d4"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Oct 09 22:11:58 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Oct 09 20:27:06 2023 +0000"
      },
      "message": "linux-firmware: bump to 20230919\n\nBump linux-firmware to a tagged version again.\n\nChange-Id: I65fcce7ed3ce0323e1504d339b349fc3a901bff7\nReviewed-on: https://review.monogon.dev/c/monogon/+/2209\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "5a90d306602a5ccb7022fa8c80b7b1e4fb6c85d4",
      "tree": "b6e2bfe17aa8ccb532aeca405e17fc2eda99dc5f",
      "parents": [
        "d141d182614f915ae44250b84c6be10276ca4840"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Oct 09 17:38:13 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Oct 09 15:47:05 2023 +0000"
      },
      "message": "metropolis: fix handling GPT holes\n\nGPT tables can have \"holes\" i.e. unused partition slots. These are\nrepresented as nil values. Code walking these tables did not consider\nthat partition entries might be nil.\nFix the call sites and improve the gpt package documentation to\nexplicitly mention the need to check IsUnused.\n\nChange-Id: I27f5db31e14a4907a84d6069ddcc267b25871f72\nReviewed-on: https://review.monogon.dev/c/monogon/+/2208\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "d141d182614f915ae44250b84c6be10276ca4840",
      "tree": "8d590cd643144299ccb28960ea7af55b79d8e304",
      "parents": [
        "1dc60af36a57d434689032234fdc9e9d00ed957e"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Oct 02 15:07:01 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Oct 05 13:46:24 2023 +0000"
      },
      "message": "workspace: add Rust EFI infrastructure\n\nThis bumps rules_rust, cleans up the toolchains with the new version.\nIt also adds the Prost codegen to \"normal\" crate set as well as a new\ncrate set specific to EFI. This is separate because of Rust no-std\u0027s\ndependence on create feature tags.\n\nChange-Id: Ie76e66ee83696948391420ca3b011a3a71258690\nReviewed-on: https://review.monogon.dev/c/monogon/+/2202\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "1dc60af36a57d434689032234fdc9e9d00ed957e",
      "tree": "df6f6d4fef63fb3fa13b4f06b9a06e0339caaec2",
      "parents": [
        "e0c0617e33e3b9c9a69b150189b1b13c010de9e0"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Oct 03 15:40:09 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Oct 05 13:46:24 2023 +0000"
      },
      "message": "m/node: replace image genrule with proper rule\n\nThe genrule has issues with transitions so replace it with a proper\nrule.\n\nChange-Id: Ie5c38ae17da07a3694a6d0ea7a6580c588916175\nReviewed-on: https://review.monogon.dev/c/monogon/+/2205\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "e0c0617e33e3b9c9a69b150189b1b13c010de9e0",
      "tree": "9908902859bf7245a07e27cb0e6c621f65f15a1d",
      "parents": [
        "48f22ce3a1558ad9994de3bde93f38e1aa997812"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Sep 19 12:28:16 2023 +0000"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Sep 26 10:01:57 2023 +0000"
      },
      "message": "go/clitable: factor out from metroctl\n\nWe need the same functionality in bmcli, so factor it out from metroctl\ninto a generic library.\n\nChange-Id: I3fb3dfaae44a64d204e9220f117f379c382c5c4f\nReviewed-on: https://review.monogon.dev/c/monogon/+/2172\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "48f22ce3a1558ad9994de3bde93f38e1aa997812",
      "tree": "509c22d629aabf45b1c65e57598dd92eded4a455",
      "parents": [
        "a5588e1c1d15edf055e615be1269aa54eb4955fe"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Sep 20 22:48:26 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Sep 25 14:32:49 2023 +0000"
      },
      "message": "third_party/nix: make nix-env reusable\n\nChange-Id: I19ffb94d0822044ad19b8454f91d2186209d3510\nReviewed-on: https://review.monogon.dev/c/monogon/+/2184\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "a5588e1c1d15edf055e615be1269aa54eb4955fe",
      "tree": "ed9770046b0f60948f09799a9f5519df6262abac",
      "parents": [
        "1feb0fef61999a073e238cca783ce8011f353add"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Sep 20 19:43:15 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Sep 21 13:01:44 2023 +0000"
      },
      "message": "third_party/sandboxroot: use macros for bazeldnf\n\nChange-Id: I055b377dc3b5580d442abcba939d8b720cb42ad9\nReviewed-on: https://review.monogon.dev/c/monogon/+/2183\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "1feb0fef61999a073e238cca783ce8011f353add",
      "tree": "26fd32cfef4601aafd41956b8a7cda1d231aedc2",
      "parents": [
        "3c6306ba6b146171f122bdf50f7a8daf63816b5b"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Sep 20 19:42:46 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Sep 21 13:01:44 2023 +0000"
      },
      "message": "third_party/sandboxroot: bump\n\nChange-Id: Ib0870708f53ea5320dcf9240ad9354872880fd93\nReviewed-on: https://review.monogon.dev/c/monogon/+/2182\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "3c6306ba6b146171f122bdf50f7a8daf63816b5b",
      "tree": "2eb99779ec1157a919938a5d5e5bb7f5081dd0c7",
      "parents": [
        "f0ae33180b59b25d236199e1b874f0dce7aa1e41"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Sep 19 11:48:44 2023 +0000"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Sep 20 09:55:16 2023 +0000"
      },
      "message": "cloud/b/b/reflection: add single-line HumanValue rendering, Index\n\nThis is in preparation for printing fields in bmcli.\n\nChange-Id: I1aa178da1a50e8dd0c572a238f92daa536f9fcd9\nReviewed-on: https://review.monogon.dev/c/monogon/+/2170\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "f0ae33180b59b25d236199e1b874f0dce7aa1e41",
      "tree": "0d3ffd008695edc1a4b9afde63ac8f149d7d6d94",
      "parents": [
        "65b1c682edc6237dbb50efa7a08475d56a97a7ae"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Sep 12 13:40:30 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Sep 18 13:56:28 2023 +0000"
      },
      "message": "m/p/watchdog: add watchdog package\n\nThis adds the watchdog package for interfacing with devices implementing\nthe Linux watchdog API. There is one alternative implementation at\ngithub.com/mdlayher/watchdog but it is too minimal for our use case.\n\nThe kernel API contains a bunch of weird status bits only relevant for\nphysical watchdog cards which are not made accessible through the\nGo package.\n\nSadly there are no integration tests for this package as ktest wouldn\u0027t\nwork for this because a) no watchdog HW and b) the test success depends\non a condition outside the kernel.\n\nChange-Id: If138a97bc655025da4426665f8cbf1f093cc3bb1\nReviewed-on: https://review.monogon.dev/c/monogon/+/2142\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "65b1c682edc6237dbb50efa7a08475d56a97a7ae",
      "tree": "98dc265e817dd56c29c03b0bcbfcdaacf52778df",
      "parents": [
        "65702194ea264a0fd01fb470bacaf39264b4f637"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Sep 14 15:49:39 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Sep 14 16:05:16 2023 +0000"
      },
      "message": "m/p/blockdev: use errors.ErrUnsupported in 1.21\n\nChange-Id: Ice8780b092c034cf755aa409ef5fce5a8aef9226\nReviewed-on: https://review.monogon.dev/c/monogon/+/2147\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "65702194ea264a0fd01fb470bacaf39264b4f637",
      "tree": "3469201097b30e638f1e446655e1d23b33d90f8d",
      "parents": [
        "f551a7696824a9ddbac63191c489db8280aee0a4"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Aug 31 16:27:38 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Sep 14 13:43:45 2023 +0000"
      },
      "message": "workspace: rules_go, gazelle, go, gVisor update\n\nThis commit not only updates rules_go and friends, but also updates\ngVisor, removes legacy protobuf usage and switches from using\nbuild_configuration to a config flag for bazel\n\nChange-Id: Idb383f35ca0fec4cb7329e9d991f08f28cf9b1fb\nReviewed-on: https://review.monogon.dev/c/monogon/+/2129\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "f551a7696824a9ddbac63191c489db8280aee0a4",
      "tree": "b73af6eab62e92c6ceb2db6c8f1006682e1d2ec9",
      "parents": [
        "5acd380930cf22284b22d8c2f45bd73465e64628"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Aug 29 23:21:25 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Aug 30 11:58:42 2023 +0000"
      },
      "message": "workspace: update rules_rust and add UEFI platform\n\nThis updates rules_rust from 0.16 to 0.26 and adds a patch sent upstream\nfor UEFI support.\n\nExplicit toolchain definitions are needed for UEFI, so three toolchains\nfor all currently-supported host OSs (Linux and macOS) are added.\n\nRust UEFI support libraries will be added in a followup CL.\n\nChange-Id: I52175f69f6a5c424f1f232748ff96dd6fcbbe92a\nReviewed-on: https://review.monogon.dev/c/monogon/+/2104\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "5acd380930cf22284b22d8c2f45bd73465e64628",
      "tree": "ef1a63c5039fbf735aa0978bc748e04e502a19bb",
      "parents": [
        "9ee160e87a38b185af57de2b9188cc19d53cd1d1"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Aug 29 23:15:06 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Aug 30 11:58:42 2023 +0000"
      },
      "message": "build: upstream UEFI to platforms\n\nThis removes our local UEFI constraint_value for a patch sent upstream\nto @platforms. This will be used by rules_rust in a follow-up.\n\nChange-Id: I16e3bf8a60923a2f77ef036babdda45205d8a078\nReviewed-on: https://review.monogon.dev/c/monogon/+/2103\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "9ee160e87a38b185af57de2b9188cc19d53cd1d1",
      "tree": "8c0847c278e56f0c7ab41c49051f2cf74d5717fd",
      "parents": [
        "cc5371b8b1b8714134fb45c4dd18d31399c6955f"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Aug 29 23:07:51 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Aug 30 11:58:42 2023 +0000"
      },
      "message": "b/t/llvm-efi: make fltused symbol weak\n\nRust\u0027s libcore for UEFI ships this hack as well, causing a duplicate\nsymbol error when linking. Marking this weak is also enough for clang to\nkeep this for linking, so the separate used attribute is not needed.\n\nChange-Id: I1f6aad626b235bbe1e613c5427b8c4fbd0dc330e\nReviewed-on: https://review.monogon.dev/c/monogon/+/2102\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "cc5371b8b1b8714134fb45c4dd18d31399c6955f",
      "tree": "f3e19a3af8ff12b3bf8aa32b1ebe2258e3ca0554",
      "parents": [
        "6888873fad889bfb7cd594b4208798f80eb60f43"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Aug 29 23:05:47 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Aug 30 11:58:42 2023 +0000"
      },
      "message": "b/t/llvm-efi: define all_files correctly\n\nThe llvm-efi toolchain has an incorrect all_files definition.\nBazel\u0027s doc says:\n\u003e Bazel assumes that all_files is a superset of all other\n\u003eartifact-providing attributes ...\n\nAdjust the definition to contain all other depsets (currently just one).\n\nChange-Id: Ic0889698a865355b66927d336067aa028501b97b\nReviewed-on: https://review.monogon.dev/c/monogon/+/2101\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "6888873fad889bfb7cd594b4208798f80eb60f43",
      "tree": "860ca3a83e6a6667888ec8595cc332f44e1cb6aa",
      "parents": [
        "29ac140c4cbdb8dd8d71863de8c9b4473a1c0215"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Aug 03 14:25:28 2023 +0000"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Aug 29 10:08:29 2023 +0000"
      },
      "message": "metropolis/node: dont allocate node ports in constructor\n\nAll good things are three, and this should be the final installment in\nthe saga of getting ports reserved. The Kubernetes codebase always\nstarts a recovery after initialization of a new port allocator, which\ncurrently makes it very unhappy as we already allocated the system\nports, but we are trying to do the same in the recovery by pretending to\nbe a service. Anyway, this removes the initial part of the patch and\nonly uses the recovery way of reserving the ports. This still creates an\nannoying message sometimes, but I can\u0027t find the code path which creates\nthem.\n\nChange-Id: Ib7d9ec5d00cbde7371d876c31c63b5312024a187\nReviewed-on: https://review.monogon.dev/c/monogon/+/2027\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "29ac140c4cbdb8dd8d71863de8c9b4473a1c0215",
      "tree": "e82efa73a72ddeec624acfefe693ffa66bb2db45",
      "parents": [
        "3781ddbfd7534f88317a44e6fee02670fe36a01e"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Aug 21 15:18:19 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Aug 24 13:03:08 2023 +0000"
      },
      "message": "tools/run_bazel: allow running bazel inside nix-shell without entering\n\nnix-shell does not support arguments for an application running inside\na FHS environment. This adds a workaround by keeping the command inside\nan environment variable and executing it if set. If it doesnt exist, we\nfall back to our bash shell.\n\nChange-Id: I7fd53f9c14019179490af4b9af3b0b16b3d70297\nReviewed-on: https://review.monogon.dev/c/monogon/+/2066\nTested-by: Jenkins CI\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    },
    {
      "commit": "3781ddbfd7534f88317a44e6fee02670fe36a01e",
      "tree": "2c0247c43643cea03672b12d47247acfd4f6d320",
      "parents": [
        "8b000b2217522891cace6ad3b98d805b1a262345"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Mon Aug 21 20:59:01 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Aug 23 08:59:12 2023 +0000"
      },
      "message": "metropolis/curator: report leader based on ledership election status\n\nThis makes GetCurrentLeader calls respond to cluster/leader changes\ninstead of relying on connections getting closed on time when a leader\nchanges, or when a node gets elected as a leader.\n\nThis leads to less churn when cluster leadership status changes (no need\nfor every RPC client to re-establish connectivity to get the new\nleader). It should also be faster to respond to cluster leader changes,\nas it doesn\u0027t rely on the the RPC client detecting that the node it\nconnected to has stopped responding / disconnected.\n\nChange-Id: I9de12286530226b3832d2ae07cb7d943ca537d3f\nReviewed-on: https://review.monogon.dev/c/monogon/+/2069\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "8b000b2217522891cace6ad3b98d805b1a262345",
      "tree": "2696cf2de6fe72f5e220e4db725a81c816de1bce",
      "parents": [
        "0573d7d031e51af42cb482c3cd788a280ccaaf28"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Aug 08 16:11:26 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Aug 23 08:59:12 2023 +0000"
      },
      "message": "metropolis/hostsfile: update our own node\u0027s roles correctly\n\nThis properly serializes the state of our own node\u0027s roles into startup\ndata (and the hosts file) if it is assigned during node runtime.\n\nWithout this, we could end up serializing out of date node role data and\nthus would not startup up with a cluster directory (and persisted node\nroles) which would allow for proper control plane startup.\n\nChange-Id: I45da5d73cc0eea0a7c32308bbecf512bb9699d55\nReviewed-on: https://review.monogon.dev/c/monogon/+/2068\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "0573d7d031e51af42cb482c3cd788a280ccaaf28",
      "tree": "8e7cb6f506bbba04985860830dae6f8de4ac4b4f",
      "parents": [
        "67023fe466d35df7ff7e606e74f3bcf51ac8085c"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Aug 08 16:01:04 2023 +0200"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Wed Aug 23 08:59:12 2023 +0000"
      },
      "message": "metropolis/resolver: more logging\n\nThis should let us figure out HA connectivity issues better in the\nfuture. We were mostly missing logging connection attempts to control\nplane nodes and leader information received from them.\n\nChange-Id: I88f3e4b289561e7b31fcbb59d26b674d8b6aea39\nReviewed-on: https://review.monogon.dev/c/monogon/+/2067\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "67023fe466d35df7ff7e606e74f3bcf51ac8085c",
      "tree": "fb5fd15306831b95c84c69d60ce32c2a623c17cf",
      "parents": [
        "c38aca282657ac1ed2fba5dd79477ffe945b5bf6"
      ],
      "author": {
        "name": "Leopold Schabel",
        "email": "leo@monogon.tech",
        "time": "Mon Aug 14 12:36:35 2023 +0000"
      },
      "committer": {
        "name": "Leopold Schabel",
        "email": "leo@monogon.tech",
        "time": "Tue Aug 15 17:10:59 2023 +0000"
      },
      "message": "Improve Nix instructions in README\n\nChange-Id: I758f9f84f449e2ea3f8cd8c28b3dbcce72584496\nReviewed-on: https://review.monogon.dev/c/monogon/+/2083\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "c38aca282657ac1ed2fba5dd79477ffe945b5bf6",
      "tree": "6af66e1a59839382a906114a088f0b01f676e82f",
      "parents": [
        "14bd519e1a084a4d490f8da8a212ce37ee7d9936"
      ],
      "author": {
        "name": "Leopold Schabel",
        "email": "leo@monogon.tech",
        "time": "Mon Aug 14 12:22:13 2023 +0000"
      },
      "committer": {
        "name": "Leopold Schabel",
        "email": "leo@monogon.tech",
        "time": "Tue Aug 15 17:10:41 2023 +0000"
      },
      "message": "shell.nix: add buildifier\n\nIntellij auto-formats BUILD files when buildifier is present.\n\nChange-Id: I07d650ae879e4f7e168cfed698c68ec6df3ef3ae\nReviewed-on: https://review.monogon.dev/c/monogon/+/2082\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "14bd519e1a084a4d490f8da8a212ce37ee7d9936",
      "tree": "33241e0942f75e07f6cea3e99afd8cba93876894",
      "parents": [
        "eb79bfa9bae59540920d1a990a61b204bd9977d8"
      ],
      "author": {
        "name": "Leopold Schabel",
        "email": "leo@monogon.tech",
        "time": "Mon Aug 14 12:19:01 2023 +0000"
      },
      "committer": {
        "name": "Leopold Schabel",
        "email": "leo@monogon.tech",
        "time": "Tue Aug 15 17:10:41 2023 +0000"
      },
      "message": "shell.nix: change prompt color to magenta\n\n\"Light gray\" underperforms in light themes.\n\nChange-Id: I03296f04593975cf912da83f3cc5192c7ccb048a\nReviewed-on: https://review.monogon.dev/c/monogon/+/2081\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "eb79bfa9bae59540920d1a990a61b204bd9977d8",
      "tree": "7c49253bb6108b72be0fe4fbebe9cf32d85c6313",
      "parents": [
        "1e963fe8bdf4eb368b66717bafd640c7f17528d6"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Aug 09 21:09:08 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Aug 09 21:01:36 2023 +0000"
      },
      "message": "t/linux-firmware: update to master\n\nContains new AMD microcode with mitigations for\nInception (CVE-2023-20569) and Phantom (CVE-2022-23825).\n\nChange-Id: If6e26b9f1a96bf6e50c3c9f74bb60ad41c4d441f\nReviewed-on: https://review.monogon.dev/c/monogon/+/2049\nTested-by: Jenkins CI\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    },
    {
      "commit": "1e963fe8bdf4eb368b66717bafd640c7f17528d6",
      "tree": "e6f40f9ee469f824bd3f9bfceae3c6074f95990b",
      "parents": [
        "6eb3fb31f0d1385e96652b6bee043bd9c5f6a577"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Aug 09 18:24:02 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Aug 09 21:01:36 2023 +0000"
      },
      "message": "t/linux: update to 5.15.125\n\nThis kernel contains additional handling and workarounds for Gather Data\nSampling aka Downfall (CVE-2022-40982) on Intel CPUs,\nInception (CVE-2023-20569) and Phantom (CVE-2022-23825) on AMD CPUs.\n\nPerformant workarounds for these issues also requires updated microcode\nfor both CPU vendors. Microcode for Intel has already been updated,\nAMD\u0027s is not merged in linux-firmware yet.\n\nChange-Id: I441c8c7b39a8eec0c42d1aac0375d0d15ec1703d\nReviewed-on: https://review.monogon.dev/c/monogon/+/2048\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "6eb3fb31f0d1385e96652b6bee043bd9c5f6a577",
      "tree": "33e2e6e6e17ae40519909d0927ce33bb9b0cf2c7",
      "parents": [
        "c7108352bd9e03780e6f8836be6c5fffaa0f6501"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Aug 09 17:19:24 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Aug 09 21:01:28 2023 +0000"
      },
      "message": "m/n/core: pipe kernel logs into logtree\n\nCurrently the kernel log is only available on the local console\n(serial/screen) and only if they are high-severity entries.\nThis log should be inspectable and collectable together with the\nother Metropolis logs, thus pipe it into logtree under the root.kernel\nnode..\n\nChange-Id: If5006db251eb8662ae9939a56e23bbb895304690\nReviewed-on: https://review.monogon.dev/c/monogon/+/2045\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "c7108352bd9e03780e6f8836be6c5fffaa0f6501",
      "tree": "fa6b87a5cd44288921d18a3f4476c99717da318f",
      "parents": [
        "efa381fa9e8a3850ca1332ce617778d330d5e3ba"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Aug 09 17:09:40 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Aug 09 18:46:57 2023 +0000"
      },
      "message": "m/p/logtree: add kmsg pipe\n\nThis allows ingesting Linux kernel (kmsg) logs into logtree with\nthe original metadata (timestamp, severity) preserved.\n\nChange-Id: Ibb6e3a7a0ae4a008b8e9c98beccb3a95c067cb75\nReviewed-on: https://review.monogon.dev/c/monogon/+/2044\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "efa381fa9e8a3850ca1332ce617778d330d5e3ba",
      "tree": "6fd0db26eab500ba19d7dd6c92b3f9b2cffb6646",
      "parents": [
        "431acaa53ad0914eaf8bc89366b693640acbde13"
      ],
      "author": {
        "name": "Leopold Schabel",
        "email": "leo@monogon.tech",
        "time": "Wed Aug 09 17:43:06 2023 +0200"
      },
      "committer": {
        "name": "Leopold Schabel",
        "email": "leo@monogon.tech",
        "time": "Wed Aug 09 18:11:25 2023 +0000"
      },
      "message": "Set flaky flag on all known flakes\n\nBazel will retry tests marked as flaky up to three times. This has\nthe obvious downside of making the flakes less visible, but popping\nup as unrelated build failures is not the best way to surface them.\n\nChange-Id: I0c97450b17f2e8a56275d3b738e7d34b89be44f6\nReviewed-on: https://review.monogon.dev/c/monogon/+/2047\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "431acaa53ad0914eaf8bc89366b693640acbde13",
      "tree": "5c6fedd3d4cd204c4b99b42afbc5eba83a167341",
      "parents": [
        "009b12662712fd70670c0dc6015e1a135d4a3cd0"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Aug 09 14:29:24 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Aug 09 16:10:05 2023 +0000"
      },
      "message": "m/n/c/consensus: fix flaky TestEtcdMetrics\n\nThe metrics endpoint comes up before the bootstrap process is complete.\nThe test context then gets cancelled as the test has succeeded,\nbut the consensus runnable is not done bootstrapping, causing it to\nreturn an error and TestHarness to\nfail the test.\n\nFix this by waiting for the etcd state to be populated, indicating that\nthe bootstrap machinery has done its job.\n\nFixes https://github.com/monogon-dev/monogon/issues/258\n\nChange-Id: Ied270191aaebb226822a1c9d7f8c6312bd0da1ed\nReviewed-on: https://review.monogon.dev/c/monogon/+/2043\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "009b12662712fd70670c0dc6015e1a135d4a3cd0",
      "tree": "d3e164ef5b094489c04939cd4bab8dbf907cb3b1",
      "parents": [
        "8055d23f3116a9695367ee09155ef9e0a4059f90"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Aug 09 13:40:11 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Aug 09 13:43:55 2023 +0000"
      },
      "message": "third_party/intel_ucode: update to 20230808\n\nThis fixes the Intel Gather Data Sampling aka Downfall (CVE-2022-40982)\nmicroarchitectural data disclosure vulnerability.\n\nChange-Id: Ib185e8763f15e2af9fca2b89671825e5e87480fa\nReviewed-on: https://review.monogon.dev/c/monogon/+/2042\nTested-by: Jenkins CI\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    },
    {
      "commit": "8055d23f3116a9695367ee09155ef9e0a4059f90",
      "tree": "17a093240dca129cec9aba29edcf777ff56c9f23",
      "parents": [
        "0e74961fc03de5a439484ea5ec33e0fc52a22edd"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Aug 08 23:56:07 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Aug 08 22:07:41 2023 +0000"
      },
      "message": "third_party/linux: enable VLAN interface support\n\nThis is configurable through the Metropolis static network\nconfiguration and thus needs to be enabled.\n\nChange-Id: Id479e0d26a93819de0e315c8c470e94386f0351f\nReviewed-on: https://review.monogon.dev/c/monogon/+/2041\nTested-by: Jenkins CI\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    },
    {
      "commit": "0e74961fc03de5a439484ea5ec33e0fc52a22edd",
      "tree": "79097191057579098832aaafe30fceb2572a3bdc",
      "parents": [
        "9563673b5913420e143518b53d3134d4f29b404b"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Aug 07 17:42:59 2023 +0000"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Aug 08 12:06:53 2023 +0000"
      },
      "message": "cloud/bmaas/bmdb: Filter for machines based on provider\n\nCurrently the equinix shepherd tries to initialize our nodes from lumen,\nwhich of course is not correct. This change adds another parameter to\nthe queries and prevents that.\n\nChange-Id: Ib3f65e68403cb1b1282b80c1d494fb030a6d17b1\nReviewed-on: https://review.monogon.dev/c/monogon/+/2039\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "9563673b5913420e143518b53d3134d4f29b404b",
      "tree": "f41aee88ab9e63b2a8f38203d3aa9a169663edc7",
      "parents": [
        "32c5fb80970db711fc2f81ceef2b07c29b409e5b"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Aug 07 16:59:40 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Aug 07 17:54:59 2023 +0000"
      },
      "message": "m/n/c/update: work with invalid boot entries\n\nCurrently if any boot entry is unreadable or unparseable, we refuse to\nperform any updates. This is not desirable as any edge cases in our\nparser or the EFI firmware cause the update mechanism to be\nnon-functional, even preventing us from shipping an update to fix the\nissue. It makes more sense to just log occurrences where such an entry\ncould not be read/parsed.\n\nChange-Id: I8a1161bf35a4c8deb1d82156662b512bcc43ed59\nReviewed-on: https://review.monogon.dev/c/monogon/+/2038\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "32c5fb80970db711fc2f81ceef2b07c29b409e5b",
      "tree": "45b735a5f41722d0cc5fc6886e894d498830a132",
      "parents": [
        "f025d1b20232385fa09459794dda9f9df0f5295a"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Aug 03 17:37:56 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Aug 07 17:54:59 2023 +0000"
      },
      "message": "m/n/c/update: fix matching boot entries\n\nThe matching code accidentally worked as long as there was only one boot\nentry for each loader path (boot-a.efi/boot-b.efi) as it type-asserted\na pointer which caused ok to always be false and thus all entries passed\nthrough the UUID check.\n\nThis fixes the type assertion and following logic.\n\nChange-Id: I83fdd2204028633dc274055f7d1ecb458747174e\nReviewed-on: https://review.monogon.dev/c/monogon/+/2031\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "f025d1b20232385fa09459794dda9f9df0f5295a",
      "tree": "e19ea5d8e3af4e2314b42602e60305db5d376051",
      "parents": [
        "3b25cf7c486781e018795066c3337e73ac7e526b"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Aug 07 14:52:49 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Aug 07 13:28:39 2023 +0000"
      },
      "message": "m/p/efivarfs: allow multiple paths in LoadOption\n\nThe FilePathList in an EFI LOAD_OPTION technically allows multiple\ndevice paths separated by end of path markers. These additional paths\nbeyond the first one do not have any standardized function, but some\nEFI vendors use them to store data. Currently we fail to parse them\nbecause they contain more than one end of path marker. Fix this by\nadding an ExtraPaths field to LoadOption and implementing marshalling/\nunmarshalling for it. I chose to use a separate field in the Go\nstruct because these additional paths do not have the same functionality\nas the first one (they are not bootable).\n\nChange-Id: I96df17915966a973a7553fe9864a0b3e6f6b61e8\nReviewed-on: https://review.monogon.dev/c/monogon/+/2037\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "3b25cf7c486781e018795066c3337e73ac7e526b",
      "tree": "82e9b47b2ffb0614f811b57eb000c249942686d7",
      "parents": [
        "45d6f1821bf047dbe2a71b8d21401dfb60583285"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Jul 17 16:58:10 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Aug 07 13:27:50 2023 +0000"
      },
      "message": "metropolis/cli/metroctl: add update command\n\nChange-Id: Iab7f930923f8009e0e14f96fc64d336614b1251e\nReviewed-on: https://review.monogon.dev/c/monogon/+/1937\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "45d6f1821bf047dbe2a71b8d21401dfb60583285",
      "tree": "196dd81b11f57f665327e5e53f59a726c0488513",
      "parents": [
        "b80b8449f4a62c797dd397d08fc0caf70776e5c0"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Aug 07 13:19:41 2023 +0000"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Aug 07 13:27:46 2023 +0000"
      },
      "message": "metropolis/node/core/mgmt: add logging for update activation method\n\nChange-Id: Ief4ef6447ac132755df35c5742dedc5d15d71d74\nReviewed-on: https://review.monogon.dev/c/monogon/+/2029\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "b80b8449f4a62c797dd397d08fc0caf70776e5c0",
      "tree": "be4ca586c31d9abd9152a16d69c1839c28cf1070",
      "parents": [
        "a4b88849c4691a1674d4427ee73a79ae8ea76460"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Aug 03 17:40:17 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Aug 07 13:04:06 2023 +0000"
      },
      "message": "m/n/c/mgmt: unmount ESP before restarting\n\nThis provides additional reliability for the FAT32 ESP partition.\nNothing should keep persistent handles for files on the ESP. Ignore\nerrors in case anything does.\n\nChange-Id: I04bfbb82fddfc740c5c234c028de89539e91a696\nReviewed-on: https://review.monogon.dev/c/monogon/+/2032\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "a4b88849c4691a1674d4427ee73a79ae8ea76460",
      "tree": "c7e187fc439da01546cf701d5501dab799a91ee9",
      "parents": [
        "d14be0eb8bcffb6ba597f26e3ad57b311ca376fc"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Aug 03 17:34:56 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Aug 07 11:37:10 2023 +0000"
      },
      "message": "m/n/c/localstorage: fix logic error determining ESP\n\nThe OS integration of the A/B update engine has a logic error which\ncaused it to provide all partitions as ESP, of which the last one\n(the data partition) stuck.\n\nChange-Id: Ia721f9f515ca65f710f07ba25b3be68544158a7c\nReviewed-on: https://review.monogon.dev/c/monogon/+/2030\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "d14be0eb8bcffb6ba597f26e3ad57b311ca376fc",
      "tree": "3a1286f0eb3623db53c4cb2c880eb5a1059ae1f0",
      "parents": [
        "c07d74efd282261c68d33d745d52a6703448c8fd"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Jul 31 16:46:14 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Aug 07 11:37:10 2023 +0000"
      },
      "message": "m/n/c/update: implement kexec-based activation\n\nAs we\u0027ve had some issues with EFI-based slot activation and enterprise\nserver firmware is extremely slow, this implements kexec-based\nactivation. This just kexecs into the freshly-installed slot instead of\nrebooting. It still updates the BootOrder on successful boot to allow\ncold-boots if the server crashes or loses power, but no longer uses the\nNextBoot mechanism to boot into the new slot once (this is taken care of\nby kexec).\n\nChange-Id: I6092c47d988634ba39fb6bdd7fd7ccd41ceb02ef\nReviewed-on: https://review.monogon.dev/c/monogon/+/2021\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "c07d74efd282261c68d33d745d52a6703448c8fd",
      "tree": "d02247ddbe08318edc5e1ea5eb17c23f0a2c3435",
      "parents": [
        "cf7bd147a0e8b61133472471eb7193566d8b1a4e"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Aug 03 17:41:23 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Aug 03 16:55:34 2023 +0000"
      },
      "message": "m/i/t: replace loglevel\u003d0 with quiet\n\nWe should really not be using loglevel\u003d0 in tests, it hides even\ncritical errors like panics.\n\nChange-Id: I6e8dc0f2352efe7f9328faeb0c5e736a75eacb0e\nReviewed-on: https://review.monogon.dev/c/monogon/+/2033\nTested-by: Jenkins CI\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    },
    {
      "commit": "cf7bd147a0e8b61133472471eb7193566d8b1a4e",
      "tree": "3521de5e73c456870dbbce86d907e3557593b452",
      "parents": [
        "d07489b551c242df6ed73d07d17b47feb3827b48"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Aug 03 15:20:09 2023 +0000"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Aug 03 15:42:45 2023 +0000"
      },
      "message": "metropolis/node: remove genrule image_gcp\n\nThis is currently very flaky and we dont use it anyway\n\nChange-Id: Idf91cdc3f45da11635a8ee78617d209665a5bbc7\nReviewed-on: https://review.monogon.dev/c/monogon/+/2028\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "d07489b551c242df6ed73d07d17b47feb3827b48",
      "tree": "2684f906758105cb9108c19069091a9d86ad7786",
      "parents": [
        "8e87a062badeb7f6b93c6486925aa99c616cd8a6"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Aug 03 13:09:02 2023 +0000"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Aug 03 15:33:41 2023 +0000"
      },
      "message": "metropolis/pkg/efivarfs: write variables with 0644 perms\n\nThe kernel creates all files with these permissions, so having different ones\nis useless.\n\nChange-Id: Iaafb6080de349f95e566bb2e4faf821864cf75e6\nReviewed-on: https://review.monogon.dev/c/monogon/+/2025\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "8e87a062badeb7f6b93c6486925aa99c616cd8a6",
      "tree": "73226d80fb80580c02c092d41aac59da1d94d1f9",
      "parents": [
        "3961acd37445d5139040b910e093e759828552ad"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Jul 31 01:33:10 2023 +0000"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Aug 03 15:33:25 2023 +0000"
      },
      "message": "metropolis/node/core/update: set partition start and size in efi\n\nChange-Id: I1dc6b6738a375c6fc581d51494d13fbeda7b724d\nReviewed-on: https://review.monogon.dev/c/monogon/+/2026\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "3961acd37445d5139040b910e093e759828552ad",
      "tree": "3ed82aa3adca72268431acd88135e2afa2397468",
      "parents": [
        "a622379880cd043e0a12ab25129801e2c63d82bb"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Aug 02 17:55:06 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Aug 02 16:33:55 2023 +0000"
      },
      "message": "m/p/gpt: fix protective MBR off-by-one\n\nSince the protective MBR partition starts at block 1 (the first is the\nthe protective MBR itself) that first block needs to be subtracted from\nits size.\n\nChange-Id: I99bbb449c27596efd2dd260ffb388a9a69a09589\nReviewed-on: https://review.monogon.dev/c/monogon/+/2024\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "a622379880cd043e0a12ab25129801e2c63d82bb",
      "tree": "2b624fc68521ec72a3d018b2b71cfe755939795a",
      "parents": [
        "0b84a9f5e2caef3f66e4d912b6ac18429dff2c2d"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Jul 31 17:13:11 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Aug 02 10:12:22 2023 +0000"
      },
      "message": "m/n/c/consensus: fix format directive error\n\nThat %w points to err which is not actually populated in this code path.\n\nChange-Id: I025eafbd4733cb584c67af2479992c9368d414e9\nReviewed-on: https://review.monogon.dev/c/monogon/+/2022\nTested-by: Jenkins CI\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    },
    {
      "commit": "0b84a9f5e2caef3f66e4d912b6ac18429dff2c2d",
      "tree": "e44c00c20213a01877783405929f27edc3357d79",
      "parents": [
        "35fcf0397be02883ace364e650b3e8d9a2281e24"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Jul 27 14:20:31 2023 +0000"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Aug 01 13:30:41 2023 +0000"
      },
      "message": "metropolis/node: show build commit on startup\n\nPreviously it was not possible to identify the running version,\nwith this change the build commit and tree state gets stamped into the binary\nand printed on boot.\n\nChange-Id: I3916e3d40dc87f28a58eb74c6450218550fb3214\nReviewed-on: https://review.monogon.dev/c/monogon/+/1978\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "35fcf0397be02883ace364e650b3e8d9a2281e24",
      "tree": "cb1297a2e4a34eeebb9faf09b44c3b95cf603f7f",
      "parents": [
        "ad131883747f73e51526dd6f163df23b913f69ed"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Jun 29 04:15:58 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Jul 27 13:58:35 2023 +0000"
      },
      "message": "metropolis: implement A/B updates\n\nThis implements an A/B update mechanism using two slots, A and B.\nThis is realized with two system partitions as well as two EFI\nloaders/kernels.\n\nThe A/B system relies on two EFI loader entries. This has the advantage\nthat there is no preloader required, which makes the system more\nreliable as well as avoiding the complexity of having an un-updatable\npreloader (CoreOS has this issue where their GRUB2 crashed booting newer\nkernels, sadly the issue seems lost with the migration to Fedora\nCoreOS). It also means that the operator can easily override the slot\nbeing booted via the boot loader entries. Primary disadvantage is that\nit relies on EFI working somewhat to spec.\n\nNew versions are booted into only once by setting NextBoot, if the\nbootup doesn\u0027t succeed, i.e. if the boot doesn\u0027t get to a cluster rejoin\nthe next boot will be the old slot. Once it gets to this stage the\npermanent BootOrder is changed.\n\nThe EFI loaders don\u0027t know if they are slot A or B because they are\nidentical and relying on OptionalData in the boot entry to indicate the\nslot means that if the EFI boot entries go away, recovering is very hard.\nThus the loaders look at their own file name to determine what slot they\nare in. If no slot could be determined, they default to booting slot A.\nIt is planned to eventually use Authenticode Stamping (passing data in\nfake certificates) to stamp the slot into the loader without affecting\nthe TPM hash logged.\n\nChange-Id: I40de2df8ff7ff660c17d2c97f3d9eb1bd4ddf5bc\nReviewed-on: https://review.monogon.dev/c/monogon/+/1874\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "ad131883747f73e51526dd6f163df23b913f69ed",
      "tree": "e5dee1d605cf4df4c507529185a82b49dbb841b3",
      "parents": [
        "cb9f3d3d495b12e26772271e368340a38244d586"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Jun 28 16:42:20 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Jul 27 13:58:35 2023 +0000"
      },
      "message": "treewide: port everything to blockdev\n\nThis gets rid of most ad-hoc block device code, using blockdev for\neverything. It also gets rid of diskfs for everything but tests. This\nenables Metropolis to be installed on non-512-byte block sizes.\n\nChange-Id: I644b5b68bb7bed8106585df3179674789031687a\nReviewed-on: https://review.monogon.dev/c/monogon/+/1873\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "cb9f3d3d495b12e26772271e368340a38244d586",
      "tree": "ba362d7665cf7c48f246b9040ce65a506ea5b93b",
      "parents": [
        "1e0e3a47f72a8fb251bec9a98cb3d6acffe79989"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Jul 27 15:21:49 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Jul 27 13:58:35 2023 +0000"
      },
      "message": "m/p/blockdev: add darwin implementation\n\nThis adds a minimal blockdev implementation for Darwin/macOS.\nProperly implementing Discard() is left for later as it would require\nextending x/sys/unix and it is allowed to just return ErrUnsupported\nfor all calls.\n\nChange-Id: I5f3c85935301857c1f25edd8b8f9acdbe4abf4ad\nReviewed-on: https://review.monogon.dev/c/monogon/+/1977\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "1e0e3a47f72a8fb251bec9a98cb3d6acffe79989",
      "tree": "64f18c66ac03870d1cbbae02b91e6f14a4ebc090",
      "parents": [
        "fd49f22e3a98d42ffe4d508a1e49ef2549fa8ecf"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Jun 28 16:40:18 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Jul 27 13:58:35 2023 +0000"
      },
      "message": "m/p/blockdev: init\n\nAdds blockdev, a package providing a Go interface for generic block\ndevices as well as an implementation of it for Linux and auxiliary\ntypes.\n\nThis will replace most ad-hoc block device handling in the monorepo.\n\nChange-Id: I3a4e3b7c31a8344f7859210bbb4942977d1ad1d2\nReviewed-on: https://review.monogon.dev/c/monogon/+/1871\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "fd49f22e3a98d42ffe4d508a1e49ef2549fa8ecf",
      "tree": "cbca6bd43f671088aaac950a996055d1a3536b09",
      "parents": [
        "4c6720da59d460d74487fb9bf42f42334cf191d3"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Jul 20 14:27:50 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Jul 26 16:49:54 2023 +0000"
      },
      "message": "metropolis/node/core/metrics: export (controller-manager|scheduler) metrics\n\nChange-Id: Ie61551655cbf1130bb5f5beb2923dac1aa52f868\nReviewed-on: https://review.monogon.dev/c/monogon/+/1952\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "4c6720da59d460d74487fb9bf42f42334cf191d3",
      "tree": "b10de2997c7c711bc579e7cb38c04ffa5d86cd0d",
      "parents": [
        "c37a886044f368ef7b0de61fc77daae8c52e74e8"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Jul 25 14:44:19 2023 +0000"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Jul 26 16:41:04 2023 +0000"
      },
      "message": "metropolis/node/core/metrics: migrate labels to sd-meta naming scheme\n\nChange-Id: Ie5ad32d5383abbe13ff9c347d47ecc10f090bccb\nReviewed-on: https://review.monogon.dev/c/monogon/+/1971\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    }
  ],
  "next": "c37a886044f368ef7b0de61fc77daae8c52e74e8"
}
