<mxfile host="app.diagrams.net" agent="architecture-diagram" version="24.0.0">
  <diagram name="Distributed Lock Service — High-Level Architecture" id="02-high-level-architecture">
    <mxGraphModel dx="1400" dy="900" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1130" pageHeight="610" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="_st1" value="Call" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontStyle=1;fontColor=#8a97a5;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="40" y="60" width="170" height="20" as="geometry" />
        </mxCell>
        <mxCell id="n.h-app" value="&lt;b&gt;Caller workload&lt;/b&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="40" y="150" width="170" height="90" as="geometry" />
        </mxCell>
        <mxCell id="_ico2" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAD+UlEQVRoge3YW4iVVRQH8N+MOWpaWo0+WDgIQnYPLYosCCohLCPD7AKhREZQ0ENUJHRDEcoKqpceuj1UEBEJWWAXCoqiG5iFpZMDEV4yKjSmnLGmh/Udzuc33+0cp+nl/GG9rL3W2mvtvfbaa2866KCDDjoI9OEmTEzxTsFy9PwvHtVEN9ZiCCN4CCdjLvoT3g9YlKfc1eakk7EQszATg9iHbfixRVuL8FENua9xVou2c9GDb8TKZOkQrmrR3kR8X2AvTffkKXe37D7zcFrB2AQsbdHeHMyuIXdeHrOdACYc4XgD03EJHsG0FP8VLMFKkZINXI1VCgJpBUuVb/VmTKlh5/kc3TczMn04mCN3fpXxS0U1mJ/inYN3K5xv0F7cjaMS3R7cKvJ4asJ7L0fvthxftuTILS9z/jL8nQgO4Qms0SxzrdCnIhV2pHibROpuzJF/LOPLZPyaI3d5kfMn4ec2HG2V7sOFeAbbU/wDIv9hBl7O6G3EBiUp+s44ON8otwuSOZfkjA9iOMPrd/gtPQpXjJPzDXo/NfdXNeRXlzkPb7fhxCC+w09tBnEqzqwpm3tbp++BVtqKnVgh8nS+ODuniwPaCrqxC1tTvA9wP+7FnwlvRKR3KebgDfyjfCUGcGyBjS48V6E/InZsZUpvEu4U90Bfin8LXlXQyBVhgViVoslvrNCfit0l+usSh/9T7CyY/KB6t+yTBfojWDaWjhb1QjML+Ls087IMO0rGZtXQr42iAP4o4E+vaXdGydiBmjZqIS+ALnF95+E4NRop0WUW4bca+m1jCT5XXkE+1GzS8nCB8kp2AOvRm9GbZPTinCDKcy2srXA8Ta+J3cjiIsUFIEt7NM/aCs3KtyrhdeGThPeWKPOjkL68PsO5daMVqfC66FGm4WIt1mvR+f4udr2BYbGDww5/6HxR5d8a7bUD7dI+HI1jxG5UyWdbbRx+iJ9ODI0X1oleqke8P6pQ66m6THUrMRb0sSgEfXgqM/Yl7sKjIk0b/EMiRY+vCuLxjMHd4nHdjqNDootM8/bixJx5RsQ5TPf8Z2u+Dhs0rPhXhMTAS6IqrBc5OiVZqayxMtqmeegWi4PaL15i5D+e7sjx59scuWvKAijDPLxY4fgArlWds5tydB/IyDTa7azcle0GAGdUBPBCTTvXi11JP9r3iEUiSvzDGdvbxc9IUa82rgE0cHNGf0ichYEM/xeRzkeMXvmfTQ16sEV73eLjtupM3Z6n3O7v9GLcIFrjXvwlLqat4qtwsAVbc8XnbumPg3itjcr9sqasDJsTGivsF40b8UmwRVS86zQv2/1jON+YYzaeFW/lhSn+BnFwV2s/WzrooIMOOijGv2hVX3koN3LcAAAAAElFTkSuQmCC;" vertex="1" parent="n.h-app">
          <mxGeometry x="9" y="33" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.h-lib" value="&lt;b&gt;Client library&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#5b6b7d&quot;&gt;fence callback&lt;/font&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="40" y="270" width="170" height="90" as="geometry" />
        </mxCell>
        <mxCell id="_ico3" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAACxUlEQVRoge3Yy4sUVxgF8F9HhQTBiUGz8AFKjzGCjwQfCw0iSFyGQTGJq2zi3o2uk53uEnQdAv4B6kZcJKDBbILjRp2JQRAS4/iIZtAwUUenXdxu6amurqm6NdPdMH3g0tVV9zt1zr236vvq0kcf8xuVkvGL8DGqeIlRXC8rqlP4HGOoJdpvWNdFXbkwhCmt4hvtNhZ3TV0ODGsvvtG+6oSQtyJjNufo92EEd2HEGJjCZI5+/0RwdwwXZS+fSXzQLXF5MCTbwPHuScuHCi5LFz+Kd7onLT82CskraWBPFzUVxk+mi3/YaQExb6FmLEz8fxHBUcFOfFJSS2HswyvTZ2AKO3LELsAunMAtJZZeczF3FhO4Vif9E/fwSCja4H1sr4s/pHUG1Pt/gwv14wpWYK3w3OwSRnugKeZ/vCtuBt9gxMzlwVy1X2NFl30GZgvDsYF9A7OEK7GBvWLgVmxgLxgYx/PY4F4xEI1eMLCkTHBaIuo0BvA2niXOr8HX+EjI3FfxPR60I+pmIvsyYeg74blI9hvDYC8aGBfKj29xd4a+PzeLbq6FRrChnbs2uIMbQhk9iC068zGzCn8nTxaZgcfYr3Vnbyl+KMAT2/amucprYAq7M0angjNzbOCzMgYuZ4hvYOccG1jfuFFMHriWo8/vBfgmcURY15uFj5ysfacR/NHuQh73p3OIGszJVcOplPgt0rcvnwqz29ZZnhv+JSSWLBwrYODTNhwLcVj4UryEkzJyQBEDNRzN4FmBfwtwrc0SVQRFDExgUwpHBecL8NSwshsGakINnyzEvijIUZM+ELlRphqtCmu0GQcjeFaX0FC6nE5m4pgyotQMNKPoErqJ9xIcQ1o3u2Zq58qIbh7BKrYKyaQq1OPLsUwoHwhvl2H8gh/xXwrnNhyoczUMPhFK4Qe4L2yYPaz/3q1f66OPPuYjXgOFSOhQ2bt/6QAAAABJRU5ErkJggg==;" vertex="1" parent="n.h-lib">
          <mxGeometry x="9" y="33" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="_st4" value="Admit" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontStyle=1;fontColor=#8a97a5;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="260" y="60" width="170" height="20" as="geometry" />
        </mxCell>
        <mxCell id="n.h-envoy" value="&lt;b&gt;Envoy fan-in&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#5b6b7d&quot;&gt;mTLS · ring hash&lt;/font&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#4a3200;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="260" y="150" width="170" height="90" as="geometry" />
        </mxCell>
        <mxCell id="_ico5" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,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;" vertex="1" parent="n.h-envoy">
          <mxGeometry x="9" y="33" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.h-spire" value="&lt;b&gt;SPIRE&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#5b6b7d&quot;&gt;SPIFFE IDs&lt;/font&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;fontColor=#3a2b44;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="260" y="270" width="170" height="90" as="geometry" />
        </mxCell>
        <mxCell id="_ico6" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAACTUlEQVRoge3Zv29PURjH8RdaaTFQkTQGSyNSSaeS+DHZ0MQgYTFJJDYD8T9YzBKJv0AQwcJEYsKCNH7EgMHQ+lHSFFE1nJJv2rrn3HvP/X5Lvu/kTvc5z3k+9/x4nnMuXTrLikS7UZzBCNY0Fw6YwB2cx6ccDg/jO+ba/LzAplhwsRFYh9cYSNNqAl8iNpvRl+jvEk4k2i7JmPQvdhWrEnxuwVSiz/cxZysj76ND2MJjzCbYvRVGKoUB9BQZFL6UvsjhNHrxOWI3iqESfsvEsIjj2r94Fz69RQHGptCypyug03QFdJp/XkAsD9ThmVDP9GEnNjTY11+pkgceCAG30ouTQp2UNQ/kFnAP/QX+dmB6uQqYEQq1GGdzCsi5iG/iTYLdReF8kYWcAh4l2k3hVa5OcwqYK2GbUnYnkVPASKLdWuXK6UJyCjgk7QB0TPFOlZWy2+g1xR9lCJMlfbY1D8zhlqW30zG8q+CvUEATpcRBvBSS2rgw5/dguIG+onSPlE2TYwr9FLLwZTzHDxzALgzim3A5dhsPsRG7hQurrRn6LyQ2hSaxr6LvHpyL+G90F5rF3jrO57lQ0EejAq7UcdzCAL4W9NPYIr5bo20rH/CkauM6AqZqtF3Ix6oN6whIuYlOpfJuWEfAEayu0f432yw+QydTJw/sF/b3cSEXVKFfuK1O/eGxiLqJbHD+6Rj/fCnx3wvIdntQkVmR83NMQOUEk4mnqm8Qf7ihc2eBo3WDh/W43ubAp3EqJbgyfwCHsV3zC38G99UoL7q0k1+Wk5ES1qN1DgAAAABJRU5ErkJggg==;" vertex="1" parent="n.h-spire">
          <mxGeometry x="9" y="33" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="_st7" value="Decide" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontStyle=1;fontColor=#8a97a5;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="480" y="60" width="170" height="20" as="geometry" />
        </mxCell>
        <mxCell id="n.h-arb" value="&lt;b&gt;Lock arbiter&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#5b6b7d&quot;&gt;Go · gRPC&lt;/font&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="480" y="150" width="170" height="90" as="geometry" />
        </mxCell>
        <mxCell id="_ico8" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAC/klEQVRoge2YO2gUQRjHf+edGg1RRI2VIjEqNhHio1AkCNFKwcLGRk/R6wQLDT6wEETBTjvB3iKKjRYBLdQEVFB8pfABvhAMRgwpNKKXs5gdnJ3b3fl29/YScH+wsHf7zff6787sLOTk5ORMJYWM/M4GeoGVwDgwCLzOKFbD2Q2MADXruAYsanQwqQI9QLvArhM4C8wIuf4UOCfwMwkMAV9E2TnYTn03m3E8kiQX1ikTSeezQBRXUsC0RlLAE+B71okEcKfZAfciu7c/kt30nYo24DPuAvqmIrELwANgANgVYdsL/CQ8+QFgZsjYhcAl1OxzE9jWgNwpolZRO5FyxJiNqPnetP8DnEet0EG0AC+sMVVgZ9oC9gUkXwNGUcqEUbHsvzriHA2J8x6YlTT5Eur9RTt7ieqK/n28QQXMRa242va5NfZg0gLKlqOtwFVkKsQpwOz+JLAWuE1KFYrAK8PJoPf/GvwqnEhZQCv+7vd7/28ipQpl6ruvkaggLeAY9d3XJFYhrPsaiQqSAlrxv3b3W9dtFQ5JCygT3n2NSwVJAVHd15gqfECggqv7GpcKrgJc3dfEVmE/7u5rolRwFSDpvkasgrT7GluFk8ICpN3X2CpUwgz3IO++xlRhhH+vClEFHMbf/S5BHFOFNxjbgJJhdMA4rwFXBI7N26Yd2AFcd4wx41SBG4I4843zTmALcBf8BcwzzgtAh8BxVCCJTSltHHNHdj+BIxP9JcFF2jgTwMOgC0uATwS/FUqOi4avqGegAzVrJY1zOqq61cBwwuSLwgIAuoF3MWNUgTMItqMtwBHgrcPhb+AWsDnAh2QlbgNOofbIUXEmUBNDd1Cyrmq6gA3ACmAB8Av4hnpnH0LdCkFUgMvG71FgcYhtwUtuPbDci/PDG/PMizPmyLPhxN2RJabkNgFgFdFbSJtlAXHWxRgPasEajzkmkB6SzxhpjnuS5CRf5pZKHGWArWIg/8W30WHUVNZsHkuMpN8o56DWh2YyhnoWcnJycqYxfwFnuMfy36Me/wAAAABJRU5ErkJggg==;" vertex="1" parent="n.h-arb">
          <mxGeometry x="9" y="33" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.h-cls" value="&lt;b&gt;Class registry&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#5b6b7d&quot;&gt;CRDs from Git&lt;/font&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;fontColor=#3a2b44;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="480" y="270" width="170" height="90" as="geometry" />
        </mxCell>
        <mxCell id="_ico9" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAACbUlEQVRoge3aO2gUURQG4C/xBUKCVhrfipBE0Uob8VFYSQoFRQtBUNTSQts0opWdgqIg2FgIFioaLBTRoBEsVFBEG0lloxAUJSHmYTFZshl3djI3M9lo9ocLO/z3nvMf5px77swsddQWDQXZ7cBhtGIAPbiM3oL85YYFuI3RCqNfFNSMxjWVxZfGb+ysmboUtGLYuNg+UUAPTAyip1YC03DGuMhBbCjjzpVxI1iSl9PJFnEDdmETFibM6cCOsd+f0FbGbcWrsutL+JJg5yueyLHgl4pue7XcrlSwK8tsnM64fgjn8wrgWUbnpdGLTlwRpVSIjRNTFb8l0HFe40OawMYUvi2FLxqtUjSmBTAvPy1BaMSctAn/NOoB1BqzOoABOXfMEMwNXDeAbXgj2qnuiI4SJVzEiwz2GnASuwP1JOKoyg3maWzevhi/OkdfVbfy0BRaK3p4KaE9xrcE2AxZE5xCq3AX10XdsjPGd+NnRpuLA7VURdJtnc5RSArNGMzqAEbwEd9z0hKE0CIewh48RjO6sL2Mv4W3GW0eED1/5IqkIu6Ozdsf49cE+DqW4KuQIm4x8Zy+PMY3BdgMWROcQutxA1dFfeBsjH+ObxltrgjUUhX1PlA0Zn0AP0T9oGYILeJRHMFNLMNDbC7jH+F1BnsN2CvaEHJFUhG/jM07FOPXBfg6nuCrkCJuMvHFcHOMnx9gM2RNcAptxAXRZ6M2f/eBLnzOaDP3YwT1PlA8/vsABqdFRTKGx0Yi0gJ4l5+WILyXQ6O8r3YFfHCq4mER7k2z8F84NRlxWf5q0C76dFp04feLXkv2FeynjlzwB27teFBcLsvEAAAAAElFTkSuQmCC;" vertex="1" parent="n.h-cls">
          <mxGeometry x="9" y="33" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="_st10" value="Commit" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontStyle=1;fontColor=#8a97a5;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="690" y="60" width="170" height="20" as="geometry" />
        </mxCell>
        <mxCell id="n.h-etcd" value="&lt;b&gt;Lock log&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#5b6b7d&quot;&gt;etcd · Raft&lt;/font&gt;" style="shape=cylinder3;boundedLbl=1;backgroundOutline=1;size=11;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#1e3a1e;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="690" y="90" width="170" height="90" as="geometry" />
        </mxCell>
        <mxCell id="_ico11" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAB9ElEQVRoge3YvY9MURjH8Q8hhMR62YKIAoleIUS8lBIv0UhEolJS+Q/0uo1oKLQUOlsQ3SZIJBIFEhReG5FBkJVdRnHmrmP23N2bDffMcL7Jk9x5Zs69z++ec555zkOh8H+zKOFbi9VtB9KAH3iF73U/GME4ugNsH3CiTsDYAATYxCaxqQp6cSRgT52yAWMZdlYfYgHL249FB2dwFLcj/xUcwjlMJcYlY32k/eVwKnr+SrzHXb8nl9TSPll9Gc9ADp5F11/wFs+FICueNr1Zjhm4hqW95x8QUmQH23q+ETxIjJuZgdwCunghLJvpyPcVE3hXMyYp4FYmAQuxfSkBh4UpzB3cfHYPS6qg+0uJvcI/3WhKYWam8RAX8DlzLIUZ+pfQbhzHhgyxzMeUkFIvCllqFgcNxya+I9rEMcOURvdXQcelxMaUqhZ4g/vCgaViUkiXnZoxyXI6B9exGTtwRBDxEduxC1uF1FlLbgFjfpXL43iMG3jS83Vwea4b5BawJbpegfV9PsIs1JLczS1yXqhGX+Is1vXsEq4KJ6/TTW+WKlsH1Y5VQcdLaKKp0sx8EzLULNbgpvxvdy77pO8skGpsjWJV4/fRHl28lj7kDy+ltdiyldbiIFBai3/SSmsxprQWF2iltVhRWot/mdJaLBT+RX4CFqUhUb2gGVAAAAAASUVORK5CYII=;" vertex="1" parent="n.h-etcd">
          <mxGeometry x="12" y="39" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.h-tail" value="&lt;b&gt;Audit tailer&lt;/b&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="690" y="210" width="170" height="90" as="geometry" />
        </mxCell>
        <mxCell id="_ico12" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAADjklEQVRoge3ZTYhWVRgH8N9Mb45pavPWqg+IQhINouiDvnBhZJsW46Io6AOCFiEEFZK1qHZFCm2iVQTVQok+oKLIKDe5sJLCJJUQysgMJWeMHD+aaXHmZa7vnPvx3vfcGRfzh7O4h+c8z/9/73POPec5zGNuMdCQ3wvQxtDU8zH8jcnUgVIJuAl3406swuURm3+xH9/ha3wmiEqGAWzBD7i1gv0ybMA+4c322sbxHu5IJeDqjPMx3JZjN4RnMVqTeKxtx/X9CljZ5TQm4kbsTUg8285gExakEtAt4gmcbIh8tu0Un0NRZCfxSuyJ2BzHh3i4gr/f8Tl+xl84PEXqYizHLViNJSV+DmLtlJ/KiH2BKu0kXhdyuMqqthD348cSv4eEedmogHdwZS9BMhjEI/itwP8vGG5CwAk8VpN4N9r4siDWxyr+r3oR8HhFchcJKVOGFt4oiPdoagGj8v8TcBf+ML08vo/zS+IPYGtOvMPCy0gmoEzEnoj9g2UEsAjf58R7IbWAIhHHIrYbKgiAFTgdGX8Ui7uNBys6zcNSYd2/uU8/WezFm5H+Nka6O7MC/qsZcAlerDk2Dy8JK103ZqRhVsAB7KgRbByf1hhXhEP4KNK/2vQZA2H56uA0bhfS4rwegp0QRKTGB3igq2+RsKH8ptPRMhNjDZCpg+05/atkBPQ7iZvEESGVurE8+3AuC4BfI33t7MNsChgqN5mBfyJ9Z23FZ1PA83iyxzGx09mp7MNsf4HX8JZQdqmCdqTveDJGBdimeAuySzilFWFQKMV0j93YDOWz0cJmTEQIdNqmEh835IxblzVqKoXO4GncJ/+Tl1Uf1ub076xLqi5WmLm9HlV+3v3JzLe/rzmaxbgQbwspNYp7SuxHxNPn5QY5VsIlyleglvzi2bWNskuEp8TJfzGXpKpijfhpbFKofJ/TuEY4NsbIb0kVZBjrhZNRbCteF2vkkz+CS1MEuUKolHUcf6v/SdUScj4vbSZwb58xEGo2uyIBxvGqHqrJGYwIxduiLcdz/RLvoF0S6JSQpw/J/9yDwvZgo/hPqrttTkW+gx0Vgnban9iNr4T7sN3C2bnK2AkJ33wWw3i3BxF12lGJcr4I60xfXKRsW3FZ0+Q7WIpnhJuUfolvM4c/qQXCxP1E9RyfFHaVrwglkr6Q8qZ+obDKXIerhI3bYmGNHxNuYvYL+/mDCePOYx794H9Cbh1a4up+xQAAAABJRU5ErkJggg==;" vertex="1" parent="n.h-tail">
          <mxGeometry x="9" y="33" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.h-aud" value="&lt;b&gt;Audit store&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#5b6b7d&quot;&gt;ClickHouse&lt;/font&gt;" style="shape=cylinder3;boundedLbl=1;backgroundOutline=1;size=11;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#1e3a1e;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="690" y="330" width="170" height="90" as="geometry" />
        </mxCell>
        <mxCell id="_ico13" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAABmJLR0QA/wD/AP+gvaeTAAAB2ElEQVR4nO3cMWoVARSG0as8SB8JpLJ0Cy7CSjA7sMoeUgW3YOUSbF2ETRZgp5UQkl6wSGUfbkDC+87pfy4DH0wzzAwAAAAhL2bm53L7fmZuFrurmfm42H2bmcvF7nxmvi92MzNvZ+b3Yvd5Zt4tdl9m5nqxWzvMzOvl9mS5O13ePFvee8ozHpa7s+XN0+W9tZf/+yDPiwDiBBAngDgBxAkgTgBxAogTQJwA4gQQJ4A4AcQJIE4AcQKIE0CcAOIEECeAOAHECSBOAHECiBNAnADiBBAngDgBxAkgTgBxAogTQJwA4gQQJ4A4AcQJIE4AcQKIE0CcAOIEECeAuO3PkHle3szMp81QAMfh1cx82Ay9AuIEECeAOAHECSBOAHECiBNAnADiBBAngDgBxAkgTgBxAogTQJwA4gQQJ4A43wQeh7uZ+boZCuA4/JiZi83QKyBOAHECiBNAnADiBBAngDgBxAkgTgBxAogTQJwA4gQQJ4A4AcQJIE4AcQKIE0CcAOIEECeAOAHECSBOAHECiBNAnADiBBAngDgBxAkgTgBxAogTQJwA4gQQJ4A4AcQJIE4AcQKIE0DcYWZ+Lbd/lrv75c3b5b2/y3v/thu3y5v3y3sAAADwGA/0XRfKl0txsQAAAABJRU5ErkJggg==;" vertex="1" parent="n.h-aud">
          <mxGeometry x="12" y="39" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="_st14" value="Enforce" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontStyle=1;fontColor=#8a97a5;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="910" y="60" width="180" height="20" as="geometry" />
        </mxCell>
        <mxCell id="n.h-res" value="&lt;b&gt;Guarded resource&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#5b6b7d&quot;&gt;token &gt; high-water&lt;/font&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#8c8c8c;fontColor=#333333;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="910" y="210" width="180" height="90" as="geometry" />
        </mxCell>
        <mxCell id="_ico15" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAADIUlEQVRoge3aTWwVVRjG8V9LkW+kwYDY6kLxC5QNJEIMECEGNSa6MCaGHStXrtyqxI0xJLCCDTGBBRuCiSQuTIgxhAUsABP5SAQlCFhlYaB82AqNdfFO06E9U+5M7+29rf0nbyY9M3Pmee85M/Ocd8o0zaVtHOfOwoosuvBEFp2YjTnZMf9kx9/AAK7jGv7ErziHK1VFlEmgE5vwOtbjOXRUvfAIbuI0vscRnMK/9ei4TQg+KH7JwQmKK/hMjGxlVuCHCRSdir/xqZiKpXgFt5osPh9HxH01ihkFbSfwWNmsG8jT6MexkTvaEwcvFU+TVmN1qjGVQKqtFUjqalWxNTMlE7gt7vxWo7fMwV9p/qMzH31YWyaBDuxrAeGD+AtvlRGfZzOON0n4HezG4qri86zCTpxvsOi7+A4fYmFVsV3Yj2UF+7vxAb7At7ikmtG7IVznfnyM1xTYBbyNHakdKTvdjavixjmAPfixoOM8S8RbfEnW76Jc//1Zf/1iHfB79vdYzMF7+AhrcBjv1qBDt9G/1gV8iS1YUEsnFVmObTgkplNewzepE8YagSIGREIXcBG/ZNurYmHSl108da1FmCsWR89msTzbvihGsIjkCFRZUXUYXkqORa9IZpaYDkXze1zUa0mY4tEsGsqU9EKTilQCdakGNICkrlQC19HTWC2VOF3m4LWGbXUrROGifixewtEmC+/D9irih2jDG/ga9yZQ+DV8jieriF6A5xPti/E+9uJn8Uaul+BbYrQ/wTqjyz3tCqoSRVbikjBxu/BbQaJzxdt4ZXbO49l2vmEj1+lBI3dXPCT+EA+Ky/gp2w4mrtGON0WZsUcFMzcgTNRWE/BWzfGyKClezGlJmrmHWYkZeCeL+zgpqmMnDRu5O+MU2yXM3At4FRvwVK0nl/FCM8X8XDeivUckc1lMlV4xVfrE3J4pptVCYermibLlM8KJziuhYRT1MHNDHzY21qGv0kxJLzSpmJIJTJcWGxDTpcVmCP9/lBarfKnvFh+6VwnPMvSl/pGS/dwUpvEszogy43Fh+mpmPP9qMJJ6lxanmRT8B1M0bJ9FjBNdAAAAAElFTkSuQmCC;" vertex="1" parent="n.h-res">
          <mxGeometry x="9" y="33" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="_spine16" value="" style="html=1;endArrow=block;endFill=1;strokeColor=#b8c4d0;strokeWidth=2;" edge="1" parent="1">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="220" y="250" as="sourcePoint" />
            <mxPoint x="250" y="250" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="_spine17" value="" style="html=1;endArrow=block;endFill=1;strokeColor=#b8c4d0;strokeWidth=2;" edge="1" parent="1">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="440" y="250" as="sourcePoint" />
            <mxPoint x="470" y="250" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="_spine18" value="" style="html=1;endArrow=block;endFill=1;strokeColor=#b8c4d0;strokeWidth=2;" edge="1" parent="1">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="660" y="250" as="sourcePoint" />
            <mxPoint x="680" y="250" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="_spine19" value="" style="html=1;endArrow=block;endFill=1;strokeColor=#b8c4d0;strokeWidth=2;" edge="1" parent="1">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="870" y="250" as="sourcePoint" />
            <mxPoint x="900" y="250" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="_e20" value="Txn + lease" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;jettySize=auto;orthogonalLoop=1;endArrow=block;endFill=1;strokeColor=#5a6570;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;verticalAlign=bottom;fontFamily=Segoe UI;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.h-arb" target="n.h-etcd">
          <mxGeometry relative="1" x="-0.4" as="geometry" />
        </mxCell>
        <mxCell id="_e21" value="watch" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;jettySize=auto;orthogonalLoop=1;dashed=1;endArrow=open;endFill=0;strokeColor=#d79b00;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;verticalAlign=bottom;fontFamily=Segoe UI;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.h-etcd" target="n.h-tail">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_e22" value="batch" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;jettySize=auto;orthogonalLoop=1;dashed=1;dashPattern=1 4;endArrow=block;endFill=1;strokeColor=#9673a6;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;verticalAlign=bottom;fontFamily=Segoe UI;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.h-tail" target="n.h-aud">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_e23" value="write + token" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;jettySize=auto;orthogonalLoop=1;endArrow=block;endFill=1;strokeColor=#5a6570;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;verticalAlign=bottom;fontFamily=Segoe UI;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.h-lib" target="n.h-res">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="130" y="450" />
              <mxPoint x="1000" y="450" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="title" value="Distributed Lock Service — High-Level Architecture" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=20;fontStyle=1;fontColor=#16202c;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="40" y="20" width="1040" height="30" as="geometry" />
        </mxCell>
        <mxCell id="rule" value="" style="line;strokeWidth=1;html=1;strokeColor=#c9d3de;" vertex="1" parent="1">
          <mxGeometry x="40" y="50" width="1040" height="10" as="geometry" />
        </mxCell>
        <mxCell id="_lg24" value="" style="rounded=1;arcSize=30;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
          <mxGeometry x="40" y="490" width="20" height="10" as="geometry" />
        </mxCell>
        <mxCell id="_lg25" value="Application we own" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontColor=#7b8794;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="70" y="490" width="110" height="20" as="geometry" />
        </mxCell>
        <mxCell id="_lg26" value="" style="rounded=1;arcSize=30;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" vertex="1" parent="1">
          <mxGeometry x="200" y="490" width="20" height="10" as="geometry" />
        </mxCell>
        <mxCell id="_lg27" value="Interface / broker" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontColor=#7b8794;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="230" y="490" width="110" height="20" as="geometry" />
        </mxCell>
        <mxCell id="_lg28" value="" style="rounded=1;arcSize=30;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1">
          <mxGeometry x="360" y="490" width="20" height="10" as="geometry" />
        </mxCell>
        <mxCell id="_lg29" value="Security / platform" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontColor=#7b8794;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="390" y="490" width="110" height="20" as="geometry" />
        </mxCell>
        <mxCell id="_lg30" value="" style="rounded=1;arcSize=30;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
          <mxGeometry x="530" y="490" width="20" height="10" as="geometry" />
        </mxCell>
        <mxCell id="_lg31" value="Data store" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontColor=#7b8794;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="550" y="490" width="70" height="20" as="geometry" />
        </mxCell>
        <mxCell id="_lg32" value="" style="rounded=1;arcSize=30;html=1;fillColor=#f5f5f5;strokeColor=#8c8c8c;" vertex="1" parent="1">
          <mxGeometry x="640" y="490" width="20" height="10" as="geometry" />
        </mxCell>
        <mxCell id="_lg33" value="External / third party" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontColor=#7b8794;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="670" y="490" width="130" height="20" as="geometry" />
        </mxCell>
        <mxCell id="_lg34" value="" style="html=1;endArrow=none;strokeColor=#5a6570;strokeWidth=1.4;" edge="1" parent="1">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="820" y="500" as="sourcePoint" />
            <mxPoint x="850" y="500" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="_lg35" value="synchronous" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontColor=#7b8794;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="850" y="490" width="70" height="20" as="geometry" />
        </mxCell>
        <mxCell id="_lg36" value="" style="html=1;endArrow=none;dashed=1;strokeColor=#d79b00;strokeWidth=1.4;" edge="1" parent="1">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="40" y="520" as="sourcePoint" />
            <mxPoint x="70" y="520" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="_lg37" value="event / async" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontColor=#7b8794;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="70" y="510" width="80" height="20" as="geometry" />
        </mxCell>
        <mxCell id="_lg38" value="" style="html=1;endArrow=none;dashed=1;dashPattern=1 4;strokeColor=#9673a6;strokeWidth=1.4;" edge="1" parent="1">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="180" y="520" as="sourcePoint" />
            <mxPoint x="200" y="520" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="_lg39" value="batch" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontColor=#7b8794;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="200" y="510" width="40" height="20" as="geometry" />
        </mxCell>
        <mxCell id="note" value="The lock log decides who holds; only the resource can refuse a stale writer." style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontColor=#8a97a5;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="40" y="540" width="1040" height="20" as="geometry" />
        </mxCell>
        <mxCell id="foot-rule" value="" style="line;strokeWidth=1;html=1;strokeColor=#e3e9ef;" vertex="1" parent="1">
          <mxGeometry x="40" y="560" width="1040" height="10" as="geometry" />
        </mxCell>
        <mxCell id="foot" value="v 1.0   ·   owner Platform Architecture   ·   date 2026-09" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=9;fontColor=#9aa7b4;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="40" y="580" width="1040" height="10" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
