)]}'
{
  "log": [
    {
      "commit": "10ef8f93d9c3acc3307819b679578f50c6798559",
      "tree": "aa957dd6625fac3c0afc62f17b9d8332fd3473d0",
      "parents": [
        "1b1d95d14cb8727cd8c6a1b3efe88cef98b7bd0a"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Aug 13 15:35:10 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Aug 22 12:05:26 2024 +0000"
      },
      "message": "treewide: move //net to //osbase/net\n\nThe net package contains the utility to dump a network configuration in\nproto format. It should be in osbase.\n\nChange-Id: I4d25d9c7d600f4a04b9b79bd1ba98286bf9daec3\nReviewed-on: https://review.monogon.dev/c/monogon/+/3313\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "91bf1c89cbb61cf9f8183306196bfda97dd852a5",
      "tree": "6c2c49d69e6db68917f2170055ddae5496664093",
      "parents": [
        "a48bd3c3220063ed6beecf0b36ef6959f79f3790"
      ],
      "author": {
        "name": "Jan Schär",
        "email": "jan@monogon.tech",
        "time": "Mon Jul 29 17:31:33 2024 +0200"
      },
      "committer": {
        "name": "Jan Schär",
        "email": "jan@monogon.tech",
        "time": "Wed Aug 21 11:10:01 2024 +0000"
      },
      "message": "treewide: integrate new DNS server\n\nThis integrates the new DNS server into the network service, replacing \nCoreDNS.\n\nChange-Id: I1d2e0fd3315dc2c602a8f805ed701633799e9986\nReviewed-on: https://review.monogon.dev/c/monogon/+/3260\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "c2290c2e21ee5615d341d56799516829c2fea540",
      "tree": "fdbf849c7e459508b844c7aff2a33e79f4c1b12e",
      "parents": [
        "be0b4c9158371b29c21badc5702ee50ed8179935"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Aug 15 19:56:00 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Aug 20 13:03:42 2024 +0000"
      },
      "message": "treewide: move build helper to more fitting places\n\nChange-Id: I3d0cfe9283222d403ae369ec9db09201ad511e15\nReviewed-on: https://review.monogon.dev/c/monogon/+/3327\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "cc27faac73b1bff4b0d31ffacb0d938022db75ea",
      "tree": "d081a0655a5cebd62fc19e4ce9d67515e939e626",
      "parents": [
        "5748bd9df1a0c92c1fb04056a6c2d88809741026"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Aug 01 02:18:35 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Aug 13 14:39:14 2024 +0000"
      },
      "message": "m/n/b/mkimage/osimage: rename osimage.Create to osimage.Write\n\nWe aren\u0027t creating an osimage, we are writing it to a disk.\n\nChange-Id: If3769e18dbe988556b0c607ad82b734f21637836\nReviewed-on: https://review.monogon.dev/c/monogon/+/3294\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "82e6af71ad2b7927de8d754799271ee9f39506f9",
      "tree": "4da4ec95a6e4c5f58957c555d8646e46dbb25c6d",
      "parents": [
        "bceb1604c4d6ce1396c63083d2fd8aae98346cf3"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Jul 23 00:05:42 2024 +0000"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Aug 13 12:43:45 2024 +0000"
      },
      "message": "treewide: replace hardcoded runfiles paths\n\nWe hardcoded some of the runfiles paths to find specific files. This replaces the hardcoded paths by a call to rlocationpath. This prevents running a target without the correct dependencies at build time instead of at runtime\n\nChange-Id: I7ce56935ac80be6b28b824ccb0781ab401bd6521\nReviewed-on: https://review.monogon.dev/c/monogon/+/3301\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "3325b4b940370ad4282fdaa6027a5672ff8fdc2a",
      "tree": "7308d80e86a0d0ea34a5d2d5c8dac8cb2dd8efeb",
      "parents": [
        "41b244857ee793cbf74552ec39f2ff614a686a56"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Jul 15 19:19:49 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Jul 22 21:25:58 2024 +0000"
      },
      "message": "workspace: bump bazel_gazelle to v0.37.0\n\nChange-Id: I45a7769d80781075fdfb1c438240a75629dd572a\nReviewed-on: https://review.monogon.dev/c/monogon/+/3220\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "9f21f5396aa18bc9f2f83c867ff883f49bbf02ae",
      "tree": "c232f42c84bd6b7ace576261a188134cb0c69771",
      "parents": [
        "f430fbfe35b70283090b6174cf5a920163c0148c"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue May 07 15:14:20 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Jul 04 12:19:37 2024 +0000"
      },
      "message": "treewide: introduce osbase package and move things around\n\nAll except localregistry moved from metropolis/pkg to osbase,\nlocalregistry moved to metropolis/test as its only used there anyway.\n\nChange-Id: If1a4bf377364bef0ac23169e1b90379c71b06d72\nReviewed-on: https://review.monogon.dev/c/monogon/+/3079\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "327cdbaec24fe9eddf6cb7589acbe7e8612eb6a4",
      "tree": "c2f3a0ee4dec46da45708da7547b71e094cfb993",
      "parents": [
        "966f5eae18326ca6efd6ca9f90013ba8d2d25ac0"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue May 21 13:51:32 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu May 30 18:38:30 2024 +0000"
      },
      "message": "cloud: fix %v in cases where we should use %w\n\nChange-Id: I161fe87fbc2bf8c4c2c7756074fc1050f268121e\nReviewed-on: https://review.monogon.dev/c/monogon/+/3099\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "73e9882a907654dbecfb55ea0f30030e0fedbb1e",
      "tree": "b69ef493fcdf76614ed82d64f1a9ec8c79bb0375",
      "parents": [
        "07541ae311e9477cf1e5a20af82a81ee77840afe"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 18 23:13:49 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Apr 24 22:29:11 2024 +0000"
      },
      "message": "treewide: cleanup error string formatting\n\nChange-Id: I9012ba58dded916984468219b214200144a439b9\nReviewed-on: https://review.monogon.dev/c/monogon/+/3023\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nVouch-Run-CI: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "096654adb312a1bc858a0f886b8fba755eab52b4",
      "tree": "bb753ba3a24eab6a63b7f7c1757f35f0540b880a",
      "parents": [
        "a355821fa06a7f68ff8ddca6050f71e92e4939a5"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 18 23:10:19 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Apr 24 22:29:11 2024 +0000"
      },
      "message": "treewide: add missing error handling\n\nChange-Id: I55ccf3ff490b58f6af93e665c668428acddc8d65\nReviewed-on: https://review.monogon.dev/c/monogon/+/3019\nVouch-Run-CI: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "0cf8944e8539a575ce280d70d54bf4ecf16b8228",
      "tree": "31a87285fcdbc782a00a8378ae3208f701106c86",
      "parents": [
        "e1acfe37a1249543b9b3180d602db79539468696"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 18 23:05:03 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Apr 24 22:29:11 2024 +0000"
      },
      "message": "treewide: remove redundant returns\n\nChange-Id: I15f3f94273ffbb199dd47d7869de56196e1f4bd1\nReviewed-on: https://review.monogon.dev/c/monogon/+/3012\nVouch-Run-CI: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "5538121358e94f82dfe465ae318f7f52ec00c74a",
      "tree": "afae8687a7682f8287640de97ebaaae40beed646",
      "parents": [
        "6e5b8a5b7ad46cc519ba3ca6166cee160b536185"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Apr 17 02:42:31 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Wed Apr 24 14:22:13 2024 +0000"
      },
      "message": "cloud/agent: remove unnecessary convertions\n\nChange-Id: Ia67bbc3d80e499267a6c39211eea8c1b7c4da28a\nReviewed-on: https://review.monogon.dev/c/monogon/+/2998\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "6b20781437269c2d7a2497896bf396f9ecd3c184",
      "tree": "7cf726bde966a9e8945a82fc32619aa508708142",
      "parents": [
        "690511d310507c9435916256869b7a0ead6fa8cf"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Apr 22 19:13:15 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Apr 23 19:37:31 2024 +0000"
      },
      "message": "treewide: replace fmt.Errorf with fmt.Sprintf in panic calls\n\nSince we are inside a panic anyway, let\u0027s not use Errorf as we only need\na string.\n\nChange-Id: Id43e403124e0fa60e038397d3153f96181c916e2\nReviewed-on: https://review.monogon.dev/c/monogon/+/3034\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "13b83f704367d9dd32359ff29b51b90cfbc4b361",
      "tree": "9524284335194acc67f88368821a044e10e60c1f",
      "parents": [
        "ee8c81bebb610af692db594dfbb848c506a5fd6a"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 11 23:10:16 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Apr 23 12:07:38 2024 +0000"
      },
      "message": "metropolis/node/core: fix invalid write in console setup\n\nWhen configuring the console writers, we are iterating over a slice of\nconsole structs, this is fine by itself, but we are also storing a\nreference to the logtree reader. Since we are iterating over a struct\nvalue and aren\u0027t using a pointer, this write won\u0027t persist into the\nunderlying slice and we cannot close the reader anymore. By using a\npointer to a struct instead of the raw value the issue is fixed.\n\nChange-Id: Iaf753345cd275a03aecf9748b344c60eefcf9d69\nReviewed-on: https://review.monogon.dev/c/monogon/+/2973\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "5e460a92353ec619f4f12fffbe3281d40c85cf61",
      "tree": "193a72608c05ad45f3a60a4ac84a8f5d731d7f73",
      "parents": [
        "438ae2e52cb0aa8dea021419d921c687330e7d3b"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 11 01:33:09 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Apr 15 21:19:50 2024 +0000"
      },
      "message": "treewide: remove unnecessary types and conversions\n\nChange-Id: Ifcaa9ceeec243b3646c9b6e0a6fad7ef2db8fd90\nReviewed-on: https://review.monogon.dev/c/monogon/+/2954\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "65bf311fbf47fec70019477237f6411123ef5727",
      "tree": "daaa15a7c708f746e16301a2ea8e8175ebeff466",
      "parents": [
        "37cfcc109508d5370900228d5f20f2183ed2d65b"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Apr 08 21:32:14 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Apr 11 19:21:02 2024 +0000"
      },
      "message": "third_party: expose firmware and ucode targets\n\nThat way we don\u0027t have to redefine it with every target that does\nany kind of takeover.\n\nChange-Id: I816b42a87c755da7b42944b2768f71b53d8d77f3\nReviewed-on: https://review.monogon.dev/c/monogon/+/2929\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "0af4dab5326f7aa7cef1b8cc36e7324d784fc237",
      "tree": "49c976c5c6a9206b9806d5d0c8aa223d86ee1477",
      "parents": [
        "0ea961c0d2ba446b99852a8f32719c0dfab23b2e"
      ],
      "author": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Thu Apr 11 15:04:12 2024 +0200"
      },
      "committer": {
        "name": "Jan Schär",
        "email": "jan@jschaer.ch",
        "time": "Thu Apr 11 14:55:24 2024 +0000"
      },
      "message": "treewide: increase test timeouts\n\nThese tests often time out in CI.\n\nChange-Id: Ifd8e6be958923bdbb90faf1aa3627ee77a33267d\nReviewed-on: https://review.monogon.dev/c/monogon/+/2967\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nVouch-Run-CI: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "79ffbbe040d0db6c4ff6f8cdc84fe13d537e2bfe",
      "tree": "c187ae1162f232707d835fcf507e8b88c6f5d452",
      "parents": [
        "1dd0c6591533bf63389e81a2104bca3c8326e871"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Feb 22 19:15:51 2024 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Feb 27 15:41:41 2024 +0000"
      },
      "message": "cloud: move takeover to agent/takeover\n\nThe takeover package is tightly coupled with the agent, so lets move it\nthere.\n\nChange-Id: I38ae69d4f4e7a4f6a04b0fefb5f127ebc71f5961\nReviewed-on: https://review.monogon.dev/c/monogon/+/2790\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "2a1d1b2e90a44e140dd95a492de0c857287e071f",
      "tree": "392015b9ffa5f6f38da494c0a2fc519f16883113",
      "parents": [
        "5d556cae21803212ac72a3713ed449b412f777af"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Feb 06 07:07:42 2024 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Feb 12 14:11:04 2024 +0000"
      },
      "message": "treewide: replace datafile pkg with rules_go/runfiles pkg\n\nrules_go/runfiles provides the same functionality as our datafile\npackage. This change also contains some specifics for the now active\nbzlmod, which replaces all WORKSPACE related behaviour. As example the\nWORKSPACE name is now always set to _main.\n\n\nChange-Id: I1a69c72b479330a627b402135670f218c297906f\nReviewed-on: https://review.monogon.dev/c/monogon/+/2745\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "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": "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": "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": "9933ef0d18cf42a604fc7ed25cec3e05f8ab6368",
      "tree": "484c711598ccef01f2218564a79a8352c657958b",
      "parents": [
        "394b67e4208e1b2f06e61ab7e69ae58f444a56d8"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Jul 06 18:28:29 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Jul 20 11:48:17 2023 +0000"
      },
      "message": "m/p/efivarfs: BootOrder fixes\n\nThis doesn\u0027t need to be a pointer as it\u0027s a slice.\nThere was also a bug left in here because it previously skipped over\nthe attributes field which we now treat separately.\n\nChange-Id: Icc80496e9bc826ae11201f96a703fb80f97c478a\nReviewed-on: https://review.monogon.dev/c/monogon/+/1913\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "ca1cff0f214a1ed5ee967d421f5fe1fd5afa756d",
      "tree": "7ea16e63681ad4695f7d7cd1115c0168fc553d4b",
      "parents": [
        "4599aa2dfa42a7b694ad295bc700db03de96d7f5"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Jun 26 17:52:44 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Jun 29 10:41:38 2023 +0000"
      },
      "message": "m/p/efivarfs: refactor\n\nThis accomplishes three things:\n\nFirst, split out the variable access layer from the rest of the code.\nThis cleans up the attribute handling, which is now done centrally as\nwell as making the high-level functions very short and clean. They now\nalso return better errors.\n\nSecond this introduces proper types for LoadOption, which can now also\nbe unmarshaled which was a requirement for A/B updates. This required\nimplementation of EFI\u0027s DevicePath structure.\nWhile refactoring the higher-level functions for this, this also\nfixes a bug where the variable index (the 4 hex nibbles at the end) were\nimproperly generated as lowercase hex.\n\nThird, this adds new high-level functions for interacting with more\nboot-related variables needed for the A/B effort.\n\nChange-Id: I53490fa4898a5e7a5498ecc05a9078bd2d66c26e\nReviewed-on: https://review.monogon.dev/c/monogon/+/1855\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "e1a4ac5eaec848a8b1d883c3963cfe399c71cb7d",
      "tree": "ef289013336335c69407d780bbccb614fb258282",
      "parents": [
        "7e1c489409345f7212efdfcdfb105a5bbfd365c2"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Jun 20 12:17:54 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Jun 20 12:33:09 2023 +0000"
      },
      "message": "cloud/agent: generate hwreport only if a first heartbeat was successful\n\nThis is mostly a hack but as we dont have a way (yet) to know when all devices\nare registered, we just wait until the first heartbeat was sent and only after\nthat sent a hwreport. This should at least make sure that all important network\ninterfaces are registered.\n\nChange-Id: Icdfc43c212470dcc37a2f916524b5f29ee42ae42\nReviewed-on: https://review.monogon.dev/c/monogon/+/1823\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "6c45434189e387b234109b68b1ed5a8f2cd5b439",
      "tree": "4cff8bb2fac00df28699559256ce7649b38877e1",
      "parents": [
        "46bf7d6c6437dfbf9dcc1e1d7d80fcc1c601f9b5"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Jun 01 12:23:38 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Jun 13 13:44:46 2023 +0000"
      },
      "message": "m/node: build Linux with modules\n\nThis introduces modules into our Linux build. I originally didn\u0027t want\nto do this, this is why this wasn\u0027t done until now. But various things\nin the kernel weren\u0027t set up for this, for example the AMD and Intel KVM\nmodules cannot both be loaded, only the first one loaded works. Also,\nthe Linux kernel cannot load firmware for built-in modules reliably as\nthe filesystem it tries to load it from is not always mounted first,\neven if the kernel itself mounts it.\n\nThe firmware issue was brought up multiple times on LKML, but Linus is\nof the opinion that the firmware should be next to the kernel module,\nthus either built-in (not viable for licensing and size reasons) or the\nmodules need to be loadable and on the same filesystem as the firmware.\n\nThus unless we want to carry signifcant patches against the Kernel in a\ndeadlock-prone area, we are forced to adopt a design with loadable\nmodules (or ship everything twice in an initramfs which is also not\ndesirable).\n\nThe kernel config currently only has the modules as non-builtin which\nrequire firmware, everything else has been left as-is. For boot-time\nperformance it would eventually be a good idea to move to a setup with\nmore modules once we\u0027re confident in the implementation and everything\ncan deal with late-loaded modules/devices.\n\nAs a drive-by fix this also moves the kernel builds to out-of-tree so\nthat we no longer pollute the source folder. Bazel protected us from\nserious issues due to this, but it\u0027s still bad practice.\n\nChange-Id: Iced8e12234565e5b7447e732716651e05e67d55b\nReviewed-on: https://review.monogon.dev/c/monogon/+/1791\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "fac487481bf56e9510ff9a528c6729b2427d42b1",
      "tree": "57134f773547af8a674215aee45dc53827373cd6",
      "parents": [
        "0b63df4c126e0ded722826b1cb612bad71822165"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Mon Apr 24 19:04:55 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Apr 25 10:58:55 2023 +0000"
      },
      "message": "cloud/agent: default to detected NetworkConfig installing OS\n\nThe agent should pick the detected NetworkConfig if the OSInstallRequest\ndoes not contain a NetworkConfig\n\nChange-Id: I27f75735907b7c993dcd7002a863cd8fe00699fa\nReviewed-on: https://review.monogon.dev/c/monogon/+/1602\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "00343808fb93a070f99c259e4ad9b7294e22e767",
      "tree": "8bbf40ac7ef5b2a580ae84e613fc5e2e0df26782",
      "parents": [
        "333cb8bd69852ebb2010fc821e525345f0e6a8a9"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Apr 20 17:04:32 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Fri Apr 21 10:21:02 2023 +0000"
      },
      "message": "c/agent: add timeout to Heartbeat RPCs\n\ngRPC recommends adding a deadline or timeout to all RPCs, let\u0027s also do\nthat here to avoid a single RPC from taking too long and causing the\nagent to be restarted because it missed a heartbeat.\n\nChange-Id: I99b413ce09fbfba93f1fc49fc5ca2da440f0d30e\nReviewed-on: https://review.monogon.dev/c/monogon/+/1590\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n"
    },
    {
      "commit": "1cd2696d61071b072a24dbe127d9d95874377d66",
      "tree": "fd9103766990c64daecec87fc9625bc267ba1cc5",
      "parents": [
        "3ea40da4d6642593f7535dc71084b3367c6eb35e"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Apr 19 16:10:17 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Apr 19 18:24:40 2023 +0000"
      },
      "message": "c/agent: include EFI support in hardware report\n\nAdds firmware EFI support status to the hardware report.\nIt is represented as an enum which is populated based on two different\ndata sources. The ENABLED state is set if Linux has EFI runtime\nservices available. The SUPPORTED/UNSUPPORTED states depend on the\nSMBIOS tables provided by the firmware\nand are used if EFI runtime services are not available.\nIf neither are available, UNKNOWN is used.\n\nChange-Id: I7642ccda14d5494294a7463755de18e73a8a9c53\nReviewed-on: https://review.monogon.dev/c/monogon/+/1571\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "b44a5076cec5a8863ae9ff26fd641d6b62911aac",
      "tree": "97a2bde34377aa03feb368567ab851c19bda4ac3",
      "parents": [
        "ae7e3ed68433bc63fa038b8aa6499dff7ee12378"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Apr 18 13:14:33 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Apr 18 12:04:59 2023 +0000"
      },
      "message": "c/agent: do not stop retrying heartbeats\n\nThere is nothing better to do other than infinitely retrying.\n\nChange-Id: Ifda7e8d95120801f95f6fcf71124597cff086625\nReviewed-on: https://review.monogon.dev/c/monogon/+/1558\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "5d503b38fce16535f898b070e3ae7624e75d9bba",
      "tree": "212235a4876ae0cf148370f9fae44bf422df632a",
      "parents": [
        "d67eb4f7d6eff30320eac3fc564af2dbaff06a82"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Apr 11 13:20:23 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Apr 12 12:59:55 2023 +0000"
      },
      "message": "c/agent: log to extra kernel consoles\n\nCurrently the list of consoles to which logtree output is piped is\nhardcoded to be tty0 (the first virtual console) as well as ttyS0\n(the first platform serial port). On some platforms this is\ninsufficient, so also log to any kernel consoles defined.\n\nThe same problem exists for Metropolis itself, but there we first need a\nmechanism to pass a per-machine command line as for safety reasons it\u0027s\ncurrently hardcoded in the stub loader.\n\nChange-Id: I918525ed69a87323cbea561f3500b2166c842aae\nReviewed-on: https://review.monogon.dev/c/monogon/+/1511\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "aadeb798a1f92b3d69ec7d6cde1b4567c2140452",
      "tree": "6278ec3b6a732f2d27e7948bcba8e7a579d0e5b1",
      "parents": [
        "4bbd8b34a5e81a28219ae95bedf7915568557800"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Mar 27 15:53:56 2023 +0200"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Apr 06 14:26:33 2023 +0000"
      },
      "message": "c/agent: implement\n\nImplement the currently-required agent functionality, i.e. running with\nboth autoconfigured as well as static network configuration, interacting\nwith the BMaaS API and installing Monogon OS.\n\nThe early-stage setup is similar to Monogon OS itself, but after setting\nup the root supervisor this instead calls into the agent runnable which\nthen performs the rest of the work.\nIn the process I made both logtree as well as supervisor public as they\nare very generic and I see no reason to keep them scoped so tightly.\nMaybe we should move them to go/ at some point.\n\nThis currently calls into osimage without the optimization the\nregular installer performs, this is intentional as I have code which\nwill replace osimage with a high-performance version, obviating the\nneed to manually make this fast here.\n\nThis also comes with an end-to-end test\nwhich exercises the whole flow, installing TestOS and checking if it\nlaunches.\n\nChange-Id: Iab3f89598a30072ea565ec2db3b198c8df7999ef\nReviewed-on: https://review.monogon.dev/c/monogon/+/1405\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "5b8b86069584664f8be69467290d7cae7d000b8d",
      "tree": "9eae59a652bcafb11e017a61db58e41c67f42977",
      "parents": [
        "2d284b5718ad0948e7ef5afc5905f36701f4a3ab"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Mar 09 17:22:21 2023 +0100"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Mar 09 20:09:06 2023 +0000"
      },
      "message": "cloud: use machine_id for all agent communication\n\nThe original proto used provider-scoped provider_ids, these are being\nreplaced by  a single machine_id, assigned by the BMaaS service.\nIts API works in terms of machine_id, not provider_id (see\nAgentHeartbeatRequest), so this needs to be changed.\n\nChange-Id: If13942d02a8ac0e2901c549a92a67b6b10a1e196\nReviewed-on: https://review.monogon.dev/c/monogon/+/1263\nTested-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    },
    {
      "commit": "6da0f614b42ce9e82edba885222fc5ed59eb4338",
      "tree": "e87a769409b72366d51122e24f9f4ffd5f21324d",
      "parents": [
        "595dfe95bd3dd0d4e7eb81b3d9552fc981073fc2"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Feb 21 20:44:28 2023 +0100"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Mar 09 20:09:06 2023 +0000"
      },
      "message": "c/agent: add initramfs build\n\nThe agent will be used directly on top of a Monogon kernel as an\ninitamfs. Add build rules for generating said initramfs.\n\nChange-Id: I960fb3d82d4a7f227db48ca0714c48c63958d31f\nReviewed-on: https://review.monogon.dev/c/monogon/+/1142\nTested-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "595dfe95bd3dd0d4e7eb81b3d9552fc981073fc2",
      "tree": "981234291526796596d324c3abf0eece634d3940",
      "parents": [
        "8733950f8ee7a47141c92b5ad82e2fe87471a7a2"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Feb 21 19:13:02 2023 +0100"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Mar 09 20:09:06 2023 +0000"
      },
      "message": "c/a/api: reorganize and add AgentInit\n\nMove hardware reporting-related data into a separate file for better\norganization.\n\nAlso add an AgentInit message which will be used to pass data to the\nAgent.\n\nChange-Id: I1eecbd5a78da03170651f76f9f24e134dddaca4f\nReviewed-on: https://review.monogon.dev/c/monogon/+/1140\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    },
    {
      "commit": "52c261e956bc48b538f15b64d89a39f5f567ceaa",
      "tree": "def8c9282d45ee2b59554cb8f0ab6a1f40d989d4",
      "parents": [
        "506b88652ae57ca4f85a51b9f51641bb50d875af"
      ],
      "author": {
        "name": "Leopold",
        "email": "leo@monogon.tech",
        "time": "Tue Jan 31 18:13:51 2023 +0100"
      },
      "committer": {
        "name": "Leopold Schabel",
        "email": "leo@monogon.tech",
        "time": "Tue Jan 31 17:56:09 2023 +0000"
      },
      "message": "cloud/agent/api: add missing placeholder\n\nChange-Id: Ia21dc413264d1b4d772869d6db1aff25e2a8e586\nReviewed-on: https://review.monogon.dev/c/monogon/+/1106\nTested-by: Jenkins CI\nReviewed-by: Mateusz Zalega \u003cmateusz@monogon.tech\u003e\n"
    },
    {
      "commit": "6294854ace5e06e3b731878544eb39f5351de66d",
      "tree": "1281485cc669a4d77f9bc87684fb5539d0595e8a",
      "parents": [
        "7eeec65b849695e7bb1be072e6911694b8a02f54"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Jan 10 13:28:44 2023 +0000"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@monogon.tech",
        "time": "Tue Jan 24 13:39:54 2023 +0000"
      },
      "message": "c/agent: add hardware report\n\nThis adds an agent which currently just gathers hardware information and\ndumps it to stdout.\n\nChange-Id: Idb8518d3e40096dd3dd881808bc6ac98082083a0\nReviewed-on: https://review.monogon.dev/c/monogon/+/1067\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "94695969085cb2df182f58ee06443c5d7cf233ec",
      "tree": "76f807a250c74d4c47dd6a723b1e7b65e677e2f1",
      "parents": [
        "be6c3ad293eb15e49c859a28718b0643d2e4f507"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Jan 12 17:33:17 2023 +0000"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Jan 12 17:52:21 2023 +0000"
      },
      "message": "c/agent/api: add takeover API\n\nThis adds two messages to interact with the takeover process in an\nautomated way.\n\nChange-Id: I866d418ae18d86e0b8be40c73d49b86a3ddfe242\nReviewed-on: https://review.monogon.dev/c/monogon/+/1071\nReviewed-by: Mateusz Zalega \u003cmateusz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "189495ac490e93770a88affdce25b8f2087cb193",
      "tree": "63055d30158a084d6853ccd796316d1578b87024",
      "parents": [
        "4abeb13b0c1f26148daf14f430de17cd5eacf351"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Nov 08 12:59:36 2022 +0000"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Jan 03 18:16:07 2023 +0000"
      },
      "message": "c/a/a: add initial API for HW report\n\nThis adds an initial API for the hardware report to be implemented in\nthe agent.\n\nChange-Id: If9781169cd98c730a5f471e622b3511b46dd1e4f\nReviewed-on: https://review.monogon.dev/c/monogon/+/964\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    }
  ]
}
