messagefoundry 0.2.5__tar.gz → 0.2.7__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 (792) hide show
  1. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/.gitattributes +1 -0
  2. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/.github/dependabot.yml +4 -1
  3. messagefoundry-0.2.7/.github/workflows/dependabot-auto-merge.yml +165 -0
  4. messagefoundry-0.2.7/.github/workflows/freethread-smoke.yml +95 -0
  5. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/.github/workflows/release.yml +16 -1
  6. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/.gitignore +5 -0
  7. messagefoundry-0.2.7/.mefor-hooks/pre-commit +25 -0
  8. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/CHANGELOG.md +99 -1
  9. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/PKG-INFO +29 -22
  10. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/README.md +24 -21
  11. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/BACKLOG.md +291 -0
  12. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/CONNECTIONS.md +23 -1
  13. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/PHI.md +8 -2
  14. messagefoundry-0.2.7/docs/SECURITY-REMEDIATION-LEDGER.md +84 -0
  15. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/SECURITY.md +12 -0
  16. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/SERVICE.md +21 -2
  17. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/Secure_AI_Development_Standards.md +16 -0
  18. messagefoundry-0.2.7/docs/adr/0034-static-analysis-triage-policy-accepted-risk-register.md +80 -0
  19. messagefoundry-0.2.7/docs/adr/0035-ide-extension-workspace-trust-and-scope.md +102 -0
  20. messagefoundry-0.2.7/docs/adr/0036-windows-config-source-trust.md +107 -0
  21. messagefoundry-0.2.7/docs/adr/0037-multi-process-sharding-l3.md +106 -0
  22. messagefoundry-0.2.7/docs/adr/0038-internal-pass-through-connector.md +111 -0
  23. messagefoundry-0.2.7/docs/adr/0039-database-tier-sharding-l5.md +110 -0
  24. messagefoundry-0.2.7/docs/adr/0040-free-threaded-engine-support.md +92 -0
  25. messagefoundry-0.2.7/docs/adr/0041-load-path-attestation-and-change-attribution.md +219 -0
  26. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/adr/README.md +8 -0
  27. messagefoundry-0.2.7/docs/design/dbshard.md +289 -0
  28. messagefoundry-0.2.7/docs/design/freethread.md +253 -0
  29. messagefoundry-0.2.7/docs/design/multiproc.md +53 -0
  30. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/security/ASVS-L2-PHASE0-CHANGES.md +1 -0
  31. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/load/profiles/README.md +1 -0
  32. messagefoundry-0.2.7/harness/load/profiles/adt-fanout-stress.toml +116 -0
  33. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/load/profiles/reference.toml +48 -0
  34. messagefoundry-0.2.7/ide/.gitignore +7 -0
  35. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/ide/.vscodeignore +4 -0
  36. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/ide/README.md +21 -7
  37. messagefoundry-0.2.7/ide/media/icon-amber.svg +5 -0
  38. messagefoundry-0.2.7/ide/package-lock.json +5685 -0
  39. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/ide/package.json +86 -12
  40. messagefoundry-0.2.7/ide/snippets/messagefoundry.code-snippets +145 -0
  41. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/ide/src/aiPolicy.ts +51 -14
  42. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/ide/src/auth.ts +8 -0
  43. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/ide/src/chat.ts +1 -1
  44. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/ide/src/cli.ts +88 -17
  45. messagefoundry-0.2.7/ide/src/editorToolbar.ts +122 -0
  46. messagefoundry-0.2.7/ide/src/engineTarget.ts +44 -0
  47. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/ide/src/extension.ts +15 -3
  48. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/ide/src/home.ts +34 -11
  49. messagefoundry-0.2.7/ide/src/insertElement.ts +78 -0
  50. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/ide/src/promote.ts +55 -13
  51. messagefoundry-0.2.7/ide/src/promoteTarget.ts +55 -0
  52. messagefoundry-0.2.7/ide/src/test/suite/ai-policy.test.ts +65 -0
  53. messagefoundry-0.2.7/ide/src/test/suite/editor-toolbar.test.ts +101 -0
  54. messagefoundry-0.2.7/ide/src/test/suite/engine-target.test.ts +43 -0
  55. messagefoundry-0.2.7/ide/src/test/suite/insert-element.test.ts +83 -0
  56. messagefoundry-0.2.7/ide/src/test/suite/promote-target.test.ts +85 -0
  57. messagefoundry-0.2.7/ide/src/test/suite/pythonpath.test.ts +79 -0
  58. messagefoundry-0.2.7/ide/src/test/suite/settings-scope.test.ts +37 -0
  59. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/ide/src/testBench.ts +9 -1
  60. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/__init__.py +3 -1
  61. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/__main__.py +75 -0
  62. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/api/app.py +113 -21
  63. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/api/auth_routes.py +21 -0
  64. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/api/field_authz.py +9 -3
  65. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/api/security.py +5 -1
  66. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/auth/permissions.py +4 -1
  67. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/auth/service.py +4 -1
  68. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/auth/totp.py +8 -1
  69. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/checks.py +57 -2
  70. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/config/connections_file.py +2 -0
  71. messagefoundry-0.2.7/messagefoundry/config/fingerprint.py +185 -0
  72. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/config/models.py +1 -0
  73. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/config/settings.py +23 -0
  74. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/config/wiring.py +410 -23
  75. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/console/__main__.py +53 -2
  76. messagefoundry-0.2.7/messagefoundry/console/shards.py +224 -0
  77. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/console/shell.py +171 -33
  78. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/logging_setup.py +5 -3
  79. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/pipeline/dryrun.py +81 -13
  80. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/pipeline/engine.py +35 -1
  81. messagefoundry-0.2.7/messagefoundry/pipeline/sharding.py +94 -0
  82. messagefoundry-0.2.7/messagefoundry/pipeline/supervisor.py +330 -0
  83. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/pipeline/wiring_runner.py +173 -25
  84. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/redaction.py +37 -7
  85. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/scaffold.py +46 -0
  86. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/store/base.py +30 -2
  87. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/store/postgres.py +211 -3
  88. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/store/sqlserver.py +211 -3
  89. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/store/store.py +487 -27
  90. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/transports/__init__.py +1 -0
  91. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/transports/database.py +74 -6
  92. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/transports/dicom.py +48 -4
  93. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/transports/fhir.py +42 -8
  94. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/transports/file.py +4 -1
  95. messagefoundry-0.2.7/messagefoundry/transports/passthrough.py +68 -0
  96. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/transports/remotefile.py +57 -3
  97. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/transports/x12.py +12 -0
  98. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/pyproject.toml +7 -0
  99. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/scripts/security/crypto_inventory_check.py +7 -0
  100. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/scripts/service/install-service.ps1 +48 -1
  101. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/conftest.py +28 -0
  102. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_api_reload.py +21 -0
  103. messagefoundry-0.2.7/tests/test_bootstrap_admin_perms.py +77 -0
  104. messagefoundry-0.2.7/tests/test_checks_lint.py +66 -0
  105. messagefoundry-0.2.7/tests/test_config_fingerprint.py +124 -0
  106. messagefoundry-0.2.7/tests/test_config_source_trust.py +214 -0
  107. messagefoundry-0.2.7/tests/test_connection_event_scope.py +255 -0
  108. messagefoundry-0.2.7/tests/test_console_shards.py +257 -0
  109. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_db_lookup.py +73 -0
  110. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_db_lookup_live_runner.py +5 -1
  111. messagefoundry-0.2.7/tests/test_dependabot_automerge_guardrails.py +101 -0
  112. messagefoundry-0.2.7/tests/test_dicom_scp_security.py +197 -0
  113. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_dryrun.py +106 -4
  114. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_fhir_transport.py +43 -0
  115. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_field_authz.py +2 -2
  116. messagefoundry-0.2.7/tests/test_field_authz_metadata.py +116 -0
  117. messagefoundry-0.2.7/tests/test_last_admin_guard.py +150 -0
  118. messagefoundry-0.2.7/tests/test_listener_tls_exposure.py +60 -0
  119. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_load_profile.py +37 -2
  120. messagefoundry-0.2.7/tests/test_nonhl7_ingress_size_cap.py +145 -0
  121. messagefoundry-0.2.7/tests/test_passthrough.py +674 -0
  122. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_postgres_store.py +194 -0
  123. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_redaction.py +51 -0
  124. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_remotefile_transport.py +79 -0
  125. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_scaffold.py +11 -0
  126. messagefoundry-0.2.7/tests/test_scaffold_requirements.py +54 -0
  127. messagefoundry-0.2.7/tests/test_sharding.py +218 -0
  128. messagefoundry-0.2.7/tests/test_sibling_helper_finder.py +98 -0
  129. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_sqlserver_store.py +194 -0
  130. messagefoundry-0.2.7/tests/test_store_once_deliver_many.py +285 -0
  131. messagefoundry-0.2.7/tests/test_supervisor.py +202 -0
  132. messagefoundry-0.2.7/tests/test_totp_window.py +75 -0
  133. messagefoundry-0.2.7/tests/test_transform_offloop.py +202 -0
  134. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_transports.py +23 -0
  135. messagefoundry-0.2.7/tests/test_ws_stats_revalidation.py +155 -0
  136. messagefoundry-0.2.7/tests/test_x12_source_ip_allowlist.py +170 -0
  137. messagefoundry-0.2.5/.github/workflows/dependabot-auto-merge.yml +0 -58
  138. messagefoundry-0.2.5/ide/.gitignore +0 -5
  139. messagefoundry-0.2.5/ide/package-lock.json +0 -2234
  140. messagefoundry-0.2.5/ide/snippets/messagefoundry.code-snippets +0 -37
  141. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/.claude/settings.json +0 -0
  142. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/.dockerignore +0 -0
  143. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/.github/CODEOWNERS +0 -0
  144. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  145. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  146. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  147. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  148. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/.github/SECURITY.md +0 -0
  149. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/.github/workflows/benchmark.yml +0 -0
  150. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/.github/workflows/ci.yml +0 -0
  151. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/.github/workflows/cla.yml +0 -0
  152. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/.github/workflows/codeql.yml +0 -0
  153. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/.github/workflows/dependabot-lock-resync.yml +0 -0
  154. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/.github/workflows/release-sync-check.yml +0 -0
  155. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/.github/workflows/scorecard.yml +0 -0
  156. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/.github/workflows/security.yml +0 -0
  157. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/.github/workflows/vuln-metrics.yml +0 -0
  158. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/.github/zizmor.yml +0 -0
  159. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/.gitleaks.toml +0 -0
  160. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/.pre-commit-config.yaml +0 -0
  161. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/.semgrep/messagefoundry.yml +0 -0
  162. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/CLA.md +0 -0
  163. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/CLAUDE.md +0 -0
  164. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/CODE_OF_CONDUCT.md +0 -0
  165. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/COMMERCIAL-LICENSE.md +0 -0
  166. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/CONTRIBUTING.md +0 -0
  167. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/GOVERNANCE.md +0 -0
  168. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/LICENSE +0 -0
  169. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/MAINTAINERS.md +0 -0
  170. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/NOTICE +0 -0
  171. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docker/Dockerfile +0 -0
  172. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docker/README.md +0 -0
  173. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docker/compose.yaml +0 -0
  174. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docker/k8s/secret.example.yaml +0 -0
  175. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docker/k8s/statefulset.yaml +0 -0
  176. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docker/locks/requirements-core.lock +0 -0
  177. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docker/locks/requirements-sqlserver.lock +0 -0
  178. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docker/secrets.env.example +0 -0
  179. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docker/smoke/Dockerfile +0 -0
  180. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docker/smoke/config/IB_Test_ADT.py +0 -0
  181. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docker/smoke/send_adt.py +0 -0
  182. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/ADOPTER-CI.md +0 -0
  183. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/AI.md +0 -0
  184. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/ARCHITECTURE.md +0 -0
  185. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/CI-QUALITY.md +0 -0
  186. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/CLUSTERING.md +0 -0
  187. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/CODESETS.md +0 -0
  188. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/CONFIGURATION.md +0 -0
  189. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/CONTAINER-EXPOSURE-EVALUATION.md +0 -0
  190. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/CONTRIBUTOR-FIRST-ISSUES.md +0 -0
  191. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/CONTRIBUTOR-PROGRAM-PLAN.md +0 -0
  192. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/COUNSEL-ENGAGEMENT-BRIEF.md +0 -0
  193. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/DEPLOY-SERVER-DB.md +0 -0
  194. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/DEPLOYMENT.md +0 -0
  195. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/DICOM.md +0 -0
  196. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/DUAL_LICENSING_PLAN.md +0 -0
  197. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/EARLY-ADOPTER-GUIDE.md +0 -0
  198. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/FEATURE-MAP.md +0 -0
  199. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/HL7-VALIDATION.md +0 -0
  200. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/INSTALL-GUIDE.md +0 -0
  201. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/LOAD-TESTING.md +0 -0
  202. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/MENTAL-MODEL.md +0 -0
  203. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/MessageFoundry-Mental-Model.docx +0 -0
  204. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/REMOTE-CONSOLE-CUSTOMER-GUIDE.md +0 -0
  205. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/REMOTE-CONSOLE.md +0 -0
  206. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/SUPPORT-POLICY.md +0 -0
  207. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/SYSTEM-REQUIREMENTS.md +0 -0
  208. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/Secure_Development_Standards.md +0 -0
  209. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/TEE-RELAY.md +0 -0
  210. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/THROUGHPUT-IMPROVEMENTS.md +0 -0
  211. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/USER-GUIDE.md +0 -0
  212. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/WORKTREES.md +0 -0
  213. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/adr/0001-staged-pipeline-architecture.md +0 -0
  214. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/adr/0002-phase2-transport-security-and-strong-auth.md +0 -0
  215. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/adr/0003-non-hl7-transports-database-rest-soap.md +0 -0
  216. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/adr/0004-payload-agnostic-ingress.md +0 -0
  217. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/adr/0005-transform-accessible-state.md +0 -0
  218. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/adr/0006-external-data-lookups.md +0 -0
  219. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/adr/0007-gui-manageable-connections-toml.md +0 -0
  220. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/adr/0008-cluster-observability-api.md +0 -0
  221. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/adr/0009-run-scoped-context-providers.md +0 -0
  222. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/adr/0010-handler-callable-db-lookup.md +0 -0
  223. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/adr/0011-timer-scheduled-source.md +0 -0
  224. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/adr/0012-x12-edi-codec.md +0 -0
  225. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/adr/0013-increment-2-reingress-design.md +0 -0
  226. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/adr/0013-query-response-orchestration.md +0 -0
  227. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/adr/0014-alerting-rules-engine.md +0 -0
  228. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/adr/0015-ws-soap-outbound-mtls-wssecurity.md +0 -0
  229. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/adr/0016-synchronous-x12-request-response.md +0 -0
  230. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/adr/0017-consumer-deployment-model.md +0 -0
  231. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/adr/0018-per-message-signatures-accepted-risk.md +0 -0
  232. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/adr/0019-pluggable-keyprovider-hsm-kms-vault.md +0 -0
  233. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/adr/0020-protocol-diagnostic-capture.md +0 -0
  234. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/adr/0021-inbound-ack-nak-capture-response-sent.md +0 -0
  235. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/adr/0022-fhir-resource-codec-rest-client.md +0 -0
  236. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/adr/0024-smart-backend-services-token-provider.md +0 -0
  237. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/adr/0025-dicom-codec-store-connectors.md +0 -0
  238. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/adr/0026-off-box-egress-update-check.md +0 -0
  239. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/adr/0028-base64-binary-carriage-codec.md +0 -0
  240. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/adr/0030-anonymization-test-harness-tee.md +0 -0
  241. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/adr/0031-startup-connection-fault-isolation.md +0 -0
  242. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/adr/0032-console-desktop-launch.md +0 -0
  243. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/adr/0033-gui-manageable-code-sets.md +0 -0
  244. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/adr/TEMPLATE.md +0 -0
  245. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/architecture-components.png +0 -0
  246. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/architecture-components.svg +0 -0
  247. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/architecture-config-graph.png +0 -0
  248. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/architecture-config-graph.svg +0 -0
  249. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/architecture-diagram.md +0 -0
  250. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/architecture-message-flow.png +0 -0
  251. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/architecture-message-flow.svg +0 -0
  252. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/architecture-topology.png +0 -0
  253. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/architecture-topology.svg +0 -0
  254. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/benchmarks/TUNING-BASELINE.md +0 -0
  255. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/benchmarks/results/2026-06-16-ci-linux/environment.txt +0 -0
  256. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/benchmarks/results/2026-06-16-ci-linux/failover-postgres.json +0 -0
  257. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/benchmarks/results/2026-06-16-ci-linux/failover-sqlserver.json +0 -0
  258. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/benchmarks/results/2026-06-16-ci-linux/reference-postgres.json +0 -0
  259. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/benchmarks/results/2026-06-16-ci-linux/reference-sqlite.json +0 -0
  260. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/benchmarks/results/2026-06-16-ci-linux/reference-sqlserver.json +0 -0
  261. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/benchmarks/step-b-write-amplification.md +0 -0
  262. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/hl7-message-ordering-reference.md +0 -0
  263. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/message-ordering-design.md +0 -0
  264. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/releases/ASVS-OPTION-A-MULTISESSION-PLAN.md +0 -0
  265. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/releases/ASVS-PARTIALS-SWEEP-MULTISESSION-PLAN.md +0 -0
  266. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/releases/DOGFOOD-BACKLOG-MULTISESSION-PLAN.md +0 -0
  267. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/releases/MULTISESSION-PLAN-3.md +0 -0
  268. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/releases/MULTISESSION-PLAN-v0.2.md +0 -0
  269. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/releases/MULTISESSION-PLAN.md +0 -0
  270. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/releases/PLAN-3-LANE-HANDOFFS.md +0 -0
  271. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/releases/V0.2-LANE-HANDOFFS.md +0 -0
  272. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/releases/v0.1-EXECUTION-PLAN.md +0 -0
  273. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/releases/v0.1-PLAN.md +0 -0
  274. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/releases/v0.1.0-PRETAG-CHECKLIST.md +0 -0
  275. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/research/cloud-deployment-research-2026-06.md +0 -0
  276. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/research/config-ux-review.md +0 -0
  277. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/research/non-hl7-transform-components.md +0 -0
  278. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/reviews/DEPENDENCY-INFOSEC-POSTURE-2026-06-23.md +0 -0
  279. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/reviews/FULL-REVIEW-2026-06-10.md +0 -0
  280. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/security/ADVISORY-PROCESS.md +0 -0
  281. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/security/ASVS-FAILS-REMEDIATION-PLAN.md +0 -0
  282. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/security/ASVS-L2-REMEDIATION-PLAN.md +0 -0
  283. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/security/ASVS-L3-ASSESSMENT.md +0 -0
  284. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/security/ASVS-L3-REMEDIATION-PLAN.md +0 -0
  285. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/security/ASVS-L3-STATUS.md +0 -0
  286. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/security/BEYOND-ASVS-L3-ONEPAGE.md +0 -0
  287. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/security/BEYOND-ASVS-L3-REMEDIATION-PLAN-ONEPAGE.md +0 -0
  288. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/security/BEYOND-ASVS-L3-REMEDIATION-PLAN.md +0 -0
  289. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/security/BEYOND-ASVS-L3.md +0 -0
  290. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/security/DEP-CVE-RUNBOOK.md +0 -0
  291. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/security/DEPENDENCY-METRICS.md +0 -0
  292. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/security/MEFOR-Code-Review-Checklist.xlsx +0 -0
  293. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/security/PHASE-8C-RBAC.md +0 -0
  294. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/security/PUBLISHING.md +0 -0
  295. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/security/RCA-TEMPLATE.md +0 -0
  296. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/security/RELEASE-GATE.md +0 -0
  297. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/security/REMEDIATION-PLAN.md +0 -0
  298. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/security/REVIEW-2026-06-07.md +0 -0
  299. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/security/SDS-CONFORMANCE-REVIEW-2026-06-12.md +0 -0
  300. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/security/SDS-REMEDIATION-PLAN.md +0 -0
  301. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/security/SECURITY-POSTURE.md +0 -0
  302. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/security/SOUP-DEPENDENCY-HANDLING.md +0 -0
  303. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/security/SOUP-REVIEW-2026-06-18.md +0 -0
  304. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/security/SOUP-REVIEW-PROCEDURE.md +0 -0
  305. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/security/THREAT-MODEL.md +0 -0
  306. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/testing/VERIFY.md +0 -0
  307. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/testing/WIN2025-ACCEPTANCE.md +0 -0
  308. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/testing/WIN2025-TEST-MATRIX.md +0 -0
  309. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/docs/testing/WIN2025-TEST-PLAN.md +0 -0
  310. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/environments/dev.toml +0 -0
  311. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/environments/prod.toml +0 -0
  312. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/README.md +0 -0
  313. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/__main__.py +0 -0
  314. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/acceptance/__init__.py +0 -0
  315. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/acceptance/__main__.py +0 -0
  316. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/acceptance/matrix.py +0 -0
  317. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/acceptance/probes.py +0 -0
  318. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/acceptance/report.py +0 -0
  319. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/acceptance/runner.py +0 -0
  320. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/compose.py +0 -0
  321. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/config/coverage.py +0 -0
  322. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/config/load/_shape.py +0 -0
  323. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/config/load/graph.py +0 -0
  324. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/file_panel.py +0 -0
  325. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/file_transport.py +0 -0
  326. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/load/__init__.py +0 -0
  327. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/load/corpus.py +0 -0
  328. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/load/correlator.py +0 -0
  329. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/load/enginepoll.py +0 -0
  330. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/load/failover.py +0 -0
  331. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/load/failover_track.py +0 -0
  332. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/load/governor.py +0 -0
  333. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/load/ids.py +0 -0
  334. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/load/metrics.py +0 -0
  335. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/load/profile.py +0 -0
  336. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/load/profiles/closed-loop.toml +0 -0
  337. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/load/profiles/failover.toml +0 -0
  338. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/load/profiles/fanout-baseline.toml +0 -0
  339. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/load/profiles/malformed-load.toml +0 -0
  340. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/load/profiles/smoke-sqlserver.toml +0 -0
  341. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/load/profiles/smoke.toml +0 -0
  342. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/load/profiles/soak.toml +0 -0
  343. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/load/profiles/spike-burst.toml +0 -0
  344. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/load/profiles/sustained-overload.toml +0 -0
  345. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/load/profiles/writeamp.toml +0 -0
  346. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/load/report.py +0 -0
  347. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/load/runner.py +0 -0
  348. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/load/sender.py +0 -0
  349. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/load/sink.py +0 -0
  350. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/mllp.py +0 -0
  351. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/monitor.py +0 -0
  352. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/receive.py +0 -0
  353. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/reconcile/__init__.py +0 -0
  354. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/reconcile/__main__.py +0 -0
  355. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/reconcile/capture.py +0 -0
  356. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/reconcile/compare.py +0 -0
  357. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/reconcile/normalize.py +0 -0
  358. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/reconcile/report.py +0 -0
  359. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/scenarios.py +0 -0
  360. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/send.py +0 -0
  361. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/harness/window.py +0 -0
  362. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/ide/esbuild.js +0 -0
  363. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/ide/media/hl7schema.json +0 -0
  364. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/ide/media/icon.png +0 -0
  365. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/ide/media/icon.svg +0 -0
  366. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/ide/src/alertEditor.ts +0 -0
  367. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/ide/src/codeSetEditor.ts +0 -0
  368. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/ide/src/codesetsTree.ts +0 -0
  369. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/ide/src/completion.ts +0 -0
  370. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/ide/src/connectionEditor.ts +0 -0
  371. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/ide/src/engineClient.ts +0 -0
  372. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/ide/src/generate.ts +0 -0
  373. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/ide/src/git.ts +0 -0
  374. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/ide/src/graphTree.ts +0 -0
  375. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/ide/src/newRoute.ts +0 -0
  376. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/ide/src/sourceControl.ts +0 -0
  377. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/ide/src/test/runTest.ts +0 -0
  378. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/ide/src/test/suite/chat.test.ts +0 -0
  379. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/ide/src/test/suite/extension.test.ts +0 -0
  380. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/ide/src/test/suite/index.ts +0 -0
  381. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/ide/src/validate.ts +0 -0
  382. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/ide/tsconfig.json +0 -0
  383. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/ide/tsconfig.test.json +0 -0
  384. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/mefor.code-workspace +0 -0
  385. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/adr_analyze.py +0 -0
  386. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/anon/__init__.py +0 -0
  387. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/anon/_pools.py +0 -0
  388. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/anon/hl7.py +0 -0
  389. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/anon/keying.py +0 -0
  390. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/anon/leak.py +0 -0
  391. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/anon/rules.py +0 -0
  392. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/anon/surrogates.py +0 -0
  393. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/api/__init__.py +0 -0
  394. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/api/approvals.py +0 -0
  395. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/api/auth_models.py +0 -0
  396. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/api/metrics.py +0 -0
  397. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/api/models.py +0 -0
  398. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/api/tls.py +0 -0
  399. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/auth/__init__.py +0 -0
  400. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/auth/data/common_passwords.NOTICE +0 -0
  401. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/auth/data/common_passwords.txt +0 -0
  402. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/auth/identity.py +0 -0
  403. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/auth/ldap.py +0 -0
  404. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/auth/notifications.py +0 -0
  405. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/auth/passwords.py +0 -0
  406. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/auth/policy.py +0 -0
  407. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/auth/ratelimit.py +0 -0
  408. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/auth/tokens.py +0 -0
  409. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/config/__init__.py +0 -0
  410. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/config/active_environment.py +0 -0
  411. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/config/ai_policy.py +0 -0
  412. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/config/alerts_edit.py +0 -0
  413. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/config/code_sets.py +0 -0
  414. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/config/codeset_edit.py +0 -0
  415. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/config/connections_edit.py +0 -0
  416. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/config/db_lookup.py +0 -0
  417. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/config/environments.py +0 -0
  418. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/config/ingest_time.py +0 -0
  419. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/config/reference.py +0 -0
  420. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/config/response.py +0 -0
  421. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/config/run_context.py +0 -0
  422. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/config/state.py +0 -0
  423. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/config/tls_policy.py +0 -0
  424. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/console/__init__.py +0 -0
  425. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/console/_async.py +0 -0
  426. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/console/alerts_page.py +0 -0
  427. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/console/change_password.py +0 -0
  428. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/console/client.py +0 -0
  429. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/console/connections.py +0 -0
  430. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/console/dead_letters_page.py +0 -0
  431. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/console/delegates.py +0 -0
  432. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/console/event_log_page.py +0 -0
  433. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/console/icons/alerts.svg +0 -0
  434. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/console/icons/connections.svg +0 -0
  435. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/console/icons/dead-letters.svg +0 -0
  436. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/console/icons/engine-status.svg +0 -0
  437. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/console/icons/log-search.svg +0 -0
  438. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/console/icons/logo-lockup.svg +0 -0
  439. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/console/icons/users.svg +0 -0
  440. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/console/login.py +0 -0
  441. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/console/mfa.py +0 -0
  442. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/console/reauth.py +0 -0
  443. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/console/resources/README.md +0 -0
  444. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/console/resources/app.ico +0 -0
  445. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/console/resources/app.svg +0 -0
  446. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/console/search.py +0 -0
  447. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/console/service_control.py +0 -0
  448. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/console/sessions.py +0 -0
  449. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/console/status.py +0 -0
  450. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/console/theme.py +0 -0
  451. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/console/users_page.py +0 -0
  452. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/console/widgets.py +0 -0
  453. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/generators/README.md +0 -0
  454. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/generators/__init__.py +0 -0
  455. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/generators/_core.py +0 -0
  456. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/generators/_hl7data.py +0 -0
  457. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/generators/adt.py +0 -0
  458. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/generators/all_types.py +0 -0
  459. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/generators/bar.py +0 -0
  460. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/generators/dft.py +0 -0
  461. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/generators/documents.py +0 -0
  462. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/generators/mdm.py +0 -0
  463. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/generators/mfn.py +0 -0
  464. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/generators/oml.py +0 -0
  465. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/generators/orl.py +0 -0
  466. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/generators/orm.py +0 -0
  467. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/generators/oru.py +0 -0
  468. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/generators/ras.py +0 -0
  469. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/generators/rde.py +0 -0
  470. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/generators/siu.py +0 -0
  471. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/generators/vxu.py +0 -0
  472. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/hl7schema.py +0 -0
  473. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/last_resort.py +0 -0
  474. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/parsing/__init__.py +0 -0
  475. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/parsing/binary.py +0 -0
  476. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/parsing/consistency.py +0 -0
  477. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/parsing/dicom/__init__.py +0 -0
  478. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/parsing/dicom/_deps.py +0 -0
  479. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/parsing/dicom/_util.py +0 -0
  480. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/parsing/dicom/dataset.py +0 -0
  481. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/parsing/dicom/errors.py +0 -0
  482. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/parsing/dicom/hl7_map.py +0 -0
  483. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/parsing/dicom/peek.py +0 -0
  484. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/parsing/fhir/__init__.py +0 -0
  485. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/parsing/fhir/_deps.py +0 -0
  486. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/parsing/fhir/errors.py +0 -0
  487. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/parsing/fhir/peek.py +0 -0
  488. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/parsing/fhir/resource.py +0 -0
  489. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/parsing/groups.py +0 -0
  490. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/parsing/message.py +0 -0
  491. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/parsing/peek.py +0 -0
  492. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/parsing/split.py +0 -0
  493. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/parsing/summary.py +0 -0
  494. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/parsing/tree.py +0 -0
  495. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/parsing/validate.py +0 -0
  496. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/parsing/x12/__init__.py +0 -0
  497. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/parsing/x12/delimiters.py +0 -0
  498. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/parsing/x12/errors.py +0 -0
  499. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/parsing/x12/interchange.py +0 -0
  500. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/parsing/x12/message.py +0 -0
  501. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/parsing/x12/peek.py +0 -0
  502. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/pipeline/__init__.py +0 -0
  503. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/pipeline/alert_sinks.py +0 -0
  504. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/pipeline/alerts.py +0 -0
  505. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/pipeline/cert_expiry.py +0 -0
  506. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/pipeline/cluster.py +0 -0
  507. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/pipeline/cluster_sqlserver.py +0 -0
  508. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/pipeline/config_convergence.py +0 -0
  509. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/pipeline/leader_tasks.py +0 -0
  510. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/pipeline/reference_sync.py +0 -0
  511. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/pipeline/retention.py +0 -0
  512. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/pipeline/security_notify.py +0 -0
  513. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/pipeline/state_convergence.py +0 -0
  514. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/py.typed +0 -0
  515. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/secrets_dpapi.py +0 -0
  516. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/store/__init__.py +0 -0
  517. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/store/audit_tee.py +0 -0
  518. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/store/crypto.py +0 -0
  519. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/store/keyprovider.py +0 -0
  520. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/timezone.py +0 -0
  521. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/transports/base.py +0 -0
  522. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/transports/dicomweb.py +0 -0
  523. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/transports/framing.py +0 -0
  524. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/transports/loopback.py +0 -0
  525. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/transports/mllp.py +0 -0
  526. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/transports/rest.py +0 -0
  527. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/transports/signing.py +0 -0
  528. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/transports/smart.py +0 -0
  529. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/transports/soap.py +0 -0
  530. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/transports/tcp.py +0 -0
  531. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/transports/timer.py +0 -0
  532. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/verify/__init__.py +0 -0
  533. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/verify/checks.py +0 -0
  534. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/verify/model.py +0 -0
  535. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/verify/report.py +0 -0
  536. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/verify/runner.py +0 -0
  537. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/messagefoundry/verify/smoke.py +0 -0
  538. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/packaging/messagefoundry-harness/README.md +0 -0
  539. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/packaging/messagefoundry-harness/pyproject.toml +0 -0
  540. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/requirements.lock +0 -0
  541. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/samples/config/IB_ACME_ADT.py +0 -0
  542. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/samples/config/IB_FHIR_INTAKE.py +0 -0
  543. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/samples/config/IB_IMMUNIZATION_VXU.py +0 -0
  544. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/samples/config/IB_PARTNER_X12.py +0 -0
  545. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/samples/config/IB_RADIOLOGY_SR.py +0 -0
  546. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/samples/config/IB_RTE_ELIGIBILITY.py +0 -0
  547. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/samples/config/adt.py +0 -0
  548. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/samples/config/codesets/event_labels.csv +0 -0
  549. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/samples/config/codesets/facility_mnemonics.toml +0 -0
  550. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/samples/config/connections.toml +0 -0
  551. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/samples/consistency/validated_adt.py +0 -0
  552. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/samples/dicom/generate_sr_sample.py +0 -0
  553. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/samples/messages/adt_a01.hl7 +0 -0
  554. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/samples/messages/adt_batch.hl7 +0 -0
  555. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/samples/messages/hapi-hl7v2/.gitattributes +0 -0
  556. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/samples/messages/hapi-hl7v2/README.md +0 -0
  557. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/samples/messages/hapi-hl7v2/adt_a01.txt +0 -0
  558. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/samples/messages/hapi-hl7v2/adt_a03.txt +0 -0
  559. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/samples/messages/hapi-hl7v2/batch_18_messages.txt +0 -0
  560. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/samples/messages/hapi-hl7v2/erp_z99_v231.hl7 +0 -0
  561. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/samples/messages/hapi-hl7v2/omd_o03.txt +0 -0
  562. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/samples/messages/hapi-hl7v2/omd_o03_rep.txt +0 -0
  563. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/samples/messages/hapi-hl7v2/oml_o21.hl7 +0 -0
  564. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/samples/messages/x12_270_eligibility.edi +0 -0
  565. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/samples/results_relay/README.md +0 -0
  566. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/samples/results_relay/codesets/test_codes.csv +0 -0
  567. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/samples/results_relay/messages/oru_all_cancelled.hl7 +0 -0
  568. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/samples/results_relay/messages/oru_results.hl7 +0 -0
  569. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/samples/results_relay/results_relay.py +0 -0
  570. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/samples/send_mllp.py +0 -0
  571. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/scripts/console/install-console-shortcut.ps1 +0 -0
  572. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/scripts/console/pack_ico.py +0 -0
  573. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/scripts/console/uninstall-console-shortcut.ps1 +0 -0
  574. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/scripts/dev/postgres.ps1 +0 -0
  575. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/scripts/dev/sqlserver-docker.ps1 +0 -0
  576. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/scripts/dev/sqlserver.ps1 +0 -0
  577. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/scripts/hooks/block-blanket-git-stage.ps1 +0 -0
  578. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/scripts/publish/check_release_sync.py +0 -0
  579. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/scripts/publish/publish-denylist.txt +0 -0
  580. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/scripts/publish/publish.ps1 +0 -0
  581. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/scripts/publish/scan_forbidden.py +0 -0
  582. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/scripts/security/vuln_metrics.py +0 -0
  583. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/scripts/service/import-db-ca.ps1 +0 -0
  584. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/scripts/service/uninstall-service.ps1 +0 -0
  585. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/scripts/trace_icon.py +0 -0
  586. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/scripts/worktree/new.ps1 +0 -0
  587. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/scripts/worktree/remove.ps1 +0 -0
  588. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/scripts/worktree/session-context.ps1 +0 -0
  589. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/scripts/worktree/spawn.ps1 +0 -0
  590. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tee/__init__.py +0 -0
  591. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tee/__main__.py +0 -0
  592. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tee/anon/__init__.py +0 -0
  593. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tee/anon/_hl7data.py +0 -0
  594. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tee/anon/_pools.py +0 -0
  595. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tee/anon/hl7.py +0 -0
  596. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tee/anon/keying.py +0 -0
  597. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tee/anon/leak.py +0 -0
  598. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tee/anon/rules.py +0 -0
  599. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tee/anon/surrogates.py +0 -0
  600. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tee/compare.py +0 -0
  601. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tee/correlate.py +0 -0
  602. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tee/hl7_fields.py +0 -0
  603. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tee/mefor_api.py +0 -0
  604. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tee/mllp.py +0 -0
  605. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tee/relay.py +0 -0
  606. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tee/report.py +0 -0
  607. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tee/store.py +0 -0
  608. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/_dicom_sample.py +0 -0
  609. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/_failover_load_support.py +0 -0
  610. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/_fhir_fixtures.py +0 -0
  611. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_acceptance_framework.py +0 -0
  612. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_ack_capture_runner.py +0 -0
  613. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_ack_sent_store.py +0 -0
  614. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_active_environment.py +0 -0
  615. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_ad_group_scope.py +0 -0
  616. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_admin_new_ip.py +0 -0
  617. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_adr_analyze.py +0 -0
  618. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_ai_policy.py +0 -0
  619. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_alert_rules.py +0 -0
  620. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_alert_sinks.py +0 -0
  621. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_alerts_edit.py +0 -0
  622. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_alerts_rules_api.py +0 -0
  623. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_anon_core.py +0 -0
  624. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_anon_integration.py +0 -0
  625. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_anon_parity.py +0 -0
  626. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_api.py +0 -0
  627. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_api_auth.py +0 -0
  628. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_api_tls.py +0 -0
  629. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_approvals.py +0 -0
  630. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_asvs_phase0.py +0 -0
  631. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_audit_integrity.py +0 -0
  632. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_audit_offbox_tee.py +0 -0
  633. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_auth_core.py +0 -0
  634. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_auth_entry_hardening.py +0 -0
  635. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_auth_hardening.py +0 -0
  636. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_auth_service.py +0 -0
  637. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_auth_session_lifecycle.py +0 -0
  638. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_auth_store.py +0 -0
  639. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_binary_carriage.py +0 -0
  640. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_cert_expiry.py +0 -0
  641. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_channel_rbac.py +0 -0
  642. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_checks.py +0 -0
  643. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_cli.py +0 -0
  644. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_cluster.py +0 -0
  645. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_cluster_failover_postgres.py +0 -0
  646. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_cluster_failover_sqlserver.py +0 -0
  647. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_cluster_graph_gating.py +0 -0
  648. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_cluster_lease.py +0 -0
  649. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_code_sets.py +0 -0
  650. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_codeset_edit.py +0 -0
  651. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_connection_api.py +0 -0
  652. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_connection_event_api.py +0 -0
  653. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_connection_event_emit.py +0 -0
  654. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_connection_event_outbound.py +0 -0
  655. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_connection_event_store.py +0 -0
  656. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_connection_resilience.py +0 -0
  657. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_connections_cli.py +0 -0
  658. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_connections_file.py +0 -0
  659. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_consistency.py +0 -0
  660. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_console_alerts.py +0 -0
  661. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_console_auth.py +0 -0
  662. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_console_client.py +0 -0
  663. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_console_dead_letters.py +0 -0
  664. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_console_event_log.py +0 -0
  665. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_console_hardening.py +0 -0
  666. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_console_icon.py +0 -0
  667. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_console_password.py +0 -0
  668. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_console_sessions.py +0 -0
  669. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_console_status.py +0 -0
  670. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_console_step_up.py +0 -0
  671. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_console_theme.py +0 -0
  672. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_console_users.py +0 -0
  673. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_console_widgets.py +0 -0
  674. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_database_connector_integration.py +0 -0
  675. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_database_transport.py +0 -0
  676. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_delivery_settings.py +0 -0
  677. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_dependency_boundaries.py +0 -0
  678. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_dicom_codec.py +0 -0
  679. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_dicom_scp.py +0 -0
  680. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_dicom_scu.py +0 -0
  681. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_dicom_wiring.py +0 -0
  682. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_dicomweb.py +0 -0
  683. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_docs_runbooks.py +0 -0
  684. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_ed_documents.py +0 -0
  685. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_ed_documents_e2e.py +0 -0
  686. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_egress_allowlist.py +0 -0
  687. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_environments.py +0 -0
  688. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_fhir_parsing.py +0 -0
  689. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_fhir_resource.py +0 -0
  690. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_fifo_ordering.py +0 -0
  691. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_generate_cli.py +0 -0
  692. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_generated_adt.py +0 -0
  693. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_generators_core.py +0 -0
  694. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_generators_types.py +0 -0
  695. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_groups.py +0 -0
  696. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_harness.py +0 -0
  697. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_harness_compose.py +0 -0
  698. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_harness_config.py +0 -0
  699. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_harness_faults.py +0 -0
  700. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_harness_file.py +0 -0
  701. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_harness_monitor.py +0 -0
  702. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_harness_scenarios.py +0 -0
  703. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_hl7_core_features.py +0 -0
  704. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_hl7schema.py +0 -0
  705. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_inbound_bind.py +0 -0
  706. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_ingest_time.py +0 -0
  707. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_keyprovider.py +0 -0
  708. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_last_resort.py +0 -0
  709. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_leader_tasks.py +0 -0
  710. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_load_config.py +0 -0
  711. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_load_corpus.py +0 -0
  712. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_load_failover_postgres.py +0 -0
  713. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_load_failover_sqlserver.py +0 -0
  714. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_load_failover_unit.py +0 -0
  715. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_load_metrics.py +0 -0
  716. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_load_report.py +0 -0
  717. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_load_runner.py +0 -0
  718. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_load_sender.py +0 -0
  719. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_load_sink.py +0 -0
  720. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_logging.py +0 -0
  721. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_message.py +0 -0
  722. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_message_split.py +0 -0
  723. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_metrics_exporter.py +0 -0
  724. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_mfa.py +0 -0
  725. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_mllp_encoding_override.py +0 -0
  726. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_mllp_tls.py +0 -0
  727. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_operability_config.py +0 -0
  728. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_outbound_signing.py +0 -0
  729. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_outbound_simulate.py +0 -0
  730. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_packaging.py +0 -0
  731. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_parse_tree.py +0 -0
  732. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_parsing.py +0 -0
  733. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_payload_agnostic_ingress.py +0 -0
  734. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_reconcile_capture.py +0 -0
  735. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_reconcile_compare.py +0 -0
  736. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_reconcile_harness.py +0 -0
  737. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_reference_sets.py +0 -0
  738. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_reingress.py +0 -0
  739. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_response_capture.py +0 -0
  740. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_rest_transport.py +0 -0
  741. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_retention.py +0 -0
  742. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_run_context.py +0 -0
  743. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_scan_forbidden.py +0 -0
  744. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_secrets_dpapi.py +0 -0
  745. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_security_notify.py +0 -0
  746. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_security_static.py +0 -0
  747. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_service_control.py +0 -0
  748. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_settings.py +0 -0
  749. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_smart_backend.py +0 -0
  750. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_soap_transport.py +0 -0
  751. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_soap_wssecurity.py +0 -0
  752. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_sqlserver_coordinator.py +0 -0
  753. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_sqlserver_cursor_close.py +0 -0
  754. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_sqlserver_schema_init.py +0 -0
  755. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_staged_pipeline.py +0 -0
  756. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_startup_fault_isolation.py +0 -0
  757. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_stats_reset.py +0 -0
  758. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_step_up.py +0 -0
  759. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_store.py +0 -0
  760. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_store_backend.py +0 -0
  761. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_store_encryption.py +0 -0
  762. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_store_file_hardening.py +0 -0
  763. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_store_read_pool.py +0 -0
  764. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_store_ssl.py +0 -0
  765. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_summary.py +0 -0
  766. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_task_resilience.py +0 -0
  767. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_tcp_transport.py +0 -0
  768. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_tee_cli.py +0 -0
  769. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_tee_compare.py +0 -0
  770. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_tee_correlate.py +0 -0
  771. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_tee_hl7_fields.py +0 -0
  772. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_tee_mefor_api.py +0 -0
  773. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_tee_mllp.py +0 -0
  774. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_tee_relay.py +0 -0
  775. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_tee_report.py +0 -0
  776. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_tee_store.py +0 -0
  777. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_timer_source.py +0 -0
  778. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_timezone.py +0 -0
  779. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_tls_policy.py +0 -0
  780. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_totp.py +0 -0
  781. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_transform_state.py +0 -0
  782. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_verify.py +0 -0
  783. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_version.py +0 -0
  784. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_win2025_acceptance.py +0 -0
  785. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_wiring.py +0 -0
  786. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_wiring_engine.py +0 -0
  787. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_wiring_reload.py +0 -0
  788. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_wiring_serve.py +0 -0
  789. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_x12_parsing.py +0 -0
  790. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_x12_rte.py +0 -0
  791. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/tests/test_x12_transport.py +0 -0
  792. {messagefoundry-0.2.5 → messagefoundry-0.2.7}/uv.lock +0 -0
