messagefoundry 0.2.11__tar.gz → 0.2.13__tar.gz

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 (930) hide show
  1. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/.github/workflows/benchmark.yml +2 -2
  2. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/.github/workflows/ci.yml +74 -0
  3. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/.github/workflows/release.yml +5 -1
  4. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/.gitignore +4 -0
  5. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/CHANGELOG.md +97 -0
  6. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/PKG-INFO +1 -1
  7. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docker/compose.yaml +1 -1
  8. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/BACKLOG.md +321 -3
  9. messagefoundry-0.2.13/docs/BRAND.md +103 -0
  10. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/CLOUD-DEPLOYMENT.md +1 -1
  11. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/CLUSTERING.md +8 -1
  12. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/CONFIGURATION.md +4 -2
  13. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/DEPLOY-SERVER-DB.md +34 -1
  14. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/MENTAL-MODEL.md +1 -1
  15. messagefoundry-0.2.13/docs/THROUGHPUT.md +304 -0
  16. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0001-staged-pipeline-architecture.md +6 -1
  17. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0037-multi-process-sharding-l3.md +6 -0
  18. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0055-group-commit-durable-write.md +8 -0
  19. messagefoundry-0.2.13/docs/adr/0056-engine-managed-vip-failover.md +643 -0
  20. messagefoundry-0.2.13/docs/adr/0057-inline-step-a-fast-path.md +184 -0
  21. messagefoundry-0.2.13/docs/adr/0058-batch-claim-fifo-prefix.md +251 -0
  22. messagefoundry-0.2.13/docs/adr/0059-seq-only-fifo-ordering.md +55 -0
  23. messagefoundry-0.2.13/docs/adr/0060-rename-based-fifo-index-migration.md +78 -0
  24. messagefoundry-0.2.13/docs/adr/0061-per-lane-wake-events.md +106 -0
  25. messagefoundry-0.2.13/docs/adr/0062-default-store-pool-size.md +137 -0
  26. messagefoundry-0.2.13/docs/adr/0063-no-split-store-unified-store-for-sharding.md +101 -0
  27. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/benchmarks/step-b-write-amplification.md +16 -2
  28. messagefoundry-0.2.13/docs/throughput-build-plan.md +102 -0
  29. messagefoundry-0.2.13/docs/throughput-roadmap.md +361 -0
  30. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/__main__.py +76 -2
  31. messagefoundry-0.2.13/harness/config/connscale/__init__.py +4 -0
  32. messagefoundry-0.2.13/harness/config/connscale/_shape.py +111 -0
  33. messagefoundry-0.2.13/harness/config/connscale/gen_toml.py +106 -0
  34. messagefoundry-0.2.13/harness/config/connscale/graph.py +91 -0
  35. messagefoundry-0.2.13/harness/load/connscale/__init__.py +14 -0
  36. messagefoundry-0.2.13/harness/load/connscale/driver.py +135 -0
  37. messagefoundry-0.2.13/harness/load/connscale/probe.py +113 -0
  38. messagefoundry-0.2.13/harness/load/connscale/profile.py +364 -0
  39. messagefoundry-0.2.13/harness/load/connscale/report.py +300 -0
  40. messagefoundry-0.2.13/harness/load/connscale/runner.py +622 -0
  41. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/load/enginepoll.py +99 -3
  42. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/load/failover.py +6 -0
  43. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/load/profile.py +5 -1
  44. messagefoundry-0.2.13/harness/load/profiles/connscale-smoke.toml +31 -0
  45. messagefoundry-0.2.13/harness/load/profiles/connscale.toml +35 -0
  46. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/load/report.py +10 -2
  47. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/__init__.py +1 -1
  48. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/__main__.py +18 -0
  49. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/api/app.py +62 -0
  50. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/api/models.py +52 -0
  51. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/config/ingest_time.py +8 -1
  52. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/config/settings.py +38 -4
  53. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/config/wiring.py +9 -0
  54. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/console/status.py +12 -1
  55. messagefoundry-0.2.13/messagefoundry/pipeline/connscale_shim.py +115 -0
  56. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/pipeline/engine.py +12 -0
  57. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/pipeline/sharding.py +37 -2
  58. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/pipeline/supervisor.py +10 -2
  59. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/pipeline/wiring_runner.py +588 -241
  60. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/store/base.py +97 -2
  61. messagefoundry-0.2.13/messagefoundry/store/pool_metrics.py +145 -0
  62. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/store/postgres.py +255 -95
  63. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/store/sqlserver.py +240 -52
  64. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/store/store.py +177 -73
  65. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/support/bundle.py +1 -0
  66. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/scripts/worktree/new.ps1 +4 -4
  67. messagefoundry-0.2.13/tests/test_batch_claim_fifo.py +371 -0
  68. messagefoundry-0.2.13/tests/test_batch_claim_locking.py +208 -0
  69. messagefoundry-0.2.13/tests/test_batch_claim_worker.py +154 -0
  70. messagefoundry-0.2.13/tests/test_connscale_config.py +85 -0
  71. messagefoundry-0.2.13/tests/test_connscale_driver.py +105 -0
  72. messagefoundry-0.2.13/tests/test_connscale_postgres.py +110 -0
  73. messagefoundry-0.2.13/tests/test_connscale_profile.py +107 -0
  74. messagefoundry-0.2.13/tests/test_connscale_report.py +150 -0
  75. messagefoundry-0.2.13/tests/test_connscale_smoke.py +143 -0
  76. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_enginepoll_aggregate.py +2 -0
  77. messagefoundry-0.2.13/tests/test_fifo_index_migration.py +426 -0
  78. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_fifo_ordering.py +2 -1
  79. messagefoundry-0.2.13/tests/test_inline_fast_path.py +525 -0
  80. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_load_config.py +7 -3
  81. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_load_report.py +17 -3
  82. messagefoundry-0.2.13/tests/test_per_lane_wake.py +322 -0
  83. messagefoundry-0.2.13/tests/test_seq_only_fifo.py +463 -0
  84. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_settings.py +66 -0
  85. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_sharding.py +39 -0
  86. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_sqlserver_cursor_close.py +5 -1
  87. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_sqlserver_schema_init.py +44 -0
  88. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_staged_pipeline.py +21 -21
  89. messagefoundry-0.2.13/tests/test_synchronous_baseline.py +190 -0
  90. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/.claude/settings.json +0 -0
  91. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/.dockerignore +0 -0
  92. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/.gitattributes +0 -0
  93. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/.github/CODEOWNERS +0 -0
  94. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  95. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  96. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  97. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  98. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/.github/SECURITY.md +0 -0
  99. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/.github/dependabot.yml +0 -0
  100. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/.github/workflows/cla.yml +0 -0
  101. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/.github/workflows/codeql.yml +0 -0
  102. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/.github/workflows/dependabot-auto-merge.yml +0 -0
  103. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/.github/workflows/dependabot-lock-resync.yml +0 -0
  104. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/.github/workflows/freethread-smoke.yml +0 -0
  105. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/.github/workflows/manifest-lint.yml +0 -0
  106. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/.github/workflows/release-sync-check.yml +0 -0
  107. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/.github/workflows/scorecard.yml +0 -0
  108. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/.github/workflows/security.yml +0 -0
  109. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/.github/workflows/selfhosted-win2025-sql.yml +0 -0
  110. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/.github/workflows/vuln-metrics.yml +0 -0
  111. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/.github/zizmor.yml +0 -0
  112. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/.gitleaks.toml +0 -0
  113. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/.mefor-hooks/pre-commit +0 -0
  114. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/.pre-commit-config.yaml +0 -0
  115. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/.semgrep/messagefoundry.yml +0 -0
  116. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/CLA.md +0 -0
  117. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/CLAUDE.md +0 -0
  118. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/CODE_OF_CONDUCT.md +0 -0
  119. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/COMMERCIAL-LICENSE.md +0 -0
  120. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/CONTRIBUTING.md +0 -0
  121. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/GOVERNANCE.md +0 -0
  122. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/LICENSE +0 -0
  123. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/MAINTAINERS.md +0 -0
  124. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/NOTICE +0 -0
  125. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/README.md +0 -0
  126. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docker/Dockerfile +0 -0
  127. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docker/README.md +0 -0
  128. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docker/k8s/ha-postgres.yaml +0 -0
  129. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docker/k8s/secret.example.yaml +0 -0
  130. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docker/k8s/statefulset.yaml +0 -0
  131. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docker/locks/requirements-core.lock +0 -0
  132. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docker/locks/requirements-sqlserver.lock +0 -0
  133. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docker/secrets.env.example +0 -0
  134. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docker/smoke/Dockerfile +0 -0
  135. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docker/smoke/config/IB_Test_ADT.py +0 -0
  136. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docker/smoke/send_adt.py +0 -0
  137. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/ADOPTER-CI.md +0 -0
  138. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/AI.md +0 -0
  139. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/ANTIVIRUS-FIREWALL.md +0 -0
  140. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/ARCHITECTURE.md +0 -0
  141. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/CI-QUALITY.md +0 -0
  142. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/CLOUD-PHI-HIPAA.md +0 -0
  143. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/CODESETS.md +0 -0
  144. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/CONNECTIONS.md +0 -0
  145. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/CONTAINER-EXPOSURE-EVALUATION.md +0 -0
  146. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/CONTRIBUTOR-FIRST-ISSUES.md +0 -0
  147. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/CONTRIBUTOR-PROGRAM-PLAN.md +0 -0
  148. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/COUNSEL-ENGAGEMENT-BRIEF.md +0 -0
  149. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/DEPLOYMENT.md +0 -0
  150. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/DICOM.md +0 -0
  151. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/DUAL_LICENSING_PLAN.md +0 -0
  152. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/EARLY-ADOPTER-GUIDE.md +0 -0
  153. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/FEATURE-MAP.md +0 -0
  154. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/HL7-VALIDATION.md +0 -0
  155. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/INSTALL-GUIDE.md +0 -0
  156. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/LOAD-TESTING.md +0 -0
  157. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/MessageFoundry-Mental-Model.docx +0 -0
  158. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/PHI.md +0 -0
  159. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/POSITIONING.md +0 -0
  160. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/REMOTE-CONSOLE-CUSTOMER-GUIDE.md +0 -0
  161. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/REMOTE-CONSOLE.md +0 -0
  162. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/SECURITY-REMEDIATION-LEDGER.md +0 -0
  163. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/SECURITY.md +0 -0
  164. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/SERVICE.md +0 -0
  165. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/SUPPORT-POLICY.md +0 -0
  166. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/SYSTEM-REQUIREMENTS.md +0 -0
  167. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/Secure_AI_Development_Standards.md +0 -0
  168. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/Secure_Development_Standards.md +0 -0
  169. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/TEE-RELAY.md +0 -0
  170. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/THROUGHPUT-IMPROVEMENTS.md +0 -0
  171. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/USER-GUIDE.md +0 -0
  172. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/WORKTREES.md +0 -0
  173. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0002-phase2-transport-security-and-strong-auth.md +0 -0
  174. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0003-non-hl7-transports-database-rest-soap.md +0 -0
  175. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0004-payload-agnostic-ingress.md +0 -0
  176. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0005-transform-accessible-state.md +0 -0
  177. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0006-external-data-lookups.md +0 -0
  178. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0007-gui-manageable-connections-toml.md +0 -0
  179. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0008-cluster-observability-api.md +0 -0
  180. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0009-run-scoped-context-providers.md +0 -0
  181. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0010-handler-callable-db-lookup.md +0 -0
  182. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0011-timer-scheduled-source.md +0 -0
  183. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0012-x12-edi-codec.md +0 -0
  184. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0013-increment-2-reingress-design.md +0 -0
  185. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0013-query-response-orchestration.md +0 -0
  186. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0014-alerting-rules-engine.md +0 -0
  187. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0015-ws-soap-outbound-mtls-wssecurity.md +0 -0
  188. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0016-synchronous-x12-request-response.md +0 -0
  189. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0017-consumer-deployment-model.md +0 -0
  190. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0018-per-message-signatures-accepted-risk.md +0 -0
  191. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0019-pluggable-keyprovider-hsm-kms-vault.md +0 -0
  192. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0020-protocol-diagnostic-capture.md +0 -0
  193. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0021-inbound-ack-nak-capture-response-sent.md +0 -0
  194. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0022-fhir-resource-codec-rest-client.md +0 -0
  195. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0023-inbound-http-listener.md +0 -0
  196. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0024-smart-backend-services-token-provider.md +0 -0
  197. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0025-dicom-codec-store-connectors.md +0 -0
  198. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0026-off-box-egress-update-check.md +0 -0
  199. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0027-per-connection-retention.md +0 -0
  200. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0028-base64-binary-carriage-codec.md +0 -0
  201. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0029-email-smtp-destination.md +0 -0
  202. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0030-anonymization-test-harness-tee.md +0 -0
  203. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0031-startup-connection-fault-isolation.md +0 -0
  204. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0032-console-desktop-launch.md +0 -0
  205. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0033-gui-manageable-code-sets.md +0 -0
  206. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0034-static-analysis-triage-policy-accepted-risk-register.md +0 -0
  207. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0035-ide-extension-workspace-trust-and-scope.md +0 -0
  208. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0036-windows-config-source-trust.md +0 -0
  209. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0038-internal-pass-through-connector.md +0 -0
  210. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0039-database-tier-sharding-l5.md +0 -0
  211. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0040-free-threaded-engine-support.md +0 -0
  212. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0041-load-path-attestation-and-change-attribution.md +0 -0
  213. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0042-embedded-document-pruning.md +0 -0
  214. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0043-fhir-read-lookup.md +0 -0
  215. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0044-operator-alert-state.md +0 -0
  216. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0045-custom-rbac-roles.md +0 -0
  217. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0046-message-content-search.md +0 -0
  218. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0047-cloud-kubernetes-ha-deployment-packaging.md +0 -0
  219. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0048-third-tier-disaster-recovery-standby.md +0 -0
  220. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0049-turnkey-dr-backup-restore-verify.md +0 -0
  221. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0050-single-project-root-config-anchoring.md +0 -0
  222. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0051-corepoint-throughput-parity-strategy.md +0 -0
  223. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0052-enterprise-scale-target.md +0 -0
  224. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0053-free-threaded-multicore-engine.md +0 -0
  225. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/0054-low-allocation-builtins-hl7-parser.md +0 -0
  226. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/README.md +0 -0
  227. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/adr/TEMPLATE.md +0 -0
  228. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/architecture-components.png +0 -0
  229. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/architecture-components.svg +0 -0
  230. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/architecture-config-graph.png +0 -0
  231. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/architecture-config-graph.svg +0 -0
  232. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/architecture-diagram.md +0 -0
  233. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/architecture-message-flow.png +0 -0
  234. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/architecture-message-flow.svg +0 -0
  235. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/architecture-topology.png +0 -0
  236. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/architecture-topology.svg +0 -0
  237. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/benchmarks/TUNING-BASELINE.md +0 -0
  238. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/benchmarks/results/2026-06-16-ci-linux/environment.txt +0 -0
  239. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/benchmarks/results/2026-06-16-ci-linux/failover-postgres.json +0 -0
  240. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/benchmarks/results/2026-06-16-ci-linux/failover-sqlserver.json +0 -0
  241. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/benchmarks/results/2026-06-16-ci-linux/reference-postgres.json +0 -0
  242. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/benchmarks/results/2026-06-16-ci-linux/reference-sqlite.json +0 -0
  243. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/benchmarks/results/2026-06-16-ci-linux/reference-sqlserver.json +0 -0
  244. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/design/dbshard.md +0 -0
  245. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/design/freethread-spike.md +0 -0
  246. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/design/freethread.md +0 -0
  247. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/design/multiproc.md +0 -0
  248. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/hl7-message-ordering-reference.md +0 -0
  249. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/message-ordering-design.md +0 -0
  250. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/releases/ASVS-OPTION-A-MULTISESSION-PLAN.md +0 -0
  251. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/releases/ASVS-PARTIALS-SWEEP-MULTISESSION-PLAN.md +0 -0
  252. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/releases/DOGFOOD-BACKLOG-MULTISESSION-PLAN.md +0 -0
  253. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/releases/MULTISESSION-PLAN-3.md +0 -0
  254. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/releases/MULTISESSION-PLAN-4.md +0 -0
  255. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/releases/MULTISESSION-PLAN-5.md +0 -0
  256. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/releases/MULTISESSION-PLAN-6.md +0 -0
  257. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/releases/MULTISESSION-PLAN-v0.2.md +0 -0
  258. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/releases/MULTISESSION-PLAN.md +0 -0
  259. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/releases/PLAN-3-LANE-HANDOFFS.md +0 -0
  260. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/releases/V0.2-LANE-HANDOFFS.md +0 -0
  261. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/releases/v0.1-EXECUTION-PLAN.md +0 -0
  262. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/releases/v0.1-PLAN.md +0 -0
  263. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/releases/v0.1.0-PRETAG-CHECKLIST.md +0 -0
  264. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/research/cloud-deployment-research-2026-06.md +0 -0
  265. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/research/config-ux-review.md +0 -0
  266. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/research/non-hl7-transform-components.md +0 -0
  267. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/reviews/DEPENDENCY-INFOSEC-POSTURE-2026-06-23.md +0 -0
  268. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/reviews/FULL-REVIEW-2026-06-10.md +0 -0
  269. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/security/ADVISORY-PROCESS.md +0 -0
  270. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/security/ASVS-FAILS-REMEDIATION-PLAN.md +0 -0
  271. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/security/ASVS-L2-PHASE0-CHANGES.md +0 -0
  272. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/security/ASVS-L2-REMEDIATION-PLAN.md +0 -0
  273. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/security/ASVS-L3-ASSESSMENT.md +0 -0
  274. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/security/ASVS-L3-REMEDIATION-PLAN.md +0 -0
  275. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/security/ASVS-L3-STATUS.md +0 -0
  276. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/security/BEYOND-ASVS-L3-ONEPAGE.md +0 -0
  277. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/security/BEYOND-ASVS-L3-REMEDIATION-PLAN-ONEPAGE.md +0 -0
  278. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/security/BEYOND-ASVS-L3-REMEDIATION-PLAN.md +0 -0
  279. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/security/BEYOND-ASVS-L3.md +0 -0
  280. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/security/DEP-CVE-RUNBOOK.md +0 -0
  281. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/security/DEPENDENCY-METRICS.md +0 -0
  282. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/security/MEFOR-Code-Review-Checklist.xlsx +0 -0
  283. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/security/PHASE-8C-RBAC.md +0 -0
  284. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/security/PUBLISHING.md +0 -0
  285. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/security/RCA-TEMPLATE.md +0 -0
  286. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/security/RELEASE-GATE.md +0 -0
  287. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/security/REMEDIATION-PLAN.md +0 -0
  288. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/security/REVIEW-2026-06-07.md +0 -0
  289. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/security/SDS-CONFORMANCE-REVIEW-2026-06-12.md +0 -0
  290. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/security/SDS-REMEDIATION-PLAN.md +0 -0
  291. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/security/SECURITY-POSTURE.md +0 -0
  292. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/security/SOUP-DEPENDENCY-HANDLING.md +0 -0
  293. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/security/SOUP-REVIEW-2026-06-18.md +0 -0
  294. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/security/SOUP-REVIEW-PROCEDURE.md +0 -0
  295. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/security/THREAT-MODEL.md +0 -0
  296. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/testing/VERIFY.md +0 -0
  297. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/testing/WIN2025-ACCEPTANCE.md +0 -0
  298. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/testing/WIN2025-TEST-MATRIX.md +0 -0
  299. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/docs/testing/WIN2025-TEST-PLAN.md +0 -0
  300. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/environments/dev.toml +0 -0
  301. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/environments/prod.toml +0 -0
  302. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/README.md +0 -0
  303. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/acceptance/__init__.py +0 -0
  304. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/acceptance/__main__.py +0 -0
  305. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/acceptance/matrix.py +0 -0
  306. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/acceptance/probes.py +0 -0
  307. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/acceptance/report.py +0 -0
  308. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/acceptance/runner.py +0 -0
  309. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/compose.py +0 -0
  310. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/config/coverage.py +0 -0
  311. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/config/load/_shape.py +0 -0
  312. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/config/load/graph.py +0 -0
  313. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/config/passthrough/graph.py +0 -0
  314. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/config/store_once/graph.py +0 -0
  315. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/file_panel.py +0 -0
  316. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/file_transport.py +0 -0
  317. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/load/__init__.py +0 -0
  318. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/load/corpus.py +0 -0
  319. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/load/correlator.py +0 -0
  320. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/load/failover_track.py +0 -0
  321. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/load/governor.py +0 -0
  322. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/load/ids.py +0 -0
  323. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/load/metrics.py +0 -0
  324. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/load/profiles/README.md +0 -0
  325. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/load/profiles/adt-fanout-stress.toml +0 -0
  326. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/load/profiles/closed-loop.toml +0 -0
  327. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/load/profiles/failover.toml +0 -0
  328. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/load/profiles/fanout-baseline.toml +0 -0
  329. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/load/profiles/malformed-load.toml +0 -0
  330. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/load/profiles/reference.toml +0 -0
  331. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/load/profiles/smoke-sqlserver.toml +0 -0
  332. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/load/profiles/smoke.toml +0 -0
  333. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/load/profiles/soak.toml +0 -0
  334. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/load/profiles/spike-burst.toml +0 -0
  335. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/load/profiles/sustained-overload.toml +0 -0
  336. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/load/profiles/writeamp.toml +0 -0
  337. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/load/runner.py +0 -0
  338. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/load/sender.py +0 -0
  339. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/load/sink.py +0 -0
  340. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/mllp.py +0 -0
  341. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/monitor.py +0 -0
  342. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/receive.py +0 -0
  343. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/reconcile/__init__.py +0 -0
  344. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/reconcile/__main__.py +0 -0
  345. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/reconcile/capture.py +0 -0
  346. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/reconcile/compare.py +0 -0
  347. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/reconcile/normalize.py +0 -0
  348. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/reconcile/report.py +0 -0
  349. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/scenarios.py +0 -0
  350. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/send.py +0 -0
  351. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/harness/window.py +0 -0
  352. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/.gitignore +0 -0
  353. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/.vscodeignore +0 -0
  354. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/README.md +0 -0
  355. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/esbuild.js +0 -0
  356. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/media/hl7schema.json +0 -0
  357. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/media/icon-amber.svg +0 -0
  358. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/media/icon.png +0 -0
  359. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/media/icon.svg +0 -0
  360. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/package-lock.json +0 -0
  361. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/package.json +0 -0
  362. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/snippets/messagefoundry.code-snippets +0 -0
  363. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/aiPolicy.ts +0 -0
  364. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/alertEditor.ts +0 -0
  365. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/auth.ts +0 -0
  366. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/chat.ts +0 -0
  367. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/cli.ts +0 -0
  368. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/codeSetEditor.ts +0 -0
  369. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/codesetsTree.ts +0 -0
  370. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/completion.ts +0 -0
  371. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/connectionEditor.ts +0 -0
  372. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/editorToolbar.ts +0 -0
  373. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/engineClient.ts +0 -0
  374. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/engineTarget.ts +0 -0
  375. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/extension.ts +0 -0
  376. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/generate.ts +0 -0
  377. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/git.ts +0 -0
  378. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/graphTree.ts +0 -0
  379. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/home.ts +0 -0
  380. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/insertElement.ts +0 -0
  381. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/newRoute.ts +0 -0
  382. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/promote.ts +0 -0
  383. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/promoteTarget.ts +0 -0
  384. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/sourceControl.ts +0 -0
  385. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/test/runTest.ts +0 -0
  386. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/test/suite/ai-policy.test.ts +0 -0
  387. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/test/suite/chat.test.ts +0 -0
  388. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/test/suite/editor-toolbar.test.ts +0 -0
  389. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/test/suite/engine-target.test.ts +0 -0
  390. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/test/suite/extension.test.ts +0 -0
  391. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/test/suite/index.ts +0 -0
  392. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/test/suite/insert-element.test.ts +0 -0
  393. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/test/suite/promote-target.test.ts +0 -0
  394. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/test/suite/pythonpath.test.ts +0 -0
  395. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/test/suite/settings-scope.test.ts +0 -0
  396. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/testBench.ts +0 -0
  397. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/src/validate.ts +0 -0
  398. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/tsconfig.json +0 -0
  399. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/ide/tsconfig.test.json +0 -0
  400. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/mefor.code-workspace +0 -0
  401. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/adr_analyze.py +0 -0
  402. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/anon/__init__.py +0 -0
  403. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/anon/_pools.py +0 -0
  404. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/anon/hl7.py +0 -0
  405. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/anon/keying.py +0 -0
  406. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/anon/leak.py +0 -0
  407. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/anon/rules.py +0 -0
  408. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/anon/surrogates.py +0 -0
  409. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/api/__init__.py +0 -0
  410. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/api/approvals.py +0 -0
  411. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/api/auth_models.py +0 -0
  412. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/api/auth_routes.py +0 -0
  413. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/api/field_authz.py +0 -0
  414. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/api/metrics.py +0 -0
  415. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/api/security.py +0 -0
  416. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/api/tls.py +0 -0
  417. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/auth/__init__.py +0 -0
  418. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/auth/data/common_passwords.NOTICE +0 -0
  419. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/auth/data/common_passwords.txt +0 -0
  420. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/auth/identity.py +0 -0
  421. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/auth/ldap.py +0 -0
  422. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/auth/notifications.py +0 -0
  423. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/auth/passwords.py +0 -0
  424. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/auth/permissions.py +0 -0
  425. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/auth/policy.py +0 -0
  426. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/auth/ratelimit.py +0 -0
  427. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/auth/service.py +0 -0
  428. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/auth/tokens.py +0 -0
  429. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/auth/totp.py +0 -0
  430. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/checks.py +0 -0
  431. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/config/__init__.py +0 -0
  432. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/config/active_environment.py +0 -0
  433. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/config/ai_policy.py +0 -0
  434. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/config/alerts_edit.py +0 -0
  435. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/config/anchor.py +0 -0
  436. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/config/code_sets.py +0 -0
  437. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/config/codeset_edit.py +0 -0
  438. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/config/connections_edit.py +0 -0
  439. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/config/connections_file.py +0 -0
  440. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/config/db_lookup.py +0 -0
  441. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/config/environments.py +0 -0
  442. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/config/fhir_lookup.py +0 -0
  443. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/config/fingerprint.py +0 -0
  444. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/config/models.py +0 -0
  445. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/config/reference.py +0 -0
  446. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/config/response.py +0 -0
  447. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/config/run_context.py +0 -0
  448. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/config/state.py +0 -0
  449. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/config/tls_policy.py +0 -0
  450. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/console/__init__.py +0 -0
  451. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/console/__main__.py +0 -0
  452. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/console/_async.py +0 -0
  453. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/console/alerts_page.py +0 -0
  454. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/console/change_password.py +0 -0
  455. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/console/client.py +0 -0
  456. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/console/connections.py +0 -0
  457. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/console/dead_letters_page.py +0 -0
  458. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/console/delegates.py +0 -0
  459. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/console/event_log_page.py +0 -0
  460. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/console/icons/alerts.svg +0 -0
  461. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/console/icons/connections.svg +0 -0
  462. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/console/icons/dead-letters.svg +0 -0
  463. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/console/icons/engine-status.svg +0 -0
  464. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/console/icons/log-search.svg +0 -0
  465. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/console/icons/logo-lockup.svg +0 -0
  466. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/console/icons/users.svg +0 -0
  467. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/console/login.py +0 -0
  468. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/console/mfa.py +0 -0
  469. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/console/reauth.py +0 -0
  470. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/console/resources/README.md +0 -0
  471. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/console/resources/app.ico +0 -0
  472. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/console/resources/app.svg +0 -0
  473. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/console/search.py +0 -0
  474. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/console/service_control.py +0 -0
  475. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/console/sessions.py +0 -0
  476. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/console/shards.py +0 -0
  477. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/console/shell.py +0 -0
  478. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/console/theme.py +0 -0
  479. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/console/users_page.py +0 -0
  480. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/console/widgets.py +0 -0
  481. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/generators/README.md +0 -0
  482. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/generators/__init__.py +0 -0
  483. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/generators/_core.py +0 -0
  484. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/generators/_hl7data.py +0 -0
  485. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/generators/adt.py +0 -0
  486. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/generators/all_types.py +0 -0
  487. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/generators/bar.py +0 -0
  488. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/generators/dft.py +0 -0
  489. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/generators/documents.py +0 -0
  490. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/generators/mdm.py +0 -0
  491. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/generators/mfn.py +0 -0
  492. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/generators/oml.py +0 -0
  493. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/generators/orl.py +0 -0
  494. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/generators/orm.py +0 -0
  495. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/generators/oru.py +0 -0
  496. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/generators/ras.py +0 -0
  497. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/generators/rde.py +0 -0
  498. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/generators/siu.py +0 -0
  499. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/generators/vxu.py +0 -0
  500. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/hl7schema.py +0 -0
  501. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/integrity.py +0 -0
  502. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/last_resort.py +0 -0
  503. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/logging_setup.py +0 -0
  504. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/__init__.py +0 -0
  505. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/_backend.py +0 -0
  506. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/_builtin_hl7.py +0 -0
  507. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/binary.py +0 -0
  508. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/consistency.py +0 -0
  509. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/dicom/__init__.py +0 -0
  510. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/dicom/_deps.py +0 -0
  511. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/dicom/_util.py +0 -0
  512. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/dicom/dataset.py +0 -0
  513. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/dicom/errors.py +0 -0
  514. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/dicom/hl7_map.py +0 -0
  515. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/dicom/peek.py +0 -0
  516. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/fhir/__init__.py +0 -0
  517. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/fhir/_deps.py +0 -0
  518. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/fhir/errors.py +0 -0
  519. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/fhir/peek.py +0 -0
  520. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/fhir/resource.py +0 -0
  521. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/groups.py +0 -0
  522. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/message.py +0 -0
  523. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/peek.py +0 -0
  524. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/split.py +0 -0
  525. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/summary.py +0 -0
  526. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/tree.py +0 -0
  527. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/validate.py +0 -0
  528. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/x12/__init__.py +0 -0
  529. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/x12/_deps.py +0 -0
  530. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/x12/delimiters.py +0 -0
  531. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/x12/errors.py +0 -0
  532. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/x12/interchange.py +0 -0
  533. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/x12/message.py +0 -0
  534. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/x12/peek.py +0 -0
  535. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/x12/validate.py +0 -0
  536. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/xml/__init__.py +0 -0
  537. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/xml/_deps.py +0 -0
  538. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/xml/errors.py +0 -0
  539. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/xml/harden.py +0 -0
  540. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/xml/message.py +0 -0
  541. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/xml/schema.py +0 -0
  542. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/parsing/xml/signature.py +0 -0
  543. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/pipeline/__init__.py +0 -0
  544. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/pipeline/alert_sinks.py +0 -0
  545. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/pipeline/alerts.py +0 -0
  546. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/pipeline/cert_expiry.py +0 -0
  547. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/pipeline/cluster.py +0 -0
  548. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/pipeline/cluster_sqlserver.py +0 -0
  549. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/pipeline/config_convergence.py +0 -0
  550. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/pipeline/dr.py +0 -0
  551. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/pipeline/dr_backup.py +0 -0
  552. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/pipeline/dryrun.py +0 -0
  553. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/pipeline/leader_tasks.py +0 -0
  554. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/pipeline/reference_sync.py +0 -0
  555. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/pipeline/retention.py +0 -0
  556. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/pipeline/security_notify.py +0 -0
  557. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/pipeline/state_convergence.py +0 -0
  558. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/pipeline/update_check.py +0 -0
  559. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/py.typed +0 -0
  560. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/redaction.py +0 -0
  561. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/scaffold.py +0 -0
  562. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/secrets_dpapi.py +0 -0
  563. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/store/__init__.py +0 -0
  564. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/store/audit_tee.py +0 -0
  565. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/store/backup_codec.py +0 -0
  566. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/store/content_search.py +0 -0
  567. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/store/crypto.py +0 -0
  568. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/store/document_strip.py +0 -0
  569. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/store/keyprovider.py +0 -0
  570. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/support/__init__.py +0 -0
  571. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/support/redact.py +0 -0
  572. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/timezone.py +0 -0
  573. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/transports/__init__.py +0 -0
  574. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/transports/base.py +0 -0
  575. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/transports/database.py +0 -0
  576. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/transports/dicom.py +0 -0
  577. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/transports/dicomweb.py +0 -0
  578. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/transports/email.py +0 -0
  579. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/transports/fhir.py +0 -0
  580. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/transports/file.py +0 -0
  581. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/transports/framing.py +0 -0
  582. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/transports/http_listener.py +0 -0
  583. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/transports/loopback.py +0 -0
  584. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/transports/mllp.py +0 -0
  585. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/transports/passthrough.py +0 -0
  586. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/transports/remotefile.py +0 -0
  587. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/transports/rest.py +0 -0
  588. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/transports/signing.py +0 -0
  589. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/transports/smart.py +0 -0
  590. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/transports/soap.py +0 -0
  591. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/transports/tcp.py +0 -0
  592. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/transports/timer.py +0 -0
  593. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/transports/x12.py +0 -0
  594. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/verify/__init__.py +0 -0
  595. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/verify/checks.py +0 -0
  596. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/verify/model.py +0 -0
  597. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/verify/report.py +0 -0
  598. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/verify/runner.py +0 -0
  599. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/messagefoundry/verify/smoke.py +0 -0
  600. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/packaging/console-installer/README.md +0 -0
  601. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/packaging/console-installer/THIRD-PARTY-NOTICES.md +0 -0
  602. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/packaging/console-installer/THIRD-PARTY-NOTICES.txt +0 -0
  603. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/packaging/console-installer/console_launcher.py +0 -0
  604. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/packaging/console-installer/licenses/GPL-3.0.txt +0 -0
  605. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/packaging/console-installer/licenses/LGPL-3.0.txt +0 -0
  606. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/packaging/console-installer/messagefoundry-console.iss +0 -0
  607. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/packaging/console-installer/messagefoundry-console.spec +0 -0
  608. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/packaging/messagefoundry-harness/README.md +0 -0
  609. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/packaging/messagefoundry-harness/pyproject.toml +0 -0
  610. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/pyproject.toml +0 -0
  611. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/requirements.lock +0 -0
  612. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/samples/config/IB_ACME_ADT.py +0 -0
  613. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/samples/config/IB_FHIR_INTAKE.py +0 -0
  614. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/samples/config/IB_IMMUNIZATION_VXU.py +0 -0
  615. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/samples/config/IB_PARTNER_X12.py +0 -0
  616. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/samples/config/IB_RADIOLOGY_SR.py +0 -0
  617. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/samples/config/IB_RTE_ELIGIBILITY.py +0 -0
  618. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/samples/config/adt.py +0 -0
  619. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/samples/config/codesets/event_labels.csv +0 -0
  620. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/samples/config/codesets/facility_mnemonics.toml +0 -0
  621. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/samples/config/connections.toml +0 -0
  622. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/samples/consistency/validated_adt.py +0 -0
  623. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/samples/dicom/generate_sr_sample.py +0 -0
  624. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/samples/messages/adt_a01.hl7 +0 -0
  625. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/samples/messages/adt_batch.hl7 +0 -0
  626. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/samples/messages/hapi-hl7v2/.gitattributes +0 -0
  627. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/samples/messages/hapi-hl7v2/README.md +0 -0
  628. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/samples/messages/hapi-hl7v2/adt_a01.txt +0 -0
  629. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/samples/messages/hapi-hl7v2/adt_a03.txt +0 -0
  630. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/samples/messages/hapi-hl7v2/batch_18_messages.txt +0 -0
  631. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/samples/messages/hapi-hl7v2/erp_z99_v231.hl7 +0 -0
  632. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/samples/messages/hapi-hl7v2/omd_o03.txt +0 -0
  633. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/samples/messages/hapi-hl7v2/omd_o03_rep.txt +0 -0
  634. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/samples/messages/hapi-hl7v2/oml_o21.hl7 +0 -0
  635. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/samples/messages/x12_270_eligibility.edi +0 -0
  636. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/samples/results_relay/README.md +0 -0
  637. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/samples/results_relay/codesets/test_codes.csv +0 -0
  638. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/samples/results_relay/messages/oru_all_cancelled.hl7 +0 -0
  639. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/samples/results_relay/messages/oru_results.hl7 +0 -0
  640. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/samples/results_relay/results_relay.py +0 -0
  641. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/samples/send_mllp.py +0 -0
  642. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/scripts/console/install-console-shortcut.ps1 +0 -0
  643. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/scripts/console/pack_ico.py +0 -0
  644. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/scripts/console/uninstall-console-shortcut.ps1 +0 -0
  645. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/scripts/dev/postgres.ps1 +0 -0
  646. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/scripts/dev/sqlserver-docker.ps1 +0 -0
  647. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/scripts/dev/sqlserver.ps1 +0 -0
  648. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/scripts/hooks/block-blanket-git-stage.ps1 +0 -0
  649. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/scripts/publish/check_release_sync.py +0 -0
  650. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/scripts/publish/publish-denylist.txt +0 -0
  651. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/scripts/publish/publish.ps1 +0 -0
  652. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/scripts/publish/scan_forbidden.py +0 -0
  653. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/scripts/security/crypto_inventory_check.py +0 -0
  654. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/scripts/security/vuln_metrics.py +0 -0
  655. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/scripts/service/import-db-ca.ps1 +0 -0
  656. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/scripts/service/install-service.ps1 +0 -0
  657. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/scripts/service/uninstall-service.ps1 +0 -0
  658. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/scripts/trace_icon.py +0 -0
  659. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/scripts/worktree/remove.ps1 +0 -0
  660. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/scripts/worktree/session-context.ps1 +0 -0
  661. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/scripts/worktree/spawn.ps1 +0 -0
  662. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tee/__init__.py +0 -0
  663. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tee/__main__.py +0 -0
  664. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tee/anon/__init__.py +0 -0
  665. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tee/anon/_hl7data.py +0 -0
  666. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tee/anon/_pools.py +0 -0
  667. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tee/anon/hl7.py +0 -0
  668. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tee/anon/keying.py +0 -0
  669. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tee/anon/leak.py +0 -0
  670. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tee/anon/rules.py +0 -0
  671. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tee/anon/surrogates.py +0 -0
  672. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tee/compare.py +0 -0
  673. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tee/correlate.py +0 -0
  674. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tee/hl7_fields.py +0 -0
  675. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tee/mefor_api.py +0 -0
  676. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tee/mllp.py +0 -0
  677. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tee/relay.py +0 -0
  678. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tee/report.py +0 -0
  679. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tee/store.py +0 -0
  680. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/_dicom_sample.py +0 -0
  681. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/_failover_load_support.py +0 -0
  682. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/_fhir_fixtures.py +0 -0
  683. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/conftest.py +0 -0
  684. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_acceptance_framework.py +0 -0
  685. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_ack_capture_runner.py +0 -0
  686. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_ack_sent_store.py +0 -0
  687. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_active_environment.py +0 -0
  688. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_ad_group_scope.py +0 -0
  689. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_admin_new_ip.py +0 -0
  690. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_adr_analyze.py +0 -0
  691. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_ai_policy.py +0 -0
  692. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_alert_rules.py +0 -0
  693. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_alert_sinks.py +0 -0
  694. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_alert_state.py +0 -0
  695. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_alerts_edit.py +0 -0
  696. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_alerts_rules_api.py +0 -0
  697. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_anon_core.py +0 -0
  698. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_anon_integration.py +0 -0
  699. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_anon_parity.py +0 -0
  700. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_api.py +0 -0
  701. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_api_alerts.py +0 -0
  702. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_api_auth.py +0 -0
  703. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_api_reload.py +0 -0
  704. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_api_tls.py +0 -0
  705. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_approvals.py +0 -0
  706. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_asvs_phase0.py +0 -0
  707. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_audit_integrity.py +0 -0
  708. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_audit_offbox_tee.py +0 -0
  709. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_auth_core.py +0 -0
  710. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_auth_entry_hardening.py +0 -0
  711. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_auth_hardening.py +0 -0
  712. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_auth_service.py +0 -0
  713. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_auth_session_lifecycle.py +0 -0
  714. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_auth_store.py +0 -0
  715. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_backup_crypto.py +0 -0
  716. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_backup_restore_atleastonce.py +0 -0
  717. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_backup_runner.py +0 -0
  718. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_binary_carriage.py +0 -0
  719. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_bootstrap_admin_perms.py +0 -0
  720. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_builtin_hl7_parity.py +0 -0
  721. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_cert_expiry.py +0 -0
  722. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_channel_rbac.py +0 -0
  723. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_checks.py +0 -0
  724. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_checks_lint.py +0 -0
  725. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_cli.py +0 -0
  726. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_cli_offline_resolution.py +0 -0
  727. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_cluster.py +0 -0
  728. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_cluster_failover_postgres.py +0 -0
  729. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_cluster_failover_sqlserver.py +0 -0
  730. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_cluster_graph_gating.py +0 -0
  731. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_cluster_lease.py +0 -0
  732. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_code_sets.py +0 -0
  733. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_codeset_edit.py +0 -0
  734. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_config_anchoring.py +0 -0
  735. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_config_fingerprint.py +0 -0
  736. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_config_source_trust.py +0 -0
  737. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_connection_api.py +0 -0
  738. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_connection_event_api.py +0 -0
  739. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_connection_event_emit.py +0 -0
  740. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_connection_event_outbound.py +0 -0
  741. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_connection_event_scope.py +0 -0
  742. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_connection_event_store.py +0 -0
  743. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_connection_resilience.py +0 -0
  744. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_connections_cli.py +0 -0
  745. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_connections_file.py +0 -0
  746. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_consistency.py +0 -0
  747. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_console_alerts.py +0 -0
  748. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_console_auth.py +0 -0
  749. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_console_client.py +0 -0
  750. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_console_dead_letters.py +0 -0
  751. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_console_event_log.py +0 -0
  752. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_console_hardening.py +0 -0
  753. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_console_icon.py +0 -0
  754. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_console_password.py +0 -0
  755. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_console_sessions.py +0 -0
  756. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_console_shards.py +0 -0
  757. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_console_status.py +0 -0
  758. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_console_step_up.py +0 -0
  759. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_console_theme.py +0 -0
  760. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_console_users.py +0 -0
  761. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_console_widgets.py +0 -0
  762. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_content_search.py +0 -0
  763. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_custom_roles.py +0 -0
  764. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_database_connector_integration.py +0 -0
  765. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_database_transport.py +0 -0
  766. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_db_lookup.py +0 -0
  767. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_db_lookup_live_runner.py +0 -0
  768. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_delivery_settings.py +0 -0
  769. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_dependabot_automerge_guardrails.py +0 -0
  770. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_dependency_boundaries.py +0 -0
  771. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_dicom_codec.py +0 -0
  772. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_dicom_scp.py +0 -0
  773. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_dicom_scp_security.py +0 -0
  774. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_dicom_scu.py +0 -0
  775. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_dicom_wiring.py +0 -0
  776. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_dicomweb.py +0 -0
  777. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_docs_runbooks.py +0 -0
  778. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_dr_activation.py +0 -0
  779. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_dr_api_status.py +0 -0
  780. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_dr_failback.py +0 -0
  781. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_dr_rbac.py +0 -0
  782. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_dr_run_profile.py +0 -0
  783. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_dr_seeding.py +0 -0
  784. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_dryrun.py +0 -0
  785. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_dual_control_reload.py +0 -0
  786. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_ed_documents.py +0 -0
  787. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_ed_documents_e2e.py +0 -0
  788. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_egress_allowlist.py +0 -0
  789. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_email_destination.py +0 -0
  790. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_embedded_document_pruning.py +0 -0
  791. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_environments.py +0 -0
  792. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_fhir_lookup.py +0 -0
  793. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_fhir_parsing.py +0 -0
  794. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_fhir_resource.py +0 -0
  795. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_fhir_transport.py +0 -0
  796. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_field_authz.py +0 -0
  797. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_field_authz_metadata.py +0 -0
  798. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_frozen_launch_smoke.py +0 -0
  799. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_generate_cli.py +0 -0
  800. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_generated_adt.py +0 -0
  801. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_generators_core.py +0 -0
  802. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_generators_types.py +0 -0
  803. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_group_commit.py +0 -0
  804. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_groups.py +0 -0
  805. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_harness.py +0 -0
  806. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_harness_compose.py +0 -0
  807. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_harness_config.py +0 -0
  808. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_harness_faults.py +0 -0
  809. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_harness_file.py +0 -0
  810. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_harness_monitor.py +0 -0
  811. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_harness_scenarios.py +0 -0
  812. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_hl7_core_features.py +0 -0
  813. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_hl7schema.py +0 -0
  814. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_inbound_bind.py +0 -0
  815. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_inbound_http_source.py +0 -0
  816. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_ingest_time.py +0 -0
  817. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_keyprovider.py +0 -0
  818. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_last_admin_guard.py +0 -0
  819. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_last_resort.py +0 -0
  820. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_leader_tasks.py +0 -0
  821. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_license_notice.py +0 -0
  822. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_listener_tls_exposure.py +0 -0
  823. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_load_corpus.py +0 -0
  824. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_load_failover_postgres.py +0 -0
  825. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_load_failover_sqlserver.py +0 -0
  826. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_load_failover_unit.py +0 -0
  827. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_load_metrics.py +0 -0
  828. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_load_profile.py +0 -0
  829. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_load_runner.py +0 -0
  830. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_load_sender.py +0 -0
  831. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_load_sink.py +0 -0
  832. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_logging.py +0 -0
  833. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_message.py +0 -0
  834. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_message_split.py +0 -0
  835. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_message_timestamps.py +0 -0
  836. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_metrics_exporter.py +0 -0
  837. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_mfa.py +0 -0
  838. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_mllp_encoding_override.py +0 -0
  839. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_mllp_tls.py +0 -0
  840. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_nonhl7_ingress_size_cap.py +0 -0
  841. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_operability_config.py +0 -0
  842. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_outbound_signing.py +0 -0
  843. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_outbound_simulate.py +0 -0
  844. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_packaging.py +0 -0
  845. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_parse_tree.py +0 -0
  846. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_parsing.py +0 -0
  847. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_passthrough.py +0 -0
  848. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_passthrough_graph.py +0 -0
  849. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_payload_agnostic_ingress.py +0 -0
  850. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_per_connection_retention.py +0 -0
  851. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_pool_warm.py +0 -0
  852. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_postgres_store.py +0 -0
  853. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_priority_resolution.py +0 -0
  854. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_reconcile_capture.py +0 -0
  855. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_reconcile_compare.py +0 -0
  856. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_reconcile_harness.py +0 -0
  857. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_redaction.py +0 -0
  858. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_reference_sets.py +0 -0
  859. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_reingress.py +0 -0
  860. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_release_console_installer.py +0 -0
  861. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_remotefile_transport.py +0 -0
  862. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_response_capture.py +0 -0
  863. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_rest_transport.py +0 -0
  864. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_restore_verify.py +0 -0
  865. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_retention.py +0 -0
  866. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_run_context.py +0 -0
  867. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_scaffold.py +0 -0
  868. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_scaffold_requirements.py +0 -0
  869. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_scan_forbidden.py +0 -0
  870. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_secrets_dpapi.py +0 -0
  871. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_security_notify.py +0 -0
  872. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_security_static.py +0 -0
  873. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_service_control.py +0 -0
  874. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_sibling_helper_finder.py +0 -0
  875. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_smart_backend.py +0 -0
  876. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_soap_transport.py +0 -0
  877. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_soap_wssecurity.py +0 -0
  878. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_sqlserver_coordinator.py +0 -0
  879. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_sqlserver_store.py +0 -0
  880. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_startup_attestation.py +0 -0
  881. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_startup_fault_isolation.py +0 -0
  882. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_stats_reset.py +0 -0
  883. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_step_up.py +0 -0
  884. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_store.py +0 -0
  885. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_store_backend.py +0 -0
  886. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_store_encryption.py +0 -0
  887. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_store_file_hardening.py +0 -0
  888. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_store_once_deliver_many.py +0 -0
  889. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_store_once_graph.py +0 -0
  890. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_store_read_pool.py +0 -0
  891. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_store_ssl.py +0 -0
  892. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_summary.py +0 -0
  893. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_supervisor.py +0 -0
  894. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_support_bundle.py +0 -0
  895. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_task_resilience.py +0 -0
  896. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_tcp_transport.py +0 -0
  897. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_tee_cli.py +0 -0
  898. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_tee_compare.py +0 -0
  899. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_tee_correlate.py +0 -0
  900. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_tee_hl7_fields.py +0 -0
  901. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_tee_mefor_api.py +0 -0
  902. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_tee_mllp.py +0 -0
  903. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_tee_relay.py +0 -0
  904. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_tee_report.py +0 -0
  905. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_tee_store.py +0 -0
  906. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_timer_source.py +0 -0
  907. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_timezone.py +0 -0
  908. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_tls_policy.py +0 -0
  909. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_totp.py +0 -0
  910. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_totp_window.py +0 -0
  911. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_transform_offloop.py +0 -0
  912. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_transform_state.py +0 -0
  913. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_transports.py +0 -0
  914. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_update_check.py +0 -0
  915. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_verify.py +0 -0
  916. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_version.py +0 -0
  917. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_win2025_acceptance.py +0 -0
  918. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_wiring.py +0 -0
  919. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_wiring_engine.py +0 -0
  920. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_wiring_reload.py +0 -0
  921. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_wiring_serve.py +0 -0
  922. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_ws_stats_revalidation.py +0 -0
  923. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_x12_parsing.py +0 -0
  924. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_x12_rte.py +0 -0
  925. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_x12_source_ip_allowlist.py +0 -0
  926. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_x12_transport.py +0 -0
  927. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_x12_validate.py +0 -0
  928. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_xml_message.py +0 -0
  929. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/tests/test_xml_schema_signature.py +0 -0
  930. {messagefoundry-0.2.11 → messagefoundry-0.2.13}/uv.lock +0 -0
