Skip to main content

Deltakit-Stim

Deltakit-Stim is a Stim fork that adds support for non-computational leakage errors and an adaptive detector error model (DEM). It consists of a set of instructions to handle single qubit leakage within Stim's API definition. Specifically:

  • A leakage reset RL as a new GateType. It returns the indexed qubits in the sealed state, that is the encoded quantum state.
  • A leakage channel LEAKAGE as a new GateType. It creates a noisy channel for leakage.
  • A heralded leakage event HERALD_LEAKAGE_EVENT as a new GateType. It records the noise event in the measurement record.

The adaptive DEM is an extension to current Stim's DEM datastructure to hold metadata associated with non-computational errors (leakage, erasure, atom loss) to be further interpreted by the decoder. It provides additional edge updates to the decoding graph from heralded leakage events which can be pre-processed by the decoder to improve the qubit footprint.

Installation as a Python dependency

Whenever using hatch, uv or any pyproject-compatible Python manager, edit file pyproject.toml to add the line

  "deltakit-stim"

to the list of dependencies.

Installation from source

The simplest way to contribute is to git clone Deltakit-Stim from the GitHub repository

git clone https://github.com/Deltakit/deltakit-stim.git

Then, the C++ package can be installed either using build managers CMake

cd deltakit-stim
mkdir build
cd build
cmake ..

or Bazel

bazel build //:stim

provided a C++ compiler is installed on the system.

How Deltakit-Stim works

To get started with deltakit-stim, an example demonstrating how deltakit-stim handles leakage will be introduced. Qubits are designed to operate in two computational states: |0⟩ and |1⟩. However, qubits can sometimes "leak" into higher energy states (|2⟩, |3⟩, etc.) that are outside the computational sub-space. Leakage is a significant source of error as leaked qubits can spread errors to other qubits through multi-qubit gates.

How Deltakit-Stim models leakage differently:

  1. Specify where leakage occurs: Use LEAKAGE(p) gates to introduce leakage, where p is the probability of each specified qubit leaking.
  2. Leakage propagation through gates: Deltakit-Stim models how two-qubit gates (CZ, CX, CY, etc.) spread leakage between qubits and introduce depolarizing errors when leaked qubits interact. Users can configure leakage spreading and transfer rates using optional gate parameters (see gate documentation for details).
  3. Detect accumulated leakage: HERALD_LEAKAGE_EVENT adds a bit to the measurement record (accessible via rec[-...]) indicating whether a qubit has leaked, based on the accumulated leakage from LEAKAGE gates and propagation through 2-qubit gates. Reset gates (R, RX etc.) clear the accumulated leakage for their target qubits.
  4. Leakage-aware decoding: The DEM contains heralded errors with probabilities derived from the accumulated leakage, enabling leakage-aware decoding strategies.

This differs from Stim's HERALDED_ERASE, which requires explicitly specifying each heralded error at a particular qubit and time step, without automatic tracking of leakage accumulation and propagation.

The example below demonstrates how HERALD_LEAKAGE_EVENT enables leakage detection.

Getting Started

This example demonstrates the use of the LEAKAGE and HERALD_LEAKAGE_EVENT gates. This is essential for leakage-aware error correction and represents the key difference from Stim.

import numpy as np
import deltakit_stim

circuit = deltakit_stim.Circuit("""
R 0 1 2
CZ 0 1
CZ 1 2
LEAKAGE(0.1) 1
HERALD_LEAKAGE_EVENT 1
M 0 1 2
DETECTOR rec[-4]
DETECTOR rec[-3]
DETECTOR rec[-2]
DETECTOR rec[-1]
""")

sampler = circuit.compile_detector_sampler()
detection_events = sampler.sample(shots=1000)

print(f"Detection events shape: {detection_events.shape}")
print(f"Number of detectors: {detection_events.shape[1]}")

