<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Cradicle Explorer</title>
    <link href="/css/bootstrap/bootstrap.min.css" rel="stylesheet">
    <style>
      .form-control-dark::placeholder {
          color: #aaa;
          opacity: 1;
      }
    </style>
    <link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
    <link rel="icon" type="image/png" href="/favicon.png">


                <link href="/css/dashboard.css" rel="stylesheet">
                </head>
                <body>
                <header class="navbar navbar-dark sticky-top bg-dark flex-md-nowrap p-0 shadow">
                  <a class="navbar-brand col-md-3 col-lg-2 me-0 px-3 fs-6" href="/">Cradicle Explorer</a>
                  <button class="navbar-toggler position-absolute d-md-none collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#sidebarMenu" aria-controls="sidebarMenu" aria-expanded="false" aria-label="Toggle navigation">
                    <span class="navbar-toggler-icon"></span>
                  </button>
                  <form method="get" action="/cgi-bin/main" style="width:100%;"><input class="form-control form-control-dark w-100 rounded-0 border-0" type="text" name="q" placeholder="Search repos" aria-label="Search"></form>
                  <div class="navbar-nav flex-row">
                    <div class="nav-item text-nowrap">
                      <a class="nav-link px-3 active" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit">org-17711-mesh</a>
                    </div>
                  </div>
                </header>
                <div class="container-fluid">
                  <div class="row">
                    <nav id="sidebarMenu" class="col-md-3 col-lg-2 d-md-block bg-dark sidebar collapse">
                      <div class="position-sticky pt-3 sidebar-sticky">
                        <ul class="nav flex-column">
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit">
                              <i class="align-text-bottom fa-solid fa-info"></i>
                              Info
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&issue=list">
                              <i class="align-text-bottom fa-solid fa-layer-group"></i>
                              Issues
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&patch=list">
                              <i class="align-text-bottom fa-solid fa-vest-patches"></i>
                              Patches
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&wallet=list">
                              <i class="align-text-bottom fa-solid fa-wallet"></i>
                              Wallets
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link active" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&source=.">
                              <i class="align-text-bottom fa-solid fa-code"></i>
                              Source
                            </a>
                          </li>
                        <h6 class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-4 mb-1 text-muted text-uppercase">
                          <span></span>
                        </h6>
                        <ul class="nav flex-column mb-2">
                        
    <h6 class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-1 mb-1 text-muted text-uppercase">
      <span>Source</span>
    </h6>
    <li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&source=.cargo"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> .cargo</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&source=.claude"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> .claude</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&source=.woodpecker"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> .woodpecker</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&source=_bmad-output"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> _bmad-output</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&source=_bmad"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> _bmad</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&source=docs"><i class="fa-solid fa-folder-open" style="color:#f0c040;"></i> docs</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&source=docs%2Fadr"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> adr</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&file=docs%2FAUTH-MODES.md"><i class="fa-solid fa-file" style="color:#888;"></i> AUTH-MODES.md</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&file=docs%2FBUILD-PROCESS.md"><i class="fa-solid fa-file" style="color:#888;"></i> BUILD-PROCESS.md</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&file=docs%2FDEPLOY.md"><i class="fa-solid fa-file" style="color:#888;"></i> DEPLOY.md</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&file=docs%2FGETTING-STARTED.md"><i class="fa-solid fa-file" style="color:#888;"></i> GETTING-STARTED.md</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&file=docs%2FGRAPHIC-CHARTER.md"><i class="fa-solid fa-file" style="color:#888;"></i> GRAPHIC-CHARTER.md</a></li><li><a class="nav-link py-0 active" style="padding-left:32px;" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&file=docs%2FHOW-TO.md"><i class="fa-solid fa-file" style="color:#888;"></i> HOW-TO.md</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&file=docs%2FNAMING.md"><i class="fa-solid fa-file" style="color:#888;"></i> NAMING.md</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&file=docs%2FPORTS.md"><i class="fa-solid fa-file" style="color:#888;"></i> PORTS.md</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&file=docs%2FVERSIONING.md"><i class="fa-solid fa-file" style="color:#888;"></i> VERSIONING.md</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&file=docs%2Fdeploy-prerelease.md"><i class="fa-solid fa-file" style="color:#888;"></i> deploy-prerelease.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&source=eu-17711-smart"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> eu-17711-smart</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&source=org-17711-mesh"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> org-17711-mesh</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&source=packages"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> packages</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&source=sbom"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> sbom</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&source=scripts"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> scripts</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&file=.containerignore"><i class="fa-solid fa-file" style="color:#888;"></i> .containerignore</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&file=.gitignore"><i class="fa-solid fa-file" style="color:#888;"></i> .gitignore</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&file=.woodpecker.yml"><i class="fa-solid fa-file" style="color:#888;"></i> .woodpecker.yml</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&file=CHANGELOG.md"><i class="fa-solid fa-file" style="color:#888;"></i> CHANGELOG.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&file=CLAUDE.md"><i class="fa-solid fa-file" style="color:#888;"></i> CLAUDE.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&file=Cargo.lock"><i class="fa-solid fa-file" style="color:#888;"></i> Cargo.lock</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&file=Cargo.toml"><i class="fa-solid fa-file" style="color:#888;"></i> Cargo.toml</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&file=LICENSE"><i class="fa-solid fa-file" style="color:#888;"></i> LICENSE</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&file=README.md"><i class="fa-solid fa-file" style="color:#888;"></i> README.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&file=lefthook.yml"><i class="fa-solid fa-file" style="color:#888;"></i> lefthook.yml</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&file=rust-toolchain.toml"><i class="fa-solid fa-file" style="color:#888;"></i> rust-toolchain.toml</a></li>
    
                        </ul>
                      </div>
                    </nav>
                <main class="col-md-9 ms-sm-auto col-lg-10">
                  <div class="container px-1 py-3">
        