@@ -84,7 +84,7 @@ jobs:
84
84
  MEFOR_STORE_DATABASE: messagefoundry
85
85
  MEFOR_STORE_USERNAME: postgres
86
86
  MEFOR_STORE_PASSWORD: mefor
87
- MEFOR_STORE_POOL_SIZE: "5"
87
+ MEFOR_STORE_POOL_SIZE: "40" # track the shipped default (ADR 0062: 5 -> 40)
88
88
  MEFOR_STORE_ENCRYPT: "false" # plaintext to the container; the TLS-hardening guard needs the escape
89
89
  MEFOR_ALLOW_INSECURE_TLS: "1"
90
90
  steps:
@@ -151,7 +151,7 @@ jobs:
151
151
  MEFOR_STORE_AUTH: sql
152
152
  MEFOR_STORE_USERNAME: sa
153
153
  MEFOR_STORE_PASSWORD: "Str0ng_P@ssw0rd!"
154
- MEFOR_STORE_POOL_SIZE: "5"
154
+ MEFOR_STORE_POOL_SIZE: "40" # track the shipped default (ADR 0062: 5 -> 40)
155
155
  MEFOR_STORE_TRUST_SERVER_CERTIFICATE: "true"
156
156
  MEFOR_ALLOW_INSECURE_TLS: "1"
