peace 0.0.15

zero stress automation
Documentation
<div style="
    display: flex;
    flex-wrap: wrap;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
    height: 80vh;
">
    <div>
        <object
            type="image/svg+xml"
            data="dot_ix_diagram_generator/landing_diagram.svg"
            width="450"></object>
        <br />
        <small><a href="https://azriel.im/dot_ix/#src=MQAgogHghgtgDgGwKYC4QAUBOB7AxkgZwJAHUBLAFwAsQBJAOwDNsAoAWg5YBMzMlcKZbPTQA3JJkG4oCFlTISomXFQCeKFiBC5hFKGXoSNWrVDQBvAL6aTAIwvWT2hza1cXWxhMxkCAfVtsCBcWemwuJD96WEJjEC9MH39A4JAAIjSbHXo9AyN0zNM0NK1CkHt00qziqrca9JYWJC4Ac1ibKAqAbSgAGnKAXRtbXDQu237cIa1bdxBx-q5p7TN53H6zAgB3Za5Vrq4NlAIkXb8-BKSx9yR+y98AoJQdxpbMKDgqUTIALz8oCgUTAEOLNNp+bJA-Q5EGuFZoRgyE5wvYIpFIFHne4g+LoxpkGBQNqwzzeXxxLRwAFUNB7PQoAlEpAAegIohaAGoIDAEABuWxQE4ANgALL10AARACcItsJC2LS4MAAaqpcAAmBCiWwAKwADGQALIAZRFW1oZAAQghbDAAHKiABaAHEEABXR0-A3K5UAJWdABkACotMi0AASdr1AE0SABWADWsYg2pgAFUpbQYHHRLQdQAODkAYR1WyovrAUolyoAYggAIq+42Wn5K3AtNM15VFoNgBAS2hF2gUAOqKUADUNesNogDet9ad9RctQeVCfbJpFEFHUprQbDLSzVD1XHDAEEhTuAMxcK+4N1cH6Gt22K8AKXoc64qmj48t2CgEg7R+AMAEY7RIX1VHzbcdTAURfRrCsAyvO11U9SAAxgX09UdIdix1CBWxgdsuE1BMuGdFpMzgrZDSLNMw2dKgEEArhwglA1DSDM8tjfY1aEVHkEC4PU33ETijSLXjaAlMBVENCUzxaAB5JTzStdDxzfH5AKlN10AE2CwDDcMqAoWxnTjH5DLfcJw19LYVLIfNRFvW8A3oXAQJgKVVEdaCFPUlC0ICwSkGdUCCFsehDSFCKIDgW0CEzGBj1PC9r1ve9H2fV8PwDH4wDjFSgwTcRnUS5LTPM2wJTgH5cGdGsdUdIMDVwcM3wQDVVSVRiI1qqyfhU+g7R6nkYFs+zHOc1z3KvTzxtwSasIdWxjXzUyoyQEgIAQWzCT2ggA200DLLTIVHXHR0bV8hNHQlCgdUshAtlOt9zudS7rtu20pQep7Wy60QoHVNMLNdD0SDgUGSBFIUVqlc6YHrAB2XAryg2x1QoBAAxIUC4Eo1VXr0cd6yFTdpyDesFKDAgyHQFpsEPaSWnQZ120A+tMwTCAqF21VgxMiNlsmlSeQTWzDV-BAerIM8IDzEUAGlB2UjW2bPfMAstPUVprN0NUdUQVr1VLQKoU83zgJAixabclIIeitidsA6IlBM3TtIstlAxTozdQ0fmjVRVYE4tFe1mOtdkiAtl-X1sFoZ1edoBM9Xeos9UWnVaDorOKG42hg4lXBVADHOnzIEUgv7EXK51XiVONLZi6fYOgzTdVBz1CBNzjO04JOoMpwDWi7VUM9i97N1Sujbdq7tU0tmHt8JRF2CE3VE12+H587SUkU++nU1px+BNR5aOMJ7TJ9p4oUqwDLw1R8geiRT1O0gxrQ1g35hPM8IEc5xkNKoM0P8qCbzKqBCeLR1R2jIO3Uq9Z55Bkxn3AeSl0FKyrnqIetcRRHzTC0EWa9a4QCPrgUeCYRQT2jAHNM7duJnnVBPMA39VAsJ4uwnUuBQIqTTIaWemMgEKTbrPcBE9DQQFbjPQ0OoWhN3vvgqhEoWg+zHleU+ikzzBx+C0ehOd1GaJ-oaK8dM9QBwlM+EOi81FHzMdovugigxB2fotEx9iu5ph0TnRBOog7cVwLfbx3d0EtB+EGAJw9gkYLCXqYhECrwhy4P-dxiDKFqTANfPO3koz7yCXwsAIo96z1oNvVQdphEUGAhYjhZ8UFlQMQIvuV4cld0NHAgJKkiyQI0WQjBZTTQDx+GmUeIcJ71ggFYjpckuk9L1NUiBQ9jQz2Ai0d6zcfi+xYfnLRFd2nAXvM-Yx-cp511Kuk4MuBiGjKPtGUeaCj5H1ufcrcjznk+1sUM0Jn8wGGJdhApyA4-llP6ahP2cj+mAo3rc1JppUISieSHUupUzxxnaYooOw8EyVw0XnReU8Nk-DPE3fm4C3bcWCUEyxqg9TqlKqXPFt85JPlhT-esQzowfNQj8WgLtabbN4iaDZSi4FwUQdwsZ3sS7qisUyiUaDFHyQDOyy5ULxWAJ1GmGF1KeJd0YdiuealyXqruRPXAhcRHAUqRPWgTK-a71NGUwZtya4inAtwka59DSKzqU+W+OpulIK2ApIhalfQwIrp-Gm9YXY-DQWpXAeo+67y9l3R16qEzbMpY-EOyiOHVL9mA-pSrlQwLAAHfpA9uFlq-uYoZ9Y84tzblQiBZSk1DO6QwsBbc86ZxUmAERIdvbD3rOwgcIElG7MfuY3xbK0ySroWKupIb0GGinZa3VxCEwiM6ROglH9YUhKGUYoB4FkGyrLtGNNOdkl1zRUK+s2z6zgX3U-FFPsyX0LkmfEUT5u3Bi2Qw6V1KBVl2rdipFP9UW9j4ZS6cdS56KVoHAwlMj-H903Kky+ib9GlVTX3GdRjW5uyQSKDN0CV5mkUjQz+T4Q0tFdnUiBQVDQsb9mxp9tjtp6l2vtQ6gEIAEFGh+aMZBHbDwmUfN+9EExo0dDyaKRZQKqC4HtBAkscwxUQCtfMaMLSFiLNHOO7N0BFilPQZmrNzOawlBAegEYoKxmsspvyth2pkDlDWA2PI1ZyRdn7d6QXWEdPPuR1QqD54aNAhHWgUdNbs3s4eRzidxzJ1TunTOoWC6+y3CHZUGTQkyOnDKkhPslFxisRCs0akWgvpnWeEU8iv2EdsSBf9caGvntgtGOiMqQ6nJ4iKGJ1jaPgTCzxbZ1a7QjpQ+ijRTsd4yKodJRbBj305tguA-1GzaZlwruqhBE9M5TltREs1XWi27pXgd8dIZFrl2DZOtdE7b0Ep3dGIeubZ4teLX0rYiKn1Bi4FWpyrrhsEGHveepqgsHcRfsPbNKK9QyLous2eYAZ1039VsXe-TWtBioBkzOZ214yr6V6w0tTSp2KUuj-9HCwGP3pz881maQmgT7mskUYCdRX1o9UoMj0AH0J1PWb+161ttdYU3XAVDJEApyUMj2lzqn8NHh18l42qGmrKk7DrtAk0Mv1yqsl7Cc5N2KuAhR3c+GMKB3U0ZfT7dpmDWeQR3HqcDyDL6DJnDqcdO4wurlCqzfUJ-Yac53vPkhjV3qVukDaajzDmd1rWPuJpibo6qeRTgk-GjSLcC58Udp+DdGCL9uBscLXpI4CL9A4I5MR9n+grgw-bOx05hxdm4S5a-jlDcqdTg+DJUgFaG0+wQ1HbvvOOrVeMZQVhSzHx9UNruB9duKQ2gXG-TNMXdgFqO4nY-hEflncWTWPJZfuRsJmw-Te8p+rc4YOU4+9l-m7oOrSf3VR-QIrFV8XlBdK5vF+Ef0Zk+5V9x04s-9NFT9H8Q5D4pU-94lQl99gIVVdV0dvFv01I0wRQgCTktFaAl9sEzEnxe5rczVYtioT9DUf4EwecaDlUu5J0GDS4x098aDUMBVyCf4EDxkL9osgwuCJQe5HEN1FJ5JoDSpD9FI9UpCPF3ET5eCR8ODW8lEf1U0rEnxbEflZFHEyUtF+YSNFIED84wCLkTC9EW89QnxTUvZcCLkIDFEY9xtdkNEs1X91F9FFDTcHCf5kdBdb8j4m8Q01CgiIlFFStW8BxWkBVl4QxcEwiDCj5HQMkLECsA58535H015qwYFsjKFyluIdV6xWsNthtg1MYh9yj0d+EA4s9DFGiTdndyjJVowmValC0JdeUOiyo+E-E3cO4EwZ089kFZ5mCgE50FFL4+Ful6jDc75Wte8j5s0JUyju484W0rEL59FzFfCf5TkvYki9QL5sDaBzl9dLCWhm051+dYj3448M0-5gw3sy9Q534Sp+lqlWwYE3tO0w0+9zV841kNkUUB9UluFQTGjU13ty4m5iVldm54TpxalqE85OE9k4SrUz5ITHYZFEFUSwTaAIS6kNEZ1vIqVpiJcyDCkUMzw85rjBjCCGE6JMTew81M8eF2T84oiA5Ds8VjiMFYtxjXFuIhCNRHExSj4blu4k8idgIJkRZ+0vU1IG5u5mj+cZMfjaM6JGohll1KNwIyp9Ta5wJDFjTCd+ciN9TTRAktSe5aNv4MF9TIUx0bTk8B5dUfjqZetgw-FP5UllV8jLlCjisgziFa4gM34RZytG1P1BDg1mDcSr8m4LE58mCZ175BiZkHVzi3Fn9ewQELkcEAjxtd5O5kCyyqE3DIjFVhsoNjjbC5J7DEEFkckl4bDDiyosVYlv09Eez6zKDdCGVEFDUpTrD6yVDeV00F0pTEl6yGdZDYkx4f8XDbiDEe4qzh4m9ldexMyh5MSglGi8cpikdtkPd7tt98l1seEAd+FpdxVrUzs1lHy+EWhBEPZA1MIglotDzNiwAe9bUipJUBEQSS4JccSsc7VryoUeEyD8T3sBVGjkDYSS5JV1dMSBUYKKEkKm5KjfZSVDRtlZFaSkdB0h550nxZtyseEF985UI-s7UJdCDyk4kqtuk5kQ5kdy4llEE-j3C-ldl+kgMaFO8Z9d5aKGk4JUkpimDg5R8Ss6tUkgkK9u8hEwLvzGlyM-yy5752k1Jx1DFzkmVHTgIEw-kwFa4Spew09Fi9Q5kF5lK1UAl-U7SvYbLLkhTJLu4YLvdSVVtJcylFKNzw9xt5laV0N8EYKqEFtNl+jBt94HlBcbKAVBDR4uCypziOkNycVntjdokH1mzSpAEc5tktlDRP01I6Y7415uNJ8jSQNpcRQykxCXZTRHDrLWrk8gME1hcf4xcQwdTiER4fSVTz0A5a5qkwyr8u4JSH0f5-DQ4utSk74IBxsu0X41Je0UUqqSoFs9qZ1owxKCcCt9CwBz1dk-UR5Ydo97Cu0SypcLVYJKlGSGt3rKdgdqcmVRcYEjFaMlUnkrKflSEQNM9G1zS1IWUMEnrn5lK8ENFENpxkMTKKVAKth1SmNBIQNbLANh5GtXK+LP9WtM07VnsPZP59cA8QMZKqN9yhU5Lc1h0D0UVSNd5r1C1DkWCkkPtFJKj1Ucdk85r2x6aV8nFmbUyqE-t6dB1v4-Z6ZLClYrFAURtXqBwYVeNrqAEk9TQS1w1YjDL7DAUWVL5ntaAuF2qf5K0AFtbRCGNikHUKEZ46rSNpctggNNF5DlZSq2D28p1siQU7RkzDFB0CVDRCEv4LC-lUJLSNiYdj4ZFM9SUBEZFwI-Zpxy4dzAj+VD5y4-1X1aNQz7j3lwFAMcVE03zdVXav0wA+FgEw0mMR8zxnKGViEFlFEc91VyTPLTFz0YTdTGoXZd8OFS83aUVFiUrV9nEEFasuKQ5j8Bxot+lBEUVprfKsDR6QKGrby6qRUXUjaKaxCasO6x0flBVVURUCSv1X0rUFJuEgo5UV6+5O7-CUUnYC5k9citSWhpx+k14R5FFMU75ALISa7J1m7aC0M1cVkqNn1VUiKB50bvDHk-18turAz3F4TBE25V9C95zYlIUmDR7Nit02aUNcUQwusTdNwKC46rVS9w0TKf01yCFaNZzE1ri97ejewJd-6V4va7UtFl1EcDk+Lnti67LYi4HGM95s6EDewz6cMWlBaCVX1qdiFQ41cB5+lpwtduCrUsk3aUjT8-1sjT0JR4V3E85pM-YgMWVJcBycN9HmVR6e64IuMjbINzFnKipYIb4hH6ZVqc9ZIzxR626OFbreJe7GrCtxl+NBMDpjQ3wjpRNxN6BJNlFqEYdviFMlMVNbA1MNMtMdNtR6B9MYBDNjMktY4LMrMbMWZ6mHMnMXMfx4wfgPNVAvMDRfN-MEBAtclXZQtclPF4FCFw0j4QDQkEs6nUs450sk4U404+Ys5e7PVv5WpbEla0UflujZJVF5Kosl6WMxDmsa4KM1HGcgx2VPLWcINn8BxACipPUHmxknn0NZIrbNqqVALPkjTyjmslT94JDlLuj6wipWcBlGsPjJVJilZNllLxj8EJF49uVpyGEI1gdPLPZHpMWAL8cFK6MN73Dcc51-ZLqTiWNQqZFdlLyID6d-GrbqcgMnlx9B0xLgFFEWUJCp0u9+EsU5JpV2qQ4E0aVYIpcLt6zTjx5hXqY5NVIYjBcmcGSUk0UeV0FFde6skNSgw7RDRXYFJfGp7yBBJMZfQ4wLpUpHQkpnQthEYYAeBVYBwuFgcw0thVYgwKB0mTozoLohR-o3QkAVQemfhGZCo1YFnpJ8wAx1RcB5mUsLMuZFQuoqAYo7QYB8oKBbIKAk5VAoBxwWY95QsIm95EFQ50EH91VKjWX9y4AVZ1Yk3ksW2OZwxLRrYqIWhHoDQgweJR4d1bd91s5c5fdmUWNK36db8pTuKedy5SNEV95DFFrVBIXvJ4FF3A0lH8VZJqbI0x5sq2iSTmSK7tHhnN9SpK16lYttWEi8U53yHiEs641FWjW+0akyLe6qtmDzDLKQxsrEMhLYmc4Q8txmUkmtNhNjoPovpLog2Q3SZw2yBI2m3W2NZY343E3W3OZSI02M2s33wc3Um83MsC2i3sAS31Uy2B1yif0HFlVqk0qEwG2dQo3m2Wm22O3KJ7ie2yA+2y3AHFJo1XYlcRRUIsdRbYbR7nFSloCQzEHtDgiiCGVPV9VV6acE8PjJWuaKNYM4KFlHkCUP6279iFW8iS98SkF5icrYWxD2L1sFFv94dUXqchTi81GlFrD1OhSMWmqIksDe5nZP5PZ6wIOhNUnfXRp2JC3fRtN0I7X25cB6BlQCA2o4AXx1Q4wrptJRAVIEdRBbMOPZItgnQfg2O0OY29Z-MjYTYzYYALYswrYbY7YHYjdgs3Z1U9V+6panEFd6WEwmZmno2W38wmo-MoBlxpZUmDWfd0jm4asyVr5TrIc2EK7dlu534B5LKvHaCJ1zl9aBlwddvaWc4DvCj2xSpKD09p0zsH5yU-qpTpOTbIWeGgk1Pqc14xCeUqrqluaidFFfOUE5vMULQWxTwEBUvvNlMIfin1NNN9pym9MJoamXIsOY5LNrNCuFnHNnMHIOn3NfIenvN+mVpBmXXhmQthaYdaYZ0d4gcDHaU265nTMKu0OlnMsVmct1mKylJV3FuaVlKoDQE74FKWG-Vewhl7VIi95-maYaxiiZ1Slgnk8aZdbaYFcp0G6HVb6Ni6PgsSWbH6rz9HFZqNie1Ff7l9lYCQfrdNwRogtx9XsnI6dTQrSO9T7pkVuR2N864zeRmgE6IDwLWrXvobWEuhQyIqBiZvpCmYeSn4ftNswKmqmUeTMzN2OMemm7N2P45cfXNOnunemfMSA-NSehn2vRnqeUWQ0O1KXK2Ti9Rmf0-We0sE5lnss1mR2AHfefg-5duFj8E2rUJVwJR+-VtTvKNh-SEkXFDzkH4xOj5rKHrgil9H6vLHpl-exV+K6SpSXL4f1kLv0P9ZJTjXrrdTTuJ+xLlO6E1x9hi5F1lkSVkWFIMr8T5nYPjtkyCTRzWsYQ+MwswtrSyIl2S6Q90uOMLLtdHEh5daABXIbjnwlAldPQ5XFprrFUD6xDYxsdCHVwa4wAmuXUFrkSSC7QodWyefKqin4TbJMYfSAbljxz7NtRuzUPUBN0tBTc3wM3N2BikgKzIGU2ybovnjkSMEk0ftfuDIgkScChBvVA3OuzkgNpO6NjV7vlipxsEU0Ig7BLtVpia8SSjNDBHIz9Qj1T855UChUklYUsxkLyF7HJ1moy9NwGacWlvw1z2kgy15PUHriUoA88mFuGPFYn1waFPBBiGPHJxzqC02URvGPHLnkrEkoKbhY+EARCQGJuiqLCMrHWDAYUxOJlannDhRpYIZMkSY9CNH0bDwRqDdWjLvyvpjwJcUDANNnioE6dBBh+GTOcUaJnU-m4RZSo7HGyNEc8YaOah1knR6FL0wTNoUjiiKwQ0w+tKZl3SUTKwgukud6mUmER1pRWGiUegWQFJipGOJLeTOCTOwWVyUBpRSNsK17NxZkAqSVKKifpoZDKaadlPAicjQouBWBGYWWzKhUCz4v-S1ta0AHh8VozrV1vnnjpbBPW3rX1jBwDbwdQ2tgJDih2G4YcE2LPbWHCIIgldMYjoJpgAF50RcILYGQC4DUBigoEdUHqDgAQAygWgQWFJnMjFB8wxI0kY0DCARA-AjIYkHEGxCPBUg2IRoNQBDaoAbABACgKoGQAkgTACASkRQDQAAAyUUS0HMhwhPAZAeWH4AIBUAoAjIsIJgEJAIA0AAAclAgXFtRco+IAqIQBKiVRjIqgNgHECYAdRcYPUAaKcDyjFRyo1UZEGYD3gcQuo-UYaMYDGjTRLo-4AIDIDiAdReou0YaP5E4AEwkQZ0WqOwAaiZAOor+GGIdEgAIx2AKMX6PNGWj8g2oq8F6JTFpiMxMYyIFAEDHBiQA2o20cmIdGFjoxAo5ALSGwCAhmgjQJwJCGhBGBDRAAHi7FoAAAVNKNlEFiVRdsCENgAQBxidRtgd0EgHtEmA2RKQCkCYCQAQAoQaAAAHxsBDRWgLoBKPXFUhqAAwFANgCpC4BKAqgNgHqG3EgA2AUIegAQFYgUAkAbACAGwC6BEiSRywFMbePeD3jHxz4i8V0HzBxhPx143ceuLdAnAjxFoq0ceNPHni2AaMOMJiAuBkhhRTgb4IzFsAKjzxaAAwJhJ8zIAWAQAA">source</a></small>
    </div>
    <div style="font-size: 3.0em; font-weight: bold;">Dot IX: Diagram Generator</div>
    <div style="font-size: 2.0em;">Picture Your Understanding</div>
    <div style="font-size: 1.5em;"><a href="https://azriel.im/dot_ix">https://azriel.im/dot_ix</a></div>
    <div style="height: 50px;"></div>
    <div style="font-size: 2.0em;">Azriel Hoh</div>
    <div style="font-size: 1.5em;">August 2024</div>