<div class="mb-2" style="font-size:1.1rem;"><a href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&source=.">/</a> <a href="/cgi-bin/repo?id=z2JDBs1rfpBMCaQ9uSPJCPz8QwHit&source=docs">docs</a> / HOW-TO.md</div>
        <div class="list-group">
        <div class="list-group-item">
        <div class="mb-2" style="font-weight:bold;"><i class="fa-solid fa-file"></i> HOW-TO.md</div>
        <pre style="margin:0; font-size:0.85rem; overflow-x:auto; color:#fafafa;"><span style="color:#666; user-select:none;">  1</span>  # How-To Guide — Frame17711
<span style="color:#666; user-select:none;">  2</span>  
<span style="color:#666; user-select:none;">  3</span>  Task-oriented guides. Find what you want to do, follow the steps.
<span style="color:#666; user-select:none;">  4</span>  
<span style="color:#666; user-select:none;">  5</span>  ---
<span style="color:#666; user-select:none;">  6</span>  
<span style="color:#666; user-select:none;">  7</span>  ## Deploy a Service
<span style="color:#666; user-select:none;">  8</span>  
<span style="color:#666; user-select:none;">  9</span>  ### What happens
<span style="color:#666; user-select:none;"> 10</span>  
<span style="color:#666; user-select:none;"> 11</span>  1. You build a release binary → BLAKE3 hash
<span style="color:#666; user-select:none;"> 12</span>  2. Ansible deploys to node → Quadlet container starts
<span style="color:#666; user-select:none;"> 13</span>  3. Service auto-registers in directory (`ServiceEntry`)
<span style="color:#666; user-select:none;"> 14</span>  4. Fabric ledger records deployment (private, operational)
<span style="color:#666; user-select:none;"> 15</span>  5. Polygon records CI proof (public, minimal — hash only)
<span style="color:#666; user-select:none;"> 16</span>  6. Caddy auto-configures HTTPS vhost from directory
<span style="color:#666; user-select:none;"> 17</span>  7. Service appears in catalog (`catalog.mesh.17711.org`)
<span style="color:#666; user-select:none;"> 18</span>  
<span style="color:#666; user-select:none;"> 19</span>  ### Steps
<span style="color:#666; user-select:none;"> 20</span>  
<span style="color:#666; user-select:none;"> 21</span>  ```bash
<span style="color:#666; user-select:none;"> 22</span>  cargo build --release
<span style="color:#666; user-select:none;"> 23</span>  b3sum target/release/org-17711-mesh-{name}
<span style="color:#666; user-select:none;"> 24</span>  ansible-playbook playbooks/deploy-{name}.yml --ask-vault-pass
<span style="color:#666; user-select:none;"> 25</span>  mesh service verify org.17711.mesh/{name}
<span style="color:#666; user-select:none;"> 26</span>  ```
<span style="color:#666; user-select:none;"> 27</span>  
<span style="color:#666; user-select:none;"> 28</span>  ### Blockchain contracts involved
<span style="color:#666; user-select:none;"> 29</span>  
<span style="color:#666; user-select:none;"> 30</span>  | Contract | What it stores | Chain |
<span style="color:#666; user-select:none;"> 31</span>  |---|---|---|
<span style="color:#666; user-select:none;"> 32</span>  | `CiReport17711Contract` | Build hash + commit + status | Polygon |
<span style="color:#666; user-select:none;"> 33</span>  | `Deployment17711Registry` | Domain hash + service_id + status | Polygon |
<span style="color:#666; user-select:none;"> 34</span>  | Fabric `register_deployment` | Full deployment record (version, hash, node, wallet) | Fabric (local) |
<span style="color:#666; user-select:none;"> 35</span>  
<span style="color:#666; user-select:none;"> 36</span>  ---
<span style="color:#666; user-select:none;"> 37</span>  
<span style="color:#666; user-select:none;"> 38</span>  ## Bump a Version
<span style="color:#666; user-select:none;"> 39</span>  
<span style="color:#666; user-select:none;"> 40</span>  ### What happens
<span style="color:#666; user-select:none;"> 41</span>  
<span style="color:#666; user-select:none;"> 42</span>  1. You edit `Cargo.toml` version
<span style="color:#666; user-select:none;"> 43</span>  2. Founder signs with wallet (SIWE)
<span style="color:#666; user-select:none;"> 44</span>  3. CI builds + hashes the new version
<span style="color:#666; user-select:none;"> 45</span>  4. `VersionedRelease17711Registry` records the new version on-chain
<span style="color:#666; user-select:none;"> 46</span>  5. All services update to new version on next deploy
<span style="color:#666; user-select:none;"> 47</span>  
<span style="color:#666; user-select:none;"> 48</span>  ### Steps
<span style="color:#666; user-select:none;"> 49</span>  
<span style="color:#666; user-select:none;"> 50</span>  ```bash
<span style="color:#666; user-select:none;"> 51</span>  # 1. Edit version
<span style="color:#666; user-select:none;"> 52</span>  vim Cargo.toml  # workspace.package.version = &quot;X.Y.Z&quot;
<span style="color:#666; user-select:none;"> 53</span>  cargo check --workspace &amp;&amp; cargo test
<span style="color:#666; user-select:none;"> 54</span>  
<span style="color:#666; user-select:none;"> 55</span>  # 2. Commit + sign
<span style="color:#666; user-select:none;"> 56</span>  git commit --author=&quot;Paul Milton &lt;paul.milton@17711.org&gt;&quot;
<span style="color:#666; user-select:none;"> 57</span>  mesh release sign vX.Y.Z
<span style="color:#666; user-select:none;"> 58</span>  
<span style="color:#666; user-select:none;"> 59</span>  # 3. Tag + push
<span style="color:#666; user-select:none;"> 60</span>  git tag vX.Y.Z
<span style="color:#666; user-select:none;"> 61</span>  rad push
<span style="color:#666; user-select:none;"> 62</span>  # → CI: build → hash → register on-chain
<span style="color:#666; user-select:none;"> 63</span>  ```
<span style="color:#666; user-select:none;"> 64</span>  
<span style="color:#666; user-select:none;"> 65</span>  ### Blockchain contracts involved
<span style="color:#666; user-select:none;"> 66</span>  
<span style="color:#666; user-select:none;"> 67</span>  | Contract | What it stores | Chain |
<span style="color:#666; user-select:none;"> 68</span>  |---|---|---|
<span style="color:#666; user-select:none;"> 69</span>  | `VersionedRelease17711Registry` | Version + BLAKE3 hash + commit | Polygon |
<span style="color:#666; user-select:none;"> 70</span>  | `CiReport17711Contract` | Build pipeline result | Polygon |
<span style="color:#666; user-select:none;"> 71</span>  
<span style="color:#666; user-select:none;"> 72</span>  ### Rules
<span style="color:#666; user-select:none;"> 73</span>  
<span style="color:#666; user-select:none;"> 74</span>  - Pre-1.0.0: single founder signature
<span style="color:#666; user-select:none;"> 75</span>  - Post-1.0.0: F(5)-of-F(6) = 5-of-8 quorum
<span style="color:#666; user-select:none;"> 76</span>  
<span style="color:#666; user-select:none;"> 77</span>  ---
<span style="color:#666; user-select:none;"> 78</span>  
<span style="color:#666; user-select:none;"> 79</span>  ## Register a JSON Schema
<span style="color:#666; user-select:none;"> 80</span>  
<span style="color:#666; user-select:none;"> 81</span>  ### What happens
<span style="color:#666; user-select:none;"> 82</span>  
<span style="color:#666; user-select:none;"> 83</span>  1. You modify a Rust struct with `#[derive(Serialize, Deserialize)]`
<span style="color:#666; user-select:none;"> 84</span>  2. CI detects schema change (BLAKE3 hash differs from on-chain)
<span style="color:#666; user-select:none;"> 85</span>  3. Additive change → minor bump eligible
<span style="color:#666; user-select:none;"> 86</span>  4. Breaking change → pipeline FAIL, major bump required
<span style="color:#666; user-select:none;"> 87</span>  5. Founder signs → schema registered on-chain
<span style="color:#666; user-select:none;"> 88</span>  6. Schema content stored in OrbitDB (BLAKE3-addressed)
<span style="color:#666; user-select:none;"> 89</span>  
<span style="color:#666; user-select:none;"> 90</span>  ### Steps
<span style="color:#666; user-select:none;"> 91</span>  
<span style="color:#666; user-select:none;"> 92</span>  ```bash
<span style="color:#666; user-select:none;"> 93</span>  # Check schema status
<span style="color:#666; user-select:none;"> 94</span>  mesh schema verify
<span style="color:#666; user-select:none;"> 95</span>  
<span style="color:#666; user-select:none;"> 96</span>  # Register (founder signature required)
<span style="color:#666; user-select:none;"> 97</span>  mesh schema register urn:17711:schema:scim:user:0.2.3+43.KfR7bNm
<span style="color:#666; user-select:none;"> 98</span>  ```
<span style="color:#666; user-select:none;"> 99</span>  
<span style="color:#666; user-select:none;">100</span>  ### Blockchain contracts involved
<span style="color:#666; user-select:none;">101</span>  
<span style="color:#666; user-select:none;">102</span>  | Contract | What it stores | Chain |
<span style="color:#666; user-select:none;">103</span>  |---|---|---|
<span style="color:#666; user-select:none;">104</span>  | `Schema17711Registry` | Schema URN + BLAKE3 hash + version + deprecated flag | Polygon |
<span style="color:#666; user-select:none;">105</span>  | OrbitDB | Full JSON Schema content (encrypted) | Mesh (IPFS) |
<span style="color:#666; user-select:none;">106</span>  
<span style="color:#666; user-select:none;">107</span>  ### URN format
<span style="color:#666; user-select:none;">108</span>  
<span style="color:#666; user-select:none;">109</span>  `urn:17711:schema:{category}:{entity}:{semver}+{pipeline}.{commit_b55}`
<span style="color:#666; user-select:none;">110</span>  
<span style="color:#666; user-select:none;">111</span>  ---
<span style="color:#666; user-select:none;">112</span>  
<span style="color:#666; user-select:none;">113</span>  ## Create a Smart Contract
<span style="color:#666; user-select:none;">114</span>  
<span style="color:#666; user-select:none;">115</span>  ### What happens
<span style="color:#666; user-select:none;">116</span>  
<span style="color:#666; user-select:none;">117</span>  1. You write Solidity extending `Mesh17711ContractBase`
<span style="color:#666; user-select:none;">118</span>  2. Contract inherits: version, family, pause/unpause, registry link
<span style="color:#666; user-select:none;">119</span>  3. Deploy to Polygon mainnet
<span style="color:#666; user-select:none;">120</span>  4. Contract address registered in `VersionedRelease17711Registry`
<span style="color:#666; user-select:none;">121</span>  5. ABI hash registered on-chain for client verification
<span style="color:#666; user-select:none;">122</span>  
<span style="color:#666; user-select:none;">123</span>  ### Steps
<span style="color:#666; user-select:none;">124</span>  
<span style="color:#666; user-select:none;">125</span>  ```bash
<span style="color:#666; user-select:none;">126</span>  cd org-17711-mesh/contracts
<span style="color:#666; user-select:none;">127</span>  npx hardhat compile
<span style="color:#666; user-select:none;">128</span>  npx hardhat test
<span style="color:#666; user-select:none;">129</span>  npx hardhat run scripts/deploy-{name}.ts --network polygon
<span style="color:#666; user-select:none;">130</span>  ```
<span style="color:#666; user-select:none;">131</span>  
<span style="color:#666; user-select:none;">132</span>  ### Base contract
<span style="color:#666; user-select:none;">133</span>  
<span style="color:#666; user-select:none;">134</span>  All contracts extend `Mesh17711ContractBase`:
<span style="color:#666; user-select:none;">135</span>  - `VERSION_MAJOR`, `VERSION_MINOR`, `VERSION_PATCH` (immutable at deploy)
<span style="color:#666; user-select:none;">136</span>  - `CONTRACT_FAMILY` (keccak256 of family name)
<span style="color:#666; user-select:none;">137</span>  - `registry` (link to VersionedRelease17711Registry)
<span style="color:#666; user-select:none;">138</span>  - `pause()` / `unpause()` (owner only)
<span style="color:#666; user-select:none;">139</span>  
<span style="color:#666; user-select:none;">140</span>  ### Existing contracts (26)
<span style="color:#666; user-select:none;">141</span>  
<span style="color:#666; user-select:none;">142</span>  | Family | Contracts |
<span style="color:#666; user-select:none;">143</span>  |---|---|
<span style="color:#666; user-select:none;">144</span>  | Token | `Frame17711Token`, `O17711Token`, `TokenLevels17711Contract` |
<span style="color:#666; user-select:none;">145</span>  | Governance | `Frame17711DAO`, `Frame17711Governor`, `Governance17711Contract`, `Governance17711Suspension`, `Emergency17711Guard` |
<span style="color:#666; user-select:none;">146</span>  | Partners | `Partners17711DAO`, `Partners17711Gov`, `Partners17711Governor` |
<span style="color:#666; user-select:none;">147</span>  | Treasury | `Mesh17711Treasury`, `Treasury17711Split`, `Commission17711Contract`, `Referral17711Contract` |
<span style="color:#666; user-select:none;">148</span>  | Operations | `Quota17711Contract`, `Metering17711Contract`, `Sla17711Contract`, `TierConfig17711Contract` |
<span style="color:#666; user-select:none;">149</span>  | Hosting | `Hosting17711Contract` |
<span style="color:#666; user-select:none;">150</span>  | Registry | `Deployment17711Registry`, `VersionedRelease17711Registry`, `Schema17711Registry` |
<span style="color:#666; user-select:none;">151</span>  | Compliance | `Charter17711Contract`, `CiReport17711Contract` |
<span style="color:#666; user-select:none;">152</span>  
<span style="color:#666; user-select:none;">153</span>  ---
<span style="color:#666; user-select:none;">154</span>  
<span style="color:#666; user-select:none;">155</span>  ## Add a UI Component
<span style="color:#666; user-select:none;">156</span>  
<span style="color:#666; user-select:none;">157</span>  ### What happens
<span style="color:#666; user-select:none;">158</span>  
<span style="color:#666; user-select:none;">159</span>  1. You create a Vue 3 component following `{Name}17711` naming
<span style="color:#666; user-select:none;">160</span>  2. Component is added to `@org-17711-mesh/ui-components` package
<span style="color:#666; user-select:none;">161</span>  3. Package published to `js.factory.mesh.17711.org`
<span style="color:#666; user-select:none;">162</span>  4. BLAKE3 hash of package tarball registered on-chain
<span style="color:#666; user-select:none;">163</span>  5. Component appears in catalog with `data-component` DOM attribute
<span style="color:#666; user-select:none;">164</span>  
<span style="color:#666; user-select:none;">165</span>  ### Steps
<span style="color:#666; user-select:none;">166</span>  
<span style="color:#666; user-select:none;">167</span>  ```bash
<span style="color:#666; user-select:none;">168</span>  # Create component
<span style="color:#666; user-select:none;">169</span>  cat &gt; libs/ui-components/src/components/MyNew17711Widget.vue
<span style="color:#666; user-select:none;">170</span>  
<span style="color:#666; user-select:none;">171</span>  # Export it
<span style="color:#666; user-select:none;">172</span>  # → add to libs/ui-components/src/index.ts
<span style="color:#666; user-select:none;">173</span>  
<span style="color:#666; user-select:none;">174</span>  # Test
<span style="color:#666; user-select:none;">175</span>  cd libs/ui-components &amp;&amp; npm test
<span style="color:#666; user-select:none;">176</span>  
<span style="color:#666; user-select:none;">177</span>  # Publish (founder signature for version bump)
<span style="color:#666; user-select:none;">178</span>  npm publish --registry https://js.factory.mesh.17711.org
<span style="color:#666; user-select:none;">179</span>  ```
<span style="color:#666; user-select:none;">180</span>  
<span style="color:#666; user-select:none;">181</span>  ### Blockchain contracts involved
<span style="color:#666; user-select:none;">182</span>  
<span style="color:#666; user-select:none;">183</span>  | Contract | What it stores | Chain |
<span style="color:#666; user-select:none;">184</span>  |---|---|---|
<span style="color:#666; user-select:none;">185</span>  | `VersionedRelease17711Registry` | Package version + BLAKE3 hash | Polygon |
<span style="color:#666; user-select:none;">186</span>  
<span style="color:#666; user-select:none;">187</span>  ### Naming
<span style="color:#666; user-select:none;">188</span>  
<span style="color:#666; user-select:none;">189</span>  - Component: `MyNew17711Widget`
<span style="color:#666; user-select:none;">190</span>  - DOM: `data-component=&quot;MyNew17711Widget&quot;`, `data-contract=&quot;{hash}&quot;`
<span style="color:#666; user-select:none;">191</span>  
<span style="color:#666; user-select:none;">192</span>  ---
<span style="color:#666; user-select:none;">193</span>  
<span style="color:#666; user-select:none;">194</span>  ## Grant Permissions (Zanzibar ACL)
<span style="color:#666; user-select:none;">195</span>  
<span style="color:#666; user-select:none;">196</span>  ### What happens
<span style="color:#666; user-select:none;">197</span>  
<span style="color:#666; user-select:none;">198</span>  1. Wallet A (owner) creates a delegation
<span style="color:#666; user-select:none;">199</span>  2. Zanzibar tuple stored: `(namespace:resource#relation@subject)`
<span style="color:#666; user-select:none;">200</span>  3. Subject can now access the resource within TTL
<span style="color:#666; user-select:none;">201</span>  4. Delegation expires after F(12)=144 hours (auto-revoke)
<span style="color:#666; user-select:none;">202</span>  
<span style="color:#666; user-select:none;">203</span>  ### Steps
<span style="color:#666; user-select:none;">204</span>  
<span style="color:#666; user-select:none;">205</span>  ```bash
<span style="color:#666; user-select:none;">206</span>  # Grant editor access on a site
<span style="color:#666; user-select:none;">207</span>  mesh delegate grant \
<span style="color:#666; user-select:none;">208</span>    --namespace site \
<span style="color:#666; user-select:none;">209</span>    --resource my-site.mesh.17711.org \
<span style="color:#666; user-select:none;">210</span>    --relation editor \
<span style="color:#666; user-select:none;">211</span>    --to 0x742d...2bd18
<span style="color:#666; user-select:none;">212</span>  
<span style="color:#666; user-select:none;">213</span>  # Check permissions
<span style="color:#666; user-select:none;">214</span>  mesh delegate check \
<span style="color:#666; user-select:none;">215</span>    --namespace site \
<span style="color:#666; user-select:none;">216</span>    --resource my-site.mesh.17711.org \
<span style="color:#666; user-select:none;">217</span>    --relation reader \
<span style="color:#666; user-select:none;">218</span>    --who 0x742d...2bd18
<span style="color:#666; user-select:none;">219</span>  
<span style="color:#666; user-select:none;">220</span>  # Revoke
<span style="color:#666; user-select:none;">221</span>  mesh delegate revoke --id &lt;delegation-id&gt;
<span style="color:#666; user-select:none;">222</span>  ```
<span style="color:#666; user-select:none;">223</span>  
<span style="color:#666; user-select:none;">224</span>  ### ACL hierarchy
<span style="color:#666; user-select:none;">225</span>  
<span style="color:#666; user-select:none;">226</span>  `owner` ⊃ `admin` ⊃ `editor` ⊃ `writer` ⊃ `reader` ⊃ `authenticated` ⊃ `anonymous`
<span style="color:#666; user-select:none;">227</span>  
<span style="color:#666; user-select:none;">228</span>  ---
<span style="color:#666; user-select:none;">229</span>  
<span style="color:#666; user-select:none;">230</span>  ## Monitor the Mesh
<span style="color:#666; user-select:none;">231</span>  
<span style="color:#666; user-select:none;">232</span>  ### What happens
<span style="color:#666; user-select:none;">233</span>  
<span style="color:#666; user-select:none;">234</span>  - All services export Prometheus metrics on port 17944+
<span style="color:#666; user-select:none;">235</span>  - Logs shipped to Loki in JSON format with correlation IDs
<span style="color:#666; user-select:none;">236</span>  - Dashboards aggregate everything in Grafana
<span style="color:#666; user-select:none;">237</span>  - All o11y data is public (wallet-auth, any wallet)
<span style="color:#666; user-select:none;">238</span>  
<span style="color:#666; user-select:none;">239</span>  ### URLs
<span style="color:#666; user-select:none;">240</span>  
<span style="color:#666; user-select:none;">241</span>  | Tool | URL | What |
<span style="color:#666; user-select:none;">242</span>  |---|---|---|
<span style="color:#666; user-select:none;">243</span>  | Dashboards | `dashboards.o11y.mesh.17711.org` | Grafana panels |
<span style="color:#666; user-select:none;">244</span>  | Metrics | `metrics.o11y.mesh.17711.org` | Prometheus queries |
<span style="color:#666; user-select:none;">245</span>  | Logs | `logs.o11y.mesh.17711.org` | Loki LogQL |
<span style="color:#666; user-select:none;">246</span>  
<span style="color:#666; user-select:none;">247</span>  ### Key metrics
<span style="color:#666; user-select:none;">248</span>  
<span style="color:#666; user-select:none;">249</span>  - `mesh_requests_total` — HTTP requests per service
<span style="color:#666; user-select:none;">250</span>  - `mesh_latency_seconds` — p50/p95/p99 latency
<span style="color:#666; user-select:none;">251</span>  - `mesh_node_status` — node up/down/degraded
<span style="color:#666; user-select:none;">252</span>  - `mesh_build_hash` — current deployed build hash
<span style="color:#666; user-select:none;">253</span>  
<span style="color:#666; user-select:none;">254</span>  ---
<span style="color:#666; user-select:none;">255</span>  
<span style="color:#666; user-select:none;">256</span>  ## Access Commercial Code
<span style="color:#666; user-select:none;">257</span>  
<span style="color:#666; user-select:none;">258</span>  ### What happens
<span style="color:#666; user-select:none;">259</span>  
<span style="color:#666; user-select:none;">260</span>  1. You acquire `eu.17711.smart` token
<span style="color:#666; user-select:none;">261</span>  2. Connect wallet at `sources.smart.17711.eu`
<span style="color:#666; user-select:none;">262</span>  3. SIWE challenge → token ownership verified
<span style="color:#666; user-select:none;">263</span>  4. Clone access granted
<span style="color:#666; user-select:none;">264</span>  
<span style="color:#666; user-select:none;">265</span>  ### Steps
<span style="color:#666; user-select:none;">266</span>  
<span style="color:#666; user-select:none;">267</span>  ```bash
<span style="color:#666; user-select:none;">268</span>  # Clone (token required)
<span style="color:#666; user-select:none;">269</span>  rad clone rad:eu-17711-smart --seed sources.smart.17711.eu
<span style="color:#666; user-select:none;">270</span>  
<span style="color:#666; user-select:none;">271</span>  # Install commercial plugin
<span style="color:#666; user-select:none;">272</span>  mesh plugin install eu.17711.smart/code-analysis
<span style="color:#666; user-select:none;">273</span>  
<span style="color:#666; user-select:none;">274</span>  # Use
<span style="color:#666; user-select:none;">275</span>  mesh analyze java ./src --profile owasp
<span style="color:#666; user-select:none;">276</span>  mesh analyze sql pgsql ./queries
<span style="color:#666; user-select:none;">277</span>  ```
<span style="color:#666; user-select:none;">278</span>  
<span style="color:#666; user-select:none;">279</span>  ### Blockchain contracts involved
<span style="color:#666; user-select:none;">280</span>  
<span style="color:#666; user-select:none;">281</span>  | Contract | What it stores | Chain |
<span style="color:#666; user-select:none;">282</span>  |---|---|---|
<span style="color:#666; user-select:none;">283</span>  | `O17711Token` | Token ownership (ERC-20/721) | Polygon |
<span style="color:#666; user-select:none;">284</span>  | `TierConfig17711Contract` | Access tiers + quotas | Polygon |
<span style="color:#666; user-select:none;">285</span>  
<span style="color:#666; user-select:none;">286</span>  ---
<span style="color:#666; user-select:none;">287</span>  
<span style="color:#666; user-select:none;">288</span>  ## Check Any Service Version
<span style="color:#666; user-select:none;">289</span>  
<span style="color:#666; user-select:none;">290</span>  ### What happens
<span style="color:#666; user-select:none;">291</span>  
<span style="color:#666; user-select:none;">292</span>  Every service exposes its exact version. DNS root = `current` (DAO-blessed). Every brick is versioned identically.
<span style="color:#666; user-select:none;">293</span>  
<span style="color:#666; user-select:none;">294</span>  ### Steps
<span style="color:#666; user-select:none;">295</span>  
<span style="color:#666; user-select:none;">296</span>  ```bash
<span style="color:#666; user-select:none;">297</span>  # Check current version (DNS root = current)
<span style="color:#666; user-select:none;">298</span>  curl https://dashboards.o11y.mesh.17711.org/health
<span style="color:#666; user-select:none;">299</span>  # → {&quot;version&quot;: &quot;v0.2.2+42.KfR7bNm&quot;, &quot;selector&quot;: &quot;current&quot;}
<span style="color:#666; user-select:none;">300</span>  
<span style="color:#666; user-select:none;">301</span>  # Check latest version
<span style="color:#666; user-select:none;">302</span>  curl https://dashboards.o11y.mesh.17711.org/api/latest/health
<span style="color:#666; user-select:none;">303</span>  # → {&quot;version&quot;: &quot;v0.2.3+43.MpT9cQw&quot;, &quot;selector&quot;: &quot;latest&quot;}
<span style="color:#666; user-select:none;">304</span>  
<span style="color:#666; user-select:none;">305</span>  # Check specific version
<span style="color:#666; user-select:none;">306</span>  curl https://dashboards.o11y.mesh.17711.org/api/v0.2.2/health
<span style="color:#666; user-select:none;">307</span>  # → {&quot;version&quot;: &quot;v0.2.2+42.KfR7bNm&quot;, &quot;selector&quot;: &quot;v0.2.2&quot;}
<span style="color:#666; user-select:none;">308</span>  
<span style="color:#666; user-select:none;">309</span>  # Works for ALL services:
<span style="color:#666; user-select:none;">310</span>  curl https://ci.factory.mesh.17711.org/health
<span style="color:#666; user-select:none;">311</span>  curl https://metrics.o11y.mesh.17711.org/health
<span style="color:#666; user-select:none;">312</span>  curl https://api.mesh.17711.org/health
<span style="color:#666; user-select:none;">313</span>  curl https://org.sources.oss.mesh.17711.org/health
<span style="color:#666; user-select:none;">314</span>  ```
<span style="color:#666; user-select:none;">315</span>  
<span style="color:#666; user-select:none;">316</span>  ### Blockchain contracts involved
<span style="color:#666; user-select:none;">317</span>  
<span style="color:#666; user-select:none;">318</span>  | Contract | What it stores | Chain |
<span style="color:#666; user-select:none;">319</span>  |---|---|---|
<span style="color:#666; user-select:none;">320</span>  | `VersionedRelease17711Registry` | `current` → version hash mapping | Polygon |
<span style="color:#666; user-select:none;">321</span>  | `Deployment17711Registry` | Service domain → version + status | Polygon |
<span style="color:#666; user-select:none;">322</span>  | Fabric ledger | Full deployment history per service | Fabric (free) |
<span style="color:#666; user-select:none;">323</span>  
<span style="color:#666; user-select:none;">324</span>  ### Version selectors
<span style="color:#666; user-select:none;">325</span>  
<span style="color:#666; user-select:none;">326</span>  | Selector | What | When to use |
<span style="color:#666; user-select:none;">327</span>  |---|---|---|
<span style="color:#666; user-select:none;">328</span>  | `current` | DAO-blessed stable | Production clients (DNS root default) |
<span style="color:#666; user-select:none;">329</span>  | `latest` | Most recent deploy | Dev/testing |
<span style="color:#666; user-select:none;">330</span>  | `v0.2.2` | Exact pinned version | Reproducibility, rollback |
<span style="color:#666; user-select:none;">331</span>  
<span style="color:#666; user-select:none;">332</span>  ### Verify version on-chain
<span style="color:#666; user-select:none;">333</span>  
<span style="color:#666; user-select:none;">334</span>  ```bash
<span style="color:#666; user-select:none;">335</span>  # Verify what&#x27;s deployed matches what&#x27;s on-chain
<span style="color:#666; user-select:none;">336</span>  mesh service verify org.17711.mesh/dashboards
<span style="color:#666; user-select:none;">337</span>  # → version: v0.2.2+42.KfR7bNm
<span style="color:#666; user-select:none;">338</span>  # → BLAKE3: abc123...
<span style="color:#666; user-select:none;">339</span>  # → Polygon tx: 0xdef456...
<span style="color:#666; user-select:none;">340</span>  # → Status: ✓ Verified
<span style="color:#666; user-select:none;">341</span>  ```
<span style="color:#666; user-select:none;">342</span>  
<span style="color:#666; user-select:none;">343</span>  ---
<span style="color:#666; user-select:none;">344</span>  
<span style="color:#666; user-select:none;">345</span>  ## Revenue Distribution — Fibonacci Split
<span style="color:#666; user-select:none;">346</span>  
<span style="color:#666; user-select:none;">347</span>  ### What happens
<span style="color:#666; user-select:none;">348</span>  
<span style="color:#666; user-select:none;">349</span>  Every foundation sale is automatically split across 9 pools via `Treasury17711Split` on Polygon. The percentages follow Fibonacci numbers. The Social Impact pool (34%) has an **immutable minimum** — it can never go below F(9).
<span style="color:#666; user-select:none;">350</span>  
<span style="color:#666; user-select:none;">351</span>  ### Distribution
<span style="color:#666; user-select:none;">352</span>  
<span style="color:#666; user-select:none;">353</span>  | Pool | % | F(n) | Purpose |
<span style="color:#666; user-select:none;">354</span>  |---|---|---|---|
<span style="color:#666; user-select:none;">355</span>  | Social Impact | 34% | F(9) | Good causes, associations, environment |
<span style="color:#666; user-select:none;">356</span>  | Open Source | 21% | F(8) | Mesh development, infrastructure |
<span style="color:#666; user-select:none;">357</span>  | DAO Treasury | 13% | F(7) | Governance-allocated budget |
<span style="color:#666; user-select:none;">358</span>  | Founders &amp; Devs | 13% | F(7) | Core team compensation |
<span style="color:#666; user-select:none;">359</span>  | Architects | 8% | F(6) | System design, ADRs |
<span style="color:#666; user-select:none;">360</span>  | Node Operators | 5% | F(5) | Infrastructure providers |
<span style="color:#666; user-select:none;">361</span>  | Community | 3% | F(4) | Bug bounty, grants, contributions |
<span style="color:#666; user-select:none;">362</span>  | Documentation | 2% | F(3) | Docs, i18n, translation |
<span style="color:#666; user-select:none;">363</span>  | Emergency | 1% | F(2) | Reserve fund |
<span style="color:#666; user-select:none;">364</span>  
<span style="color:#666; user-select:none;">365</span>  ### Blockchain contracts involved
<span style="color:#666; user-select:none;">366</span>  
<span style="color:#666; user-select:none;">367</span>  | Contract | What | Chain |
<span style="color:#666; user-select:none;">368</span>  |---|---|---|
<span style="color:#666; user-select:none;">369</span>  | `Treasury17711Split` | Splits ERC-20 payments to 9 wallets | Polygon |
<span style="color:#666; user-select:none;">370</span>  
<span style="color:#666; user-select:none;">371</span>  ### Rules
<span style="color:#666; user-select:none;">372</span>  
<span style="color:#666; user-select:none;">373</span>  - Social Impact ≥ 34% — immutable floor (enforced in contract)
<span style="color:#666; user-select:none;">374</span>  - BPS must always sum to 10000 (100%)
<span style="color:#666; user-select:none;">375</span>  - Pool wallets updatable by DAO governance
<span style="color:#666; user-select:none;">376</span>  - Ratios updatable by DAO governance (within constraints)
<span style="color:#666; user-select:none;">377</span>  - Rounding dust goes to Emergency pool
<span style="color:#666; user-select:none;">378</span>  
<span style="color:#666; user-select:none;">379</span>  ### Verify
<span style="color:#666; user-select:none;">380</span>  
<span style="color:#666; user-select:none;">381</span>  ```bash
<span style="color:#666; user-select:none;">382</span>  # Check pool details
<span style="color:#666; user-select:none;">383</span>  mesh treasury pool 0  # → Social Impact: 34%, wallet: 0x..., total: X tokens
<span style="color:#666; user-select:none;">384</span>  
<span style="color:#666; user-select:none;">385</span>  # Check all pools
<span style="color:#666; user-select:none;">386</span>  mesh treasury pools  # → table of all 9 pools with totals
<span style="color:#666; user-select:none;">387</span>  ```
</pre>
        </div>
        </div>

</div>
</main>
</div>
</div>


</body>
</html>

