messagefoundry 0.2.12__tar.gz → 0.2.14__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 (937) hide show
  1. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/workflows/benchmark.yml +2 -2
  2. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/workflows/ci.yml +1 -1
  3. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/CHANGELOG.md +80 -0
  4. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/PKG-INFO +1 -1
  5. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docker/compose.yaml +1 -1
  6. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/BACKLOG.md +86 -3
  7. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/CLOUD-DEPLOYMENT.md +1 -1
  8. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/CLUSTERING.md +1 -1
  9. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/CONFIGURATION.md +2 -2
  10. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/DEPLOY-SERVER-DB.md +34 -1
  11. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/MENTAL-MODEL.md +1 -1
  12. messagefoundry-0.2.14/docs/THROUGHPUT.md +304 -0
  13. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0037-multi-process-sharding-l3.md +6 -0
  14. messagefoundry-0.2.14/docs/adr/0062-default-store-pool-size.md +137 -0
  15. messagefoundry-0.2.14/docs/adr/0063-no-split-store-unified-store-for-sharding.md +101 -0
  16. messagefoundry-0.2.14/docs/releases/DELTA-SECURITY-FIXES-MULTISESSION-PLAN.md +197 -0
  17. messagefoundry-0.2.14/docs/reviews/DELTA-REVIEW-2026-07-01.md +262 -0
  18. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/throughput-build-plan.md +3 -3
  19. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/throughput-roadmap.md +2 -2
  20. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/__main__.py +130 -0
  21. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/config/connscale/_shape.py +30 -0
  22. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/config/connscale/graph.py +7 -4
  23. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/connscale/report.py +7 -0
  24. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/connscale/runner.py +90 -55
  25. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/enginepoll.py +44 -0
  26. messagefoundry-0.2.14/harness/load/multishard.py +753 -0
  27. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/report.py +64 -7
  28. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/runner.py +24 -4
  29. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/__init__.py +1 -1
  30. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/__main__.py +17 -0
  31. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/settings.py +3 -2
  32. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/_builtin_hl7.py +21 -1
  33. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/peek.py +5 -1
  34. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/xml/signature.py +16 -4
  35. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/sharding.py +37 -2
  36. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/supervisor.py +10 -2
  37. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/wiring_runner.py +40 -15
  38. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/store/base.py +41 -0
  39. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/support/bundle.py +17 -2
  40. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/support/redact.py +34 -17
  41. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/http_listener.py +16 -1
  42. messagefoundry-0.2.14/tests/test_builtin_hl7_hardening.py +87 -0
  43. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_connscale_postgres.py +1 -1
  44. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_connscale_report.py +31 -0
  45. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_connscale_smoke.py +10 -3
  46. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_fhir_lookup.py +15 -0
  47. messagefoundry-0.2.14/tests/test_harness_reconcile.py +230 -0
  48. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_inbound_http_source.py +40 -0
  49. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_load_runner.py +34 -10
  50. messagefoundry-0.2.14/tests/test_multishard_smoke.py +139 -0
  51. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_settings.py +66 -0
  52. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_sharding.py +39 -0
  53. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_support_bundle.py +67 -0
  54. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_xml_schema_signature.py +4 -1
  55. messagefoundry-0.2.14/tests/test_xml_signature_anchor.py +44 -0
  56. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.claude/settings.json +0 -0
  57. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.dockerignore +0 -0
  58. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.gitattributes +0 -0
  59. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/CODEOWNERS +0 -0
  60. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  61. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  62. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  63. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  64. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/SECURITY.md +0 -0
  65. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/dependabot.yml +0 -0
  66. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/workflows/cla.yml +0 -0
  67. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/workflows/codeql.yml +0 -0
  68. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/workflows/dependabot-auto-merge.yml +0 -0
  69. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/workflows/dependabot-lock-resync.yml +0 -0
  70. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/workflows/freethread-smoke.yml +0 -0
  71. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/workflows/manifest-lint.yml +0 -0
  72. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/workflows/release-sync-check.yml +0 -0
  73. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/workflows/release.yml +0 -0
  74. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/workflows/scorecard.yml +0 -0
  75. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/workflows/security.yml +0 -0
  76. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/workflows/selfhosted-win2025-sql.yml +0 -0
  77. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/workflows/vuln-metrics.yml +0 -0
  78. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/zizmor.yml +0 -0
  79. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.gitignore +0 -0
  80. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.gitleaks.toml +0 -0
  81. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.mefor-hooks/pre-commit +0 -0
  82. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.pre-commit-config.yaml +0 -0
  83. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.semgrep/messagefoundry.yml +0 -0
  84. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/CLA.md +0 -0
  85. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/CLAUDE.md +0 -0
  86. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/CODE_OF_CONDUCT.md +0 -0
  87. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/COMMERCIAL-LICENSE.md +0 -0
  88. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/CONTRIBUTING.md +0 -0
  89. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/GOVERNANCE.md +0 -0
  90. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/LICENSE +0 -0
  91. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/MAINTAINERS.md +0 -0
  92. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/NOTICE +0 -0
  93. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/README.md +0 -0
  94. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docker/Dockerfile +0 -0
  95. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docker/README.md +0 -0
  96. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docker/k8s/ha-postgres.yaml +0 -0
  97. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docker/k8s/secret.example.yaml +0 -0
  98. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docker/k8s/statefulset.yaml +0 -0
  99. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docker/locks/requirements-core.lock +0 -0
  100. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docker/locks/requirements-sqlserver.lock +0 -0
  101. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docker/secrets.env.example +0 -0
  102. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docker/smoke/Dockerfile +0 -0
  103. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docker/smoke/config/IB_Test_ADT.py +0 -0
  104. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docker/smoke/send_adt.py +0 -0
  105. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/ADOPTER-CI.md +0 -0
  106. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/AI.md +0 -0
  107. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/ANTIVIRUS-FIREWALL.md +0 -0
  108. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/ARCHITECTURE.md +0 -0
  109. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/BRAND.md +0 -0
  110. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/CI-QUALITY.md +0 -0
  111. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/CLOUD-PHI-HIPAA.md +0 -0
  112. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/CODESETS.md +0 -0
  113. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/CONNECTIONS.md +0 -0
  114. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/CONTAINER-EXPOSURE-EVALUATION.md +0 -0
  115. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/CONTRIBUTOR-FIRST-ISSUES.md +0 -0
  116. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/CONTRIBUTOR-PROGRAM-PLAN.md +0 -0
  117. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/COUNSEL-ENGAGEMENT-BRIEF.md +0 -0
  118. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/DEPLOYMENT.md +0 -0
  119. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/DICOM.md +0 -0
  120. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/DUAL_LICENSING_PLAN.md +0 -0
  121. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/EARLY-ADOPTER-GUIDE.md +0 -0
  122. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/FEATURE-MAP.md +0 -0
  123. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/HL7-VALIDATION.md +0 -0
  124. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/INSTALL-GUIDE.md +0 -0
  125. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/LOAD-TESTING.md +0 -0
  126. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/MessageFoundry-Mental-Model.docx +0 -0
  127. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/PHI.md +0 -0
  128. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/POSITIONING.md +0 -0
  129. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/REMOTE-CONSOLE-CUSTOMER-GUIDE.md +0 -0
  130. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/REMOTE-CONSOLE.md +0 -0
  131. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/SECURITY-REMEDIATION-LEDGER.md +0 -0
  132. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/SECURITY.md +0 -0
  133. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/SERVICE.md +0 -0
  134. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/SUPPORT-POLICY.md +0 -0
  135. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/SYSTEM-REQUIREMENTS.md +0 -0
  136. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/Secure_AI_Development_Standards.md +0 -0
  137. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/Secure_Development_Standards.md +0 -0
  138. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/TEE-RELAY.md +0 -0
  139. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/THROUGHPUT-IMPROVEMENTS.md +0 -0
  140. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/USER-GUIDE.md +0 -0
  141. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/WORKTREES.md +0 -0
  142. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0001-staged-pipeline-architecture.md +0 -0
  143. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0002-phase2-transport-security-and-strong-auth.md +0 -0
  144. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0003-non-hl7-transports-database-rest-soap.md +0 -0
  145. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0004-payload-agnostic-ingress.md +0 -0
  146. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0005-transform-accessible-state.md +0 -0
  147. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0006-external-data-lookups.md +0 -0
  148. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0007-gui-manageable-connections-toml.md +0 -0
  149. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0008-cluster-observability-api.md +0 -0
  150. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0009-run-scoped-context-providers.md +0 -0
  151. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0010-handler-callable-db-lookup.md +0 -0
  152. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0011-timer-scheduled-source.md +0 -0
  153. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0012-x12-edi-codec.md +0 -0
  154. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0013-increment-2-reingress-design.md +0 -0
  155. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0013-query-response-orchestration.md +0 -0
  156. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0014-alerting-rules-engine.md +0 -0
  157. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0015-ws-soap-outbound-mtls-wssecurity.md +0 -0
  158. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0016-synchronous-x12-request-response.md +0 -0
  159. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0017-consumer-deployment-model.md +0 -0
  160. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0018-per-message-signatures-accepted-risk.md +0 -0
  161. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0019-pluggable-keyprovider-hsm-kms-vault.md +0 -0
  162. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0020-protocol-diagnostic-capture.md +0 -0
  163. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0021-inbound-ack-nak-capture-response-sent.md +0 -0
  164. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0022-fhir-resource-codec-rest-client.md +0 -0
  165. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0023-inbound-http-listener.md +0 -0
  166. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0024-smart-backend-services-token-provider.md +0 -0
  167. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0025-dicom-codec-store-connectors.md +0 -0
  168. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0026-off-box-egress-update-check.md +0 -0
  169. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0027-per-connection-retention.md +0 -0
  170. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0028-base64-binary-carriage-codec.md +0 -0
  171. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0029-email-smtp-destination.md +0 -0
  172. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0030-anonymization-test-harness-tee.md +0 -0
  173. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0031-startup-connection-fault-isolation.md +0 -0
  174. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0032-console-desktop-launch.md +0 -0
  175. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0033-gui-manageable-code-sets.md +0 -0
  176. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0034-static-analysis-triage-policy-accepted-risk-register.md +0 -0
  177. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0035-ide-extension-workspace-trust-and-scope.md +0 -0
  178. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0036-windows-config-source-trust.md +0 -0
  179. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0038-internal-pass-through-connector.md +0 -0
  180. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0039-database-tier-sharding-l5.md +0 -0
  181. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0040-free-threaded-engine-support.md +0 -0
  182. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0041-load-path-attestation-and-change-attribution.md +0 -0
  183. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0042-embedded-document-pruning.md +0 -0
  184. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0043-fhir-read-lookup.md +0 -0
  185. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0044-operator-alert-state.md +0 -0
  186. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0045-custom-rbac-roles.md +0 -0
  187. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0046-message-content-search.md +0 -0
  188. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0047-cloud-kubernetes-ha-deployment-packaging.md +0 -0
  189. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0048-third-tier-disaster-recovery-standby.md +0 -0
  190. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0049-turnkey-dr-backup-restore-verify.md +0 -0
  191. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0050-single-project-root-config-anchoring.md +0 -0
  192. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0051-corepoint-throughput-parity-strategy.md +0 -0
  193. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0052-enterprise-scale-target.md +0 -0
  194. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0053-free-threaded-multicore-engine.md +0 -0
  195. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0054-low-allocation-builtins-hl7-parser.md +0 -0
  196. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0055-group-commit-durable-write.md +0 -0
  197. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0056-engine-managed-vip-failover.md +0 -0
  198. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0057-inline-step-a-fast-path.md +0 -0
  199. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0058-batch-claim-fifo-prefix.md +0 -0
  200. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0059-seq-only-fifo-ordering.md +0 -0
  201. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0060-rename-based-fifo-index-migration.md +0 -0
  202. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0061-per-lane-wake-events.md +0 -0
  203. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/README.md +0 -0
  204. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/TEMPLATE.md +0 -0
  205. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/architecture-components.png +0 -0
  206. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/architecture-components.svg +0 -0
  207. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/architecture-config-graph.png +0 -0
  208. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/architecture-config-graph.svg +0 -0
  209. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/architecture-diagram.md +0 -0
  210. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/architecture-message-flow.png +0 -0
  211. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/architecture-message-flow.svg +0 -0
  212. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/architecture-topology.png +0 -0
  213. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/architecture-topology.svg +0 -0
  214. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/benchmarks/TUNING-BASELINE.md +0 -0
  215. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/benchmarks/results/2026-06-16-ci-linux/environment.txt +0 -0
  216. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/benchmarks/results/2026-06-16-ci-linux/failover-postgres.json +0 -0
  217. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/benchmarks/results/2026-06-16-ci-linux/failover-sqlserver.json +0 -0
  218. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/benchmarks/results/2026-06-16-ci-linux/reference-postgres.json +0 -0
  219. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/benchmarks/results/2026-06-16-ci-linux/reference-sqlite.json +0 -0
  220. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/benchmarks/results/2026-06-16-ci-linux/reference-sqlserver.json +0 -0
  221. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/benchmarks/step-b-write-amplification.md +0 -0
  222. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/design/dbshard.md +0 -0
  223. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/design/freethread-spike.md +0 -0
  224. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/design/freethread.md +0 -0
  225. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/design/multiproc.md +0 -0
  226. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/hl7-message-ordering-reference.md +0 -0
  227. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/message-ordering-design.md +0 -0
  228. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/releases/ASVS-OPTION-A-MULTISESSION-PLAN.md +0 -0
  229. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/releases/ASVS-PARTIALS-SWEEP-MULTISESSION-PLAN.md +0 -0
  230. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/releases/DOGFOOD-BACKLOG-MULTISESSION-PLAN.md +0 -0
  231. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/releases/MULTISESSION-PLAN-3.md +0 -0
  232. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/releases/MULTISESSION-PLAN-4.md +0 -0
  233. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/releases/MULTISESSION-PLAN-5.md +0 -0
  234. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/releases/MULTISESSION-PLAN-6.md +0 -0
  235. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/releases/MULTISESSION-PLAN-v0.2.md +0 -0
  236. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/releases/MULTISESSION-PLAN.md +0 -0
  237. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/releases/PLAN-3-LANE-HANDOFFS.md +0 -0
  238. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/releases/V0.2-LANE-HANDOFFS.md +0 -0
  239. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/releases/v0.1-EXECUTION-PLAN.md +0 -0
  240. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/releases/v0.1-PLAN.md +0 -0
  241. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/releases/v0.1.0-PRETAG-CHECKLIST.md +0 -0
  242. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/research/cloud-deployment-research-2026-06.md +0 -0
  243. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/research/config-ux-review.md +0 -0
  244. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/research/non-hl7-transform-components.md +0 -0
  245. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/reviews/DEPENDENCY-INFOSEC-POSTURE-2026-06-23.md +0 -0
  246. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/reviews/FULL-REVIEW-2026-06-10.md +0 -0
  247. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/ADVISORY-PROCESS.md +0 -0
  248. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/ASVS-FAILS-REMEDIATION-PLAN.md +0 -0
  249. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/ASVS-L2-PHASE0-CHANGES.md +0 -0
  250. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/ASVS-L2-REMEDIATION-PLAN.md +0 -0
  251. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/ASVS-L3-ASSESSMENT.md +0 -0
  252. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/ASVS-L3-REMEDIATION-PLAN.md +0 -0
  253. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/ASVS-L3-STATUS.md +0 -0
  254. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/BEYOND-ASVS-L3-ONEPAGE.md +0 -0
  255. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/BEYOND-ASVS-L3-REMEDIATION-PLAN-ONEPAGE.md +0 -0
  256. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/BEYOND-ASVS-L3-REMEDIATION-PLAN.md +0 -0
  257. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/BEYOND-ASVS-L3.md +0 -0
  258. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/DEP-CVE-RUNBOOK.md +0 -0
  259. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/DEPENDENCY-METRICS.md +0 -0
  260. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/MEFOR-Code-Review-Checklist.xlsx +0 -0
  261. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/PHASE-8C-RBAC.md +0 -0
  262. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/PUBLISHING.md +0 -0
  263. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/RCA-TEMPLATE.md +0 -0
  264. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/RELEASE-GATE.md +0 -0
  265. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/REMEDIATION-PLAN.md +0 -0
  266. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/REVIEW-2026-06-07.md +0 -0
  267. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/SDS-CONFORMANCE-REVIEW-2026-06-12.md +0 -0
  268. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/SDS-REMEDIATION-PLAN.md +0 -0
  269. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/SECURITY-POSTURE.md +0 -0
  270. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/SOUP-DEPENDENCY-HANDLING.md +0 -0
  271. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/SOUP-REVIEW-2026-06-18.md +0 -0
  272. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/SOUP-REVIEW-PROCEDURE.md +0 -0
  273. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/THREAT-MODEL.md +0 -0
  274. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/testing/VERIFY.md +0 -0
  275. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/testing/WIN2025-ACCEPTANCE.md +0 -0
  276. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/testing/WIN2025-TEST-MATRIX.md +0 -0
  277. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/testing/WIN2025-TEST-PLAN.md +0 -0
  278. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/environments/dev.toml +0 -0
  279. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/environments/prod.toml +0 -0
  280. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/README.md +0 -0
  281. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/acceptance/__init__.py +0 -0
  282. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/acceptance/__main__.py +0 -0
  283. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/acceptance/matrix.py +0 -0
  284. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/acceptance/probes.py +0 -0
  285. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/acceptance/report.py +0 -0
  286. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/acceptance/runner.py +0 -0
  287. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/compose.py +0 -0
  288. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/config/connscale/__init__.py +0 -0
  289. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/config/connscale/gen_toml.py +0 -0
  290. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/config/coverage.py +0 -0
  291. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/config/load/_shape.py +0 -0
  292. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/config/load/graph.py +0 -0
  293. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/config/passthrough/graph.py +0 -0
  294. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/config/store_once/graph.py +0 -0
  295. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/file_panel.py +0 -0
  296. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/file_transport.py +0 -0
  297. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/__init__.py +0 -0
  298. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/connscale/__init__.py +0 -0
  299. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/connscale/driver.py +0 -0
  300. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/connscale/probe.py +0 -0
  301. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/connscale/profile.py +0 -0
  302. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/corpus.py +0 -0
  303. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/correlator.py +0 -0
  304. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/failover.py +0 -0
  305. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/failover_track.py +0 -0
  306. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/governor.py +0 -0
  307. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/ids.py +0 -0
  308. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/metrics.py +0 -0
  309. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/profile.py +0 -0
  310. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/profiles/README.md +0 -0
  311. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/profiles/adt-fanout-stress.toml +0 -0
  312. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/profiles/closed-loop.toml +0 -0
  313. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/profiles/connscale-smoke.toml +0 -0
  314. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/profiles/connscale.toml +0 -0
  315. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/profiles/failover.toml +0 -0
  316. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/profiles/fanout-baseline.toml +0 -0
  317. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/profiles/malformed-load.toml +0 -0
  318. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/profiles/reference.toml +0 -0
  319. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/profiles/smoke-sqlserver.toml +0 -0
  320. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/profiles/smoke.toml +0 -0
  321. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/profiles/soak.toml +0 -0
  322. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/profiles/spike-burst.toml +0 -0
  323. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/profiles/sustained-overload.toml +0 -0
  324. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/profiles/writeamp.toml +0 -0
  325. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/sender.py +0 -0
  326. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/sink.py +0 -0
  327. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/mllp.py +0 -0
  328. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/monitor.py +0 -0
  329. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/receive.py +0 -0
  330. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/reconcile/__init__.py +0 -0
  331. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/reconcile/__main__.py +0 -0
  332. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/reconcile/capture.py +0 -0
  333. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/reconcile/compare.py +0 -0
  334. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/reconcile/normalize.py +0 -0
  335. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/reconcile/report.py +0 -0
  336. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/scenarios.py +0 -0
  337. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/send.py +0 -0
  338. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/window.py +0 -0
  339. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/.gitignore +0 -0
  340. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/.vscodeignore +0 -0
  341. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/README.md +0 -0
  342. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/esbuild.js +0 -0
  343. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/media/hl7schema.json +0 -0
  344. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/media/icon-amber.svg +0 -0
  345. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/media/icon.png +0 -0
  346. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/media/icon.svg +0 -0
  347. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/package-lock.json +0 -0
  348. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/package.json +0 -0
  349. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/snippets/messagefoundry.code-snippets +0 -0
  350. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/aiPolicy.ts +0 -0
  351. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/alertEditor.ts +0 -0
  352. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/auth.ts +0 -0
  353. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/chat.ts +0 -0
  354. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/cli.ts +0 -0
  355. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/codeSetEditor.ts +0 -0
  356. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/codesetsTree.ts +0 -0
  357. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/completion.ts +0 -0
  358. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/connectionEditor.ts +0 -0
  359. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/editorToolbar.ts +0 -0
  360. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/engineClient.ts +0 -0
  361. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/engineTarget.ts +0 -0
  362. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/extension.ts +0 -0
  363. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/generate.ts +0 -0
  364. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/git.ts +0 -0
  365. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/graphTree.ts +0 -0
  366. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/home.ts +0 -0
  367. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/insertElement.ts +0 -0
  368. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/newRoute.ts +0 -0
  369. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/promote.ts +0 -0
  370. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/promoteTarget.ts +0 -0
  371. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/sourceControl.ts +0 -0
  372. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/test/runTest.ts +0 -0
  373. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/test/suite/ai-policy.test.ts +0 -0
  374. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/test/suite/chat.test.ts +0 -0
  375. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/test/suite/editor-toolbar.test.ts +0 -0
  376. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/test/suite/engine-target.test.ts +0 -0
  377. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/test/suite/extension.test.ts +0 -0
  378. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/test/suite/index.ts +0 -0
  379. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/test/suite/insert-element.test.ts +0 -0
  380. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/test/suite/promote-target.test.ts +0 -0
  381. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/test/suite/pythonpath.test.ts +0 -0
  382. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/test/suite/settings-scope.test.ts +0 -0
  383. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/testBench.ts +0 -0
  384. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/validate.ts +0 -0
  385. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/tsconfig.json +0 -0
  386. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/tsconfig.test.json +0 -0
  387. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/mefor.code-workspace +0 -0
  388. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/adr_analyze.py +0 -0
  389. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/anon/__init__.py +0 -0
  390. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/anon/_pools.py +0 -0
  391. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/anon/hl7.py +0 -0
  392. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/anon/keying.py +0 -0
  393. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/anon/leak.py +0 -0
  394. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/anon/rules.py +0 -0
  395. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/anon/surrogates.py +0 -0
  396. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/api/__init__.py +0 -0
  397. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/api/app.py +0 -0
  398. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/api/approvals.py +0 -0
  399. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/api/auth_models.py +0 -0
  400. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/api/auth_routes.py +0 -0
  401. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/api/field_authz.py +0 -0
  402. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/api/metrics.py +0 -0
  403. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/api/models.py +0 -0
  404. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/api/security.py +0 -0
  405. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/api/tls.py +0 -0
  406. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/auth/__init__.py +0 -0
  407. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/auth/data/common_passwords.NOTICE +0 -0
  408. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/auth/data/common_passwords.txt +0 -0
  409. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/auth/identity.py +0 -0
  410. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/auth/ldap.py +0 -0
  411. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/auth/notifications.py +0 -0
  412. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/auth/passwords.py +0 -0
  413. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/auth/permissions.py +0 -0
  414. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/auth/policy.py +0 -0
  415. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/auth/ratelimit.py +0 -0
  416. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/auth/service.py +0 -0
  417. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/auth/tokens.py +0 -0
  418. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/auth/totp.py +0 -0
  419. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/checks.py +0 -0
  420. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/__init__.py +0 -0
  421. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/active_environment.py +0 -0
  422. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/ai_policy.py +0 -0
  423. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/alerts_edit.py +0 -0
  424. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/anchor.py +0 -0
  425. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/code_sets.py +0 -0
  426. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/codeset_edit.py +0 -0
  427. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/connections_edit.py +0 -0
  428. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/connections_file.py +0 -0
  429. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/db_lookup.py +0 -0
  430. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/environments.py +0 -0
  431. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/fhir_lookup.py +0 -0
  432. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/fingerprint.py +0 -0
  433. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/ingest_time.py +0 -0
  434. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/models.py +0 -0
  435. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/reference.py +0 -0
  436. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/response.py +0 -0
  437. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/run_context.py +0 -0
  438. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/state.py +0 -0
  439. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/tls_policy.py +0 -0
  440. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/wiring.py +0 -0
  441. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/__init__.py +0 -0
  442. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/__main__.py +0 -0
  443. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/_async.py +0 -0
  444. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/alerts_page.py +0 -0
  445. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/change_password.py +0 -0
  446. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/client.py +0 -0
  447. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/connections.py +0 -0
  448. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/dead_letters_page.py +0 -0
  449. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/delegates.py +0 -0
  450. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/event_log_page.py +0 -0
  451. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/icons/alerts.svg +0 -0
  452. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/icons/connections.svg +0 -0
  453. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/icons/dead-letters.svg +0 -0
  454. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/icons/engine-status.svg +0 -0
  455. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/icons/log-search.svg +0 -0
  456. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/icons/logo-lockup.svg +0 -0
  457. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/icons/users.svg +0 -0
  458. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/login.py +0 -0
  459. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/mfa.py +0 -0
  460. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/reauth.py +0 -0
  461. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/resources/README.md +0 -0
  462. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/resources/app.ico +0 -0
  463. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/resources/app.svg +0 -0
  464. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/search.py +0 -0
  465. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/service_control.py +0 -0
  466. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/sessions.py +0 -0
  467. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/shards.py +0 -0
  468. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/shell.py +0 -0
  469. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/status.py +0 -0
  470. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/theme.py +0 -0
  471. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/users_page.py +0 -0
  472. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/widgets.py +0 -0
  473. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/README.md +0 -0
  474. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/__init__.py +0 -0
  475. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/_core.py +0 -0
  476. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/_hl7data.py +0 -0
  477. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/adt.py +0 -0
  478. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/all_types.py +0 -0
  479. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/bar.py +0 -0
  480. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/dft.py +0 -0
  481. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/documents.py +0 -0
  482. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/mdm.py +0 -0
  483. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/mfn.py +0 -0
  484. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/oml.py +0 -0
  485. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/orl.py +0 -0
  486. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/orm.py +0 -0
  487. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/oru.py +0 -0
  488. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/ras.py +0 -0
  489. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/rde.py +0 -0
  490. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/siu.py +0 -0
  491. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/vxu.py +0 -0
  492. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/hl7schema.py +0 -0
  493. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/integrity.py +0 -0
  494. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/last_resort.py +0 -0
  495. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/logging_setup.py +0 -0
  496. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/__init__.py +0 -0
  497. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/_backend.py +0 -0
  498. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/binary.py +0 -0
  499. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/consistency.py +0 -0
  500. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/dicom/__init__.py +0 -0
  501. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/dicom/_deps.py +0 -0
  502. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/dicom/_util.py +0 -0
  503. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/dicom/dataset.py +0 -0
  504. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/dicom/errors.py +0 -0
  505. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/dicom/hl7_map.py +0 -0
  506. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/dicom/peek.py +0 -0
  507. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/fhir/__init__.py +0 -0
  508. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/fhir/_deps.py +0 -0
  509. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/fhir/errors.py +0 -0
  510. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/fhir/peek.py +0 -0
  511. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/fhir/resource.py +0 -0
  512. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/groups.py +0 -0
  513. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/message.py +0 -0
  514. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/split.py +0 -0
  515. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/summary.py +0 -0
  516. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/tree.py +0 -0
  517. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/validate.py +0 -0
  518. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/x12/__init__.py +0 -0
  519. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/x12/_deps.py +0 -0
  520. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/x12/delimiters.py +0 -0
  521. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/x12/errors.py +0 -0
  522. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/x12/interchange.py +0 -0
  523. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/x12/message.py +0 -0
  524. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/x12/peek.py +0 -0
  525. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/x12/validate.py +0 -0
  526. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/xml/__init__.py +0 -0
  527. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/xml/_deps.py +0 -0
  528. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/xml/errors.py +0 -0
  529. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/xml/harden.py +0 -0
  530. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/xml/message.py +0 -0
  531. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/xml/schema.py +0 -0
  532. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/__init__.py +0 -0
  533. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/alert_sinks.py +0 -0
  534. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/alerts.py +0 -0
  535. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/cert_expiry.py +0 -0
  536. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/cluster.py +0 -0
  537. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/cluster_sqlserver.py +0 -0
  538. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/config_convergence.py +0 -0
  539. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/connscale_shim.py +0 -0
  540. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/dr.py +0 -0
  541. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/dr_backup.py +0 -0
  542. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/dryrun.py +0 -0
  543. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/engine.py +0 -0
  544. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/leader_tasks.py +0 -0
  545. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/reference_sync.py +0 -0
  546. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/retention.py +0 -0
  547. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/security_notify.py +0 -0
  548. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/state_convergence.py +0 -0
  549. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/update_check.py +0 -0
  550. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/py.typed +0 -0
  551. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/redaction.py +0 -0
  552. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/scaffold.py +0 -0
  553. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/secrets_dpapi.py +0 -0
  554. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/store/__init__.py +0 -0
  555. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/store/audit_tee.py +0 -0
  556. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/store/backup_codec.py +0 -0
  557. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/store/content_search.py +0 -0
  558. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/store/crypto.py +0 -0
  559. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/store/document_strip.py +0 -0
  560. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/store/keyprovider.py +0 -0
  561. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/store/pool_metrics.py +0 -0
  562. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/store/postgres.py +0 -0
  563. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/store/sqlserver.py +0 -0
  564. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/store/store.py +0 -0
  565. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/support/__init__.py +0 -0
  566. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/timezone.py +0 -0
  567. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/__init__.py +0 -0
  568. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/base.py +0 -0
  569. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/database.py +0 -0
  570. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/dicom.py +0 -0
  571. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/dicomweb.py +0 -0
  572. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/email.py +0 -0
  573. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/fhir.py +0 -0
  574. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/file.py +0 -0
  575. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/framing.py +0 -0
  576. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/loopback.py +0 -0
  577. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/mllp.py +0 -0
  578. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/passthrough.py +0 -0
  579. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/remotefile.py +0 -0
  580. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/rest.py +0 -0
  581. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/signing.py +0 -0
  582. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/smart.py +0 -0
  583. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/soap.py +0 -0
  584. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/tcp.py +0 -0
  585. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/timer.py +0 -0
  586. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/x12.py +0 -0
  587. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/verify/__init__.py +0 -0
  588. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/verify/checks.py +0 -0
  589. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/verify/model.py +0 -0
  590. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/verify/report.py +0 -0
  591. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/verify/runner.py +0 -0
  592. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/verify/smoke.py +0 -0
  593. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/packaging/console-installer/README.md +0 -0
  594. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/packaging/console-installer/THIRD-PARTY-NOTICES.md +0 -0
  595. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/packaging/console-installer/THIRD-PARTY-NOTICES.txt +0 -0
  596. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/packaging/console-installer/console_launcher.py +0 -0
  597. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/packaging/console-installer/licenses/GPL-3.0.txt +0 -0
  598. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/packaging/console-installer/licenses/LGPL-3.0.txt +0 -0
  599. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/packaging/console-installer/messagefoundry-console.iss +0 -0
  600. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/packaging/console-installer/messagefoundry-console.spec +0 -0
  601. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/packaging/messagefoundry-harness/README.md +0 -0
  602. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/packaging/messagefoundry-harness/pyproject.toml +0 -0
  603. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/pyproject.toml +0 -0
  604. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/requirements.lock +0 -0
  605. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/config/IB_ACME_ADT.py +0 -0
  606. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/config/IB_FHIR_INTAKE.py +0 -0
  607. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/config/IB_IMMUNIZATION_VXU.py +0 -0
  608. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/config/IB_PARTNER_X12.py +0 -0
  609. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/config/IB_RADIOLOGY_SR.py +0 -0
  610. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/config/IB_RTE_ELIGIBILITY.py +0 -0
  611. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/config/adt.py +0 -0
  612. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/config/codesets/event_labels.csv +0 -0
  613. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/config/codesets/facility_mnemonics.toml +0 -0
  614. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/config/connections.toml +0 -0
  615. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/consistency/validated_adt.py +0 -0
  616. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/dicom/generate_sr_sample.py +0 -0
  617. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/messages/adt_a01.hl7 +0 -0
  618. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/messages/adt_batch.hl7 +0 -0
  619. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/messages/hapi-hl7v2/.gitattributes +0 -0
  620. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/messages/hapi-hl7v2/README.md +0 -0
  621. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/messages/hapi-hl7v2/adt_a01.txt +0 -0
  622. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/messages/hapi-hl7v2/adt_a03.txt +0 -0
  623. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/messages/hapi-hl7v2/batch_18_messages.txt +0 -0
  624. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/messages/hapi-hl7v2/erp_z99_v231.hl7 +0 -0
  625. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/messages/hapi-hl7v2/omd_o03.txt +0 -0
  626. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/messages/hapi-hl7v2/omd_o03_rep.txt +0 -0
  627. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/messages/hapi-hl7v2/oml_o21.hl7 +0 -0
  628. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/messages/x12_270_eligibility.edi +0 -0
  629. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/results_relay/README.md +0 -0
  630. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/results_relay/codesets/test_codes.csv +0 -0
  631. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/results_relay/messages/oru_all_cancelled.hl7 +0 -0
  632. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/results_relay/messages/oru_results.hl7 +0 -0
  633. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/results_relay/results_relay.py +0 -0
  634. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/send_mllp.py +0 -0
  635. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/console/install-console-shortcut.ps1 +0 -0
  636. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/console/pack_ico.py +0 -0
  637. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/console/uninstall-console-shortcut.ps1 +0 -0
  638. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/dev/postgres.ps1 +0 -0
  639. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/dev/sqlserver-docker.ps1 +0 -0
  640. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/dev/sqlserver.ps1 +0 -0
  641. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/hooks/block-blanket-git-stage.ps1 +0 -0
  642. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/publish/check_release_sync.py +0 -0
  643. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/publish/publish-denylist.txt +0 -0
  644. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/publish/publish.ps1 +0 -0
  645. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/publish/scan_forbidden.py +0 -0
  646. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/security/crypto_inventory_check.py +0 -0
  647. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/security/vuln_metrics.py +0 -0
  648. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/service/import-db-ca.ps1 +0 -0
  649. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/service/install-service.ps1 +0 -0
  650. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/service/uninstall-service.ps1 +0 -0
  651. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/trace_icon.py +0 -0
  652. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/worktree/new.ps1 +0 -0
  653. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/worktree/remove.ps1 +0 -0
  654. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/worktree/session-context.ps1 +0 -0
  655. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/worktree/spawn.ps1 +0 -0
  656. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/__init__.py +0 -0
  657. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/__main__.py +0 -0
  658. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/anon/__init__.py +0 -0
  659. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/anon/_hl7data.py +0 -0
  660. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/anon/_pools.py +0 -0
  661. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/anon/hl7.py +0 -0
  662. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/anon/keying.py +0 -0
  663. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/anon/leak.py +0 -0
  664. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/anon/rules.py +0 -0
  665. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/anon/surrogates.py +0 -0
  666. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/compare.py +0 -0
  667. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/correlate.py +0 -0
  668. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/hl7_fields.py +0 -0
  669. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/mefor_api.py +0 -0
  670. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/mllp.py +0 -0
  671. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/relay.py +0 -0
  672. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/report.py +0 -0
  673. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/store.py +0 -0
  674. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/_dicom_sample.py +0 -0
  675. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/_failover_load_support.py +0 -0
  676. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/_fhir_fixtures.py +0 -0
  677. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/conftest.py +0 -0
  678. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_acceptance_framework.py +0 -0
  679. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_ack_capture_runner.py +0 -0
  680. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_ack_sent_store.py +0 -0
  681. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_active_environment.py +0 -0
  682. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_ad_group_scope.py +0 -0
  683. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_admin_new_ip.py +0 -0
  684. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_adr_analyze.py +0 -0
  685. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_ai_policy.py +0 -0
  686. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_alert_rules.py +0 -0
  687. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_alert_sinks.py +0 -0
  688. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_alert_state.py +0 -0
  689. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_alerts_edit.py +0 -0
  690. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_alerts_rules_api.py +0 -0
  691. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_anon_core.py +0 -0
  692. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_anon_integration.py +0 -0
  693. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_anon_parity.py +0 -0
  694. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_api.py +0 -0
  695. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_api_alerts.py +0 -0
  696. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_api_auth.py +0 -0
  697. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_api_reload.py +0 -0
  698. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_api_tls.py +0 -0
  699. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_approvals.py +0 -0
  700. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_asvs_phase0.py +0 -0
  701. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_audit_integrity.py +0 -0
  702. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_audit_offbox_tee.py +0 -0
  703. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_auth_core.py +0 -0
  704. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_auth_entry_hardening.py +0 -0
  705. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_auth_hardening.py +0 -0
  706. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_auth_service.py +0 -0
  707. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_auth_session_lifecycle.py +0 -0
  708. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_auth_store.py +0 -0
  709. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_backup_crypto.py +0 -0
  710. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_backup_restore_atleastonce.py +0 -0
  711. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_backup_runner.py +0 -0
  712. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_batch_claim_fifo.py +0 -0
  713. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_batch_claim_locking.py +0 -0
  714. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_batch_claim_worker.py +0 -0
  715. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_binary_carriage.py +0 -0
  716. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_bootstrap_admin_perms.py +0 -0
  717. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_builtin_hl7_parity.py +0 -0
  718. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_cert_expiry.py +0 -0
  719. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_channel_rbac.py +0 -0
  720. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_checks.py +0 -0
  721. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_checks_lint.py +0 -0
  722. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_cli.py +0 -0
  723. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_cli_offline_resolution.py +0 -0
  724. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_cluster.py +0 -0
  725. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_cluster_failover_postgres.py +0 -0
  726. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_cluster_failover_sqlserver.py +0 -0
  727. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_cluster_graph_gating.py +0 -0
  728. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_cluster_lease.py +0 -0
  729. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_code_sets.py +0 -0
  730. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_codeset_edit.py +0 -0
  731. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_config_anchoring.py +0 -0
  732. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_config_fingerprint.py +0 -0
  733. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_config_source_trust.py +0 -0
  734. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_connection_api.py +0 -0
  735. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_connection_event_api.py +0 -0
  736. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_connection_event_emit.py +0 -0
  737. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_connection_event_outbound.py +0 -0
  738. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_connection_event_scope.py +0 -0
  739. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_connection_event_store.py +0 -0
  740. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_connection_resilience.py +0 -0
  741. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_connections_cli.py +0 -0
  742. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_connections_file.py +0 -0
  743. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_connscale_config.py +0 -0
  744. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_connscale_driver.py +0 -0
  745. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_connscale_profile.py +0 -0
  746. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_consistency.py +0 -0
  747. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_console_alerts.py +0 -0
  748. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_console_auth.py +0 -0
  749. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_console_client.py +0 -0
  750. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_console_dead_letters.py +0 -0
  751. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_console_event_log.py +0 -0
  752. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_console_hardening.py +0 -0
  753. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_console_icon.py +0 -0
  754. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_console_password.py +0 -0
  755. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_console_sessions.py +0 -0
  756. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_console_shards.py +0 -0
  757. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_console_status.py +0 -0
  758. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_console_step_up.py +0 -0
  759. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_console_theme.py +0 -0
  760. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_console_users.py +0 -0
  761. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_console_widgets.py +0 -0
  762. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_content_search.py +0 -0
  763. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_custom_roles.py +0 -0
  764. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_database_connector_integration.py +0 -0
  765. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_database_transport.py +0 -0
  766. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_db_lookup.py +0 -0
  767. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_db_lookup_live_runner.py +0 -0
  768. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_delivery_settings.py +0 -0
  769. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_dependabot_automerge_guardrails.py +0 -0
  770. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_dependency_boundaries.py +0 -0
  771. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_dicom_codec.py +0 -0
  772. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_dicom_scp.py +0 -0
  773. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_dicom_scp_security.py +0 -0
  774. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_dicom_scu.py +0 -0
  775. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_dicom_wiring.py +0 -0
  776. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_dicomweb.py +0 -0
  777. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_docs_runbooks.py +0 -0
  778. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_dr_activation.py +0 -0
  779. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_dr_api_status.py +0 -0
  780. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_dr_failback.py +0 -0
  781. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_dr_rbac.py +0 -0
  782. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_dr_run_profile.py +0 -0
  783. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_dr_seeding.py +0 -0
  784. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_dryrun.py +0 -0
  785. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_dual_control_reload.py +0 -0
  786. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_ed_documents.py +0 -0
  787. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_ed_documents_e2e.py +0 -0
  788. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_egress_allowlist.py +0 -0
  789. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_email_destination.py +0 -0
  790. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_embedded_document_pruning.py +0 -0
  791. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_enginepoll_aggregate.py +0 -0
  792. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_environments.py +0 -0
  793. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_fhir_parsing.py +0 -0
  794. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_fhir_resource.py +0 -0
  795. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_fhir_transport.py +0 -0
  796. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_field_authz.py +0 -0
  797. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_field_authz_metadata.py +0 -0
  798. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_fifo_index_migration.py +0 -0
  799. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_fifo_ordering.py +0 -0
  800. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_frozen_launch_smoke.py +0 -0
  801. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_generate_cli.py +0 -0
  802. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_generated_adt.py +0 -0
  803. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_generators_core.py +0 -0
  804. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_generators_types.py +0 -0
  805. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_group_commit.py +0 -0
  806. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_groups.py +0 -0
  807. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_harness.py +0 -0
  808. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_harness_compose.py +0 -0
  809. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_harness_config.py +0 -0
  810. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_harness_faults.py +0 -0
  811. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_harness_file.py +0 -0
  812. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_harness_monitor.py +0 -0
  813. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_harness_scenarios.py +0 -0
  814. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_hl7_core_features.py +0 -0
  815. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_hl7schema.py +0 -0
  816. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_inbound_bind.py +0 -0
  817. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_ingest_time.py +0 -0
  818. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_inline_fast_path.py +0 -0
  819. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_keyprovider.py +0 -0
  820. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_last_admin_guard.py +0 -0
  821. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_last_resort.py +0 -0
  822. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_leader_tasks.py +0 -0
  823. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_license_notice.py +0 -0
  824. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_listener_tls_exposure.py +0 -0
  825. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_load_config.py +0 -0
  826. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_load_corpus.py +0 -0
  827. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_load_failover_postgres.py +0 -0
  828. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_load_failover_sqlserver.py +0 -0
  829. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_load_failover_unit.py +0 -0
  830. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_load_metrics.py +0 -0
  831. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_load_profile.py +0 -0
  832. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_load_report.py +0 -0
  833. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_load_sender.py +0 -0
  834. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_load_sink.py +0 -0
  835. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_logging.py +0 -0
  836. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_message.py +0 -0
  837. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_message_split.py +0 -0
  838. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_message_timestamps.py +0 -0
  839. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_metrics_exporter.py +0 -0
  840. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_mfa.py +0 -0
  841. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_mllp_encoding_override.py +0 -0
  842. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_mllp_tls.py +0 -0
  843. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_nonhl7_ingress_size_cap.py +0 -0
  844. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_operability_config.py +0 -0
  845. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_outbound_signing.py +0 -0
  846. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_outbound_simulate.py +0 -0
  847. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_packaging.py +0 -0
  848. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_parse_tree.py +0 -0
  849. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_parsing.py +0 -0
  850. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_passthrough.py +0 -0
  851. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_passthrough_graph.py +0 -0
  852. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_payload_agnostic_ingress.py +0 -0
  853. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_per_connection_retention.py +0 -0
  854. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_per_lane_wake.py +0 -0
  855. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_pool_warm.py +0 -0
  856. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_postgres_store.py +0 -0
  857. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_priority_resolution.py +0 -0
  858. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_reconcile_capture.py +0 -0
  859. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_reconcile_compare.py +0 -0
  860. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_reconcile_harness.py +0 -0
  861. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_redaction.py +0 -0
  862. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_reference_sets.py +0 -0
  863. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_reingress.py +0 -0
  864. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_release_console_installer.py +0 -0
  865. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_remotefile_transport.py +0 -0
  866. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_response_capture.py +0 -0
  867. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_rest_transport.py +0 -0
  868. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_restore_verify.py +0 -0
  869. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_retention.py +0 -0
  870. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_run_context.py +0 -0
  871. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_scaffold.py +0 -0
  872. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_scaffold_requirements.py +0 -0
  873. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_scan_forbidden.py +0 -0
  874. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_secrets_dpapi.py +0 -0
  875. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_security_notify.py +0 -0
  876. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_security_static.py +0 -0
  877. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_seq_only_fifo.py +0 -0
  878. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_service_control.py +0 -0
  879. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_sibling_helper_finder.py +0 -0
  880. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_smart_backend.py +0 -0
  881. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_soap_transport.py +0 -0
  882. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_soap_wssecurity.py +0 -0
  883. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_sqlserver_coordinator.py +0 -0
  884. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_sqlserver_cursor_close.py +0 -0
  885. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_sqlserver_schema_init.py +0 -0
  886. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_sqlserver_store.py +0 -0
  887. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_staged_pipeline.py +0 -0
  888. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_startup_attestation.py +0 -0
  889. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_startup_fault_isolation.py +0 -0
  890. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_stats_reset.py +0 -0
  891. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_step_up.py +0 -0
  892. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_store.py +0 -0
  893. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_store_backend.py +0 -0
  894. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_store_encryption.py +0 -0
  895. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_store_file_hardening.py +0 -0
  896. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_store_once_deliver_many.py +0 -0
  897. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_store_once_graph.py +0 -0
  898. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_store_read_pool.py +0 -0
  899. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_store_ssl.py +0 -0
  900. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_summary.py +0 -0
  901. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_supervisor.py +0 -0
  902. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_synchronous_baseline.py +0 -0
  903. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_task_resilience.py +0 -0
  904. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_tcp_transport.py +0 -0
  905. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_tee_cli.py +0 -0
  906. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_tee_compare.py +0 -0
  907. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_tee_correlate.py +0 -0
  908. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_tee_hl7_fields.py +0 -0
  909. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_tee_mefor_api.py +0 -0
  910. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_tee_mllp.py +0 -0
  911. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_tee_relay.py +0 -0
  912. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_tee_report.py +0 -0
  913. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_tee_store.py +0 -0
  914. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_timer_source.py +0 -0
  915. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_timezone.py +0 -0
  916. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_tls_policy.py +0 -0
  917. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_totp.py +0 -0
  918. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_totp_window.py +0 -0
  919. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_transform_offloop.py +0 -0
  920. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_transform_state.py +0 -0
  921. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_transports.py +0 -0
  922. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_update_check.py +0 -0
  923. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_verify.py +0 -0
  924. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_version.py +0 -0
  925. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_win2025_acceptance.py +0 -0
  926. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_wiring.py +0 -0
  927. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_wiring_engine.py +0 -0
  928. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_wiring_reload.py +0 -0
  929. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_wiring_serve.py +0 -0
  930. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_ws_stats_revalidation.py +0 -0
  931. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_x12_parsing.py +0 -0
  932. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_x12_rte.py +0 -0
  933. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_x12_source_ip_allowlist.py +0 -0
  934. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_x12_transport.py +0 -0
  935. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_x12_validate.py +0 -0
  936. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_xml_message.py +0 -0
  937. {messagefoundry-0.2.12 → messagefoundry-0.2.14}/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:
@@ -569,7 +569,7 @@ jobs:
569
569
  # FORCE a below-default pool (4 connections) so the perf_counter-measured acquire-WAIT
570
570
  # histogram (the PRIMARY pool-wait signal) is non-trivial even at small N: ~3N inbound workers
571
571
  # contend for 4 connections, so acquires actually queue and the percentiles populate. The
572
- # default pool (5+) would mask the wall. 4 (not 1-2) is deliberate: GET /status runs
572
+ # default pool (40) would mask the wall. 4 (not 1-2) is deliberate: GET /status runs
573
573
  # db_status()'s four sequential COUNT(*) queries on every poll, and an extremely tiny pool
574
574
  # starves those acquires past the poller's HTTP timeout under the empty-claim herd on a slow
575
575
  # runner — every poll then fails and the drain loops burn the test budget (the PR #675 hang).
@@ -6,6 +6,86 @@ All notable changes to MessageFoundry are documented here. The format follows
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.2.14] — 2026-07-01 — Early Access
10
+
11
+ **Delta security-audit remediation.** A focused security audit of the surface added since the
12
+ 2026-06-10 full review (v0.2.0 → v0.2.13) surfaced seven verified findings; this release fixes all of
13
+ them. No new critical, no SQL injection, no auth bypass, no RCE — the most serious was an
14
+ unauthenticated memory-exhaustion DoS in the new default HL7 parser. Each fix ships with a regression
15
+ test. See [`docs/reviews/DELTA-REVIEW-2026-07-01.md`](docs/reviews/DELTA-REVIEW-2026-07-01.md).
16
+
17
+ ### Security
18
+ - **Bounded the built-in HL7 rich-text repetition escape** (DELTA-01/02;
19
+ [`_builtin_hl7.py`](messagefoundry/parsing/_builtin_hl7.py)). The tolerant built-in parser (now the
20
+ default hot-path backend, ADR 0054) expanded `\.inN\`-style repetition escapes with no cap, so a
21
+ ~15-byte inbound field (`\.in2000000000\`) allocated gigabytes synchronously on the event loop
22
+ **before the ACK** — an unauthenticated OOM/denial-of-service. The count is now clamped
23
+ (`MAX_ESCAPE_REPEAT = 512`), and a malformed count no longer raises out of a field read — that had
24
+ severed the connection and dropped a parseable message with **no disposition**, breaking the
25
+ count-and-log invariant.
26
+ - **XML-DSig `verify()` now requires an explicit trust anchor** (DELTA-03;
27
+ [`parsing/xml/signature.py`](messagefoundry/parsing/xml/signature.py)). Called with neither `x509_cert`
28
+ nor `ca_pem_file`, it previously fell back to signxml's default of trusting **any** certificate that
29
+ chains to the host's system CA store (origin-blind verification); it now raises `ValueError`.
30
+ **Behavior change** for the opt-in `[xml]` codec — a caller must pin the expected signer or a partner
31
+ CA. No in-repo caller relied on the old default.
32
+ - **FhirLookup SMART token endpoint is now egress-gated** (DELTA-04;
33
+ [`[egress].allowed_http`](docs/CONFIGURATION.md)). A `fhir_lookup` connection composed with
34
+ `with_smart_backend()` POSTs a signed `client_assertion` to its `smart_token_url`; that host was not
35
+ checked against the egress allowlist (only the FHIR base host was), so a crafted `smart_token_url`
36
+ could exfiltrate the assertion to an un-allowlisted host. The lookup and outbound arms now share one
37
+ gate ([ADR 0043](docs/adr/0043-fhir-read-lookup.md) §D3).
38
+ - **Support bundle no longer discloses the store host/database; its log redaction was widened**
39
+ (DELTA-05/07; [`support/`](messagefoundry/support/)). The offline support bundle's `status.json`
40
+ carried the SQL Server `host/database` verbatim — it is now reduced to the backend kind (file basename
41
+ only for SQLite). The bundled-log redactor previously used a fixed HL7-segment allowlist with no
42
+ free-text name/DOB heuristics; it now delegates to the engine redactor
43
+ ([`messagefoundry.redaction`](messagefoundry/redaction.py)) for parity with stored-error redaction.
44
+ - **Inbound HTTP listener rejects ambiguous framing** (DELTA-06;
45
+ [`transports/http_listener.py`](messagefoundry/transports/http_listener.py)). A duplicate
46
+ `Content-Length`, a duplicate `Transfer-Encoding`, or the two present together are now refused with
47
+ `400` per RFC 7230 §3.3.3 — closing an HTTP request-smuggling / desync surface behind a fronting proxy.
48
+
49
+ ## [0.2.13] — 2026-07-01 — Early Access
50
+
51
+ The **store connection-scale sizing** wave — right-size the server-DB connection pool to the measured
52
+ inverted-U optimum, guard against over-provisioning, and guarantee the message store stays unified. All
53
+ changes are **server-DB-only**; the single-node SQLite default is unaffected.
54
+
55
+ ### Added
56
+ - **Soft store-pool over-provisioning warning** ([ADR 0062](docs/adr/0062-default-store-pool-size.md)) — a
57
+ server-DB engine now logs an advisory `WARNING` at graph start if `[store].pool_size` is sized past the
58
+ connection-pool inverted-U optimum: at/beyond the ~80 catastrophic cliff, or oversized for the engine's
59
+ inbound-interface count (`~2.5 ×` interfaces). Advisory only — it never blocks startup; SQLite has no pool
60
+ so it is skipped, and the default (40) never trips it. Guards the "set a huge pool for 1500 connections"
61
+ footgun (which is a *sharding* problem, not a pool one).
62
+
63
+ ### Changed
64
+ - **Default server-DB store connection pool size raised 5 → 40** ([`[store].pool_size`](docs/CONFIGURATION.md),
65
+ env `MEFOR_STORE_POOL_SIZE`; [ADR 0062](docs/adr/0062-default-store-pool-size.md)). A three-sweep
66
+ connection-scale study found the pool is an **inverted-U**: it helps up to ~40 per engine, and
67
+ **over-provisioning is catastrophic** — past ~40 the extra connections thrash one shared SQL instance
68
+ (WRITELOG serialization + per-message finalizer applocks), and ACK latency explodes 30–90×. 40 is the
69
+ measured optimum — **do not set it higher to chase connection count.** **Server-DB backends only** (Postgres
70
+ / SQL Server) — the default **single-node SQLite** backend is unaffected (fixed read pool + single writer;
71
+ never reads `pool_size`). **Existing explicit `[store].pool_size` / `MEFOR_STORE_POOL_SIZE` values are
72
+ unchanged** — only the unset default moves. Behavioral deltas on server-DB engines: ~**8×** the steady-state
73
+ DB sessions per engine, and the startup pool pre-warm rises from ~2 to **~20 connections per engine**
74
+ (bounded by `warm_pool_timeout`, off the intake path, self-releasing, never raises). **Connection-budget
75
+ caution:** `pool_size` is **per engine**, so on a shared server DB `engines × pool_size` all count against
76
+ one `max_connections` (Postgres default ~100 → ~2 engines at 40) — raise `max_connections`, front the DB
77
+ with a pooler (PgBouncer), or use SQL Server; or size `pool_size` down. **Never split the store** to fit the
78
+ budget ([ADR 0063](docs/adr/0063-no-split-store-unified-store-for-sharding.md)). See
79
+ [`docs/DEPLOY-SERVER-DB.md`](docs/DEPLOY-SERVER-DB.md) §3.
80
+ - **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),
81
+ amends [ADR 0037](docs/adr/0037-multi-process-sharding-l3.md)). `messagefoundry supervise` with **more than
82
+ one shard** on a **SQLite** store is now **refused at startup** — the old SQLite-file-per-shard behavior
83
+ split the message store into one database per shard, fragmenting search/reporting/audit/replay. A sharded
84
+ deployment must share **one unified store**, so `>1` shard requires `[store].backend = 'postgres'` or
85
+ `'sqlserver'` (every shard connects to the same database). **A single un-sharded engine on SQLite is
86
+ unaffected** (byte-identical to `serve`). Migrating an existing SQLite-sharded deployment: drain each shard
87
+ store to empty, then re-point `supervise` at one server DB (not an offline store merge).
88
+
9
89
  ## [0.2.12] — 2026-07-01 — Early Access
10
90
 
11
91
  The **throughput & connection-scale wave.** The staged-queue per-message commit chain is shortened
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: messagefoundry
3
- Version: 0.2.12
3
+ Version: 0.2.14
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
@@ -426,6 +426,14 @@ client. "Moderate risk"; not verifiable in offscreen Qt tests, so it deserves a
426
426
  **FIFO per outbound connection** (simple, safe). Per-key ordering is the leading-edge refinement to
427
427
  revisit once FIFO is solid and a real workload needs the parallelism.
428
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
+
429
437
  **What:** preserve order only *within* a partition key (e.g. MRN / encounter / sending facility)
430
438
  while processing *across* keys in parallel — the sweet spot between strict per-connection FIFO (safe,
431
439
  serial) and unordered parallelism (fast, unsafe). Same idiom as a broker partition key. Recent
@@ -3063,11 +3071,11 @@ parity analysis.
3063
3071
 
3064
3072
  **Cluster:** Minor gaps. **Priority:** P3. **Verdict:** demand-gate.
3065
3073
 
3066
- **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).)*
3067
3075
 
3068
- **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.
3069
3077
 
3070
- **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.
3071
3079
 
3072
3080
  **Source:** promoted from [#52](#52-corepoint-capability-parity-gaps--prioritized-roadmap-input-2026-06-27) gap synthesis (adversarially reviewed, 2026-06-28).
3073
3081
 
@@ -3559,6 +3567,81 @@ reconciled the same day.
3559
3567
 
3560
3568
  ---
3561
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
+
3562
3645
  *Everything else from the 2026-06-10 full-codebase review (1 critical, 13 high, 33 medium, 31 low —
3563
3646
  78 findings) has been remediated; see the review report's §6 action order. The two items it still
3564
3647
  sourced — **#1 (SQL Server concurrency)** and **#2 (console off-thread)** — are now both **DONE**
@@ -77,7 +77,7 @@ is verified against [`config/settings.py`](../messagefoundry/config/settings.py)
77
77
  | `MEFOR_STORE_DATABASE` | `[store].database` | `messagefoundry` | the database name |
78
78
  | `MEFOR_STORE_USERNAME` | `[store].username` | `mefor` | the login |
79
79
  | `MEFOR_STORE_PASSWORD` | `[store].password` | *(secret)* | **env/secret only** — never the config file |
80
- | `MEFOR_STORE_POOL_SIZE` | `[store].pool_size` | `5` | `>= 2` **required** under `[cluster]`, `>= 3` recommended |
80
+ | `MEFOR_STORE_POOL_SIZE` | `[store].pool_size` | `40` | default 40, the inverted-U optimum — don't set higher ([ADR 0062](adr/0062-default-store-pool-size.md)); `>= 2` under `[cluster]`. **Budget:** `engines × pool_size` hit one managed-PG `max_connections` (~2 engines at 40/100) — raise it, add a pooler, or size down; never split the store ([DEPLOY-SERVER-DB.md](DEPLOY-SERVER-DB.md) §3) |
81
81
  | `MEFOR_CLUSTER_ENABLED` | `[cluster].enabled` | `true` | turns on the leader lease + graph gating |
82
82
  | `MEFOR_STORE_REQUIRE_ENCRYPTION` | `[store].require_encryption` | `true` | fail-closed: refuse to start keyless (PHI at rest) |
83
83
  | `MEFOR_STORE_ENCRYPTION_KEY` | `[store].encryption_key` | *(secret)* | base64 32 bytes — `messagefoundry gen-key` |
@@ -42,7 +42,7 @@ backend = "postgres" # or "sqlserver"
42
42
  server = "db.internal"
43
43
  database = "messagefoundry"
44
44
  username = "mefor"
45
- pool_size = 5 # >= 2
45
+ pool_size = 40 # default (ADR 0062); >= 2 under [cluster]
46
46
 
47
47
  [cluster]
48
48
  enabled = true
@@ -66,11 +66,11 @@ backend that consumes the server-DB keys lands incrementally (the settings + val
66
66
  | `username` | str | — | server DBs (required when `auth = sql`) |
67
67
  | `password` | secret | — | **env only** (`MEFOR_STORE_PASSWORD`) |
68
68
  | `encrypt`, `trust_server_certificate` | bool | `true`/`false` | TLS to the DB |
69
- | `pool_size` | int | 5 | server DBs |
69
+ | `pool_size` | int | 40 | server DBs — **server-DB only** (no-op on SQLite). The inverted-U optimum (raised from 5; do **not** set higher — over-provisioning is catastrophic, [ADR 0062](adr/0062-default-store-pool-size.md)). **Per engine:** `engines × pool_size` share one `max_connections` — see [`DEPLOY-SERVER-DB.md`](DEPLOY-SERVER-DB.md) §3 |
70
70
  | `connect_timeout`, `command_timeout` | int (s) | 15 / 30 | server DBs |
71
71
  | `warm_pool` | bool | `true` | server DBs — pre-open pooled connections in the background on graph start/promotion so a connection burst (the post-promotion delivery workers, or a cold start) finds them warm instead of paying cold connects (TCP+TLS+login). Best-effort, self-releasing, **no-op on SQLite**. On by default (it touches no commit/correctness seam); set `false` to opt out on a connection-constrained/licensed site. |
72
72
  | `warm_pool_timeout` | num (s) | 15 | server DBs — upper bound on the background warm-up; on expiry it logs and continues with a partially warm pool. Must be `> 0`. A **clustered** server-DB node also rejects an **explicit** value `>= [cluster].leader_fence_timeout_seconds` (a warm should finish within the leadership term that started it); the default (15 < the 20 fence) never trips this. |
73
- | `warm_pool_target` | int | — | server DBs — how many connections to pre-open. Unset (default) = a safe fraction of the pool (`min(pool_size-1, pool_size//2)`), so the warm never pins more than half the pool; an explicit value is clamped to `pool_size-1`. A pool of 1 is never warmed. |
73
+ | `warm_pool_target` | int | — | server DBs — how many connections to pre-open. Unset (default) = a safe fraction of the pool (`min(pool_size-1, pool_size//2)`), so the warm never pins more than half the pool; an explicit value is clamped to `pool_size-1`. A pool of 1 is never warmed. At the default `pool_size = 40` this is `min(39, 20) = 20` pre-opened per server-DB engine at startup. |
74
74
  | `db_schema`, `application_name` | str | — / `messagefoundry` | optional (`db_schema` ⇒ env `MEFOR_STORE_DB_SCHEMA`) |
75
75
 
76
76
  > Selecting `backend = "sqlserver"` validates that `server`/`database` (and `username` when
@@ -60,12 +60,44 @@ Configure `[store]` in the service settings (full reference: [`CONFIGURATION.md`
60
60
 
61
61
  ## 3. Pool sizing
62
62
 
63
+ The default `[store].pool_size` is **40** (server-DB only; a no-op on the SQLite default, which uses a fixed
64
+ read pool + single writer). Raised from 5 in [ADR 0062](adr/0062-default-store-pool-size.md): the
65
+ connection-scale study found the pool is an **inverted-U** — it helps up to ~40 per engine, and
66
+ **over-provisioning is catastrophic** (past ~40 the extra connections thrash one shared instance — WRITELOG +
67
+ finalizer applocks — and ACK latency explodes 30–90×). 40 is the measured **optimum**, not a floor: **do not
68
+ set it higher to chase connection count** (that path is refuted — scale is *sharding*, not a bigger pool).
69
+ Tunable via `[store].pool_size` / `MEFOR_STORE_POOL_SIZE`; re-measure for a materially different deployment
70
+ shape (transform cost, message size, disk, SQL-box sizing).
71
+
63
72
  - **Single node:** `[store].pool_size ≥ 3` recommended. Each stage handoff is a committed round-trip and
64
73
  the per-stage workers (router, transform, per-outbound delivery) run concurrently against the pool — a
65
74
  pool of 1 serializes them against intake.
66
75
  - **Clustered (active-passive):** `pool_size ≥ 2` is **required** (a cross-section validator refuses a
67
76
  smaller pool when `[cluster].enabled`), `≥ 3` recommended — a clustered node also drives the
68
77
  membership / lease-renewal maintenance loop against the pool.
78
+ - **Connection-budget ceiling (important on a shared server DB):** `pool_size` is **per engine**. Every
79
+ Postgres/SQL Server engine that shares the store — multi-process shards (all connect to the *same*
80
+ database) and the active-passive standby's warm pool — counts against one server limit. So budget
81
+ **peak connections ≈ engines × `pool_size`** (+ the standby's `warm_pool_target`) and keep it well under
82
+ the DB server's `max_connections` (**Postgres default ~100**; SQL Server is bounded by sessions/memory).
83
+ At the default `pool_size = 40`, ~2 co-located engines already reach ~100 — **a config that connected at
84
+ 5 can fail to connect at 40.** Co-locating several server-DB engines (a sharded fan-out)? **Raise
85
+ `max_connections`, front the DB with a connection pooler (PgBouncer), or use SQL Server** (more sessions);
86
+ or size `pool_size` **down**. **Do NOT give each shard its own database/server** — that is a split store,
87
+ which is disallowed ([ADR 0063](adr/0063-no-split-store-unified-store-for-sharding.md)); one unified store
88
+ scales *vertically* (faster box/disk) + *cheaper-per-message*, never by fragmenting. Also budget the startup
89
+ warm burst (~20 pre-opened/engine at the default; set `warm_pool_target` or `warm_pool = false` on a
90
+ connection-/license-constrained site).
91
+ - **Commit-depth at high interface counts (`fifo_claim_batch`):** the pool is not the only per-engine wall —
92
+ above ~48 inbound interfaces an engine becomes bound by *commits per message* on the shared store (WRITELOG
93
+ + the per-message finalizer applock), which a bigger pool **cannot** fix. For a **high-interface-count,
94
+ commit-bound** server-DB engine, set **`[store].fifo_claim_batch = 8`** (range 8–16, [ADR 0058](adr/0058-batch-claim-fifo-prefix.md)):
95
+ the INGRESS/ROUTED FIFO claim then takes the contiguous due head-prefix in one commit instead of one-per-row,
96
+ amortizing the claim commit toward `1/N` on backlogged lanes. It **preserves strict per-lane FIFO (#285) +
97
+ at-least-once**, is **byte-identical at `1` (the default)** and on caught-up (low-backlog) lanes, and never
98
+ batches the outbound/delivery claim. Size it against worst-case message size (N decrypted bodies are resident
99
+ per lane between the claim and its N handoffs). This — not the pool — is the *raise-interfaces-per-engine*
100
+ lever.
69
101
 
70
102
  ---
71
103
 
@@ -173,7 +205,8 @@ update the pin in lockstep — pin the **CA**, not the leaf, to keep rotations m
173
205
  - [ ] `[store].encrypt = true` (and **not** `MEFOR_ALLOW_INSECURE_TLS`) for any PHI deployment.
174
206
  - [ ] DB CA trusted so `trust_server_certificate = false` validates — Postgres `ssl_root_cert` **or**
175
207
  machine-store import; SQL Server **machine store only** (§5). Never `TrustServerCertificate=true`.
176
- - [ ] `[store].pool_size 3` (≥ 2 hard-required in cluster mode).
208
+ - [ ] `[store].pool_size` sized (default **40**, server-DB only; ≥ 2 hard-required in cluster mode) **and**
209
+ the connection budget checked: engines × `pool_size` (+ standby warm) well under the DB `max_connections` (§3).
177
210
  - [ ] Bootstrap login can create the schema on first open, **or** the schema is pre-created.
178
211
  - [ ] SQL Server: RCSI enabled (auto, or pre-enabled by a DBA).
179
212
  - [ ] Source store drained (`in_pipeline → 0`) before cutover — greenfield, no in-place migration.
@@ -422,7 +422,7 @@ The built-in HA model is **active-passive failover** (the Corepoint/Rhapsody mod
422
422
  backend = "postgres" # or "sqlserver"; SQLite cannot cluster
423
423
  server = "db.internal"
424
424
  database = "messagefoundry"
425
- pool_size = 5 # >= 2 (>= 3 preferred)
425
+ pool_size = 40 # default (ADR 0062); >= 2 (>= 3 preferred)
426
426
 
427
427
  [cluster]
428
428
  enabled = true