</div>

<div class="hidden">

1. Problem: Diverge
    1. Diagram types:
        1. Process diagrams
        2. Deployment diagrams (outcome)
        3. Class Diagrams
        4. Gantt charts
    2. Clarity / Appearance / Styling
        1. Nodes, Edges, Text
        2. Animations
        3. Lossless Resolution
        4. Interactive
        5. Level of detail
    3. Input
        1. Labels for nodes, edges
        2. Styles
        3. Common input
        4. Software library
    4. Where the diagrams will be displayed
        1. Web app
        2. Github comments
        3. Any documentation software
2. Problem: Converge
    1. Diagram types:
        1. Process diagrams
        2. Deployment diagrams (outcome)
        3. ~~Class Diagrams~~
        4. ~~Gantt charts~~
    2. Clarity / Appearance / Styling
        1. Nodes, Edges, Text
        2. Animations
        3. Lossless Resolution
        4. Interactive
        5. Level of detail
    3. Input
        1. Labels for nodes, edges
        2. Styles
        3. Common input
        4. Software library
    4. Where the diagrams will be displayed
        1. Web app
        2. Github comments
        3. Any documentation software
3. Solution: Diverge
    
    > * What solutions can we do?
    > * How does each solution address the concerns in the problem space we have chosen?

    Diagrams tend to be an abstraction over something actual.

    1. Output format:
        1. SVG
        2. HTML elements
        3. HTML canvas
        4. Image (pixels)
    2. Input format:
        1. Visual drawing tool
        2. Structured input, e.g. YAML, JSON
        3. Software library

4. Solution: Converge
    1. Output format:
        1. SVG: without `foreignObject`
        2. HTML elements
        3. ~~HTML canvas~~
        4. ~~Image (pixels)~~
    2. Input format:
        1. Visual drawing tool
        2. Structured input, e.g. YAML, pass through graphviz for layout
        3. Software library

</div>