157
157
  steps:
@@ -431,6 +431,33 @@ jobs:
431
431
  MEFOR_ALLOW_INSECURE_TLS: "1"
432
432
  run: pytest tests/test_load_failover_sqlserver.py -v
433
433
 
434
+ - name: Run the throughput-lever backend invariants on real SQL Server (B1 inline, B2 batch-claim, ...)
435
+ env:
436
+ MEFOR_TEST_SQLSERVER: "1"
437
+ MEFOR_STORE_BACKEND: sqlserver
438
+ MEFOR_STORE_SERVER: localhost
439
+ MEFOR_STORE_PORT: "1433"
440
+ MEFOR_STORE_DATABASE: MessageFoundry
441
+ MEFOR_STORE_AUTH: sql
442
+ MEFOR_STORE_USERNAME: sa
443
+ MEFOR_STORE_PASSWORD: "Str0ng_P@ssw0rd!"
444
+ MEFOR_STORE_TRUST_SERVER_CERTIFICATE: "true"
445
+ MEFOR_ALLOW_INSECURE_TLS: "1"
446
+ # The staged-pipeline throughput levers (ADR 0057 inline fast-path, ADR 0058 batch-claim, ...) carry
447
+ # reliability-core invariant tests — crash-replay, poison-bound, and the per-lane-FIFO locked-head-
448
+ # BLOCKS (#285) gate — that are MEFOR_TEST_SQLSERVER-gated but live in their OWN files, so the named
449
+ # suites above never picked them up and they ran only on SQLite. Run them here against the real
450
+ # backend. APPEND each new lever's test file per docs/throughput-build-plan.md.
451
+ run: >-
452
+ pytest -v
453
+ tests/test_inline_fast_path.py
454
+ tests/test_batch_claim_fifo.py
455
+ tests/test_batch_claim_worker.py
456
+ tests/test_batch_claim_locking.py
457
+ tests/test_seq_only_fifo.py
458
+ tests/test_fifo_index_migration.py
459
+ tests/test_per_lane_wake.py
460
+
434
461
  # Postgres store backend (Track B): run the gated store suite against a real PostgreSQL service
