retold-harness 1.1.12 → 1.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +13 -28
  2. package/diagrams/architecture.excalidraw +2885 -0
  3. package/diagrams/architecture.mmd +17 -0
  4. package/diagrams/architecture.svg +2 -0
  5. package/docs/README.md +13 -13
  6. package/docs/_brand.json +18 -0
  7. package/docs/_cover.md +1 -1
  8. package/docs/_topbar.md +1 -1
  9. package/docs/_version.json +3 -3
  10. package/docs/api/meadow-provider-configurator.md +1 -1
  11. package/docs/api/reference.md +4 -4
  12. package/docs/api/retold-harness.md +3 -3
  13. package/docs/api/schema-provider.md +2 -2
  14. package/docs/architecture.md +4 -42
  15. package/docs/diagrams/component-architecture.excalidraw +3643 -0
  16. package/docs/diagrams/component-architecture.mmd +18 -0
  17. package/docs/diagrams/component-architecture.svg +2 -0
  18. package/docs/diagrams/entity-relationships.excalidraw +1852 -0
  19. package/docs/diagrams/entity-relationships.mmd +19 -0
  20. package/docs/diagrams/entity-relationships.svg +2 -0
  21. package/docs/diagrams/initialization-flow.excalidraw +1708 -0
  22. package/docs/diagrams/initialization-flow.mmd +20 -0
  23. package/docs/diagrams/initialization-flow.svg +2 -0
  24. package/docs/endpoints.md +1 -1
  25. package/docs/index.html +6 -7
  26. package/docs/quickstart.md +2 -2
  27. package/docs/retold-catalog.json +181 -162
  28. package/docs/retold-keyword-index.json +18339 -8417
  29. package/docs/schema.md +2 -21
  30. package/package.json +7 -7
  31. package/source/schemas/Retold-Harness-Service-Schema-Bookstore.js +12 -0
  32. package/source/schemas/bookstore/BookStore.ddl +6 -0
  33. package/source/schemas/bookstore/MeadowModel-Extended.json +324 -1
  34. package/source/schemas/bookstore/MeadowModel.json +41 -0
  35. package/source/schemas/bookstore/Schema.json +324 -1
  36. package/source/schemas/bookstore/sqlite_create/BookStore-CreateSQLiteTables.sql +8 -0
  37. package/source/schemas/bookstore/sqlite_create/BookStore-SeedData-CatalogJoin.sql +378 -0
  38. package/source/schemas/entertainment/ingestion/ingest-entertainment-data.js +1 -1
  39. package/source/web/harness_app.js +12 -12
  40. package/source/web/pict.js +10 -10
  41. package/docs/css/docuserve.css +0 -327
