Files
nexus/sreweekly/articles/473/02-turning-non-prod-incidents-into-resilience-building-opportunities.html
2026-09-12 17:23:01 +08:00

198 lines
46 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html><!-- Last Published: Wed Sep 09 2026 13:56:49 GMT+0000 (Coordinated Universal Time) --><html data-wf-domain="www.uptimelabs.io" data-wf-page="69eb655027cb005251c45c81" data-wf-site="69e0a463268ba34093f8b1cb" lang="en" data-wf-collection="69eb655027cb005251c45c61" data-wf-item-slug="turning-non-prod-incidents-into-resilience-building-opportunities"><head><meta charset="utf-8"/><link href="https://cdn.prod.website-files.com" rel="preconnect" crossorigin="anonymous"/><title>Turning Non-Prod Incidents into Resilience-Building Opportunities | Uptime Labs</title><meta content="Turning Non-Prod Incidents into Resilience-Building Opportunities | Uptime Labs" property="og:title"/><meta content="https://cdn.prod.website-files.com/69eb654f1a323d235a57f701/69f0b30034eef5e35f317749_Turning-Non-Prod-Incidents-into-Resilience-Building-Opportunities.jpeg" property="og:image"/><meta content="Turning Non-Prod Incidents into Resilience-Building Opportunities | Uptime Labs" name="twitter:title"/><meta content="https://cdn.prod.website-files.com/69eb654f1a323d235a57f701/69f0b30034eef5e35f317749_Turning-Non-Prod-Incidents-into-Resilience-Building-Opportunities.jpeg" name="twitter:image"/><meta content="width=device-width, initial-scale=1" name="viewport"/><link href="https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/css/uptime-labs.webflow.shared.b2e0ae867.css" rel="stylesheet" type="text/css" integrity="sha384-suCuhnhLWcIfWJtCh23Bs1UWRNkD9kcdrMKgOIiIz9siqD6U3nBoA8bhWXenZEvK" crossorigin="anonymous"/><style>html.w-mod-js:not(.w-mod-ix3) :is(.faq-accordion-body, .chevron, h2, .clipboard-tag) {visibility: hidden !important;}</style><link href="https://fonts.googleapis.com" rel="preconnect"/><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin="anonymous"/><script src="https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js" type="text/javascript"></script><script type="text/javascript">WebFont.load({ google: { families: ["Inconsolata:400,700","Big Shoulders Stencil:400,700","IBM Plex Mono:300,400,500,600,700","Inter:300,400,500,600,700","Mogra:400","Peddana:400","Poly:400","Ponnala:400","Poor Story:400","Poppins:400,900"] }});</script><script type="text/javascript">!function(o,c){var n=c.documentElement,t=" w-mod-";n.className+=t+"js",("ontouchstart"in o||o.DocumentTouch&&c instanceof DocumentTouch)&&(n.className+=t+"touch")}(window,document);</script><link href="https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/69fdf9da8cb1117ed234f941_Uptime-Labs-favicon.webp" rel="icon" type="image/png" sizes="32x32" media="(prefers-color-scheme: light)"/><link href="https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/69fdf9da8cb1117ed234f941_Uptime-Labs-favicon.webp" rel="icon" type="image/png" sizes="32x32" media="(prefers-color-scheme: dark)"/><link href="https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/69fdf9da3836fa43e7fb6001_Uptime-Labs-favicon.webp" rel="icon" type="image/png" sizes="48x48"/><link href="https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/69fdf9da2e2708ff7f771fa0_Uptime-Labs-favicon.webp" rel="apple-touch-icon" sizes="180x180"/><link href="https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/69fdf9dbfc1775799f2c2f7c_Uptime-Labs-favicon.webp" rel="icon" type="image/png" sizes="192x192"/><link href="https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/69fdf9da92d8feec14da0929_Uptime-Labs-favicon.webp" rel="icon" type="image/png" sizes="512x512"/><link href="https://www.uptimelabs.io/articles/turning-non-prod-incidents-into-resilience-building-opportunities" rel="canonical"/><script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Turning Non-Prod Incidents into Resilience-Building Opportunities",
"name": "Turning Non-Prod Incidents into Resilience-Building Opportunities",
"description": "Joe is the co-founder and CTO of Uptime Labs. A passionate technologist and developer, he has 17 years’ experience in building and scaling high-performing products and teams. Also a marathon runner, he’s wired for high performance. He loves creating cultures of constant innovation, and coaching people to develop their full potential.",
"url": "/articles/turning-non-prod-incidents-into-resilience-building-opportunities",
"datePublished": "2026-04-28T14:20:03.254Z",
"dateModified": "2026-04-28T14:20:03.254Z",
"inLanguage": "en",
"image": {
"@type": "ImageObject",
"url": "https://cdn.prod.website-files.com/69eb654f1a323d235a57f701/69f0b30034eef5e35f317749_Turning-Non-Prod-Incidents-into-Resilience-Building-Opportunities.jpeg"
},
"author": {
"@type": "Person",
"name": "Joe Mckevitt",
"description": "Joe is the co-founder and CTO of Uptime Labs. A passionate technologist and developer, he has 17 years’ experience in building and scaling high-performing products and teams. Also a marathon runner, he’s wired for high performance. He loves creating cultures of constant innovation, and coaching people to develop their full potential.",
"email": "uptimelabsio@gmail.com",
"image": {
"@type": "ImageObject",
"url": "https://cdn.prod.website-files.com/69eb654f1a323d235a57f701/69f0aad88c2eaa78a3837dd2_Joe_headshot-square.jpeg"
},
"url": "/authors/joe-mckevitt",
"sameAs": [
"https://www.linkedin.com/in/joe-mckevitt-95a65419/",
""
]
},
"publisher": {
"@type": "Organization",
"name": "Uptime Labs",
"logo": {
"@type": "ImageObject",
"url": "https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/69e0dfe10dc1240ceee2efaa_logo.svg"
}
}
}
</script><link href="rss.xml" rel="alternate" title="RSS Feed" type="application/rss+xml"/><!-- Start cookieyes banner --> <script id="cookieyes" type="text/javascript" src="https://cdn-cookieyes.com/client_data/97aba4c0c24dfd9742843861/script.js"></script> <!-- End cookieyes banner -->
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-W9SCJ38J');</script>
<!-- End Google Tag Manager -->
<script>
(function () {
const utmKeys = [
"utm_source",
"utm_medium",
"utm_campaign",
"utm_term",
"utm_content"
];
const params = new URLSearchParams(window.location.search);
utmKeys.forEach(function (key) {
const value = params.get(key);
if (value) {
localStorage.setItem(key, value);
}
});
// Optional: record the first page they landed on
if (!localStorage.getItem("landing_page")) {
localStorage.setItem(
"landing_page",
window.location.pathname + window.location.search
);
}
})();
</script>
<style>
[data-animate="stagger-hero"] * {
opacity: 0;
}
</style><!-- Finsweet Attributes -->
<script async type="module"
src="https://cdn.jsdelivr.net/npm/@finsweet/attributes@2/attributes.js"
fs-socialshare
fs-copyclip
fs-toc
fs-list
></script></head><body><div class="page-wrapper"><div data-animation="default" data-collapse="medium" data-duration="400" data-easing="ease" data-easing2="ease" role="banner" class="nav w-nav"><div class="container w-container"><div class="nav__outer"><a href="/" class="nav__brand w-nav-brand"><img loading="lazy" src="https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/69e0dfe10dc1240ceee2efaa_logo.svg" alt="" class="nav__brand__logo"/></a><nav role="navigation" class="nav__menu w-nav-menu"><div class="nav-bg-image-wrap"><img src="https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/69fc913913c360755cc95a84_Rectangle%2039651.png" loading="lazy" sizes="100vw" srcset="https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/69fc913913c360755cc95a84_Rectangle%2039651-p-500.png 500w, https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/69fc913913c360755cc95a84_Rectangle%2039651-p-800.png 800w, https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/69fc913913c360755cc95a84_Rectangle%2039651-p-1080.png 1080w, https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/69fc913913c360755cc95a84_Rectangle%2039651.png 1170w" alt="" class="image-nav-bg"/></div><div class="nav__inner"><div class="nav__l"><a href="/platform-overview" class="nav-link w-nav-link">Platform</a><a href="/pricing" class="nav-link w-nav-link">Pricing</a><div data-delay="0" data-hover="true" class="nav-dropdown w-dropdown"><div class="nav-dropdown__toggle w-dropdown-toggle"><div>Resources</div><div class="icon-embed w-embed"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3.75 5.75L8 10.25L12.25 5.75" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg></div></div><nav class="nav-dropdown__list w-dropdown-list"><div class="nav-dropdwon-inner"><a href="/articles" class="dropdown-link w-inline-block"><div>Blog</div><svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 9 7" fill="none" class="dropdown-link-arrpw"><path d="M5.52 6.624L4.752 5.856L6.128 4.48L6.928 3.808L6.912 3.76L5.376 3.856H0V2.768H5.376L6.912 2.864L6.928 2.816L6.128 2.144L4.752 0.768001L5.52 0L8.832 3.312L5.52 6.624Z" fill="currentColor"></path></svg></a><a href="/templates" class="dropdown-link w-inline-block"><div>Templates</div><svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 9 7" fill="none" class="dropdown-link-arrpw"><path d="M5.52 6.624L4.752 5.856L6.128 4.48L6.928 3.808L6.912 3.76L5.376 3.856H0V2.768H5.376L6.912 2.864L6.928 2.816L6.128 2.144L4.752 0.768001L5.52 0L8.832 3.312L5.52 6.624Z" fill="currentColor"></path></svg></a><a href="/events" class="dropdown-link w-inline-block"><div>Events</div><svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 9 7" fill="none" class="dropdown-link-arrpw"><path d="M5.52 6.624L4.752 5.856L6.128 4.48L6.928 3.808L6.912 3.76L5.376 3.856H0V2.768H5.376L6.912 2.864L6.928 2.816L6.128 2.144L4.752 0.768001L5.52 0L8.832 3.312L5.52 6.624Z" fill="currentColor"></path></svg></a><a href="/testimonials" class="dropdown-link w-inline-block"><div>testimonials</div><svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 9 7" fill="none" class="dropdown-link-arrpw"><path d="M5.52 6.624L4.752 5.856L6.128 4.48L6.928 3.808L6.912 3.76L5.376 3.856H0V2.768H5.376L6.912 2.864L6.928 2.816L6.128 2.144L4.752 0.768001L5.52 0L8.832 3.312L5.52 6.624Z" fill="currentColor"></path></svg></a></div></nav></div><a href="/about-us" class="nav-link w-nav-link">About</a><a href="/book-a-demo" class="nav-link w-nav-link">Contact</a></div><div class="nav__r"><a data_booking_source="Turning Non-Prod Incidents into Resilience-Building Opportunities" data-wf--button--variant="tertiary" href="https://learn.uptimelabs.io" target="_blank" class="button w-variant-0c7d9dd8-79db-6fff-3319-5511dc91ce0a w-inline-block"><div>Log In</div></a><div class="nav__r__space"></div><a data_booking_source="Turning Non-Prod Incidents into Resilience-Building Opportunities" data-wf--button--variant="secondary" href="/book-a-demo" class="button w-variant-c0fe4bb8-36ed-94f2-4885-319839990ed6 w-inline-block"><div>Book a demo</div></a><a data_booking_source="Turning Non-Prod Incidents into Resilience-Building Opportunities" data-wf--button--variant="base" href="/try-a-demo" class="button w-inline-block"><div>Try for free</div></a></div></div></nav><div class="nav__burger w-nav-button"><div class="hamburger-icon-wrap"><div data-is-ix2-target="1" class="lottie-hamburger" data-w-id="eb16834a-ca25-9b6e-703f-b95ecca5b3f1" data-animation-type="lottie" data-src="https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/69fc8f3a3d966614bfecf1b3_Copy%20of%20q9xVxMt3GN.json" data-loop="0" data-direction="1" data-autoplay="0" data-renderer="svg" data-default-duration="0" data-duration="1" data-loading="lazy" data-ix2-initial-state="0"></div></div></div></div></div><div class="hidden"><div class="w-embed"><style>
/* Fluid sizes */
:root {
--font-size-0: 1;
--font-from-1: 16;
--font-to-1: 19;
--vw-from-1: calc(390 / 100);
--vw-to-1: calc(991 / 100);
--coefficient-1: calc((var(--font-to-1) - var(--font-from-1)) / (var(--vw-to-1) - var(--vw-from-1)));
--base-1: calc((var(--font-from-1) - var(--vw-from-1) * var(--coefficient-1)) / 16);
--font-from-2: 11;
--font-to-2: 16;
--vw-from-2: calc(991 / 100);
--vw-to-2: calc(1440 / 100);
--coefficient-2: calc((var(--font-to-2) - var(--font-from-2)) / (var(--vw-to-2) - var(--vw-from-2)));
--base-2: calc((var(--font-from-2) - var(--vw-from-2) * var(--coefficient-2)) / 16);
--font-size-3: 1;
}
html {
font-size: calc(var(--font-size-3) * 1rem);
}
@media screen and (max-width: 1440px) {
html {
font-size: calc(var(--base-2) * 1rem + var(--coefficient-2) * 1vw);
}
}
@media screen and (max-width: 991px) {
html {
font-size: calc(var(--base-1) * 1rem + var(--coefficient-1) * 1vw);
}
}
@media screen and (max-width: 390px) {
html {
font-size: calc(var(--font-size-0) * 1rem);
}
}
.template-description-rt p:last-child, .template-author-rt p:last-child, .template-section-rt p:last-child, .faq-rt p:last-child, .testimonial-rt p:last-child {
margin-bottom: 0;
}
</style>
<style>
/* Global */
.w-dropdown-toggle .icon-embed {
transition: all 300ms ease;
}
.w-dropdown-toggle.w--open .icon-embed {
transform: rotate(180deg);
}
.w-dropdown-toggle.w--open {
color: var(--colors--medium-blue);
}
.w-container:before,
.w-container:after {
display: none;
}
/* Utils */
[relative] {
position: relative;
}
</style></div></div></div><main class="main"><section class="s-blog-hero"><div class="vertical-padding p-blog-hero"><div class="w-layout-blockcontainer container w-container"><div class="blog-hero-wrap"><div class="blog-hero-left"><div class="mb-40"><a href="/articles" class="bllue-link w-inline-block"><svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 18 18" fill="none" class="resource-button-icon"><path d="M10.5 12.75L6.75 9L10.5 5.25" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg><div>Back to articles</div></a></div><div class="mb-24"><h1 class="heading-d1">Turning Non-Prod Incidents into Resilience-Building Opportunities</h1></div><div class="mb-48"><div class="date-author-wrap"><div class="blog-author-wrap"><img src="https://cdn.prod.website-files.com/69eb654f1a323d235a57f701/69f0aad88c2eaa78a3837dd2_Joe_headshot-square.jpeg" loading="lazy" alt="" class="author-image"/><div class="text--weight-500">Joe Mckevitt</div></div><div>|</div><div>March 3, 2025</div></div></div><div class="margin-top-auto"><div class="blog-tags"><div class="body-s">Tags:</div><div class="w-dyn-list"><div role="list" class="categories-list-2 w-dyn-items"><div role="listitem" class="w-dyn-item"><div data-wf--tag--variant="base" class="tag">Blog</div></div><div role="listitem" class="w-dyn-item"><div data-wf--tag--variant="base" class="tag">Incident Management</div></div><div role="listitem" class="w-dyn-item"><div data-wf--tag--variant="base" class="tag">Outages</div></div></div></div></div></div></div><div class="blog-hero-right"><img src="https://cdn.prod.website-files.com/69eb654f1a323d235a57f701/69f0b30034eef5e35f317749_Turning-Non-Prod-Incidents-into-Resilience-Building-Opportunities.jpeg" loading="lazy" alt="" class="article-cover-image"/></div></div></div></div></section><section class="s-blog-main"><div class="vertical-padding p--80"><div class="w-layout-blockcontainer container w-container"><div class="blog-main-wrap"><div class="blog-main-left"><div class="blog-social-links-wrap"><a fs-socialshare-element="substack" href="https://uptimelabs.substack.com/" target="_blank" class="social-link-2 w-inline-block"><svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 21 20" fill="none" class="socal-link-icon is-2"><path d="M22.539 8.242H1.46V5.406h21.08v2.836zM1.46 10.812V24L12 18.11 22.54 24V10.812H1.46zM22.54 0H1.46v2.836h21.08V0z" fill="currentColor"></path></svg></a><a fs-socialshare-element="linkedin" href="#" class="social-link-2 w-inline-block"><svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 21 20" fill="none" class="socal-link-icon is-2"><path d="M0.265342 6.50512H4.7497V20H0.265342V6.50512ZM2.53754 0C1.00273 0 0 1.00761 0 2.33014C0 3.62546 0.973386 4.66237 2.47885 4.66237H2.50745C4.0716 4.66237 5.04569 3.62541 5.04569 2.33014C5.01634 1.00761 4.07165 0 2.53754 0ZM15.7601 6.18811C13.3797 6.18811 12.3133 7.49738 11.7184 8.41557V6.50512H7.23269C7.29208 7.7711 7.23269 20 7.23269 20H11.7184V12.4635C11.7184 12.0599 11.7477 11.6577 11.8658 11.3686C12.1905 10.5628 12.9286 9.72833 14.1666 9.72833C15.7908 9.72833 16.4395 10.9664 16.4395 12.7797V20H20.9245V12.2617C20.9245 8.11675 18.7123 6.18811 15.7601 6.18811Z" fill="currentColor"></path></svg></a><button fs-copyclip-element="click" class="clipboard-link"><svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 24 24" fill="none" class="socal-link-icon is-4"><path d="M1.82744 21.2724C2.40728 21.8531 3.09615 22.3135 3.85446 22.6271C4.61277 22.9407 5.42558 23.1014 6.24619 23.0999C7.06698 23.1014 7.87996 22.9407 8.63847 22.6271C9.39698 22.3134 10.0861 21.8531 10.6662 21.2724L14.2012 17.7362L12.4337 15.9687L8.89869 19.5049C8.19428 20.2062 7.24078 20.5999 6.24682 20.5999C5.25285 20.5999 4.29935 20.2062 3.59494 19.5049C2.89307 18.8008 2.49895 17.8472 2.49895 16.8531C2.49895 15.8589 2.89307 14.9053 3.59494 14.2012L7.13119 10.6662L5.36369 8.89869L1.82744 12.4337C0.657198 13.6068 0 15.1961 0 16.8531C0 18.51 0.657198 20.0994 1.82744 21.2724ZM21.2724 10.6662C22.4421 9.4928 23.0989 7.90359 23.0989 6.24682C23.0989 4.59004 22.4421 3.00083 21.2724 1.82744C20.0994 0.657198 18.51 0 16.8531 0C15.1961 0 13.6068 0.657198 12.4337 1.82744L8.89869 5.36369L10.6662 7.13119L14.2012 3.59494C14.9056 2.89368 15.8591 2.49998 16.8531 2.49998C17.847 2.49998 18.8005 2.89368 19.5049 3.59494C20.2068 4.29903 20.6009 5.25265 20.6009 6.24682C20.6009 7.24098 20.2068 8.1946 19.5049 8.89869L15.9687 12.4337L17.7362 14.2012L21.2724 10.6662Z" fill="currentColor"></path><path d="M7.12993 17.7375L5.36118 15.97L15.9699 5.36255L17.7374 7.1313L7.12993 17.7375Z" fill="currentColor"></path></svg><div class="clipboard-tag-wrap"><div class="clipboard-tag"><div>link copied to clipboard</div></div></div></button><div fs-copyclip-element="copy-this" class="is-hide w-embed">https://uptimelabs.io/articles/turning-non-prod-incidents-into-resilience-building-opportunities</div></div><div class="blog-toc-wrap"><div class="mb-24"><div class="toc-label">IN THIS ARTICLE</div></div><div class="toc-links-wrap"><div><a fs-toc-element="link" href="#" class="toc-link w-inline-block"><div>Incident Timeline</div></a></div></div></div><div class="blog-cta"><div class="mb-24"><div class="center-wrapper"><div class="mb-16"><h3 class="heading-h5">Ready to make incident response your competitive advantage?</h3></div><p class="body-s">See how Uptime Labs builds provable, scalable incident response capability across your organisation.</p></div></div><div class="blog-cta-buttons-wrap"><a data_booking_source="Turning Non-Prod Incidents into Resilience-Building Opportunities" data-wf--button--variant="base" href="/book-a-demo" class="button w-inline-block"><div>Book a demo</div></a><a data_booking_source="Turning Non-Prod Incidents into Resilience-Building Opportunities" data-wf--button--variant="secondary" href="/platform-overview" class="button w-variant-c0fe4bb8-36ed-94f2-4885-319839990ed6 w-inline-block"><div>Explore the platform</div></a></div></div></div><div class="blog-main-right"><div class="mb-56"><div fs-toc-offsettop="7.5rem" fs-toc-element="contents" class="blog-rt w-richtext"><p>If you couldn’t tell, we are obsessed with incident response at Uptime labs. So, when we get our own, we see it as an opportunity to practice what we preach.</p><p>I wanted to recap the events of one of our most recent incidents – one where one of our team members accidentally deleted a critical resource in our login flow for the development environment .</p><p>Here’s how it unfolded and what we learned from it:</p><h3>The Incident</h3><p>The first sign of trouble came through our team Slack channel—a screenshot from a colleague reporting, “We can’t log in to dev.” Importantly, they also noted, “This is a dev-only issue; production is working fine.”</p><p>My immediate thought process kicked in:</p><ul role="list"> <li><strong>Are we getting hacked?</strong></li> <li><strong>Are we sure this isn’t affecting production?</strong></li> <li><strong>Do we have this under control?</strong></li></ul><p>To quickly diagnose, I called out in Slack: <em>“Hands up—does anyone know why this happened? Did anyone accidentally remove or change something?”</em></p><p>Within minutes, a developer owned up. They admitted, “Yep, it was me. I made a mistake.”</p><h3>The Immediate Response</h3><p>At this point, the situation was clear:</p><ul role="list"> <li><strong>Not a security incident.</strong> I could downgrade the severity of the incident and focus on resolution.</li> <li><strong>Under control.</strong> It was a human error, not a systemic or malicious issue.</li></ul><p>I immediately thanked the reporter for flagging the issue clearly and confirming it was isolated to dev. I also thanked the developer for their courage in owning the mistake.</p><h3>The Learning Opportunity</h3><p>Every incident—production or non-production—is an opportunity to improve. As a leader, I approached this as if it were a production incident:</p><ul role="list"> <li><strong>Post-Incident Review (PIR):</strong> We treated this with the same seriousness as a production issue, analysing what went wrong and how to prevent it in the future.</li> <li><strong>Systemic Changes:</strong> We recognise that the developer’s actions were a symptom of a broader system issue. The focus wasn’t on blame, but on improving the system to ensure such errors couldn’t happen again.</li></ul><h3>The Culture of Blamelessness</h3><p>Its important to recognise, at least in my experience, that building a resilient organisation starts with fostering a <strong>culture of blamelessness</strong>—one where every team member feels safe to acknowledge risks, call out failures, and admit mistakes.</p><p>It’s not just a moral imperative but a practical one: when people are afraid to speak up, critical information gets lost, and the entire system suffers.</p><p>At the heart of a blameless culture is psychological safety. This means ensuring that team members:</p><ul role="list"> <li>Feel confident that raising concerns or reporting failures won’t lead to punishment or humiliation.</li> <li>Understand that mistakes are not a reflection of personal incompetence, but opportunities to identify and address gaps in systems or processes.</li></ul><h3>Blame doesn’t solve problems; systemic improvement does.</h3><ul role="list"> <li>Instead of asking, <em>“Who is responsible?”</em> focus on <em>“What allowed this to happen?”</em></li> <li>Recognise that mistakes are often the result of flawed processes, unclear expectations, or inadequate safeguards, rather than individual negligence.</li></ul><p>In this case, we implemented technical changes to eliminate the possibility of the same mistake occurring again.</p><h3>Key Takeaways</h3><ol role="list"> <li><strong>Even non-prod incidents matter.</strong> Treat them as seriously as production incidents to drive meaningful improvements.</li> <li><strong>Always learn.</strong> Every incident is a learning opportunity to refine systems and processes.</li> <li><strong>Foster a blameless culture.</strong> When people feel safe to speak up, the whole organisation benefits.</li> <li><strong>If you are a leader…call it out. </strong>When you see someone embodying the blameless culture ethos—whether flagging a risk or admitting their mistakes—acknowledge it. <em>Over-communicate this point: </em>celebrate the courage, share an internal memo or go a step further and write a whole blog post about it 😉. Whatever it takes to highlight the importance of these behaviours in your organisation.</li></ol><p>This incident may have been small, but it’s helping us build a stronger, more resilient organisation. Never waste a good incident—even if it’s not in production.</p></div></div><div class="mb-56"><div class="author-block"><div><div class="author-top"><div class="author-info"><img src="https://cdn.prod.website-files.com/69eb654f1a323d235a57f701/69f0aad88c2eaa78a3837dd2_Joe_headshot-square.jpeg" loading="lazy" alt="" class="author-image-2"/><div><h5 class="heading-h5 text-color-gray-900">Joe Mckevitt</h5></div></div><div class="author-links"><a href="https://www.linkedin.com/in/joe-mckevitt-95a65419/" class="auhor-link w-inline-block"><svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 21 20" fill="none" class="author-link-icon"><path d="M0.265342 6.50512H4.7497V20H0.265342V6.50512ZM2.53754 0C1.00273 0 0 1.00761 0 2.33014C0 3.62546 0.973386 4.66237 2.47885 4.66237H2.50745C4.0716 4.66237 5.04569 3.62541 5.04569 2.33014C5.01634 1.00761 4.07165 0 2.53754 0ZM15.7601 6.18811C13.3797 6.18811 12.3133 7.49739 11.7184 8.41557V6.50512H7.23269C7.29208 7.7711 7.23269 20 7.23269 20H11.7184V12.4635C11.7184 12.0599 11.7477 11.6577 11.8658 11.3686C12.1905 10.5628 12.9286 9.72833 14.1666 9.72833C15.7908 9.72833 16.4395 10.9664 16.4395 12.7797V20H20.9245V12.2617C20.9245 8.11675 18.7123 6.18811 15.7601 6.18811Z" fill="currentColor"></path></svg></a></div></div></div><div class="author-description"><p class="body-s">Joe is the co-founder and CTO of Uptime Labs. A passionate technologist and developer, he has 17 years’ experience in building and scaling high-performing products and teams. Also a marathon runner, he’s wired for high performance. He loves creating cultures of constant innovation, and coaching people to develop their full potential.</p></div></div></div><div class="blog-share"><div class="blog-share-left"><div class="label text-color-black">Share this post</div></div><div class="blog-social-links-wrap is-2"><button fs-copyclip-element="click" class="clipboard-link"><svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 24 24" fill="none" class="socal-link-icon is-4"><path d="M1.82744 21.2724C2.40728 21.8531 3.09615 22.3135 3.85446 22.6271C4.61277 22.9407 5.42558 23.1014 6.24619 23.0999C7.06698 23.1014 7.87996 22.9407 8.63847 22.6271C9.39698 22.3134 10.0861 21.8531 10.6662 21.2724L14.2012 17.7362L12.4337 15.9687L8.89869 19.5049C8.19428 20.2062 7.24078 20.5999 6.24682 20.5999C5.25285 20.5999 4.29935 20.2062 3.59494 19.5049C2.89307 18.8008 2.49895 17.8472 2.49895 16.8531C2.49895 15.8589 2.89307 14.9053 3.59494 14.2012L7.13119 10.6662L5.36369 8.89869L1.82744 12.4337C0.657198 13.6068 0 15.1961 0 16.8531C0 18.51 0.657198 20.0994 1.82744 21.2724ZM21.2724 10.6662C22.4421 9.4928 23.0989 7.90359 23.0989 6.24682C23.0989 4.59004 22.4421 3.00083 21.2724 1.82744C20.0994 0.657198 18.51 0 16.8531 0C15.1961 0 13.6068 0.657198 12.4337 1.82744L8.89869 5.36369L10.6662 7.13119L14.2012 3.59494C14.9056 2.89368 15.8591 2.49998 16.8531 2.49998C17.847 2.49998 18.8005 2.89368 19.5049 3.59494C20.2068 4.29903 20.6009 5.25265 20.6009 6.24682C20.6009 7.24098 20.2068 8.1946 19.5049 8.89869L15.9687 12.4337L17.7362 14.2012L21.2724 10.6662Z" fill="currentColor"></path><path d="M7.12993 17.7375L5.36118 15.97L15.9699 5.36255L17.7374 7.1313L7.12993 17.7375Z" fill="currentColor"></path></svg><div class="clipboard-tag-wrap"><div class="clipboard-tag"><div>link copied to clipboard</div></div></div></button><a fs-socialshare-element="linkedin" href="#" class="social-link-2 w-inline-block"><svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 21 20" fill="none" class="socal-link-icon is-2"><path d="M0.265342 6.50512H4.7497V20H0.265342V6.50512ZM2.53754 0C1.00273 0 0 1.00761 0 2.33014C0 3.62546 0.973386 4.66237 2.47885 4.66237H2.50745C4.0716 4.66237 5.04569 3.62541 5.04569 2.33014C5.01634 1.00761 4.07165 0 2.53754 0ZM15.7601 6.18811C13.3797 6.18811 12.3133 7.49738 11.7184 8.41557V6.50512H7.23269C7.29208 7.7711 7.23269 20 7.23269 20H11.7184V12.4635C11.7184 12.0599 11.7477 11.6577 11.8658 11.3686C12.1905 10.5628 12.9286 9.72833 14.1666 9.72833C15.7908 9.72833 16.4395 10.9664 16.4395 12.7797V20H20.9245V12.2617C20.9245 8.11675 18.7123 6.18811 15.7601 6.18811Z" fill="currentColor"></path></svg></a><a fs-socialshare-element="x" href="#" class="social-link-2 w-inline-block"><svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 23 20" fill="none" class="socal-link-icon is-1"><path d="M17.7201 0H21.1702L13.6326 8.47175L22.5 20H15.557L10.1189 13.0083L3.89654 20H0.4443L8.50646 10.9385L0 0H7.11931L12.0349 6.39078L17.7201 0ZM16.5091 17.9692H18.421L6.08051 1.9241H4.029L16.5091 17.9692Z" fill="currentColor"></path></svg></a><div fs-copyclip-element="copy-this" class="is-hide w-embed">https://uptimelabs.io/articles/turning-non-prod-incidents-into-resilience-building-opportunities</div></div></div></div></div></div></div><div class="blog-main-bg-wrap"><img src="https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/69f225d89c7c20b5a5ec3c6e_Rectangle%2039651.png" loading="lazy" sizes="(max-width: 2440px) 100vw, 2440px" srcset="https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/69f225d89c7c20b5a5ec3c6e_Rectangle%2039651-p-500.png 500w, https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/69f225d89c7c20b5a5ec3c6e_Rectangle%2039651-p-800.png 800w, https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/69f225d89c7c20b5a5ec3c6e_Rectangle%2039651-p-1080.png 1080w, https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/69f225d89c7c20b5a5ec3c6e_Rectangle%2039651-p-1600.png 1600w, https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/69f225d89c7c20b5a5ec3c6e_Rectangle%2039651-p-2000.png 2000w, https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/69f225d89c7c20b5a5ec3c6e_Rectangle%2039651.png 2440w" alt="" class="blog-main-bg-image"/></div></section><section class="s-related"><div class="vertical-padding p--80"><div class="w-layout-blockcontainer container w-container"><div class="center-wrapper"><div class="mb-48"><h2>Related content</h2></div></div><div class="w-dyn-list"><div fs-list-load="more" fs-list-element="list" role="list" class="article-list w-dyn-items"><div role="listitem" class="w-dyn-item"><a href="/articles/incident-crashes-culture-cocktails" class="article-item w-inline-block"><img src="https://cdn.prod.website-files.com/69eb654f1a323d235a57f701/6a96ee809088f84fc6d8f98b_Article-Thumbnails_NEW-RESIZED%20(9).png" loading="lazy" alt="" sizes="(max-width: 767px) 100vw, (max-width: 991px) 727px, 939px" srcset="https://cdn.prod.website-files.com/69eb654f1a323d235a57f701/6a96ee809088f84fc6d8f98b_Article-Thumbnails_NEW-RESIZED%20(9)-p-500.png 500w, https://cdn.prod.website-files.com/69eb654f1a323d235a57f701/6a96ee809088f84fc6d8f98b_Article-Thumbnails_NEW-RESIZED%20(9)-p-800.png 800w, https://cdn.prod.website-files.com/69eb654f1a323d235a57f701/6a96ee809088f84fc6d8f98b_Article-Thumbnails_NEW-RESIZED%20(9)-p-1080.png 1080w, https://cdn.prod.website-files.com/69eb654f1a323d235a57f701/6a96ee809088f84fc6d8f98b_Article-Thumbnails_NEW-RESIZED%20(9).png 1280w" class="article-image"/><div class="article-bottom is-2"><div class="mb-16 is-full-width"><div class="article-date-author-wrap"><div class="w-embed">BY Sam Salter</div><div class="is-hide">Sam Salter</div><div>September 1, 2026</div></div></div><div class="mb-24"><h5 class="heading-h5 text-color-gray-600">Incident Crashes, Culture and Cocktails (Incident Fest)</h5></div><div class="margin-top-auto"><div class="bllue-link"><div class="link-text">Read more</div><img loading="lazy" src="https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/69eb5632d10a93479ed94594_majesticons_chevron-up.svg" alt="" class="link-arrow"/></div></div></div></a></div><div role="listitem" class="w-dyn-item"><a href="/articles/supporting-new-responders" class="article-item w-inline-block"><img src="https://cdn.prod.website-files.com/69eb654f1a323d235a57f701/6a96ed442cf312de517de485_Article-Thumbnails_NEW-RESIZED%20(8).png" loading="lazy" alt="" sizes="(max-width: 767px) 100vw, (max-width: 991px) 727px, 939px" srcset="https://cdn.prod.website-files.com/69eb654f1a323d235a57f701/6a96ed442cf312de517de485_Article-Thumbnails_NEW-RESIZED%20(8)-p-500.png 500w, https://cdn.prod.website-files.com/69eb654f1a323d235a57f701/6a96ed442cf312de517de485_Article-Thumbnails_NEW-RESIZED%20(8)-p-800.png 800w, https://cdn.prod.website-files.com/69eb654f1a323d235a57f701/6a96ed442cf312de517de485_Article-Thumbnails_NEW-RESIZED%20(8)-p-1080.png 1080w, https://cdn.prod.website-files.com/69eb654f1a323d235a57f701/6a96ed442cf312de517de485_Article-Thumbnails_NEW-RESIZED%20(8).png 1280w" class="article-image"/><div class="article-bottom is-2"><div class="mb-16 is-full-width"><div class="article-date-author-wrap"><div class="w-embed">BY Karan Nagarajagowda</div><div class="is-hide">Karan Nagarajagowda</div><div>August 26, 2026</div></div></div><div class="mb-24"><h5 class="heading-h5 text-color-gray-600">Supporting Your Team&#x27;s New Responders</h5></div><div class="margin-top-auto"><div class="bllue-link"><div class="link-text">Read more</div><img loading="lazy" src="https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/69eb5632d10a93479ed94594_majesticons_chevron-up.svg" alt="" class="link-arrow"/></div></div></div></a></div><div role="listitem" class="w-dyn-item"><a href="/articles/incident-response-ai-qa" class="article-item w-inline-block"><img src="https://cdn.prod.website-files.com/69eb654f1a323d235a57f701/6a7b44e2901072ad241588f0_Article-Thumbnails_NEW-RESIZED%20(4).png" loading="lazy" alt="" sizes="(max-width: 767px) 100vw, (max-width: 991px) 727px, 939px" srcset="https://cdn.prod.website-files.com/69eb654f1a323d235a57f701/6a7b44e2901072ad241588f0_Article-Thumbnails_NEW-RESIZED%20(4)-p-500.png 500w, https://cdn.prod.website-files.com/69eb654f1a323d235a57f701/6a7b44e2901072ad241588f0_Article-Thumbnails_NEW-RESIZED%20(4)-p-800.png 800w, https://cdn.prod.website-files.com/69eb654f1a323d235a57f701/6a7b44e2901072ad241588f0_Article-Thumbnails_NEW-RESIZED%20(4)-p-1080.png 1080w, https://cdn.prod.website-files.com/69eb654f1a323d235a57f701/6a7b44e2901072ad241588f0_Article-Thumbnails_NEW-RESIZED%20(4).png 1280w" class="article-image"/><div class="article-bottom is-2"><div class="mb-16 is-full-width"><div class="article-date-author-wrap"><div class="w-embed">BY Sam Salter</div><div class="is-hide">Sam Salter</div><div>August 11, 2026</div></div></div><div class="mb-24"><h5 class="heading-h5 text-color-gray-600">&#x27;My Boss Wants Me to Pick an AI SRE Tool&#x27;: Q&amp;A at Incident Fest (Adaptive Capacity Labs)</h5></div><div class="margin-top-auto"><div class="bllue-link"><div class="link-text">Read more</div><img loading="lazy" src="https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/69eb5632d10a93479ed94594_majesticons_chevron-up.svg" alt="" class="link-arrow"/></div></div></div></a></div></div></div></div></div></section></main><section data-wf--cta-section--variant="base" class="section"><div class="w-layout-blockcontainer container w-container"><div class="container-padding py--xs"><div class="cta-section"><img sizes="100vw" srcset="https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/69e0dd9cc4f15eda7561ece6_cta-section-bg-p-500.png 500w, https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/69e0dd9cc4f15eda7561ece6_cta-section-bg-p-800.png 800w, https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/69e0dd9cc4f15eda7561ece6_cta-section-bg-p-1080.png 1080w, https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/69e0dd9cc4f15eda7561ece6_cta-section-bg.png 1312w" alt="Clear blue sky with scattered white clouds." src="https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/69e0dd9cc4f15eda7561ece6_cta-section-bg.png" loading="lazy" class="cta-section__bg"/><div data-animate="stagger-fade-in" class="cta-section__inner"><div class="cta-section__inner__texts"><h2 class="heading-h2">Ready to make incident response your competitive advantage?</h2><div class="cta-quote-author body-m-ibm">— Chris Voss</div><div class="max-w-478"><p class="body-m">See how Uptime Labs builds provable, scalable incident response capability across your financial services organisation.</p></div></div><div class="buttons-wrap-center"><div><a data_booking_source="Turning Non-Prod Incidents into Resilience-Building Opportunities" data-wf--button--variant="base" href="/try-a-demo" class="button w-inline-block"><div>Book a demo</div></a></div><div class="div-block-2"><a data_booking_source="Turning Non-Prod Incidents into Resilience-Building Opportunities" data-wf--button--variant="secondary" href="/book-a-demo" class="button w-variant-c0fe4bb8-36ed-94f2-4885-319839990ed6 w-inline-block"><div>Explore the platform</div></a></div></div></div></div></div></div></section><footer data-wf--footer--variant="base" data-wf-component-id="a75b6fd8-0f06-150a-15eb-c5166c6e1d43" data-wf-variant-state="base" class="section foot-section"><div class="w-layout-blockcontainer container w-container"><div class="container-padding py--xs"><div class="footer"><div class="footer__top"><div class="footer__top__l"><div class="footer__top__l__col"><div class="body-s text--color-light-gray">Explore</div><div class="footer__top__l__col__inner"><div class="footer__top__l__col__inner__split"><a href="/events" class="footer-link">Events</a><a href="/testimonials" class="footer-link">testimonials</a><a href="/articles" class="footer-link">Articles</a></div><div class="footer__top__l__col__inner__split"><a href="/careers" class="footer-link">Careers</a><a href="/community" class="footer-link">Community Hub</a><a href="/templates" class="footer-link">Templates</a></div></div></div><div class="footer__top__l__col"><div class="body-s text--color-light-gray">Solutions</div><div class="footer__top__l__col__inner"><div class="footer__top__l__col__inner__split"><a href="/solutions/incident-response-training" class="footer-link">Incident Response Training</a><a href="/solutions/crisis-simulation" class="footer-link">Crisis Simulation</a><a href="/solutions/attack-simulation" class="footer-link">Attack Simulation</a><a href="/solutions/crisis-communication" class="footer-link">Crisis Communication</a></div></div></div><div class="footer__top__l__col"><div class="body-s text--color-light-gray">Product</div><div class="footer__top__l__col__inner"><div class="footer__top__l__col__inner__split"><a href="/platform-overview" class="footer-link">platform</a><a href="/solutions/downtime" class="footer-link">Reduce Downtime cost</a></div></div><a href="/integration" class="footer-link">Rootly Integration</a></div></div><div class="footer__top__r"><div class="footer__top__r__row"><div class="body-s text--color-light-gray">Subscribe</div><div class="subscribe-form w-form"><form id="email-form" name="email-form" data-name="Email Form" method="get" class="subscribe-form__inner" data-wf-page-id="69eb655027cb005251c45c81" data-wf-element-id="a75b6fd8-0f06-150a-15eb-c5166c6e1d6d"><div class="subscribe-form__inner__field-wrap"><p class="body-m text--weight-600">Sign up for early access to new drills, event invites and more.</p><input class="form__input w-input" maxlength="256" name="email" data-name="Email" placeholder="Email" type="email" id="email" required=""/></div><input type="submit" data-wait="Please wait..." class="button w-button" value="Submit"/></form><div class="body-xs">Opt out at any time. <a href="https://www.uptimelabs.io/privacy" class="link-underline-blue">Privacy policy.</a></div><div class="w-form-done"><div>Thank you! Your submission has been received!</div></div><div class="w-form-fail"><div>Oops! Something went wrong while submitting the form.</div></div></div></div><div class="footer__top__r__divider"></div><div class="footer__top__r__row"><div class="body-s text--color-light-gray">Contact Us</div><div class="footer__top__r__row__2col"><div class="footer__top__r__row__2col__col"><a href="mailto:info@uptimelabs.io" class="contact-link">info@uptimelabs.io</a><a href="https://www.linkedin.com/company/uptime-labs" target="_blank" class="social-link w-inline-block"><div class="icon-embed w-embed"><svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M17.893 17.8934H14.7815V13.0204C14.7815 11.8584 14.7607 10.3626 13.1631 10.3626C11.5425 10.3626 11.2946 11.6286 11.2946 12.9358V17.8931H8.18302V7.87228H11.1701V9.24173H11.2119C11.5109 8.73059 11.9428 8.31011 12.4618 8.02505C12.9808 7.74 13.5674 7.60106 14.1592 7.62303C17.3128 7.62303 17.8943 9.69746 17.8943 12.3962L17.893 17.8934ZM4.67217 6.50251C4.31505 6.50257 3.96591 6.39673 3.66893 6.19837C3.37196 6.00001 3.14049 5.71803 3.00376 5.3881C2.86704 5.05817 2.8312 4.69511 2.90081 4.34482C2.97042 3.99453 3.14234 3.67275 3.39483 3.42017C3.64731 3.16759 3.96902 2.99555 4.31927 2.92581C4.66952 2.85607 5.03258 2.89177 5.36255 3.02838C5.69252 3.16499 5.97456 3.39639 6.17303 3.6933C6.37149 3.99022 6.47746 4.33932 6.47752 4.69646C6.47756 4.93359 6.43089 5.16841 6.34019 5.3875C6.24948 5.6066 6.11653 5.80569 5.94889 5.97339C5.78125 6.1411 5.5822 6.27414 5.36314 6.36493C5.14408 6.45572 4.9093 6.50247 4.67217 6.50251ZM6.22794 17.8934H3.11316V7.87228H6.22794V17.8934ZM19.4442 0.00143076H1.54962C1.14346 -0.00315287 0.752078 0.153706 0.46151 0.437537C0.170942 0.721369 0.00495693 1.10895 0 1.51512V19.4846C0.00478727 19.8909 0.170675 20.2788 0.461233 20.5629C0.751791 20.847 1.14326 21.0042 1.54962 20.9999H19.4442C19.8514 21.005 20.244 20.8483 20.5357 20.5641C20.8274 20.28 20.9944 19.8917 21 19.4846V1.51382C20.9942 1.10685 20.8271 0.718826 20.5354 0.435001C20.2436 0.151176 19.8512 -0.00523375 19.4442 0.000133719" fill="currentColor"/>
</svg></div></a></div><div class="footer__top__r__row__2col__col"><p class="body-m-ibm">Uptime Labs Limited, 5 Brayford Square, London E1 0SG</p></div></div></div></div></div><div class="footer__bot"><div class="body-s text--color-light-gray"> © 2026 Uptime Labs Ltd. All rights reserved. <a href="/privacy" target="_blank">Privacy</a> · <a href="/terms-and-conditions" target="_blank">Terms &amp; Conditions </a></div><img loading="lazy" src="https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/69e0e6f4c651addb19e91263_logo-light-blue.svg" alt="" class="footer__bot__logo"/></div></div></div></div><div class="hidden w-embed w-script"><!-- Set the current year to all elements with the attribute current-year -->
<script>
document.addEventListener('DOMContentLoaded', () => {
document.querySelectorAll('[current-year]').forEach((el) => (el.textContent = new Date().getFullYear()));
});
</script></div></footer></div><script src="https://d3e54v103j8qbb.cloudfront.net/js/jquery-3.5.1.min.dc5e7f18c8.js?site=69e0a463268ba34093f8b1cb" type="text/javascript" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script><script src="https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/js/webflow.schunk.181a2070a530b302.js" type="text/javascript" integrity="sha384-JWdgqTXFub/8eKOkMquT9MN7nnkFfqj2IsxHNIv8W+n3NdpIA3X+EZEx+ykmtOKR" crossorigin="anonymous"></script><script src="https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/js/webflow.schunk.4febfb12f77b44e7.js" type="text/javascript" integrity="sha384-RjyCtv5PLT8WDuR7XoV20ByXQRokya7ASqm9puRloaA5LeM/RDAcftm0LieqIZew" crossorigin="anonymous"></script><script src="https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb/js/webflow.e20a7c0a.d9ed1d406096f5b3.js" type="text/javascript" integrity="sha384-RY/a4zqg5AjKlcyJsz4t8D46STYD2/Qr9TK6Ow1CxU8Ta+nSJhd1jSiDBjKk3S42" crossorigin="anonymous"></script><script src="https://cdn.prod.website-files.com/gsap/3.15.0/gsap.min.js" type="text/javascript"></script><script src="https://cdn.prod.website-files.com/gsap/3.15.0/ScrollTrigger.min.js" type="text/javascript"></script><!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-W9SCJ38J"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<script>
document.addEventListener("click", function (event) {
const bookingLink = event.target.closest(
'a[href*="/book-a-demo"]'
);
if (!bookingLink) return;
const bookingSource =
bookingLink.getAttribute("data-booking-source") ||
window.location.pathname;
localStorage.setItem("booking_source", bookingSource);
});
</script><script>
function scrollTocToActive() {
const container = document.querySelector('.toc-links-wrap');
const activeLink = container?.querySelector('.toc-link.w--current');
if (!container || !activeLink) return;
const containerRect = container.getBoundingClientRect();
const linkRect = activeLink.getBoundingClientRect();
const scrollTarget = container.scrollTop + (linkRect.top - containerRect.top);
container.scrollTo({ top: scrollTarget, behavior: 'smooth' });
}
setInterval(() => {
const active = document.querySelector('.toc-links-wrap .toc-link.w--current');
const lastHref = document.querySelector('.toc-links-wrap')?._lastActiveHref;
if (active && active.href !== lastHref) {
document.querySelector('.toc-links-wrap')._lastActiveHref = active.href;
scrollTocToActive();
}
}, 200);
</script><script src="https://hubspotv2.use1-marketplace-1p-apps-prod-red.if.webflow.services/static/disable-hubspot-chatbot.js" type="text/javascript" async="" defer=""></script><script src="https://js.hs-scripts.com/26288391.js" type="text/javascript" async="" defer=""></script><script src="https://cdn.prod.website-files.com/69e0a463268ba34093f8b1cb%2F6890b54d0757e73e539ba7b6%2F6a466cdd39cb85100ce6538e%2Fwebflowembed69e0a463268ba34093f8b1cb2885-5.0.0.js" type="text/javascript"></script><script src="https://hubspotonwebflow.com/assets/js/form-124.js" type="text/javascript" integrity="sha384-bjyNIOqAKScdeQ3THsDZLGagNN56B4X2Auu9YZIGu+tA/PlggMk4jbWruG/P6zYj" crossorigin="anonymous"></script></body></html>