You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@otava.apache.org by gi...@apache.org on 2026/07/21 01:43:35 UTC

(otava-website) branch asf-site updated: deploy: 3bf1960a2e6208850f689dc30b0233093c10b8c8

This is an automated email from the ASF dual-hosted git repository.

github-actions[bot] pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/otava-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new d03a2ad  deploy: 3bf1960a2e6208850f689dc30b0233093c10b8c8
d03a2ad is described below

commit d03a2ad4b352cd6c5bd3797055f056ea111c7ee8
Author: Gerrrr <Ge...@users.noreply.github.com>
AuthorDate: Tue Jul 21 01:43:30 2026 +0000

    deploy: 3bf1960a2e6208850f689dc30b0233093c10b8c8
---
 404.html                                           | 10 ++---
 .../{styles.e5691cae.css => styles.ce980333.css}   |  2 +-
 .../{087d9111.0f5afba2.js => 087d9111.2b45a932.js} |  2 +-
 assets/js/17896441.693a8ecd.js                     |  1 -
 assets/js/17896441.bab69b53.js                     |  1 +
 .../{1db64337.b2807eb1.js => 1db64337.d9ba8ebd.js} |  2 +-
 .../{1df93b7f.378da286.js => 1df93b7f.2af393dd.js} |  2 +-
 .../{2b266655.a7e89407.js => 2b266655.b3c55c93.js} |  2 +-
 assets/js/2f6b0a54.6e427b25.js                     |  1 +
 assets/js/2f6b0a54.9e245443.js                     |  1 -
 assets/js/324.d57d404b.js                          |  1 -
 assets/js/3cdfca8f.29dc279d.js                     |  1 -
 assets/js/3cdfca8f.70611494.js                     |  1 +
 assets/js/{645.30a9a3fc.js => 482.362a3d4c.js}     |  2 +-
 .../{4ba7e5a3.28b62819.js => 4ba7e5a3.f45219cd.js} |  2 +-
 assets/js/577.d4346040.js                          |  1 +
 assets/js/5e29e159.173b6af8.js                     |  1 -
 assets/js/5e29e159.498ed2ce.js                     |  1 +
 assets/js/5e95c892.728ae03b.js                     |  1 +
 assets/js/5e95c892.b4b94178.js                     |  1 -
 .../{5ef0e9d6.0c0b4350.js => 5ef0e9d6.b55da4a2.js} |  2 +-
 .../{6683fb4a.fb211e15.js => 6683fb4a.25f41d95.js} |  2 +-
 assets/js/{786.77492ad4.js => 786.e3aef81e.js}     |  2 +-
 assets/js/82ab324d.1edce976.js                     |  1 +
 assets/js/82ab324d.f8b678ef.js                     |  1 -
 .../{a6aa9e1f.a1d1bf14.js => a6aa9e1f.c7636419.js} |  2 +-
 .../{a7bd4aaa.8ac12ad0.js => a7bd4aaa.ef42cc45.js} |  2 +-
 assets/js/a94703ab.801cbae2.js                     |  1 -
 assets/js/a94703ab.89b5c361.js                     |  1 +
 .../{c4de80f8.73c2b4da.js => c4de80f8.822510da.js} |  2 +-
 assets/js/d589d3a7.68c822b3.js                     |  1 +
 assets/js/d589d3a7.7c4b881d.js                     |  1 -
 assets/js/f9e23376.2e17ae14.js                     |  1 +
 assets/js/f9e23376.6db60ff8.js                     |  1 -
 assets/js/main.663c53c1.js                         |  2 -
 assets/js/main.9e655e3e.js                         |  2 +
 ...js.LICENSE.txt => main.9e655e3e.js.LICENSE.txt} |  0
 ...e~main.cbf2ad78.js => runtime~main.0f49da90.js} |  2 +-
 blog/index.html                                    | 10 ++---
 docs/basics/index.html                             | 52 +++++++++++-----------
 docs/big-query/index.html                          | 18 ++++----
 docs/community/index.html                          | 24 +++++-----
 docs/contribute/index.html                         | 26 +++++------
 docs/csv/index.html                                | 22 ++++-----
 docs/download/index.html                           | 36 +++++++--------
 docs/getting-started/index.html                    | 48 ++++++++++----------
 docs/grafana/index.html                            | 24 +++++-----
 docs/graphite/index.html                           | 36 +++++++--------
 docs/install/index.html                            | 18 ++++----
 docs/math/index.html                               | 30 ++++++-------
 docs/overview/index.html                           | 16 +++----
 docs/postgresql/index.html                         | 38 ++++++++--------
 index.html                                         | 12 ++---
 53 files changed, 236 insertions(+), 236 deletions(-)

diff --git a/404.html b/404.html
index fed8e66..a63b1f1 100644
--- a/404.html
+++ b/404.html
@@ -2,17 +2,17 @@
 <html lang="en" dir="ltr" class="plugin-native plugin-id-default" data-has-hydrated="false">
 <head>
 <meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.10.1">
+<meta name="generator" content="Docusaurus v3.10.2">
 <title data-rh="true">Page Not Found | Apache Otava</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://otava.apache.org/404.html"><met [...]
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@300..800&amp;family=Space+Grotesk:wght@400..700&amp;family=JetBrains+Mono:wght@400;500;700&amp;display=swap"><link rel="stylesheet" href="/assets/css/styles.e5691cae.css">
-<script src="/assets/js/runtime~main.cbf2ad78.js" defer="defer"></script>
-<script src="/assets/js/main.663c53c1.js" defer="defer"></script>
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@300..800&amp;family=Space+Grotesk:wght@400..700&amp;family=JetBrains+Mono:wght@400;500;700&amp;display=swap"><link rel="stylesheet" href="/assets/css/styles.ce980333.css">
+<script src="/assets/js/runtime~main.0f49da90.js" defer="defer"></script>
+<script src="/assets/js/main.9e655e3e.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo.svg"><link rel="preload" as="image" href="/img [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo.svg"><link rel="preload" as="image" href="/img [...]
       <p>
         Apache Otava (incubating) is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indica [...]
       </p>