# The first detector (index 0) references rec[-4], the result of HERALD_LEAKAGE_EVENT
herald_events = detection_events[:, 0]
leakage_detected = np.sum(herald_events)
print(f"\nLeakage events detected: {leakage_detected} out of {len(herald_events)} shots")
print(f"Leakage rate: {leakage_detected / len(herald_events) * 100:.2f}%")

# Generate the DEM to see the heralded errors
dem = circuit.detector_error_model()
print(f"\nDetector Error Model:\n{dem}")

The circuit uses LEAKAGE(0.1) to simulate a 10% probability of leakage on qubit 1. The HERALD_LEAKAGE_EVENT instruction adds an entry to the measurement record, which is captured by the first detector (DETECTOR rec[-4], labeled D0 in the DEM), creating a fourth detector specifically for heralding in this circuit. Running this circuit for 1000 shots detects approximately 100 leakage events, matching the 10% leakage probability.

The generated Detector Error Model includes heralded errors showing how leakage affects the detectors:

error(0.5) D0 D2

This heralded error indicates that when the herald detector D0 fires (showing qubit 1 leaked), detector D2 is affected with 50% probability because measuring a leaked qubit produces a random outcome. Without HERALD_LEAKAGE_EVENT, the DEM would only show three detectors without any errors.

Use in Error Correction

Leakage-aware decoders use the herald information from HERALD_LEAKAGE_EVENT to make better correction decisions. The Local Clustering Decoder demonstrates that leakage-aware decoding can reduce physical qubit requirements by a factor of 4 compared to standard non-adaptive decoding.

For complete examples of leakage-aware decoding workflows, see the Deltakit Decoding guide.

Citation

For any reference to Stim, please consider using the citation:

@article{gidney2021stim,
  doi = {10.22331/q-2021-07-06-497},
  url = {https://doi.org/10.22331/q-2021-07-06-497},
  title = {Stim: a fast stabilizer circuit simulator},
  author = {Gidney, Craig},
  journal = {{Quantum}},
  issn = {2521-327X},
  publisher = {{Verein zur F{\"{o}}rderung des Open Access Publizierens in den Quantenwissenschaften}},
  volume = {5},
  pages = {497},
  month = jul,
  year = {2021}
}

If you use Deltakit-Stim's leakage-aware features, please also consider citing the Local Clustering Decoder paper, which details the leakage-aware decoding method:

@article{ziad2025local,
  doi     = {10.1038/s41467-025-66773-x},
  url     = {https://doi.org/10.1038/s41467-025-66773-x},
  title   = {Local clustering decoder as a fast and adaptive hardware decoder for the surface code},
  author  = {Ziad, Abbas B. and Zalawadiya, Ankit and Topal, Canberk and Camps, Joan and Gehér, György P. and Stafford, Matthew P. and Turner, Mark L.},
  journal = {Nature Communications},
  volume  = {16},
  pages   = {11048},
  year    = {2025},
}

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

deltakit_stim-0.2.1.tar.gz (915.4 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

deltakit_stim-0.2.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (5.1 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

deltakit_stim-0.2.1-cp314-cp314-macosx_26_0_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.14macOS 26.0+ x86-64

deltakit_stim-0.2.1-cp314-cp314-macosx_26_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.14macOS 26.0+ ARM64

deltakit_stim-0.2.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (5.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

deltakit_stim-0.2.1-cp313-cp313-macosx_26_0_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.13macOS 26.0+ x86-64

deltakit_stim-0.2.1-cp313-cp313-macosx_26_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.13macOS 26.0+ ARM64

deltakit_stim-0.2.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (5.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

deltakit_stim-0.2.1-cp312-cp312-macosx_26_0_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.12macOS 26.0+ x86-64

deltakit_stim-0.2.1-cp312-cp312-macosx_26_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.12macOS 26.0+ ARM64

deltakit_stim-0.2.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (5.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

deltakit_stim-0.2.1-cp311-cp311-macosx_26_0_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.11macOS 26.0+ x86-64

deltakit_stim-0.2.1-cp311-cp311-macosx_26_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.11macOS 26.0+ ARM64

deltakit_stim-0.2.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (5.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

deltakit_stim-0.2.1-cp310-cp310-macosx_26_0_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.10macOS 26.0+ x86-64

deltakit_stim-0.2.1-cp310-cp310-macosx_26_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.10macOS 26.0+ ARM64

File details

Details for the file deltakit_stim-0.2.1.tar.gz.

File metadata

  • Download URL: deltakit_stim-0.2.1.tar.gz
  • Upload date:
  • Size: 915.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for deltakit_stim-0.2.1.tar.gz
Algorithm Hash digest
SHA256 5502c26877d52ac917d795e3f4dcf628000d9a122081d1f0c8b6e84569d11722
MD5 90f32b053088d138a6a7286b6135a52e
BLAKE2b-256 18ca5bfa7f9549cb6aa85ff23c34db96e69ecf7e7faff4a62b7ae99b149543ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for deltakit_stim-0.2.1.tar.gz:

Publisher: publish.yml on Deltakit/deltakit-stim

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file deltakit_stim-0.2.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for deltakit_stim-0.2.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0e6e0034899cad43e7fc916f6d027891d6c4ffde4fff6caee8609adb88514861
MD5 82331337798eb17c9b38f93d75de134b
BLAKE2b-256 59c11dbe468a2bf99b508274acf6fe35d2ac93914ae8a3323581704590df4d99

See more details on using hashes here.

Provenance

The following attestation bundles were made for deltakit_stim-0.2.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on Deltakit/deltakit-stim

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file deltakit_stim-0.2.1-cp314-cp314-macosx_26_0_x86_64.whl.

File metadata

File hashes

Hashes for deltakit_stim-0.2.1-cp314-cp314-macosx_26_0_x86_64.whl
Algorithm Hash digest
SHA256 4fa2f136cdb58122b80588d85f6af86d744f55084aff81b0e4d9ea5284cea55d
MD5 5f680a54b355b58e6069788b64e6a1f8
BLAKE2b-256 d0eb3dff0f54893fe21e0f1e89a0806bcb48d9fae5e360d6e0d0b50bdc085715

See more details on using hashes here.

Provenance

The following attestation bundles were made for deltakit_stim-0.2.1-cp314-cp314-macosx_26_0_x86_64.whl:

Publisher: publish.yml on Deltakit/deltakit-stim

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file deltakit_stim-0.2.1-cp314-cp314-macosx_26_0_arm64.whl.

File metadata

File hashes

Hashes for deltakit_stim-0.2.1-cp314-cp314-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 8531c1e74027bd2342b3d1f771f80821a4ec292513818494ff45c4ff3537e013
MD5 a8f587b741267fd3594bc66123c0977a
BLAKE2b-256 dcf61ce7e8bb088ff2889f41beb0b43d8003556b10aec3229cba8765bac9b32f

See more details on using hashes here.

Provenance

The following attestation bundles were made for deltakit_stim-0.2.1-cp314-cp314-macosx_26_0_arm64.whl:

Publisher: publish.yml on Deltakit/deltakit-stim

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file deltakit_stim-0.2.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for deltakit_stim-0.2.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 79a125f2753ed1b808e2a8e5b3e15055e88ba477f7a76c1438da2e6b1858c28c
MD5 32abf062c11eceafc4ab75a1b7699a34
BLAKE2b-256 c8c8c92cdf88d652601f20087349d49a83c7af4f2ba2407741d26837ff3ec4ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for deltakit_stim-0.2.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on Deltakit/deltakit-stim

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file deltakit_stim-0.2.1-cp313-cp313-macosx_26_0_x86_64.whl.

File metadata

File hashes

Hashes for deltakit_stim-0.2.1-cp313-cp313-macosx_26_0_x86_64.whl
Algorithm Hash digest
SHA256 ac543a6fdcb2bcca543fd3165d073ef2e25a612ba59a53943b8a5aed2af207a2
MD5 280f4acce902cdca5baab3a51dfea2eb
BLAKE2b-256 ac09a25da2f55ae69547ac456be7dbe38bdca0b57a977d39c3bd703fd134220d

See more details on using hashes here.

Provenance

The following attestation bundles were made for deltakit_stim-0.2.1-cp313-cp313-macosx_26_0_x86_64.whl:

Publisher: publish.yml on Deltakit/deltakit-stim

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file deltakit_stim-0.2.1-cp313-cp313-macosx_26_0_arm64.whl.

File metadata

File hashes

Hashes for deltakit_stim-0.2.1-cp313-cp313-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 76b5036b2e9d3592f8299e62c13e129374849834410fb2259f7ba3380d1fd765
MD5 886a83aed13668c4264addfdaedc1a1f
BLAKE2b-256 22c6d06bd4cb126d0103d971f952a87baaa2c1630da7b03143c581d900b2bda5

See more details on using hashes here.

Provenance

The following attestation bundles were made for deltakit_stim-0.2.1-cp313-cp313-macosx_26_0_arm64.whl:

Publisher: publish.yml on Deltakit/deltakit-stim

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file deltakit_stim-0.2.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for deltakit_stim-0.2.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 42d77adbae779379bccc9bb23611bf565cab0dee31c6190c8714dde5aa70f46b
MD5 a1587775847bca3daf7ed8531f526706
BLAKE2b-256 9fa6c28c2121c00ef5c335c6e32fa1d14608583d83d9620f4ca8a90da6de1853

See more details on using hashes here.

Provenance

The following attestation bundles were made for deltakit_stim-0.2.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on Deltakit/deltakit-stim

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file deltakit_stim-0.2.1-cp312-cp312-macosx_26_0_x86_64.whl.

File metadata

File hashes

Hashes for deltakit_stim-0.2.1-cp312-cp312-macosx_26_0_x86_64.whl
Algorithm Hash digest
SHA256 d09d28cc2d30fd4cbbaa5bf58627341b14b958dcbf449ee3f77864b28de62b72
MD5 6b45188dbf4db03945244d43224adfc8
BLAKE2b-256 10e03bb61f242c5fb3c33a8c887ca827fc02a91bc8e5451d4d3f80450e322e6d

See more details on using hashes here.

Provenance

The following attestation bundles were made for deltakit_stim-0.2.1-cp312-cp312-macosx_26_0_x86_64.whl:

Publisher: publish.yml on Deltakit/deltakit-stim

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file deltakit_stim-0.2.1-cp312-cp312-macosx_26_0_arm64.whl.

File metadata

File hashes

Hashes for deltakit_stim-0.2.1-cp312-cp312-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 4251a350bb9bd023dd99d71053b4cc46640adb2aeb98c8a3473da8c8ce3a9993
MD5 971806fc14255ba3c6c98debddaa55f2
BLAKE2b-256 219bac2231161961aa76958b07a559927ec9999adbd669d0307470969ca62aa6

See more details on using hashes here.

Provenance

The following attestation bundles were made for deltakit_stim-0.2.1-cp312-cp312-macosx_26_0_arm64.whl:

Publisher: publish.yml on Deltakit/deltakit-stim

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file deltakit_stim-0.2.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for deltakit_stim-0.2.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4029b7abeb6eae09dcaecaf57e09a8162207361761d9c015b8887a4e2ac352e2
MD5 c6794ca33a73c19509c875cdc846285e
BLAKE2b-256 8429977632febf1bfed10cb62259ef7e5ab5199ed05d66c4e42b37f7ce747b1c

See more details on using hashes here.

Provenance

The following attestation bundles were made for deltakit_stim-0.2.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on Deltakit/deltakit-stim

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file deltakit_stim-0.2.1-cp311-cp311-macosx_26_0_x86_64.whl.

File metadata

File hashes

Hashes for deltakit_stim-0.2.1-cp311-cp311-macosx_26_0_x86_64.whl
Algorithm Hash digest
SHA256 5f8680786f74f2f2bffe452843b0b1e1fe99f3d335090c7c5ea4114785803903
MD5 4bfe3878bedf2de7f1a27ad0e16a7012
BLAKE2b-256 d778a4b61985c4255afbc2116310a0f4765640a80a8e78f9f4f781158708c098

See more details on using hashes here.

Provenance

The following attestation bundles were made for deltakit_stim-0.2.1-cp311-cp311-macosx_26_0_x86_64.whl:

Publisher: publish.yml on Deltakit/deltakit-stim

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file deltakit_stim-0.2.1-cp311-cp311-macosx_26_0_arm64.whl.

File metadata

File hashes

Hashes for deltakit_stim-0.2.1-cp311-cp311-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 860e988e8f9f52838b037393a791343008f21ccb6287653e37bc20efebdeb1d1
MD5 9f9ec0e35170023b3655f8e0a91413f8
BLAKE2b-256 e446ccc87f5f259463d1706bc37ab0003ebb746c10c0629cbe9a4e2c5c2f9f87

See more details on using hashes here.

Provenance

The following attestation bundles were made for deltakit_stim-0.2.1-cp311-cp311-macosx_26_0_arm64.whl:

Publisher: publish.yml on Deltakit/deltakit-stim

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file deltakit_stim-0.2.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for deltakit_stim-0.2.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4dbe40fb3f4d91ee2c3011b9b13d2086e57133bd8216bad5f93186a5ff996fc1
MD5 a364d62045e593ea2e93a4581c4aafe9
BLAKE2b-256 d2d32bb0dcc3821dee5cda02e945ba36c0e4f525d5eb8a6866f92fe24731c9f7

See more details on using hashes here.

Provenance

The following attestation bundles were made for deltakit_stim-0.2.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on Deltakit/deltakit-stim

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file deltakit_stim-0.2.1-cp310-cp310-macosx_26_0_x86_64.whl.

File metadata

File hashes

Hashes for deltakit_stim-0.2.1-cp310-cp310-macosx_26_0_x86_64.whl
Algorithm Hash digest
SHA256 e8865dfddecbe2059901609eaf9a29403f789e6dd1aa9fe633ee1a729693b5d8
MD5 1b4107b489c831f71ae170102ca33425
BLAKE2b-256 61b831a2e0642d35ee62502f13877fac0ba4068f01258de8965fed7a948a7ad4

See more details on using hashes here.

Provenance

The following attestation bundles were made for deltakit_stim-0.2.1-cp310-cp310-macosx_26_0_x86_64.whl:

Publisher: publish.yml on Deltakit/deltakit-stim

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file deltakit_stim-0.2.1-cp310-cp310-macosx_26_0_arm64.whl.

File metadata

File hashes

Hashes for deltakit_stim-0.2.1-cp310-cp310-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 a4838fb0a4bf2b6fb9b3715a2a872befc7efa4c37fabd1219d6a4a10d15d57a7
MD5 a3c338134e9f1696e5985fe20f12e324
BLAKE2b-256 de2407507cd6d17ceab45ac2e56495a83888b822084e82a35806fcdd65d3ef54

See more details on using hashes here.

Provenance

The following attestation bundles were made for deltakit_stim-0.2.1-cp310-cp310-macosx_26_0_arm64.whl:

Publisher: publish.yml on Deltakit/deltakit-stim

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.2.2

16 files

This release

0.2.1 This release

16 files

0.2.0

13 files

0.1.3

13 files

0.1.2

13 files

0.1.1

13 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page