@@ -0,0 +1,17 @@
1
+ Retold Harness
2
+ ├── Schema Provider (Bookstore / USFederalData / Entertainment)
3
+ │ ├── Table Generation (DDL from Stricture)
4
+ │ ├── Seed Data Loading
5
+ │ └── Behavior Injection (e.g. Author enrichment)
6
+ ├── Provider Configurator (SQLite / MySQL / MSSQL / PostgreSQL / MongoDB / DGraph / Solr)
7
+ │ ├── Database Connection (via meadow-connection-*)
8
+ │ ├── Schema Initialization
9
+ │ └── Data Service Bootstrap
10
+ ├── Retold Data Service
11
+ │ ├── Orator + Restify (HTTP Server)
12
+ │ ├── Meadow (DAL for each entity)
13
+ │ └── Meadow Endpoints (REST Routes)
14
+ └── Management Tool (Terminal UI)
15
+ ├── Docker Container Management
16
+ ├── Harness Process Launcher
17
+ └── Consistency Proxy Control
@@ -0,0 +1,2 @@
1
+ <svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1067 608" width="1067" height="608"><!-- svg-source:excalidraw --><metadata><!-- payload-type:application/vnd.excalidraw+json --><!-- payload-version:2 --><!-- payload-start -->eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1dW3PbNlx1MDAxNn7vr+B4X7y7dYr7pW++NtlN2tR2tnuZPtBcdTAwMTIssaFJLUU7cTr971x1MDAwYtK2KItIXHUwMDA0UJBcdTAwMDfroJmpJd5cdTAwMDRcdTAwMDLn4+H3nYOD379Jkp36dqZ2vk921MdRmmfjKv2w822z/UZV86ws9C7Ufp+X19WoPXJa17Pvv/tcdTAwMGVcIv5cdTAwMDLof/B7ylx0hHdnqVxcXaminuvj/qO/J8nv7f/1nmzcnHtZ71x1MDAxNeVY7UnJ21x1MDAxM9pdiybkeTabq27Hx+bXyeLrrf6KweLrh2xcXE/1JrHYMlXZZFo/2pRcdTAwMTaTvLl4d9q8rsr36rDMy6r50T9cdTAwMWRKXHUwMDA20En3o1x1MDAxN+no/aQqr4vx54+5zPL8rL5tr6x7Rvfbzsr1f7lvXHUwMDFjfEFW9nzuPP2Tk2mh5vNHrS1n6SirmzuHoNvatG/2atx2869dq6r0Sr1q+rm4zvPlXHUwMDBiXHUwMDE34/tcdTAwMGI/2jFXqjlYj8Vi08qoL2/7sSza8SdcdTAwMThATthidzY/0qNet5e6TPO56nqy+eHjJYvomno9XHUwMDFip3enQC5cdTAwMDChUl+T0a6r8qx4v9rcvFx1MDAxY703/EpWjFVjKDsp2Gm3/fHt5yxPd89cdTAwMWXo212tPtaPjY7wR0aHYM/oIId9s0Oe7a6u0mI+Syvdf4Nsb4Dlwae0PCGFi+VBXCIhpEBSXHUwMDExjPG1pqN79FTVZT5OXqZVe7tdx5RFfZZ9alqPwKOtJ+lVlje9S1x1MDAxZl1sP88mTSfs5OpyadB1T9SZfkAvdtflrNs70tdLs0JV/SEoq2ySXHUwMDE1aX6+pqHpdV2eqvldU+vqWi33hnr5YOHwXHUwMDA16trbIVx1MDAwZq5Bnsov9m72YFx1MDAxZnrNxVee993gtr3Th17Xj1x1MDAwYuDhrlHrgSf2+Vx0R1x1MDAxYlx1MDAwMm+ajqbXlfr8Y1x1MDAxZlx1MDAwZnnsv+ju41x04IeWnKlcdTAwMDX8XHUwMDEwxIIwrJ9awcCvs8Cl8ZyV2fJcdTAwMWJI81/3KelcZqP9svj867frj8a0O/ybldN28nReXHUwMDFmlldXWa1v7m3Thl6312lVXHUwMDFm6DZnxWR1nyrGn9nTnrVfVeWHqUp7Y6zP++y+WZnfTtoxbXttPUSngyDKZN87dq9cdTAwMDdcdTAwMGKMdrZcdTAwMTYh6lx1MDAwMNHu+WdcdTAwMDFRilx1MDAxMSVcdTAwMDDwcFx1MDAxY2SHULwlhHa2tnL4c0NoS5wwMrzAXHUwMDFhiVx1MDAxM31MnFhnt5E4+Vx1MDAwMSdGTv5TMCSwoEGCk9hQJ4Nz6FMn/pg6UdYzOyZx3/CcqFx1MDAxMzyAJ1xif9XUXHQhJ8egTVx1MDAwNUMkMVxuh7c/UKez0VRdpcnbqrzJxqpKdlx1MDAwZsry/bwuK5V8l7w7O1F6Y5pcdTAwMWaldaq/XHUwMDFmXHUwMDE3tWZCmus0bftzwDzLy11tRsroXHUwMDFhTFdplu8hkyCy9pVP9FFcdTAwMWRZmSdkk6XOtVx1MDAxMkUwlVJcdTAwMDSkiXRcdTAwMTbIXCIp25yU3ewhXHUwMDFihNKI0Hb7UyCUuSGUc40mTFCIulx0j1x1MDAxMPWhm1xmgShcdTAwMDTd2EXhxDtGnYJaXHUwMDEwXG7AOYc4RDcqonLiQTmhlPVBalROxGPlZNlGPUknXHUwMDE2MO1cdTAwMWTzrKRcdTAwMTNKnVxcqESSIyaW4lx1MDAxNeGgU9pIJ1x1MDAwNv/Ql04geKydyH7si2CD5UXtxNE3UCffwDGgmIJcdTAwMDClk/P0XCJXyVx1MDAwZqpQVVrrXHUwMDE2J7tHR6+Ty6q8Ss7qKlx1MDAxYtXai4cskji2fzM5ZN9GXHUwMDBlwYPkXHUwMDEwaEhcdTAwMTCJbMuXylx1MDAwZdzYluSEYylEOHDtbPAgsi1cdTAwMWaCXGJcdTAwMWXCtlwiRrdcdTAwMTiNcNQsXHUwMDE5XHUwMDExTDJcdTAwMTGiIHJcdTAwMTgh6kNcdTAwMTBcdTAwMTlcdTAwMDRRXHUwMDFjM0m2XGJRN0FESk6B9qMhYvQoXG5cIj5SSfhQQVx1MDAwNHvPJfnqXHUwMDA1XHUwMDExPVx1MDAxOI5cdTAwMWWUXHUwMDExgClcdTAwMGZRXHUwMDExObZRRFxmXHUwMDBlYr1cIlx1MDAwMlE/rIWAwUVEScTRO3A378CgxIxKTIIxv0U6ib6hpM2reF2m7SO265vQ9I8vtHUzrePERusgw7RcdTAwMGVDRlfkUb4mxEC3jEJcdTAwMDSRhOFgsDPAXHUwMDFmXCKL8iF0kCEsylx1MDAwZaDQ8+vZ11x1MDAwMVAunVx1MDAwMFxuMVx1MDAxMFSDioXIol4+XHUwMDA1RqF43lx1MDAxOJ1cdTAwMGXDKI+pXHUwMDFmW8SoU2q0plGEXG5cdTAwMTlkbPlVXHUwMDE0OjxcYlx1MDAxZELYzplZXHUwMDE1OpbodVx1MDAxNDo8veJcbjdcdTAwMGYqXHUwMDA1QUJKXHUwMDE2YjjvbzZCh8E/WFxiXHUwMDFkrFx1MDAxZq2iS8dEoWOoc1x1MDAxMG7zZqikSFx1MDAwMCbD8Vx1MDAwZVx1MDAwZkLHgZqmN1lZJa+K39ToLn1CvZi8SPav66nerIoqXHUwMDFiTUOfJzPoLjZcdTAwMTNH/m5VrIBcdTAwMGXRRlxmXHUwMDE5W1FcdTAwMWLxlrXlVixcdTAwMDQjSjFcdTAwMDcgRMfxOsojPqjXXHUwMDEwjFwiXHUwMDEwg8xbxGjXuTaZlVxiUkRIkO92b1wi9fKRdE+EJfVaKVeAQKxX4Fx1MDAxYp16MFxc0Ck0iiRcdTAwMDVBTlv70YZ5XHUwMDE53MPaelx1MDAwNVD21XMpSd/yXCLxcnRccsTJNSDNuSjjXHUwMDAxXHUwMDE531x1MDAwM+9aTOk/LIvLbHJdpbXmKbtnP7/O6mZy/5tb/bH5e3b39205ryeVut9YXHUwMDE2k/LoQH86+qFKZ1P94azMq5BcdTAwMTnalu93My73k02gm1xyXG50I0OuSSRznp5cdTAwMDbMLY6mn1x1MDAwNpBcYiCCjHW/jWTOR6zbkIy4No5cdTAwMTYxuk2McjelnktAOUUwxCnUP0eM+lx1MDAxMFxcXHUwMDA2YZTEWPdcdTAwMTYx6lx1MDAxNM6QmFx1MDAxMIExXHUwMDBm0Y2eRsHFg+DC2cBYN1wiMdbtXHUwMDFinXowXFzQSSmSXGLAIF9yz2xcdTAwMDRcdTAwMTeDe1hcdTAwMWbqXi5xu1xidWPDW1xcVFxcXHUwMDFjfVx1MDAwM3NcdTAwMGJ1XHUwMDAzXHUwMDAxtLVQXHUwMDFhXqi7SZG/SOeqkSCKhyjxTZYmV/qZWX7YXHUwMDFiLTbv/SVkKWXgfWwmkZzbSCR8mERiyFKJ9MtcdTAwMTd8kdOMMFx1MDAwMlx1MDAwNUKQ0lx1MDAxMJ3Hu8i+fCgkhiWT1rOvXGLRLULUsTSJhjQmMKRZc1x1MDAxZEb/XHUwMDExMepDIVx1MDAxOYRRXHUwMDFlU1K2iFG3ma1cdTAwMWNLRKVcYqjaV4fRX6JE4kFcImFyYN1cdTAwMDPEY91cdTAwMDPv8JROLlx1MDAxNFx1MDAwMdGscVx1MDAxM6ZcdTAwMGL9p41GYnBcdTAwMTBcdTAwMTZcdTAwMWFcdDPUPaCob3tRI3FMiXJb+1JcdTAwMWJcdIeIXHUwMDEzXHUwMDE4nkZyv+DEq1wiq7M0zz61XHUwMDA1XHUwMDE1XHUwMDAz1kLWtHczzeNfNpqHXHUwMDE4pnlcdTAwMThcdTAwMTLEXCKh8uVcctxy/Fx1MDAwNZBIO4MgXHUwMDE3JPx35FM+NFx1MDAwZkP68Ho+ZVx1MDAwN9FYXHUwMDAxYVx1MDAxMESx2zRcdTAwMWPKMCFQXHUwMDA2WagqfVxujD7/XG5cYkMwimHMXG7ZXCJGXHUwMDFkc60xk5yKIGNcdTAwMDdcdTAwMTdR8/CRXHUwMDE2gmzn4axoXHUwMDFleInqRM3DU1pcYnJyoUiDiJMgXHUwMDE3eFx1MDAxYtkoXHUwMDFlXHUwMDA2y1uveGDQj1shXHUwMDE25+F4XGIrO/lcdTAwMDZINCdcdTAwMDOSXHUwMDA3qHi0hVx1MDAxM89UdZONVHJQlrXu8XRJjFxiTvJY1+DNNI+xVVlcdTAwMDM5QPLAhlxmrSh5+KqHs1x1MDAwNFx1MDAwMkvJg2s0hlx1MDAxOJ5ST0GnnrvkMVx1MDAxZFx1MDAwNlFcdTAwMTJDyFuEaPdzNi5TXGLOXHUwMDEwY0Fi9DLSKVx1MDAwZnRKXHUwMDEyQ1Uvm7JcdTAwMDaYxLJcdTAwMDa+4SmJk1x1MDAwN0WAXHUwMDAwKDlcbjKEPLEhVFx1MDAwNlx1MDAwN7G2rlx1MDAwMcaGXGLyXHUwMDEyXHUwMDE1iHxqqHMgTs5BXHUwMDAyXHUwMDAxmOBcdTAwMDEtq/JAp05VXeb35ejvSUrAXFzqi63djEhNbYLHXHUwMDEwXGaKXHUwMDFlY0NcIkekUr6guDRryGrCi5SkWcVcIkRHkEUu5SN8XGatQLpcdTAwMWGbiiBccmaJXHUwMDBiSFx1MDAwMMFUXHUwMDA2NCmtw+hvXHUwMDExoz70jmFcdTAwMThcdTAwMTUxfrxFjDpcdTAwMTZJRlx1MDAxNFx1MDAxM4mDXFzl4n1cdTAwMTQ8fFxiXHUwMDFlYGBZXHUwMDAxvFTuPcaPPVx0XHUwMDFlwM2FUkiY5DzIqlx1MDAxZrmN4GHyXHUwMDEwXHUwMDE2IWTeXHUwMDBmW2Fq8Fx1MDAxMVHycHRcdTAwMGbAyT0wXHUwMDAwiKBIhpPA8CB5/HRXy/Cvyama19nlbbL78vz8basnqKBrMto2fDMh5MpKXGKBg4RcdTAwMTBiyO+IXHUwMDFjy1tcdTAwMWG927xkgiVAiFx1MDAwN5lHX0SS5UVcYoFcdTAwMDNIVlx1MDAwNOlWk3SdQEqp4Fx1MDAxY4Ago1ZlxKhcdTAwMTchZFx1MDAxMEZhzPzYXCJGnaaHXCJIIORN9YBcdTAwMDBBOttcdTAwMTJIvy4hhKOBxVx1MDAwM1xijMVcdTAwMDN8w5M7lshiXHUwMDE0Y0SDXFzp879WOojBQazXQVxi6IezMMZ924s6iGsqvVvxXHUwMDAwiilcdTAwMTBcdTAwMTBcdTAwMDYohLxp61x1MDAwZia7R/uvk8tm1T3tu1x1MDAxM/3Lulx1MDAwM0OWQeyavZlcYlJZiSBomFxiYkjKivzK20qfTs5BXG6ImpnK4YCzs8F55FdeNFx1MDAxMDSEX9lhNFx1MDAxNlx1MDAxM1x1MDAxOFYg2636XHUwMDEz44hcdTAwMDJcdTAwMTnQYrxcdTAwMWRG66fA6POvJTBcZqM0JoNsXHUwMDExo05vuVx1MDAxNFx1MDAwYsRcYlx1MDAwZrKWwHWUQDxIIIJcdTAwMGWVQJay+KJcdTAwMDTia26aW6iPYyQwXGZSoLyxkkBcZv7BQlx1MDAwMiExXHUwMDE1ZDvOgbpJIFx1MDAwMDNcdTAwMTZUouCKXHUwMDAyclxcjO88Q7J7enx2npyW17Wa/1x1MDAxZmgga1x1MDAxYr6ZXG7ywaq4XHUwMDAwxDYvb6tcIoghTStcdTAwMTIsX/jkTnMjqWBCe4iA8NmZ4MdIsLxcdTAwMTCsQVx1MDAxOFx1MDAxNTHIvEWMupVcdTAwMTegXHUwMDAwXHUwMDExJMOcv3xcdTAwMWJcdTAwMTmWXHUwMDBmhsVcdTAwMDaWXHUwMDE3IFwillx1MDAxN/Bcck/BnFxcKFx1MDAwNFx1MDAxMlwirlx1MDAxMVx1MDAxNWL1j09WXHUwMDE0y+Ah1tZcdTAwMTcg3Fx1MDAxMGRemlx1MDAxYVx1MDAxZlx1MDAxOdZg+c3NO1x1MDAxMEIohywg77CgWGmRTtrfSs7LMk92z1V11VCZ5N2roFx1MDAxOZZduzdcIlhcdTAwMTdcdTAwMDDYMSyDY1grj1NDXHUwMDAySFxmM3vCJ1x1MDAxMW7FPCHCSFx1MDAxMlx1MDAxNKI+flx1MDAwMeBTcKznXHUwMDFlaJ5cdTAwMGVEKYpBrC2i1KnqKVx1MDAxNUQwxnGAySBcdTAwMTdcdTAwMDBFjuWBY1E+sFwiNkUxiuVcdTAwMWKeejCcXnKRQIhjXHUwMDFjYlwiyFx1MDAwNcBWJMvgXCLWx7EoNMSxUFxcXHUwMDA3bHP/wN2qYlx1MDAwYkIhYCHNxlpUxW52V81cbuN3/Cbp6EvAXHUwMDFjy6rVXHUwMDFiMixix7DokHc3Q3w5Mixf5S5EXHUwMDBmh1/CJtZcYqJcdTAwMDCEXHUwMDE4w7pcdTAwMDA0XHUwMDEyLC9cdTAwMDRrXHUwMDEwSGlcZmJtXHUwMDExpF0j7ZaVIITBXHUwMDEwp2JdXHUwMDAwXHUwMDE2XHSWXHUwMDA3gqXfXVxyuVpWXGaLxqmSvvHZjIZcdTAwMTNAOUaEUlx1MDAxNqZcdTAwMWLlVlx1MDAxNMvgJCwoXHUwMDE2MVx1MDAxNMpcdTAwMTa8b36RYjl6XGLu5CG0pWApRThR1Fx1MDAwN4L1Mq2au0zeVuWo+fs6vS5GU1VcdTAwMDXMrtY3eUNqJeyolSFvfP1bmyGwXHUwMDFj01x1MDAwMz1hXHUwMDEyuVx1MDAxNeNFQGCGcUBrgS3ZoHxcbmr1XHUwMDE15Fx1MDAwN1x1MDAwZVx1MDAwMqmMsastgtStXHUwMDFhL8KSQExQOK5zXHSl+5FbeeBWeGg5XrpcdTAwMTQyidTKXHUwMDBmPrFbOV7JXHUwMDA1xUzAcEJcdTAwMDdL8DywXCJWXHUwMDA2XHUwMDE3YUGshGFFV2kwvkisXHUwMDFj/YNbOV5cYkizgKRcYjB2dVhcdTAwMTbzbF6rYnTbcJWPt21AqCrzgLmVRZs3JFeH95j85t6L7aSz2Vmt+17vvkOotqdsvNIrd9tqNet6pN30RvuP41wivchXx2HnJlNcdTAwMWZcdTAwMGVcZlx1MDAwZu+Tg1x1MDAxM358fH8790P45jqvszNtNKNam1ZjXHUwMDE5vzfta59cdTAwMWJccrbU/aY//lx1MDAwN4GXJb0ifQ==<!-- payload-end --><pict-renderer-graph:source xmlns:pict-renderer-graph="https://fable-retold.github.io/pict-renderer-graph/ns/v1"><![CDATA[{"type":"filetree","mermaid":"Retold Harness\n ├── Schema Provider (Bookstore / USFederalData / Entertainment)\n │ ├── Table Generation (DDL from Stricture)\n │ ├── Seed Data Loading\n │ └── Behavior Injection (e.g. Author enrichment)\n ├── Provider Configurator (SQLite / MySQL / MSSQL / PostgreSQL / MongoDB / DGraph / Solr)\n │ ├── Database Connection (via meadow-connection-*)\n │ ├── Schema Initialization\n │ └── Data Service Bootstrap\n ├── Retold Data Service\n │ ├── Orator + Restify (HTTP Server)\n │ ├── Meadow (DAL for each entity)\n │ └── Meadow Endpoints (REST Routes)\n └── Management Tool (Terminal UI)\n ├── Docker Container Management\n ├── Harness Process Launcher\n └── Consistency Proxy Control\n","style":"notebook"}]]></pict-renderer-graph:source></metadata><defs><style class="style-fonts">
2
+ @font-face { font-family: Excalifont; src: url(data:font/woff2;base64,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); }</style></defs><g stroke-linecap="round" transform="translate(10 19) rotate(0 4 4)"><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="none" stroke-width="0" fill="var(--diagram-accent, #C9602F)"/><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="var(--diagram-accent, #C9602F)" stroke-width="1.4" fill="none"/></g><g transform="translate(33 10) rotate(0 85.5 14)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-accent, #C9602F)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Retold Harness</text></g><g stroke-linecap="round"><g transform="translate(14 40) rotate(0 -0.0008683325095990568 17.5)"><path d="M0 0 C-0.2 6.96, 0.12 14.45, 0 35 M0 0 C0.03 12.58, 0.13 25.17, 0 35" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(14 58) rotate(0 8 -0.04753076701442893)"><path d="M0 0 C2.82 -0.3, 6.06 0.11, 16 0 M0 0 C3.55 0.05, 7.23 -0.07, 16 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(40 54) rotate(0 4 4)"><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="none" stroke-width="0" fill="var(--diagram-accent, #C9602F)"/><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="var(--diagram-accent, #C9602F)" stroke-width="1.4" fill="none"/></g><g transform="translate(63 45) rotate(0 346.5 14)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Schema Provider (Bookstore / USFederalData / Entertainment)</text></g><g stroke-linecap="round"><g transform="translate(14 75) rotate(0 -0.10314710472563426 17.5)"><path d="M0 0 C-0.37 6.69, -0.38 13.98, 0 35 M0 0 C0.13 13.81, 0.06 27.43, 0 35" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(44 75) rotate(0 0.1254796250142789 17.5)"><path d="M0 0 C0.39 6.87, 0.27 14.16, 0 35 M0 0 C0.09 12.34, 0.14 24.48, 0 35" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(44 93) rotate(0 8 -0.09590041680115746)"><path d="M0 0 C3.3 -0.4, 6.2 -0.19, 16 0 M0 0 C3.46 0.11, 6.95 -0.11, 16 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(70 89) rotate(0 4 4)"><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="none" stroke-width="0" fill="var(--diagram-deemphasis, #8A7F72)"/><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.4" fill="none"/></g><g transform="translate(93 80) rotate(0 219 14)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Table Generation (DDL from Stricture)</text></g><g stroke-linecap="round"><g transform="translate(14 110) rotate(0 -0.07644376193832159 17.5)"><path d="M0 0 C0 7.29, -0.05 14.58, 0 35 M0 0 C-0.22 8.14, -0.19 15.88, 0 35" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(44 110) rotate(0 -0.12014270432122487 17.5)"><path d="M0 0 C-0.24 7.46, -0.39 13.76, 0 35 M0 0 C-0.26 13.67, -0.11 27.43, 0 35" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(44 128) rotate(0 8 0.09255514722111968)"><path d="M0 0 C2.83 0.12, 6.49 0.36, 16 0 M0 0 C4.26 0.05, 8.49 -0.02, 16 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(70 124) rotate(0 4 4)"><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="none" stroke-width="0" fill="var(--diagram-deemphasis, #8A7F72)"/><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.4" fill="none"/></g><g transform="translate(93 115) rotate(0 103 14)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Seed Data Loading</text></g><g stroke-linecap="round"><g transform="translate(14 145) rotate(0 -0.005647812961575127 17.5)"><path d="M0 0 C0.16 6.81, -0.18 14.3, 0 35 M0 0 C0 11.01, 0.05 22.22, 0 35" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(44 145) rotate(0 0.020917646371223952 9)"><path d="M0 0 C-0.2 3.54, 0.28 7.53, 0 18 M0 0 C-0.02 4.88, 0.13 9.92, 0 18" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(44 163) rotate(0 8 -0.07214434083751087)"><path d="M0 0 C2.88 -0.33, 6.33 0, 16 0 M0 0 C5.39 -0.03, 10.99 -0.11, 16 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(70 159) rotate(0 4 4)"><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="none" stroke-width="0" fill="var(--diagram-deemphasis, #8A7F72)"/><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.4" fill="none"/></g><g transform="translate(93 150) rotate(0 253.5 14)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Behavior Injection (e.g. Author enrichment)</text></g><g stroke-linecap="round"><g transform="translate(14 180) rotate(0 0.02450433774991545 17.5)"><path d="M0 0 C-0.27 6.94, -0.03 13.83, 0 35 M0 0 C0.28 13.26, 0.18 26.3, 0 35" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(14 198) rotate(0 8 0.029607386739996855)"><path d="M0 0 C3.53 -0.28, 6.71 0.42, 16 0 M0 0 C3.93 -0.19, 7.69 0.04, 16 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(40 194) rotate(0 4 4)"><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="none" stroke-width="0" fill="var(--diagram-accent, #C9602F)"/><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="var(--diagram-accent, #C9602F)" stroke-width="1.4" fill="none"/></g><g transform="translate(63 185) rotate(0 497 14)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Provider Configurator (SQLite / MySQL / MSSQL / PostgreSQL / MongoDB / DGraph / Solr)</text></g><g stroke-linecap="round"><g transform="translate(14 215) rotate(0 0.12762579147920228 17.5)"><path d="M0 0 C0.41 6.88, 0.37 14.36, 0 35 M0 0 C0.1 9.73, -0.12 19.52, 0 35" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(44 215) rotate(0 0.036279105123863786 17.5)"><path d="M0 0 C0.17 7.06, 0.02 14.54, 0 35 M0 0 C0.06 8.27, -0.04 16.57, 0 35" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(44 233) rotate(0 8 -0.035378229705059994)"><path d="M0 0 C3.09 -0.25, 6.79 0.1, 16 0 M0 0 C4.85 0.06, 10.02 -0.05, 16 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(70 229) rotate(0 4 4)"><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="none" stroke-width="0" fill="var(--diagram-deemphasis, #8A7F72)"/><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.4" fill="none"/></g><g transform="translate(93 220) rotate(0 265 14)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Database Connection (via meadow-connection-*)</text></g><g stroke-linecap="round"><g transform="translate(14 250) rotate(0 0.006465652699493063 17.5)"><path d="M0 0 C-0.39 7.45, 0.41 13.73, 0 35 M0 0 C-0.1 9.55, -0.02 18.58, 0 35" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(44 250) rotate(0 0.09195931789897216 17.5)"><path d="M0 0 C0.38 6.62, 0.06 13.91, 0 35 M0 0 C0.04 8.09, 0.23 16.13, 0 35" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(44 268) rotate(0 8 -0.016308078860760133)"><path d="M0 0 C3.32 0.26, 6.87 -0.35, 16 0 M0 0 C4.62 0.16, 9.49 0.04, 16 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(70 264) rotate(0 4 4)"><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="none" stroke-width="0" fill="var(--diagram-deemphasis, #8A7F72)"/><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.4" fill="none"/></g><g transform="translate(93 255) rotate(0 126 14)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Schema Initialization</text></g><g stroke-linecap="round"><g transform="translate(14 285) rotate(0 -0.052051878486965464 17.5)"><path d="M0 0 C-0.4 7.16, -0.02 14.05, 0 35 M0 0 C0 12.89, 0.18 25.8, 0 35" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(44 285) rotate(0 0.07704166291995662 9)"><path d="M0 0 C0.19 3.87, 0.43 7.33, 0 18 M0 0 C-0.01 5.8, -0.19 12.05, 0 18" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(44 303) rotate(0 8 -0.034478548735762615)"><path d="M0 0 C3.2 0, 6.43 -0.13, 16 0 M0 0 C3.14 -0.13, 6.55 -0.04, 16 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(70 299) rotate(0 4 4)"><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="none" stroke-width="0" fill="var(--diagram-deemphasis, #8A7F72)"/><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.4" fill="none"/></g><g transform="translate(93 290) rotate(0 132 14)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Data Service Bootstrap</text></g><g stroke-linecap="round"><g transform="translate(14 320) rotate(0 -0.040730163541125464 17.5)"><path d="M0 0 C-0.45 7.42, 0.25 14.11, 0 35 M0 0 C0.15 9.73, 0.03 19.71, 0 35" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(14 338) rotate(0 8 -0.05877179886027761)"><path d="M0 0 C3.45 0.05, 6.25 -0.27, 16 0 M0 0 C5.62 -0.12, 11.51 -0.21, 16 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(40 334) rotate(0 4 4)"><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="none" stroke-width="0" fill="var(--diagram-accent, #C9602F)"/><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="var(--diagram-accent, #C9602F)" stroke-width="1.4" fill="none"/></g><g transform="translate(63 325) rotate(0 114.5 14)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Retold Data Service</text></g><g stroke-linecap="round"><g transform="translate(14 355) rotate(0 0.10472566733155375 17.5)"><path d="M0 0 C0.4 6.64, 0.16 14.12, 0 35 M0 0 C0.04 12.48, -0.03 24.67, 0 35" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(44 355) rotate(0 -0.005647812961573351 17.5)"><path d="M0 0 C0.16 6.81, -0.18 14.3, 0 35 M0 0 C0 11.01, 0.05 22.22, 0 35" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(44 373) rotate(0 8 0.044316016168039596)"><path d="M0 0 C3.11 0.33, 6.65 -0.15, 16 0 M0 0 C6.01 0.02, 12.56 0.02, 16 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(70 369) rotate(0 4 4)"><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="none" stroke-width="0" fill="var(--diagram-deemphasis, #8A7F72)"/><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.4" fill="none"/></g><g transform="translate(93 360) rotate(0 178 14)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Orator + Restify (HTTP Server)</text></g><g stroke-linecap="round"><g transform="translate(14 390) rotate(0 -0.02081783646287505 17.5)"><path d="M0 0 C0.14 6.68, 0.11 14.47, 0 35 M0 0 C-0.12 7.75, -0.23 16.01, 0 35" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(44 390) rotate(0 -0.12277131828000165 17.5)"><path d="M0 0 C-0.27 6.86, -0.41 14.64, 0 35 M0 0 C0.01 13.78, 0.02 27.06, 0 35" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(44 408) rotate(0 8 0.06362493708382999)"><path d="M0 0 C2.86 0.44, 6.56 0.22, 16 0 M0 0 C4.35 -0.17, 8.44 -0.17, 16 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(70 404) rotate(0 4 4)"><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="none" stroke-width="0" fill="var(--diagram-deemphasis, #8A7F72)"/><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.4" fill="none"/></g><g transform="translate(93 395) rotate(0 166.5 14)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Meadow (DAL for each entity)</text></g><g stroke-linecap="round"><g transform="translate(14 425) rotate(0 -0.09037864478294821 17.5)"><path d="M0 0 C0.01 7.03, -0.27 14.31, 0 35 M0 0 C-0.29 13.76, -0.19 27.18, 0 35" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(44 425) rotate(0 -0.03129603528774183 9)"><path d="M0 0 C-0.33 3.74, 0.21 7.55, 0 18 M0 0 C-0.15 6.38, 0.05 12.43, 0 18" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(44 443) rotate(0 8 0.001620772932426462)"><path d="M0 0 C3.56 -0.12, 6.26 0.05, 16 0 M0 0 C3.6 0.17, 7.2 -0.16, 16 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(70 439) rotate(0 4 4)"><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="none" stroke-width="0" fill="var(--diagram-deemphasis, #8A7F72)"/><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.4" fill="none"/></g><g transform="translate(93 430) rotate(0 178 14)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Meadow Endpoints (REST Routes)</text></g><g stroke-linecap="round"><g transform="translate(14 460) rotate(0 0.015989559575473322 9)"><path d="M0 0 C0.37 3.67, -0.31 6.94, 0 18 M0 0 C0.16 5.88, 0.04 11.44, 0 18" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(14 478) rotate(0 8 0.04168567712812887)"><path d="M0 0 C3.33 -0.16, 6.55 0.33, 16 0 M0 0 C6.33 0.08, 12.46 0.1, 16 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(40 474) rotate(0 4 4)"><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="none" stroke-width="0" fill="var(--diagram-accent, #C9602F)"/><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="var(--diagram-accent, #C9602F)" stroke-width="1.4" fill="none"/></g><g transform="translate(63 465) rotate(0 172.5 14)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Management Tool (Terminal UI)</text></g><g stroke-linecap="round"><g transform="translate(44 495) rotate(0 0.11791854677251834 17.5)"><path d="M0 0 C0.09 7.17, 0.49 14.56, 0 35 M0 0 C0.26 11.45, -0.03 23.23, 0 35" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(44 513) rotate(0 8 -0.02130303410609713)"><path d="M0 0 C3.08 -0.1, 6.4 0.19, 16 0 M0 0 C3.26 -0.12, 6.63 -0.18, 16 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(70 509) rotate(0 4 4)"><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="none" stroke-width="0" fill="var(--diagram-deemphasis, #8A7F72)"/><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.4" fill="none"/></g><g transform="translate(93 500) rotate(0 161 14)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Docker Container Management</text></g><g stroke-linecap="round"><g transform="translate(44 530) rotate(0 0.006412803840635917 17.5)"><path d="M0 0 C-0.04 7.29, 0 14.37, 0 35 M0 0 C-0.14 10.6, 0.16 21.09, 0 35" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(44 548) rotate(0 8 0.020335743895259384)"><path d="M0 0 C3.01 -0.07, 6.88 -0.09, 16 0 M0 0 C6.09 0.18, 11.76 0.08, 16 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(70 544) rotate(0 4 4)"><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="none" stroke-width="0" fill="var(--diagram-deemphasis, #8A7F72)"/><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.4" fill="none"/></g><g transform="translate(93 535) rotate(0 143.5 14)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Harness Process Launcher</text></g><g stroke-linecap="round"><g transform="translate(44 565) rotate(0 -0.12187206711056575 9)"><path d="M0 0 C-0.41 3.71, -0.23 6.84, 0 18 M0 0 C0.01 5.7, -0.24 11.4, 0 18" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(44 583) rotate(0 8 0.00014798987723452228)"><path d="M0 0 C3.39 -0.15, 6.54 0.26, 16 0 M0 0 C6.13 0, 12.47 -0.19, 16 0" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.3" fill="none"/></g></g><mask/><g stroke-linecap="round" transform="translate(70 579) rotate(0 4 4)"><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="none" stroke-width="0" fill="var(--diagram-deemphasis, #8A7F72)"/><path d="M8 4 C8 4.23, 7.98 4.47, 7.94 4.69 C7.9 4.92, 7.84 5.15, 7.76 5.37 C7.68 5.59, 7.58 5.8, 7.46 6 C7.35 6.2, 7.21 6.39, 7.06 6.57 C6.92 6.75, 6.75 6.92, 6.57 7.06 C6.39 7.21, 6.2 7.35, 6 7.46 C5.8 7.58, 5.59 7.68, 5.37 7.76 C5.15 7.84, 4.92 7.9, 4.69 7.94 C4.47 7.98, 4.23 8, 4 8 C3.77 8, 3.53 7.98, 3.31 7.94 C3.08 7.9, 2.85 7.84, 2.63 7.76 C2.41 7.68, 2.2 7.58, 2 7.46 C1.8 7.35, 1.61 7.21, 1.43 7.06 C1.25 6.92, 1.08 6.75, 0.94 6.57 C0.79 6.39, 0.65 6.2, 0.54 6 C0.42 5.8, 0.32 5.59, 0.24 5.37 C0.16 5.15, 0.1 4.92, 0.06 4.69 C0.02 4.47, 0 4.23, 0 4 C0 3.77, 0.02 3.53, 0.06 3.31 C0.1 3.08, 0.16 2.85, 0.24 2.63 C0.32 2.41, 0.42 2.2, 0.54 2 C0.65 1.8, 0.79 1.61, 0.94 1.43 C1.08 1.25, 1.25 1.08, 1.43 0.94 C1.61 0.79, 1.8 0.65, 2 0.54 C2.2 0.42, 2.41 0.32, 2.63 0.24 C2.85 0.16, 3.08 0.1, 3.31 0.06 C3.53 0.02, 3.77 0, 4 0 C4.23 0, 4.47 0.02, 4.69 0.06 C4.92 0.1, 5.15 0.16, 5.37 0.24 C5.59 0.32, 5.8 0.42, 6 0.54 C6.2 0.65, 6.39 0.79, 6.57 0.94 C6.75 1.08, 6.92 1.25, 7.06 1.43 C7.21 1.61, 7.35 1.8, 7.46 2 C7.58 2.2, 7.68 2.41, 7.76 2.63 C7.84 2.85, 7.9 3.08, 7.94 3.31 C7.98 3.53, 7.99 3.88, 8 4 C8.01 4.12, 8.01 3.88, 8 4" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="1.4" fill="none"/></g><g transform="translate(93 570) rotate(0 149 14)"><text x="0" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Consistency Proxy Control</text></g></svg>
package/docs/README.md CHANGED
@@ -6,11 +6,11 @@ A composable REST API harness for the [Retold](https://github.com/stevenvelozo/r
6
6
 
7
7
  Retold Harness brings together several Retold modules into a running application:
8
8
 
9
- - **[Retold Data Service](https://github.com/stevenvelozo/retold-data-service)** orchestrates the stack
10
- - **[Meadow](https://github.com/stevenvelozo/meadow)** provides the data access layer
11
- - **[Meadow Endpoints](https://github.com/stevenvelozo/meadow-endpoints)** generates REST routes
12
- - **[Orator](https://github.com/stevenvelozo/orator)** serves the HTTP API
13
- - **[Stricture](https://github.com/stevenvelozo/stricture)** defines the schema
9
+ - **[Retold Data Service](https://fable-retold.github.io/retold-data-service/)** orchestrates the stack
10
+ - **[Meadow](https://fable-retold.github.io/meadow/)** provides the data access layer
11
+ - **[Meadow Endpoints](https://fable-retold.github.io/meadow-endpoints/)** generates REST routes
12
+ - **[Orator](https://fable-retold.github.io/orator/)** serves the HTTP API
13
+ - **[Stricture](https://fable-retold.github.io/stricture/)** defines the schema
14
14
 
15
15
  ## Features
16
16
 
@@ -27,11 +27,11 @@ Retold Harness brings together several Retold modules into a running application
27
27
 
28
28
  ## Related Packages
29
29
 
30
- - [retold-harness-consistency-proxy](https://github.com/stevenvelozo/retold-harness-consistency-proxy) -- Cross-provider response comparison
31
- - [retold-data-service](https://github.com/stevenvelozo/retold-data-service) -- All-in-one data service
32
- - [meadow](https://github.com/stevenvelozo/meadow) -- Data access layer
33
- - [meadow-endpoints](https://github.com/stevenvelozo/meadow-endpoints) -- REST endpoint generation
34
- - [foxhound](https://github.com/stevenvelozo/foxhound) -- Query DSL
35
- - [stricture](https://github.com/stevenvelozo/stricture) -- Schema definition language
36
- - [orator](https://github.com/stevenvelozo/orator) -- API server abstraction
37
- - [fable](https://github.com/stevenvelozo/fable) -- Service provider framework
30
+ - [retold-harness-consistency-proxy](https://fable-retold.github.io/retold-harness-consistency-proxy/) -- Cross-provider response comparison
31
+ - [retold-data-service](https://fable-retold.github.io/retold-data-service/) -- All-in-one data service
32
+ - [meadow](https://fable-retold.github.io/meadow/) -- Data access layer
33
+ - [meadow-endpoints](https://fable-retold.github.io/meadow-endpoints/) -- REST endpoint generation
34
+ - [foxhound](https://fable-retold.github.io/foxhound/) -- Query DSL
35
+ - [stricture](https://fable-retold.github.io/stricture/) -- Schema definition language
36
+ - [orator](https://fable-retold.github.io/orator/) -- API server abstraction
37
+ - [fable](https://fable-retold.github.io/fable/) -- Service provider framework
@@ -0,0 +1,18 @@
1
+ {
2
+ "Hash": "retold-harness",
3
+ "Name": "Retold Harness",
4
+ "Tagline": "Composable REST API harness with 3 pluggable schemas, 7 database providers, and a terminal management tool",
5
+ "Palette": "mix",
6
+ "Icon": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 96 96\" width=\"96\" height=\"96\">\n\t\t<defs>\n\t\t\t<clipPath id=\"frame-retold-harness-filled-light\">\n\t\t\t\t<path d=\"M 48.00 2.00 L 87.84 25.00 L 87.84 71.00 L 48.00 94.00 L 8.16 71.00 L 8.16 25.00 Z\"/>\n\t\t\t</clipPath>\n\t\t</defs>\n\t\t<path d=\"M 48.00 2.00 L 87.84 25.00 L 87.84 71.00 L 48.00 94.00 L 8.16 71.00 L 8.16 25.00 Z\" fill=\"#1a9ac8\"/>\n\t\t<g clip-path=\"url(#frame-retold-harness-filled-light)\"><circle cx=\"48\" cy=\"48\" r=\"38\" fill=\"rgba(255,255,255,0.18)\"/>\n\t\t\t\t\t<circle cx=\"48\" cy=\"48\" r=\"22\" fill=\"#dc693c\"/></g>\n\t\t<text x=\"48\" y=\"50\" text-anchor=\"middle\" dominant-baseline=\"central\"\n\t\t\tfont-family=\"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif\"\n\t\t\tfont-size=\"38\" font-weight=\"600\"\n\t\t\tfill=\"#ffffff\" letter-spacing=\"-1\">RH</text>\n\t</svg>",
7
+ "IconType": "svg",
8
+ "Favicon": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 96 96\" width=\"96\" height=\"96\">\n\t\t<defs>\n\t\t\t<clipPath id=\"fav-retold-harness-light\">\n\t\t\t\t<path d=\"M 48.00 2.00 L 87.84 25.00 L 87.84 71.00 L 48.00 94.00 L 8.16 71.00 L 8.16 25.00 Z\"/>\n\t\t\t</clipPath>\n\t\t</defs>\n\t\t<path d=\"M 48.00 2.00 L 87.84 25.00 L 87.84 71.00 L 48.00 94.00 L 8.16 71.00 L 8.16 25.00 Z\" fill=\"#1a9ac8\"/>\n\t\t<g clip-path=\"url(#fav-retold-harness-light)\"><circle cx=\"48\" cy=\"48\" r=\"42\" fill=\"rgba(255,255,255,0.22)\"/>\n\t\t\t\t\t<circle cx=\"48\" cy=\"48\" r=\"22\" fill=\"#dc693c\"/></g>\n\t\t<text x=\"48\" y=\"50\" text-anchor=\"middle\" dominant-baseline=\"central\"\n\t\t\tfont-family=\"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif\"\n\t\t\tfont-size=\"60\" font-weight=\"800\"\n\t\t\tfill=\"#ffffff\" letter-spacing=\"-1\">R</text>\n\t</svg>",
9
+ "FaviconDark": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 96 96\" width=\"96\" height=\"96\">\n\t\t<defs>\n\t\t\t<clipPath id=\"fav-retold-harness-dark\">\n\t\t\t\t<path d=\"M 48.00 2.00 L 87.84 25.00 L 87.84 71.00 L 48.00 94.00 L 8.16 71.00 L 8.16 25.00 Z\"/>\n\t\t\t</clipPath>\n\t\t</defs>\n\t\t<path d=\"M 48.00 2.00 L 87.84 25.00 L 87.84 71.00 L 48.00 94.00 L 8.16 71.00 L 8.16 25.00 Z\" fill=\"#5ac0e3\"/>\n\t\t<g clip-path=\"url(#fav-retold-harness-dark)\"><circle cx=\"48\" cy=\"48\" r=\"42\" fill=\"rgba(255,255,255,0.22)\"/>\n\t\t\t\t\t<circle cx=\"48\" cy=\"48\" r=\"22\" fill=\"#e5a68e\"/></g>\n\t\t<text x=\"48\" y=\"50\" text-anchor=\"middle\" dominant-baseline=\"central\"\n\t\t\tfont-family=\"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif\"\n\t\t\tfont-size=\"60\" font-weight=\"800\"\n\t\t\tfill=\"#101418\" letter-spacing=\"-1\">R</text>\n\t</svg>",
10
+ "Colors": {
11
+ "Primary": "#1a9ac8",
12
+ "Secondary": "#dc693c",
13
+ "PrimaryLight": "#1a9ac8",
14
+ "PrimaryDark": "#5ac0e3",
15
+ "SecondaryLight": "#dc693c",
16
+ "SecondaryDark": "#e5a68e"
17
+ }
18
+ }
package/docs/_cover.md CHANGED
@@ -8,4 +8,4 @@
8
8
  - 10,000+ pre-loaded sample records
9
9
 
10
10
  [Getting Started](#retold-harness)
11
- [GitHub](https://github.com/stevenvelozo/retold-harness)
11
+ [GitHub](https://github.com/fable-retold/retold-harness)
package/docs/_topbar.md CHANGED
@@ -1,2 +1,2 @@
1
- - [GitHub](https://github.com/stevenvelozo/retold-harness)
1
+ - [GitHub](https://github.com/fable-retold/retold-harness)
2
2
  - [npm](https://www.npmjs.com/package/retold-harness)
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "Name": "retold-harness",
3
- "Version": "1.1.7",
3
+ "Version": "1.1.12",
4
4
  "Description": "Restful API harness. Serves on 8086.",
5
- "GeneratedAt": "2026-04-10T17:22:29.964Z",
6
- "GitCommit": "32200ca"
5
+ "GeneratedAt": "2026-05-26T21:12:36.748Z",
6
+ "GitCommit": "39791c2"
7
7
  }
@@ -164,7 +164,7 @@ Retrieves `StorageProvider` and `StorageProviderModule` from `this.options` (set
164
164
 
165
165
  ### `applyBehaviors(fCallback)`
166
166
 
167
- Apply endpoint behaviors from the schema provider. Delegates to [`HarnessSchemaProvider.applyBehaviors()`](api/schema-provider.md#applybehaviorsfcallback).
167
+ Apply endpoint behaviors from the schema provider. Delegates to [`HarnessSchemaProvider.applyBehaviors()`](schema-provider.md#applybehaviorsfcallback).
168
168
 
169
169
  **Parameters:**
170
170
 
@@ -4,7 +4,7 @@ This section provides detailed documentation for the public classes and methods
4
4
 
5
5
  ## Classes
6
6
 
7
- ### [RetoldHarness](api/retold-harness.md)
7
+ ### [RetoldHarness](retold-harness.md)
8
8
 
9
9
  **Source:** `source/Retold-Harness.js`
10
10
 
@@ -12,7 +12,7 @@ Application entry point. Reads environment variables, selects a schema and datab
12
12
 
13
13
  ---
14
14
 
15
- ### [MeadowProviderConfigurator](api/meadow-provider-configurator.md)
15
+ ### [MeadowProviderConfigurator](meadow-provider-configurator.md)
16
16
 
17
17
  **Source:** `source/providers/Retold-Harness-Service-MeadowProviderConfigurator.js`
18
18
 
@@ -20,7 +20,7 @@ Base provider orchestrator that defines the harness lifecycle: connect to a data
20
20
 
21
21
  ---
22
22
 
23
- ### [SchemaProvider](api/schema-provider.md)
23
+ ### [SchemaProvider](schema-provider.md)
24
24
 
25
25
  **Source:** `source/schemas/Retold-Harness-Service-SchemaProvider.js`
26
26
 
@@ -28,7 +28,7 @@ Base schema provider that defines the contract for schema-specific operations: l
28
28
 
29
29
  ---
30
30
 
31
- ### [ProcessManager](api/process-manager.md)
31
+ ### [ProcessManager](process-manager.md)
32
32
 
33
33
  **Source:** `source/management-tool/Service-ProcessManager.js`
34
34
 
@@ -20,7 +20,7 @@ Maps schema names to configuration files. Each configuration file exports a sett
20
20
 
21
21
  ### `_SchemaMap`
22
22
 
23
- Maps schema names to schema provider classes. Each class extends [`RetoldHarnessSchemaProvider`](api/schema-provider.md).
23
+ Maps schema names to schema provider classes. Each class extends [`RetoldHarnessSchemaProvider`](schema-provider.md).
24
24
 
25
25
  | Key | Schema Provider Class |
26
26
  |-----|----------------------|
@@ -30,7 +30,7 @@ Maps schema names to schema provider classes. Each class extends [`RetoldHarness
30
30
 
31
31
  ### `_ProviderMap`
32
32
 
33
- Maps provider names to provider configurator classes. Each class extends [`RetoldHarnessMeadowProviderConfigurator`](api/meadow-provider-configurator.md).
33
+ Maps provider names to provider configurator classes. Each class extends [`RetoldHarnessMeadowProviderConfigurator`](meadow-provider-configurator.md).
34
34
 
35
35
  | Key | Provider Configurator Class |
36
36
  |-----|-----------------------------|
@@ -98,7 +98,7 @@ Once `initializeHarness` is called, the provider configurator executes these ste
98
98
  5. **serveWebUI** -- Serve the web UI at the root URL
99
99
  6. **Log ready** -- Print the port and URL to the console
100
100
 
101
- See [`MeadowProviderConfigurator.initializeHarness()`](api/meadow-provider-configurator.md#initializeharnessflcallback) for details.
101
+ See [`MeadowProviderConfigurator.initializeHarness()`](meadow-provider-configurator.md#initializeharnessflcallback) for details.
102
102
 
103
103
  ## Validation
104
104
 
@@ -57,7 +57,7 @@ getSchemaPath()
57
57
 
58
58
  ### `getRetoldDataServiceOptions(pStorageProvider, pStorageProviderModule)`
59
59
 
60
- Build the RetoldDataServiceOptions configuration object. This method is called by [`MeadowProviderConfigurator.initializeDataService()`](api/meadow-provider-configurator.md#initializedataservicefcallback) to configure the data service with the correct schema path and storage provider.
60
+ Build the RetoldDataServiceOptions configuration object. This method is called by [`MeadowProviderConfigurator.initializeDataService()`](meadow-provider-configurator.md#initializedataservicefcallback) to configure the data service with the correct schema path and storage provider.
61
61
 
62
62
  **Parameters:**
63
63
 
@@ -190,7 +190,7 @@ getSeedCheckQuery()
190
190
 
191
191
  Apply endpoint behaviors after the data service is initialized. The default implementation is a no-op that immediately calls the callback. Override this method to inject custom behaviors into Meadow endpoints.
192
192
 
193
- This is called by [`MeadowProviderConfigurator.applyBehaviors()`](api/meadow-provider-configurator.md#applybehaviorsfcallback) during the harness lifecycle.
193
+ This is called by [`MeadowProviderConfigurator.applyBehaviors()`](meadow-provider-configurator.md#applybehaviorsfcallback) during the harness lifecycle.
194
194
 
195
195
  **Parameters:**
196
196
 
@@ -13,28 +13,8 @@ At startup, `Retold-Harness.js` reads two environment variables (`HARNESS_SCHEMA
13
13
 
14
14
  ## Initialization Flow
15
15
 
16
- ```mermaid
17
- sequenceDiagram
18
- participant H as Retold-Harness.js
19
- participant F as Fable
20
- participant SP as SchemaProvider
21
- participant PC as ProviderConfigurator
22
- participant DS as RetoldDataService
23
-
24
- H->>F: new Fable(settings)
25
- H->>F: Register SchemaProvider
26
- H->>F: Register ProviderConfigurator
27
- H->>PC: initializeHarness()
28
- PC->>PC: connectDatabase()
29
- PC->>SP: generateTables(db)
30
- PC->>SP: seedData(db)
31
- PC->>DS: initializeDataService()
32
- DS->>DS: Register Meadow DALs
33
- DS->>DS: Register MeadowEndpoints
34
- PC->>SP: applyBehaviors()
35
- PC->>PC: serveWebUI()
36
- PC-->>H: Ready on port 8086
37
- ```
16
+ <!-- bespoke diagram: edit diagrams/initialization-flow.mmd or .hints.json, then: npx pict-renderer-graph build modules/meadow/retold-harness/docs -->
17
+ ![Initialization Flow](diagrams/initialization-flow.svg)
38
18
 
39
19
  ### Step-by-step walkthrough
40
20
 
@@ -46,26 +26,8 @@ sequenceDiagram
46
26
 
47
27
  ## Component Architecture
48
28
 
49
- ```mermaid
50
- graph TD
51
- A[Retold-Harness.js] --> B[Schema Provider]
52
- A --> C[Provider Configurator]
53
- B --> D[Bookstore Schema]
54
- B --> E[US Federal Data Schema]
55
- B --> F[Entertainment Schema]
56
- C --> G[SQLite Provider]
57
- C --> H[MySQL Provider]
58
- C --> I[MSSQL Provider]
59
- C --> J[PostgreSQL Provider]
60
- C --> K[MongoDB Provider]
61
- C --> L[DGraph Provider]
62
- C --> M[Solr Provider]
63
- C --> N[Retold Data Service]
64
- N --> O[Orator HTTP Server]
65
- N --> P[Meadow DAL]
66
- N --> Q[Meadow Endpoints]
67
- Q --> R[Behavior Injection]
68
- ```
29
+ <!-- bespoke diagram: edit diagrams/component-architecture.mmd or .hints.json, then: npx pict-renderer-graph build modules/meadow/retold-harness/docs -->
30
+ ![Component Architecture](diagrams/component-architecture.svg)
69
31
 
70
32
  The top-level entry point (`Retold-Harness.js`) holds two lookup maps:
71
33