diff --git a/assets/css/styles.e5691cae.css b/assets/css/styles.ce980333.css
similarity index 84%
rename from assets/css/styles.e5691cae.css
rename to assets/css/styles.ce980333.css
index 16fdf88..7b7d997 100644
--- a/assets/css/styles.e5691cae.css
+++ b/assets/css/styles.ce980333.css
@@ -1 +1 @@
-.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middl [...]
\ No newline at end of file
+.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middl [...]
\ No newline at end of file
diff --git a/assets/js/087d9111.0f5afba2.js b/assets/js/087d9111.2b45a932.js
similarity index 95%
rename from assets/js/087d9111.0f5afba2.js
rename to assets/js/087d9111.2b45a932.js
index 56edd8a..aed78b5 100644
--- a/assets/js/087d9111.0f5afba2.js
+++ b/assets/js/087d9111.2b45a932.js
@@ -1 +1 @@
-"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[190],{2460(e,t,a){a.r(t),a.d(t,{assets:()=>i,contentTitle:()=>o,default:()=>d,frontMatter:()=>r,metadata:()=>n,toc:()=>l});const n=JSON.parse('{"id":"csv","title":"CSV","description":"\x3c!--","source":"@site/docs/csv.md","sourceDirName":".","slug":"/csv","permalink":"/docs/csv","draft":false,"unlisted":false,"editUrl":"https://github.com/apache/otava-website/tree/maste [...]
\ No newline at end of file
+"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[190],{2209(e,t,a){a.r(t),a.d(t,{assets:()=>i,contentTitle:()=>o,default:()=>d,frontMatter:()=>r,metadata:()=>n,toc:()=>l});const n=JSON.parse('{"id":"csv","title":"CSV","description":"\x3c!--","source":"@site/docs/csv.md","sourceDirName":".","slug":"/csv","permalink":"/docs/csv","draft":false,"unlisted":false,"editUrl":"https://github.com/apache/otava-website/tree/maste [...]
\ No newline at end of file
diff --git a/assets/js/17896441.693a8ecd.js b/assets/js/17896441.693a8ecd.js
deleted file mode 100644
index 7581870..0000000
--- a/assets/js/17896441.693a8ecd.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[401],{1025(e,n,t){t.r(n),t.d(n,{default:()=>ye});var s=t(2888),i=t(9653),a=t(787),r=t(1684);const o=s.createContext(null);function l({children:e,content:n}){const t=function(e){return(0,s.useMemo)(()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc}),[e])}(n);return(0,r.jsx)(o.Provider,{value:t,children:e})}function  [...]
\ No newline at end of file
diff --git a/assets/js/17896441.bab69b53.js b/assets/js/17896441.bab69b53.js
new file mode 100644
index 0000000..912f8e9
--- /dev/null
+++ b/assets/js/17896441.bab69b53.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[401],{8275(e,n,t){t.r(n),t.d(n,{default:()=>ye});var s=t(2888),i=t(7300),a=t(8644),r=t(1684);const o=s.createContext(null);function l({children:e,content:n}){const t=function(e){return(0,s.useMemo)(()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc}),[e])}(n);return(0,r.jsx)(o.Provider,{value:t,children:e})}function [...]
\ No newline at end of file
diff --git a/assets/js/1db64337.b2807eb1.js b/assets/js/1db64337.d9ba8ebd.js
similarity index 95%
rename from assets/js/1db64337.b2807eb1.js
rename to assets/js/1db64337.d9ba8ebd.js
index e8a99f8..824343d 100644
--- a/assets/js/1db64337.b2807eb1.js
+++ b/assets/js/1db64337.d9ba8ebd.js
@@ -1 +1 @@
-"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[413],{9260(e,t,n){n.r(t),n.d(t,{assets:()=>o,contentTitle:()=>c,default:()=>h,frontMatter:()=>a,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"overview","title":"Overview","description":"\x3c!--","source":"@site/docs/overview.md","sourceDirName":".","slug":"/overview","permalink":"/docs/overview","draft":false,"unlisted":false,"editUrl":"https://github.com/apache [...]
\ No newline at end of file
+"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[413],{6666(e,t,n){n.r(t),n.d(t,{assets:()=>o,contentTitle:()=>c,default:()=>h,frontMatter:()=>a,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"overview","title":"Overview","description":"\x3c!--","source":"@site/docs/overview.md","sourceDirName":".","slug":"/overview","permalink":"/docs/overview","draft":false,"unlisted":false,"editUrl":"https://github.com/apache [...]
\ No newline at end of file
diff --git a/assets/js/1df93b7f.378da286.js b/assets/js/1df93b7f.2af393dd.js
similarity index 98%
rename from assets/js/1df93b7f.378da286.js
rename to assets/js/1df93b7f.2af393dd.js
index c9b9d55..ced3b2d 100644
--- a/assets/js/1df93b7f.378da286.js
+++ b/assets/js/1df93b7f.2af393dd.js
@@ -1 +1 @@
-"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[583],{8086(e,t,s){s.r(t),s.d(t,{default:()=>rt});var i=s(3526),a=s(2718);const n="heroBanner_qdFl",r="heroSubtitle_jFu1",c="features_t9lD",o="title_iMVk",l="description_ynef",d="buttons_wjNP",x="demoGrid_ooNy";var h=s(2888),m=s(3140),p=s(3891),y=s(562),u=s(8723);const g="demo_fx2I",j="title_NBKi",f="tagBad_uuHO",N="tagGood_pWxa",_="svg_ccVW",v="axis_iK5k",b="line_gRkF", [...]
\ No newline at end of file
+"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[583],{2729(e,t,s){s.r(t),s.d(t,{default:()=>rt});var i=s(3526),a=s(1953);const n="heroBanner_qdFl",r="heroSubtitle_jFu1",c="features_t9lD",o="title_iMVk",l="description_ynef",d="buttons_wjNP",x="demoGrid_ooNy";var h=s(2888),m=s(3140),p=s(3891),y=s(562),u=s(8723);const g="demo_fx2I",j="title_NBKi",f="tagBad_uuHO",N="tagGood_pWxa",_="svg_ccVW",v="axis_iK5k",b="line_gRkF", [...]
\ No newline at end of file
diff --git a/assets/js/2b266655.a7e89407.js b/assets/js/2b266655.b3c55c93.js
similarity index 99%
rename from assets/js/2b266655.a7e89407.js
rename to assets/js/2b266655.b3c55c93.js
index 0d055bd..eca680c 100644
--- a/assets/js/2b266655.a7e89407.js
+++ b/assets/js/2b266655.b3c55c93.js
@@ -1 +1 @@
-"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[801],{4180(s,e,a){a.r(e),a.d(e,{assets:()=>c,contentTitle:()=>t,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>r});const l=JSON.parse('{"id":"math","title":"Change Point Detection","description":"\x3c!--","source":"@site/docs/math.md","sourceDirName":".","slug":"/math","permalink":"/docs/math","draft":false,"unlisted":false,"editUrl":"https://github.com/apache/o [...]
\ No newline at end of file
+"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[801],{5556(s,e,a){a.r(e),a.d(e,{assets:()=>c,contentTitle:()=>t,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>r});const l=JSON.parse('{"id":"math","title":"Change Point Detection","description":"\x3c!--","source":"@site/docs/math.md","sourceDirName":".","slug":"/math","permalink":"/docs/math","draft":false,"unlisted":false,"editUrl":"https://github.com/apache/o [...]
\ No newline at end of file
diff --git a/assets/js/2f6b0a54.6e427b25.js b/assets/js/2f6b0a54.6e427b25.js
new file mode 100644
index 0000000..f072e06
--- /dev/null
+++ b/assets/js/2f6b0a54.6e427b25.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[361],{714(e,t,s){s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>n,toc:()=>l});const n=JSON.parse('{"id":"big-query","title":"BigQuery","description":"\x3c!--","source":"@site/docs/big-query.md","sourceDirName":".","slug":"/big-query","permalink":"/docs/big-query","draft":false,"unlisted":false,"editUrl":"https://github.com/apa [...]
\ No newline at end of file
diff --git a/assets/js/2f6b0a54.9e245443.js b/assets/js/2f6b0a54.9e245443.js
deleted file mode 100644
index 5d16e96..0000000
--- a/assets/js/2f6b0a54.9e245443.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[361],{1585(e,t,s){s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>n,toc:()=>l});const n=JSON.parse('{"id":"big-query","title":"BigQuery","description":"\x3c!--","source":"@site/docs/big-query.md","sourceDirName":".","slug":"/big-query","permalink":"/docs/big-query","draft":false,"unlisted":false,"editUrl":"https://github.com/ap [...]
\ No newline at end of file
diff --git a/assets/js/324.d57d404b.js b/assets/js/324.d57d404b.js
deleted file mode 100644
index 68df939..0000000
--- a/assets/js/324.d57d404b.js
+++ /dev/null
@@ -1 +0,0 @@
-(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[324],{1256(e,t,n){"use strict";n.d(t,{A:()=>M});var s=n(2888),a=n(1684);function r(e){const{mdxAdmonitionTitle:t,rest:n}=function(e){const t=s.Children.toArray(e),n=t.find(e=>s.isValidElement(e)&&"mdxAdmonitionTitle"===e.type),r=t.filter(e=>e!==n),c=n?.props.children;return{mdxAdmonitionTitle:c,rest:r.length>0?(0,a.jsx)(a.Fragment,{children:r}):null}}(e.children),r=e.title??t;return [...]
\ No newline at end of file
diff --git a/assets/js/3cdfca8f.29dc279d.js b/assets/js/3cdfca8f.29dc279d.js
deleted file mode 100644
index 6848304..0000000
--- a/assets/js/3cdfca8f.29dc279d.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[185],{298(e,t,n){n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>d,frontMatter:()=>r,metadata:()=>a,toc:()=>l});const a=JSON.parse('{"id":"basics","title":"Basics","description":"\x3c!--","source":"@site/docs/basics.md","sourceDirName":".","slug":"/basics","permalink":"/docs/basics","draft":false,"unlisted":false,"editUrl":"https://github.com/apache/otava-webs [...]
\ No newline at end of file
diff --git a/assets/js/3cdfca8f.70611494.js b/assets/js/3cdfca8f.70611494.js
new file mode 100644
index 0000000..ef84e7d
--- /dev/null
+++ b/assets/js/3cdfca8f.70611494.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[185],{2441(e,t,n){n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>d,frontMatter:()=>r,metadata:()=>a,toc:()=>l});const a=JSON.parse('{"id":"basics","title":"Basics","description":"\x3c!--","source":"@site/docs/basics.md","sourceDirName":".","slug":"/basics","permalink":"/docs/basics","draft":false,"unlisted":false,"editUrl":"https://github.com/apache/otava-web [...]
\ No newline at end of file
diff --git a/assets/js/645.30a9a3fc.js b/assets/js/482.362a3d4c.js
similarity index 68%
rename from assets/js/645.30a9a3fc.js
rename to assets/js/482.362a3d4c.js
index 47feb90..853c8c0 100644
--- a/assets/js/645.30a9a3fc.js
+++ b/assets/js/482.362a3d4c.js
@@ -1 +1 @@
-"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[645],{6475(e,t,i){i.d(t,{A:()=>h});i(2888);var a=i(3526),n=i(2871),o=i(8952),s=i(1684);function h({className:e}){return(0,s.jsx)("main",{className:(0,a.A)("container margin-vert--xl",e),children:(0,s.jsx)("div",{className:"row",children:(0,s.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,s.jsx)(o.A,{as:"h1",className:"hero__title",children:(0,s.jsx)(n.A, [...]
\ No newline at end of file
+"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[482],{1356(e,t,i){i.d(t,{A:()=>h});i(2888);var a=i(3526),n=i(6303),o=i(2741),s=i(1684);function h({className:e}){return(0,s.jsx)("main",{className:(0,a.A)("container margin-vert--xl",e),children:(0,s.jsx)("div",{className:"row",children:(0,s.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,s.jsx)(o.A,{as:"h1",className:"hero__title",children:(0,s.jsx)(n.A, [...]
\ No newline at end of file
diff --git a/assets/js/4ba7e5a3.28b62819.js b/assets/js/4ba7e5a3.f45219cd.js
similarity index 95%
rename from assets/js/4ba7e5a3.28b62819.js
rename to assets/js/4ba7e5a3.f45219cd.js
index f5c1f6c..03ec021 100644
--- a/assets/js/4ba7e5a3.28b62819.js
+++ b/assets/js/4ba7e5a3.f45219cd.js
@@ -1 +1 @@
-"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[591],{8200(e,n,t){t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>h,frontMatter:()=>o,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"contribute","title":"Contribute","description":"\x3c!--","source":"@site/docs/contribute.md","sourceDirName":".","slug":"/contribute","permalink":"/docs/contribute","draft":false,"unlisted":false,"editUrl":"https://github. [...]
\ No newline at end of file
+"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[591],{9656(e,n,t){t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>h,frontMatter:()=>o,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"contribute","title":"Contribute","description":"\x3c!--","source":"@site/docs/contribute.md","sourceDirName":".","slug":"/contribute","permalink":"/docs/contribute","draft":false,"unlisted":false,"editUrl":"https://github. [...]
\ No newline at end of file
diff --git a/assets/js/577.d4346040.js b/assets/js/577.d4346040.js
new file mode 100644
index 0000000..e205462
--- /dev/null
+++ b/assets/js/577.d4346040.js
@@ -0,0 +1 @@
+(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[577],{4683(e,t,n){"use strict";n.d(t,{A:()=>M});var s=n(2888),a=n(1684);function r(e){const{mdxAdmonitionTitle:t,rest:n}=function(e){const t=s.Children.toArray(e),n=t.find(e=>s.isValidElement(e)&&"mdxAdmonitionTitle"===e.type),r=t.filter(e=>e!==n),c=n?.props.children;return{mdxAdmonitionTitle:c,rest:r.length>0?(0,a.jsx)(a.Fragment,{children:r}):null}}(e.children),r=e.title??t;return [...]
\ No newline at end of file
diff --git a/assets/js/5e29e159.173b6af8.js b/assets/js/5e29e159.173b6af8.js
deleted file mode 100644
index 91f23f6..0000000
--- a/assets/js/5e29e159.173b6af8.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[642],{2039(e,n,t){t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>a,toc:()=>l});const a=JSON.parse('{"id":"graphite","title":"Graphite","description":"\x3c!--","source":"@site/docs/graphite.md","sourceDirName":".","slug":"/graphite","permalink":"/docs/graphite","draft":false,"unlisted":false,"editUrl":"https://github.com/apache [...]
\ No newline at end of file
diff --git a/assets/js/5e29e159.498ed2ce.js b/assets/js/5e29e159.498ed2ce.js
new file mode 100644
index 0000000..117e94a
--- /dev/null
+++ b/assets/js/5e29e159.498ed2ce.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[642],{665(e,n,t){t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>a,toc:()=>l});const a=JSON.parse('{"id":"graphite","title":"Graphite","description":"\x3c!--","source":"@site/docs/graphite.md","sourceDirName":".","slug":"/graphite","permalink":"/docs/graphite","draft":false,"unlisted":false,"editUrl":"https://github.com/apache/ [...]
\ No newline at end of file
diff --git a/assets/js/5e95c892.728ae03b.js b/assets/js/5e95c892.728ae03b.js
new file mode 100644
index 0000000..c4f74ab
--- /dev/null
+++ b/assets/js/5e95c892.728ae03b.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[647],{3338(e,a,s){s.r(a),s.d(a,{default:()=>u});s(2888);var t=s(3526),r=s(9583),c=s(7300),l=s(8849),h=s(1953),p=s(1684);function u(e){return(0,p.jsx)(c.e3,{className:(0,t.A)(r.G.wrapper.docsPages),children:(0,p.jsx)(h.A,{children:(0,l.v)(e.route.routes)})})}}}]);
\ No newline at end of file
diff --git a/assets/js/5e95c892.b4b94178.js b/assets/js/5e95c892.b4b94178.js
deleted file mode 100644
index 8606ffb..0000000
--- a/assets/js/5e95c892.b4b94178.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[647],{2585(e,a,s){s.r(a),s.d(a,{default:()=>u});s(2888);var t=s(3526),r=s(6218),c=s(9653),l=s(8849),h=s(2718),p=s(1684);function u(e){return(0,p.jsx)(c.e3,{className:(0,t.A)(r.G.wrapper.docsPages),children:(0,p.jsx)(h.A,{children:(0,l.v)(e.route.routes)})})}}}]);
\ No newline at end of file
diff --git a/assets/js/5ef0e9d6.0c0b4350.js b/assets/js/5ef0e9d6.b55da4a2.js
similarity index 96%
rename from assets/js/5ef0e9d6.0c0b4350.js
rename to assets/js/5ef0e9d6.b55da4a2.js
index 209a609..c85c799 100644
--- a/assets/js/5ef0e9d6.0c0b4350.js
+++ b/assets/js/5ef0e9d6.b55da4a2.js
@@ -1 +1 @@
-"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[911],{5319(e,t,n){n.r(t),n.d(t,{assets:()=>r,contentTitle:()=>c,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>l});const i=JSON.parse('{"id":"community","title":"Community","description":"\x3c!--","source":"@site/docs/community.md","sourceDirName":".","slug":"/community","permalink":"/docs/community","draft":false,"unlisted":false,"editUrl":"https://github.com/a [...]
\ No newline at end of file
+"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[911],{4370(e,t,n){n.r(t),n.d(t,{assets:()=>r,contentTitle:()=>c,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>l});const i=JSON.parse('{"id":"community","title":"Community","description":"\x3c!--","source":"@site/docs/community.md","sourceDirName":".","slug":"/community","permalink":"/docs/community","draft":false,"unlisted":false,"editUrl":"https://github.com/a [...]
\ No newline at end of file
diff --git a/assets/js/6683fb4a.fb211e15.js b/assets/js/6683fb4a.25f41d95.js
similarity index 98%
rename from assets/js/6683fb4a.fb211e15.js
rename to assets/js/6683fb4a.25f41d95.js
index 7f7da2f..5880412 100644
--- a/assets/js/6683fb4a.fb211e15.js
+++ b/assets/js/6683fb4a.25f41d95.js
@@ -1 +1 @@
-"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[761],{2495(e,n,s){s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>i,default:()=>m,frontMatter:()=>c,metadata:()=>t,toc:()=>l});const t=JSON.parse('{"id":"postgresql","title":"PostgreSQL","description":"\x3c!--","source":"@site/docs/postgresql.md","sourceDirName":".","slug":"/postgresql","permalink":"/docs/postgresql","draft":false,"unlisted":false,"editUrl":"https://github. [...]
\ No newline at end of file
+"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[761],{1576(e,n,s){s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>i,default:()=>m,frontMatter:()=>c,metadata:()=>t,toc:()=>l});const t=JSON.parse('{"id":"postgresql","title":"PostgreSQL","description":"\x3c!--","source":"@site/docs/postgresql.md","sourceDirName":".","slug":"/postgresql","permalink":"/docs/postgresql","draft":false,"unlisted":false,"editUrl":"https://github. [...]
\ No newline at end of file
diff --git a/assets/js/786.77492ad4.js b/assets/js/786.e3aef81e.js
similarity index 99%
rename from assets/js/786.77492ad4.js
rename to assets/js/786.e3aef81e.js
index 3fb4e42..03bb9a5 100644
--- a/assets/js/786.77492ad4.js
+++ b/assets/js/786.e3aef81e.js
@@ -1 +1 @@
-"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[786],{8723(t,e,n){n.d(e,{N:()=>w});var i=n(1684),s=n(2888),o=n(4135),r=n(4707),a=n(4959),l=n(6953),u=n(5129),c=n(4696);function h(t,e){if("function"==typeof t)return t(e);null!=t&&(t.current=e)}function d(...t){return s.useCallback(function(...t){return e=>{let n=!1;const i=t.map(t=>{const i=h(t,e);return n||"function"!=typeof i||(n=!0),i});if(n)return()=>{for(let e=0;e [...]
\ No newline at end of file
+"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[786],{8723(t,e,n){n.d(e,{N:()=>w});var i=n(1684),s=n(2888),o=n(4135),r=n(4707),a=n(4959),l=n(6953),u=n(5129),c=n(4696);function h(t,e){if("function"==typeof t)return t(e);null!=t&&(t.current=e)}function d(...t){return s.useCallback(function(...t){return e=>{let n=!1;const i=t.map(t=>{const i=h(t,e);return n||"function"!=typeof i||(n=!0),i});if(n)return()=>{for(let e=0;e [...]
\ No newline at end of file
diff --git a/assets/js/82ab324d.1edce976.js b/assets/js/82ab324d.1edce976.js
new file mode 100644
index 0000000..bce58b1
--- /dev/null
+++ b/assets/js/82ab324d.1edce976.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[203],{561(e,n,a){a.r(n),a.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"grafana","title":"Grafana Integration","description":"\x3c!--","source":"@site/docs/grafana.md","sourceDirName":".","slug":"/grafana","permalink":"/docs/grafana","draft":false,"unlisted":false,"editUrl":"https://github.com/ [...]
\ No newline at end of file
diff --git a/assets/js/82ab324d.f8b678ef.js b/assets/js/82ab324d.f8b678ef.js
deleted file mode 100644
index ce6cc3c..0000000
--- a/assets/js/82ab324d.f8b678ef.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[203],{5110(e,n,a){a.r(n),a.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"grafana","title":"Grafana Integration","description":"\x3c!--","source":"@site/docs/grafana.md","sourceDirName":".","slug":"/grafana","permalink":"/docs/grafana","draft":false,"unlisted":false,"editUrl":"https://github.com [...]
\ No newline at end of file
diff --git a/assets/js/a6aa9e1f.a1d1bf14.js b/assets/js/a6aa9e1f.c7636419.js
similarity index 76%
rename from assets/js/a6aa9e1f.a1d1bf14.js
rename to assets/js/a6aa9e1f.c7636419.js
index 2ea80e0..0809abb 100644
--- a/assets/js/a6aa9e1f.a1d1bf14.js
+++ b/assets/js/a6aa9e1f.c7636419.js
@@ -1 +1 @@
-"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[643],{3213(e,t,s){s.r(t),s.d(t,{default:()=>Qe});var a=s(2888),n=s(3526),r=s(3279),i=s(9653),l=s(6218),o=s(2718),c=s(6932),m=s(2871),d=s(787),h=(s(5920),s(1684));const u=a.createContext(null);function g({children:e,content:t,isBlogPostPage:s=!1}){const n=function({content:e,isBlogPostPage:t}){return(0,a.useMemo)(()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets [...]
\ No newline at end of file
+"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[643],{5081(e,t,s){s.r(t),s.d(t,{default:()=>Ke});var a=s(2888),n=s(3526),r=s(8353),i=s(7300),l=s(9583),o=s(1953),c=s(349),m=s(6303),d=s(8644),h=(s(2554),s(1684));const u=a.createContext(null);function g({children:e,content:t,isBlogPostPage:s=!1}){const n=function({content:e,isBlogPostPage:t}){return(0,a.useMemo)(()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets [...]
\ No newline at end of file
diff --git a/assets/js/a7bd4aaa.8ac12ad0.js b/assets/js/a7bd4aaa.ef42cc45.js
similarity index 58%
rename from assets/js/a7bd4aaa.8ac12ad0.js
rename to assets/js/a7bd4aaa.ef42cc45.js
index 3630b5b..41babcb 100644
--- a/assets/js/a7bd4aaa.8ac12ad0.js
+++ b/assets/js/a7bd4aaa.ef42cc45.js
@@ -1 +1 @@
-"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[98],{8594(e,n,s){s.r(n),s.d(n,{default:()=>h});s(2888);var r=s(9653);function t(e,n){return`docs-${e}-${n}`}var o=s(6024),a=s(8849),i=s(4911),c=s(1684);function l(e){const{version:n}=e;return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(i.A,{version:n.version,tag:t(n.pluginId,n.version)}),(0,c.jsx)(r.be,{children:n.noIndex&&(0,c.jsx)("meta",{name:"robots",content:"noindex, [...]
\ No newline at end of file
+"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[98],{1727(e,n,s){s.r(n),s.d(n,{default:()=>h});s(2888);var r=s(7300);function t(e,n){return`docs-${e}-${n}`}var o=s(8659),a=s(8849),i=s(2260),c=s(1684);function l(e){const{version:n}=e;return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(i.A,{version:n.version,tag:t(n.pluginId,n.version)}),(0,c.jsx)(r.be,{children:n.noIndex&&(0,c.jsx)("meta",{name:"robots",content:"noindex, [...]
\ No newline at end of file
diff --git a/assets/js/a94703ab.801cbae2.js b/assets/js/a94703ab.801cbae2.js
deleted file mode 100644
index 6c905f5..0000000
--- a/assets/js/a94703ab.801cbae2.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[48],{2848(e,t,n){n.r(t),n.d(t,{default:()=>Ne});var a=n(2888),i=n(3526),s=n(9653),o=n(6218),l=n(6925),r=n(4488),c=n(2871),d=n(3785),u=n(2583);const m="backToTopButton_KtL5",b="backToTopButtonShow_wosf";var h=n(1684);function p(){const{shown:e,scrollToTop:t}=function({threshold:e}){const[t,n]=(0,a.useState)(!1),i=(0,a.useRef)(!1),{startScroll:s,cancelScroll:o}=(0,d.gk)() [...]
\ No newline at end of file
diff --git a/assets/js/a94703ab.89b5c361.js b/assets/js/a94703ab.89b5c361.js
new file mode 100644
index 0000000..dd4613b
--- /dev/null
+++ b/assets/js/a94703ab.89b5c361.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[48],{2346(e,t,n){n.r(t),n.d(t,{default:()=>Se});var a=n(2888),i=n(3526),s=n(7300),o=n(9583),l=n(566),r=n(8443),c=n(6303),d=n(1320),u=n(3022);const m="backToTopButton_VHyU",h="backToTopButtonShow_TiR7";var b=n(1684);function p(){const{shown:e,scrollToTop:t}=function({threshold:e}){const[t,n]=(0,a.useState)(!1),i=(0,a.useRef)(!1),{startScroll:s,cancelScroll:o}=(0,d.gk)(); [...]
\ No newline at end of file
diff --git a/assets/js/c4de80f8.73c2b4da.js b/assets/js/c4de80f8.822510da.js
similarity index 92%
rename from assets/js/c4de80f8.73c2b4da.js
rename to assets/js/c4de80f8.822510da.js
index a800ee8..a079b0d 100644
--- a/assets/js/c4de80f8.73c2b4da.js
+++ b/assets/js/c4de80f8.822510da.js
@@ -1 +1 @@
-"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[777],{6604(e,t,n){n.r(t),n.d(t,{assets:()=>r,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>a,toc:()=>c});const a=JSON.parse('{"id":"install","title":"Installation","description":"\x3c!--","source":"@site/docs/install.md","sourceDirName":".","slug":"/install","permalink":"/docs/install","draft":false,"unlisted":false,"editUrl":"https://github.com/apache [...]
\ No newline at end of file
+"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[777],{4847(e,t,n){n.r(t),n.d(t,{assets:()=>r,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>a,toc:()=>c});const a=JSON.parse('{"id":"install","title":"Installation","description":"\x3c!--","source":"@site/docs/install.md","sourceDirName":".","slug":"/install","permalink":"/docs/install","draft":false,"unlisted":false,"editUrl":"https://github.com/apache [...]
\ No newline at end of file
diff --git a/assets/js/d589d3a7.68c822b3.js b/assets/js/d589d3a7.68c822b3.js
new file mode 100644
index 0000000..210c3a1
--- /dev/null
+++ b/assets/js/d589d3a7.68c822b3.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[924],{9078(e,t,n){n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"getting-started","title":"Getting Started","description":"\x3c!--","source":"@site/docs/getting-started.md","sourceDirName":".","slug":"/getting-started","permalink":"/docs/getting-started","draft":false,"unlisted":false," [...]
\ No newline at end of file
diff --git a/assets/js/d589d3a7.7c4b881d.js b/assets/js/d589d3a7.7c4b881d.js
deleted file mode 100644
index a560aa7..0000000
--- a/assets/js/d589d3a7.7c4b881d.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[924],{911(e,t,n){n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"getting-started","title":"Getting Started","description":"\x3c!--","source":"@site/docs/getting-started.md","sourceDirName":".","slug":"/getting-started","permalink":"/docs/getting-started","draft":false,"unlisted":false,"e [...]
\ No newline at end of file
diff --git a/assets/js/f9e23376.2e17ae14.js b/assets/js/f9e23376.2e17ae14.js
new file mode 100644
index 0000000..aa2d70c
--- /dev/null
+++ b/assets/js/f9e23376.2e17ae14.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[840],{7648(e,a,t){t.r(a),t.d(a,{assets:()=>c,contentTitle:()=>i,default:()=>h,frontMatter:()=>r,metadata:()=>n,toc:()=>o});const n=JSON.parse('{"id":"download","title":"Download","description":"\x3c!--","source":"@site/docs/download.md","sourceDirName":".","slug":"/download","permalink":"/docs/download","draft":false,"unlisted":false,"editUrl":"https://github.com/apache [...]
\ No newline at end of file
diff --git a/assets/js/f9e23376.6db60ff8.js b/assets/js/f9e23376.6db60ff8.js
deleted file mode 100644
index 2de72d7..0000000
--- a/assets/js/f9e23376.6db60ff8.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[840],{33(e,a,t){t.r(a),t.d(a,{assets:()=>c,contentTitle:()=>i,default:()=>h,frontMatter:()=>r,metadata:()=>n,toc:()=>o});const n=JSON.parse('{"id":"download","title":"Download","description":"\x3c!--","source":"@site/docs/download.md","sourceDirName":".","slug":"/download","permalink":"/docs/download","draft":false,"unlisted":false,"editUrl":"https://github.com/apache/o [...]
\ No newline at end of file
diff --git a/assets/js/main.663c53c1.js b/assets/js/main.663c53c1.js
deleted file mode 100644
index 0a3107b..0000000
--- a/assets/js/main.663c53c1.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see main.663c53c1.js.LICENSE.txt */
-(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[792],{8227(e,t,n){const r={"./":6962};function a(e){const t=o(e);return n(t)}function o(e){if(!n.o(r,e)){const t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=8227},9304(e,t,n){"use strict";n.d(t,{mg:()=>J,vd:()=>G});var r=n(2888),a=n(2736),o=n.n(a),i=n(4072),l=n.n(i),s=n(95 [...]
\ No newline at end of file
diff --git a/assets/js/main.9e655e3e.js b/assets/js/main.9e655e3e.js
new file mode 100644
index 0000000..3ac6c2c
--- /dev/null
+++ b/assets/js/main.9e655e3e.js
@@ -0,0 +1,2 @@
+/*! For license information please see main.9e655e3e.js.LICENSE.txt */
+(globalThis.webpackChunkapache_website_template=globalThis.webpackChunkapache_website_template||[]).push([[792],{628(e,t,n){const r={"./":6962};function a(e){const t=o(e);return n(t)}function o(e){if(!n.o(r,e)){const t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=628},9304(e,t,n){"use strict";n.d(t,{mg:()=>J,vd:()=>G});var r=n(2888),a=n(2736),o=n.n(a),i=n(4072),l=n.n(i),s=n(9597 [...]
\ No newline at end of file
diff --git a/assets/js/main.663c53c1.js.LICENSE.txt b/assets/js/main.9e655e3e.js.LICENSE.txt
similarity index 100%
rename from assets/js/main.663c53c1.js.LICENSE.txt
rename to assets/js/main.9e655e3e.js.LICENSE.txt
diff --git a/assets/js/runtime~main.cbf2ad78.js b/assets/js/runtime~main.0f49da90.js
similarity index 63%
rename from assets/js/runtime~main.cbf2ad78.js
rename to assets/js/runtime~main.0f49da90.js
index 834b936..c499e50 100644
--- a/assets/js/runtime~main.cbf2ad78.js
+++ b/assets/js/runtime~main.0f49da90.js
@@ -1 +1 @@
-(()=>{"use strict";var e={};const t={};function a(r){const o=t[r];if(void 0!==o)return o.exports;const n=t[r]={id:r,loaded:!1,exports:{}};return e[r].call(n.exports,n,n.exports,a),n.loaded=!0,n.exports}a.m=e,a.c=t,(()=>{const e=[];a.O=(t,r,o,n)=>{if(r){n=n||0;for(var c=e.length;c>0&&e[c-1][2]>n;c--)e[c]=e[c-1];return void(e[c]=[r,o,n])}let f=1/0;for(c=0;c<e.length;c++){let[r,o,n]=e[c],i=!0;for(var d=0;d<r.length;d++)(!1&n||f>=n)&&Object.keys(a.O).every(e=>a.O[e](r[d]))?r.splice(d--,1):(i [...]
\ No newline at end of file
+(()=>{"use strict";var e={};const t={};function a(r){const o=t[r];if(void 0!==o)return o.exports;const n=t[r]={id:r,loaded:!1,exports:{}};return e[r].call(n.exports,n,n.exports,a),n.loaded=!0,n.exports}a.m=e,a.c=t,(()=>{const e=[];a.O=(t,r,o,n)=>{if(r){n=n||0;for(var c=e.length;c>0&&e[c-1][2]>n;c--)e[c]=e[c-1];return void(e[c]=[r,o,n])}let d=1/0;for(c=0;c<e.length;c++){let[r,o,n]=e[c],i=!0;for(var f=0;f<r.length;f++)(!1&n||d>=n)&&Object.keys(a.O).every(e=>a.O[e](r[f]))?r.splice(f--,1):(i [...]
\ No newline at end of file
diff --git a/blog/index.html b/blog/index.html
index f3940ea..41fa019 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -2,17 +2,17 @@
 <html lang="en" dir="ltr" class="blog-wrapper blog-list-page plugin-blog plugin-id-default" data-has-hydrated="false">
 <head>
 <meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.10.1">
+<meta name="generator" content="Docusaurus v3.10.2">
 <title data-rh="true">Blog | Apache Otava</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://otava.apache.org/blog"><meta data-rh="tru [...]
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@300..800&amp;family=Space+Grotesk:wght@400..700&amp;family=JetBrains+Mono:wght@400;500;700&amp;display=swap"><link rel="stylesheet" href="/assets/css/styles.e5691cae.css">
-<script src="/assets/js/runtime~main.cbf2ad78.js" defer="defer"></script>
-<script src="/assets/js/main.663c53c1.js" defer="defer"></script>
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@300..800&amp;family=Space+Grotesk:wght@400..700&amp;family=JetBrains+Mono:wght@400;500;700&amp;display=swap"><link rel="stylesheet" href="/assets/css/styles.ce980333.css">
+<script src="/assets/js/runtime~main.0f49da90.js" defer="defer"></script>
+<script src="/assets/js/main.9e655e3e.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo.svg"><link rel="preload" as="image" href="/img [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo.svg"><link rel="preload" as="image" href="/img [...]
       <p>
         Apache Otava (incubating) is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indica [...]
       </p>
diff --git a/docs/basics/index.html b/docs/basics/index.html
index f973027..e40cfcb 100644
--- a/docs/basics/index.html
+++ b/docs/basics/index.html
@@ -2,30 +2,30 @@
 <html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-basics" data-has-hydrated="false">
 <head>
 <meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.10.1">
+<meta name="generator" content="Docusaurus v3.10.2">
 <title data-rh="true">Basics | Apache Otava</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://otava.apache.org/docs/basics"><meta dat [...]
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@300..800&amp;family=Space+Grotesk:wght@400..700&amp;family=JetBrains+Mono:wght@400;500;700&amp;display=swap"><link rel="stylesheet" href="/assets/css/styles.e5691cae.css">
-<script src="/assets/js/runtime~main.cbf2ad78.js" defer="defer"></script>
-<script src="/assets/js/main.663c53c1.js" defer="defer"></script>
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@300..800&amp;family=Space+Grotesk:wght@400..700&amp;family=JetBrains+Mono:wght@400;500;700&amp;display=swap"><link rel="stylesheet" href="/assets/css/styles.ce980333.css">
+<script src="/assets/js/runtime~main.0f49da90.js" defer="defer"></script>
+<script src="/assets/js/main.9e655e3e.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo.svg"><link rel="preload" as="image" href="/img [...]
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="listing-available-tests">Listing Available Tests<a href="#listing-available-tests" class="hash-link" aria-label="Direct link to Listing Available Tests" title="Direct link to Listing Available Tests" translate="no">​</a></h2>
-<div class="language-text codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-text codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">otava list-groups</span><br></div></code></pre></div></div>
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo.svg"><link rel="preload" as="image" href="/img [...]
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="listing-available-tests">Listing Available Tests<a href="#listing-available-tests" class="hash-link" aria-label="Direct link to Listing Available Tests" title="Direct link to Listing Available Tests" translate="no">​</a></h2>
+<div class="language-text codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-text codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">otava list-groups</span><br></div></code></pre></div></div>
 <p>Lists all available test groups - high-level categories of tests.</p>
-<div class="language-text codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-text codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">otava list-tests [group name]</span><br></div></code></pre></div></div>
+<div class="language-text codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-text codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">otava list-tests [group name]</span><br></div></code></pre></div></div>
 <p>Lists all tests or the tests within a given group, if the group name is provided.</p>
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="listing-available-metrics-for-tests">Listing Available Metrics for Tests<a href="#listing-available-metrics-for-tests" class="hash-link" aria-label="Direct link to Listing Available Metrics for Tests" title="Direct link to Listing Available Metrics for Tests" translate="no">​</a></h2>
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="listing-available-metrics-for-tests">Listing Available Metrics for Tests<a href="#listing-available-metrics-for-tests" class="hash-link" aria-label="Direct link to Listing Available Metrics for Tests" title="Direct link to Listing Available Metrics for Tests" translate="no">​</a></h2>
 <p>To list all available metrics defined for the test:</p>
-<div class="language-text codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-text codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">otava list-metrics &lt;test&gt;</span><br></div></code></pre></div></div>
-<h3 class="anchor anchorTargetStickyNavbar_WKy1" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example" translate="no">​</a></h3>
-<div class="theme-admonition theme-admonition-tip admonition_xPY5 alert alert--success"><div class="admonitionHeading_CHqH"><span class="admonitionIcon_T4xL"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.6 [...]
-<div class="language-text codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-text codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">$ otava list-metrics local.sample</span><br></div><div class="token-line" style="color:#393A [...]
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="finding-change-points">Finding Change Points<a href="#finding-change-points" class="hash-link" aria-label="Direct link to Finding Change Points" title="Direct link to Finding Change Points" translate="no">​</a></h2>
-<div class="language-text codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-text codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">otava analyze &lt;test&gt;...</span><br></div><div class="token-line" style="color:#393A34"> [...]
+<div class="language-text codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-text codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">otava list-metrics &lt;test&gt;</span><br></div></code></pre></div></div>
+<h3 class="anchor anchorTargetStickyNavbar_gcg8" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example" translate="no">​</a></h3>
+<div class="theme-admonition theme-admonition-tip admonition_pKXU alert alert--success"><div class="admonitionHeading_xMuP"><span class="admonitionIcon_LzAK"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.6 [...]
+<div class="language-text codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-text codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">$ otava list-metrics local.sample</span><br></div><div class="token-line" style="color:#393A [...]
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="finding-change-points">Finding Change Points<a href="#finding-change-points" class="hash-link" aria-label="Direct link to Finding Change Points" title="Direct link to Finding Change Points" translate="no">​</a></h2>
+<div class="language-text codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-text codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">otava analyze &lt;test&gt;...</span><br></div><div class="token-line" style="color:#393A34"> [...]
 <p>This command prints interesting results of all
 runs of the test and a list of change-points.
 A change-point is a moment when a metric value starts to differ significantly
@@ -41,46 +41,46 @@ However, it will eventually identify the specific commit that caused the regress
 as it analyzes the history of changes rather than just the HEAD of a branch.</p>
 <p>The <code>analyze</code> command accepts multiple tests or test groups.
 The results are simply concatenated.</p>
-<h3 class="anchor anchorTargetStickyNavbar_WKy1" id="example-1">Example<a href="#example-1" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example" translate="no">​</a></h3>
-<div class="theme-admonition theme-admonition-tip admonition_xPY5 alert alert--success"><div class="admonitionHeading_CHqH"><span class="admonitionIcon_T4xL"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.6 [...]
+<h3 class="anchor anchorTargetStickyNavbar_gcg8" id="example-1">Example<a href="#example-1" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example" translate="no">​</a></h3>
+<div class="theme-admonition theme-admonition-tip admonition_pKXU alert alert--success"><div class="admonitionHeading_xMuP"><span class="admonitionIcon_LzAK"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.6 [...]
 example configuration and <a href="https://github.com/apache/otava/tree/master/examples/csv/data/local_samples.csv" target="_blank" rel="noopener noreferrer" class="">local_samples.csv</a>
 for the data.</p></div></div>
-<div class="language-text codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-text codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">$ otava analyze local.sample --since=2024-01-01</span><br></div><div class="token-line" styl [...]
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="avoiding-test-definition-duplication">Avoiding test definition duplication<a href="#avoiding-test-definition-duplication" class="hash-link" aria-label="Direct link to Avoiding test definition duplication" title="Direct link to Avoiding test definition duplication" translate="no">​</a></h2>
+<div class="language-text codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-text codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">$ otava analyze local.sample --since=2024-01-01</span><br></div><div class="token-line" styl [...]
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="avoiding-test-definition-duplication">Avoiding test definition duplication<a href="#avoiding-test-definition-duplication" class="hash-link" aria-label="Direct link to Avoiding test definition duplication" title="Direct link to Avoiding test definition duplication" translate="no">​</a></h2>
 <p>You may find that your test definitions are very similar to each other,  e.g. they all have the same metrics. Instead
 of copy-pasting the definitions  you can use templating capability built-in otava to define the common bits of configs
 separately.</p>
 <p>First, extract the common pieces to the <code>templates</code> section:</p>
-<div class="language-yaml codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-yaml codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">templates</span><span class="token punctuation" style="color:#393 [...]
+<div class="language-yaml codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-yaml codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">templates</span><span class="token punctuation" style="color:#393 [...]
 <p>Next you can recall a template in the <code>inherit</code> property of the test:</p>
-<div class="language-yaml codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-yaml codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">my-product.test-1</span><span class="token punctuation" style="co [...]
+<div class="language-yaml codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-yaml codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">my-product.test-1</span><span class="token punctuation" style="co [...]
 <p>You can inherit more than one template.</p>
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="validating-performance-of-a-feature-branch">Validating Performance of a Feature Branch<a href="#validating-performance-of-a-feature-branch" class="hash-link" aria-label="Direct link to Validating Performance of a Feature Branch" title="Direct link to Validating Performance of a Feature Branch" translate="no">​</a></h2>
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="validating-performance-of-a-feature-branch">Validating Performance of a Feature Branch<a href="#validating-performance-of-a-feature-branch" class="hash-link" aria-label="Direct link to Validating Performance of a Feature Branch" title="Direct link to Validating Performance of a Feature Branch" translate="no">​</a></h2>
 <p>The <code>otava regressions</code> command can work with feature branches.</p>
 <p>First you need to tell Otava how to fetch the data of the tests run against a feature branch.
 The <code>prefix</code> property of the graphite test definition accepts <code>%{BRANCH}</code> variable,
 which is substituted at the data import time by the branch name passed to <code>--branch</code>
 command argument. Alternatively, if the prefix for the main branch of your product is different
 from the prefix used for feature branches, you can define an additional <code>branch_prefix</code> property.</p>
-<div class="language-yaml codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-yaml codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">my-product.test-1</span><span class="token punctuation" style="co [...]
+<div class="language-yaml codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-yaml codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">my-product.test-1</span><span class="token punctuation" style="co [...]
 <p>Now you can verify if correct data are imported by running
 <code>otava analyze &lt;test&gt; --branch &lt;branch&gt;</code>.</p>
 <p>The <code>--branch</code> argument also works with <code>otava regressions</code>. In this case a comparison will be made
 between the tail of the specified branch and the tail of the main branch (or a point of the
 main branch specified by one of the <code>--since</code> selectors).</p>
-<div class="language-text codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-text codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">$ otava regressions &lt;test or group&gt; --branch &lt;branch&gt;</span><br></div><div class [...]
+<div class="language-text codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-text codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">$ otava regressions &lt;test or group&gt; --branch &lt;branch&gt;</span><br></div><div class [...]
 <p>When comparing two branches, you generally want to compare the tails of both test histories, and
 specifically a stable sequence from the end that doesn&#x27;t contain any changes in itself.
 To ignore the older test results, and compare
 only the last few points on the branch with the tail of the main branch,
 use the <code>--last &lt;n&gt;</code> selector. E.g. to check regressions on the last run of the tests
 on the feature branch:</p>
-<div class="language-text codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-text codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">$ otava regressions &lt;test or group&gt; --branch &lt;branch&gt; --last 1</span><br></div>< [...]
+<div class="language-text codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-text codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">$ otava regressions &lt;test or group&gt; --branch &lt;branch&gt; --last 1</span><br></div>< [...]
 <p>Please beware that performance validation based on a single data point is quite weak
 and Otava might miss a regression if the point is not too much different from
 the baseline. However, accuracy improves as more data points accumulate, and it is
 a normal way of using Otava to just merge a feature and then revert if it is
-flagged later.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_AJKP"><a href="https://github.com/apache/otava-website/tree/master/docs/basics.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_6H3h" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l [...]
+flagged later.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_Wgkb"><a href="https://github.com/apache/otava-website/tree/master/docs/basics.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Df7L" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l [...]
       <p>
         Apache Otava (incubating) is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indica [...]
       </p>
diff --git a/docs/big-query/index.html b/docs/big-query/index.html
index c642689..a3fcbf6 100644
--- a/docs/big-query/index.html
+++ b/docs/big-query/index.html
@@ -2,26 +2,26 @@
 <html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-big-query" data-has-hydrated="false">
 <head>
 <meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.10.1">
+<meta name="generator" content="Docusaurus v3.10.2">
 <title data-rh="true">BigQuery | Apache Otava</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://otava.apache.org/docs/big-query"><met [...]
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@300..800&amp;family=Space+Grotesk:wght@400..700&amp;family=JetBrains+Mono:wght@400;500;700&amp;display=swap"><link rel="stylesheet" href="/assets/css/styles.e5691cae.css">
-<script src="/assets/js/runtime~main.cbf2ad78.js" defer="defer"></script>
-<script src="/assets/js/main.663c53c1.js" defer="defer"></script>
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@300..800&amp;family=Space+Grotesk:wght@400..700&amp;family=JetBrains+Mono:wght@400;500;700&amp;display=swap"><link rel="stylesheet" href="/assets/css/styles.ce980333.css">
+<script src="/assets/js/runtime~main.0f49da90.js" defer="defer"></script>
+<script src="/assets/js/main.9e655e3e.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo.svg"><link rel="preload" as="image" href="/img [...]
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="schema">Schema<a href="#schema" class="hash-link" aria-label="Direct link to Schema" title="Direct link to Schema" translate="no">​</a></h2>
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo.svg"><link rel="preload" as="image" href="/img [...]
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="schema">Schema<a href="#schema" class="hash-link" aria-label="Direct link to Schema" title="Direct link to Schema" translate="no">​</a></h2>
 <p>See <a href="https://github.com/apache/otava/tree/master/examples/bigquery/schema.sql" target="_blank" rel="noopener noreferrer" class="">schema.sql</a> for the example schema.</p>
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="usage">Usage<a href="#usage" class="hash-link" aria-label="Direct link to Usage" title="Direct link to Usage" translate="no">​</a></h2>
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="usage">Usage<a href="#usage" class="hash-link" aria-label="Direct link to Usage" title="Direct link to Usage" translate="no">​</a></h2>
 <p>Define BigQuery connection details via environment variables:</p>
-<div class="language-bash codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-bash codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">export BIGQUERY_PROJECT_ID=...</span><br></div><div class="token-line" style="color:#393A34" [...]
+<div class="language-bash codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-bash codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">export BIGQUERY_PROJECT_ID=...</span><br></div><div class="token-line" style="color:#393A34" [...]
 <p>or in <code>otava.yaml</code>.</p>
 <p>Also configure the credentials. See <a href="https://github.com/apache/otava/tree/master/examples/bigquery/config_credentials.sh" target="_blank" rel="noopener noreferrer" class="">config_credentials.sh</a> for an example.</p>
 <p>The following command shows results for a single test <code>aggregate_mem</code> and updates the database with newly found change points:</p>
-<div class="language-bash codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-bash codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">$ BRANCH=trunk OTAVA_CONFIG=otava.yaml otava analyze aggregate_mem --update-bigquery</span>< [...]
+<div class="language-bash codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-bash codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">$ BRANCH=trunk OTAVA_CONFIG=otava.yaml otava analyze aggregate_mem --update-bigquery</span>< [...]
       <p>
         Apache Otava (incubating) is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indica [...]
       </p>
diff --git a/docs/community/index.html b/docs/community/index.html
index e389c70..5e2e86e 100644
--- a/docs/community/index.html
+++ b/docs/community/index.html
@@ -2,19 +2,19 @@
 <html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-community" data-has-hydrated="false">
 <head>
 <meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.10.1">
+<meta name="generator" content="Docusaurus v3.10.2">
 <title data-rh="true">Community | Apache Otava</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://otava.apache.org/docs/community"><me [...]
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@300..800&amp;family=Space+Grotesk:wght@400..700&amp;family=JetBrains+Mono:wght@400;500;700&amp;display=swap"><link rel="stylesheet" href="/assets/css/styles.e5691cae.css">
-<script src="/assets/js/runtime~main.cbf2ad78.js" defer="defer"></script>
-<script src="/assets/js/main.663c53c1.js" defer="defer"></script>
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@300..800&amp;family=Space+Grotesk:wght@400..700&amp;family=JetBrains+Mono:wght@400;500;700&amp;display=swap"><link rel="stylesheet" href="/assets/css/styles.ce980333.css">
+<script src="/assets/js/runtime~main.0f49da90.js" defer="defer"></script>
+<script src="/assets/js/main.9e655e3e.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo.svg"><link rel="preload" as="image" href="/img [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo.svg"><link rel="preload" as="image" href="/img [...]
 <p>Apache Otava is an open source community and we welcome anyone who wants to participate and contribute to the project.</p>
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="get-involved">Get Involved<a href="#get-involved" class="hash-link" aria-label="Direct link to Get Involved" title="Direct link to Get Involved" translate="no">​</a></h2>
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="get-involved">Get Involved<a href="#get-involved" class="hash-link" aria-label="Direct link to Get Involved" title="Direct link to Get Involved" translate="no">​</a></h2>
 <p>There are several ways to get involved:</p>
 <ul>
 <li class="">Join the discussion on our mailing list</li>
@@ -22,7 +22,7 @@
 <li class="">Contribute code or documentation</li>
 <li class="">Help other users</li>
 </ul>
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="mailing-list">Mailing List<a href="#mailing-list" class="hash-link" aria-label="Direct link to Mailing List" title="Direct link to Mailing List" translate="no">​</a></h2>
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="mailing-list">Mailing List<a href="#mailing-list" class="hash-link" aria-label="Direct link to Mailing List" title="Direct link to Mailing List" translate="no">​</a></h2>
 <p><strong>Dev/User List</strong>: <a href="mailto:dev@otava.apache.org" target="_blank" rel="noopener noreferrer" class="">dev@otava.apache.org</a>. This is a single mailing list for both general user questions and
 development discussions.</p>
 <ul>
@@ -38,15 +38,15 @@ development discussions.</p>
 <a href="mailto:commits-unsubscribe@otava.apache.org" target="_blank" rel="noopener noreferrer" class="">commits-unsubscribe@otava.apache.org</a></li>
 <li class="">Archives: <a href="https://lists.apache.org/list.html?commits@otava.apache.org" target="_blank" rel="noopener noreferrer" class="">https://lists.apache.org/list.html?commits@otava.apache.org</a></li>
 </ul>
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="report-issues">Report Issues<a href="#report-issues" class="hash-link" aria-label="Direct link to Report Issues" title="Direct link to Report Issues" translate="no">​</a></h2>
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="report-issues">Report Issues<a href="#report-issues" class="hash-link" aria-label="Direct link to Report Issues" title="Direct link to Report Issues" translate="no">​</a></h2>
 <p>Found a bug? Missing a feature? Let us know by creating an issue in our <a href="https://github.com/apache/otava/issues" target="_blank" rel="noopener noreferrer" class="">GitHub repository</a>.</p>
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="contribute">Contribute<a href="#contribute" class="hash-link" aria-label="Direct link to Contribute" title="Direct link to Contribute" translate="no">​</a></h2>
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="contribute">Contribute<a href="#contribute" class="hash-link" aria-label="Direct link to Contribute" title="Direct link to Contribute" translate="no">​</a></h2>
 <p>We welcome contributions! Please check our <a class="" href="/docs/contribute">contribution guidelines</a> to get started.</p>
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="slack">Slack<a href="#slack" class="hash-link" aria-label="Direct link to Slack" title="Direct link to Slack" translate="no">​</a></h2>
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="slack">Slack<a href="#slack" class="hash-link" aria-label="Direct link to Slack" title="Direct link to Slack" translate="no">​</a></h2>
 <p>You can also join the community on <code>#otava</code> channel in official ASF Slack. <a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="">Sign up for an ASF Slack account</a>.</p>
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="code-of-conduct">Code of Conduct<a href="#code-of-conduct" class="hash-link" aria-label="Direct link to Code of Conduct" title="Direct link to Code of Conduct" translate="no">​</a></h2>
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="code-of-conduct">Code of Conduct<a href="#code-of-conduct" class="hash-link" aria-label="Direct link to Code of Conduct" title="Direct link to Code of Conduct" translate="no">​</a></h2>
 <p>The Apache Otava community adheres to the <a href="https://www.apache.org/foundation/policies/conduct.html" target="_blank" rel="noopener noreferrer" class="">Apache Code of Conduct</a>. We expect all
-participants to follow these guidelines to maintain a welcoming and inclusive environment.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_AJKP"><a href="https://github.com/apache/otava-website/tree/master/docs/community.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_6H3h" aria-hid [...]
+participants to follow these guidelines to maintain a welcoming and inclusive environment.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_Wgkb"><a href="https://github.com/apache/otava-website/tree/master/docs/community.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Df7L" aria-hid [...]
       <p>
         Apache Otava (incubating) is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indica [...]
       </p>
diff --git a/docs/contribute/index.html b/docs/contribute/index.html
index 32aea95..802aae9 100644
--- a/docs/contribute/index.html
+++ b/docs/contribute/index.html
@@ -2,17 +2,17 @@
 <html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-contribute" data-has-hydrated="false">
 <head>
 <meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.10.1">
+<meta name="generator" content="Docusaurus v3.10.2">
 <title data-rh="true">Contribute | Apache Otava</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://otava.apache.org/docs/contribute">< [...]
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@300..800&amp;family=Space+Grotesk:wght@400..700&amp;family=JetBrains+Mono:wght@400;500;700&amp;display=swap"><link rel="stylesheet" href="/assets/css/styles.e5691cae.css">
-<script src="/assets/js/runtime~main.cbf2ad78.js" defer="defer"></script>
-<script src="/assets/js/main.663c53c1.js" defer="defer"></script>
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@300..800&amp;family=Space+Grotesk:wght@400..700&amp;family=JetBrains+Mono:wght@400;500;700&amp;display=swap"><link rel="stylesheet" href="/assets/css/styles.ce980333.css">
+<script src="/assets/js/runtime~main.0f49da90.js" defer="defer"></script>
+<script src="/assets/js/main.9e655e3e.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo.svg"><link rel="preload" as="image" href="/img [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo.svg"><link rel="preload" as="image" href="/img [...]
 <ul>
 <li class="">
 <p>The project uses <a href="https://docs.astral.sh/uv/" target="_blank" rel="noopener noreferrer" class="">uv</a> for dependency management and <a href="https://tox.wiki" target="_blank" rel="noopener noreferrer" class="">tox</a> for testing environments.</p>
@@ -21,34 +21,34 @@
 <p>Install dependencies using uv:</p>
 </li>
 </ul>
-<div class="language-text codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-text codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">uv sync --all-extras --dev</span><br></div></code></pre></div></div>
+<div class="language-text codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-text codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">uv sync --all-extras --dev</span><br></div></code></pre></div></div>
 <ul>
 <li class="">Run the development version of otava using uv:</li>
 </ul>
-<div class="language-text codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-text codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">uv run otava ...</span><br></div></code></pre></div></div>
+<div class="language-text codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-text codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">uv run otava ...</span><br></div></code></pre></div></div>
 <p>See the <a href="https://docs.astral.sh/uv/" target="_blank" rel="noopener noreferrer" class="">uv docs</a> for more.</p>
 <h1>Running tests</h1>
-<div class="language-text codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-text codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">uv run pytest</span><br></div></code></pre></div></div>
+<div class="language-text codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-text codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">uv run pytest</span><br></div></code></pre></div></div>
 <p>...or using <a href="https://tox.readthedocs.io/" target="_blank" rel="noopener noreferrer" class="">tox</a>:</p>
-<div class="language-text codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-text codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">uv run tox</span><br></div></code></pre></div></div>
+<div class="language-text codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-text codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">uv run tox</span><br></div></code></pre></div></div>
 <h1>Linting and formatting</h1>
 <p>Code-style is enforced using <a href="https://docs.astral.sh/ruff/" target="_blank" rel="noopener noreferrer" class="">ruff</a> and <a href="https://flake8.pycqa.org/" target="_blank" rel="noopener noreferrer" class="">flake8</a>; import optimisation is handled by <a href="https://pycqa.github.io/isort/" target="_blank" rel="noopener noreferrer" class="">isort</a> and <a href="https://pypi.org/project/autoflake/" target="_blank" rel="noopener noreferrer" class="">autoflake</a>.  Linti [...]
-<div class="language-text codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-text codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">uv run tox -e format</span><br></div></code></pre></div></div>
+<div class="language-text codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-text codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">uv run tox -e format</span><br></div></code></pre></div></div>
 <h1>Changing the LICENSE header</h1>
 <p>To change the license header:</p>
 <ol>
 <li class="">Add the <code>--remove-header</code> arg to <code>.pre-commit-config.yaml</code></li>
 <li class="">Run formatting (this will remove the license header entirely)</li>
 </ol>
-<div class="language-text codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-text codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">uv run tox -e format</span><br></div></code></pre></div></div>
+<div class="language-text codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-text codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">uv run tox -e format</span><br></div></code></pre></div></div>
 <ol start="3">
 <li class="">Remove the <code>--remove-header</code> arg from <code>.pre-commit-config.yaml</code></li>
 <li class="">Update <code>ci-tools/license-templates/LICENSE.txt</code></li>
 <li class="">Run formatting</li>
 </ol>
-<div class="language-text codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-text codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">uv run tox -e format</span><br></div></code></pre></div></div>
+<div class="language-text codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-text codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">uv run tox -e format</span><br></div></code></pre></div></div>
 <h1>Build a docker image</h1>
-<div class="language-text codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-text codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">uv run tox -e docker-build</span><br></div></code></pre></div></div></div><footer class="the [...]
+<div class="language-text codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-text codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">uv run tox -e docker-build</span><br></div></code></pre></div></div></div><footer class="the [...]
       <p>
         Apache Otava (incubating) is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indica [...]
       </p>
diff --git a/docs/csv/index.html b/docs/csv/index.html
index 0c03545..8f4dfc2 100644
--- a/docs/csv/index.html
+++ b/docs/csv/index.html
@@ -2,24 +2,24 @@
 <html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-csv" data-has-hydrated="false">
 <head>
 <meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.10.1">
+<meta name="generator" content="Docusaurus v3.10.2">
 <title data-rh="true">CSV | Apache Otava</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://otava.apache.org/docs/csv"><meta data-rh=" [...]
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@300..800&amp;family=Space+Grotesk:wght@400..700&amp;family=JetBrains+Mono:wght@400;500;700&amp;display=swap"><link rel="stylesheet" href="/assets/css/styles.e5691cae.css">
-<script src="/assets/js/runtime~main.cbf2ad78.js" defer="defer"></script>
-<script src="/assets/js/main.663c53c1.js" defer="defer"></script>
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@300..800&amp;family=Space+Grotesk:wght@400..700&amp;family=JetBrains+Mono:wght@400;500;700&amp;display=swap"><link rel="stylesheet" href="/assets/css/styles.ce980333.css">
+<script src="/assets/js/runtime~main.0f49da90.js" defer="defer"></script>
+<script src="/assets/js/main.9e655e3e.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo.svg"><link rel="preload" as="image" href="/img [...]
-<div class="theme-admonition theme-admonition-tip admonition_xPY5 alert alert--success"><div class="admonitionHeading_CHqH"><span class="admonitionIcon_T4xL"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.6 [...]
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="tests">Tests<a href="#tests" class="hash-link" aria-label="Direct link to Tests" title="Direct link to Tests" translate="no">​</a></h2>
-<div class="language-yaml codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-yaml codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">tests</span><span class="token punctuation" style="color:#393A34" [...]
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example" translate="no">​</a></h2>
-<div class="language-bash codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-bash codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">docker-compose -f examples/csv/docker-compose.yaml run --rm otava analyze local.sample</span [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo.svg"><link rel="preload" as="image" href="/img [...]
+<div class="theme-admonition theme-admonition-tip admonition_pKXU alert alert--success"><div class="admonitionHeading_xMuP"><span class="admonitionIcon_LzAK"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.6 [...]
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="tests">Tests<a href="#tests" class="hash-link" aria-label="Direct link to Tests" title="Direct link to Tests" translate="no">​</a></h2>
+<div class="language-yaml codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-yaml codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">tests</span><span class="token punctuation" style="color:#393A34" [...]
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example" translate="no">​</a></h2>
+<div class="language-bash codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-bash codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">docker-compose -f examples/csv/docker-compose.yaml run --rm otava analyze local.sample</span [...]
 <p>Expected output:</p>
-<div class="language-bash codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-bash codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">time                       commit      metric1    metric2</span><br></div><div class="token- [...]
+<div class="language-bash codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-bash codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">time                       commit      metric1    metric2</span><br></div><div class="token- [...]
       <p>
         Apache Otava (incubating) is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indica [...]
       </p>
diff --git a/docs/download/index.html b/docs/download/index.html
index 02fe599..8e0156a 100644
--- a/docs/download/index.html
+++ b/docs/download/index.html
@@ -2,43 +2,43 @@
 <html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-download" data-has-hydrated="false">
 <head>
 <meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.10.1">
+<meta name="generator" content="Docusaurus v3.10.2">
 <title data-rh="true">Download | Apache Otava</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://otava.apache.org/docs/download"><meta [...]
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@300..800&amp;family=Space+Grotesk:wght@400..700&amp;family=JetBrains+Mono:wght@400;500;700&amp;display=swap"><link rel="stylesheet" href="/assets/css/styles.e5691cae.css">
-<script src="/assets/js/runtime~main.cbf2ad78.js" defer="defer"></script>
-<script src="/assets/js/main.663c53c1.js" defer="defer"></script>
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@300..800&amp;family=Space+Grotesk:wght@400..700&amp;family=JetBrains+Mono:wght@400;500;700&amp;display=swap"><link rel="stylesheet" href="/assets/css/styles.ce980333.css">
+<script src="/assets/js/runtime~main.0f49da90.js" defer="defer"></script>
+<script src="/assets/js/main.9e655e3e.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo.svg"><link rel="preload" as="image" href="/img [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo.svg"><link rel="preload" as="image" href="/img [...]
 <p>Apache Otava is released as source code tarballs with corresponding binary convenience artifacts. The latest release is available below.</p>
 <p>All releases are available under the <a href="https://www.apache.org/licenses/LICENSE-2.0" target="_blank" rel="noopener noreferrer" class="">Apache License, Version 2.0</a>.</p>
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="verify-releases">Verify Releases<a href="#verify-releases" class="hash-link" aria-label="Direct link to Verify Releases" title="Direct link to Verify Releases" translate="no">​</a></h2>
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="verify-releases">Verify Releases<a href="#verify-releases" class="hash-link" aria-label="Direct link to Verify Releases" title="Direct link to Verify Releases" translate="no">​</a></h2>
 <p>You can verify releases using the provided signatures and checksums. The <a href="https://downloads.apache.org/incubator/otava/KEYS" target="_blank" rel="noopener noreferrer" class="">KEYS</a> file contains the public PGP keys for signature verification. See <a href="https://www.apache.org/info/verification.html" target="_blank" rel="noopener noreferrer" class="">How to Verify</a> for details.</p>
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="latest-release">Latest Release<a href="#latest-release" class="hash-link" aria-label="Direct link to Latest Release" title="Direct link to Latest Release" translate="no">​</a></h2>
-<h3 class="anchor anchorTargetStickyNavbar_WKy1" id="080-latest">0.8.0 (Latest)<a href="#080-latest" class="hash-link" aria-label="Direct link to 0.8.0 (Latest)" title="Direct link to 0.8.0 (Latest)" translate="no">​</a></h3>
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="latest-release">Latest Release<a href="#latest-release" class="hash-link" aria-label="Direct link to Latest Release" title="Direct link to Latest Release" translate="no">​</a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_gcg8" id="080-latest">0.8.0 (Latest)<a href="#080-latest" class="hash-link" aria-label="Direct link to 0.8.0 (Latest)" title="Direct link to 0.8.0 (Latest)" translate="no">​</a></h3>
 <p>Released: May 2026</p>
 <table><thead><tr><th>Package</th><th>Download</th><th>Signature</th><th>Checksum</th></tr></thead><tbody><tr><td>Source</td><td><a href="https://www.apache.org/dyn/closer.lua/incubator/otava/0.8.0-incubating/apache-otava-0.8.0-incubating-src.tar.gz" target="_blank" rel="noopener noreferrer" class="">apache-otava-0.8.0-incubating-src.tar.gz</a></td><td><a href="https://downloads.apache.org/incubator/otava/0.8.0-incubating/apache-otava-0.8.0-incubating-src.tar.gz.asc" target="_blank" rel= [...]
 <p><a href="https://github.com/apache/otava/releases/tag/0.8.0-incubating" target="_blank" rel="noopener noreferrer" class="">Release Notes</a> | <a class="" href="/docs/getting-started">Documentation</a></p>
 <p><strong>Other ways to install:</strong></p>
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="install-from-pypi">Install from PyPI<a href="#install-from-pypi" class="hash-link" aria-label="Direct link to Install from PyPI" title="Direct link to Install from PyPI" translate="no">​</a></h2>
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="install-from-pypi">Install from PyPI<a href="#install-from-pypi" class="hash-link" aria-label="Direct link to Install from PyPI" title="Direct link to Install from PyPI" translate="no">​</a></h2>
 <p>The recommended way to install Apache Otava for most users is via PyPI:</p>
-<div class="language-bash codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-bash codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">pip install apache-otava</span><br></div></code></pre></div></div>
+<div class="language-bash codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-bash codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">pip install apache-otava</span><br></div></code></pre></div></div>
 <p>For a specific version:</p>
-<div class="language-bash codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-bash codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">pip install apache-otava==0.8.0</span><br></div></code></pre></div></div>
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="install-from-docker">Install from Docker<a href="#install-from-docker" class="hash-link" aria-label="Direct link to Install from Docker" title="Direct link to Install from Docker" translate="no">​</a></h2>
+<div class="language-bash codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-bash codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">pip install apache-otava==0.8.0</span><br></div></code></pre></div></div>
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="install-from-docker">Install from Docker<a href="#install-from-docker" class="hash-link" aria-label="Direct link to Install from Docker" title="Direct link to Install from Docker" translate="no">​</a></h2>
 <p>Pull the official Docker image from Docker Hub:</p>
-<div class="language-bash codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-bash codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">docker pull apache/otava</span><br></div></code></pre></div></div>
+<div class="language-bash codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-bash codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">docker pull apache/otava</span><br></div></code></pre></div></div>
 <p>For a specific version:</p>
-<div class="language-bash codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-bash codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">docker pull apache/otava:0.7.0</span><br></div></code></pre></div></div>
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="build-from-source">Build from Source<a href="#build-from-source" class="hash-link" aria-label="Direct link to Build from Source" title="Direct link to Build from Source" translate="no">​</a></h2>
+<div class="language-bash codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-bash codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">docker pull apache/otava:0.7.0</span><br></div></code></pre></div></div>
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="build-from-source">Build from Source<a href="#build-from-source" class="hash-link" aria-label="Direct link to Build from Source" title="Direct link to Build from Source" translate="no">​</a></h2>
 <p>To build Apache Otava from source, clone the repository and install:</p>
-<div class="language-bash codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-bash codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">git clone https://github.com/apache/otava.git</span><br></div><div class="token-line" style= [...]
+<div class="language-bash codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-bash codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">git clone https://github.com/apache/otava.git</span><br></div><div class="token-line" style= [...]
 <p>For more details, see the <a class="" href="/docs/install">Installation Guide</a> and <a class="" href="/docs/getting-started">Getting Started</a> documentation.</p>
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="all-releases">All Releases<a href="#all-releases" class="hash-link" aria-label="Direct link to All Releases" title="Direct link to All Releases" translate="no">​</a></h2>
-<p>All Apache Otava releases are available from the <a href="https://archive.apache.org/dist/incubator/otava/" target="_blank" rel="noopener noreferrer" class="">Apache Download Archive</a>.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_AJKP"><a href="https://github.com/apache/otava-website/tree/master/docs/download.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page" [...]
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="all-releases">All Releases<a href="#all-releases" class="hash-link" aria-label="Direct link to All Releases" title="Direct link to All Releases" translate="no">​</a></h2>
+<p>All Apache Otava releases are available from the <a href="https://archive.apache.org/dist/incubator/otava/" target="_blank" rel="noopener noreferrer" class="">Apache Download Archive</a>.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_Wgkb"><a href="https://github.com/apache/otava-website/tree/master/docs/download.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page" [...]
       <p>
         Apache Otava (incubating) is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indica [...]
       </p>
diff --git a/docs/getting-started/index.html b/docs/getting-started/index.html
index e7bba00..2bbadac 100644
--- a/docs/getting-started/index.html
+++ b/docs/getting-started/index.html
@@ -2,58 +2,58 @@
 <html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-getting-started" data-has-hydrated="false">
 <head>
 <meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.10.1">
+<meta name="generator" content="Docusaurus v3.10.2">
 <title data-rh="true">Getting Started | Apache Otava</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://otava.apache.org/docs/getting- [...]
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@300..800&amp;family=Space+Grotesk:wght@400..700&amp;family=JetBrains+Mono:wght@400;500;700&amp;display=swap"><link rel="stylesheet" href="/assets/css/styles.e5691cae.css">
-<script src="/assets/js/runtime~main.cbf2ad78.js" defer="defer"></script>
-<script src="/assets/js/main.663c53c1.js" defer="defer"></script>
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@300..800&amp;family=Space+Grotesk:wght@400..700&amp;family=JetBrains+Mono:wght@400;500;700&amp;display=swap"><link rel="stylesheet" href="/assets/css/styles.ce980333.css">
+<script src="/assets/js/runtime~main.0f49da90.js" defer="defer"></script>
+<script src="/assets/js/main.9e655e3e.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo.svg"><link rel="preload" as="image" href="/img [...]
-<div class="theme-admonition theme-admonition-tip admonition_xPY5 alert alert--success"><div class="admonitionHeading_CHqH"><span class="admonitionIcon_T4xL"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.6 [...]
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="installation">Installation<a href="#installation" class="hash-link" aria-label="Direct link to Installation" title="Direct link to Installation" translate="no">​</a></h2>
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo.svg"><link rel="preload" as="image" href="/img [...]
+<div class="theme-admonition theme-admonition-tip admonition_pKXU alert alert--success"><div class="admonitionHeading_xMuP"><span class="admonitionIcon_LzAK"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.6 [...]
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="installation">Installation<a href="#installation" class="hash-link" aria-label="Direct link to Installation" title="Direct link to Installation" translate="no">​</a></h2>
 <p>Otava requires Python 3.8.  If you don&#x27;t have Python 3.8, use pyenv to install it.</p>
-<div class="language-bash codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-bash codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">pip install apache-otava</span><br></div></code></pre></div></div>
+<div class="language-bash codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-bash codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">pip install apache-otava</span><br></div></code></pre></div></div>
 <p>or</p>
-<div class="language-bash codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-bash codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">docker pull apache/otava</span><br></div></code></pre></div></div>
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="setup">Setup<a href="#setup" class="hash-link" aria-label="Direct link to Setup" title="Direct link to Setup" translate="no">​</a></h2>
+<div class="language-bash codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-bash codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">docker pull apache/otava</span><br></div></code></pre></div></div>
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="setup">Setup<a href="#setup" class="hash-link" aria-label="Direct link to Setup" title="Direct link to Setup" translate="no">​</a></h2>
 <p>Copy the main configuration file <code>resources/otava.yaml</code> to <code>~/.otava/otava.yaml</code> and adjust data source configuration.</p>
-<div class="theme-admonition theme-admonition-tip admonition_xPY5 alert alert--success"><div class="admonitionHeading_CHqH"><span class="admonitionIcon_T4xL"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.6 [...]
+<div class="theme-admonition theme-admonition-tip admonition_pKXU alert alert--success"><div class="admonitionHeading_xMuP"><span class="admonitionIcon_LzAK"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.6 [...]
 <a class="" href="/docs/postgresql">PostgreSQL</a>, or <a class="" href="/docs/big-query">BigQuery</a>.</p></div></div>
 <p>Alternatively, it is possible to leave the config file as is, and provide credentials in the environment
 by setting appropriate environment variables.
 Environment variables are interpolated before interpreting the configuration file.</p>
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="defining-tests">Defining tests<a href="#defining-tests" class="hash-link" aria-label="Direct link to Defining tests" title="Direct link to Defining tests" translate="no">​</a></h2>
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="defining-tests">Defining tests<a href="#defining-tests" class="hash-link" aria-label="Direct link to Defining tests" title="Direct link to Defining tests" translate="no">​</a></h2>
 <p>All test configurations are defined in the main configuration file.
 Otava supports reading data from and publishing results to a CSV file, <a href="https://graphiteapp.org/" target="_blank" rel="noopener noreferrer" class="">Graphite</a>,
 <a href="https://www.postgresql.org/" target="_blank" rel="noopener noreferrer" class="">PostgreSQL</a>, and <a href="https://cloud.google.com/bigquery" target="_blank" rel="noopener noreferrer" class="">BigQuery</a>.</p>
 <p>Tests are defined in the <code>tests</code> section. For example, the following definition will import results of the test from a CSV file:</p>
-<div class="language-yaml codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-yaml codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">tests</span><span class="token punctuation" style="color:#393A34" [...]
+<div class="language-yaml codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-yaml codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">tests</span><span class="token punctuation" style="color:#393A34" [...]
 <p>The <code>time_column</code> property points to the name of the column storing the timestamp
 of each test-run. The data points will be ordered by that column.</p>
 <p>The <code>metrics</code> property selects the columns that hold the values to be analyzed. These values must
 be numbers convertible to floats. The <code>metrics</code> property can be not only a simple list of column
 names, but it can also be a dictionary configuring other properties of each metric,
 the column name or direction:</p>
-<div class="language-yaml codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-yaml codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">metrics</span><span class="token punctuation" style="color:#393A3 [...]
+<div class="language-yaml codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-yaml codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">metrics</span><span class="token punctuation" style="color:#393A3 [...]
 <p>Direction can be 1 or -1. If direction is set to 1, this means that the higher the metric, the
 better the performance is. If it is set to -1, higher values mean worse performance.</p>
 <p>The <code>attributes</code> property describes any other columns that should be attached to the final
 report. Special attribute <code>version</code> and <code>commit</code> can be used to query for a given time-range.</p>
-<div class="theme-admonition theme-admonition-tip admonition_xPY5 alert alert--success"><div class="admonitionHeading_CHqH"><span class="admonitionIcon_T4xL"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.6 [...]
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="listing-available-tests">Listing Available Tests<a href="#listing-available-tests" class="hash-link" aria-label="Direct link to Listing Available Tests" title="Direct link to Listing Available Tests" translate="no">​</a></h2>
-<div class="language-text codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-text codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">otava list-groups</span><br></div><div class="token-line" style="color:#393A34"><span class= [...]
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="listing-available-metrics-for-tests">Listing Available Metrics for Tests<a href="#listing-available-metrics-for-tests" class="hash-link" aria-label="Direct link to Listing Available Metrics for Tests" title="Direct link to Listing Available Metrics for Tests" translate="no">​</a></h2>
+<div class="theme-admonition theme-admonition-tip admonition_pKXU alert alert--success"><div class="admonitionHeading_xMuP"><span class="admonitionIcon_LzAK"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.6 [...]
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="listing-available-tests">Listing Available Tests<a href="#listing-available-tests" class="hash-link" aria-label="Direct link to Listing Available Tests" title="Direct link to Listing Available Tests" translate="no">​</a></h2>
+<div class="language-text codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-text codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">otava list-groups</span><br></div><div class="token-line" style="color:#393A34"><span class= [...]
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="listing-available-metrics-for-tests">Listing Available Metrics for Tests<a href="#listing-available-metrics-for-tests" class="hash-link" aria-label="Direct link to Listing Available Metrics for Tests" title="Direct link to Listing Available Metrics for Tests" translate="no">​</a></h2>
 <p>To list all available metrics defined for the test:</p>
-<div class="language-text codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-text codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">otava list-metrics &lt;test&gt;</span><br></div></code></pre></div></div>
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="finding-change-points">Finding Change Points<a href="#finding-change-points" class="hash-link" aria-label="Direct link to Finding Change Points" title="Direct link to Finding Change Points" translate="no">​</a></h2>
-<div class="theme-admonition theme-admonition-tip admonition_xPY5 alert alert--success"><div class="admonitionHeading_CHqH"><span class="admonitionIcon_T4xL"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.6 [...]
+<div class="language-text codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-text codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">otava list-metrics &lt;test&gt;</span><br></div></code></pre></div></div>
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="finding-change-points">Finding Change Points<a href="#finding-change-points" class="hash-link" aria-label="Direct link to Finding Change Points" title="Direct link to Finding Change Points" translate="no">​</a></h2>
+<div class="theme-admonition theme-admonition-tip admonition_pKXU alert alert--success"><div class="admonitionHeading_xMuP"><span class="admonitionIcon_LzAK"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.6 [...]
 <a class="" href="/docs/basics#validating-performance-of-a-feature-branch">Validating Performance of a Feature Branch</a>.
 For an in-depth explanation of the underlying algorithm, see <a class="" href="/docs/math">Change Point Detection</a>.</p></div></div>
-<div class="language-text codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-text codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">otava analyze &lt;test&gt;...</span><br></div><div class="token-line" style="color:#393A34"> [...]
+<div class="language-text codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-text codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">otava analyze &lt;test&gt;...</span><br></div><div class="token-line" style="color:#393A34"> [...]
 <p>This command prints interesting results of all runs of the test and a list of change-points.</p>
 <p>A change-point is a moment when a metric value starts to differ significantly from the values of the earlier runs and
 when the difference is statistically significant.</p>
@@ -63,8 +63,8 @@ more data points are needed to confirm the change, therefore Otava may not notic
 that regressed.</p>
 <p>The <code>analyze</code> command accepts multiple tests or test groups.
 The results are simply concatenated.</p>
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example" translate="no">​</a></h2>
-<div class="language-text codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-text codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">$ otava analyze local.sample</span><br></div><div class="token-line" style="color:#393A34">< [...]
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example" translate="no">​</a></h2>
+<div class="language-text codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-text codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">$ otava analyze local.sample</span><br></div><div class="token-line" style="color:#393A34">< [...]
       <p>
         Apache Otava (incubating) is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indica [...]
       </p>
diff --git a/docs/grafana/index.html b/docs/grafana/index.html
index 44fcfec..23d7817 100644
--- a/docs/grafana/index.html
+++ b/docs/grafana/index.html
@@ -2,20 +2,20 @@
 <html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-grafana" data-has-hydrated="false">
 <head>
 <meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.10.1">
+<meta name="generator" content="Docusaurus v3.10.2">
 <title data-rh="true">Grafana Integration | Apache Otava</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://otava.apache.org/docs/graf [...]
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@300..800&amp;family=Space+Grotesk:wght@400..700&amp;family=JetBrains+Mono:wght@400;500;700&amp;display=swap"><link rel="stylesheet" href="/assets/css/styles.e5691cae.css">
-<script src="/assets/js/runtime~main.cbf2ad78.js" defer="defer"></script>
-<script src="/assets/js/main.663c53c1.js" defer="defer"></script>
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@300..800&amp;family=Space+Grotesk:wght@400..700&amp;family=JetBrains+Mono:wght@400;500;700&amp;display=swap"><link rel="stylesheet" href="/assets/css/styles.ce980333.css">
+<script src="/assets/js/runtime~main.0f49da90.js" defer="defer"></script>
+<script src="/assets/js/main.9e655e3e.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo.svg"><link rel="preload" as="image" href="/img [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo.svg"><link rel="preload" as="image" href="/img [...]
 <p>Change points found by <code>analyze</code> can be exported
 as Grafana annotations using the <code>--update-grafana</code> flag:</p>
-<div class="language-text codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-text codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">$ otava analyze &lt;test or group&gt; --update-grafana</span><br></div></code></pre></div></div>
+<div class="language-text codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-text codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">$ otava analyze &lt;test or group&gt; --update-grafana</span><br></div></code></pre></div></div>
 <p>The annotations generated by Otava get the following tags:</p>
 <ul>
 <li class=""><code>otava</code></li>
@@ -38,16 +38,16 @@ and each path component is exported as a separate tag</li>
 <li class=""><code>%{GRAPHITE_PREFIX_COMPONENTS}</code> - similar as <code>%{GRAPHITE_PATH_COMPONENTS}</code> but splits the prefix
 of the path instead of the path</li>
 </ul>
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example" translate="no">​</a></h2>
-<div class="theme-admonition theme-admonition-tip admonition_xPY5 alert alert--success"><div class="admonitionHeading_CHqH"><span class="admonitionIcon_T4xL"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.6 [...]
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example" translate="no">​</a></h2>
+<div class="theme-admonition theme-admonition-tip admonition_pKXU alert alert--success"><div class="admonitionHeading_xMuP"><span class="admonitionIcon_LzAK"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.6 [...]
 <p>Start docker-compose with Graphite in one tab:</p>
-<div class="language-bash codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-bash codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">docker-compose -f examples/graphite/docker-compose.yaml up --force-recreate --always-recreat [...]
+<div class="language-bash codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-bash codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">docker-compose -f examples/graphite/docker-compose.yaml up --force-recreate --always-recreat [...]
 <p>Run otava in another tab:</p>
-<div class="language-bash codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-bash codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">docker-compose -f examples/graphite/docker-compose.yaml run --rm otava analyze my-product.te [...]
+<div class="language-bash codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-bash codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">docker-compose -f examples/graphite/docker-compose.yaml run --rm otava analyze my-product.te [...]
 <p>Expected output:</p>
-<div class="language-bash codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-bash codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">time                       run    branch    version    commit      throughput    response_ti [...]
+<div class="language-bash codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-bash codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">time                       run    branch    version    commit      throughput    response_ti [...]
 <p>Open local <a href="http://localhost:3000" target="_blank" rel="noopener noreferrer" class="">Grafana</a> in your browser (use default <code>admin/admin</code> credentials), open
-<code>Benchmarks</code> dashboard, and see your data points and annotations on both charts.:</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_AJKP"><a href="https://github.com/apache/otava-website/tree/master/docs/grafana.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_6H3h" aria-hid [...]
+<code>Benchmarks</code> dashboard, and see your data points and annotations on both charts.:</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_Wgkb"><a href="https://github.com/apache/otava-website/tree/master/docs/grafana.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Df7L" aria-hid [...]
       <p>
         Apache Otava (incubating) is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indica [...]
       </p>
diff --git a/docs/graphite/index.html b/docs/graphite/index.html
index 23279b0..dd09b9f 100644
--- a/docs/graphite/index.html
+++ b/docs/graphite/index.html
@@ -2,29 +2,29 @@
 <html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-graphite" data-has-hydrated="false">
 <head>
 <meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.10.1">
+<meta name="generator" content="Docusaurus v3.10.2">
 <title data-rh="true">Graphite | Apache Otava</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://otava.apache.org/docs/graphite"><meta [...]
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@300..800&amp;family=Space+Grotesk:wght@400..700&amp;family=JetBrains+Mono:wght@400;500;700&amp;display=swap"><link rel="stylesheet" href="/assets/css/styles.e5691cae.css">
-<script src="/assets/js/runtime~main.cbf2ad78.js" defer="defer"></script>
-<script src="/assets/js/main.663c53c1.js" defer="defer"></script>
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@300..800&amp;family=Space+Grotesk:wght@400..700&amp;family=JetBrains+Mono:wght@400;500;700&amp;display=swap"><link rel="stylesheet" href="/assets/css/styles.ce980333.css">
+<script src="/assets/js/runtime~main.0f49da90.js" defer="defer"></script>
+<script src="/assets/js/main.9e655e3e.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo.svg"><link rel="preload" as="image" href="/img [...]
-<div class="theme-admonition theme-admonition-tip admonition_xPY5 alert alert--success"><div class="admonitionHeading_CHqH"><span class="admonitionIcon_T4xL"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.6 [...]
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="graphite-and-grafana-connection">Graphite and Grafana Connection<a href="#graphite-and-grafana-connection" class="hash-link" aria-label="Direct link to Graphite and Grafana Connection" title="Direct link to Graphite and Grafana Connection" translate="no">​</a></h2>
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo.svg"><link rel="preload" as="image" href="/img [...]
+<div class="theme-admonition theme-admonition-tip admonition_pKXU alert alert--success"><div class="admonitionHeading_xMuP"><span class="admonitionIcon_LzAK"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.6 [...]
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="graphite-and-grafana-connection">Graphite and Grafana Connection<a href="#graphite-and-grafana-connection" class="hash-link" aria-label="Direct link to Graphite and Grafana Connection" title="Direct link to Graphite and Grafana Connection" translate="no">​</a></h2>
 <p>The following block contains Graphite and Grafana connection details:</p>
-<div class="language-yaml codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-yaml codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">graphite</span><span class="token punctuation" style="color:#393A [...]
+<div class="language-yaml codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-yaml codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">graphite</span><span class="token punctuation" style="color:#393A [...]
 <p>These variables can be specified directly in <code>otava.yaml</code> or passed as environment variables:</p>
-<div class="language-yaml codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-yaml codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">graphite</span><span class="token punctuation" style="color:#393A [...]
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="tests">Tests<a href="#tests" class="hash-link" aria-label="Direct link to Tests" title="Direct link to Tests" translate="no">​</a></h2>
-<h3 class="anchor anchorTargetStickyNavbar_WKy1" id="importing-results-from-graphite-1">Importing results from Graphite<a href="#importing-results-from-graphite-1" class="hash-link" aria-label="Direct link to Importing results from Graphite" title="Direct link to Importing results from Graphite" translate="no">​</a></h3>
+<div class="language-yaml codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-yaml codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">graphite</span><span class="token punctuation" style="color:#393A [...]
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="tests">Tests<a href="#tests" class="hash-link" aria-label="Direct link to Tests" title="Direct link to Tests" translate="no">​</a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_gcg8" id="importing-results-from-graphite-1">Importing results from Graphite<a href="#importing-results-from-graphite-1" class="hash-link" aria-label="Direct link to Importing results from Graphite" title="Direct link to Importing results from Graphite" translate="no">​</a></h3>
 <p>Test configuration contains queries selecting experiment data from Graphite. This is done by specifying the Graphite
 path prefix common for all the test&#x27;s metrics and suffixes for each of the metrics recorded by the test run.</p>
-<div class="language-yaml codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-yaml codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">tests</span><span class="token punctuation" style="color:#393A34" [...]
-<h3 class="anchor anchorTargetStickyNavbar_WKy1" id="tags">Tags<a href="#tags" class="hash-link" aria-label="Direct link to Tags" title="Direct link to Tags" translate="no">​</a></h3>
+<div class="language-yaml codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-yaml codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">tests</span><span class="token punctuation" style="color:#393A34" [...]
+<h3 class="anchor anchorTargetStickyNavbar_gcg8" id="tags">Tags<a href="#tags" class="hash-link" aria-label="Direct link to Tags" title="Direct link to Tags" translate="no">​</a></h3>
 <blockquote>
 <p>[!WARNING]
 Tags do not work as expected in the current version. See <a href="https://github.com/apache/otava/issues/24" target="_blank" rel="noopener noreferrer" class="">https://github.com/apache/otava/issues/24</a> for more details</p>
@@ -32,16 +32,16 @@ Tags do not work as expected in the current version. See <a href="https://github
 <p>The optional <code>tags</code> property contains the tags that are used to query for Graphite events that store
 additional test run metadata such as run identifier, commit, branch and product version information.</p>
 <p>The following command will post an event with the test run metadata:</p>
-<div class="language-shell codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-shell codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">$ curl -X POST &quot;http://graphite_address/events/&quot; \</span><br></div><div class="t [...]
+<div class="language-shell codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-shell codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">$ curl -X POST &quot;http://graphite_address/events/&quot; \</span><br></div><div class="t [...]
 <p>Posting those events is not mandatory, but when they are available, Otava is able to
 filter data by commit or version using <code>--since-commit</code> or <code>--since-version</code> selectors.</p>
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example" translate="no">​</a></h2>
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example" translate="no">​</a></h2>
 <p>Start docker-compose with Graphite in one tab:</p>
-<div class="language-bash codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-bash codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">docker-compose -f examples/graphite/docker-compose.yaml up --force-recreate --always-recreat [...]
+<div class="language-bash codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-bash codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">docker-compose -f examples/graphite/docker-compose.yaml up --force-recreate --always-recreat [...]
 <p>Run otava in another tab:</p>
-<div class="language-bash codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-bash codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">docker-compose -f examples/graphite/docker-compose.yaml run --rm otava analyze my-product.te [...]
+<div class="language-bash codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-bash codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">docker-compose -f examples/graphite/docker-compose.yaml run --rm otava analyze my-product.te [...]
 <p>Expected output:</p>
-<div class="language-bash codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-bash codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">time                       run    branch    version    commit      throughput    response_ti [...]
+<div class="language-bash codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-bash codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">time                       run    branch    version    commit      throughput    response_ti [...]
       <p>
         Apache Otava (incubating) is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indica [...]
       </p>
diff --git a/docs/install/index.html b/docs/install/index.html
index ab8e6b4..0187a6c 100644
--- a/docs/install/index.html
+++ b/docs/install/index.html
@@ -2,23 +2,23 @@
 <html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-install" data-has-hydrated="false">
 <head>
 <meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.10.1">
+<meta name="generator" content="Docusaurus v3.10.2">
 <title data-rh="true">Installation | Apache Otava</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://otava.apache.org/docs/install"><m [...]
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@300..800&amp;family=Space+Grotesk:wght@400..700&amp;family=JetBrains+Mono:wght@400;500;700&amp;display=swap"><link rel="stylesheet" href="/assets/css/styles.e5691cae.css">
-<script src="/assets/js/runtime~main.cbf2ad78.js" defer="defer"></script>
-<script src="/assets/js/main.663c53c1.js" defer="defer"></script>
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@300..800&amp;family=Space+Grotesk:wght@400..700&amp;family=JetBrains+Mono:wght@400;500;700&amp;display=swap"><link rel="stylesheet" href="/assets/css/styles.ce980333.css">
+<script src="/assets/js/runtime~main.0f49da90.js" defer="defer"></script>
+<script src="/assets/js/main.9e655e3e.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo.svg"><link rel="preload" as="image" href="/img [...]
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="install-using-pip">Install using pip<a href="#install-using-pip" class="hash-link" aria-label="Direct link to Install using pip" title="Direct link to Install using pip" translate="no">​</a></h2>
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo.svg"><link rel="preload" as="image" href="/img [...]
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="install-using-pip">Install using pip<a href="#install-using-pip" class="hash-link" aria-label="Direct link to Install using pip" title="Direct link to Install using pip" translate="no">​</a></h2>
 <p>Otava requires Python 3.8.  If you don&#x27;t have python 3.8, use pyenv to install it.</p>
-<div class="language-bash codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-bash codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">pip install apache-otava</span><br></div></code></pre></div></div>
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="install-using-docker">Install using Docker<a href="#install-using-docker" class="hash-link" aria-label="Direct link to Install using Docker" title="Direct link to Install using Docker" translate="no">​</a></h2>
+<div class="language-bash codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-bash codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">pip install apache-otava</span><br></div></code></pre></div></div>
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="install-using-docker">Install using Docker<a href="#install-using-docker" class="hash-link" aria-label="Direct link to Install using Docker" title="Direct link to Install using Docker" translate="no">​</a></h2>
 <p>Pull the official Docker image:</p>
-<div class="language-bash codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-bash codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">docker pull apache/otava</span><br></div></code></pre></div></div></div><footer class="theme [...]
+<div class="language-bash codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-bash codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">docker pull apache/otava</span><br></div></code></pre></div></div></div><footer class="theme [...]
       <p>
         Apache Otava (incubating) is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indica [...]
       </p>
diff --git a/docs/math/index.html b/docs/math/index.html
index 9e39760..e4322f1 100644
--- a/docs/math/index.html
+++ b/docs/math/index.html
@@ -2,18 +2,18 @@
 <html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-math" data-has-hydrated="false">
 <head>
 <meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.10.1">
+<meta name="generator" content="Docusaurus v3.10.2">
 <title data-rh="true">Change Point Detection | Apache Otava</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://otava.apache.org/docs/m [...]
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@300..800&amp;family=Space+Grotesk:wght@400..700&amp;family=JetBrains+Mono:wght@400;500;700&amp;display=swap"><link rel="stylesheet" href="/assets/css/styles.e5691cae.css">
-<script src="/assets/js/runtime~main.cbf2ad78.js" defer="defer"></script>
-<script src="/assets/js/main.663c53c1.js" defer="defer"></script>
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@300..800&amp;family=Space+Grotesk:wght@400..700&amp;family=JetBrains+Mono:wght@400;500;700&amp;display=swap"><link rel="stylesheet" href="/assets/css/styles.ce980333.css">
+<script src="/assets/js/runtime~main.0f49da90.js" defer="defer"></script>
+<script src="/assets/js/main.9e655e3e.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo.svg"><link rel="preload" as="image" href="/img [...]
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="overview">Overview<a href="#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no">​</a></h2>
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo.svg"><link rel="preload" as="image" href="/img [...]
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="overview">Overview<a href="#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no">​</a></h2>
 <p>Apache Otava implements a nonparametric change point detection algorithm designed to identify statistically significant distribution changes in time-ordered data. The method is primarily based on the <strong>E-Divisive family of algorithms</strong> for multivariate change point detection, with some practical adaptations.</p>
 <p>At a high level, the algorithm:</p>
 <ul>
@@ -28,13 +28,13 @@
 <li class="">Practical runtime for production workloads</li>
 </ul>
 <p>A representative example of algorithm application:</p>
-<p><img decoding="async" loading="lazy" alt="Figure 1. Example" src="/assets/images/example-854004087cd460d4b0743b0a705ad241.png" title="Example" width="630" height="470" class="img_TewV"></p>
+<p><img decoding="async" loading="lazy" alt="Figure 1. Example" src="/assets/images/example-854004087cd460d4b0743b0a705ad241.png" title="Example" width="630" height="470" class="img_TmvR"></p>
 <p>Figure 1. An example of running <a href="https://github.com/apache/otava/tree/master/otava/analysis.py" target="_blank" rel="noopener noreferrer" class="">compute_change_points</a> function on <a href="https://github.com/apache/otava/tree/master/tests/tigerbeetle_test.py" target="_blank" rel="noopener noreferrer" class="">Tigerbeetle dataset</a>. The parameters for the <code>compute_change_points</code> function are displayed in the bottom right corner. Here the algorithm detected 5 c [...]
 <p>With that being said, the difference could be merely a change in the mean, but the algorithm isn&#x27;t restricted to that and could also detect other kinds of changes, such as a change in variance, skewness, and other shifts in the overall shapes between the distributions even if the mean stays constant. Once potential change points are identified, a statistical test is performed to validate which of the points are in fact change points. That is to say, they are statistically signifi [...]
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="technical-details">Technical Details<a href="#technical-details" class="hash-link" aria-label="Direct link to Technical Details" title="Direct link to Technical Details" translate="no">​</a></h2>
-<h3 class="anchor anchorTargetStickyNavbar_WKy1" id="main-idea">Main Idea<a href="#main-idea" class="hash-link" aria-label="Direct link to Main Idea" title="Direct link to Main Idea" translate="no">​</a></h3>
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="technical-details">Technical Details<a href="#technical-details" class="hash-link" aria-label="Direct link to Technical Details" title="Direct link to Technical Details" translate="no">​</a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_gcg8" id="main-idea">Main Idea<a href="#main-idea" class="hash-link" aria-label="Direct link to Main Idea" title="Direct link to Main Idea" translate="no">​</a></h3>
 <p>The main idea is to use a divergence measure between distributions to identify potential points in time series at which the characteristics of the time series change. Namely, having a time series <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>Z</mi><mo>=</mo><mo stretchy="false">{</mo><msub><mi>Z</mi><mn>0</mn></msub><mo separator="true">,</mo><mo>⋯</mo><mtext> </mtext><mo separator="true">,</mo><msub><mi>Z</mi><mro [...]
-<p><img decoding="async" loading="lazy" alt="Figure 2. Main Idea" src="/assets/images/main_idea-f33c9953d7e1e52fbfe09e12d783b5a0.png" title="Main Idea" width="1004" height="611" class="img_TewV"></p>
+<p><img decoding="async" loading="lazy" alt="Figure 2. Main Idea" src="/assets/images/main_idea-f33c9953d7e1e52fbfe09e12d783b5a0.png" title="Main Idea" width="1004" height="611" class="img_TmvR"></p>
 <p>Figure 2. On the <strong>left subfigure</strong>, there is a time-series <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>Z</mi><mo>=</mo><mo stretchy="false">{</mo><msub><mi>Z</mi><mn>0</mn></msub><mo separator="true">,</mo><mo>⋯</mo><msub><mi>Z</mi><mn>21</mn></msub><mo stretchy="false">}</mo></mrow><annotation encoding="application/x-tex">Z=\{ Z_0, \cdots Z_{21}\}</annotation></semantics></math></span><span class=" [...]
 <p>There are a couple of additional nuances and notes that we want to mention:</p>
 <ul>
@@ -46,9 +46,9 @@
 <li class="">In the example in Figure 2 we effectively used distance between means as a distance between the distributions. It&#x27;s an oversimplification for illustrative purposes, and in reality we actually use a divergence measure between multivariate distributions. See <strong><a href="#original-work" class="">Original Work</a></strong> section for more details.</li>
 <li class="">In the example in Figure 2, we compared only two pairs of the values <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false">(</mo><msub><mover accent="true"><mi>τ</mi><mo>^</mo></mover><mn>1</mn></msub><mo separator="true">,</mo><msub><mover accent="true"><mi>κ</mi><mo>^</mo></mover><mn>1</mn></msub><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">(\hat{\tau}_1, \hat{\kap [...]
 </ul>
-<p><img decoding="async" loading="lazy" alt="Figure 3. Tau-Kappa" src="/assets/images/tau_kappa-c4875fc4bc4324d2e319e89eba7ec51a.png" title="Tau Kappa" width="788" height="690" class="img_TewV"></p>
+<p><img decoding="async" loading="lazy" alt="Figure 3. Tau-Kappa" src="/assets/images/tau_kappa-c4875fc4bc4324d2e319e89eba7ec51a.png" title="Tau Kappa" width="788" height="690" class="img_TmvR"></p>
 <p>Figure 3. Divergence measure between distributions of <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>X</mi><mi>τ</mi></msub></mrow><annotation encoding="application/x-tex">X_\tau</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8333em;vertical-align:-0.15em"></span><span class="mord"><span class="mord mathnormal" style="mar [...]
-<h3 class="anchor anchorTargetStickyNavbar_WKy1" id="original-work">Original Work<a href="#original-work" class="hash-link" aria-label="Direct link to Original Work" title="Direct link to Original Work" translate="no">​</a></h3>
+<h3 class="anchor anchorTargetStickyNavbar_gcg8" id="original-work">Original Work<a href="#original-work" class="hash-link" aria-label="Direct link to Original Work" title="Direct link to Original Work" translate="no">​</a></h3>
 <p>The original work was presented in <a href="https://arxiv.org/abs/1306.4933" target="_blank" rel="noopener noreferrer" class=""><em>&quot;A Nonparametric Approach for Multiple Change Point Analysis of Multivariate Data&quot; by Matteson and James</em></a>. The authors provided extensive theoretical reasoning on using the following empirical divergence measure:</p>
 <span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mover accent="true"><mi mathvariant="script">Q</mi><mo>^</mo></mover><mo stretchy="false">(</mo><msub><mi>X</mi><mi>τ</mi></msub><mo separator="true">,</mo><msub><mi>Y</mi><mi>τ</mi></msub><mo stretchy="false">(</mo><mi>κ</mi><mo stretchy="false">)</mo><mo separator="true">;</mo><mi>α</mi><mo stretchy="false">)</mo><mo>=</mo><mfrac> [...]
 <span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mover accent="true"><mi mathvariant="script">E</mi><mo>^</mo></mover><mo stretchy="false">(</mo><msub><mi>X</mi><mi>τ</mi></msub><mo separator="true">,</mo><msub><mi>Y</mi><mi>τ</mi></msub><mo stretchy="false">(</mo><mi>κ</mi><mo stretchy="false">)</mo><mo separator="true">;</mo><mi>α</mi><mo stretchy="false">)</mo><mo>=</mo><mfrac> [...]
@@ -56,7 +56,7 @@
 <p>The most &quot;dissimilar&quot; subsequences are given by</p>
 <span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mo stretchy="false">(</mo><mover accent="true"><mi>τ</mi><mo>^</mo></mover><mo separator="true">,</mo><mover accent="true"><mi>κ</mi><mo>^</mo></mover><mo stretchy="false">)</mo><mo>=</mo><mtext>arg</mtext><munder><mrow><mi>max</mi><mo>⁡</mo></mrow><mrow><mo stretchy="false">(</mo><mi>τ</mi><mo separator="true">,</mo><mi>κ</mi><mo s [...]
 <p>After the subsequences are found, one needs to find the probability that <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>X</mi><mover accent="true"><mi>τ</mi><mo>^</mo></mover></msub></mrow><annotation encoding="application/x-tex">X_{\hat{\tau}}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8333em;vertical-align:-0.15em"> [...]
-<h3 class="anchor anchorTargetStickyNavbar_WKy1" id="hunter-paper">Hunter Paper<a href="#hunter-paper" class="hash-link" aria-label="Direct link to Hunter Paper" title="Direct link to Hunter Paper" translate="no">​</a></h3>
+<h3 class="anchor anchorTargetStickyNavbar_gcg8" id="hunter-paper">Hunter Paper<a href="#hunter-paper" class="hash-link" aria-label="Direct link to Hunter Paper" title="Direct link to Hunter Paper" translate="no">​</a></h3>
 <p>While the original paper was theoretically sound, there were a few practical issues with the methodology. They were outlined clearly in <a href="https://arxiv.org/abs/2301.03034" target="_blank" rel="noopener noreferrer" class=""><em>Hunter: Using Change Point Detection to Hunt for Performance Regressions by Fleming et al.</em></a>. Here is the short outline, with more details in the linked paper:</p>
 <ul>
 <li class="">High computational cost due to the permutation significance test.</li>
@@ -69,7 +69,7 @@
 <li class=""><strong>Fixed-Sized Windows:</strong> Instead of looking at the whole time series, the algorithm traverses it through an overlapping sliding window approach - <em>This helps catch special pattern-cases described in the paper</em>.</li>
 <li class=""><strong>Weak Change Points:</strong> Having two significance thresholds. Algorithm starts with a more relaxed threshold to identify a larger set of candidate change points, called &quot;weak&quot; change points, and then continues by re-evaluating all &quot;weak&quot; change points using stricter threshold to yield the final change points - <em>Using a single threshold could have myopically stopped the algorithm. Allowing it to look for more points and filter out the &quot;w [...]
 </ol>
-<h3 class="anchor anchorTargetStickyNavbar_WKy1" id="apache-otava-implementation">Apache Otava Implementation<a href="#apache-otava-implementation" class="hash-link" aria-label="Direct link to Apache Otava Implementation" title="Direct link to Apache Otava Implementation" translate="no">​</a></h3>
+<h3 class="anchor anchorTargetStickyNavbar_gcg8" id="apache-otava-implementation">Apache Otava Implementation<a href="#apache-otava-implementation" class="hash-link" aria-label="Direct link to Apache Otava Implementation" title="Direct link to Apache Otava Implementation" translate="no">​</a></h3>
 <p>The current implementation in Apache Otava is conceptually the one from the Hunter paper with a newly rewritten implementation of the algorithm.</p>
 <p>Starting with a zero-indexed time series <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>Z</mi><mo>=</mo><mo stretchy="false">{</mo><msub><mi>Z</mi><mn>0</mn></msub><mo separator="true">,</mo><msub><mi>Z</mi><mn>1</mn></msub><mo separator="true">,</mo><mo>⋯</mo><mtext> </mtext><mo separator="true">,</mo><msub><mi>Z</mi><mrow><mi>T</mi><mo>−</mo><mn>1</mn></mrow></msub><mo stretchy="false">}</mo></mrow><annotation enc [...]
 <span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mi>Q</mi><mo stretchy="false">(</mo><mi>s</mi><mo separator="true">,</mo><mi>τ</mi><mo separator="true">,</mo><mi>κ</mi><mo stretchy="false">)</mo><mo>=</mo><msub><mrow><mi mathvariant="script">Q</mi><mo stretchy="false">(</mo><mo stretchy="false">{</mo><msub><mi>Z</mi><mi>s</mi></msub><mo separator="true">,</mo><msub><mi>Z</mi><mro [...]
@@ -84,7 +84,7 @@ Finally, we can use function <span class="katex"><span class="katex-mathml"><mat
 <span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mi>B</mi><mo stretchy="false">(</mo><mi>s</mi><mo separator="true">,</mo><mi>τ</mi><mo separator="true">,</mo><mi>κ</mi><mo stretchy="false">)</mo><mo>=</mo><mfrac><mrow><mn>2</mn><mo stretchy="false">(</mo><mi>κ</mi><mo>−</mo><mi>τ</mi><mo stretchy="false">)</mo></mrow><mrow><mo stretchy="false">(</mo><mi>κ</mi><mo>−</mo><mi>s</mi> [...]
 <span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mi>C</mi><mo stretchy="false">(</mo><mi>s</mi><mo separator="true">,</mo><mi>τ</mi><mo separator="true">,</mo><mi>κ</mi><mo stretchy="false">)</mo><mo>=</mo><mfrac><mrow><mn>2</mn><mo stretchy="false">(</mo><mi>τ</mi><mo>−</mo><mi>s</mi><mo stretchy="false">)</mo></mrow><mrow><mo stretchy="false">(</mo><mi>κ</mi><mo>−</mo><mi>s</mi> [...]
 <p>Note that <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>A</mi><mo stretchy="false">(</mo><mi>s</mi><mo separator="true">,</mo><mi>s</mi><mo separator="true">,</mo><mi>κ</mi><mo stretchy="false">)</mo><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">A(s, s, \kappa)=0</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="heig [...]
-<p>These formulas are effectively used in Apache Otava after some NumPy vectorizations. For details see <a href="https://github.com/apache/otava/tree/master/otava/change_point_divisive/calculator.py" target="_blank" rel="noopener noreferrer" class="">change_point_divisive/calculator.py</a>.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_AJKP"><a href="https://github.com/apache/otava-website [...]
+<p>These formulas are effectively used in Apache Otava after some NumPy vectorizations. For details see <a href="https://github.com/apache/otava/tree/master/otava/change_point_divisive/calculator.py" target="_blank" rel="noopener noreferrer" class="">change_point_divisive/calculator.py</a>.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_Wgkb"><a href="https://github.com/apache/otava-website [...]
       <p>
         Apache Otava (incubating) is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indica [...]
       </p>
diff --git a/docs/overview/index.html b/docs/overview/index.html
index cba9fb9..cccae46 100644
--- a/docs/overview/index.html
+++ b/docs/overview/index.html
@@ -2,18 +2,18 @@
 <html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-overview" data-has-hydrated="false">
 <head>
 <meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.10.1">
+<meta name="generator" content="Docusaurus v3.10.2">
 <title data-rh="true">Overview | Apache Otava</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://otava.apache.org/docs/overview"><meta [...]
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@300..800&amp;family=Space+Grotesk:wght@400..700&amp;family=JetBrains+Mono:wght@400;500;700&amp;display=swap"><link rel="stylesheet" href="/assets/css/styles.e5691cae.css">
-<script src="/assets/js/runtime~main.cbf2ad78.js" defer="defer"></script>
-<script src="/assets/js/main.663c53c1.js" defer="defer"></script>
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@300..800&amp;family=Space+Grotesk:wght@400..700&amp;family=JetBrains+Mono:wght@400;500;700&amp;display=swap"><link rel="stylesheet" href="/assets/css/styles.ce980333.css">
+<script src="/assets/js/runtime~main.0f49da90.js" defer="defer"></script>
+<script src="/assets/js/main.9e655e3e.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo.svg"><link rel="preload" as="image" href="/img [...]
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="getting-started">Getting Started<a href="#getting-started" class="hash-link" aria-label="Direct link to Getting Started" title="Direct link to Getting Started" translate="no">​</a></h2>
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo.svg"><link rel="preload" as="image" href="/img [...]
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="getting-started">Getting Started<a href="#getting-started" class="hash-link" aria-label="Direct link to Getting Started" title="Direct link to Getting Started" translate="no">​</a></h2>
 <ul>
 <li class=""><a class="" href="/docs/install">Installation</a></li>
 <li class=""><a class="" href="/docs/getting-started">Getting Started</a></li>
@@ -21,14 +21,14 @@
 <li class=""><a class="" href="/docs/basics">Basics</a></li>
 <li class=""><a class="" href="/docs/math">Change Point Detection</a></li>
 </ul>
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="data-sources">Data Sources<a href="#data-sources" class="hash-link" aria-label="Direct link to Data Sources" title="Direct link to Data Sources" translate="no">​</a></h2>
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="data-sources">Data Sources<a href="#data-sources" class="hash-link" aria-label="Direct link to Data Sources" title="Direct link to Data Sources" translate="no">​</a></h2>
 <ul>
 <li class=""><a class="" href="/docs/graphite">Graphite</a></li>
 <li class=""><a class="" href="/docs/postgresql">PostgreSQL</a></li>
 <li class=""><a class="" href="/docs/big-query">BigQuery</a></li>
 <li class=""><a class="" href="/docs/csv">CSV</a></li>
 <li class=""><a class="" href="/docs/grafana">Annotating Change Points in Grafana</a></li>
-</ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_AJKP"><a href="https://github.com/apache/otava-website/tree/master/docs/overview.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_6H3h" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 [...]
+</ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_Wgkb"><a href="https://github.com/apache/otava-website/tree/master/docs/overview.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Df7L" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 [...]
       <p>
         Apache Otava (incubating) is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indica [...]
       </p>
diff --git a/docs/postgresql/index.html b/docs/postgresql/index.html
index 6b6f96e..3cbd719 100644
--- a/docs/postgresql/index.html
+++ b/docs/postgresql/index.html
@@ -2,35 +2,35 @@
 <html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-postgresql" data-has-hydrated="false">
 <head>
 <meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.10.1">
+<meta name="generator" content="Docusaurus v3.10.2">
 <title data-rh="true">PostgreSQL | Apache Otava</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://otava.apache.org/docs/postgresql">< [...]
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@300..800&amp;family=Space+Grotesk:wght@400..700&amp;family=JetBrains+Mono:wght@400;500;700&amp;display=swap"><link rel="stylesheet" href="/assets/css/styles.e5691cae.css">
-<script src="/assets/js/runtime~main.cbf2ad78.js" defer="defer"></script>
-<script src="/assets/js/main.663c53c1.js" defer="defer"></script>
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@300..800&amp;family=Space+Grotesk:wght@400..700&amp;family=JetBrains+Mono:wght@400;500;700&amp;display=swap"><link rel="stylesheet" href="/assets/css/styles.ce980333.css">
+<script src="/assets/js/runtime~main.0f49da90.js" defer="defer"></script>
+<script src="/assets/js/main.9e655e3e.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo.svg"><link rel="preload" as="image" href="/img [...]
-<div class="theme-admonition theme-admonition-tip admonition_xPY5 alert alert--success"><div class="admonitionHeading_CHqH"><span class="admonitionIcon_T4xL"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.6 [...]
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="postgresql-connection">PostgreSQL Connection<a href="#postgresql-connection" class="hash-link" aria-label="Direct link to PostgreSQL Connection" title="Direct link to PostgreSQL Connection" translate="no">​</a></h2>
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo.svg"><link rel="preload" as="image" href="/img [...]
+<div class="theme-admonition theme-admonition-tip admonition_pKXU alert alert--success"><div class="admonitionHeading_xMuP"><span class="admonitionIcon_LzAK"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.6 [...]
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="postgresql-connection">PostgreSQL Connection<a href="#postgresql-connection" class="hash-link" aria-label="Direct link to PostgreSQL Connection" title="Direct link to PostgreSQL Connection" translate="no">​</a></h2>
 <p>The following block contains PostgreSQL connection details:</p>
-<div class="language-yaml codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-yaml codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">postgres</span><span class="token punctuation" style="color:#393A [...]
+<div class="language-yaml codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-yaml codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">postgres</span><span class="token punctuation" style="color:#393A [...]
 <p>These variables can be specified directly in <code>otava.yaml</code> or passed as environment variables:</p>
-<div class="language-yaml codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-yaml codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">postgres</span><span class="token punctuation" style="color:#393A [...]
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="tests">Tests<a href="#tests" class="hash-link" aria-label="Direct link to Tests" title="Direct link to Tests" translate="no">​</a></h2>
+<div class="language-yaml codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-yaml codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">postgres</span><span class="token punctuation" style="color:#393A [...]
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="tests">Tests<a href="#tests" class="hash-link" aria-label="Direct link to Tests" title="Direct link to Tests" translate="no">​</a></h2>
 <p>Test configuration contains queries selecting experiment data, a time column, and a list of columns to analyze:</p>
-<div class="language-yaml codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-yaml codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">tests</span><span class="token punctuation" style="color:#393A34" [...]
-<h2 class="anchor anchorTargetStickyNavbar_WKy1" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example" translate="no">​</a></h2>
-<h3 class="anchor anchorTargetStickyNavbar_WKy1" id="usage">Usage<a href="#usage" class="hash-link" aria-label="Direct link to Usage" title="Direct link to Usage" translate="no">​</a></h3>
+<div class="language-yaml codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-yaml codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">tests</span><span class="token punctuation" style="color:#393A34" [...]
+<h2 class="anchor anchorTargetStickyNavbar_gcg8" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example" translate="no">​</a></h2>
+<h3 class="anchor anchorTargetStickyNavbar_gcg8" id="usage">Usage<a href="#usage" class="hash-link" aria-label="Direct link to Usage" title="Direct link to Usage" translate="no">​</a></h3>
 <p>Start docker-compose with PostgreSQL in one tab:</p>
-<div class="language-bash codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-bash codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">docker-compose -f examples/postgresql/docker-compose.yaml up --force-recreate --always-recre [...]
+<div class="language-bash codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-bash codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">docker-compose -f examples/postgresql/docker-compose.yaml up --force-recreate --always-recre [...]
 <p>Run Otava in the other tab to show results for a single test <code>aggregate_mem</code> and update the database with newly found change points:</p>
-<div class="language-bash codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-bash codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">docker-compose -f examples/postgresql/docker-compose.yaml run --rm otava analyze aggregate_m [...]
+<div class="language-bash codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-bash codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">docker-compose -f examples/postgresql/docker-compose.yaml run --rm otava analyze aggregate_m [...]
 <p>Expected output:</p>
-<div class="language-bash codeBlockContainer_xazl theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jnjz"><pre tabindex="0" class="prism-code language-bash codeBlock_kaMy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xMTX"><div class="token-line" style="color:#393A34"><span class="token plain">time                       experiment_id       commit      process_cumulative_rate_mean    p [...]
-<h3 class="anchor anchorTargetStickyNavbar_WKy1" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration" translate="no">​</a></h3>
+<div class="language-bash codeBlockContainer_I_5P theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_pZPo"><pre tabindex="0" class="prism-code language-bash codeBlock_Em61 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_IwHm"><div class="token-line" style="color:#393A34"><span class="token plain">time                       experiment_id       commit      process_cumulative_rate_mean    p [...]
+<h3 class="anchor anchorTargetStickyNavbar_gcg8" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration" translate="no">​</a></h3>
 <p>See <a href="https://github.com/apache/otava/blob/master/examples/postgresql/otava.yaml" target="_blank" rel="noopener noreferrer" class="">otava.yaml</a> for the example configuration:</p>
 <ul>
 <li class="">Block <code>postgres</code> contains connection details to the PostgreSQL database.</li>
@@ -44,10 +44,10 @@
 <li class=""><code>OTAVA_CONFIG</code> is the path to the configuration file described above.</li>
 <li class=""><code>BRANCH</code> variable is used within <code>OTAVA_CONFIG</code> to analyze experiment results only for a specific branch.</li>
 </ol>
-<h3 class="anchor anchorTargetStickyNavbar_WKy1" id="cli-arguments">CLI arguments<a href="#cli-arguments" class="hash-link" aria-label="Direct link to CLI arguments" title="Direct link to CLI arguments" translate="no">​</a></h3>
+<h3 class="anchor anchorTargetStickyNavbar_gcg8" id="cli-arguments">CLI arguments<a href="#cli-arguments" class="hash-link" aria-label="Direct link to CLI arguments" title="Direct link to CLI arguments" translate="no">​</a></h3>
 <ul>
 <li class=""><code>--update-postgres</code> - updates the database with newly found change points.</li>
-</ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_AJKP"><a href="https://github.com/apache/otava-website/tree/master/docs/postgresql.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_6H3h" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0 [...]
+</ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_Wgkb"><a href="https://github.com/apache/otava-website/tree/master/docs/postgresql.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Df7L" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0 [...]
       <p>
         Apache Otava (incubating) is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indica [...]
       </p>
diff --git a/index.html b/index.html
index e0b189f..4212b6d 100644
--- a/index.html
+++ b/index.html
@@ -2,17 +2,17 @@
 <html lang="en" dir="ltr" class="plugin-pages plugin-id-default" data-has-hydrated="false">
 <head>
 <meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.10.1">
-<title data-rh="true">Welcome | Apache Otava</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://otava.apache.org/"><meta data-rh="true [...]
-<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@300..800&amp;family=Space+Grotesk:wght@400..700&amp;family=JetBrains+Mono:wght@400;500;700&amp;display=swap"><link rel="stylesheet" href="/assets/css/styles.e5691cae.css">
-<script src="/assets/js/runtime~main.cbf2ad78.js" defer="defer"></script>
-<script src="/assets/js/main.663c53c1.js" defer="defer"></script>
+<meta name="generator" content="Docusaurus v3.10.2">
+<title data-rh="true">Welcome | Apache Otava</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://otava.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://otava.apache.org/"><meta data-rh="true [...]
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@300..800&amp;family=Space+Grotesk:wght@400..700&amp;family=JetBrains+Mono:wght@400;500;700&amp;display=swap"><link rel="stylesheet" href="/assets/css/styles.ce980333.css">
+<script src="/assets/js/runtime~main.0f49da90.js" defer="defer"></script>
+<script src="/assets/js/main.9e655e3e.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo.svg"><link rel="preload" as="image" href="/img [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo.svg"><link rel="preload" as="image" href="/img [...]
       <p>
         Apache Otava (incubating) is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indica [...]
       </p>