messagefoundry 0.2.14__tar.gz → 0.3.0__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 (970) hide show
  1. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/CHANGELOG.md +190 -0
  2. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/PKG-INFO +27 -19
  3. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/README.md +17 -13
  4. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/__init__.py +48 -1
  5. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/__main__.py +1101 -42
  6. messagefoundry-0.3.0/messagefoundry/actions.py +315 -0
  7. messagefoundry-0.3.0/messagefoundry/api/_ui_seam.py +136 -0
  8. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/api/app.py +969 -63
  9. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/api/auth_models.py +24 -1
  10. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/api/auth_routes.py +234 -18
  11. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/api/metrics.py +163 -0
  12. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/api/models.py +162 -1
  13. messagefoundry-0.3.0/messagefoundry/api/security.py +590 -0
  14. messagefoundry-0.3.0/messagefoundry/api/tls_client_cert.py +110 -0
  15. messagefoundry-0.3.0/messagefoundry/apiclient/__init__.py +18 -0
  16. {messagefoundry-0.2.14/messagefoundry/console → messagefoundry-0.3.0/messagefoundry/apiclient}/client.py +30 -5
  17. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/auth/ldap.py +74 -4
  18. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/auth/permissions.py +11 -1
  19. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/auth/service.py +536 -28
  20. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/auth/tokens.py +7 -0
  21. messagefoundry-0.3.0/messagefoundry/auth/webauthn.py +324 -0
  22. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/checks.py +323 -0
  23. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/config/ai_policy.py +10 -7
  24. messagefoundry-0.3.0/messagefoundry/config/code_sets.py +600 -0
  25. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/config/codeset_edit.py +115 -6
  26. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/config/connections_edit.py +1 -0
  27. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/config/connections_file.py +30 -0
  28. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/config/fhir_lookup.py +27 -6
  29. messagefoundry-0.3.0/messagefoundry/config/graph.py +1193 -0
  30. messagefoundry-0.3.0/messagefoundry/config/impact.py +670 -0
  31. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/config/models.py +222 -1
  32. messagefoundry-0.3.0/messagefoundry/config/reachability.py +144 -0
  33. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/config/run_context.py +28 -0
  34. messagefoundry-0.3.0/messagefoundry/config/secretprovider.py +183 -0
  35. messagefoundry-0.3.0/messagefoundry/config/secretprovider_vault.py +132 -0
  36. messagefoundry-0.3.0/messagefoundry/config/send_snapshot.py +51 -0
  37. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/config/settings.py +851 -47
  38. messagefoundry-0.3.0/messagefoundry/config/tls_policy.py +769 -0
  39. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/config/wiring.py +587 -33
  40. messagefoundry-0.3.0/messagefoundry/corepoint_import.py +590 -0
  41. messagefoundry-0.3.0/messagefoundry/diagnostics.py +58 -0
  42. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/generators/adt.py +5 -61
  43. messagefoundry-0.3.0/messagefoundry/hl7structures.py +229 -0
  44. messagefoundry-0.3.0/messagefoundry/lens.py +2993 -0
  45. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/logging_setup.py +109 -8
  46. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/__init__.py +2 -1
  47. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/_builtin_hl7.py +97 -0
  48. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/binary.py +210 -1
  49. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/message.py +77 -0
  50. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/split.py +48 -1
  51. messagefoundry-0.3.0/messagefoundry/pipeline/_sandbox_worker.py +208 -0
  52. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/pipeline/alert_sinks.py +63 -3
  53. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/pipeline/alerts.py +96 -0
  54. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/pipeline/cluster.py +69 -8
  55. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/pipeline/cluster_sqlserver.py +53 -7
  56. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/pipeline/dr.py +218 -6
  57. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/pipeline/dryrun.py +288 -37
  58. messagefoundry-0.3.0/messagefoundry/pipeline/dryrun_trace.py +414 -0
  59. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/pipeline/engine.py +381 -3
  60. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/pipeline/leader_tasks.py +8 -0
  61. messagefoundry-0.3.0/messagefoundry/pipeline/phase_timing.py +222 -0
  62. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/pipeline/retention.py +60 -1
  63. messagefoundry-0.3.0/messagefoundry/pipeline/sandbox.py +383 -0
  64. messagefoundry-0.3.0/messagefoundry/pipeline/saturation.py +100 -0
  65. messagefoundry-0.3.0/messagefoundry/pipeline/secret_rotation.py +210 -0
  66. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/pipeline/security_notify.py +16 -3
  67. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/pipeline/sharding.py +62 -6
  68. messagefoundry-0.3.0/messagefoundry/pipeline/stage_dispatcher.py +1088 -0
  69. messagefoundry-0.3.0/messagefoundry/pipeline/wiring_runner.py +5604 -0
  70. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/secrets_dpapi.py +1 -1
  71. messagefoundry-0.3.0/messagefoundry/service_status.py +90 -0
  72. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/store/__init__.py +4 -0
  73. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/store/base.py +418 -10
  74. messagefoundry-0.3.0/messagefoundry/store/crypto.py +484 -0
  75. messagefoundry-0.3.0/messagefoundry/store/keyprovider_vault.py +145 -0
  76. messagefoundry-0.3.0/messagefoundry/store/metadata.py +97 -0
  77. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/store/postgres.py +1677 -62
  78. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/store/sqlserver.py +3233 -308
  79. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/store/store.py +2143 -156
  80. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/transports/__init__.py +1 -0
  81. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/transports/base.py +47 -5
  82. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/transports/database.py +243 -16
  83. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/transports/dicom.py +65 -10
  84. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/transports/dicomweb.py +40 -8
  85. messagefoundry-0.3.0/messagefoundry/transports/direct.py +373 -0
  86. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/transports/email.py +22 -2
  87. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/transports/fhir.py +193 -40
  88. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/transports/file.py +59 -8
  89. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/transports/framing.py +7 -0
  90. messagefoundry-0.3.0/messagefoundry/transports/http_auth.py +418 -0
  91. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/transports/mllp.py +598 -29
  92. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/transports/remotefile.py +183 -26
  93. messagefoundry-0.3.0/messagefoundry/transports/rest.py +737 -0
  94. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/transports/smart.py +7 -0
  95. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/transports/soap.py +138 -30
  96. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/transports/tcp.py +20 -2
  97. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/transports/x12.py +24 -3
  98. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/verify/checks.py +9 -6
  99. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/pyproject.toml +59 -14
  100. messagefoundry-0.2.14/.claude/settings.json +0 -81
  101. messagefoundry-0.2.14/.dockerignore +0 -45
  102. messagefoundry-0.2.14/.gitattributes +0 -5
  103. messagefoundry-0.2.14/.github/CODEOWNERS +0 -19
  104. messagefoundry-0.2.14/.github/ISSUE_TEMPLATE/bug_report.md +0 -41
  105. messagefoundry-0.2.14/.github/ISSUE_TEMPLATE/config.yml +0 -7
  106. messagefoundry-0.2.14/.github/ISSUE_TEMPLATE/feature_request.md +0 -24
  107. messagefoundry-0.2.14/.github/PULL_REQUEST_TEMPLATE.md +0 -29
  108. messagefoundry-0.2.14/.github/SECURITY.md +0 -84
  109. messagefoundry-0.2.14/.github/dependabot.yml +0 -57
  110. messagefoundry-0.2.14/.github/workflows/benchmark.yml +0 -217
  111. messagefoundry-0.2.14/.github/workflows/ci.yml +0 -1044
  112. messagefoundry-0.2.14/.github/workflows/cla.yml +0 -47
  113. messagefoundry-0.2.14/.github/workflows/codeql.yml +0 -67
  114. messagefoundry-0.2.14/.github/workflows/dependabot-auto-merge.yml +0 -165
  115. messagefoundry-0.2.14/.github/workflows/dependabot-lock-resync.yml +0 -95
  116. messagefoundry-0.2.14/.github/workflows/freethread-smoke.yml +0 -95
  117. messagefoundry-0.2.14/.github/workflows/manifest-lint.yml +0 -114
  118. messagefoundry-0.2.14/.github/workflows/release-sync-check.yml +0 -44
  119. messagefoundry-0.2.14/.github/workflows/release.yml +0 -435
  120. messagefoundry-0.2.14/.github/workflows/scorecard.yml +0 -59
  121. messagefoundry-0.2.14/.github/workflows/security.yml +0 -279
  122. messagefoundry-0.2.14/.github/workflows/selfhosted-win2025-sql.yml +0 -85
  123. messagefoundry-0.2.14/.github/workflows/vuln-metrics.yml +0 -40
  124. messagefoundry-0.2.14/.github/zizmor.yml +0 -31
  125. messagefoundry-0.2.14/.gitleaks.toml +0 -14
  126. messagefoundry-0.2.14/.mefor-hooks/pre-commit +0 -25
  127. messagefoundry-0.2.14/.pre-commit-config.yaml +0 -49
  128. messagefoundry-0.2.14/.semgrep/messagefoundry.yml +0 -52
  129. messagefoundry-0.2.14/CLA.md +0 -74
  130. messagefoundry-0.2.14/CLAUDE.md +0 -434
  131. messagefoundry-0.2.14/CODE_OF_CONDUCT.md +0 -42
  132. messagefoundry-0.2.14/COMMERCIAL-LICENSE.md +0 -67
  133. messagefoundry-0.2.14/CONTRIBUTING.md +0 -83
  134. messagefoundry-0.2.14/GOVERNANCE.md +0 -73
  135. messagefoundry-0.2.14/MAINTAINERS.md +0 -32
  136. messagefoundry-0.2.14/docker/Dockerfile +0 -121
  137. messagefoundry-0.2.14/docker/README.md +0 -136
  138. messagefoundry-0.2.14/docker/compose.yaml +0 -201
  139. messagefoundry-0.2.14/docker/k8s/ha-postgres.yaml +0 -242
  140. messagefoundry-0.2.14/docker/k8s/secret.example.yaml +0 -37
  141. messagefoundry-0.2.14/docker/k8s/statefulset.yaml +0 -132
  142. messagefoundry-0.2.14/docker/locks/requirements-core.lock +0 -370
  143. messagefoundry-0.2.14/docker/locks/requirements-sqlserver.lock +0 -395
  144. messagefoundry-0.2.14/docker/secrets.env.example +0 -15
  145. messagefoundry-0.2.14/docker/smoke/Dockerfile +0 -20
  146. messagefoundry-0.2.14/docker/smoke/config/IB_Test_ADT.py +0 -29
  147. messagefoundry-0.2.14/docker/smoke/send_adt.py +0 -62
  148. messagefoundry-0.2.14/docs/ADOPTER-CI.md +0 -183
  149. messagefoundry-0.2.14/docs/AI.md +0 -221
  150. messagefoundry-0.2.14/docs/ANTIVIRUS-FIREWALL.md +0 -219
  151. messagefoundry-0.2.14/docs/ARCHITECTURE.md +0 -344
  152. messagefoundry-0.2.14/docs/BACKLOG.md +0 -3648
  153. messagefoundry-0.2.14/docs/BRAND.md +0 -103
  154. messagefoundry-0.2.14/docs/CI-QUALITY.md +0 -57
  155. messagefoundry-0.2.14/docs/CLOUD-DEPLOYMENT.md +0 -306
  156. messagefoundry-0.2.14/docs/CLOUD-PHI-HIPAA.md +0 -185
  157. messagefoundry-0.2.14/docs/CLUSTERING.md +0 -306
  158. messagefoundry-0.2.14/docs/CODESETS.md +0 -109
  159. messagefoundry-0.2.14/docs/CONFIGURATION.md +0 -839
  160. messagefoundry-0.2.14/docs/CONNECTIONS.md +0 -1284
  161. messagefoundry-0.2.14/docs/CONTAINER-EXPOSURE-EVALUATION.md +0 -349
  162. messagefoundry-0.2.14/docs/CONTRIBUTOR-FIRST-ISSUES.md +0 -73
  163. messagefoundry-0.2.14/docs/CONTRIBUTOR-PROGRAM-PLAN.md +0 -282
  164. messagefoundry-0.2.14/docs/COUNSEL-ENGAGEMENT-BRIEF.md +0 -268
  165. messagefoundry-0.2.14/docs/DEPLOY-SERVER-DB.md +0 -220
  166. messagefoundry-0.2.14/docs/DEPLOYMENT.md +0 -289
  167. messagefoundry-0.2.14/docs/DICOM.md +0 -141
  168. messagefoundry-0.2.14/docs/DUAL_LICENSING_PLAN.md +0 -67
  169. messagefoundry-0.2.14/docs/EARLY-ADOPTER-GUIDE.md +0 -854
  170. messagefoundry-0.2.14/docs/FEATURE-MAP.md +0 -218
  171. messagefoundry-0.2.14/docs/HL7-VALIDATION.md +0 -115
  172. messagefoundry-0.2.14/docs/INSTALL-GUIDE.md +0 -332
  173. messagefoundry-0.2.14/docs/LOAD-TESTING.md +0 -261
  174. messagefoundry-0.2.14/docs/MENTAL-MODEL.md +0 -494
  175. messagefoundry-0.2.14/docs/MessageFoundry-Mental-Model.docx +0 -0
  176. messagefoundry-0.2.14/docs/PHI.md +0 -662
  177. messagefoundry-0.2.14/docs/POSITIONING.md +0 -70
  178. messagefoundry-0.2.14/docs/REMOTE-CONSOLE-CUSTOMER-GUIDE.md +0 -176
  179. messagefoundry-0.2.14/docs/REMOTE-CONSOLE.md +0 -125
  180. messagefoundry-0.2.14/docs/SECURITY-REMEDIATION-LEDGER.md +0 -84
  181. messagefoundry-0.2.14/docs/SECURITY.md +0 -551
  182. messagefoundry-0.2.14/docs/SERVICE.md +0 -328
  183. messagefoundry-0.2.14/docs/SUPPORT-POLICY.md +0 -39
  184. messagefoundry-0.2.14/docs/SYSTEM-REQUIREMENTS.md +0 -157
  185. messagefoundry-0.2.14/docs/Secure_AI_Development_Standards.md +0 -597
  186. messagefoundry-0.2.14/docs/Secure_Development_Standards.md +0 -498
  187. messagefoundry-0.2.14/docs/TEE-RELAY.md +0 -126
  188. messagefoundry-0.2.14/docs/THROUGHPUT-IMPROVEMENTS.md +0 -197
  189. messagefoundry-0.2.14/docs/THROUGHPUT.md +0 -304
  190. messagefoundry-0.2.14/docs/USER-GUIDE.md +0 -625
  191. messagefoundry-0.2.14/docs/WORKTREES.md +0 -97
  192. messagefoundry-0.2.14/docs/adr/0001-staged-pipeline-architecture.md +0 -250
  193. messagefoundry-0.2.14/docs/adr/0002-phase2-transport-security-and-strong-auth.md +0 -270
  194. messagefoundry-0.2.14/docs/adr/0003-non-hl7-transports-database-rest-soap.md +0 -185
  195. messagefoundry-0.2.14/docs/adr/0004-payload-agnostic-ingress.md +0 -161
  196. messagefoundry-0.2.14/docs/adr/0005-transform-accessible-state.md +0 -170
  197. messagefoundry-0.2.14/docs/adr/0006-external-data-lookups.md +0 -208
  198. messagefoundry-0.2.14/docs/adr/0007-gui-manageable-connections-toml.md +0 -160
  199. messagefoundry-0.2.14/docs/adr/0008-cluster-observability-api.md +0 -131
  200. messagefoundry-0.2.14/docs/adr/0009-run-scoped-context-providers.md +0 -91
  201. messagefoundry-0.2.14/docs/adr/0010-handler-callable-db-lookup.md +0 -90
  202. messagefoundry-0.2.14/docs/adr/0011-timer-scheduled-source.md +0 -116
  203. messagefoundry-0.2.14/docs/adr/0012-x12-edi-codec.md +0 -308
  204. messagefoundry-0.2.14/docs/adr/0013-increment-2-reingress-design.md +0 -931
  205. messagefoundry-0.2.14/docs/adr/0013-query-response-orchestration.md +0 -490
  206. messagefoundry-0.2.14/docs/adr/0014-alerting-rules-engine.md +0 -126
  207. messagefoundry-0.2.14/docs/adr/0015-ws-soap-outbound-mtls-wssecurity.md +0 -445
  208. messagefoundry-0.2.14/docs/adr/0016-synchronous-x12-request-response.md +0 -500
  209. messagefoundry-0.2.14/docs/adr/0017-consumer-deployment-model.md +0 -256
  210. messagefoundry-0.2.14/docs/adr/0018-per-message-signatures-accepted-risk.md +0 -130
  211. messagefoundry-0.2.14/docs/adr/0019-pluggable-keyprovider-hsm-kms-vault.md +0 -430
  212. messagefoundry-0.2.14/docs/adr/0020-protocol-diagnostic-capture.md +0 -90
  213. messagefoundry-0.2.14/docs/adr/0021-inbound-ack-nak-capture-response-sent.md +0 -172
  214. messagefoundry-0.2.14/docs/adr/0022-fhir-resource-codec-rest-client.md +0 -594
  215. messagefoundry-0.2.14/docs/adr/0023-inbound-http-listener.md +0 -326
  216. messagefoundry-0.2.14/docs/adr/0024-smart-backend-services-token-provider.md +0 -296
  217. messagefoundry-0.2.14/docs/adr/0025-dicom-codec-store-connectors.md +0 -835
  218. messagefoundry-0.2.14/docs/adr/0026-off-box-egress-update-check.md +0 -122
  219. messagefoundry-0.2.14/docs/adr/0027-per-connection-retention.md +0 -208
  220. messagefoundry-0.2.14/docs/adr/0028-base64-binary-carriage-codec.md +0 -174
  221. messagefoundry-0.2.14/docs/adr/0029-email-smtp-destination.md +0 -267
  222. messagefoundry-0.2.14/docs/adr/0030-anonymization-test-harness-tee.md +0 -399
  223. messagefoundry-0.2.14/docs/adr/0031-startup-connection-fault-isolation.md +0 -156
  224. messagefoundry-0.2.14/docs/adr/0032-console-desktop-launch.md +0 -347
  225. messagefoundry-0.2.14/docs/adr/0033-gui-manageable-code-sets.md +0 -212
  226. messagefoundry-0.2.14/docs/adr/0034-static-analysis-triage-policy-accepted-risk-register.md +0 -80
  227. messagefoundry-0.2.14/docs/adr/0035-ide-extension-workspace-trust-and-scope.md +0 -102
  228. messagefoundry-0.2.14/docs/adr/0036-windows-config-source-trust.md +0 -107
  229. messagefoundry-0.2.14/docs/adr/0037-multi-process-sharding-l3.md +0 -112
  230. messagefoundry-0.2.14/docs/adr/0038-internal-pass-through-connector.md +0 -111
  231. messagefoundry-0.2.14/docs/adr/0039-database-tier-sharding-l5.md +0 -110
  232. messagefoundry-0.2.14/docs/adr/0040-free-threaded-engine-support.md +0 -95
  233. messagefoundry-0.2.14/docs/adr/0041-load-path-attestation-and-change-attribution.md +0 -248
  234. messagefoundry-0.2.14/docs/adr/0042-embedded-document-pruning.md +0 -177
  235. messagefoundry-0.2.14/docs/adr/0043-fhir-read-lookup.md +0 -303
  236. messagefoundry-0.2.14/docs/adr/0044-operator-alert-state.md +0 -262
  237. messagefoundry-0.2.14/docs/adr/0045-custom-rbac-roles.md +0 -266
  238. messagefoundry-0.2.14/docs/adr/0046-message-content-search.md +0 -251
  239. messagefoundry-0.2.14/docs/adr/0047-cloud-kubernetes-ha-deployment-packaging.md +0 -325
  240. messagefoundry-0.2.14/docs/adr/0048-third-tier-disaster-recovery-standby.md +0 -648
  241. messagefoundry-0.2.14/docs/adr/0049-turnkey-dr-backup-restore-verify.md +0 -525
  242. messagefoundry-0.2.14/docs/adr/0050-single-project-root-config-anchoring.md +0 -404
  243. messagefoundry-0.2.14/docs/adr/0051-corepoint-throughput-parity-strategy.md +0 -183
  244. messagefoundry-0.2.14/docs/adr/0052-enterprise-scale-target.md +0 -101
  245. messagefoundry-0.2.14/docs/adr/0053-free-threaded-multicore-engine.md +0 -249
  246. messagefoundry-0.2.14/docs/adr/0054-low-allocation-builtins-hl7-parser.md +0 -221
  247. messagefoundry-0.2.14/docs/adr/0055-group-commit-durable-write.md +0 -152
  248. messagefoundry-0.2.14/docs/adr/0056-engine-managed-vip-failover.md +0 -643
  249. messagefoundry-0.2.14/docs/adr/0057-inline-step-a-fast-path.md +0 -184
  250. messagefoundry-0.2.14/docs/adr/0058-batch-claim-fifo-prefix.md +0 -251
  251. messagefoundry-0.2.14/docs/adr/0059-seq-only-fifo-ordering.md +0 -55
  252. messagefoundry-0.2.14/docs/adr/0060-rename-based-fifo-index-migration.md +0 -78
  253. messagefoundry-0.2.14/docs/adr/0061-per-lane-wake-events.md +0 -106
  254. messagefoundry-0.2.14/docs/adr/0062-default-store-pool-size.md +0 -137
  255. messagefoundry-0.2.14/docs/adr/0063-no-split-store-unified-store-for-sharding.md +0 -101
  256. messagefoundry-0.2.14/docs/adr/README.md +0 -74
  257. messagefoundry-0.2.14/docs/adr/TEMPLATE.md +0 -51
  258. messagefoundry-0.2.14/docs/architecture-components.png +0 -0
  259. messagefoundry-0.2.14/docs/architecture-components.svg +0 -1
  260. messagefoundry-0.2.14/docs/architecture-config-graph.png +0 -0
  261. messagefoundry-0.2.14/docs/architecture-config-graph.svg +0 -1
  262. messagefoundry-0.2.14/docs/architecture-diagram.md +0 -269
  263. messagefoundry-0.2.14/docs/architecture-message-flow.png +0 -0
  264. messagefoundry-0.2.14/docs/architecture-message-flow.svg +0 -1
  265. messagefoundry-0.2.14/docs/architecture-topology.png +0 -0
  266. messagefoundry-0.2.14/docs/architecture-topology.svg +0 -1
  267. messagefoundry-0.2.14/docs/benchmarks/TUNING-BASELINE.md +0 -207
  268. messagefoundry-0.2.14/docs/benchmarks/results/2026-06-16-ci-linux/environment.txt +0 -14
  269. messagefoundry-0.2.14/docs/benchmarks/results/2026-06-16-ci-linux/failover-postgres.json +0 -83
  270. messagefoundry-0.2.14/docs/benchmarks/results/2026-06-16-ci-linux/failover-sqlserver.json +0 -83
  271. messagefoundry-0.2.14/docs/benchmarks/results/2026-06-16-ci-linux/reference-postgres.json +0 -235
  272. messagefoundry-0.2.14/docs/benchmarks/results/2026-06-16-ci-linux/reference-sqlite.json +0 -235
  273. messagefoundry-0.2.14/docs/benchmarks/results/2026-06-16-ci-linux/reference-sqlserver.json +0 -235
  274. messagefoundry-0.2.14/docs/benchmarks/step-b-write-amplification.md +0 -76
  275. messagefoundry-0.2.14/docs/design/dbshard.md +0 -289
  276. messagefoundry-0.2.14/docs/design/freethread-spike.md +0 -177
  277. messagefoundry-0.2.14/docs/design/freethread.md +0 -253
  278. messagefoundry-0.2.14/docs/design/multiproc.md +0 -53
  279. messagefoundry-0.2.14/docs/hl7-message-ordering-reference.md +0 -86
  280. messagefoundry-0.2.14/docs/message-ordering-design.md +0 -209
  281. messagefoundry-0.2.14/docs/releases/ASVS-OPTION-A-MULTISESSION-PLAN.md +0 -284
  282. messagefoundry-0.2.14/docs/releases/ASVS-PARTIALS-SWEEP-MULTISESSION-PLAN.md +0 -373
  283. messagefoundry-0.2.14/docs/releases/DELTA-SECURITY-FIXES-MULTISESSION-PLAN.md +0 -197
  284. messagefoundry-0.2.14/docs/releases/DOGFOOD-BACKLOG-MULTISESSION-PLAN.md +0 -178
  285. messagefoundry-0.2.14/docs/releases/MULTISESSION-PLAN-3.md +0 -348
  286. messagefoundry-0.2.14/docs/releases/MULTISESSION-PLAN-4.md +0 -167
  287. messagefoundry-0.2.14/docs/releases/MULTISESSION-PLAN-5.md +0 -453
  288. messagefoundry-0.2.14/docs/releases/MULTISESSION-PLAN-6.md +0 -258
  289. messagefoundry-0.2.14/docs/releases/MULTISESSION-PLAN-v0.2.md +0 -526
  290. messagefoundry-0.2.14/docs/releases/MULTISESSION-PLAN.md +0 -275
  291. messagefoundry-0.2.14/docs/releases/PLAN-3-LANE-HANDOFFS.md +0 -145
  292. messagefoundry-0.2.14/docs/releases/V0.2-LANE-HANDOFFS.md +0 -116
  293. messagefoundry-0.2.14/docs/releases/v0.1-EXECUTION-PLAN.md +0 -343
  294. messagefoundry-0.2.14/docs/releases/v0.1-PLAN.md +0 -503
  295. messagefoundry-0.2.14/docs/releases/v0.1.0-PRETAG-CHECKLIST.md +0 -59
  296. messagefoundry-0.2.14/docs/research/cloud-deployment-research-2026-06.md +0 -137
  297. messagefoundry-0.2.14/docs/research/config-ux-review.md +0 -235
  298. messagefoundry-0.2.14/docs/research/non-hl7-transform-components.md +0 -275
  299. messagefoundry-0.2.14/docs/reviews/DELTA-REVIEW-2026-07-01.md +0 -262
  300. messagefoundry-0.2.14/docs/reviews/DEPENDENCY-INFOSEC-POSTURE-2026-06-23.md +0 -175
  301. messagefoundry-0.2.14/docs/reviews/FULL-REVIEW-2026-06-10.md +0 -271
  302. messagefoundry-0.2.14/docs/security/ADVISORY-PROCESS.md +0 -35
  303. messagefoundry-0.2.14/docs/security/ASVS-FAILS-REMEDIATION-PLAN.md +0 -887
  304. messagefoundry-0.2.14/docs/security/ASVS-L2-PHASE0-CHANGES.md +0 -192
  305. messagefoundry-0.2.14/docs/security/ASVS-L2-REMEDIATION-PLAN.md +0 -256
  306. messagefoundry-0.2.14/docs/security/ASVS-L3-ASSESSMENT.md +0 -942
  307. messagefoundry-0.2.14/docs/security/ASVS-L3-REMEDIATION-PLAN.md +0 -514
  308. messagefoundry-0.2.14/docs/security/ASVS-L3-STATUS.md +0 -131
  309. messagefoundry-0.2.14/docs/security/BEYOND-ASVS-L3-ONEPAGE.md +0 -23
  310. messagefoundry-0.2.14/docs/security/BEYOND-ASVS-L3-REMEDIATION-PLAN-ONEPAGE.md +0 -31
  311. messagefoundry-0.2.14/docs/security/BEYOND-ASVS-L3-REMEDIATION-PLAN.md +0 -930
  312. messagefoundry-0.2.14/docs/security/BEYOND-ASVS-L3.md +0 -133
  313. messagefoundry-0.2.14/docs/security/DEP-CVE-RUNBOOK.md +0 -96
  314. messagefoundry-0.2.14/docs/security/DEPENDENCY-METRICS.md +0 -47
  315. messagefoundry-0.2.14/docs/security/MEFOR-Code-Review-Checklist.xlsx +0 -0
  316. messagefoundry-0.2.14/docs/security/PHASE-8C-RBAC.md +0 -111
  317. messagefoundry-0.2.14/docs/security/PUBLISHING.md +0 -126
  318. messagefoundry-0.2.14/docs/security/RCA-TEMPLATE.md +0 -60
  319. messagefoundry-0.2.14/docs/security/RELEASE-GATE.md +0 -94
  320. messagefoundry-0.2.14/docs/security/REMEDIATION-PLAN.md +0 -172
  321. messagefoundry-0.2.14/docs/security/REVIEW-2026-06-07.md +0 -521
  322. messagefoundry-0.2.14/docs/security/SDS-CONFORMANCE-REVIEW-2026-06-12.md +0 -228
  323. messagefoundry-0.2.14/docs/security/SDS-REMEDIATION-PLAN.md +0 -93
  324. messagefoundry-0.2.14/docs/security/SECURITY-POSTURE.md +0 -164
  325. messagefoundry-0.2.14/docs/security/SOUP-DEPENDENCY-HANDLING.md +0 -133
  326. messagefoundry-0.2.14/docs/security/SOUP-REVIEW-2026-06-18.md +0 -82
  327. messagefoundry-0.2.14/docs/security/SOUP-REVIEW-PROCEDURE.md +0 -231
  328. messagefoundry-0.2.14/docs/security/THREAT-MODEL.md +0 -156
  329. messagefoundry-0.2.14/docs/testing/VERIFY.md +0 -83
  330. messagefoundry-0.2.14/docs/testing/WIN2025-ACCEPTANCE.md +0 -73
  331. messagefoundry-0.2.14/docs/testing/WIN2025-TEST-MATRIX.md +0 -109
  332. messagefoundry-0.2.14/docs/testing/WIN2025-TEST-PLAN.md +0 -1550
  333. messagefoundry-0.2.14/docs/throughput-build-plan.md +0 -102
  334. messagefoundry-0.2.14/docs/throughput-roadmap.md +0 -361
  335. messagefoundry-0.2.14/environments/dev.toml +0 -32
  336. messagefoundry-0.2.14/environments/prod.toml +0 -33
  337. messagefoundry-0.2.14/harness/README.md +0 -101
  338. messagefoundry-0.2.14/harness/__main__.py +0 -517
  339. messagefoundry-0.2.14/harness/acceptance/__init__.py +0 -21
  340. messagefoundry-0.2.14/harness/acceptance/__main__.py +0 -93
  341. messagefoundry-0.2.14/harness/acceptance/matrix.py +0 -528
  342. messagefoundry-0.2.14/harness/acceptance/probes.py +0 -220
  343. messagefoundry-0.2.14/harness/acceptance/report.py +0 -147
  344. messagefoundry-0.2.14/harness/acceptance/runner.py +0 -176
  345. messagefoundry-0.2.14/harness/compose.py +0 -225
  346. messagefoundry-0.2.14/harness/config/connscale/__init__.py +0 -4
  347. messagefoundry-0.2.14/harness/config/connscale/_shape.py +0 -141
  348. messagefoundry-0.2.14/harness/config/connscale/gen_toml.py +0 -106
  349. messagefoundry-0.2.14/harness/config/connscale/graph.py +0 -94
  350. messagefoundry-0.2.14/harness/config/coverage.py +0 -80
  351. messagefoundry-0.2.14/harness/config/load/_shape.py +0 -155
  352. messagefoundry-0.2.14/harness/config/load/graph.py +0 -99
  353. messagefoundry-0.2.14/harness/config/passthrough/graph.py +0 -68
  354. messagefoundry-0.2.14/harness/config/store_once/graph.py +0 -73
  355. messagefoundry-0.2.14/harness/file_panel.py +0 -250
  356. messagefoundry-0.2.14/harness/file_transport.py +0 -165
  357. messagefoundry-0.2.14/harness/load/__init__.py +0 -17
  358. messagefoundry-0.2.14/harness/load/connscale/__init__.py +0 -14
  359. messagefoundry-0.2.14/harness/load/connscale/driver.py +0 -135
  360. messagefoundry-0.2.14/harness/load/connscale/probe.py +0 -113
  361. messagefoundry-0.2.14/harness/load/connscale/profile.py +0 -364
  362. messagefoundry-0.2.14/harness/load/connscale/report.py +0 -307
  363. messagefoundry-0.2.14/harness/load/connscale/runner.py +0 -657
  364. messagefoundry-0.2.14/harness/load/corpus.py +0 -176
  365. messagefoundry-0.2.14/harness/load/correlator.py +0 -73
  366. messagefoundry-0.2.14/harness/load/enginepoll.py +0 -384
  367. messagefoundry-0.2.14/harness/load/failover.py +0 -821
  368. messagefoundry-0.2.14/harness/load/failover_track.py +0 -143
  369. messagefoundry-0.2.14/harness/load/governor.py +0 -109
  370. messagefoundry-0.2.14/harness/load/ids.py +0 -42
  371. messagefoundry-0.2.14/harness/load/metrics.py +0 -219
  372. messagefoundry-0.2.14/harness/load/multishard.py +0 -753
  373. messagefoundry-0.2.14/harness/load/profile.py +0 -633
  374. messagefoundry-0.2.14/harness/load/profiles/README.md +0 -34
  375. messagefoundry-0.2.14/harness/load/profiles/adt-fanout-stress.toml +0 -116
  376. messagefoundry-0.2.14/harness/load/profiles/closed-loop.toml +0 -100
  377. messagefoundry-0.2.14/harness/load/profiles/connscale-smoke.toml +0 -31
  378. messagefoundry-0.2.14/harness/load/profiles/connscale.toml +0 -35
  379. messagefoundry-0.2.14/harness/load/profiles/failover.toml +0 -55
  380. messagefoundry-0.2.14/harness/load/profiles/fanout-baseline.toml +0 -92
  381. messagefoundry-0.2.14/harness/load/profiles/malformed-load.toml +0 -44
  382. messagefoundry-0.2.14/harness/load/profiles/reference.toml +0 -148
  383. messagefoundry-0.2.14/harness/load/profiles/smoke-sqlserver.toml +0 -42
  384. messagefoundry-0.2.14/harness/load/profiles/smoke.toml +0 -36
  385. messagefoundry-0.2.14/harness/load/profiles/soak.toml +0 -45
  386. messagefoundry-0.2.14/harness/load/profiles/spike-burst.toml +0 -50
  387. messagefoundry-0.2.14/harness/load/profiles/sustained-overload.toml +0 -51
  388. messagefoundry-0.2.14/harness/load/profiles/writeamp.toml +0 -41
  389. messagefoundry-0.2.14/harness/load/report.py +0 -647
  390. messagefoundry-0.2.14/harness/load/runner.py +0 -199
  391. messagefoundry-0.2.14/harness/load/sender.py +0 -322
  392. messagefoundry-0.2.14/harness/load/sink.py +0 -136
  393. messagefoundry-0.2.14/harness/mllp.py +0 -271
  394. messagefoundry-0.2.14/harness/monitor.py +0 -547
  395. messagefoundry-0.2.14/harness/receive.py +0 -137
  396. messagefoundry-0.2.14/harness/reconcile/__init__.py +0 -49
  397. messagefoundry-0.2.14/harness/reconcile/__main__.py +0 -149
  398. messagefoundry-0.2.14/harness/reconcile/capture.py +0 -150
  399. messagefoundry-0.2.14/harness/reconcile/compare.py +0 -179
  400. messagefoundry-0.2.14/harness/reconcile/normalize.py +0 -234
  401. messagefoundry-0.2.14/harness/reconcile/report.py +0 -73
  402. messagefoundry-0.2.14/harness/scenarios.py +0 -195
  403. messagefoundry-0.2.14/harness/send.py +0 -175
  404. messagefoundry-0.2.14/harness/window.py +0 -52
  405. messagefoundry-0.2.14/ide/.gitignore +0 -7
  406. messagefoundry-0.2.14/ide/.vscodeignore +0 -12
  407. messagefoundry-0.2.14/ide/README.md +0 -152
  408. messagefoundry-0.2.14/ide/esbuild.js +0 -28
  409. messagefoundry-0.2.14/ide/media/hl7schema.json +0 -1
  410. messagefoundry-0.2.14/ide/media/icon-amber.svg +0 -5
  411. messagefoundry-0.2.14/ide/media/icon.png +0 -0
  412. messagefoundry-0.2.14/ide/media/icon.svg +0 -6
  413. messagefoundry-0.2.14/ide/package-lock.json +0 -5685
  414. messagefoundry-0.2.14/ide/package.json +0 -433
  415. messagefoundry-0.2.14/ide/snippets/messagefoundry.code-snippets +0 -145
  416. messagefoundry-0.2.14/ide/src/aiPolicy.ts +0 -136
  417. messagefoundry-0.2.14/ide/src/alertEditor.ts +0 -329
  418. messagefoundry-0.2.14/ide/src/auth.ts +0 -134
  419. messagefoundry-0.2.14/ide/src/chat.ts +0 -167
  420. messagefoundry-0.2.14/ide/src/cli.ts +0 -248
  421. messagefoundry-0.2.14/ide/src/codeSetEditor.ts +0 -459
  422. messagefoundry-0.2.14/ide/src/codesetsTree.ts +0 -109
  423. messagefoundry-0.2.14/ide/src/completion.ts +0 -157
  424. messagefoundry-0.2.14/ide/src/connectionEditor.ts +0 -402
  425. messagefoundry-0.2.14/ide/src/editorToolbar.ts +0 -122
  426. messagefoundry-0.2.14/ide/src/engineClient.ts +0 -143
  427. messagefoundry-0.2.14/ide/src/engineTarget.ts +0 -44
  428. messagefoundry-0.2.14/ide/src/extension.ts +0 -248
  429. messagefoundry-0.2.14/ide/src/generate.ts +0 -99
  430. messagefoundry-0.2.14/ide/src/git.ts +0 -70
  431. messagefoundry-0.2.14/ide/src/graphTree.ts +0 -215
  432. messagefoundry-0.2.14/ide/src/home.ts +0 -132
  433. messagefoundry-0.2.14/ide/src/insertElement.ts +0 -78
  434. messagefoundry-0.2.14/ide/src/newRoute.ts +0 -327
  435. messagefoundry-0.2.14/ide/src/promote.ts +0 -196
  436. messagefoundry-0.2.14/ide/src/promoteTarget.ts +0 -55
  437. messagefoundry-0.2.14/ide/src/sourceControl.ts +0 -352
  438. messagefoundry-0.2.14/ide/src/test/runTest.ts +0 -22
  439. messagefoundry-0.2.14/ide/src/test/suite/ai-policy.test.ts +0 -65
  440. messagefoundry-0.2.14/ide/src/test/suite/chat.test.ts +0 -81
  441. messagefoundry-0.2.14/ide/src/test/suite/editor-toolbar.test.ts +0 -101
  442. messagefoundry-0.2.14/ide/src/test/suite/engine-target.test.ts +0 -43
  443. messagefoundry-0.2.14/ide/src/test/suite/extension.test.ts +0 -70
  444. messagefoundry-0.2.14/ide/src/test/suite/index.ts +0 -31
  445. messagefoundry-0.2.14/ide/src/test/suite/insert-element.test.ts +0 -83
  446. messagefoundry-0.2.14/ide/src/test/suite/promote-target.test.ts +0 -85
  447. messagefoundry-0.2.14/ide/src/test/suite/pythonpath.test.ts +0 -79
  448. messagefoundry-0.2.14/ide/src/test/suite/settings-scope.test.ts +0 -37
  449. messagefoundry-0.2.14/ide/src/testBench.ts +0 -310
  450. messagefoundry-0.2.14/ide/src/validate.ts +0 -54
  451. messagefoundry-0.2.14/ide/tsconfig.json +0 -13
  452. messagefoundry-0.2.14/ide/tsconfig.test.json +0 -12
  453. messagefoundry-0.2.14/mefor.code-workspace +0 -6
  454. messagefoundry-0.2.14/messagefoundry/api/security.py +0 -251
  455. messagefoundry-0.2.14/messagefoundry/config/code_sets.py +0 -260
  456. messagefoundry-0.2.14/messagefoundry/config/tls_policy.py +0 -110
  457. messagefoundry-0.2.14/messagefoundry/console/__init__.py +0 -35
  458. messagefoundry-0.2.14/messagefoundry/console/__main__.py +0 -361
  459. messagefoundry-0.2.14/messagefoundry/console/_async.py +0 -107
  460. messagefoundry-0.2.14/messagefoundry/console/alerts_page.py +0 -324
  461. messagefoundry-0.2.14/messagefoundry/console/change_password.py +0 -111
  462. messagefoundry-0.2.14/messagefoundry/console/connections.py +0 -395
  463. messagefoundry-0.2.14/messagefoundry/console/dead_letters_page.py +0 -232
  464. messagefoundry-0.2.14/messagefoundry/console/delegates.py +0 -69
  465. messagefoundry-0.2.14/messagefoundry/console/event_log_page.py +0 -143
  466. messagefoundry-0.2.14/messagefoundry/console/icons/alerts.svg +0 -4
  467. messagefoundry-0.2.14/messagefoundry/console/icons/connections.svg +0 -5
  468. messagefoundry-0.2.14/messagefoundry/console/icons/dead-letters.svg +0 -4
  469. messagefoundry-0.2.14/messagefoundry/console/icons/engine-status.svg +0 -3
  470. messagefoundry-0.2.14/messagefoundry/console/icons/log-search.svg +0 -4
  471. messagefoundry-0.2.14/messagefoundry/console/icons/logo-lockup.svg +0 -33
  472. messagefoundry-0.2.14/messagefoundry/console/icons/users.svg +0 -4
  473. messagefoundry-0.2.14/messagefoundry/console/login.py +0 -107
  474. messagefoundry-0.2.14/messagefoundry/console/mfa.py +0 -205
  475. messagefoundry-0.2.14/messagefoundry/console/reauth.py +0 -94
  476. messagefoundry-0.2.14/messagefoundry/console/resources/README.md +0 -23
  477. messagefoundry-0.2.14/messagefoundry/console/resources/app.ico +0 -0
  478. messagefoundry-0.2.14/messagefoundry/console/resources/app.svg +0 -8
  479. messagefoundry-0.2.14/messagefoundry/console/search.py +0 -57
  480. messagefoundry-0.2.14/messagefoundry/console/sessions.py +0 -122
  481. messagefoundry-0.2.14/messagefoundry/console/shards.py +0 -224
  482. messagefoundry-0.2.14/messagefoundry/console/shell.py +0 -706
  483. messagefoundry-0.2.14/messagefoundry/console/status.py +0 -388
  484. messagefoundry-0.2.14/messagefoundry/console/theme.py +0 -268
  485. messagefoundry-0.2.14/messagefoundry/console/users_page.py +0 -282
  486. messagefoundry-0.2.14/messagefoundry/console/widgets.py +0 -612
  487. messagefoundry-0.2.14/messagefoundry/pipeline/wiring_runner.py +0 -3192
  488. messagefoundry-0.2.14/messagefoundry/store/crypto.py +0 -271
  489. messagefoundry-0.2.14/messagefoundry/transports/rest.py +0 -317
  490. messagefoundry-0.2.14/packaging/console-installer/README.md +0 -126
  491. messagefoundry-0.2.14/packaging/console-installer/THIRD-PARTY-NOTICES.md +0 -102
  492. messagefoundry-0.2.14/packaging/console-installer/THIRD-PARTY-NOTICES.txt +0 -131
  493. messagefoundry-0.2.14/packaging/console-installer/console_launcher.py +0 -31
  494. messagefoundry-0.2.14/packaging/console-installer/licenses/GPL-3.0.txt +0 -674
  495. messagefoundry-0.2.14/packaging/console-installer/licenses/LGPL-3.0.txt +0 -165
  496. messagefoundry-0.2.14/packaging/console-installer/messagefoundry-console.iss +0 -120
  497. messagefoundry-0.2.14/packaging/console-installer/messagefoundry-console.spec +0 -188
  498. messagefoundry-0.2.14/packaging/messagefoundry-harness/README.md +0 -30
  499. messagefoundry-0.2.14/packaging/messagefoundry-harness/pyproject.toml +0 -54
  500. messagefoundry-0.2.14/requirements.lock +0 -963
  501. messagefoundry-0.2.14/samples/config/IB_ACME_ADT.py +0 -29
  502. messagefoundry-0.2.14/samples/config/IB_FHIR_INTAKE.py +0 -56
  503. messagefoundry-0.2.14/samples/config/IB_IMMUNIZATION_VXU.py +0 -63
  504. messagefoundry-0.2.14/samples/config/IB_PARTNER_X12.py +0 -47
  505. messagefoundry-0.2.14/samples/config/IB_RADIOLOGY_SR.py +0 -87
  506. messagefoundry-0.2.14/samples/config/IB_RTE_ELIGIBILITY.py +0 -87
  507. messagefoundry-0.2.14/samples/config/adt.py +0 -53
  508. messagefoundry-0.2.14/samples/config/codesets/event_labels.csv +0 -4
  509. messagefoundry-0.2.14/samples/config/codesets/facility_mnemonics.toml +0 -4
  510. messagefoundry-0.2.14/samples/config/connections.toml +0 -28
  511. messagefoundry-0.2.14/samples/consistency/validated_adt.py +0 -62
  512. messagefoundry-0.2.14/samples/dicom/generate_sr_sample.py +0 -118
  513. messagefoundry-0.2.14/samples/messages/adt_a01.hl7 +0 -4
  514. messagefoundry-0.2.14/samples/messages/adt_batch.hl7 +0 -18
  515. messagefoundry-0.2.14/samples/messages/hapi-hl7v2/.gitattributes +0 -5
  516. messagefoundry-0.2.14/samples/messages/hapi-hl7v2/README.md +0 -39
  517. messagefoundry-0.2.14/samples/messages/hapi-hl7v2/adt_a01.txt +0 -1
  518. messagefoundry-0.2.14/samples/messages/hapi-hl7v2/adt_a03.txt +0 -5
  519. messagefoundry-0.2.14/samples/messages/hapi-hl7v2/batch_18_messages.txt +0 -133
  520. messagefoundry-0.2.14/samples/messages/hapi-hl7v2/erp_z99_v231.hl7 +0 -7
  521. messagefoundry-0.2.14/samples/messages/hapi-hl7v2/omd_o03.txt +0 -1
  522. messagefoundry-0.2.14/samples/messages/hapi-hl7v2/omd_o03_rep.txt +0 -1
  523. messagefoundry-0.2.14/samples/messages/hapi-hl7v2/oml_o21.hl7 +0 -1
  524. messagefoundry-0.2.14/samples/messages/x12_270_eligibility.edi +0 -1
  525. messagefoundry-0.2.14/samples/results_relay/README.md +0 -44
  526. messagefoundry-0.2.14/samples/results_relay/codesets/test_codes.csv +0 -4
  527. messagefoundry-0.2.14/samples/results_relay/messages/oru_all_cancelled.hl7 +0 -4
  528. messagefoundry-0.2.14/samples/results_relay/messages/oru_results.hl7 +0 -7
  529. messagefoundry-0.2.14/samples/results_relay/results_relay.py +0 -124
  530. messagefoundry-0.2.14/samples/send_mllp.py +0 -61
  531. messagefoundry-0.2.14/scripts/console/install-console-shortcut.ps1 +0 -134
  532. messagefoundry-0.2.14/scripts/console/pack_ico.py +0 -55
  533. messagefoundry-0.2.14/scripts/console/uninstall-console-shortcut.ps1 +0 -47
  534. messagefoundry-0.2.14/scripts/dev/postgres.ps1 +0 -60
  535. messagefoundry-0.2.14/scripts/dev/sqlserver-docker.ps1 +0 -191
  536. messagefoundry-0.2.14/scripts/dev/sqlserver.ps1 +0 -80
  537. messagefoundry-0.2.14/scripts/hooks/block-blanket-git-stage.ps1 +0 -53
  538. messagefoundry-0.2.14/scripts/publish/check_release_sync.py +0 -258
  539. messagefoundry-0.2.14/scripts/publish/publish-denylist.txt +0 -33
  540. messagefoundry-0.2.14/scripts/publish/publish.ps1 +0 -264
  541. messagefoundry-0.2.14/scripts/publish/scan_forbidden.py +0 -294
  542. messagefoundry-0.2.14/scripts/security/crypto_inventory_check.py +0 -188
  543. messagefoundry-0.2.14/scripts/security/vuln_metrics.py +0 -321
  544. messagefoundry-0.2.14/scripts/service/import-db-ca.ps1 +0 -97
  545. messagefoundry-0.2.14/scripts/service/install-service.ps1 +0 -296
  546. messagefoundry-0.2.14/scripts/service/uninstall-service.ps1 +0 -55
  547. messagefoundry-0.2.14/scripts/trace_icon.py +0 -128
  548. messagefoundry-0.2.14/scripts/worktree/new.ps1 +0 -131
  549. messagefoundry-0.2.14/scripts/worktree/remove.ps1 +0 -52
  550. messagefoundry-0.2.14/scripts/worktree/session-context.ps1 +0 -49
  551. messagefoundry-0.2.14/scripts/worktree/spawn.ps1 +0 -51
  552. messagefoundry-0.2.14/tee/__init__.py +0 -20
  553. messagefoundry-0.2.14/tee/__main__.py +0 -568
  554. messagefoundry-0.2.14/tee/anon/__init__.py +0 -80
  555. messagefoundry-0.2.14/tee/anon/_hl7data.py +0 -428
  556. messagefoundry-0.2.14/tee/anon/_pools.py +0 -30
  557. messagefoundry-0.2.14/tee/anon/hl7.py +0 -71
  558. messagefoundry-0.2.14/tee/anon/keying.py +0 -67
  559. messagefoundry-0.2.14/tee/anon/leak.py +0 -100
  560. messagefoundry-0.2.14/tee/anon/rules.py +0 -219
  561. messagefoundry-0.2.14/tee/anon/surrogates.py +0 -299
  562. messagefoundry-0.2.14/tee/compare.py +0 -152
  563. messagefoundry-0.2.14/tee/correlate.py +0 -286
  564. messagefoundry-0.2.14/tee/hl7_fields.py +0 -95
  565. messagefoundry-0.2.14/tee/mefor_api.py +0 -116
  566. messagefoundry-0.2.14/tee/mllp.py +0 -181
  567. messagefoundry-0.2.14/tee/relay.py +0 -530
  568. messagefoundry-0.2.14/tee/report.py +0 -80
  569. messagefoundry-0.2.14/tee/store.py +0 -382
  570. messagefoundry-0.2.14/tests/_dicom_sample.py +0 -85
  571. messagefoundry-0.2.14/tests/_failover_load_support.py +0 -126
  572. messagefoundry-0.2.14/tests/_fhir_fixtures.py +0 -77
  573. messagefoundry-0.2.14/tests/conftest.py +0 -199
  574. messagefoundry-0.2.14/tests/test_acceptance_framework.py +0 -144
  575. messagefoundry-0.2.14/tests/test_ack_capture_runner.py +0 -101
  576. messagefoundry-0.2.14/tests/test_ack_sent_store.py +0 -150
  577. messagefoundry-0.2.14/tests/test_active_environment.py +0 -103
  578. messagefoundry-0.2.14/tests/test_ad_group_scope.py +0 -148
  579. messagefoundry-0.2.14/tests/test_admin_new_ip.py +0 -333
  580. messagefoundry-0.2.14/tests/test_adr_analyze.py +0 -104
  581. messagefoundry-0.2.14/tests/test_ai_policy.py +0 -400
  582. messagefoundry-0.2.14/tests/test_alert_rules.py +0 -343
  583. messagefoundry-0.2.14/tests/test_alert_sinks.py +0 -243
  584. messagefoundry-0.2.14/tests/test_alert_state.py +0 -459
  585. messagefoundry-0.2.14/tests/test_alerts_edit.py +0 -146
  586. messagefoundry-0.2.14/tests/test_alerts_rules_api.py +0 -255
  587. messagefoundry-0.2.14/tests/test_anon_core.py +0 -262
  588. messagefoundry-0.2.14/tests/test_anon_integration.py +0 -189
  589. messagefoundry-0.2.14/tests/test_anon_parity.py +0 -133
  590. messagefoundry-0.2.14/tests/test_api.py +0 -749
  591. messagefoundry-0.2.14/tests/test_api_alerts.py +0 -247
  592. messagefoundry-0.2.14/tests/test_api_auth.py +0 -768
  593. messagefoundry-0.2.14/tests/test_api_reload.py +0 -219
  594. messagefoundry-0.2.14/tests/test_api_tls.py +0 -211
  595. messagefoundry-0.2.14/tests/test_approvals.py +0 -179
  596. messagefoundry-0.2.14/tests/test_asvs_phase0.py +0 -242
  597. messagefoundry-0.2.14/tests/test_audit_integrity.py +0 -104
  598. messagefoundry-0.2.14/tests/test_audit_offbox_tee.py +0 -176
  599. messagefoundry-0.2.14/tests/test_auth_core.py +0 -153
  600. messagefoundry-0.2.14/tests/test_auth_entry_hardening.py +0 -104
  601. messagefoundry-0.2.14/tests/test_auth_hardening.py +0 -524
  602. messagefoundry-0.2.14/tests/test_auth_service.py +0 -475
  603. messagefoundry-0.2.14/tests/test_auth_session_lifecycle.py +0 -190
  604. messagefoundry-0.2.14/tests/test_auth_store.py +0 -136
  605. messagefoundry-0.2.14/tests/test_backup_crypto.py +0 -144
  606. messagefoundry-0.2.14/tests/test_backup_restore_atleastonce.py +0 -76
  607. messagefoundry-0.2.14/tests/test_backup_runner.py +0 -373
  608. messagefoundry-0.2.14/tests/test_batch_claim_fifo.py +0 -371
  609. messagefoundry-0.2.14/tests/test_batch_claim_locking.py +0 -208
  610. messagefoundry-0.2.14/tests/test_batch_claim_worker.py +0 -154
  611. messagefoundry-0.2.14/tests/test_binary_carriage.py +0 -307
  612. messagefoundry-0.2.14/tests/test_bootstrap_admin_perms.py +0 -77
  613. messagefoundry-0.2.14/tests/test_builtin_hl7_hardening.py +0 -87
  614. messagefoundry-0.2.14/tests/test_builtin_hl7_parity.py +0 -620
  615. messagefoundry-0.2.14/tests/test_cert_expiry.py +0 -254
  616. messagefoundry-0.2.14/tests/test_channel_rbac.py +0 -211
  617. messagefoundry-0.2.14/tests/test_checks.py +0 -441
  618. messagefoundry-0.2.14/tests/test_checks_lint.py +0 -66
  619. messagefoundry-0.2.14/tests/test_cli.py +0 -668
  620. messagefoundry-0.2.14/tests/test_cli_offline_resolution.py +0 -250
  621. messagefoundry-0.2.14/tests/test_cluster.py +0 -1038
  622. messagefoundry-0.2.14/tests/test_cluster_failover_postgres.py +0 -241
  623. messagefoundry-0.2.14/tests/test_cluster_failover_sqlserver.py +0 -235
  624. messagefoundry-0.2.14/tests/test_cluster_graph_gating.py +0 -343
  625. messagefoundry-0.2.14/tests/test_cluster_lease.py +0 -338
  626. messagefoundry-0.2.14/tests/test_code_sets.py +0 -306
  627. messagefoundry-0.2.14/tests/test_codeset_edit.py +0 -641
  628. messagefoundry-0.2.14/tests/test_config_anchoring.py +0 -481
  629. messagefoundry-0.2.14/tests/test_config_fingerprint.py +0 -124
  630. messagefoundry-0.2.14/tests/test_config_source_trust.py +0 -224
  631. messagefoundry-0.2.14/tests/test_connection_api.py +0 -368
  632. messagefoundry-0.2.14/tests/test_connection_event_api.py +0 -83
  633. messagefoundry-0.2.14/tests/test_connection_event_emit.py +0 -229
  634. messagefoundry-0.2.14/tests/test_connection_event_outbound.py +0 -102
  635. messagefoundry-0.2.14/tests/test_connection_event_scope.py +0 -255
  636. messagefoundry-0.2.14/tests/test_connection_event_store.py +0 -208
  637. messagefoundry-0.2.14/tests/test_connection_resilience.py +0 -164
  638. messagefoundry-0.2.14/tests/test_connections_cli.py +0 -228
  639. messagefoundry-0.2.14/tests/test_connections_file.py +0 -445
  640. messagefoundry-0.2.14/tests/test_connscale_config.py +0 -85
  641. messagefoundry-0.2.14/tests/test_connscale_driver.py +0 -105
  642. messagefoundry-0.2.14/tests/test_connscale_postgres.py +0 -110
  643. messagefoundry-0.2.14/tests/test_connscale_profile.py +0 -107
  644. messagefoundry-0.2.14/tests/test_connscale_report.py +0 -181
  645. messagefoundry-0.2.14/tests/test_connscale_smoke.py +0 -150
  646. messagefoundry-0.2.14/tests/test_consistency.py +0 -125
  647. messagefoundry-0.2.14/tests/test_console_alerts.py +0 -329
  648. messagefoundry-0.2.14/tests/test_console_auth.py +0 -144
  649. messagefoundry-0.2.14/tests/test_console_client.py +0 -393
  650. messagefoundry-0.2.14/tests/test_console_dead_letters.py +0 -276
  651. messagefoundry-0.2.14/tests/test_console_event_log.py +0 -141
  652. messagefoundry-0.2.14/tests/test_console_hardening.py +0 -109
  653. messagefoundry-0.2.14/tests/test_console_icon.py +0 -72
  654. messagefoundry-0.2.14/tests/test_console_password.py +0 -419
  655. messagefoundry-0.2.14/tests/test_console_sessions.py +0 -167
  656. messagefoundry-0.2.14/tests/test_console_shards.py +0 -257
  657. messagefoundry-0.2.14/tests/test_console_status.py +0 -366
  658. messagefoundry-0.2.14/tests/test_console_step_up.py +0 -193
  659. messagefoundry-0.2.14/tests/test_console_theme.py +0 -86
  660. messagefoundry-0.2.14/tests/test_console_users.py +0 -191
  661. messagefoundry-0.2.14/tests/test_console_widgets.py +0 -1030
  662. messagefoundry-0.2.14/tests/test_content_search.py +0 -378
  663. messagefoundry-0.2.14/tests/test_custom_roles.py +0 -417
  664. messagefoundry-0.2.14/tests/test_database_connector_integration.py +0 -138
  665. messagefoundry-0.2.14/tests/test_database_transport.py +0 -646
  666. messagefoundry-0.2.14/tests/test_db_lookup.py +0 -372
  667. messagefoundry-0.2.14/tests/test_db_lookup_live_runner.py +0 -282
  668. messagefoundry-0.2.14/tests/test_delivery_settings.py +0 -199
  669. messagefoundry-0.2.14/tests/test_dependabot_automerge_guardrails.py +0 -108
  670. messagefoundry-0.2.14/tests/test_dependency_boundaries.py +0 -54
  671. messagefoundry-0.2.14/tests/test_dicom_codec.py +0 -235
  672. messagefoundry-0.2.14/tests/test_dicom_scp.py +0 -248
  673. messagefoundry-0.2.14/tests/test_dicom_scp_security.py +0 -197
  674. messagefoundry-0.2.14/tests/test_dicom_scu.py +0 -172
  675. messagefoundry-0.2.14/tests/test_dicom_wiring.py +0 -220
  676. messagefoundry-0.2.14/tests/test_dicomweb.py +0 -291
  677. messagefoundry-0.2.14/tests/test_docs_runbooks.py +0 -102
  678. messagefoundry-0.2.14/tests/test_dr_activation.py +0 -187
  679. messagefoundry-0.2.14/tests/test_dr_api_status.py +0 -94
  680. messagefoundry-0.2.14/tests/test_dr_failback.py +0 -114
  681. messagefoundry-0.2.14/tests/test_dr_rbac.py +0 -143
  682. messagefoundry-0.2.14/tests/test_dr_run_profile.py +0 -183
  683. messagefoundry-0.2.14/tests/test_dr_seeding.py +0 -216
  684. messagefoundry-0.2.14/tests/test_dryrun.py +0 -334
  685. messagefoundry-0.2.14/tests/test_dual_control_reload.py +0 -190
  686. messagefoundry-0.2.14/tests/test_ed_documents.py +0 -74
  687. messagefoundry-0.2.14/tests/test_ed_documents_e2e.py +0 -253
  688. messagefoundry-0.2.14/tests/test_egress_allowlist.py +0 -160
  689. messagefoundry-0.2.14/tests/test_email_destination.py +0 -313
  690. messagefoundry-0.2.14/tests/test_embedded_document_pruning.py +0 -367
  691. messagefoundry-0.2.14/tests/test_enginepoll_aggregate.py +0 -154
  692. messagefoundry-0.2.14/tests/test_environments.py +0 -326
  693. messagefoundry-0.2.14/tests/test_fhir_lookup.py +0 -438
  694. messagefoundry-0.2.14/tests/test_fhir_parsing.py +0 -159
  695. messagefoundry-0.2.14/tests/test_fhir_resource.py +0 -96
  696. messagefoundry-0.2.14/tests/test_fhir_transport.py +0 -405
  697. messagefoundry-0.2.14/tests/test_field_authz.py +0 -167
  698. messagefoundry-0.2.14/tests/test_field_authz_metadata.py +0 -116
  699. messagefoundry-0.2.14/tests/test_fifo_index_migration.py +0 -426
  700. messagefoundry-0.2.14/tests/test_fifo_ordering.py +0 -121
  701. messagefoundry-0.2.14/tests/test_frozen_launch_smoke.py +0 -115
  702. messagefoundry-0.2.14/tests/test_generate_cli.py +0 -78
  703. messagefoundry-0.2.14/tests/test_generated_adt.py +0 -177
  704. messagefoundry-0.2.14/tests/test_generators_core.py +0 -57
  705. messagefoundry-0.2.14/tests/test_generators_types.py +0 -42
  706. messagefoundry-0.2.14/tests/test_group_commit.py +0 -625
  707. messagefoundry-0.2.14/tests/test_groups.py +0 -267
  708. messagefoundry-0.2.14/tests/test_harness.py +0 -145
  709. messagefoundry-0.2.14/tests/test_harness_compose.py +0 -130
  710. messagefoundry-0.2.14/tests/test_harness_config.py +0 -72
  711. messagefoundry-0.2.14/tests/test_harness_faults.py +0 -113
  712. messagefoundry-0.2.14/tests/test_harness_file.py +0 -77
  713. messagefoundry-0.2.14/tests/test_harness_monitor.py +0 -186
  714. messagefoundry-0.2.14/tests/test_harness_reconcile.py +0 -230
  715. messagefoundry-0.2.14/tests/test_harness_scenarios.py +0 -195
  716. messagefoundry-0.2.14/tests/test_hl7_core_features.py +0 -250
  717. messagefoundry-0.2.14/tests/test_hl7schema.py +0 -48
  718. messagefoundry-0.2.14/tests/test_inbound_bind.py +0 -110
  719. messagefoundry-0.2.14/tests/test_inbound_http_source.py +0 -464
  720. messagefoundry-0.2.14/tests/test_ingest_time.py +0 -103
  721. messagefoundry-0.2.14/tests/test_inline_fast_path.py +0 -525
  722. messagefoundry-0.2.14/tests/test_keyprovider.py +0 -274
  723. messagefoundry-0.2.14/tests/test_last_admin_guard.py +0 -150
  724. messagefoundry-0.2.14/tests/test_last_resort.py +0 -104
  725. messagefoundry-0.2.14/tests/test_leader_tasks.py +0 -228
  726. messagefoundry-0.2.14/tests/test_license_notice.py +0 -76
  727. messagefoundry-0.2.14/tests/test_listener_tls_exposure.py +0 -60
  728. messagefoundry-0.2.14/tests/test_load_config.py +0 -231
  729. messagefoundry-0.2.14/tests/test_load_corpus.py +0 -91
  730. messagefoundry-0.2.14/tests/test_load_failover_postgres.py +0 -79
  731. messagefoundry-0.2.14/tests/test_load_failover_sqlserver.py +0 -77
  732. messagefoundry-0.2.14/tests/test_load_failover_unit.py +0 -462
  733. messagefoundry-0.2.14/tests/test_load_metrics.py +0 -124
  734. messagefoundry-0.2.14/tests/test_load_profile.py +0 -237
  735. messagefoundry-0.2.14/tests/test_load_report.py +0 -258
  736. messagefoundry-0.2.14/tests/test_load_runner.py +0 -227
  737. messagefoundry-0.2.14/tests/test_load_sender.py +0 -130
  738. messagefoundry-0.2.14/tests/test_load_sink.py +0 -158
  739. messagefoundry-0.2.14/tests/test_logging.py +0 -424
  740. messagefoundry-0.2.14/tests/test_message.py +0 -363
  741. messagefoundry-0.2.14/tests/test_message_split.py +0 -316
  742. messagefoundry-0.2.14/tests/test_message_timestamps.py +0 -79
  743. messagefoundry-0.2.14/tests/test_metrics_exporter.py +0 -288
  744. messagefoundry-0.2.14/tests/test_mfa.py +0 -281
  745. messagefoundry-0.2.14/tests/test_mllp_encoding_override.py +0 -240
  746. messagefoundry-0.2.14/tests/test_mllp_tls.py +0 -322
  747. messagefoundry-0.2.14/tests/test_multishard_smoke.py +0 -139
  748. messagefoundry-0.2.14/tests/test_nonhl7_ingress_size_cap.py +0 -145
  749. messagefoundry-0.2.14/tests/test_operability_config.py +0 -382
  750. messagefoundry-0.2.14/tests/test_outbound_signing.py +0 -387
  751. messagefoundry-0.2.14/tests/test_outbound_simulate.py +0 -355
  752. messagefoundry-0.2.14/tests/test_packaging.py +0 -23
  753. messagefoundry-0.2.14/tests/test_parse_tree.py +0 -73
  754. messagefoundry-0.2.14/tests/test_parsing.py +0 -202
  755. messagefoundry-0.2.14/tests/test_passthrough.py +0 -674
  756. messagefoundry-0.2.14/tests/test_passthrough_graph.py +0 -64
  757. messagefoundry-0.2.14/tests/test_payload_agnostic_ingress.py +0 -240
  758. messagefoundry-0.2.14/tests/test_per_connection_retention.py +0 -373
  759. messagefoundry-0.2.14/tests/test_per_lane_wake.py +0 -322
  760. messagefoundry-0.2.14/tests/test_pool_warm.py +0 -395
  761. messagefoundry-0.2.14/tests/test_postgres_store.py +0 -1834
  762. messagefoundry-0.2.14/tests/test_priority_resolution.py +0 -128
  763. messagefoundry-0.2.14/tests/test_reconcile_capture.py +0 -118
  764. messagefoundry-0.2.14/tests/test_reconcile_compare.py +0 -102
  765. messagefoundry-0.2.14/tests/test_reconcile_harness.py +0 -128
  766. messagefoundry-0.2.14/tests/test_redaction.py +0 -123
  767. messagefoundry-0.2.14/tests/test_reference_sets.py +0 -538
  768. messagefoundry-0.2.14/tests/test_reingress.py +0 -510
  769. messagefoundry-0.2.14/tests/test_release_console_installer.py +0 -195
  770. messagefoundry-0.2.14/tests/test_remotefile_transport.py +0 -781
  771. messagefoundry-0.2.14/tests/test_response_capture.py +0 -561
  772. messagefoundry-0.2.14/tests/test_rest_transport.py +0 -209
  773. messagefoundry-0.2.14/tests/test_restore_verify.py +0 -102
  774. messagefoundry-0.2.14/tests/test_retention.py +0 -432
  775. messagefoundry-0.2.14/tests/test_run_context.py +0 -103
  776. messagefoundry-0.2.14/tests/test_scaffold.py +0 -139
  777. messagefoundry-0.2.14/tests/test_scaffold_requirements.py +0 -54
  778. messagefoundry-0.2.14/tests/test_scan_forbidden.py +0 -160
  779. messagefoundry-0.2.14/tests/test_secrets_dpapi.py +0 -101
  780. messagefoundry-0.2.14/tests/test_security_notify.py +0 -88
  781. messagefoundry-0.2.14/tests/test_security_static.py +0 -136
  782. messagefoundry-0.2.14/tests/test_seq_only_fifo.py +0 -463
  783. messagefoundry-0.2.14/tests/test_service_control.py +0 -53
  784. messagefoundry-0.2.14/tests/test_settings.py +0 -786
  785. messagefoundry-0.2.14/tests/test_sharding.py +0 -257
  786. messagefoundry-0.2.14/tests/test_sibling_helper_finder.py +0 -98
  787. messagefoundry-0.2.14/tests/test_smart_backend.py +0 -455
  788. messagefoundry-0.2.14/tests/test_soap_transport.py +0 -206
  789. messagefoundry-0.2.14/tests/test_soap_wssecurity.py +0 -330
  790. messagefoundry-0.2.14/tests/test_sqlserver_coordinator.py +0 -180
  791. messagefoundry-0.2.14/tests/test_sqlserver_cursor_close.py +0 -162
  792. messagefoundry-0.2.14/tests/test_sqlserver_schema_init.py +0 -140
  793. messagefoundry-0.2.14/tests/test_sqlserver_store.py +0 -1561
  794. messagefoundry-0.2.14/tests/test_staged_pipeline.py +0 -979
  795. messagefoundry-0.2.14/tests/test_startup_attestation.py +0 -254
  796. messagefoundry-0.2.14/tests/test_startup_fault_isolation.py +0 -319
  797. messagefoundry-0.2.14/tests/test_stats_reset.py +0 -238
  798. messagefoundry-0.2.14/tests/test_step_up.py +0 -206
  799. messagefoundry-0.2.14/tests/test_store.py +0 -753
  800. messagefoundry-0.2.14/tests/test_store_backend.py +0 -103
  801. messagefoundry-0.2.14/tests/test_store_encryption.py +0 -593
  802. messagefoundry-0.2.14/tests/test_store_file_hardening.py +0 -94
  803. messagefoundry-0.2.14/tests/test_store_once_deliver_many.py +0 -285
  804. messagefoundry-0.2.14/tests/test_store_once_graph.py +0 -68
  805. messagefoundry-0.2.14/tests/test_store_read_pool.py +0 -145
  806. messagefoundry-0.2.14/tests/test_store_ssl.py +0 -76
  807. messagefoundry-0.2.14/tests/test_summary.py +0 -33
  808. messagefoundry-0.2.14/tests/test_supervisor.py +0 -275
  809. messagefoundry-0.2.14/tests/test_support_bundle.py +0 -236
  810. messagefoundry-0.2.14/tests/test_synchronous_baseline.py +0 -190
  811. messagefoundry-0.2.14/tests/test_task_resilience.py +0 -148
  812. messagefoundry-0.2.14/tests/test_tcp_transport.py +0 -341
  813. messagefoundry-0.2.14/tests/test_tee_cli.py +0 -203
  814. messagefoundry-0.2.14/tests/test_tee_compare.py +0 -78
  815. messagefoundry-0.2.14/tests/test_tee_correlate.py +0 -226
  816. messagefoundry-0.2.14/tests/test_tee_hl7_fields.py +0 -84
  817. messagefoundry-0.2.14/tests/test_tee_mefor_api.py +0 -107
  818. messagefoundry-0.2.14/tests/test_tee_mllp.py +0 -98
  819. messagefoundry-0.2.14/tests/test_tee_relay.py +0 -523
  820. messagefoundry-0.2.14/tests/test_tee_report.py +0 -86
  821. messagefoundry-0.2.14/tests/test_tee_store.py +0 -220
  822. messagefoundry-0.2.14/tests/test_timer_source.py +0 -285
  823. messagefoundry-0.2.14/tests/test_timezone.py +0 -278
  824. messagefoundry-0.2.14/tests/test_tls_policy.py +0 -101
  825. messagefoundry-0.2.14/tests/test_totp.py +0 -93
  826. messagefoundry-0.2.14/tests/test_totp_window.py +0 -75
  827. messagefoundry-0.2.14/tests/test_transform_offloop.py +0 -202
  828. messagefoundry-0.2.14/tests/test_transform_state.py +0 -528
  829. messagefoundry-0.2.14/tests/test_transports.py +0 -975
  830. messagefoundry-0.2.14/tests/test_update_check.py +0 -199
  831. messagefoundry-0.2.14/tests/test_verify.py +0 -331
  832. messagefoundry-0.2.14/tests/test_version.py +0 -33
  833. messagefoundry-0.2.14/tests/test_win2025_acceptance.py +0 -73
  834. messagefoundry-0.2.14/tests/test_wiring.py +0 -445
  835. messagefoundry-0.2.14/tests/test_wiring_engine.py +0 -1307
  836. messagefoundry-0.2.14/tests/test_wiring_reload.py +0 -516
  837. messagefoundry-0.2.14/tests/test_wiring_serve.py +0 -107
  838. messagefoundry-0.2.14/tests/test_ws_stats_revalidation.py +0 -155
  839. messagefoundry-0.2.14/tests/test_x12_parsing.py +0 -462
  840. messagefoundry-0.2.14/tests/test_x12_rte.py +0 -212
  841. messagefoundry-0.2.14/tests/test_x12_source_ip_allowlist.py +0 -170
  842. messagefoundry-0.2.14/tests/test_x12_transport.py +0 -379
  843. messagefoundry-0.2.14/tests/test_x12_validate.py +0 -110
  844. messagefoundry-0.2.14/tests/test_xml_message.py +0 -169
  845. messagefoundry-0.2.14/tests/test_xml_schema_signature.py +0 -66
  846. messagefoundry-0.2.14/tests/test_xml_signature_anchor.py +0 -44
  847. messagefoundry-0.2.14/uv.lock +0 -1721
  848. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/.gitignore +0 -0
  849. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/LICENSE +0 -0
  850. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/NOTICE +0 -0
  851. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/adr_analyze.py +0 -0
  852. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/anon/__init__.py +0 -0
  853. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/anon/_pools.py +0 -0
  854. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/anon/hl7.py +0 -0
  855. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/anon/keying.py +0 -0
  856. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/anon/leak.py +0 -0
  857. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/anon/rules.py +0 -0
  858. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/anon/surrogates.py +0 -0
  859. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/api/__init__.py +0 -0
  860. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/api/approvals.py +0 -0
  861. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/api/field_authz.py +0 -0
  862. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/api/tls.py +0 -0
  863. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/auth/__init__.py +0 -0
  864. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/auth/data/common_passwords.NOTICE +0 -0
  865. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/auth/data/common_passwords.txt +0 -0
  866. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/auth/identity.py +0 -0
  867. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/auth/notifications.py +0 -0
  868. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/auth/passwords.py +0 -0
  869. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/auth/policy.py +0 -0
  870. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/auth/ratelimit.py +0 -0
  871. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/auth/totp.py +0 -0
  872. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/config/__init__.py +0 -0
  873. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/config/active_environment.py +0 -0
  874. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/config/alerts_edit.py +0 -0
  875. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/config/anchor.py +0 -0
  876. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/config/db_lookup.py +0 -0
  877. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/config/environments.py +0 -0
  878. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/config/fingerprint.py +0 -0
  879. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/config/ingest_time.py +0 -0
  880. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/config/reference.py +0 -0
  881. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/config/response.py +0 -0
  882. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/config/state.py +0 -0
  883. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/generators/README.md +0 -0
  884. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/generators/__init__.py +0 -0
  885. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/generators/_core.py +0 -0
  886. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/generators/_hl7data.py +0 -0
  887. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/generators/all_types.py +0 -0
  888. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/generators/bar.py +0 -0
  889. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/generators/dft.py +0 -0
  890. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/generators/documents.py +0 -0
  891. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/generators/mdm.py +0 -0
  892. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/generators/mfn.py +0 -0
  893. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/generators/oml.py +0 -0
  894. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/generators/orl.py +0 -0
  895. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/generators/orm.py +0 -0
  896. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/generators/oru.py +0 -0
  897. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/generators/ras.py +0 -0
  898. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/generators/rde.py +0 -0
  899. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/generators/siu.py +0 -0
  900. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/generators/vxu.py +0 -0
  901. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/hl7schema.py +0 -0
  902. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/integrity.py +0 -0
  903. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/last_resort.py +0 -0
  904. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/_backend.py +0 -0
  905. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/consistency.py +0 -0
  906. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/dicom/__init__.py +0 -0
  907. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/dicom/_deps.py +0 -0
  908. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/dicom/_util.py +0 -0
  909. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/dicom/dataset.py +0 -0
  910. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/dicom/errors.py +0 -0
  911. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/dicom/hl7_map.py +0 -0
  912. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/dicom/peek.py +0 -0
  913. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/fhir/__init__.py +0 -0
  914. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/fhir/_deps.py +0 -0
  915. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/fhir/errors.py +0 -0
  916. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/fhir/peek.py +0 -0
  917. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/fhir/resource.py +0 -0
  918. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/groups.py +0 -0
  919. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/peek.py +0 -0
  920. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/summary.py +0 -0
  921. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/tree.py +0 -0
  922. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/validate.py +0 -0
  923. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/x12/__init__.py +0 -0
  924. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/x12/_deps.py +0 -0
  925. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/x12/delimiters.py +0 -0
  926. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/x12/errors.py +0 -0
  927. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/x12/interchange.py +0 -0
  928. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/x12/message.py +0 -0
  929. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/x12/peek.py +0 -0
  930. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/x12/validate.py +0 -0
  931. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/xml/__init__.py +0 -0
  932. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/xml/_deps.py +0 -0
  933. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/xml/errors.py +0 -0
  934. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/xml/harden.py +0 -0
  935. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/xml/message.py +0 -0
  936. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/xml/schema.py +0 -0
  937. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/parsing/xml/signature.py +0 -0
  938. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/pipeline/__init__.py +0 -0
  939. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/pipeline/cert_expiry.py +0 -0
  940. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/pipeline/config_convergence.py +0 -0
  941. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/pipeline/connscale_shim.py +0 -0
  942. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/pipeline/dr_backup.py +0 -0
  943. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/pipeline/reference_sync.py +0 -0
  944. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/pipeline/state_convergence.py +0 -0
  945. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/pipeline/supervisor.py +0 -0
  946. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/pipeline/update_check.py +0 -0
  947. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/py.typed +0 -0
  948. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/redaction.py +0 -0
  949. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/scaffold.py +0 -0
  950. /messagefoundry-0.2.14/messagefoundry/console/service_control.py → /messagefoundry-0.3.0/messagefoundry/service.py +0 -0
  951. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/store/audit_tee.py +0 -0
  952. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/store/backup_codec.py +0 -0
  953. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/store/content_search.py +0 -0
  954. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/store/document_strip.py +0 -0
  955. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/store/keyprovider.py +0 -0
  956. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/store/pool_metrics.py +0 -0
  957. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/support/__init__.py +0 -0
  958. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/support/bundle.py +0 -0
  959. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/support/redact.py +0 -0
  960. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/timezone.py +0 -0
  961. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/transports/http_listener.py +0 -0
  962. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/transports/loopback.py +0 -0
  963. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/transports/passthrough.py +0 -0
  964. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/transports/signing.py +0 -0
  965. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/transports/timer.py +0 -0
  966. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/verify/__init__.py +0 -0
  967. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/verify/model.py +0 -0
  968. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/verify/report.py +0 -0
  969. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/verify/runner.py +0 -0
  970. {messagefoundry-0.2.14 → messagefoundry-0.3.0}/messagefoundry/verify/smoke.py +0 -0