435
462
  # container (Linux, so 1x minutes). Skipped on PRs like the other server-DB job to save spend; runs
436
463
  # on push to main and on-demand (workflow_dispatch — use `gh workflow run ci.yml --ref <branch>` to
@@ -504,6 +531,53 @@ jobs:
504
531
  MEFOR_ALLOW_INSECURE_TLS: "1"
505
532
  run: pytest tests/test_load_failover_postgres.py -v
506
533
 
534
+ - name: Run the throughput-lever backend invariants on real Postgres (B1 inline, B2 batch-claim, ...)
535
+ env:
536
+ MEFOR_TEST_POSTGRES: "1"
537
+ MEFOR_STORE_BACKEND: postgres
538
+ MEFOR_STORE_SERVER: localhost
539
+ MEFOR_STORE_PORT: "5432"
540
+ MEFOR_STORE_DATABASE: messagefoundry
541
+ MEFOR_STORE_USERNAME: postgres
542
+ MEFOR_STORE_PASSWORD: mefor
543
+ MEFOR_STORE_ENCRYPT: "false"
544
+ MEFOR_ALLOW_INSECURE_TLS: "1"
545
+ # The throughput levers' MEFOR_TEST_POSTGRES-gated invariants (esp. the FOR-UPDATE no-SKIP-LOCKED
546
+ # locked-head-BLOCKS twin of #285, and the batch FIFO/crash tests) live in their own files. APPEND
547
+ # each new lever's test file per docs/throughput-build-plan.md.
548
+ run: >-
549
+ pytest -v
550
+ tests/test_inline_fast_path.py
551
+ tests/test_batch_claim_fifo.py
552
+ tests/test_batch_claim_worker.py
553
+ tests/test_batch_claim_locking.py
554
+ tests/test_seq_only_fifo.py
555
+ tests/test_fifo_index_migration.py
556
+ tests/test_per_lane_wake.py
557
+
558
+ - name: Run the connection-scale pool-wait smoke on real Postgres (B11 wall #2, tiny pool)
559
+ env:
560
+ MEFOR_TEST_POSTGRES: "1"
561
+ MEFOR_STORE_BACKEND: postgres
562
+ MEFOR_STORE_SERVER: localhost
563
+ MEFOR_STORE_PORT: "5432"
564
+ MEFOR_STORE_DATABASE: messagefoundry
565
+ MEFOR_STORE_USERNAME: postgres
566
+ MEFOR_STORE_PASSWORD: mefor
567
+ MEFOR_STORE_ENCRYPT: "false"
568
+ MEFOR_ALLOW_INSECURE_TLS: "1"
569
+ # FORCE a below-default pool (4 connections) so the perf_counter-measured acquire-WAIT
570
+ # histogram (the PRIMARY pool-wait signal) is non-trivial even at small N: ~3N inbound workers
571
+ # contend for 4 connections, so acquires actually queue and the percentiles populate. The
572
+ # default pool (40) would mask the wall. 4 (not 1-2) is deliberate: GET /status runs
573
+ # db_status()'s four sequential COUNT(*) queries on every poll, and an extremely tiny pool
574
+ # starves those acquires past the poller's HTTP timeout under the empty-claim herd on a slow
575
+ # runner — every poll then fails and the drain loops burn the test budget (the PR #675 hang).
576
+ # This still gives the B11 pool-wait instrumentation real regression coverage SQLite (no pool)
577
+ # cannot — the connscale harness OWNS the engine subprocess and inherits this env.
578
+ MEFOR_STORE_POOL_SIZE: "4"
579
+ run: pytest tests/test_connscale_postgres.py -v
580
+
507
581
  # Headless load test (Track B / throughput): serve the synthetic high-fan-out load config (auth
508
582
  # off, small fan-out) and drive the smoke profile through the real `python -m harness --load` CLI,
509
583
  # asserting zero message loss + all SLOs (exit 0) and uploading the JSON/CSV report. Skipped on PRs
@@ -347,7 +347,11 @@ jobs:
347
347
  MEFOR_FROZEN_CONSOLE_DIR: dist/messagefoundry-console
348
348
  QT_QPA_PLATFORM: offscreen
349
349
  run: |
350
- pip install pytest
350
+ # pytest-timeout is required: the repo's pyproject `addopts` sets `--timeout=60
351
+ # --timeout-method=thread`, so a bare `pip install pytest` aborts the run with
352
+ # "unrecognized arguments: --timeout" before the smoke ever executes (it leaves the per-test
353
+ # watchdog intact instead of stripping addopts).
354
+ pip install pytest pytest-timeout
351
355
  python -m pytest tests/test_frozen_launch_smoke.py -v -p no:cacheprovider
352
356
 
353
357
  - name: Install Inno Setup (pinned)
@@ -80,6 +80,10 @@ TRANSCRIPTS.md
80
80
  # Still usable by name (they sit in PROFILES_DIR) and copy-on to the test box.
81
81
  /harness/load/profiles/hospital-baseline.toml
82
82
  /harness/load/profiles/soak-12h.toml
83
+ # Deep-research survey of alternative OSS DB backends for the shared-DB commit-wall — local working
84
+ # note, not a committed artifact (the conclusion is carried in the throughput ADRs / AI memory).
85
+ /docs/research/db-commit-wall-backend-survey.md
86
+
83
87
  # --- MessageFoundry ---
84
88
  .mefor/
85
89
  *.db*
@@ -6,6 +6,103 @@ All notable changes to MessageFoundry are documented here. The format follows
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.2.13] — 2026-07-01 — Early Access
10
+
11
+ The **store connection-scale sizing** wave — right-size the server-DB connection pool to the measured
12
+ inverted-U optimum, guard against over-provisioning, and guarantee the message store stays unified. All
13
+ changes are **server-DB-only**; the single-node SQLite default is unaffected.
14
+
15
+ ### Added
16
+ - **Soft store-pool over-provisioning warning** ([ADR 0062](docs/adr/0062-default-store-pool-size.md)) — a
17
+ server-DB engine now logs an advisory `WARNING` at graph start if `[store].pool_size` is sized past the
18
+ connection-pool inverted-U optimum: at/beyond the ~80 catastrophic cliff, or oversized for the engine's
19
+ inbound-interface count (`~2.5 ×` interfaces). Advisory only — it never blocks startup; SQLite has no pool
20
+ so it is skipped, and the default (40) never trips it. Guards the "set a huge pool for 1500 connections"
21
+ footgun (which is a *sharding* problem, not a pool one).
22
+
23
+ ### Changed
24
+ - **Default server-DB store connection pool size raised 5 → 40** ([`[store].pool_size`](docs/CONFIGURATION.md),
25
+ env `MEFOR_STORE_POOL_SIZE`; [ADR 0062](docs/adr/0062-default-store-pool-size.md)). A three-sweep
26
+ connection-scale study found the pool is an **inverted-U**: it helps up to ~40 per engine, and
27
+ **over-provisioning is catastrophic** — past ~40 the extra connections thrash one shared SQL instance
28
+ (WRITELOG serialization + per-message finalizer applocks), and ACK latency explodes 30–90×. 40 is the
29
+ measured optimum — **do not set it higher to chase connection count.** **Server-DB backends only** (Postgres
30
+ / SQL Server) — the default **single-node SQLite** backend is unaffected (fixed read pool + single writer;
31
+ never reads `pool_size`). **Existing explicit `[store].pool_size` / `MEFOR_STORE_POOL_SIZE` values are
32
+ unchanged** — only the unset default moves. Behavioral deltas on server-DB engines: ~**8×** the steady-state
33
+ DB sessions per engine, and the startup pool pre-warm rises from ~2 to **~20 connections per engine**
34
+ (bounded by `warm_pool_timeout`, off the intake path, self-releasing, never raises). **Connection-budget
35
+ caution:** `pool_size` is **per engine**, so on a shared server DB `engines × pool_size` all count against
36
+ one `max_connections` (Postgres default ~100 → ~2 engines at 40) — raise `max_connections`, front the DB
37
+ with a pooler (PgBouncer), or use SQL Server; or size `pool_size` down. **Never split the store** to fit the
38
+ budget ([ADR 0063](docs/adr/0063-no-split-store-unified-store-for-sharding.md)). See
39
+ [`docs/DEPLOY-SERVER-DB.md`](docs/DEPLOY-SERVER-DB.md) §3.
40
+ - **No split data store: multi-shard engine sharding now requires a server DB** ([ADR 0063](docs/adr/0063-no-split-store-unified-store-for-sharding.md),
41
+ amends [ADR 0037](docs/adr/0037-multi-process-sharding-l3.md)). `messagefoundry supervise` with **more than
42
+ one shard** on a **SQLite** store is now **refused at startup** — the old SQLite-file-per-shard behavior
43
+ split the message store into one database per shard, fragmenting search/reporting/audit/replay. A sharded
44
+ deployment must share **one unified store**, so `>1` shard requires `[store].backend = 'postgres'` or
45
+ `'sqlserver'` (every shard connects to the same database). **A single un-sharded engine on SQLite is
46
+ unaffected** (byte-identical to `serve`). Migrating an existing SQLite-sharded deployment: drain each shard
47
+ store to empty, then re-point `supervise` at one server DB (not an offline store merge).
48
+
49
+ ## [0.2.12] — 2026-07-01 — Early Access
50
+
51
+ The **throughput & connection-scale wave.** The staged-queue per-message commit chain is shortened
52
+ (opt-in inline fast-path + batch-claim, plus a result-preserving seq-only FIFO ordering that drops a
53
+ per-handoff round-trip); a connection-scale measurement harness + read-only engine instrumentation lands;
54
+ **per-lane wake events** (opt-in) eliminate the thundering-herd empty-claim storm that dominates at high
55
+ connection counts; and ADR 0059's seq-only FIFO index re-key now reaches **upgraded** databases via a
56
+ one-time on-open migration. All new *runtime* behavior is opt-in / off-by-default unless noted — the
57
+ seq-only ordering (B3) and the index migration (B10) are result-preserving.
58
+
59
+ ### Added
60
+ - **Inline Step-A fast-path** ([ADR 0057](docs/adr/0057-inline-step-a-fast-path.md)) — **opt-in per
61
+ inbound via `inline`**: for the pure all-deliver message (no filter/state/pass-through), fuse
62
+ route+transform+handoff into **one committed transaction**, cutting the per-message commit depth from 7
63
+ to 5 durable round-trips. Off by default → byte-identical to the split path; ineligible messages fall
64
+ back automatically.
65
+ - **Batch-claim** (#671, [ADR 0058](docs/adr/0058-batch-claim-fifo-prefix.md)) — **opt-in via
66
+ `[store].fifo_claim_batch`** (>1): the INGRESS/ROUTED FIFO claim takes the contiguous due head-prefix in
67
+ one commit instead of one row per commit, processed in strict FIFO order. Default `1` = off
68
+ (byte-identical); preserves per-lane FIFO (#285) and at-least-once.
69
+ - **Per-lane wake events** (#678, [ADR 0061](docs/adr/0061-per-lane-wake-events.md)) — **opt-in via
70
+ `[pipeline].per_lane_wake`**: a committed message wakes **only its own `(stage, lane)` worker** instead
71
+ of every worker of that stage, eliminating the thundering-herd empty-claim storm at high **connection**
72
+ counts (~1,500 inbounds). Default off + byte-identical; the FIFO claim and the lost-wakeup poll backstop
73
+ are unchanged (a missed wake self-heals). Env override `MEFOR_PIPELINE_PER_LANE_WAKE` for the harness A/B.
74
+ - **Connection-scale measurement harness + read-only engine instrumentation** (#675) — a headless harness
75
+ that spins N inbound connections at a low per-connection rate and reads the connection-scale walls
76
+ (executor saturation, server-store pool wait, idle-poll storm, FD/socket count, config-reload + ACK
77
+ latency) vs connection count. The supporting engine instrumentation is **additive + read-only**, surfaced
78
+ via `/stats` + `/status`: empty-claim counters split into idle-poll vs per-commit wake-fanout, and (on a
79
+ server store) connection-pool acquire-wait percentiles + size/idle occupancy. Counters default to 0 /
80
+ `None` — byte-identical when unused.
81
+
82
+ ### Changed
83
+ - **Seq-only per-lane FIFO ordering** (#673, [ADR 0059](docs/adr/0059-seq-only-fifo-ordering.md)) — the
84
+ per-lane FIFO claim now orders by the DB-assigned `seq` (rowid on SQLite) **alone** instead of
85
+ `(created_at, seq)`, and the per-insert `SELECT MAX(created_at)` clamp is removed from **every stage
86
+ handoff** (one fewer round-trip per produced row). **Result-preserving** (proven order-isomorphic to the
87
+ prior clamped ordering) and strictly more robust under clock skew / failover (`seq` has no wall-clock
88
+ dependence). `created_at` stays a real ingest-time/metrics timestamp — it is simply no longer an ordering
89
+ key. The FIFO covering indexes re-key to trail in `seq` (see the migration below).
90
+ - **Rename-based FIFO covering-index migration** (#676, [ADR 0060](docs/adr/0060-rename-based-fifo-index-migration.md)) —
91
+ ADR 0059 re-keyed the per-lane FIFO indexes to trail in `seq` for the seq-only claim, but kept their names
92
+ under `IF NOT EXISTS` guards, so **only fresh databases** adopted the new index — an upgraded DB silently
93
+ kept its old `created_at`-trailing index and never got ADR 0059's throughput win. The seq-trailing indexes
94
+ are now named `ix_queue_fifo_in_seq` / `ix_queue_fifo_out_seq`, and a one-time, idempotent **on-open
95
+ migration drops the old-named index and builds the new one** on all three backends, so upgraded databases
96
+ adopt it. Correctness is unchanged (the claim orders by `seq`/`rowid` and names no index, so the migration
97
+ only restores speed). Operational notes: the first open after upgrade pays a **one-time index rebuild** on
98
+ the `queue` table (SQLite/Postgres blocking, SQL Server offline — bounded by live queue depth, at cold start
99
+ before serving); on a very large SQLite queue a *concurrent* second opener may hit a transient, non-corrupting
100
+ open failure during the rebuild; the shared-DB backends (SQL Server / Postgres) should upgrade **stop-the-world
101
+ / under a drain window** (a mixed-version fleet or a live rejoin can re-create or contend on the index); a
102
+ downgrade re-creates the old-named index (drop `ix_queue_fifo_in/out` manually if downgrading permanently).
103
+ - **`/status` DB observability** — the SQLite journal mode and `synchronous` durability setting are now
104
+ surfaced in the DB status (`synchronous=NORMAL` remains the crash-safe-under-WAL default).
105
+
9
106
  ## [0.2.11] — 2026-06-29 — Early Access
10
107
 
11
108
  The **Plan-6 disaster-recovery + cloud/HA wave** — turnkey DR backup/restore-verify and a third-tier DR
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: messagefoundry
3
- Version: 0.2.11
3
+ Version: 0.2.13
4
4
  Summary: Open-source healthcare integration engine — route, transform, and validate messages across many formats and connection types
5
5
  Project-URL: Homepage, https://messagefoundry.org/
6
6
  Project-URL: Documentation, https://messagefoundry.org/
@@ -49,7 +49,7 @@ x-ha-engine-env: &ha-engine-env
49
49
  MEFOR_STORE_PORT: "5432"
50
50
  MEFOR_STORE_DATABASE: "messagefoundry"
51
51
  MEFOR_STORE_USERNAME: "mefor"
52
- MEFOR_STORE_POOL_SIZE: "5" # >= 2 required under [cluster]; >= 3 recommended
52
+ MEFOR_STORE_POOL_SIZE: "40" # default (ADR 0062); >= 2 required under [cluster]
53
53
  MEFOR_CLUSTER_ENABLED: "true"
54
54
  # DEV-ONLY: the local Postgres has no CA-trusted cert, so verification can't succeed here. This
55
55
  # disables TLS verification across ALL transports — it is a CI/lab switch and must NEVER be set in
@@ -114,6 +114,7 @@ protects the minimal-dep, on-prem, code-first identity.
114
114
  | **ASVS 4.1.5 per-message signing** | Med | **done** | — | #378 merged (`9c00b88`). Prune the stale `asvs-415-msg-signing` worktree. |
115
115
  | **#74 host CPU/mem metrics** | Med | **do-next** | S | Promoted from the #52 gap synthesis (2026-06-28) — the one zero-identity-tension additive win: host CPU/mem (psutil) on the metrics surface beside the #50 disk meter. Adds `psutil` (vet + re-lock). SQL-internals sub-scope demand-gated. |
116
116
  | **Publish the VS Code extension (Marketplace + Open VSX)** | Med | do-next | M | Publish the `ide/` extension to the **VS Code Marketplace** + **Open VSX** (`.vsix` via `vsce`/`ovsx`) so users install it instead of F5-from-source; add a CI publish leg + publisher accounts. **Owner: do soon, AFTER the planned IDE-focused improvements land** (not now — recorded 2026-06-26). Not a PyPI artifact (different ecosystem). |
117
+ | **#95 engine-brokered AI assist** | Low | on-trigger | L | BYO already covers "use our existing AI subscription" (Copilot/Claude via `vscode.lm`, or an in-house model surfaced through VS Code) with **zero** engine work; this is the documented P1/P2 broker — engine-centralized, **per-use-audited** egress to a customer's managed subscription or self-hosted/in-house endpoint, wiring in the reserved `[ai]` `endpoint`/`provider`/`model` keys. ADR-first. **Trigger:** a customer wants engine-brokered AI to their own instance, or we have bandwidth. |
117
118
 
118
119
  **Top strategic calls** *(2026-06-19; updated 2026-06-28)*:
119
120
  1. ✅ **v0.2 locked and shipped** through `0.2.10` (#28/#29 evidence published; #22b shipped). The release-close move is done.
@@ -425,6 +426,14 @@ client. "Moderate risk"; not verifiable in offscreen Qt tests, so it deserves a
425
426
  **FIFO per outbound connection** (simple, safe). Per-key ordering is the leading-edge refinement to
426
427
  revisit once FIFO is solid and a real workload needs the parallelism.
427
428
 
429
+ **Naming (locked 2026-06-30):** the canonical vocabulary for this concept is **sequence key** (the
430
+ per-message partition value — ADT = `facility + MRN`; same key → same lane → FIFO preserved,
431
+ different keys → parallel), **sequence group** (the set of messages sharing a sequence key), and
432
+ **sequence-keyed lanes** / **sequence sharding** (the mechanism). The older terms used elsewhere in
433
+ this item — `partition_key` (config setting) and "order-group sharding" — refer to the same thing.
434
+ "Order-group" was retired because "order" collides with clinical orders (CPOE/ORM); "partition key"
435
+ was retired because "partition" is reserved for the planned store-sharding-by-channel axis.
436
+
428
437
  **What:** preserve order only *within* a partition key (e.g. MRN / encounter / sending facility)
429
438
  while processing *across* keys in parallel — the sweet spot between strict per-connection FIFO (safe,
430
439
  serial) and unordered parallelism (fast, unsafe). Same idiom as a broker partition key. Recent
@@ -3062,11 +3071,11 @@ parity analysis.
3062
3071
 
3063
3072
  **Cluster:** Minor gaps. **Priority:** P3. **Verdict:** demand-gate.
3064
3073
 
3065
- **Scope:** Per-connection send pacing, verify the reply's MSA-2 == the sent MSH-10, and keep-alive / persistent-reconnect on MLLP/TCP outbounds.
3074
+ **Scope:** Per-connection send pacing and verify the reply's MSA-2 == the sent MSH-10. *(Keep-alive / persistent-reconnect on MLLP/TCP outbounds was promoted out to its own tracked item — see [#97](#97-keep-alive--persistent-outbound-connections--per-connector-setting-p3-on-trigger).)*
3066
3075
 
3067
- **Trigger:** build when a partner needs paced sending, strict response-correlation, or a persistent connection.
3076
+ **Trigger:** build when a partner needs paced sending or strict response-correlation.
3068
3077
 
3069
- **Why:** All confirmed (no pacing/keepalive; `MLLPDestination._check_ack` reads MSA-1/MSA-3 only, never matches MSA-2↔MSH-10; `mllp.py` notes persistent/pooled "can come later"). Cheap per-connection-override additions; bundle on real partner need.
3078
+ **Why:** Both confirmed (no pacing; `MLLPDestination._check_ack` reads MSA-1/MSA-3 only, never matches MSA-2↔MSH-10). Cheap per-connection-override additions; bundle on real partner need. Keep-alive is tracked separately at #97.
3070
3079
 
3071
3080
  **Source:** promoted from [#52](#52-corepoint-capability-parity-gaps--prioritized-roadmap-input-2026-06-27) gap synthesis (adversarially reviewed, 2026-06-28).
3072
3081
 
@@ -3324,6 +3333,315 @@ deep-dive + console-medium evaluation (2026-06-29).
3324
3333
 
3325
3334
  ---
3326
3335
 
3336
+ ## 93. Engine + database performance monitoring — engine-wide volume/connection KPI roll-up + a throughput-overload (saturation) alert (P2)
3337
+
3338
+ **Type:** feature — observability + alerting. A **connective** item: most of the operator-facing monitoring
3339
+ surface this asks for is **already tracked** (and partly shipped) under sibling items — this entry exists to name
3340
+ the two genuine **net-new** slivers none of them owns and to cross-link the rest, not to re-pitch built work.
3341
+
3342
+ **Already tracked / shipped (don't duplicate).** The request — "display total message volume + connection count;
3343
+ monitor everything that affects throughput; alert when the system is becoming overloaded" — is largely covered:
3344
+ - **#21 (DONE, PR #407)** — the Prometheus `/metrics` exporter (+ optional OpenTelemetry): per-connection
3345
+ received / delivered / errored / `queue_depth` counters + a `delivery_latency_seconds` histogram (p50/p95/p99).
3346
+ A scraping team gets per-connection throughput/latency and can `rate()`/`sum()` it in Grafana today.
3347
+ - **#56 (SHIPPED 0.2.10, ADR 0044)** — resolvable alert-state: the `alert_instance` table, `GET /alerts/active` +
3348
+ ack/resolve, and the real `ConnectionRow.alerts_active` count (no longer the stubbed `0`).
3349
+ - **#74 (do-next)** — host CPU / memory via `psutil` on the metrics surface.
3350
+ - **#75 (scheduled)** — the zero-install **browser ops dashboard**: live per-connection **In/Out msgs/sec** over
3351
+ `/ws/stats`, Queued / Errors / Last-Activity. The natural home for a live throughput view.
3352
+ - **#76 (demand-gate)** — historical-metrics charting + a status-colored data-flow graph.
3353
+ - **#81 (demand-gate)** — alert escalation tiers + day/time thresholds + content (Action-Point) alerting on top of #56.
3354
+ - **#64 (measure-gated)** — the throughput-*performance* roadmap (group-commit, DB durable-write IOPS as the
3355
+ leading driver). That item makes the engine *faster*; this item *warns* when load approaches capacity — they pair.
3356
+ - **#50 (P3)** — app-log disk metering + a message-stall rule. **#28/#29** — the load/throughput runs that set the baseline.
3357
+
3358
+ **Net-new gap (what no sibling owns):**
3359
+ 1. **An engine-wide aggregate KPI headline.** Every count above is **per-connection** (#21) or a live per-connection
3360
+ rate (#75); nothing rolls them up into the operator's literal ask — a single **total messages through the engine**
3361
+ figure, a **combined inbound + outbound connection count** (with running / stopped breakdown), and an **engine-wide
3362
+ msg/s rate** — surfaced as first-class top-line KPIs on `/status` (or a sibling route), the console Engine Status
3363
+ page, and the #75 dashboard. Reuse the existing `recent_done` rate window that already powers `backlog_seconds`
3364
+ — don't add a second sampler. Small; mostly rides #75.
3365
+ 2. **A throughput-overload / saturation alert.** Every shipped alert (the **#5** framework, **#56** state, **#81**
3366
+ escalation) keys on an **absolute** per-connection/per-resource snapshot — depth/oldest-age ceilings — so a bursty-
3367
+ but-draining lane and a genuinely-overloaded engine look identical until the ceiling trips. Nothing fires on the
3368
+ *derivative*: a **rising** `backlog_seconds`, a **growing** `in_pipeline`, or **ingest rate exceeding drain rate**
3369
+ over a sampling window = "the system is *becoming* overloaded." Add a new ADR 0014 alert event keyed on that
3370
+ comparison (new `AlertSink` event + emit site + `AlertRule` dimension + a small per-lane / engine-wide rate
3371
+ history), bounded by the existing `realert_seconds` throttle and routed through the same notifier/rules path. It is
3372
+ distinct from #81 (a policy layer *on top of* existing alerts, not a new detector) and from #64 (performance tuning,
3373
+ not operational alerting). ADR 0014 already declined timed multi-stage escalation; this adds a rate/saturation
3374
+ **dimension**, which wants that scope decision settled first.
3375
+
3376
+ **Database performance monitoring.** Surface the throughput-affecting **DB** signals — write/commit latency and
3377
+ connection-pool busy/wait/saturation (the pipeline is commit-bound; `[store].pool_size` exists but emits no
3378
+ saturation metric) and router/transform-worker lag — as **metrics first** (extend `/metrics` + `db_status()`), then
3379
+ optionally as overload-alert inputs. `storage_threshold` today alerts only on DB **file size** vs
3380
+ `[retention].max_db_mb`, not commit/pool health. **SQL-internal** DB metrics stay **DBA-delegated / demand-gated**
3381
+ (parity with #74's SQL-internal sub-scope and the DB-tier-HA decline).
3382
+
3383
+ **Why P2 / on-trigger.** #21 + the scheduled #74/#75 already answer the "where's the dashboard?" ask cheaply; the
3384
+ net-new is the small aggregate KPI roll-up (rides #75) + the overload/saturation alert, which is genuine new engine
3385
+ work and matters most once a real high-volume estate exists to overload. **Trigger:** a pilot/production estate
3386
+ approaching the commit-bound capacity ceiling that needs an *early-warning* overload signal rather than after-the-fact
3387
+ `queue_buildup`; calibrating the threshold wants a #28/#29/#64 capacity baseline first. Relates to **#21**, **#56**,
3388
+ **#64**, **#74**, **#75**, **#76**, **#81**, **#50**, **#28**/**#29**, and the **#5** AlertSink/rules framework it extends.
3389
+
3390
+ **Source:** owner request (2026-06-30) — "engine + database performance monitoring and alerting; display the total
3391
+ volume of messages going through the engine and the number of connections; monitor for all the things that affect
3392
+ throughput and alert when the system(s) are becoming overloaded." Overlap against the existing observability/alerting
3393
+ items (#21/#56/#64/#74/#75/#76/#81) reconciled the same day.
3394
+
3395
+ ---
3396
+
3397
+ ## 94. External BLOB-server offload for embedded documents — replace inline base64 with a stored-object pointer (OBX-5 RP) (P2, on-trigger)
3398
+
3399
+ **Type:** feature — storage minimization + customer-infrastructure integration. The ingest-time **offload**
3400
+ half of **#47** (its deferred fork (b)), but targeting the **customer's existing object/BLOB store** instead
3401
+ of a MessageFoundry-internal attachment table — and replacing the inline blob with an **in-message pointer**,
3402
+ not a private reattach token.
3403
+
3404
+ **The ask.** Large base64 embedded documents (PDF reports, CCD/C-CDA, scanned images) ride inline in **OBX-5**
3405
+ (ED data type) and generically via the ADR 0028 `mfb64:v1:` carriage marker
3406
+ ([`adr/0028-base64-binary-carriage-codec.md`](adr/0028-base64-binary-carriage-codec.md)). Today they are stored
3407
+ verbatim in the raw message at **every** persisted stage (`ingress` → `routed` → `outbound`), bloating the store
3408
+ far out of proportion to message count (#47's premise). Instead of pruning them *after* a window (#47(a)) or
3409
+ carrying them more compactly *inside* our store (#62), **offload the blob to the customer's BLOB server at
3410
+ ingest, take back the storage key/URL it returns, and embed that pointer into the corresponding OBX segment** —
3411
+ so the bulky document never persists in our store at all.
3412
+
3413
+ **Why distinct from the siblings.**
3414
+ - **#47(a)** prunes the embedded doc *after* a per-connection window — the blob still bloats all three stages
3415
+ until the window elapses, and it stays in our store meanwhile. This eliminates it *from the start*.
3416
+ - **#47(b)** is the same ingest-time-offload shape but offloads to a **MessageFoundry-managed attachment store**
3417
+ (Mirth's `d_ma<channelId>` table + `${ATTACH:...}` token, reattached on outbound). This offloads to
3418
+ **infrastructure the customer already owns** and leaves a **standards-shaped pointer in the message**, not a
3419
+ private token.
3420
+ - **#62** keeps the bytes in our store, just as `VARBINARY`/`BLOB`/`bytea` instead of base64-in-text. Here the
3421
+ bytes **leave** our store entirely.
3422
+
3423
+ **Design forks (for the ADR):**
3424
+ - **Pointer representation.** Replace the OBX-5 **ED** embed with the HL7 **RP (reference pointer)** data type — a
3425
+ `<pointer>^<application ID>^<type of data>^<subtype>` reference downstream systems understand natively — versus
3426
+ an opaque MessageFoundry token (#47(b)-style) that we must reattach before delivery. RP is interoperable but
3427
+ assumes the partner can dereference the BLOB; a token keeps the message self-contained but makes us re-fetch +
3428
+ re-embed on outbound. For the generic `mfb64:v1:` carriage, a sibling `mfref:`-style pointer marker. **Never
3429
+ string-slice raw HL7** (CLAUDE.md §8) — rewrite via the parsed model/codec and re-encode.
3430
+ - **Credential-bearing pointers — embed a reference, not a capability.** The message must carry a pointer a
3431
+ consumer can resolve, but a BLOB store often hands back (or we would mint) a **presigned URL / SAS token with the
3432
+ access grant baked into the string**. That must **not** be what we persist: a presigned URL in OBX-5 is a bearer
3433
+ credential to PHI living in a persisted-and-forwarded artifact (store, outbox, the partner's inbox, our logs), it
3434
+ **expires** — colliding with at-least-once **replay**, queued **retries**, **dead-letter**, and **retention** (a
3435
+ message re-sent past the TTL carries a dead pointer) — and it can't be revoked independently of the document.
3436
+ Separate the two capabilities: the **upload** grant (the presigned PUT, or MessageFoundry's own write creds) is
3437
+ used **once and discarded**; what we **embed** is a **stable, opaque, non-capability reference** — ideally a
3438
+ content-addressed object key plus the store identity (the HL7 **RP** components map cleanly: *Application ID* =
3439
+ which BLOB store, *Pointer* = the opaque key), with the consumer authenticating to the store with its **own**
3440
+ credentials (it owns the store — the premise of this feature). If a partner genuinely needs a no-auth
3441
+ dereferenceable URL, **mint a short-lived presigned URL late, at delivery** (the reattach-on-outbound fork below),
3442
+ never at ingest and never persisted — so the capability exists only transiently on the wire within a bounded TTL.
3443
+ Clean default: MessageFoundry writes with its own creds, embeds the opaque key, readers use theirs, and no
3444
+ credential URL ever touches the store or the logs.
3445
+ - **Reattach-on-outbound or not.** If the receiving partner reads the BLOB itself, the pointer *is* the
3446
+ deliverable. If it needs the actual document, MessageFoundry must **re-fetch from the BLOB and re-embed** on the
3447
+ outbound — or **mint a fresh short-lived pointer** at send time (above) — a new read side-effect + egress
3448
+ dependency on delivery. Per-outbound choice.
3449
+ - **Where the offload runs vs the reliability invariant.** This is a **write side-effect**, which collides with
3450
+ the "routers/transforms must be pure, every stage is at-least-once / re-runnable" invariant (CLAUDE.md §2). A
3451
+ stage re-run must not double-store or orphan blobs — favor **content-addressed keys** (hash of the bytes) so a
3452
+ PUT is idempotent. And it adds an **external dependency** to the path: if the offload sits *before* the ACK
3453
+ (alongside ingress persistence), a BLOB-server outage blocks intake/ACK; if it sits as its own pipeline stage
3454
+ *after* the ACK, intake survives but a failed offload dead-letters post-ACK (no NAK) — the ADR must pick.
3455
+
3456
+ **Scope (when built):**
3457
+ - A **pluggable BLOB connector** registered like the destination transports (`transports/`, registry — never
3458
+ special-cased in `pipeline/`): S3 / Azure Blob / GCS / on-prem object store / plain HTTP PUT, selected +
3459
+ configured per connection. Gated by `[egress].allowed_*` allow-lists; credentials via `env()` / `MEFOR_*` (the
3460
+ connector-credential SecretProvider-seam candidate). Off the event loop.
3461
+ - A **per-connection offload setting** (size threshold + target BLOB connection), layered over a global default —
3462
+ the same **global-default + per-connection-override** model as FIFO / `RetryPolicy` / #34 / #47, authored on the
3463
+ inbound `ConnectionSpec` and/or `connections.toml` (ADR 0007) so it stays hand-/GUI-editable.
3464
+ - Target **both** carriage forms (HL7 OBX-5 ED and the generic `mfb64:v1:` marker) across **all three** backends
3465
+ (SQLite / Postgres / SQL Server). Preserve every invariant — never delete the row, message stays parseable after
3466
+ the rewrite, **one audit entry per offload** (key + size + content-type + connection, no content). Offload is
3467
+ irreversible from our side once the inline bytes are dropped — surface a distinct flag so an operator viewing the
3468
+ message knows the document was externalized vs never present, and audit any later **retrieval**.
3469
+
3470
+ **PHI note + scope boundary.** Offloading *shrinks our* at-rest PHI footprint (a data-minimization win) — the
3471
+ bulky document leaves our store for the customer's BLOB. **The security of that BLOB server is explicitly out of
3472
+ scope:** PHI handling, **encryption-at-rest**, and access control on the customer's store are the **customer's**
3473
+ responsibility — the same trust posture we already take toward a customer database in `db_lookup`
3474
+ ([ADR 0010](adr/0010-handler-callable-db-lookup.md)). MessageFoundry treats the BLOB server as trusted customer-owned
3475
+ infrastructure and does **not** encrypt the offloaded objects or enforce remote-store PHI controls itself. What
3476
+ stays **in** scope (our responsibility): **never log a presigned/SAS URL or an identifier-bearing object key**
3477
+ (§9) — the former is a bearer credential to PHI, the latter is PHI itself; an opaque, auth-gated reference is safe
3478
+ to log. And **audit each retrieval** as a PHI access. (Logging is still stdlib with no structlog redaction yet, so
3479
+ this is a deliberate connector-level "log the object key/length, never the signed URL" discipline, not an
3480
+ automatic scrub.) The customer's BAA must cover the BLOB store; restate this boundary in [`PHI.md`](PHI.md) when
3481
+ built.
3482
+
3483
+ **Why P2 / on-trigger.** This is the strongest store-bloat lever for heavy document feeds (radiology PDFs, CCDs)
3484
+ and the cleanest fit for a customer who **already runs** object/BLOB infrastructure and wants their documents
3485
+ living there. But it is a side-effecting pipeline change touching the purity / at-least-once invariant **plus** a
3486
+ new connector family — it wants its own ADR (the forks above) before code, and is not an open exposure on the
3487
+ shipping config. **Trigger:** an adopter with an existing BLOB/object store and a document-heavy feed who wants the
3488
+ documents offloaded out of our store. Relates to **#47** (the in-store prune/offload sibling — shared
3489
+ per-connection plumbing; this realizes its deferred fork (b) against external storage), **#62** (in-store binary
3490
+ carriage), **#34** (per-connection retention), **ADR 0028** (base64 carriage), **ADR 0007** (`connections.toml`),
3491
+ and the connector-credential **SecretProvider** seam.
3492
+
3493
+ **Source:** owner request (2026-06-30) — "integrate with the customer's existing BLOB servers to offload base64
3494
+ documents; eliminate the base64 documents from our data store — instead get a pointer back from the BLOB and embed
3495
+ that into the corresponding OBX segment." Reconciled against the in-store siblings #47 / #62 the same day.
3496
+
3497
+ ---
3498
+
3499
+ ## 95. Engine-brokered AI assistance — integrate the IDE coding assistant with a customer's managed AI subscription or in-house LLM instance (P3, on-trigger)
3500
+
3501
+ **Type:** feature — AI governance + customer-infrastructure integration. Turns the **reserved-but-unused**
3502
+ `[ai]` broker config keys into a real integration: let the **engine broker** the IDE assistant's model calls to a
3503
+ provider the *customer already runs* — their own cloud AI subscription (Azure OpenAI, Anthropic/Bedrock, an internal
3504
+ Copilot-compatible gateway) or a **self-hosted / on-prem LLM endpoint** (vLLM, Ollama, an internal inference service)
3505
+ — under central, **per-use-auditable** egress control. The policy model, config schema, RBAC, and policy endpoint
3506
+ **already exist** ([`AI.md`](AI.md)); this builds the broker they were designed for.
3507
+
3508
+ **Already there (don't duplicate).** A customer's existing AI **subscription** is *already* the integration point
3509
+ today, via **BYO** ([`../ide/src/chat.ts`](../ide/src/chat.ts)): the assistant is provider-agnostic and uses whatever
3510
+ model the developer picked in VS Code's Chat view (Copilot / Copilot Enterprise under the org BAA, Claude, etc.)
3511
+ through the `vscode.lm` Language Model API — and **any in-house instance that registers as a VS Code language-model
3512
+ provider** (a Copilot-compatible internal proxy or a custom chat-model extension) is picked up the same way,
3513
+ engine-blind. The governance around it is built too — the `[ai]` policy (`mode` × `data_scope`,
3514
+ production-posture-clamped), the `ai:assist` RBAC permission, `GET /ai/policy` + the `messagefoundry ai-policy` CLI,
3515
+ and the central-*off* switch honored on every workstation. What is **not** built is the **engine-brokered** path:
3516
+ `managed_claude` / `managed_claude_baa` are accepted as policy values but the IDE deliberately refuses to service them
3517
+ (it will **not** silently fall back to BYO), and the `provider` / `model` / `baa_attested` / `endpoint` config keys
3518
+ are **accepted but unused** — placeholders the broker was meant to consume.
3519
+
3520
+ **Net-new gap (what no sibling owns):**
3521
+ 1. **The engine-side broker.** AI.md's *Future direction* (P1/P2) puts model egress behind the **engine** — not the
3522
+ dev's IDE — so a central operator controls and **per-use audits** every call, and `phi` scope becomes reachable
3523
+ only under `managed_claude_baa` over a **BAA + zero-data-retention** connection. None of this exists: it needs a
3524
+ new engine API surface (the engine proxies the chat request), the IDE client switching from `vscode.lm` to the
3525
+ engine for managed modes, and per-use egress auditing (today even policy *reads* aren't audited — that arrives
3526
+ *with* the broker).
3527
+ 2. **A generic customer-endpoint mode, beyond Anthropic-managed Claude.** The only future modes named today
3528
+ (`managed_claude` / `managed_claude_baa`) are framed around an **Anthropic-managed** Claude. A customer's **own
3529
+ subscription** (their Azure OpenAI / Bedrock keys, their internal gateway) or a **self-hosted endpoint** is a
3530
+ *different* shape: the customer supplies `endpoint` + `provider` + `model` + credentials and MEFOR just brokers to
3531
+ it. That wants either a new `managed_endpoint` (engine-brokered, customer-keyed) mode or an explicit
3532
+ generalization of `managed_claude`, finally wiring in the reserved `endpoint` / `provider` / `model` keys.
3533
+
3534
+ **Design forks (for the ADR):**
3535
+ - **Why broker at all when BYO already works?** BYO's limit is that it is **dev-machine-local and engine-blind** —
3536
+ ops can centrally turn it *off* and cap scope, but cannot *see* or *audit* individual calls, and the model is
3537
+ whatever the dev configured in VS Code. The broker buys central egress control, per-use audit, and a single
3538
+ operator-pinned `endpoint` / `model` — at the cost of routing AI traffic through the engine. Some customers want
3539
+ exactly the opposite (keep AI entirely off the engine), so this is **additive, never a replacement** for BYO.
3540
+ - **`managed_endpoint` vs generalize `managed_claude`.** A new mode keeps the existing Claude modes clean;
3541
+ generalizing avoids mode-proliferation. Either way the IDE's current "managed → disabled" branch flips to
3542
+ "managed → call the engine broker."
3543
+ - **Credentials + egress.** Customer keys / endpoint via `env()` / `MEFOR_*` (the connector-credential
3544
+ **SecretProvider** seam), gated by an `[egress].allowed_http` allow-list like `fhir_lookup` / SMART; the broker
3545
+ call runs **off the event loop**. A self-hosted endpoint (vLLM / Ollama) often needs no BAA (on-prem) — but the
3546
+ **`data_scope` ceiling still applies**: `phi` stays reachable *only* under the BAA + ZDR attestation, never merely
3547
+ because the endpoint is on-prem.
3548
+ - **PHI boundary unchanged for the MVP scopes.** Until de-id wiring into the AI scope path and the broker land
3549
+ together, the assistant still attaches **`code_only`** context regardless of mode — the broker changes *who makes
3550
+ the call and how it's audited*, not *what data* may be sent without a posture change.
3551
+
3552
+ **Why P3 / on-trigger.** BYO already covers "use our existing AI subscription" for the common case
3553
+ (Copilot-under-BAA, or an in-house model surfaced through VS Code) with **zero** engine work — so this is genuine new
3554
+ engine + IDE + audit surface that earns its cost only when a customer specifically wants **engine-centralized,
3555
+ audited** AI egress to **their** managed / self-hosted endpoint (e.g. a security team that mandates all AI traffic
3556
+ flow through one audited choke point, or an estate whose only LLM is an internal one not exposed to VS Code).
3557
+ **Trigger:** a customer asks for engine-brokered AI to their own subscription / in-house instance, **or** we have the
3558
+ bandwidth to build out the documented P1/P2 broker. ADR-first (the forks above). Relates to [`AI.md`](AI.md) (the
3559
+ policy model + reserved keys this realizes), [`PHI.md`](PHI.md) §9 (de-id, the gate to scopes above `code_only`), the
3560
+ **SMART** / `fhir_lookup` egress-allow-list + off-loop precedent ([ADR 0024](adr/0024-smart-backend-services-token-provider.md) /
3561
+ [ADR 0043](adr/0043-fhir-read-lookup.md)), and the connector-credential **SecretProvider** seam.
3562
+
3563
+ **Source:** owner request (2026-06-30) — add the engine-brokered "integrate the IDE coding assistant with a
3564
+ customer's existing AI subscriptions or in-house instances" capability as a demand-/bandwidth-gated item; build when
3565
+ a customer wants it or when we have bandwidth. The already-shipped BYO coverage + the reserved broker config keys were
3566
+ reconciled the same day.
3567
+
3568
+ ---
3569
+
3570
+ ## 96. Built-in "setup tester" — self-service capacity estimator that benchmarks the deployed setup and reports how much traffic it can handle (P2, adopter-facing)
3571
+
3572
+ **Type:** feature — an operator/adopter-facing **capacity self-test** shipped *with the engine*. It runs the
3573
+ same style of measurement we do for throughput testing, but as a first-class, on-demand command an adopter
3574
+ points at **their own** setup (this box, this store backend, this config) to get back an **estimate of how
3575
+ much traffic that setup can sustain**.
3576
+
3577
+ **What:** a `messagefoundry` subcommand (e.g. `messagefoundry capacity` / `setup-test`) that drives a
3578
+ controlled synthetic load through the real engine and reports an **estimated sustainable throughput** — a
3579
+ headline **msg/s** and **msg/day** figure, ideally **per-inbound-interface** *and* engine-wide, plus the
3580
+ **limiting factor** (commit-bound / pool-saturated / CPU / disk) and a confidence caveat. It ramps to the
3581
+ saturation knee (where `in_pipeline`/`backlog_seconds` start rising faster than drain — the #93 signal) and
3582
+ reports the last rate that drained cleanly with no loss, rather than a raw peak. Reuses the **BUILT load
3583
+ harness** measurement machinery ([`harness/load/`](../harness/load/), [`docs/LOAD-TESTING.md`](LOAD-TESTING.md))
3584
+ — the rate governor, the fast correlation sink (true end-to-end latency), the drain gauge (`in_pipeline`), and
3585
+ the no-loss reconciliation — packaged as a supported engine capability rather than a dev-only tool.
3586
+
3587
+ **Distinct from what already exists (don't duplicate):**
3588
+ - **#28 / #29 (DONE)** are the *developer/benchmark* runs of the harness against a synthetic high-fan-out
3589
+ system-under-test, producing the **project** [`benchmarks/TUNING-BASELINE.md`](benchmarks/TUNING-BASELINE.md)
3590
+ baseline. This item is the *adopter-run* inverse: point it at **the real deployed config on the real box** and
3591
+ get a sizing number for *that* deployment — not a project baseline, and not something that needs the harness's
3592
+ synthetic SUT config or the denylist-guarded estate profiles.
3593
+ - **#93 (P2)** is the *passive, runtime* counterpart — it watches real traffic and **warns** when live load is
3594
+ approaching capacity. This item is the *active, pre-cutover* counterpart — it **measures** where that capacity
3595
+ is in the first place, so #93's overload threshold can be calibrated against it. They pair.
3596
+ - **#40** is the enterprise-hardware CI leg; this tester is what an adopter would run **on their own hardware**
3597
+ to reproduce a sizing number without CI access.
3598
+
3599
+ **Design constraints (for the eventual ADR):**
3600
+ - **Must not pollute production.** A capacity run generates real store writes and would otherwise inflate the
3601
+ true inbound counts (the count-and-log invariant persists *every* received message). It must run against an
3602
+ **isolated/ephemeral store** (temp DB) or a clearly-marked test namespace, and never leave synthetic rows in,
3603
+ or skew the metrics of, the live message store.
3604
+ - **Synthetic payloads only — never real PHI.** Drive it from the conformant generators
3605
+ ([`generators/`](../messagefoundry/generators/)) / the anon framework (ADR 0030), consistent with the
3606
+ dryrun/generate PHI rule (never against real PHI, never redirected to a committed file/CI log).
3607
+ - **Respect the per-interface bound.** Report capacity **per inbound interface** and note that a single strictly-
3608
+ ordered feed is core-bound (owner principle: fan out feeds at source, not infinite single-feed speed) — an
3609
+ engine-wide total is the sum across interfaces, not a single-feed number. Sequence-keyed lanes (#3) are the
3610
+ sanctioned single-feed escape hatch when one feed outgrows a core.
3611
+ - **Name the limiting factor**, reusing the #93/#64 signals (commit/write latency, `[store].pool_size`
3612
+ busy/wait, CPU/mem via #74, `in_pipeline` growth) so the output is *"~N msg/s, commit-bound"* rather than a
3613
+ bare number — the sizing memos already conclude the pipeline is serial-per-inbound commit-bound, not
3614
+ disk/CPU/pool-bound on the tested boxes.
3615
+
3616
+ **Why P2 / on-trigger.** Turns capacity sizing — today a manual "run the dev harness + read TUNING-BASELINE by
3617
+ hand" exercise — into a **supported operation** an adopter can self-serve before a cutover (*"will this box carry
3618
+ our ~1.6M ADT/day?"*). The measurement machinery already exists; the net-new is the operator-facing command, the
3619
+ isolated-store harness, the ramp-to-knee estimator, and the capacity report. **Trigger:** a pilot/adopter needing
3620
+ a self-service pre-cutover capacity check on their own hardware (the ADR 0017 consumer-deployment pattern), or the
3621
+ #93 overload-alert threshold needing a per-deployment capacity baseline to calibrate against. Relates to
3622
+ **#28**/**#29** (the harness it wraps), **#40** (enterprise-box runs), **#64** (the throughput-performance
3623
+ roadmap), **#93** (the runtime overload-alert counterpart), and the recorded sizing work (throughput matrix /
3624
+ per-interface bound / commit-bottleneck analyses).
3625
+
3626
+ **Source:** owner request (2026-06-30) — "add a setup tester to the engine … do tests like we're doing for
3627
+ throughput testing and report back an estimate of how much traffic the setup can handle."
3628
+
3629
+ ---
3630
+
3631
+ ## 97. Keep-alive / persistent outbound connections — per-connector setting (P3, on-trigger)
3632
+
3633
+ > **On-trigger / demand-gate.** Numbered for tracking only — build when the trigger below fires (“demand-gate, don’t schedule”). Promotes the keep-alive sub-scope of [#82](#82-sender-transport-polish-bundle--pacing--msa-2msh-10-matching--tcp-keep-alive) into its own tracked item at the owner's request.
3634
+
3635
+ **Type:** feature — a per-outbound-connection option to **hold the TCP link open across deliveries** (keep-alive / persistent) instead of the current connect-per-message behavior.
3636
+
3637
+ **What:** an opt-in **per-connector setting** (e.g. `keepalive = true` / a `connection_mode = "persistent" | "on_demand"` knob in the outbound's `settings`, default `on_demand` so existing configs stay byte-identical) on the MLLP / raw-TCP / X12 outbound connectors. When enabled, the delivery worker reuses one open connection (reconnecting on drop/idle), rather than opening + closing a fresh socket every message as it does today. Wants: a bounded idle-close / max-lifetime, reconnect-with-backoff on a dropped link, and clean teardown on `stop()`/reload — all per-connection, with the setting validated at build (dry-run / `check`), consistent with the other outbound knobs.
3638
+
3639
+ **Why:** confirmed gap — every TCP-family outbound opens a **fresh connection per delivery** today and there is no toggle: `MLLPDestination` ([`transports/mllp.py`](../messagefoundry/transports/mllp.py), *"Phase 1 opens a fresh connection per delivery … a persistent/pooled connection can come later"*) and `TcpDestination` ([`transports/tcp.py`](../messagefoundry/transports/tcp.py), *"Opens a fresh connection per delivery … pooling can come later"*); listed as an unbuilt MLLP feature gap in [`CONNECTIONS.md`](CONNECTIONS.md) ("keep-connection-open/pooling"). Inbound listeners are already persistent (peer-driven, idle-bounded by `receive_timeout`) — this closes the outbound half. The connect-per-message default is simple and robust to flaky peers, so this is genuinely additive and stays **off by default**; the at-least-once / idempotent-receiver contract is unchanged (a reused link that drops mid-ACK still retries, same as today). **Trigger:** a partner that needs a held-open link (a persistent-session receiver, or a high-rate feed where per-message connect setup is measurable overhead). Relates to **#82** (the sender-polish bundle this splits from — pacing + MSA-2↔MSH-10 matching stay there), **#46** (connection lifecycle events would gain reconnect/retry signals), and **#65** (outbound-connector option surface).
3640
+
3641
+ **Source:** owner request (2026-06-30) — "add keepalive feature for outbound connections, controlled by a setting per outbound connector."
3642
+
3643
+ ---
3644
+
3327
3645
  *Everything else from the 2026-06-10 full-codebase review (1 critical, 13 high, 33 medium, 31 low —
3328
3646
  78 findings) has been remediated; see the review report's §6 action order. The two items it still
3329
3647
  sourced — **#1 (SQL Server concurrency)** and **#2 (console off-thread)** — are now both **DONE**