@@ -2,3 +2,4 @@
2
2
  # `git diff --exit-code`) can't be tripped by Windows CRLF drift (DEP-1).
3
3
  uv.lock text eol=lf
4
4
  requirements.lock text eol=lf
5
+ .mefor-hooks/** text eol=lf
@@ -18,7 +18,10 @@ updates:
18
18
  # behavior), so a real advisory fix still arrives immediately. Pairs with the auto-merge
19
19
  # workflow: routine patches auto-merge AFTER aging; security patches auto-merge now.
20
20
  cooldown:
21
- default-days: 3
21
+ # ~5-day aging window (DEPENDENCY-POSTURE-REVIEW.md) lengthens the malicious-fresh-publish
22
+ # dodge on the routine VERSION track; the SECURITY track still bypasses cooldown (Dependabot
23
+ # design), now backstopped by the published-GHSA gate in dependabot-auto-merge.yml (SEC-007 #2).
24
+ default-days: 5
22
25
  semver-major-days: 7
23
26
  groups:
24
27
  # Version-update grouping (applies-to defaults to version-updates).
@@ -0,0 +1,165 @@
1
+ name: Dependabot auto-merge
2
+
3
+ # Scoped auto-merge for Dependabot PRs (A4 of the dependency fast-response plan).
4
+ #
5
+ # SAFE because main's required status checks are the gate: the full pytest suite, pip-audit, the
6
+ # DEP-1 lock-sync check (incl. the A3 lock-resync commit), bandit/semgrep/gitleaks all must pass
7
+ # before GitHub completes the merge. A bad bump turns CI red and never merges — auto-merge only
8
+ # removes the human-latency on the safe, common case, not the safety net.
9
+ #
10
+ # IN SCOPE (auto-merged):
11
+ # - any PATCH update (incl. security patches — most security fixes are patches)
12
+ # - MINOR updates of DEV-only dependencies
13
+ # OUT OF SCOPE (left for human review, surfaced same-day by the daily security cron + alerts):
14
+ # - MINOR/MAJOR updates of runtime deps, and ALL MAJOR updates
15
+ #
16
+ # Fresh-release supply-chain poisoning is handled upstream by the dependabot.yml `cooldown`
17
+ # (routine updates age before a PR opens); SECURITY updates bypass cooldown by design, so a real
18
+ # advisory fix still arrives immediately and (if a patch) auto-merges.
19
+ #
20
+ # SECURITY-TRACK GUARDRAILS (DEPENDENCY-POSTURE-REVIEW.md #2 and #3 — close SEC-007, CWE-829):
21
+ # #3 DENY-LIST — the auth/token/crypto stack (cryptography, argon2-cffi, fastapi, …) is NEVER
22
+ # auto-merged, not even for a patch: any such dep routes the PR to MANUAL review. A grouped
23
+ # PR that includes ANY denied dep is denied WHOLE (fail-safe — never partial-merge a group).
24
+ # #2 PUBLISHED-GHSA GATE — a SECURITY-track PR (which bypasses the cooldown by Dependabot design)
25
+ # auto-merges ONLY when a real, published, non-withdrawn advisory is confirmed against the
26
+ # dependency's PREVIOUS version (the axios-1.14.1 pattern). The advisory lookup FAILS CLOSED:
27
+ # a rate-limit/API error or no-matching-advisory routes to manual review, never auto-merge.
28
+ # The non-security VERSION track keeps its cooldown-aged auto-merge unchanged (already aged by
29
+ # dependabot.yml, so it does not need the GHSA gate).
30
+ #
31
+ # RESIDUAL ACCEPTED RISK: a malicious patch that BOTH rides a real concurrent published advisory
32
+ # AND is not on the deny-list would still auto-merge. The deny-list shields the highest-value
33
+ # (auth/crypto) deps unconditionally; the GHSA gate blocks the no-advisory fast-publish poison on
34
+ # the security track; main's required CI (pip-audit/bandit/tests/lock-sync) backstops both.
35
+ #
36
+ # Why `pull_request` (not pull_request_target): a Dependabot `pull_request` run gets a read-only
37
+ # GITHUB_TOKEN by default, which the `permissions:` block below elevates to exactly what the merge
38
+ # API needs — no untrusted-code-with-secrets exposure, no GitHub App required. This is the pattern
39
+ # GitHub documents for Dependabot auto-merge.
40
+
41
+ on: pull_request
42
+
43
+ permissions:
44
+ contents: write # complete the merge
45
+ pull-requests: write # enable auto-merge on the PR
46
+ security-events: read # read Dependabot alerts for the published-GHSA gate (#2)
47
+
48
+ concurrency:
49
+ group: dependabot-automerge-${{ github.event.pull_request.number }}
50
+ cancel-in-progress: false
51
+
52
+ jobs:
53
+ auto-merge:
54
+ runs-on: ubuntu-latest
55
+ # Only Dependabot's own PRs. pull_request.user.login is the immutable PR author, so an A3
56
+ # lock-resync `synchronize` (pushed by the App) still satisfies this — the author stays
57
+ # dependabot[bot] even though the triggering actor is the App.
58
+ if: github.event.pull_request.user.login == 'dependabot[bot]'
59
+ timeout-minutes: 10
60
+ steps:
61
+ - name: Fetch Dependabot metadata
62
+ id: meta
63
+ uses: dependabot/fetch-metadata@25dd0e34f4fe68f24cc83900b1fe3fe149efef98 # v3.1.0
64
+ with:
65
+ github-token: ${{ secrets.GITHUB_TOKEN }}
66
+
67
+ # Guardrail #3 (DEPENDENCY-POSTURE-REVIEW.md): the auth/token/crypto stack NEVER auto-merges,
68
+ # not even a patch. dependency-names is comma-separated for grouped PRs; we deny the WHOLE
69
+ # group if ANY token matches (fail-safe — never partial-merge a group). Exact token match on
70
+ # the comma-split names (not a naive substring) so 'cffi' does not match 'argon2-cffi-bindings'
71
+ # and vice-versa.
72
+ - name: Reject security-critical deps (deny-list)
73
+ id: denylist
74
+ env:
75
+ DEP_NAMES: ${{ steps.meta.outputs.dependency-names }}
76
+ run: |
77
+ # Single source of truth for the security-critical deny-list.
78
+ denylist="cryptography argon2-cffi argon2-cffi-bindings paramiko ldap3 pyspnego \
79
+ fastapi starlette uvicorn pydantic pydantic-core python-jose pyjwt passlib bcrypt cffi"
80
+ deny=false
81
+ IFS=',' read -ra names <<< "$DEP_NAMES"
82
+ for raw in "${names[@]}"; do
83
+ # trim surrounding whitespace and lowercase
84
+ name="$(echo "$raw" | tr '[:upper:]' '[:lower:]' | xargs)"
85
+ [ -z "$name" ] && continue
86
+ for crit in $denylist; do
87
+ if [ "$name" = "$crit" ]; then
88
+ echo "::notice::'$name' is a security-critical dependency — routing to manual review (no auto-merge)."
89
+ deny=true
90
+ fi
91
+ done
92
+ done
93
+ echo "deny=$deny" >> "$GITHUB_OUTPUT"
94
+
95
+ # Guardrail #2 (DEPENDENCY-POSTURE-REVIEW.md): a SECURITY-track PR auto-merges ONLY when a
96
+ # real, published, non-withdrawn advisory covers the dependency's PREVIOUS version. The
97
+ # security track is detected by Dependabot's `dependency-group` (python-security/ide-security)
98
+ # — a security-update group — falling back to a present-but-empty group meaning version track.
99
+ # The advisory lookup FAILS CLOSED: any error or no-match leaves advisory_ok=false.
100
+ - name: Verify a published advisory backs the security track
101
+ id: ghsa
102
+ env:
103
+ DEP_NAMES: ${{ steps.meta.outputs.dependency-names }}
104
+ DEP_GROUP: ${{ steps.meta.outputs.dependency-group }}
105
+ PREV_VERSION: ${{ steps.meta.outputs.previous-version }}
106
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
107
+ run: |
108
+ set -u
109
+ # Is this the security track? Dependabot tags security-update grouped PRs with a
110
+ # *-security dependency-group. A non-security (version) PR has no security group.
111
+ is_security=false
112
+ case "$DEP_GROUP" in
113
+ *security*) is_security=true ;;
114
+ esac
115
+
116
+ if [ "$is_security" != "true" ]; then
117
+ # Version track: already cooldown-aged by dependabot.yml — the GHSA gate does not apply.
118
+ echo "security_track=false" >> "$GITHUB_OUTPUT"
119
+ echo "advisory_ok=false" >> "$GITHUB_OUTPUT"
120
+ exit 0
121
+ fi
122
+ echo "security_track=true" >> "$GITHUB_OUTPUT"
123
+
124
+ # Require at least one matching published (non-withdrawn) advisory for EVERY named dep at
125
+ # the previous version. Query the global advisories endpoint (ecosystem pip — Python
126
+ # advisories are pip-keyed). Fail closed on any error.
127
+ advisory_ok=true
128
+ IFS=',' read -ra names <<< "$DEP_NAMES"
129
+ for raw in "${names[@]}"; do
130
+ name="$(echo "$raw" | tr '[:upper:]' '[:lower:]' | xargs)"
131
+ [ -z "$name" ] && continue
132
+ count="$(gh api -X GET /advisories \
133
+ -f ecosystem=pip \
134
+ -f affects="${name}@${PREV_VERSION}" \
135
+ --jq '[.[] | select(.withdrawn_at == null)] | length' 2>/dev/null || echo "ERR")"
136
+ if [ "$count" = "ERR" ] || [ -z "$count" ]; then
137
+ echo "::warning::advisory lookup failed for '$name' — failing closed (manual review)."
138
+ advisory_ok=false
139
+ break
140
+ fi
141
+ if [ "$count" -lt 1 ]; then
142
+ echo "::warning::no published advisory covers '${name}@${PREV_VERSION}' — failing closed (manual review)."
143
+ advisory_ok=false
144
+ break
145
+ fi
146
+ echo "::notice::published advisory confirmed for '${name}@${PREV_VERSION}'."
147
+ done
148
+ echo "advisory_ok=$advisory_ok" >> "$GITHUB_OUTPUT"
149
+
150
+ - name: Enable auto-merge for in-scope updates
151
+ # Auto-merge only when: (a) the update is an in-scope type (any patch, or a dev-only minor),
152
+ # AND (b) no security-critical dep is involved (deny-list #3), AND (c) for the SECURITY track
153
+ # ONLY, a published advisory is confirmed (#2). A non-security (version-track) patch keeps its
154
+ # cooldown-aged auto-merge — advisory_ok is not required there.
155
+ if: >-
156
+ steps.denylist.outputs.deny != 'true' &&
157
+ (steps.ghsa.outputs.security_track != 'true' ||
158
+ steps.ghsa.outputs.advisory_ok == 'true') &&
159
+ (steps.meta.outputs.update-type == 'version-update:semver-patch' ||
160
+ (steps.meta.outputs.update-type == 'version-update:semver-minor' &&
161
+ steps.meta.outputs.dependency-type == 'direct:development'))
162
+ run: gh pr merge --auto --squash "$PR_URL"
163
+ env:
164
+ PR_URL: ${{ github.event.pull_request.html_url }}
165
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,95 @@
1
+ # Free-threaded (no-GIL / PEP 703, cp314t) engine canary — INFORMATIONAL, NEVER BLOCKING.
2
+ #
3
+ # This is an EXPLORATORY signal (see docs/design/freethread.md), not a supported config. The engine
4
+ # ships on the GIL build; this leg only tells us, on a weekly schedule, whether the engine still
5
+ # installs + imports + smoke-tests under the free-threaded 3.14t interpreter, so a regression in a
6
+ # dependency's cp314t wheel surfaces early. It is an early-warning tripwire, not a per-PR gate —
7
+ # hence weekly (+ manual dispatch), not on every push/PR.
8
+ #
9
+ # IT MUST NEVER BLOCK A MERGE:
10
+ # * It is a SEPARATE workflow, deliberately not part of ci.yml's `ci-gate` (the required "CI gate"
11
+ # context). It is not in any `needs:` list a PR waits on.
12
+ # * The job AND its fragile steps are `continue-on-error: true`, so a red canary is an informational
13
+ # red check, never a failed required one.
14
+ # * DO NOT add the "freethread smoke (3.14t)" context to branch-protection required checks. The
15
+ # required set is the `test` matrix + bandit + pip-audit + cla — keep it that way.
16
+ #
17
+ # If actions/setup-python ever cannot provision 3.14t on the runner, the continue-on-error job simply
18
+ # goes red as information; nothing downstream is gated on it.
19
+
20
+ name: freethread smoke
21
+
22
+ on:
23
+ # Weekly early-warning tripwire (Mondays 06:00 UTC) + manual dispatch. NOT per-PR/per-push: this is
24
+ # an informational cp314t-readiness signal, not a gate, so it doesn't need to run on every change.
25
+ schedule:
26
+ - cron: "0 6 * * 1"
27
+ workflow_dispatch:
28
+
29
+ concurrency:
30
+ group: freethread-${{ github.ref }}
31
+ cancel-in-progress: true
32
+
33
+ # Read-only: install deps + run a pure test subset. No gh writes, no secrets.
34
+ permissions:
35
+ contents: read
36
+
37
+ jobs:
38
+ freethread:
39
+ name: freethread smoke (3.14t)
40
+ # The whole job is non-blocking: a failure here is reported but never fails the workflow's
41
+ # required-context resolution, so it cannot block a PR even if it is ever (mis)added to protection.
42
+ continue-on-error: true
43
+ runs-on: ubuntu-latest
44
+ timeout-minutes: 15
45
+ steps:
46
+ - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
47
+ with:
48
+ persist-credentials: false # read-only smoke job; don't persist the token (zizmor: artipacked)
49
+
50
+ # Provision the FREE-THREADED 3.14 interpreter (distinct cp314t ABI). `freethreaded: true` +
51
+ # the `t` suffix both select it; allow-prereleases covers the 3.14 line. This step is allowed to
52
+ # fail (continue-on-error) so a runner that cannot yet provide 3.14t never reds a blocking check.
53
+ - name: Set up free-threaded Python 3.14t
54
+ id: setup
55
+ continue-on-error: true
56
+ uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
57
+ with:
58
+ python-version: "3.14t"
59
+ freethreaded: true
60
+ allow-prereleases: true
61
+
62
+ # Install the CORE engine only (no Qt/SQL/DICOM/SFTP extras), so the smoke exercises the minimal
63
+ # free-threaded-relevant compiled surface: pydantic-core, cryptography, and the argon2-cffi + cffi
64
+ # chain. --prerelease handling: pip resolves the cp314t wheels; the cffi 2.0 chain may need a
65
+ # prerelease allowance depending on the index state at run time.
66
+ - name: Install the core engine (dev extra; no compiled-heavy extras)
67
+ if: steps.setup.outcome == 'success'
68
+ continue-on-error: true
69
+ run: |
70
+ python -m pip install --upgrade pip
71
+ pip install -e ".[dev]"
72
+
73
+ # Prove we are actually on the no-GIL interpreter — an incompatible C extension importing can make
74
+ # CPython silently RE-ENABLE the GIL, which would make a "green" canary meaningless. Fail (softly)
75
+ # if the GIL is back on.
76
+ - name: Assert the GIL is actually disabled
77
+ if: steps.setup.outcome == 'success'
78
+ continue-on-error: true
79
+ run: |
80
+ python - <<'PY'
81
+ import sys
82
+ gil_on = sys._is_gil_enabled()
83
+ print(f"sys._is_gil_enabled() = {gil_on}")
84
+ print(f"sys.version = {sys.version}")
85
+ if gil_on:
86
+ raise SystemExit("GIL is ENABLED on the 3.14t build — an extension likely forced it back on")
87
+ PY
88
+
89
+ # Run a PURE, fast subset under 3.14t: parsing (pure HL7 library) + config wiring. This is the
90
+ # cheap install-and-import + smoke signal, NOT the perf experiment (that lives in the load harness,
91
+ # run manually — see docs/LOAD-TESTING.md / docs/design/freethread.md §4).
92
+ - name: Smoke a pure test subset under 3.14t
93
+ if: steps.setup.outcome == 'success'
94
+ continue-on-error: true
95
+ run: pytest -q tests/test_parsing.py tests/test_wiring.py
@@ -54,6 +54,21 @@ jobs:
54
54
  with:
55
55
  python-version: "3.14"
56
56
 
57
+ - name: Rewrite README repo slug for the public PyPI long_description
58
+ run: |
59
+ # PyPI renders README.md (pyproject `readme = "README.md"`) as the project description and
60
+ # fetches it anonymously. The source README points at the PRIVATE source repo
61
+ # (wshallwshall/MessageFoundry) so the team's GitHub view shows the private repo's own CI
62
+ # badges — but anonymous fetches of a private repo's Actions badge SVG 404 (broken badge
63
+ # images), and every body link 404s on click. The public mirror (MEFORORG/MessageFoundry)
64
+ # runs the same workflows and is anonymously reachable, so rewrite the slug here (the same
65
+ # rewrite scripts/publish/publish.ps1 applies to the mirror) before `python -m build` embeds
66
+ # the README. Ephemeral runner edit only — never committed.
67
+ sed -i 's#wshallwshall/MessageFoundry#MEFORORG/MessageFoundry#g' README.md
68
+ if grep -q 'wshallwshall/MessageFoundry' README.md; then
69
+ echo '::error::README slug rewrite left private-repo links'; exit 1
70
+ fi
71
+
57
72
  - name: Build sdist + wheel
58
73
  run: |
59
74
  python -m pip install --upgrade pip build
@@ -117,7 +132,7 @@ jobs:
117
132
  # `github.event.repository.private` is populated on the tag-push event.
118
133
  - name: Attest build provenance (SLSA) for sdist + wheel
119
134
  if: ${{ !github.event.repository.private }}
120
- uses: actions/attest-build-provenance@a2bbfa25375fe432b6a289bc6b6cd05ecd0c4c32 # v4.1.0
135
+ uses: actions/attest-build-provenance@0f67c3f4856b2e3261c31976d6725780e5e4c373 # v4.1.1
121
136
  with:
122
137
  subject-path: "dist/*.tar.gz, dist/*.whl"
123
138
 
@@ -80,3 +80,8 @@ TRANSCRIPTS.md
80
80
  # Still usable by name (they sit in PROFILES_DIR) and copy-on to the test box.
81
81
  /harness/load/profiles/hospital-baseline.toml
82
82
  /harness/load/profiles/soak-12h.toml
83
+ # --- MessageFoundry ---
84
+ .mefor/
85
+ *.db*
86
+ .DS_Store
87
+ Thumbs.db
@@ -0,0 +1,25 @@
1
+ #!/bin/sh
2
+ # MessageFoundry pre-commit checks — generated by the VS Code extension.
3
+ # Runs `messagefoundry check` so a commit can't introduce a broken config.
4
+ # Bypass once with: git commit --no-verify
5
+
6
+ PY=python
7
+ command -v python >/dev/null 2>&1 || PY=python3
8
+ if ! command -v "$PY" >/dev/null 2>&1; then
9
+ echo "MessageFoundry: python not found; skipping checks." >&2
10
+ exit 0
11
+ fi
12
+
13
+ # Prefer a project virtualenv if present (Windows + POSIX layouts).
14
+ if [ -x ".venv/Scripts/python.exe" ]; then
15
+ PY=".venv/Scripts/python.exe"
16
+ elif [ -x ".venv/bin/python" ]; then
17
+ PY=".venv/bin/python"
18
+ fi
19
+
20
+ if ! "$PY" -c "import messagefoundry" >/dev/null 2>&1; then
21
+ echo "MessageFoundry: 'messagefoundry' not importable in this environment; skipping checks." >&2
22
+ exit 0
23
+ fi
24
+
25
+ exec "$PY" -m messagefoundry check --config 'samples/config' --messages 'samples/messages'
@@ -6,6 +6,102 @@ All notable changes to MessageFoundry are documented here. The format follows
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.2.7] — 2026-06-27 — Early Access
10
+
11
+ A docs/packaging release that fixes the broken badge images on the PyPI project page
12
+ and adds a config-check pre-commit hook.
13
+
14
+ ### Fixed
15
+ - **Broken badge images in the PyPI project description.** The CI and Security status
16
+ badges in the README pointed at the **private** source repo, so they rendered as
17
+ broken images on the public PyPI page — an anonymous viewer can't fetch a private
18
+ repo's GitHub Actions badge SVG (it 404s). The README now points at the public
19
+ mirror (`MEFORORG/MessageFoundry`), and the release build additionally rewrites any
20
+ remaining `wshallwshall`→`MEFORORG` repo slug in the README before it is embedded as
21
+ the PyPI `long_description`, so the rendered badges resolve anonymously. (#568)
22
+
23
+ ### Added
24
+ - **`messagefoundry check` pre-commit hook.** A VS Code-extension-generated
25
+ `.mefor-hooks/pre-commit` runs `messagefoundry check` so a commit can't introduce a
26
+ broken config (skips cleanly if python or the package isn't importable; bypass with
27
+ `--no-verify`). (#568)
28
+
29
+ ### Docs
30
+ - Backlog **#47** — base64 embedded-document (attachment) pruning (Mirth
31
+ attachment-handler / data-pruner parity); and a Changelog link in the README. (#568)
32
+
33
+ ## [0.2.6] — 2026-06-27 — Early Access
34
+
35
+ A large release: the **throughput-maximization build** (high-fan-out store-once, multi-process
36
+ sharding, and internal pass-through connectors with full Postgres/SQL Server parity), a console +
37
+ IDE **"fleet" tier** for managing multiple engine shards, and a broad **security-hardening wave**
38
+ from the 2026-06 audit.
39
+
40
+ ### Added
41
+ - **Multi-process sharding (L3).** An inbound connection can carry an optional `shard` tag;
42
+ `serve --shard <id>` runs an engine process that owns only that shard's inbound connections
43
+ (outbound + routing/handlers are shared), and a new `supervise` command spawns, monitors, and
44
+ restarts one `serve` subprocess per shard (each with its own SQLite db file and API port).
45
+ Per-connection sharding parallelizes intake across CPU cores; per-channel FIFO is preserved
46
+ within a shard. (#584)
47
+ - **Internal pass-through (PT) connectors (L4).** A Handler may `Send` into an internal
48
+ `PassThrough()` inbound that carries its own router; the message re-ingresses as a new
49
+ content-addressed child message inside the same transaction (at-least-once, count-and-log, and
50
+ single-finalizer authority all preserved), bounded by a correlation-depth loop guard. This
51
+ generalizes the ADR 0013 re-ingress primitive. Implemented on **all three store backends** —
52
+ SQLite, plus full **Postgres and SQL Server parity** for the atomic re-ingress. (#585, #590)
53
+ - **Store-once-deliver-many (L2b).** A high-fan-out outbound now stores the message body **once**
54
+ (content-addressed, reference-counted `shared_body`) instead of once per destination;
55
+ single-destination delivery is unchanged (inline, byte-identical). (#580)
56
+ - **Fleet tier — manage multiple engine shards.** The console can register and switch between
57
+ multiple engine endpoints (#582); the IDE promote flow can target a specific engine
58
+ instance/shard (#583).
59
+ - **IDE editor productivity.** A MessageFoundry build toolbar + CodeLens on config files (#593),
60
+ an "Insert Element" quick-pick with expanded transform-idiom snippets (#595), a Wizards group
61
+ with collapsible Home groups (#578), and a `vsce` VSIX packaging script (#577).
62
+ - **Config-fingerprint attestation.** Config reloads record a config fingerprint in the reload
63
+ audit (ADR 0041 load-path attestation). (#597)
64
+
65
+ ### Changed
66
+ - **Faster fan-out.** On a fan-out the engine parses the per-message payload once where it is
67
+ value-identical, avoiding redundant re-parsing. (#581)
68
+
69
+ ### Fixed
70
+ - **Fail-fast pass-through guard.** A graph with a PT inbound on a store backend that does not
71
+ implement PT re-ingress is now rejected at startup *and* on reload/dry-run (a clear configuration
72
+ error, HTTP 422) — before any listener binds — instead of failing at the first `Send`. (#587)
73
+ - **Auth hardening.** Tighter field-level authorization, a last-admin guard, a corrected TOTP
74
+ window, and rate-limit documentation fixes. (#563)
75
+ - **API / store.** Channel-scoped event and topology reads, faster WebSocket session revocation,
76
+ and atomic bootstrap-secret creation. (#565)
77
+ - **IDE.** Workspace-trust gating, machine-scoped promote targets, and a fail-closed AI-assist
78
+ policy (SEC-004/005/022). (#561)
79
+
80
+ ### Security
81
+ The 2026-06 security-audit remediation wave (in-repo remediation ledger, #566):
82
+ - **Transport TLS / SSRF / injection:** FTPS TLS verification, an FHIR-path SSRF guard, and
83
+ read-only enforcement on `db_lookup` (SEC-001/010/009). (#560)
84
+ - **Listener hardening:** a cleartext-bind guard plus source-IP allowlist for the raw-TCP/X12
85
+ listeners. (#558)
86
+ - **DICOM:** fail-closed C-STORE SCP peer controls (calling-AE + peer-IP) and a passphrase-key
87
+ callback (SEC-012/016). (#559)
88
+ - **Pipeline:** off-event-loop router/transform execution and a non-HL7 ingress size cap
89
+ (SEC-013/017). (#562)
90
+ - **Config trust:** enforce Windows config-source trust and scope the sibling-helper finder
91
+ (SEC-003/019). (#564)
92
+ - **PHI redaction:** narrowed a free-text PHI residual and added an advisory raise-fstring lint
93
+ (SEC-023). (#557)
94
+ - **Supply chain:** Dependabot security-track guardrails and adopter-scaffold hash-pinning. (#556)
95
+ - **Static analysis:** resolved two real CodeQL findings (webview HTML attribute escaping;
96
+ owner-only file-delivery fallback) (#554) and adopted a CodeQL triage policy + accepted-risk
97
+ register (ADR 0034). (#567)
98
+
99
+ ### Docs
100
+ - ADRs 0037–0040 record the throughput-build decisions (multi-process sharding, pass-through
101
+ connectors, the shelved L5 DB-sharding design, and the not-adopted free-threading assessment)
102
+ (#591); design notes for L5 DB-sharding (#588) and cp314t readiness (#589); and the Secure
103
+ AI-Assisted Development Standards updated with the audit lessons (#576).
104
+
9
105
  ## [0.2.5] — 2026-06-26 — Early Access
10
106
 
11
107
  A bug-fix release hardening SQL Server cluster cold-start.
@@ -203,7 +299,9 @@ tests, but the external code review + penetration test (the bar for a security-c
203
299
  - Releases are built, SBOM'd (CycloneDX), and signed with [Sigstore](https://www.sigstore.dev/) — see the
204
300
  `release` workflow.
205
301
 
206
- [Unreleased]: https://github.com/wshallwshall/MessageFoundry/compare/v0.2.5...HEAD
302
+ [Unreleased]: https://github.com/wshallwshall/MessageFoundry/compare/v0.2.7...HEAD
303
+ [0.2.7]: https://github.com/wshallwshall/MessageFoundry/compare/v0.2.6...v0.2.7
304
+ [0.2.6]: https://github.com/wshallwshall/MessageFoundry/compare/v0.2.5...v0.2.6
207
305
  [0.2.5]: https://github.com/wshallwshall/MessageFoundry/compare/v0.2.4...v0.2.5
208
306
  [0.2.4]: https://github.com/wshallwshall/MessageFoundry/compare/v0.2.3...v0.2.4
209
307
  [0.2.3]: https://github.com/wshallwshall/MessageFoundry/compare/v0.2.2...v0.2.3
@@ -1,7 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: messagefoundry
3
- Version: 0.2.5
3
+ Version: 0.2.7
4
4
  Summary: Open-source healthcare integration engine — route, transform, and validate messages across many formats and connection types
5
+ Project-URL: Homepage, https://messagefoundry.org/
6
+ Project-URL: Documentation, https://messagefoundry.org/
7
+ Project-URL: Repository, https://github.com/MEFORORG/MessageFoundry
8
+ Project-URL: Issues, https://github.com/MEFORORG/MessageFoundry/issues
5
9
  License-Expression: AGPL-3.0-or-later
6
10
  License-File: LICENSE
7
11
  License-File: NOTICE
@@ -66,10 +70,13 @@ Description-Content-Type: text/markdown
66
70
 
67
71
  # MessageFoundry
68
72
 
69
- [![CI](https://github.com/wshallwshall/MessageFoundry/actions/workflows/ci.yml/badge.svg)](https://github.com/wshallwshall/MessageFoundry/actions/workflows/ci.yml)
70
- [![Security](https://github.com/wshallwshall/MessageFoundry/actions/workflows/security.yml/badge.svg)](https://github.com/wshallwshall/MessageFoundry/actions/workflows/security.yml)
71
- [![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](https://github.com/wshallwshall/MessageFoundry/blob/main/LICENSE)
72
- [![Python 3.14+](https://img.shields.io/badge/python-3.14%2B-blue.svg)](https://github.com/wshallwshall/MessageFoundry/blob/main/pyproject.toml)
73
+ [![CI](https://github.com/MEFORORG/MessageFoundry/actions/workflows/ci.yml/badge.svg)](https://github.com/MEFORORG/MessageFoundry/actions/workflows/ci.yml)
74
+ [![Security](https://github.com/MEFORORG/MessageFoundry/actions/workflows/security.yml/badge.svg)](https://github.com/MEFORORG/MessageFoundry/actions/workflows/security.yml)
75
+ [![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](https://github.com/MEFORORG/MessageFoundry/blob/main/LICENSE)
76
+ [![Python 3.14+](https://img.shields.io/badge/python-3.14%2B-blue.svg)](https://github.com/MEFORORG/MessageFoundry/blob/main/pyproject.toml)
77
+
78
+ **Website & documentation: [messagefoundry.org](https://messagefoundry.org/)** ·
79
+ **[Changelog](https://github.com/MEFORORG/MessageFoundry/blob/main/CHANGELOG.md)**
73
80
 
74
81
  MessageFoundry is an **open-source healthcare integration engine** — a modern, Python-native HL7
75
82
  interface engine. It connects clinical and business systems by routing, transforming, and validating
@@ -96,10 +103,10 @@ The PySide6 console talks to it over a localhost HTTP + WebSocket API — the sa
96
103
  whether the engine runs in-process, as a local daemon, or (later) on a remote host.
97
104
  No hand-rolled IPC; the deployment split is a config choice, not an architectural fork.
98
105
 
99
- See **[docs/architecture-diagram.md](https://github.com/wshallwshall/MessageFoundry/blob/main/docs/architecture-diagram.md)** for the rendered diagrams —
106
+ See **[docs/architecture-diagram.md](https://github.com/MEFORORG/MessageFoundry/blob/main/docs/architecture-diagram.md)** for the rendered diagrams —
100
107
  system topology, runtime message flow through the staged queue, and the config wiring graph (Mermaid,
101
108
  renders on GitHub and in the VS Code preview). The prose source of truth is
102
- [docs/ARCHITECTURE.md](https://github.com/wshallwshall/MessageFoundry/blob/main/docs/ARCHITECTURE.md).
109
+ [docs/ARCHITECTURE.md](https://github.com/MEFORORG/MessageFoundry/blob/main/docs/ARCHITECTURE.md).
103
110
 
104
111
  ### Key decisions
105
112
  - **Reliable by default.** A durable, transactional pipeline gives at-least-once delivery,
@@ -113,7 +120,7 @@ renders on GitHub and in the VS Code preview). The prose source of truth is
113
120
  - **PHI is first-class.** Authentication, RBAC, a user-attributed audit log of message
114
121
  views/replays, **encryption-at-rest** for message bodies (AES-256-GCM), **global PHI log redaction**,
115
122
  and **transport TLS** (HTTPS/WSS for the API plus MLLP-over-TLS) are **built**; MFA and off-box log
116
- shipping remain on the roadmap. See [docs/PHI.md](https://github.com/wshallwshall/MessageFoundry/blob/main/docs/PHI.md) for the full data-protection map.
123
+ shipping remain on the roadmap. See [docs/PHI.md](https://github.com/MEFORORG/MessageFoundry/blob/main/docs/PHI.md) for the full data-protection map.
117
124
 
118
125
  ## Features
119
126
 
@@ -132,9 +139,9 @@ transport TLS — and it runs single-node or in active-passive high availability
132
139
 
133
140
  Full documentation lives on **[messagefoundry.org](https://messagefoundry.org/)**:
134
141
 
135
- - **[Mental map](https://messagefoundry.org/assets/docs/MessageFoundry-Mental-Model.pdf)** — a one-page
136
- picture of how the pieces fit: Connections → Router → Handlers → Connections, with the headless
137
- engine and the console/IDE that drive it.
142
+ - **[Mental map](https://messagefoundry.org/assets/docs/MessageFoundry-Mental-Model.pdf)** — an
143
+ orientation guide to how the pieces fit: Connections → Router → Handlers → Connections, with the
144
+ headless engine and the console/IDE that drive it.
138
145
  - **[Install Guide](https://messagefoundry.org/assets/docs/MessageFoundry-Install-Guide.pdf)** — install,
139
146
  configure, secure, and roll out to production.
140
147
  - **[User Guide](https://messagefoundry.org/assets/docs/MessageFoundry-User-Guide.pdf)** — author and
@@ -149,7 +156,7 @@ Full documentation lives on **[messagefoundry.org](https://messagefoundry.org/)*
149
156
  **The recommended way to deploy MessageFoundry is to install the published package from
150
157
  [PyPI](https://pypi.org/project/messagefoundry/)** — a signed, version-pinned wheel is the
151
158
  supported production artifact, with no source checkout required. Install it as a **pinned
152
- dependency**, then scaffold your own config repo ([ADR 0017](https://github.com/wshallwshall/MessageFoundry/blob/main/docs/adr/0017-consumer-deployment-model.md)):
159
+ dependency**, then scaffold your own config repo ([ADR 0017](https://github.com/MEFORORG/MessageFoundry/blob/main/docs/adr/0017-consumer-deployment-model.md)):
153
160
 
154
161
  ```bash
155
162
  pip install "messagefoundry==<version>" # pin the exact engine version (core runtime, SQLite store)
@@ -181,8 +188,8 @@ test harness* below for where to get it.
181
188
  > **Verify before you install (supply chain).** Every release is built by a GitHub Actions workflow,
182
189
  > Sigstore-signed, and carries SLSA build-provenance + PEP 740 attestations. Verify a downloaded
183
190
  > wheel against its source commit with
184
- > `gh attestation verify <wheel> --repo wshallwshall/MessageFoundry`, or pull the signed wheel + SBOM
185
- > from the [GitHub Release assets](https://github.com/wshallwshall/MessageFoundry/releases). For an
191
+ > `gh attestation verify <wheel> --repo MEFORORG/MessageFoundry`, or pull the signed wheel + SBOM
192
+ > from the [GitHub Release assets](https://github.com/MEFORORG/MessageFoundry/releases). For an
186
193
  > air-gapped site, mirror the wheel to a private index.
187
194
  >
188
195
  > *(Engine developers install from a checkout instead — see [Development](#development).)*
@@ -219,14 +226,14 @@ python -m messagefoundry.console --url http://127.0.0.1:8765
219
226
 
220
227
  ### VS Code extension & test harness
221
228
 
222
- - **VS Code extension** ([`ide/`](https://github.com/wshallwshall/MessageFoundry/tree/main/ide/)) — author and test interfaces in your editor: a New Route
229
+ - **VS Code extension** ([`ide/`](https://github.com/MEFORORG/MessageFoundry/tree/main/ide/)) — author and test interfaces in your editor: a New Route
223
230
  Wizard, validate-on-save, a Test Bench (dry-run `.hl7` files with before/after diffs), Stage →
224
231
  Promote to a running engine, and an HL7-aware `@messagefoundry` chat participant. **It is not on PyPI**
225
232
  (a VS Code extension is a different ecosystem) **and not yet on the VS Code Marketplace** — Marketplace
226
- + Open VSX publishing is **planned** (see [the backlog](https://github.com/wshallwshall/MessageFoundry/blob/main/docs/BACKLOG.md)). Until then, get it from
233
+ + Open VSX publishing is **planned** (see [the backlog](https://github.com/MEFORORG/MessageFoundry/blob/main/docs/BACKLOG.md)). Until then, get it from
227
234
  this repo: open the `ide/` folder in VS Code and press **F5** (Extension Development Host), or build the
228
235
  VSIX (`cd ide && npm install && npx @vscode/vsce package`) and install the `.vsix`. See
229
- [ide/README.md](https://github.com/wshallwshall/MessageFoundry/blob/main/ide/README.md).
236
+ [ide/README.md](https://github.com/MEFORORG/MessageFoundry/blob/main/ide/README.md).
230
237
  - **Test harness** — synthetic-only send/receive (MLLP), load, and failover tooling for exercising a
231
238
  running engine. It ships as a **separate distribution, `messagefoundry-harness`**, released in lockstep
232
239
  with the engine (it is *not* in the engine wheel): `pip install messagefoundry-harness`, then
@@ -235,14 +242,14 @@ python -m messagefoundry.console --url http://127.0.0.1:8765
235
242
  ## License
236
243
 
237
244
  MessageFoundry is licensed under the **GNU Affero General Public License v3.0 or later**
238
- (`AGPL-3.0-or-later`) — see [LICENSE](https://github.com/wshallwshall/MessageFoundry/blob/main/LICENSE). Running a modified version as a network service
245
+ (`AGPL-3.0-or-later`) — see [LICENSE](https://github.com/MEFORORG/MessageFoundry/blob/main/LICENSE). Running a modified version as a network service
239
246
  triggers the AGPL's §13 source-offer obligation. A separately-licensed commercial edition is planned
240
247
  by **MessageFoundry Organization** under the standard open-core model — see
241
- [COMMERCIAL-LICENSE.md](https://github.com/wshallwshall/MessageFoundry/blob/main/COMMERCIAL-LICENSE.md) (terms pending legal review). See [NOTICE](https://github.com/wshallwshall/MessageFoundry/blob/main/NOTICE)
248
+ [COMMERCIAL-LICENSE.md](https://github.com/MEFORORG/MessageFoundry/blob/main/COMMERCIAL-LICENSE.md) (terms pending legal review). See [NOTICE](https://github.com/MEFORORG/MessageFoundry/blob/main/NOTICE)
242
249
  for copyright and attribution.
243
250
 
244
251
  ## Contributing
245
252
 
246
- Contributions are welcome — see [CONTRIBUTING.md](https://github.com/wshallwshall/MessageFoundry/blob/main/CONTRIBUTING.md), our
247
- [Code of Conduct](https://github.com/wshallwshall/MessageFoundry/blob/main/CODE_OF_CONDUCT.md), and how the project is governed in [GOVERNANCE.md](https://github.com/wshallwshall/MessageFoundry/blob/main/GOVERNANCE.md).
248
- A signed [Contributor License Agreement](https://github.com/wshallwshall/MessageFoundry/blob/main/CLA.md) is required before a pull request can be merged.
253
+ Contributions are welcome — see [CONTRIBUTING.md](https://github.com/MEFORORG/MessageFoundry/blob/main/CONTRIBUTING.md), our
254
+ [Code of Conduct](https://github.com/MEFORORG/MessageFoundry/blob/main/CODE_OF_CONDUCT.md), and how the project is governed in [GOVERNANCE.md](https://github.com/MEFORORG/MessageFoundry/blob/main/GOVERNANCE.md).
255
+ A signed [Contributor License Agreement](https://github.com/MEFORORG/MessageFoundry/blob/main/CLA.md) is required before a pull request can be merged.