@@ -6,6 +6,196 @@ All notable changes to MessageFoundry are documented here. The format follows
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.3.0] — 2026-07-13 — Early Access
10
+
11
+ Highlights since 0.2.15 — streaming attachments end-to-end, a copy-on-Send message model, richer
12
+ connectivity, and a run of security hardening. (Concise highlights; the git history is the full change set.)
13
+
14
+ ### Added
15
+ - **Streaming large attachments end-to-end** (#149, ADR 0105) — very-large OBX-5 documents are detached from
16
+ the message skeleton at ingress and streamed through routing → transform → delivery on all three stores
17
+ (SQLite / SQL Server / Postgres), with an operator read/download surface.
18
+ - **Copy-on-Send message model** (ADR 0104) — `Send` snapshots the message at construction (opt-in
19
+ `[pipeline].snapshot_on_send`), plus `Message.copy()` and a recognition-first `message_type_of(accepts=)`
20
+ predicate; and in the IDE, a point-and-click HL7 field picker and the Steps-view authoring palette
21
+ (ADR 0103 / 0106).
22
+ - **Connectivity** — generic HTTP auth (OAuth 2.0 client-credentials + Digest) and HTTP response-header
23
+ capture (#154, #65); a connector `SecretProvider` seam with a HashiCorp Vault backend (#196).
24
+ - **Monitoring** — an engine-wide KPI roll-up with a saturation-derivative alert and DB-pool metrics (#93).
25
+
26
+ ### Changed
27
+ - **pipeline: `batch_handoff_statements` now defaults ON on SQL Server** ([ADR 0075](docs/adr/0075-per-hop-sql-statement-batching.md))
28
+ — per-hop SQL statement batching (a **distance-insurance** lever: folds each message's per-hop store round-trips
29
+ into the fewest `pyodbc.execute()` T-SQL batches, cutting **network round-trips, NOT transactions** — the
30
+ single per-hop `COMMIT` is untouched, `commits/msg` stays 2.000) now activates **by default** on the SQL Server
31
+ store. Promoted 2026-07-08 after Bench B showed **harmless-near** (batch ON vs OFF within ±0.4% at ~0.28 ms RTT,
32
+ zero-loss) and **helps-far** (constant ~−18% ACK-p99, absolute saving widening with RTT: −84 ms @ +20 ms,
33
+ −212 ms @ +50 ms) over a green SS correctness precondition (`tests/test_adr0075_batch_sqlserver.py`, 9 passed).
34
+ **Fail-closed + SQL-Server-only** — Postgres (asyncpg) and SQLite are byte-identical no-ops; the flag is retained
35
+ **only as an emergency off-switch**: set `[pipeline].batch_handoff_statements = false` to disable.
36
+
37
+ ### Security
38
+ - **The published PyPI source distribution no longer ships the whole repo** (#1020) — the sdist is pinned to
39
+ the `messagefoundry` package + its metadata, with a fail-closed "sdist is package-only" gate in the release
40
+ workflow. No release ever exposed PHI or customer data.
41
+ - **Transport hardening** — certificate-revocation refusal extended to outbound-connector TLS (#201); in-use
42
+ memory protection for the store (#198); the publish deny-list is read from the ref being published (#983).
43
+
44
+ ### Fixed
45
+ - **CI reliability** — bound PHI-retention on the Windows service smoke (#1011); wrap pyodbc-heavy SQL Server
46
+ steps with a native-crash retry (#1010); multi-message finalizers take their per-message locks in canonical
47
+ order (#980).
48
+
49
+ ## [0.2.15] — 2026-07-06 — Early Access
50
+
51
+ **Thread-hop fusion (ADR 0071 B5, flagged default-OFF) + the browser ops dashboard, pooled-claimer
52
+ primitives, and opt-in persistent outbound MLLP.** The headline engine change is **B5 thread-hop fusion** —
53
+ a SQL-Server-only path that fuses each off-loop CPU stage with its store handoff onto one synchronous-pyodbc
54
+ worker hop to cut the per-completion executor→loop marshaling wall; it ships **behind
55
+ `[pipeline].fuse_thread_hops` (default off)** pending the SQL-Server throughput bench. Everything else below
56
+ is additive / opt-in.
57
+
58
+ ### Added
59
+ - **pipeline: thread-hop fusion — B5, opt-in** ([ADR 0071](docs/adr/0071-cut-executor-round-trips-b5.md);
60
+ `[pipeline].fuse_thread_hops` default **off**, SQL Server + `pooled` claim mode only) — fuses each off-loop
61
+ CPU stage (`route_only` / `transform_one`) with its adjacent store handoff onto **one** synchronous-pyodbc
62
+ worker hop, so a multi-statement aioodbc handoff marshals back to the loop **once** instead of per
63
+ statement (attacks the per-completion marshaling ceiling the 2026-07-04 profile named). Fuses **thread
64
+ hops, not transactions** — commits/msg are identical (the poison-guard is intact); Postgres (asyncpg
65
+ loop-native) and SQLite (loop-affine handoff lock) keep the async path by construction. Activation is
66
+ fail-closed: fusion only turns on when the dedicated sync pyodbc pool + per-stage fusing executors open
67
+ cleanly, otherwise the async path runs unchanged. Ships with the self-contained SQLite/Proactor
68
+ crossing-count micro-bench + a Windows CI mechanism gate, and a connscale B0/B1 fusion A/B harness axis
69
+ (`fuse_ab` profile, `trials`-banked); the throughput GO/NO-GO (ship-by-default vs escalate to
70
+ free-threading, ADR 0053) is a separate SQL-Server bench, not a merge gate.
71
+ - **Promote-gate resolved 2026-07-06 — NO-GO** ([ADR 0071](docs/adr/0071-cut-executor-round-trips-b5.md)
72
+ §8/§10, #787): the SQL-Server `fuse_ab` bench measured a real but sub-threshold **+6.5 / +9.3 / +10.0 %**
73
+ lift (below the ≥10% bar; zero-loss held), so `fuse_thread_hops` **stays default-OFF** and the lever
74
+ escalates to free-threading (ADR 0053). Bench-SHA provenance: the run was at commit `8bab40e2`, which is
75
+ **not** an ancestor of `main` (PR5 was squash-merged as `90f80a3`, #780) — but `git diff 8bab40e2 90f80a3`
76
+ is **empty**, so the NO-GO bench ran a code tree byte-identical to merged PR5.
77
+ - **store: pooled-claimer primitives** `claim_fifo_heads` / `list_fifo_lanes` / `release_claimed` on all
78
+ three backends ([ADR 0066](docs/adr/0066-pooled-stage-claimers.md) PR 2 — **now wired by the
79
+ `StageDispatcher` and the default claim path since #755/#744, see _Changed_ below**): a FIFO-safe
80
+ multi-lane head-claim (probe-then-claim, EMPTY-on-locked-head — never a #285 skip
81
+ to seq N+1), a read-only head-due-aware lane discovery for the pooled sweep, and an attempts-neutral
82
+ claim release. `claim_next_fifo` / `claim_next_fifo_batch` / `claim_ready` are untouched.
83
+ - **pipeline: bounded pooled-mode infra-fault handling (T17)** (ADR 0070; #766) — in `pooled` mode a lane
84
+ whose head keeps failing on an infrastructure fault now **re-pends its head at an exponential-capped
85
+ backoff** (cap `[pipeline].infra_fault_backoff_cap`, default **60 s**) instead of spinning the ~4×/s
86
+ discovery sweep, and after `[pipeline].infra_fault_stop_after` (default **10**) consecutive zero-progress
87
+ faults (~4 min of wall clock) applies `[pipeline].infra_fault_policy` (default **`stop`**): STOP-the-lane
88
+ with a throttled `lane_stuck` alert — **never** auto-dead-letter. `retry_forever` instead keeps re-pending
89
+ at the cap and alerts once the horizon is crossed. `per_lane` mode is unaffected.
90
+ - **Browser ops dashboard (read-only, M1)** (#75, [ADR 0065](docs/adr/0065-web-ops-dashboard.md)) — an
91
+ **opt-in** (`[api].serve_ui`, default **off**), same-origin, zero-install browser ops view served under
92
+ `/ui` by the engine's FastAPI app. Read-only: a live-polling connections dashboard (In/Out/Queued/
93
+ Errors/Last-Activity), a message log with filters, the **audited** raw-message view (reuses the exact
94
+ `GET /messages/{id}` PHI path — RBAC + per-access audit + redaction), and a dead-letter list. Auth is a
95
+ new **HttpOnly + SameSite=Strict** session cookie **confined to `/ui`** — the JSON API stays
96
+ Authorization-header-only, so a request bearing only the cookie is still rejected. Ships a strict CSP
97
+ (`script-src 'self'`, no `unsafe-*`), `Cache-Control: no-store` on `/ui` + PHI reads, and autoescape-by-
98
+ default rendering (a stdlib HTML builder — **no new runtime dependency, no npm**). A JSON-only
99
+ deployment is byte-identical (`serve_ui` off); off-loopback requires TLS (refused even under
100
+ `--allow-insecure-bind`).
101
+ - **Browser ops dashboard — connection controls (M2a)** (#75, ADR 0065) — the dashboard adds **safe
102
+ operator actions**: inbound connection **start / stop / restart**, reusing the JSON control handlers
103
+ (`connections:control` + per-channel guard). CSRF is defended in depth by an **Origin / Sec-Fetch-Site**
104
+ same-origin check on top of the SameSite=Strict session cookie — **token-free (no crypto import)**.
105
+ - **Browser ops dashboard — message replay + step-up re-auth (M2b)** (#75, ADR 0065) — single-message
106
+ **replay** from the browser (a Replay button on the message detail). Replay is `require_step_up` in the
107
+ JSON API, so the /ui route uses a cookie-world step-up gate (`require_ui_step_up`): if the session hasn't
108
+ recently stepped up it **redirects to a /ui re-auth page** (password, + TOTP when MFA is required)
109
+ instead of a 403 header a browser can't act on; after re-auth the browser **auto-retries** the pending
110
+ replay. The re-auth `next` target is validated to be a /ui replay action only (anti open-redirect).
111
+ - **Browser ops dashboard — dead-letter bulk replay (M3)** (#75, ADR 0065) — a per-channel **Replay all
112
+ dead** action on the dead-letters page, re-queuing every dead delivery for a channel via the JSON
113
+ `replay_dead_letters` handler. Same step-up gate as message replay (`require_ui_step_up` → /ui re-auth +
114
+ auto-retry; the channel is in the action **path** so the body-less re-POST carries it), and it honors the
115
+ **dual-control approval gate** — when a replay is held for a second approver it surfaces a "held for
116
+ approval" page instead of redirecting.
117
+ - **Browser ops dashboard — live `/ws/stats` channel (M-ws)** (#75, ADR 0065) — the dashboard now shows a
118
+ live queue-status strip pushed over the engine's `/ws/stats` WebSocket (previously only the desktop
119
+ path existed and it was unused). A browser can't set the WS `Authorization` header, so a **same-origin
120
+ browser handshake authenticates via the `mf_session` cookie** it carries; **CSWSH is defended** by a
121
+ same-origin `Origin`-vs-`Host` check plus the `SameSite=Strict` cookie (a cross-site handshake carries no
122
+ cookie). The native (header) path is unchanged — a client without an `Origin` falls through to it. The
123
+ the WS strip degrades to empty if the socket can't connect. The **connections table itself now updates
124
+ live over the socket** too: the server pushes the rendered (already-escaped) connections fragment, the
125
+ client swaps it in and stops polling, and polling resumes as a fallback if the socket drops.
126
+ - **Browser ops dashboard — HL7 parse-tree view** (#75, ADR 0065) — the message-detail page links to a
127
+ `GET /ui/messages/{id}/parse-tree` view that renders the HL7 segment/field tree server-side via the pure
128
+ `parsing` lib. It reuses the **single audited** `GET /messages/{id}` PHI path (no new PHI egress), every
129
+ field value is escaped (attacker-influenced HL7 can't inject markup), and a non-HL7 body (X12/DICOM/
130
+ binary) surfaces a "no parse tree" notice rather than an error.
131
+ - **Browser ops dashboard — per-destination dead-letter replay** (#75, ADR 0065) — the dead-letters page
132
+ now offers **Replay per (channel, destination)** buttons alongside the per-channel "Replay all dead"
133
+ (`POST /ui/dead-letters/{channel_id}/{destination_name}/replay`), same step-up + approval-gate + path-
134
+ based auto-retry as the channel-wide action. `is_safe_ui_action` was widened to the two-segment path and
135
+ hardened to reject any `..` traversal marker.
136
+ - **Browser ops dashboard — off-loopback exposure via `[api].public_origin`** (#75, ADR 0065) — a new
137
+ opt-in `[api].public_origin` (e.g. `https://ops.example.com`) makes the dashboard's same-origin **CSRF**
138
+ and **CSWSH** checks work when `/ui` is reached off-loopback through a reverse proxy that doesn't preserve
139
+ the `Host` header: the browser `Origin` is matched against the configured public origin instead of the
140
+ request `Host`. Default (unset) is unchanged — loopback / Host-preserving-proxy behavior. The safe
141
+ defaults stand: `[api].host` is `127.0.0.1`, and `serve_ui` off-loopback still requires TLS
142
+ (`exposure_protected`), refused even under `--allow-insecure-bind`. (Phishing-resistant MFA / managed-
143
+ admin-host controls for off-loopback admin remain a separate posture decision — WebAuthn #11 + the ASVS
144
+ 8.4.2 residual.)
145
+ - **mllp: persistent outbound connections — OPT-IN** ([ADR 0067](docs/adr/0067-persistent-outbound-mllp.md);
146
+ `persistent=false` default **this release**, per-outbound opt-in via `persistent=true`) — the MLLP
147
+ destination can reuse **one** lazily-established connection across deliveries (with
148
+ `idle_timeout_seconds` / `max_connection_age_seconds` freshness knobs and reconnect-before-first-byte),
149
+ eliminating the per-message TCP/TLS handshake and the `TIME_WAIT` ephemeral-port exhaustion measured on
150
+ the 2026-07-02 load campaign. It ships **opt-in**: the default stays connect-per-message (today's proven
151
+ posture — no behavior change for existing deployments), and `persistent=true` is a documented opt-in for
152
+ sustained high-rate lanes.
153
+ - **Shipped default: `persistent=false` (connect-per-message).** Existing outbounds are byte-for-byte
154
+ unchanged. Set `persistent = true` on an `MLLP()` destination to opt into connection reuse (recommended
155
+ on sustained high-rate lanes; see [docs/SERVICE.md](docs/SERVICE.md) "High-delivery-rate TCP tuning").
156
+ The default flips to `persistent=true` in a subsequent release once the ADR 0067 §8 trigger is met:
157
+ a real deployment runs `persistent=true` clean on a live feed **and** the mid-transaction stray-frame
158
+ correctness edge is closed (a test / the MSA-2↔MSH-10 correlation, BACKLOG #82) or field-confirmed benign.
159
+
160
+ ### Removed
161
+ - **Frozen zero-Python Windows console installer retired** (#39, [ADR 0032 Phase B](docs/adr/0032-console-desktop-launch.md)
162
+ *Amendment (2026-07-01)*). The PyInstaller `--onedir` + Inno Setup channel added in 0.2.11 is removed:
163
+ `packaging/console-installer/`, the `release-console-installer` job in the release workflow, and its
164
+ AC-linked tests are deleted, along with the Qt-LGPL frozen-binary written-offer/bundled-license apparatus
165
+ and the pending Authenticode signing-cert requirement. **Rationale:** zero uptake (the CI leg failed on
166
+ every tag release since it merged; one out-of-band `.exe` with no downloads), the no-Python/no-IT demand
167
+ gate never fired (adopters are pip + IT-covered), and it only ever shipped unsigned. **The desktop console
168
+ is unaffected** — it stays installable via `pip install messagefoundry[console]` + the ADR 0032 Phase A
169
+ `gui-script` and shortcut scripts; only the *frozen, zero-Python* conveyance is gone. The zero-install
170
+ audience is now served by the browser ops dashboard ([BACKLOG #75](docs/BACKLOG.md)).
171
+
172
+ ### Changed
173
+ - **Server-DB store opens now skip the schema DDL batch when it already ran** ([ADR 0064](docs/adr/0064-schema-init-fastpath.md)).
174
+ A single-row `schema_meta` marker records the content hash of the shipped DDL batch; a re-open of a
175
+ current database skips the whole guarded batch **and** the exclusive schema lock (previously every
176
+ open re-ran dozens of check-then-create statements under `sp_getapplock`/the schema advisory lock —
177
+ the measured N≥4 co-start convoy of the WS-B bench, and wasted round-trips on every single-engine
178
+ restart). Any edit to the DDL batch changes the hash and forces exactly one full idempotent run, so
179
+ upgraded databases still adopt on-open migrations (ADR 0060) unchanged. **Operational note:**
180
+ out-of-band schema surgery is no longer self-healed at the next restart — run
181
+ `DELETE FROM schema_meta` afterward to force one full run. SQLite is unaffected.
182
+ - **Startup crash recovery (`reset_stale_inflight`) is now index-seekable** ([ADR 0064](docs/adr/0064-schema-init-fastpath.md)):
183
+ the all-stages pass runs one UPDATE per pipeline stage against the existing
184
+ `ix_queue_ready(stage, status, …)` index instead of one unindexed status-only full scan of the
185
+ queue (Postgres additionally drops an unsargable `OR $n IS NULL` form). Same rows recovered, same
186
+ single transaction — all three backends.
187
+ - **Default staged-pipeline claim path flipped to pooled per-stage claimers**
188
+ ([ADR 0066](docs/adr/0066-pooled-stage-claimers.md); `[pipeline].claim_mode` default `per_lane` →
189
+ **`pooled`** — issue #744, shipped via PR #765). The `StageDispatcher` was first wired in behind
190
+ `[pipeline].claim_mode` **default-OFF** (#755, ADR 0066 PR4) and is now the **default** claim topology:
191
+ one dispatcher per stage running a handful of pooled claimer tasks over the `claim_fifo_heads` /
192
+ `list_fifo_lanes` / `release_claimed` primitives (batch-claiming head-prefixes across lanes), collapsing
193
+ the ~4,500 per-(lane×stage) claim loops that saturated a shared server DB at high fan-out and holding
194
+ zero-loss where `per_lane` dropped messages. **`per_lane` stays fully selectable as the byte-identical
195
+ opt-out** (`[pipeline].claim_mode = "per_lane"`), enforced by the zero-pooled-construction test sentinel.
196
+ Reliability-core — read once at engine start (a `/config/reload` does not toggle it; restart to change).
197
+ Single-node scope; the at-least-once / per-lane-FIFO / poison-guard invariants are unchanged in both modes.
198
+
9
199
  ## [0.2.14] — 2026-07-01 — Early Access
10
200
 
11
201
  **Delta security-audit remediation.** A focused security audit of the surface added since the
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: messagefoundry
3
- Version: 0.2.14
3
+ Version: 0.3.0
4
4
  Summary: Open-source healthcare integration engine — route, transform, and validate messages across many formats and connection types
5
5
  Project-URL: Homepage, https://messagefoundry.org/
6
6
  Project-URL: Documentation, https://messagefoundry.org/
@@ -32,17 +32,13 @@ Requires-Dist: hl7>=0.4.5
32
32
  Requires-Dist: hl7apy>=1.3
33
33
  Requires-Dist: ldap3>=2.9
34
34
  Requires-Dist: prometheus-client>=0.20
35
+ Requires-Dist: psutil>=6.0
35
36
  Requires-Dist: pydantic>=2.6
36
37
  Requires-Dist: pyspnego>=0.10
37
38
  Requires-Dist: starlette>=1.3.1
38
39
  Requires-Dist: tomlkit>=0.12
39
40
  Requires-Dist: tzdata>=2024.1
40
41
  Requires-Dist: uvicorn[standard]>=0.29
41
- Provides-Extra: console
42
- Requires-Dist: httpx>=0.27; extra == 'console'
43
- Requires-Dist: keyring>=24.0; extra == 'console'
44
- Requires-Dist: pyside6>=6.6; extra == 'console'
45
- Requires-Dist: truststore>=0.10; extra == 'console'
46
42
  Provides-Extra: dev
47
43
  Requires-Dist: httpx>=0.27; extra == 'dev'
48
44
  Requires-Dist: mypy>=1.10; extra == 'dev'
@@ -57,6 +53,10 @@ Requires-Dist: pynetdicom<4,>=3.0.4; extra == 'dicom'
57
53
  Provides-Extra: fhir
58
54
  Requires-Dist: fhir-resources>=7.1.0; extra == 'fhir'
59
55
  Requires-Dist: fhirpathpy>=2.2.0; extra == 'fhir'
56
+ Provides-Extra: harness
57
+ Requires-Dist: httpx>=0.27; extra == 'harness'
58
+ Requires-Dist: pyside6>=6.6; extra == 'harness'
59
+ Requires-Dist: truststore>=0.10; extra == 'harness'
60
60
  Provides-Extra: otel
61
61
  Requires-Dist: opentelemetry-exporter-otlp>=1.20; extra == 'otel'
62
62
  Requires-Dist: opentelemetry-sdk>=1.20; extra == 'otel'
@@ -66,6 +66,10 @@ Provides-Extra: sftp
66
66
  Requires-Dist: paramiko>=5.0; extra == 'sftp'
67
67
  Provides-Extra: sqlserver
68
68
  Requires-Dist: aioodbc>=0.5; extra == 'sqlserver'
69
+ Provides-Extra: vault
70
+ Requires-Dist: hvac>=2.3.0; extra == 'vault'
71
+ Provides-Extra: webauthn
72
+ Requires-Dist: webauthn<4,>=3.0.0; extra == 'webauthn'
69
73
  Provides-Extra: x12
70
74
  Requires-Dist: pyx12>=4.0.0; extra == 'x12'
71
75
  Provides-Extra: xml
@@ -92,7 +96,8 @@ guided tooling or extend it in Python; it runs on SQLite, PostgreSQL, or SQL Ser
92
96
  authentication, RBAC, audit logging, and encryption-at-rest built in.
93
97
 
94
98
  > Python import package: `messagefoundry`. Built with **hl7apy** + **python-hl7** (HL7 parsing/
95
- > validation), **FastAPI** (engine API), and **PySide6** (admin console).
99
+ > validation), **FastAPI** (engine API + the same-origin `/ui` web console), and **PySide6** (the
100
+ > standalone test harness).
96
101
 
97
102
  ## What it is
98
103
 
@@ -105,8 +110,8 @@ control; either way the configuration is version-controlled and yours.
105
110
  ## Architecture
106
111
 
107
112
  **Engine-as-library + localhost API.** The engine is an importable Python package.
108
- The PySide6 console talks to it over a localhost HTTP + WebSocket API — the same way
109
- whether the engine runs in-process, as a local daemon, or (later) on a remote host.
113
+ A browser **web console** (served same-origin at `/ui`) talks to it over a localhost HTTP + WebSocket
114
+ API — the same way whether the engine runs in-process, as a local daemon, or (later) on a remote host.
110
115
  No hand-rolled IPC; the deployment split is a config choice, not an architectural fork.
111
116
 
112
117
  See **[docs/architecture-diagram.md](https://github.com/MEFORORG/MessageFoundry/blob/main/docs/architecture-diagram.md)** for the rendered diagrams —
@@ -147,7 +152,7 @@ Full documentation lives on **[messagefoundry.org](https://messagefoundry.org/)*
147
152
 
148
153
  - **[Mental map](https://messagefoundry.org/assets/docs/MessageFoundry-Mental-Model.pdf)** — an
149
154
  orientation guide to how the pieces fit: Connections → Router → Handlers → Connections, with the
150
- headless engine and the console/IDE that drive it.
155
+ headless engine and the web console/IDE that drive it.
151
156
  - **[Install Guide](https://messagefoundry.org/assets/docs/MessageFoundry-Install-Guide.pdf)** — install,
152
157
  configure, secure, and roll out to production.
153
158
  - **[User Guide](https://messagefoundry.org/assets/docs/MessageFoundry-User-Guide.pdf)** — author and
@@ -177,19 +182,21 @@ deliberate — replace `<version>` with the current release shown at the top of
177
182
  needs (each is opt-in and lazy-imported):
178
183
 
179
184
  ```bash
180
- pip install "messagefoundry[console]==<version>" # admin console (PySide6 GUI) — the operator UI; most operators want this
185
+ pip install "messagefoundry-webconsole==<version>" # the browser web console (/ui) — the operator UI; most operators want this
181
186
  pip install "messagefoundry[postgres]==<version>" # PostgreSQL store backend (production server DB)
182
187
  pip install "messagefoundry[sqlserver]==<version>" # SQL Server store backend (+ OS-level ODBC Driver 18)
183
188
  pip install "messagefoundry[sftp]==<version>" # SFTP transport for the REMOTEFILE connector
184
189
  pip install "messagefoundry[dicom]==<version>" # DICOM codec + C-STORE SCP (pydicom + pynetdicom)
190
+ pip install "messagefoundry[harness]==<version>" # the standalone PySide6 test harness GUI
185
191
  ```
186
192
 
187
- **What's in the `messagefoundry` package — and what isn't.** It is the **engine plus the admin
188
- console**: the console ships in the same wheel, with its PySide6/GUI dependencies as the opt-in
189
- `[console]` extra, so a headless server, container, or adopter install stays lean — the console is one
190
- flag away (`messagefoundry[console]`) when you want the operator UI. The **VS Code extension is a
191
- separate product, not on PyPI** (a VS Code extension is a different ecosystem); see *VS Code extension &
192
- test harness* below for where to get it.
193
+ **What's in the `messagefoundry` package — and what isn't.** It is the **engine**; the operator UI is
194
+ the browser **web console** served same-origin at `/ui`, which ships as a separate, version-matched
195
+ wheel (`messagefoundry-webconsole`) the engine mounts in-process (turn it on with `[api].serve_ui`), so
196
+ a headless server, container, or adopter install stays lean. (The former PySide6 desktop console was
197
+ retired in favour of the web console BACKLOG #103; PySide6 now backs only the opt-in `[harness]` test
198
+ tooling.) The **VS Code extension is a separate product, not on PyPI** (a VS Code extension is a
199
+ different ecosystem); see *VS Code extension & test harness* below for where to get it.
193
200
 
194
201
  > **Verify before you install (supply chain).** Every release is built by a GitHub Actions workflow,
195
202
  > Sigstore-signed, and carries SLSA build-provenance + PEP 740 attestations. Verify a downloaded
@@ -224,10 +231,11 @@ python -m messagefoundry serve --config samples/config --db messagefoundry.db --
224
231
  # API on http://127.0.0.1:8765 — GET /connections, /messages, /stats, WS /ws/stats
225
232
  ```
226
233
 
227
- Then open the admin console (needs the `console` extra: `pip install -e ".[console]"`):
234
+ Then open the admin console in a browser (install the web console alongside the engine
235
+ `pip install -e packaging/messagefoundry-webconsole` — and set `[api].serve_ui = true`):
228
236
 
229
237
  ```bash
230
- python -m messagefoundry.console --url http://127.0.0.1:8765
238
+ # browse to http://127.0.0.1:8765/ui and sign in
231
239
  ```
232
240
 
233
241
  ### VS Code extension & test harness
@@ -16,7 +16,8 @@ guided tooling or extend it in Python; it runs on SQLite, PostgreSQL, or SQL Ser
16
16
  authentication, RBAC, audit logging, and encryption-at-rest built in.
17
17
 
18
18
  > Python import package: `messagefoundry`. Built with **hl7apy** + **python-hl7** (HL7 parsing/
19
- > validation), **FastAPI** (engine API), and **PySide6** (admin console).
19
+ > validation), **FastAPI** (engine API + the same-origin `/ui` web console), and **PySide6** (the
20
+ > standalone test harness).
20
21
 
21
22
  ## What it is
22
23
 
@@ -29,8 +30,8 @@ control; either way the configuration is version-controlled and yours.
29
30
  ## Architecture
30
31
 
31
32
  **Engine-as-library + localhost API.** The engine is an importable Python package.
32
- The PySide6 console talks to it over a localhost HTTP + WebSocket API — the same way
33
- whether the engine runs in-process, as a local daemon, or (later) on a remote host.
33
+ A browser **web console** (served same-origin at `/ui`) talks to it over a localhost HTTP + WebSocket
34
+ API — the same way whether the engine runs in-process, as a local daemon, or (later) on a remote host.
34
35
  No hand-rolled IPC; the deployment split is a config choice, not an architectural fork.
35
36
 
36
37
  See **[docs/architecture-diagram.md](https://github.com/MEFORORG/MessageFoundry/blob/main/docs/architecture-diagram.md)** for the rendered diagrams —
@@ -71,7 +72,7 @@ Full documentation lives on **[messagefoundry.org](https://messagefoundry.org/)*
71
72
 
72
73
  - **[Mental map](https://messagefoundry.org/assets/docs/MessageFoundry-Mental-Model.pdf)** — an
73
74
  orientation guide to how the pieces fit: Connections → Router → Handlers → Connections, with the
74
- headless engine and the console/IDE that drive it.
75
+ headless engine and the web console/IDE that drive it.
75
76
  - **[Install Guide](https://messagefoundry.org/assets/docs/MessageFoundry-Install-Guide.pdf)** — install,
76
77
  configure, secure, and roll out to production.
77
78
  - **[User Guide](https://messagefoundry.org/assets/docs/MessageFoundry-User-Guide.pdf)** — author and
@@ -101,19 +102,21 @@ deliberate — replace `<version>` with the current release shown at the top of
101
102
  needs (each is opt-in and lazy-imported):
102
103
 
103
104
  ```bash
104
- pip install "messagefoundry[console]==<version>" # admin console (PySide6 GUI) — the operator UI; most operators want this
105
+ pip install "messagefoundry-webconsole==<version>" # the browser web console (/ui) — the operator UI; most operators want this
105
106
  pip install "messagefoundry[postgres]==<version>" # PostgreSQL store backend (production server DB)
106
107
  pip install "messagefoundry[sqlserver]==<version>" # SQL Server store backend (+ OS-level ODBC Driver 18)
107
108
  pip install "messagefoundry[sftp]==<version>" # SFTP transport for the REMOTEFILE connector
108
109
  pip install "messagefoundry[dicom]==<version>" # DICOM codec + C-STORE SCP (pydicom + pynetdicom)
110
+ pip install "messagefoundry[harness]==<version>" # the standalone PySide6 test harness GUI
109
111
  ```
110
112
 
111
- **What's in the `messagefoundry` package — and what isn't.** It is the **engine plus the admin
112
- console**: the console ships in the same wheel, with its PySide6/GUI dependencies as the opt-in
113
- `[console]` extra, so a headless server, container, or adopter install stays lean — the console is one
114
- flag away (`messagefoundry[console]`) when you want the operator UI. The **VS Code extension is a
115
- separate product, not on PyPI** (a VS Code extension is a different ecosystem); see *VS Code extension &
116
- test harness* below for where to get it.
113
+ **What's in the `messagefoundry` package — and what isn't.** It is the **engine**; the operator UI is
114
+ the browser **web console** served same-origin at `/ui`, which ships as a separate, version-matched
115
+ wheel (`messagefoundry-webconsole`) the engine mounts in-process (turn it on with `[api].serve_ui`), so
116
+ a headless server, container, or adopter install stays lean. (The former PySide6 desktop console was
117
+ retired in favour of the web console BACKLOG #103; PySide6 now backs only the opt-in `[harness]` test
118
+ tooling.) The **VS Code extension is a separate product, not on PyPI** (a VS Code extension is a
119
+ different ecosystem); see *VS Code extension & test harness* below for where to get it.
117
120
 
118
121
  > **Verify before you install (supply chain).** Every release is built by a GitHub Actions workflow,
119
122
  > Sigstore-signed, and carries SLSA build-provenance + PEP 740 attestations. Verify a downloaded
@@ -148,10 +151,11 @@ python -m messagefoundry serve --config samples/config --db messagefoundry.db --
148
151
  # API on http://127.0.0.1:8765 — GET /connections, /messages, /stats, WS /ws/stats
149
152
  ```
150
153
 
151
- Then open the admin console (needs the `console` extra: `pip install -e ".[console]"`):
154
+ Then open the admin console in a browser (install the web console alongside the engine
155
+ `pip install -e packaging/messagefoundry-webconsole` — and set `[api].serve_ui = true`):
152
156
 
153
157
  ```bash
154
- python -m messagefoundry.console --url http://127.0.0.1:8765
158
+ # browse to http://127.0.0.1:8765/ui and sign in
155
159
  ```
156
160
 
157
161
  ### VS Code extension & test harness
@@ -13,11 +13,13 @@ Config modules define the message graph against this surface::
13
13
 
14
14
  from messagefoundry.config.models import (
15
15
  AckMode,
16
+ BatchConfig,
16
17
  BuildupThreshold,
17
18
  ContentType,
18
19
  InternalErrorPolicy,
19
20
  OrderingMode,
20
21
  RetryPolicy,
22
+ SaturationThreshold,
21
23
  StallThreshold,
22
24
  )
23
25
  from messagefoundry.config.active_environment import current_environment
@@ -33,6 +35,7 @@ from messagefoundry.config.wiring import (
33
35
  DatabaseLookup,
34
36
  DatabasePoll,
35
37
  DatabaseRef,
38
+ Direct,
36
39
  Email,
37
40
  FhirLookup,
38
41
  File,
@@ -54,14 +57,35 @@ from messagefoundry.config.wiring import (
54
57
  Timer,
55
58
  X12,
56
59
  Send,
60
+ SetMeta,
57
61
  SetState,
62
+ MessageTypeError,
58
63
  code_set,
59
64
  env,
60
65
  handler,
61
66
  inbound,
67
+ message_type_of,
62
68
  outbound,
63
69
  router,
64
70
  )
71
+ from messagefoundry.actions import (
72
+ append_to_field,
73
+ arith_field,
74
+ code_lookup,
75
+ convert_case,
76
+ copy_field,
77
+ copy_segment,
78
+ date_diff_field,
79
+ delete_segment,
80
+ format_date,
81
+ pad_field,
82
+ replace_literal,
83
+ set_field,
84
+ split_field,
85
+ substring_field,
86
+ trim_field,
87
+ )
88
+ from messagefoundry.diagnostics import checkpoint, log_note
65
89
  from messagefoundry.parsing.groups import SegmentGroup
66
90
  from messagefoundry.parsing.message import Message, RawMessage
67
91
  from messagefoundry.parsing.split import split_by_obr
@@ -74,7 +98,7 @@ from messagefoundry.timezone import (
74
98
  to_zone,
75
99
  )
76
100
 
77
- __version__ = "0.2.14"
101
+ __version__ = "0.3.0"
78
102
 
79
103
  __all__ = [
80
104
  "Message",
@@ -83,6 +107,7 @@ __all__ = [
83
107
  "split_by_obr",
84
108
  "Send",
85
109
  "SetState",
110
+ "SetMeta",
86
111
  "state_get",
87
112
  "response_get",
88
113
  "MLLP",
@@ -94,6 +119,7 @@ __all__ = [
94
119
  "Loopback",
95
120
  "PassThrough",
96
121
  "Rest",
122
+ "Direct",
97
123
  "Email",
98
124
  "SMTP",
99
125
  "FHIR",
@@ -125,11 +151,32 @@ __all__ = [
125
151
  "InternalErrorPolicy",
126
152
  "BuildupThreshold",
127
153
  "StallThreshold",
154
+ "SaturationThreshold",
155
+ "BatchConfig",
128
156
  "ContentType",
129
157
  "inbound",
130
158
  "outbound",
131
159
  "router",
132
160
  "handler",
161
+ "message_type_of",
162
+ "MessageTypeError",
163
+ "copy_field",
164
+ "set_field",
165
+ "append_to_field",
166
+ "trim_field",
167
+ "substring_field",
168
+ "pad_field",
169
+ "replace_literal",
170
+ "convert_case",
171
+ "arith_field",
172
+ "format_date",
173
+ "date_diff_field",
174
+ "split_field",
175
+ "code_lookup",
176
+ "copy_segment",
177
+ "delete_segment",
178
+ "log_note",
179
+ "checkpoint",
133
180
  "convert_hl7_timestamp",
134
181
  "to_zone",
135
182
  "parse_hl7_timestamp",