{
  "contractVersion": 1,
  "referenceTime": "2030-01-01T00:00:00Z",
  "repositoryId": "4079dbfceb2ea2ec4cc250bae0850b588674736e02039eb042c66ff2d68c81f3",
  "mirrors": [
    "https://primary.example.invalid/morphir-tools/",
    "https://mirror.example.invalid/morphir-tools/"
  ],
  "trustedRoot": {
    "signatures": [
      {
        "keyid": "7ab6b86cb2c9684b0ddc10896153aa2595decf4d4327a5ff1a8ab7422c828b12",
        "sig": "8a2497077cd9ceace1bab4410b08d60f96e13335e03b26582396e0fb6842e442329283bf020db9c30889e289ac270dd0af5a2e9689115cc501e58480c2ae2e0f"
      },
      {
        "keyid": "c3f860ca5da4454d33496ca33bb48f0cdcd5b731be7316b67ca191db0185aa26",
        "sig": "448acdda3382ea274f735df0b76125290b1496756a51bdb0d21c6986e0ba6a7b76ddef1b0d36d22983d971c1f1537b2dd87fa9894e1feeb571f7643dc27f1a01"
      }
    ],
    "signed": {
      "_type": "root",
      "spec_version": "1.0.36",
      "version": 1,
      "expires": "2999-01-01T00:00:00Z",
      "consistent_snapshot": true,
      "keys": {
        "7ab6b86cb2c9684b0ddc10896153aa2595decf4d4327a5ff1a8ab7422c828b12": {
          "keytype": "ed25519",
          "scheme": "ed25519",
          "keyval": {
            "public": "8a88e3dd7409f195fd52db2d3cba5d72ca6709bf1d94121bf3748801b40f6f5c"
          }
        },
        "c3f860ca5da4454d33496ca33bb48f0cdcd5b731be7316b67ca191db0185aa26": {
          "keytype": "ed25519",
          "scheme": "ed25519",
          "keyval": {
            "public": "8139770ea87d175f56a35466c34c7ecccb8d8a91b4ee37a25df60f5b8fc9b394"
          }
        },
        "8bf5a507dc237a32c90c0a23b34bab6b386826145a5b726da75c91d466e4bf33": {
          "keytype": "ed25519",
          "scheme": "ed25519",
          "keyval": {
            "public": "ed4928c628d1c2c6eae90338905995612959273a5c63f93636c14614ac8737d1"
          }
        },
        "48fb161d03445e4d97155a96ee648f3af8dfe3ad562c76e582dd665b42eb913b": {
          "keytype": "ed25519",
          "scheme": "ed25519",
          "keyval": {
            "public": "66be7e332c7a453332bd9d0a7f7db055f5c5ef1a06ada66d98b39fb6810c473a"
          }
        },
        "fcc01ce3c4a0930ae0d007ff151a49f7a8a86409c23c937924ac53a8a1f9ac8b": {
          "keytype": "ed25519",
          "scheme": "ed25519",
          "keyval": {
            "public": "0b513ad9b4924015ca0902ed079044d3ac5dbec2306f06948c10da8eb6e39f2d"
          }
        },
        "33d640627f662f5d8685bd81f41b17429e8c75069ddae1d70f2d324bef86f608": {
          "keytype": "ed25519",
          "scheme": "ed25519",
          "keyval": {
            "public": "91a28a0b74381593a4d9469579208926afc8ad82c8839b7644359b9eba9a4b3a"
          }
        }
      },
      "roles": {
        "root": {
          "keyids": [
            "7ab6b86cb2c9684b0ddc10896153aa2595decf4d4327a5ff1a8ab7422c828b12",
            "c3f860ca5da4454d33496ca33bb48f0cdcd5b731be7316b67ca191db0185aa26",
            "8bf5a507dc237a32c90c0a23b34bab6b386826145a5b726da75c91d466e4bf33"
          ],
          "threshold": 2
        },
        "targets": {
          "keyids": [
            "48fb161d03445e4d97155a96ee648f3af8dfe3ad562c76e582dd665b42eb913b"
          ],
          "threshold": 1
        },
        "snapshot": {
          "keyids": [
            "fcc01ce3c4a0930ae0d007ff151a49f7a8a86409c23c937924ac53a8a1f9ac8b"
          ],
          "threshold": 1
        },
        "timestamp": {
          "keyids": [
            "33d640627f662f5d8685bd81f41b17429e8c75069ddae1d70f2d324bef86f608"
          ],
          "threshold": 1
        }
      }
    }
  },
  "rootUpdates": [
    {
      "signatures": [
        {
          "keyid": "7ab6b86cb2c9684b0ddc10896153aa2595decf4d4327a5ff1a8ab7422c828b12",
          "sig": "9bd078576ec3ff99ae84222ba81651f2b5186e574f8e1ff57d2504cb4b16a8a7f21b0a926a2991c190661de738e158cf8db6c72dc29fc089efe0419e95683609"
        },
        {
          "keyid": "c3f860ca5da4454d33496ca33bb48f0cdcd5b731be7316b67ca191db0185aa26",
          "sig": "56b64a83f52b94da69cb365b65550433586a146f3985358e0f22ce5295c8fb444832f73ffd969c3da67bb06c98f868c9ecb56c923bfa08e8459ecf8e35be3b0a"
        },
        {
          "keyid": "8bf5a507dc237a32c90c0a23b34bab6b386826145a5b726da75c91d466e4bf33",
          "sig": "2fdd020f8305bdf765d81b564d9817cbbc3e8280f039c62855619500fe1c0501e740809699f31e83ea06ce3259540412ad937ae39dccec387cd7d3adc7d59704"
        }
      ],
      "signed": {
        "_type": "root",
        "spec_version": "1.0.36",
        "version": 2,
        "expires": "2999-01-01T00:00:00Z",
        "consistent_snapshot": true,
        "keys": {
          "c3f860ca5da4454d33496ca33bb48f0cdcd5b731be7316b67ca191db0185aa26": {
            "keytype": "ed25519",
            "scheme": "ed25519",
            "keyval": {
              "public": "8139770ea87d175f56a35466c34c7ecccb8d8a91b4ee37a25df60f5b8fc9b394"
            }
          },
          "8bf5a507dc237a32c90c0a23b34bab6b386826145a5b726da75c91d466e4bf33": {
            "keytype": "ed25519",
            "scheme": "ed25519",
            "keyval": {
              "public": "ed4928c628d1c2c6eae90338905995612959273a5c63f93636c14614ac8737d1"
            }
          },
          "3336b222894653a1c328c2636b5ada9d8c2f53be3b927369d64e7087014bf619": {
            "keytype": "ed25519",
            "scheme": "ed25519",
            "keyval": {
              "public": "ca93ac1705187071d67b83c7ff0efe8108e8ec4530575d7726879333dbdabe7c"
            }
          },
          "48fb161d03445e4d97155a96ee648f3af8dfe3ad562c76e582dd665b42eb913b": {
            "keytype": "ed25519",
            "scheme": "ed25519",
            "keyval": {
              "public": "66be7e332c7a453332bd9d0a7f7db055f5c5ef1a06ada66d98b39fb6810c473a"
            }
          },
          "fcc01ce3c4a0930ae0d007ff151a49f7a8a86409c23c937924ac53a8a1f9ac8b": {
            "keytype": "ed25519",
            "scheme": "ed25519",
            "keyval": {
              "public": "0b513ad9b4924015ca0902ed079044d3ac5dbec2306f06948c10da8eb6e39f2d"
            }
          },
          "33d640627f662f5d8685bd81f41b17429e8c75069ddae1d70f2d324bef86f608": {
            "keytype": "ed25519",
            "scheme": "ed25519",
            "keyval": {
              "public": "91a28a0b74381593a4d9469579208926afc8ad82c8839b7644359b9eba9a4b3a"
            }
          }
        },
        "roles": {
          "root": {
            "keyids": [
              "c3f860ca5da4454d33496ca33bb48f0cdcd5b731be7316b67ca191db0185aa26",
              "8bf5a507dc237a32c90c0a23b34bab6b386826145a5b726da75c91d466e4bf33",
              "3336b222894653a1c328c2636b5ada9d8c2f53be3b927369d64e7087014bf619"
            ],
            "threshold": 2
          },
          "targets": {
            "keyids": [
              "48fb161d03445e4d97155a96ee648f3af8dfe3ad562c76e582dd665b42eb913b"
            ],
            "threshold": 1
          },
          "snapshot": {
            "keyids": [
              "fcc01ce3c4a0930ae0d007ff151a49f7a8a86409c23c937924ac53a8a1f9ac8b"
            ],
            "threshold": 1
          },
          "timestamp": {
            "keyids": [
              "33d640627f662f5d8685bd81f41b17429e8c75069ddae1d70f2d324bef86f608"
            ],
            "threshold": 1
          }
        }
      }
    }
  ],
  "metadata": {
    "timestamp": {
      "signatures": [
        {
          "keyid": "33d640627f662f5d8685bd81f41b17429e8c75069ddae1d70f2d324bef86f608",
          "sig": "8dadbc4d501a85583e06791ae962fe3115d85ef99936ca36fef3028a396c6d5d7a83a2ba3f03965fbb0b0182216e22dd61cc9d5635ecb5c079733113e0e32b08"
        }
      ],
      "signed": {
        "_type": "timestamp",
        "spec_version": "1.0.36",
        "version": 1,
        "expires": "2999-01-02T00:00:00Z",
        "meta": {
          "snapshot.json": {
            "version": 1,
            "length": 468,
            "hashes": {
              "sha256": "29864107e904bc6581f96219352443f7b2b6e861a9de5b7dd4c68559f5eb9bc0"
            }
          }
        }
      }
    },
    "snapshot": {
      "signatures": [
        {
          "keyid": "fcc01ce3c4a0930ae0d007ff151a49f7a8a86409c23c937924ac53a8a1f9ac8b",
          "sig": "353dcb0da4263f1e33c50f67d962244ab4824a6f519786cb1791b6c90cbbc0be71ae4d7361c67dbe37726667079ee95768ea6e0f3954b7c6a3a2dffad89ba40e"
        }
      ],
      "signed": {
        "_type": "snapshot",
        "spec_version": "1.0.36",
        "version": 1,
        "expires": "2999-01-08T00:00:00Z",
        "meta": {
          "targets.json": {
            "version": 1,
            "length": 2713,
            "hashes": {
              "sha256": "bb7afdf9109d4e7cc82c14a4f5b3196c0c4c3e2e0182bdf52beb8c8e3cbf77a5"
            }
          }
        }
      }
    },
    "targets": {
      "signatures": [
        {
          "keyid": "48fb161d03445e4d97155a96ee648f3af8dfe3ad562c76e582dd665b42eb913b",
          "sig": "4757f4423399ce10db3c7f55cd6f7ff2d3cdf4e2d8b09fc2e40a68925cd2a7ecb13cb6ed5d2f06582ed93c06a813919b3d21d8b7bca421083a4aca3f5f2f6e00"
        }
      ],
      "signed": {
        "_type": "targets",
        "spec_version": "1.0.36",
        "version": 1,
        "expires": "2999-02-01T00:00:00Z",
        "targets": {
          "releases/desktop/0.9.0.json": {
            "length": 221,
            "hashes": {
              "sha256": "3c7dce07b221b584f1d3b735ebb6b101a3fee87dff73a687e0bbac44e323be7f"
            },
            "custom": {
              "morphir": {
                "schemaVersion": 1,
                "kind": "tool-release",
                "toolId": "desktop",
                "version": "0.9.0",
                "channels": [],
                "status": "revoked",
                "compatibility": {
                  "morphirCli": ">=0.4.0-alpha.5, <0.5.0"
                },
                "platforms": []
              }
            }
          },
          "releases/desktop/1.0.0.json": {
            "length": 991,
            "hashes": {
              "sha256": "f882054674e520c1202d03cfb5593c388b4a7fcb0b83821d4c2b36fdfcc0cdf3"
            },
            "custom": {
              "morphir": {
                "schemaVersion": 1,
                "kind": "tool-release",
                "toolId": "desktop",
                "version": "1.0.0",
                "channels": [
                  "stable"
                ],
                "status": "active",
                "compatibility": {
                  "morphirCli": ">=0.4.0-alpha.5, <0.5.0"
                },
                "platforms": [
                  {
                    "os": "windows",
                    "arch": "x86_64"
                  },
                  {
                    "os": "macos",
                    "arch": "aarch64"
                  },
                  {
                    "os": "linux",
                    "arch": "x86_64"
                  }
                ]
              }
            }
          },
          "releases/desktop/1.1.0-preview.1.json": {
            "length": 502,
            "hashes": {
              "sha256": "849bca11e70d79dc84b6f1e12c0081f1814de1ed75ff9166d4171e44cadeca51"
            },
            "custom": {
              "morphir": {
                "schemaVersion": 1,
                "kind": "tool-release",
                "toolId": "desktop",
                "version": "1.1.0-preview.1",
                "channels": [
                  "preview",
                  "preview/nightly"
                ],
                "status": "active",
                "compatibility": {
                  "morphirCli": ">=0.4.0-alpha.5, <0.5.0"
                },
                "platforms": [
                  {
                    "os": "windows",
                    "arch": "x86_64"
                  }
                ]
              }
            }
          },
          "artifacts/desktop/1.0.0/windows-x86_64.zip": {
            "length": 173,
            "hashes": {
              "sha256": "05922da261be12028a200e541109e2b2baedc1181b3826855e28ed3296cb074d"
            },
            "custom": {
              "morphir": {
                "schemaVersion": 1,
                "kind": "tool-artifact",
                "toolId": "desktop",
                "version": "1.0.0",
                "platform": {
                  "os": "windows",
                  "arch": "x86_64"
                }
              }
            }
          },
          "artifacts/desktop/1.0.0/macos-aarch64.zip": {
            "length": 36,
            "hashes": {
              "sha256": "8c483cd816d51f0148ca4a4ef826eb134a76ab5d1cc80c1ce2f708c66cd44358"
            },
            "custom": {
              "morphir": {
                "schemaVersion": 1,
                "kind": "tool-artifact",
                "toolId": "desktop",
                "version": "1.0.0",
                "platform": {
                  "os": "macos",
                  "arch": "aarch64"
                }
              }
            }
          },
          "artifacts/desktop/1.0.0/linux-x86_64.tar.gz": {
            "length": 35,
            "hashes": {
              "sha256": "ff4e4db101bf9df2783e600e1a7bd6c7e44bddbaab9cf60433bca2d1fadbabda"
            },
            "custom": {
              "morphir": {
                "schemaVersion": 1,
                "kind": "tool-artifact",
                "toolId": "desktop",
                "version": "1.0.0",
                "platform": {
                  "os": "linux",
                  "arch": "x86_64"
                }
              }
            }
          },
          "artifacts/desktop/1.1.0-preview.1/windows-x86_64.zip": {
            "length": 47,
            "hashes": {
              "sha256": "20bd54d57f8232ba24d40f09d9a0220f17533285c43d1d1683826c2d8bdf1cfe"
            },
            "custom": {
              "morphir": {
                "schemaVersion": 1,
                "kind": "tool-artifact",
                "toolId": "desktop",
                "version": "1.1.0-preview.1",
                "platform": {
                  "os": "windows",
                  "arch": "x86_64"
                }
              }
            }
          }
        }
      }
    }
  },
  "targetFiles": {
    "releases/desktop/0.9.0.json": "{\"artifacts\":[],\"channels\":[],\"compatibility\":{\"morphirCli\":\">=0.4.0-alpha.5, <0.5.0\"},\"kind\":\"morphir-tool-release\",\"schemaVersion\":1,\"status\":\"revoked\",\"tool\":{\"id\":\"desktop\",\"name\":\"Morphir Desktop\"},\"version\":\"0.9.0\"}",
    "releases/desktop/1.0.0.json": "{\"artifacts\":[{\"archive\":{\"entryPoint\":\"Morphir Desktop.exe\",\"format\":\"zip\"},\"launch\":{\"args\":[],\"kind\":\"executable\",\"path\":\"Morphir Desktop.exe\"},\"platform\":{\"arch\":\"x86_64\",\"os\":\"windows\"},\"targetPath\":\"artifacts/desktop/1.0.0/windows-x86_64.zip\"},{\"archive\":{\"entryPoint\":\"Morphir Desktop.app/Contents/MacOS/Morphir Desktop\",\"format\":\"zip\"},\"launch\":{\"args\":[],\"kind\":\"executable\",\"path\":\"Morphir Desktop.app/Contents/MacOS/Morphir Desktop\"},\"platform\":{\"arch\":\"aarch64\",\"os\":\"macos\"},\"targetPath\":\"artifacts/desktop/1.0.0/macos-aarch64.zip\"},{\"archive\":{\"entryPoint\":\"morphir-desktop\",\"format\":\"tar-gzip\"},\"launch\":{\"args\":[],\"kind\":\"executable\",\"path\":\"morphir-desktop\"},\"platform\":{\"arch\":\"x86_64\",\"os\":\"linux\"},\"targetPath\":\"artifacts/desktop/1.0.0/linux-x86_64.tar.gz\"}],\"channels\":[\"stable\"],\"compatibility\":{\"morphirCli\":\">=0.4.0-alpha.5, <0.5.0\"},\"kind\":\"morphir-tool-release\",\"schemaVersion\":1,\"status\":\"active\",\"tool\":{\"id\":\"desktop\",\"name\":\"Morphir Desktop\"},\"version\":\"1.0.0\"}",
    "releases/desktop/1.1.0-preview.1.json": "{\"artifacts\":[{\"archive\":{\"entryPoint\":\"Morphir Desktop.exe\",\"format\":\"zip\"},\"launch\":{\"args\":[],\"kind\":\"executable\",\"path\":\"Morphir Desktop.exe\"},\"platform\":{\"arch\":\"x86_64\",\"os\":\"windows\"},\"targetPath\":\"artifacts/desktop/1.1.0-preview.1/windows-x86_64.zip\"}],\"channels\":[\"preview\",\"preview/nightly\"],\"compatibility\":{\"morphirCli\":\">=0.4.0-alpha.5, <0.5.0\"},\"kind\":\"morphir-tool-release\",\"schemaVersion\":1,\"status\":\"active\",\"tool\":{\"id\":\"desktop\",\"name\":\"Morphir Desktop\"},\"version\":\"1.1.0-preview.1\"}",
    "artifacts/desktop/1.0.0/windows-x86_64.zip": "PK\u0003\u0004\u0014\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000i3\u001fC%\u0000\u0000\u0000%\u0000\u0000\u0000\u0013\u0000\u0000\u0000Morphir Desktop.exefixture signed desktop executable 12\nPK\u0001\u0002\u0014\u0000\u0014\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000i3\u001fC%\u0000\u0000\u0000%\u0000\u0000\u0000\u0013\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000Morphir Desktop.exePK\u0005\u0006\u0000\u0000\u0000\u0000\u0001\u0000\u0001\u0000A\u0000\u0000\u0000V\u0000\u0000\u0000\u0000\u0000",
    "artifacts/desktop/1.0.0/macos-aarch64.zip": "fixture desktop 1.0.0 macos aarch64\n",
    "artifacts/desktop/1.0.0/linux-x86_64.tar.gz": "fixture desktop 1.0.0 linux x86_64\n",
    "artifacts/desktop/1.1.0-preview.1/windows-x86_64.zip": "fixture desktop 1.1.0-preview.1 windows x86_64\n"
  },
  "resolutionCases": [
    {
      "name": "stable selects the highest compatible final release",
      "toolId": "desktop",
      "selection": {
        "channel": "stable"
      },
      "cliVersion": "0.4.0",
      "platform": {
        "os": "windows",
        "arch": "x86_64"
      },
      "expected": "1.0.0"
    },
    {
      "name": "preview selects a prerelease",
      "toolId": "desktop",
      "selection": {
        "channel": "preview"
      },
      "cliVersion": "0.4.0",
      "platform": {
        "os": "windows",
        "arch": "x86_64"
      },
      "expected": "1.1.0-preview.1"
    },
    {
      "name": "insiders aliases the preview family",
      "toolId": "desktop",
      "selection": {
        "channel": "insiders"
      },
      "cliVersion": "0.4.0",
      "platform": {
        "os": "windows",
        "arch": "x86_64"
      },
      "expected": "1.1.0-preview.1"
    },
    {
      "name": "segmented preview selects only its named stream",
      "toolId": "desktop",
      "selection": {
        "channel": "preview/nightly"
      },
      "cliVersion": "0.4.0",
      "platform": {
        "os": "windows",
        "arch": "x86_64"
      },
      "expected": "1.1.0-preview.1"
    },
    {
      "name": "an exact prerelease ignores channel membership",
      "toolId": "desktop",
      "selection": {
        "version": "1.1.0-preview.1"
      },
      "cliVersion": "0.4.0",
      "platform": {
        "os": "windows",
        "arch": "x86_64"
      },
      "expected": "1.1.0-preview.1"
    },
    {
      "name": "a revoked exact release is refused",
      "toolId": "desktop",
      "selection": {
        "version": "0.9.0"
      },
      "cliVersion": "0.4.0",
      "platform": {
        "os": "windows",
        "arch": "x86_64"
      },
      "expected": {
        "diagnostic": "release_revoked"
      }
    },
    {
      "name": "an incompatible CLI cannot select a release",
      "toolId": "desktop",
      "selection": {
        "channel": "stable"
      },
      "cliVersion": "0.3.0",
      "platform": {
        "os": "windows",
        "arch": "x86_64"
      },
      "expected": {
        "diagnostic": "no_compatible_release"
      }
    },
    {
      "name": "stable selects the matching macOS artifact",
      "toolId": "desktop",
      "selection": {
        "channel": "stable"
      },
      "cliVersion": "0.4.0",
      "platform": {
        "os": "macos",
        "arch": "aarch64"
      },
      "expected": "1.0.0"
    },
    {
      "name": "a missing platform has no compatible release",
      "toolId": "desktop",
      "selection": {
        "channel": "stable"
      },
      "cliVersion": "0.4.0",
      "platform": {
        "os": "linux",
        "arch": "aarch64"
      },
      "expected": {
        "diagnostic": "no_compatible_release"
      }
    }
  ],
  "rejectionMetadata": {
    "expiredTimestamp": {
      "signatures": [
        {
          "keyid": "33d640627f662f5d8685bd81f41b17429e8c75069ddae1d70f2d324bef86f608",
          "sig": "982d8b5396623583455f68931f71edb2d1f06ae2f395ca5f39c60b33a3a3b6ccece5fb68eb54b38a876278e6e5481d661a45a28a67b8dc7dde3a150143a6880e"
        }
      ],
      "signed": {
        "_type": "timestamp",
        "spec_version": "1.0.36",
        "version": 2,
        "expires": "2029-12-31T23:59:59Z",
        "meta": {
          "snapshot.json": {
            "version": 1,
            "length": 468,
            "hashes": {
              "sha256": "bfd6cc27f2bdcde54f39d674e67602183b629f3d9d3e984a0470b2bf1c5e7b68"
            }
          }
        }
      }
    }
  }
}
