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