)]}'
{
  "commit": "3329d0714ac401a83f06ec34a7f84d1d9a7144fa",
  "tree": "0ee7adb7f80638840c83db4c59c13423d472cc9c",
  "parents": [
    "7fde1ef5c4aad0b0226773907a97372c37ebba95"
  ],
  "author": {
    "name": "Christina Quast",
    "email": "christina.quast@9elements.com",
    "time": "Mon Sep 14 21:17:48 2026 +0200"
  },
  "committer": {
    "name": "Anthony Rocha",
    "email": "116300062+rusty1968@users.noreply.github.com",
    "time": "Thu Sep 17 09:49:41 2026 -0700"
  },
  "message": "orchestrator: Add the TrialBoot capability trait\n\nActivating an update proposes a boot candidate and never commits it, whether\nthe eRoT actuates that itself through Updatable::activate or a PLDM firmware\ndevice does it on the eRoT\u0027s behalf. Updatable\u0027s docs already name TrialBoot\nas the gate that resolves the proposal; this is that trait: is_pending,\nconfirm, revert, no slot ids.\n\nOne contract covers both implementors. A passive downstream device is judged\nfrom outside over its boot-complete line; the eRoT\u0027s own image is judged by\nthe boot the trial started, so is_pending has to be answerable from durable\nstate alone. The arming applies to the next boot only, so an unresolved trial\nfalls back on its own, but the record stays pending until confirm or revert,\nwhich is how an orchestrator that rebooted mid-update finds it again.\n\nconfirm moves slot metadata only. Raising the anti-rollback floor is\nSvnFloor::advance and happens later, so revert always has a bootable image to\nfall back to.\n\nAssisted-by: Claude\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "29f69d1f0f3d846d4d02010d93ae65aa9856852a",
      "old_mode": 33188,
      "old_path": "services/orchestrator/capabilities/BUILD.bazel",
      "new_id": "cf554a67319051330f3d1da008f47321428bee7e",
      "new_mode": 33188,
      "new_path": "services/orchestrator/capabilities/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "a7a479f1e3f21c630dc2d08b9015db5bf24eab35",
      "old_mode": 33188,
      "old_path": "services/orchestrator/capabilities/src/lib.rs",
      "new_id": "2f2ab00905503a1c6e34881c4138278c922da9f5",
      "new_mode": 33188,
      "new_path": "services/orchestrator/capabilities/src/lib.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f1034c0ef6d6614fb8bb15d6608398c4e2f31b9b",
      "new_mode": 33188,
      "new_path": "services/orchestrator/capabilities/src/trial_boot.rs"
    }
  ]
}
