messagefoundry 0.2.12__tar.gz → 0.2.14__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/workflows/benchmark.yml +2 -2
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/workflows/ci.yml +1 -1
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/CHANGELOG.md +80 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/PKG-INFO +1 -1
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docker/compose.yaml +1 -1
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/BACKLOG.md +86 -3
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/CLOUD-DEPLOYMENT.md +1 -1
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/CLUSTERING.md +1 -1
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/CONFIGURATION.md +2 -2
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/DEPLOY-SERVER-DB.md +34 -1
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/MENTAL-MODEL.md +1 -1
- messagefoundry-0.2.14/docs/THROUGHPUT.md +304 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0037-multi-process-sharding-l3.md +6 -0
- messagefoundry-0.2.14/docs/adr/0062-default-store-pool-size.md +137 -0
- messagefoundry-0.2.14/docs/adr/0063-no-split-store-unified-store-for-sharding.md +101 -0
- messagefoundry-0.2.14/docs/releases/DELTA-SECURITY-FIXES-MULTISESSION-PLAN.md +197 -0
- messagefoundry-0.2.14/docs/reviews/DELTA-REVIEW-2026-07-01.md +262 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/throughput-build-plan.md +3 -3
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/throughput-roadmap.md +2 -2
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/__main__.py +130 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/config/connscale/_shape.py +30 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/config/connscale/graph.py +7 -4
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/connscale/report.py +7 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/connscale/runner.py +90 -55
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/enginepoll.py +44 -0
- messagefoundry-0.2.14/harness/load/multishard.py +753 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/report.py +64 -7
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/runner.py +24 -4
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/__init__.py +1 -1
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/__main__.py +17 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/settings.py +3 -2
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/_builtin_hl7.py +21 -1
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/peek.py +5 -1
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/xml/signature.py +16 -4
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/sharding.py +37 -2
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/supervisor.py +10 -2
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/wiring_runner.py +40 -15
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/store/base.py +41 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/support/bundle.py +17 -2
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/support/redact.py +34 -17
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/http_listener.py +16 -1
- messagefoundry-0.2.14/tests/test_builtin_hl7_hardening.py +87 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_connscale_postgres.py +1 -1
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_connscale_report.py +31 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_connscale_smoke.py +10 -3
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_fhir_lookup.py +15 -0
- messagefoundry-0.2.14/tests/test_harness_reconcile.py +230 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_inbound_http_source.py +40 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_load_runner.py +34 -10
- messagefoundry-0.2.14/tests/test_multishard_smoke.py +139 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_settings.py +66 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_sharding.py +39 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_support_bundle.py +67 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_xml_schema_signature.py +4 -1
- messagefoundry-0.2.14/tests/test_xml_signature_anchor.py +44 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.claude/settings.json +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.dockerignore +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.gitattributes +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/CODEOWNERS +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/SECURITY.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/dependabot.yml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/workflows/cla.yml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/workflows/codeql.yml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/workflows/dependabot-auto-merge.yml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/workflows/dependabot-lock-resync.yml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/workflows/freethread-smoke.yml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/workflows/manifest-lint.yml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/workflows/release-sync-check.yml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/workflows/release.yml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/workflows/scorecard.yml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/workflows/security.yml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/workflows/selfhosted-win2025-sql.yml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/workflows/vuln-metrics.yml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.github/zizmor.yml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.gitignore +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.gitleaks.toml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.mefor-hooks/pre-commit +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.pre-commit-config.yaml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/.semgrep/messagefoundry.yml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/CLA.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/CLAUDE.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/CODE_OF_CONDUCT.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/COMMERCIAL-LICENSE.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/CONTRIBUTING.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/GOVERNANCE.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/LICENSE +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/MAINTAINERS.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/NOTICE +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/README.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docker/Dockerfile +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docker/README.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docker/k8s/ha-postgres.yaml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docker/k8s/secret.example.yaml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docker/k8s/statefulset.yaml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docker/locks/requirements-core.lock +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docker/locks/requirements-sqlserver.lock +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docker/secrets.env.example +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docker/smoke/Dockerfile +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docker/smoke/config/IB_Test_ADT.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docker/smoke/send_adt.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/ADOPTER-CI.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/AI.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/ANTIVIRUS-FIREWALL.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/ARCHITECTURE.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/BRAND.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/CI-QUALITY.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/CLOUD-PHI-HIPAA.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/CODESETS.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/CONNECTIONS.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/CONTAINER-EXPOSURE-EVALUATION.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/CONTRIBUTOR-FIRST-ISSUES.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/CONTRIBUTOR-PROGRAM-PLAN.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/COUNSEL-ENGAGEMENT-BRIEF.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/DEPLOYMENT.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/DICOM.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/DUAL_LICENSING_PLAN.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/EARLY-ADOPTER-GUIDE.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/FEATURE-MAP.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/HL7-VALIDATION.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/INSTALL-GUIDE.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/LOAD-TESTING.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/MessageFoundry-Mental-Model.docx +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/PHI.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/POSITIONING.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/REMOTE-CONSOLE-CUSTOMER-GUIDE.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/REMOTE-CONSOLE.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/SECURITY-REMEDIATION-LEDGER.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/SECURITY.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/SERVICE.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/SUPPORT-POLICY.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/SYSTEM-REQUIREMENTS.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/Secure_AI_Development_Standards.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/Secure_Development_Standards.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/TEE-RELAY.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/THROUGHPUT-IMPROVEMENTS.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/USER-GUIDE.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/WORKTREES.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0001-staged-pipeline-architecture.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0002-phase2-transport-security-and-strong-auth.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0003-non-hl7-transports-database-rest-soap.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0004-payload-agnostic-ingress.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0005-transform-accessible-state.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0006-external-data-lookups.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0007-gui-manageable-connections-toml.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0008-cluster-observability-api.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0009-run-scoped-context-providers.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0010-handler-callable-db-lookup.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0011-timer-scheduled-source.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0012-x12-edi-codec.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0013-increment-2-reingress-design.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0013-query-response-orchestration.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0014-alerting-rules-engine.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0015-ws-soap-outbound-mtls-wssecurity.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0016-synchronous-x12-request-response.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0017-consumer-deployment-model.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0018-per-message-signatures-accepted-risk.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0019-pluggable-keyprovider-hsm-kms-vault.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0020-protocol-diagnostic-capture.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0021-inbound-ack-nak-capture-response-sent.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0022-fhir-resource-codec-rest-client.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0023-inbound-http-listener.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0024-smart-backend-services-token-provider.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0025-dicom-codec-store-connectors.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0026-off-box-egress-update-check.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0027-per-connection-retention.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0028-base64-binary-carriage-codec.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0029-email-smtp-destination.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0030-anonymization-test-harness-tee.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0031-startup-connection-fault-isolation.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0032-console-desktop-launch.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0033-gui-manageable-code-sets.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0034-static-analysis-triage-policy-accepted-risk-register.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0035-ide-extension-workspace-trust-and-scope.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0036-windows-config-source-trust.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0038-internal-pass-through-connector.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0039-database-tier-sharding-l5.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0040-free-threaded-engine-support.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0041-load-path-attestation-and-change-attribution.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0042-embedded-document-pruning.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0043-fhir-read-lookup.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0044-operator-alert-state.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0045-custom-rbac-roles.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0046-message-content-search.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0047-cloud-kubernetes-ha-deployment-packaging.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0048-third-tier-disaster-recovery-standby.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0049-turnkey-dr-backup-restore-verify.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0050-single-project-root-config-anchoring.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0051-corepoint-throughput-parity-strategy.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0052-enterprise-scale-target.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0053-free-threaded-multicore-engine.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0054-low-allocation-builtins-hl7-parser.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0055-group-commit-durable-write.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0056-engine-managed-vip-failover.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0057-inline-step-a-fast-path.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0058-batch-claim-fifo-prefix.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0059-seq-only-fifo-ordering.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0060-rename-based-fifo-index-migration.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/0061-per-lane-wake-events.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/README.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/adr/TEMPLATE.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/architecture-components.png +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/architecture-components.svg +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/architecture-config-graph.png +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/architecture-config-graph.svg +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/architecture-diagram.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/architecture-message-flow.png +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/architecture-message-flow.svg +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/architecture-topology.png +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/architecture-topology.svg +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/benchmarks/TUNING-BASELINE.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/benchmarks/results/2026-06-16-ci-linux/environment.txt +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/benchmarks/results/2026-06-16-ci-linux/failover-postgres.json +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/benchmarks/results/2026-06-16-ci-linux/failover-sqlserver.json +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/benchmarks/results/2026-06-16-ci-linux/reference-postgres.json +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/benchmarks/results/2026-06-16-ci-linux/reference-sqlite.json +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/benchmarks/results/2026-06-16-ci-linux/reference-sqlserver.json +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/benchmarks/step-b-write-amplification.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/design/dbshard.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/design/freethread-spike.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/design/freethread.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/design/multiproc.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/hl7-message-ordering-reference.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/message-ordering-design.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/releases/ASVS-OPTION-A-MULTISESSION-PLAN.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/releases/ASVS-PARTIALS-SWEEP-MULTISESSION-PLAN.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/releases/DOGFOOD-BACKLOG-MULTISESSION-PLAN.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/releases/MULTISESSION-PLAN-3.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/releases/MULTISESSION-PLAN-4.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/releases/MULTISESSION-PLAN-5.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/releases/MULTISESSION-PLAN-6.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/releases/MULTISESSION-PLAN-v0.2.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/releases/MULTISESSION-PLAN.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/releases/PLAN-3-LANE-HANDOFFS.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/releases/V0.2-LANE-HANDOFFS.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/releases/v0.1-EXECUTION-PLAN.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/releases/v0.1-PLAN.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/releases/v0.1.0-PRETAG-CHECKLIST.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/research/cloud-deployment-research-2026-06.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/research/config-ux-review.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/research/non-hl7-transform-components.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/reviews/DEPENDENCY-INFOSEC-POSTURE-2026-06-23.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/reviews/FULL-REVIEW-2026-06-10.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/ADVISORY-PROCESS.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/ASVS-FAILS-REMEDIATION-PLAN.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/ASVS-L2-PHASE0-CHANGES.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/ASVS-L2-REMEDIATION-PLAN.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/ASVS-L3-ASSESSMENT.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/ASVS-L3-REMEDIATION-PLAN.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/ASVS-L3-STATUS.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/BEYOND-ASVS-L3-ONEPAGE.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/BEYOND-ASVS-L3-REMEDIATION-PLAN-ONEPAGE.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/BEYOND-ASVS-L3-REMEDIATION-PLAN.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/BEYOND-ASVS-L3.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/DEP-CVE-RUNBOOK.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/DEPENDENCY-METRICS.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/MEFOR-Code-Review-Checklist.xlsx +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/PHASE-8C-RBAC.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/PUBLISHING.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/RCA-TEMPLATE.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/RELEASE-GATE.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/REMEDIATION-PLAN.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/REVIEW-2026-06-07.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/SDS-CONFORMANCE-REVIEW-2026-06-12.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/SDS-REMEDIATION-PLAN.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/SECURITY-POSTURE.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/SOUP-DEPENDENCY-HANDLING.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/SOUP-REVIEW-2026-06-18.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/SOUP-REVIEW-PROCEDURE.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/security/THREAT-MODEL.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/testing/VERIFY.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/testing/WIN2025-ACCEPTANCE.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/testing/WIN2025-TEST-MATRIX.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/docs/testing/WIN2025-TEST-PLAN.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/environments/dev.toml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/environments/prod.toml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/README.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/acceptance/__init__.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/acceptance/__main__.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/acceptance/matrix.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/acceptance/probes.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/acceptance/report.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/acceptance/runner.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/compose.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/config/connscale/__init__.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/config/connscale/gen_toml.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/config/coverage.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/config/load/_shape.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/config/load/graph.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/config/passthrough/graph.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/config/store_once/graph.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/file_panel.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/file_transport.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/__init__.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/connscale/__init__.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/connscale/driver.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/connscale/probe.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/connscale/profile.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/corpus.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/correlator.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/failover.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/failover_track.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/governor.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/ids.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/metrics.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/profile.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/profiles/README.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/profiles/adt-fanout-stress.toml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/profiles/closed-loop.toml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/profiles/connscale-smoke.toml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/profiles/connscale.toml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/profiles/failover.toml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/profiles/fanout-baseline.toml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/profiles/malformed-load.toml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/profiles/reference.toml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/profiles/smoke-sqlserver.toml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/profiles/smoke.toml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/profiles/soak.toml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/profiles/spike-burst.toml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/profiles/sustained-overload.toml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/profiles/writeamp.toml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/sender.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/load/sink.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/mllp.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/monitor.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/receive.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/reconcile/__init__.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/reconcile/__main__.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/reconcile/capture.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/reconcile/compare.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/reconcile/normalize.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/reconcile/report.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/scenarios.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/send.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/harness/window.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/.gitignore +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/.vscodeignore +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/README.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/esbuild.js +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/media/hl7schema.json +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/media/icon-amber.svg +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/media/icon.png +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/media/icon.svg +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/package-lock.json +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/package.json +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/snippets/messagefoundry.code-snippets +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/aiPolicy.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/alertEditor.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/auth.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/chat.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/cli.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/codeSetEditor.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/codesetsTree.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/completion.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/connectionEditor.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/editorToolbar.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/engineClient.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/engineTarget.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/extension.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/generate.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/git.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/graphTree.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/home.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/insertElement.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/newRoute.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/promote.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/promoteTarget.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/sourceControl.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/test/runTest.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/test/suite/ai-policy.test.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/test/suite/chat.test.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/test/suite/editor-toolbar.test.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/test/suite/engine-target.test.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/test/suite/extension.test.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/test/suite/index.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/test/suite/insert-element.test.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/test/suite/promote-target.test.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/test/suite/pythonpath.test.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/test/suite/settings-scope.test.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/testBench.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/src/validate.ts +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/tsconfig.json +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/ide/tsconfig.test.json +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/mefor.code-workspace +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/adr_analyze.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/anon/__init__.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/anon/_pools.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/anon/hl7.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/anon/keying.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/anon/leak.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/anon/rules.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/anon/surrogates.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/api/__init__.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/api/app.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/api/approvals.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/api/auth_models.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/api/auth_routes.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/api/field_authz.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/api/metrics.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/api/models.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/api/security.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/api/tls.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/auth/__init__.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/auth/data/common_passwords.NOTICE +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/auth/data/common_passwords.txt +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/auth/identity.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/auth/ldap.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/auth/notifications.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/auth/passwords.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/auth/permissions.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/auth/policy.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/auth/ratelimit.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/auth/service.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/auth/tokens.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/auth/totp.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/checks.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/__init__.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/active_environment.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/ai_policy.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/alerts_edit.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/anchor.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/code_sets.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/codeset_edit.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/connections_edit.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/connections_file.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/db_lookup.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/environments.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/fhir_lookup.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/fingerprint.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/ingest_time.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/models.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/reference.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/response.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/run_context.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/state.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/tls_policy.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/config/wiring.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/__init__.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/__main__.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/_async.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/alerts_page.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/change_password.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/client.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/connections.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/dead_letters_page.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/delegates.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/event_log_page.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/icons/alerts.svg +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/icons/connections.svg +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/icons/dead-letters.svg +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/icons/engine-status.svg +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/icons/log-search.svg +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/icons/logo-lockup.svg +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/icons/users.svg +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/login.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/mfa.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/reauth.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/resources/README.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/resources/app.ico +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/resources/app.svg +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/search.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/service_control.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/sessions.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/shards.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/shell.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/status.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/theme.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/users_page.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/console/widgets.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/README.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/__init__.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/_core.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/_hl7data.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/adt.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/all_types.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/bar.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/dft.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/documents.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/mdm.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/mfn.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/oml.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/orl.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/orm.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/oru.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/ras.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/rde.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/siu.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/generators/vxu.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/hl7schema.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/integrity.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/last_resort.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/logging_setup.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/__init__.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/_backend.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/binary.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/consistency.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/dicom/__init__.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/dicom/_deps.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/dicom/_util.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/dicom/dataset.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/dicom/errors.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/dicom/hl7_map.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/dicom/peek.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/fhir/__init__.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/fhir/_deps.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/fhir/errors.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/fhir/peek.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/fhir/resource.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/groups.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/message.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/split.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/summary.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/tree.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/validate.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/x12/__init__.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/x12/_deps.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/x12/delimiters.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/x12/errors.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/x12/interchange.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/x12/message.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/x12/peek.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/x12/validate.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/xml/__init__.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/xml/_deps.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/xml/errors.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/xml/harden.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/xml/message.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/parsing/xml/schema.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/__init__.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/alert_sinks.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/alerts.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/cert_expiry.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/cluster.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/cluster_sqlserver.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/config_convergence.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/connscale_shim.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/dr.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/dr_backup.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/dryrun.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/engine.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/leader_tasks.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/reference_sync.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/retention.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/security_notify.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/state_convergence.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/pipeline/update_check.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/py.typed +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/redaction.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/scaffold.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/secrets_dpapi.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/store/__init__.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/store/audit_tee.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/store/backup_codec.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/store/content_search.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/store/crypto.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/store/document_strip.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/store/keyprovider.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/store/pool_metrics.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/store/postgres.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/store/sqlserver.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/store/store.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/support/__init__.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/timezone.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/__init__.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/base.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/database.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/dicom.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/dicomweb.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/email.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/fhir.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/file.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/framing.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/loopback.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/mllp.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/passthrough.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/remotefile.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/rest.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/signing.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/smart.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/soap.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/tcp.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/timer.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/transports/x12.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/verify/__init__.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/verify/checks.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/verify/model.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/verify/report.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/verify/runner.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/messagefoundry/verify/smoke.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/packaging/console-installer/README.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/packaging/console-installer/THIRD-PARTY-NOTICES.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/packaging/console-installer/THIRD-PARTY-NOTICES.txt +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/packaging/console-installer/console_launcher.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/packaging/console-installer/licenses/GPL-3.0.txt +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/packaging/console-installer/licenses/LGPL-3.0.txt +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/packaging/console-installer/messagefoundry-console.iss +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/packaging/console-installer/messagefoundry-console.spec +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/packaging/messagefoundry-harness/README.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/packaging/messagefoundry-harness/pyproject.toml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/pyproject.toml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/requirements.lock +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/config/IB_ACME_ADT.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/config/IB_FHIR_INTAKE.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/config/IB_IMMUNIZATION_VXU.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/config/IB_PARTNER_X12.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/config/IB_RADIOLOGY_SR.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/config/IB_RTE_ELIGIBILITY.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/config/adt.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/config/codesets/event_labels.csv +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/config/codesets/facility_mnemonics.toml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/config/connections.toml +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/consistency/validated_adt.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/dicom/generate_sr_sample.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/messages/adt_a01.hl7 +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/messages/adt_batch.hl7 +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/messages/hapi-hl7v2/.gitattributes +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/messages/hapi-hl7v2/README.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/messages/hapi-hl7v2/adt_a01.txt +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/messages/hapi-hl7v2/adt_a03.txt +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/messages/hapi-hl7v2/batch_18_messages.txt +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/messages/hapi-hl7v2/erp_z99_v231.hl7 +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/messages/hapi-hl7v2/omd_o03.txt +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/messages/hapi-hl7v2/omd_o03_rep.txt +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/messages/hapi-hl7v2/oml_o21.hl7 +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/messages/x12_270_eligibility.edi +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/results_relay/README.md +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/results_relay/codesets/test_codes.csv +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/results_relay/messages/oru_all_cancelled.hl7 +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/results_relay/messages/oru_results.hl7 +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/results_relay/results_relay.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/samples/send_mllp.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/console/install-console-shortcut.ps1 +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/console/pack_ico.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/console/uninstall-console-shortcut.ps1 +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/dev/postgres.ps1 +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/dev/sqlserver-docker.ps1 +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/dev/sqlserver.ps1 +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/hooks/block-blanket-git-stage.ps1 +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/publish/check_release_sync.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/publish/publish-denylist.txt +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/publish/publish.ps1 +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/publish/scan_forbidden.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/security/crypto_inventory_check.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/security/vuln_metrics.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/service/import-db-ca.ps1 +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/service/install-service.ps1 +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/service/uninstall-service.ps1 +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/trace_icon.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/worktree/new.ps1 +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/worktree/remove.ps1 +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/worktree/session-context.ps1 +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/scripts/worktree/spawn.ps1 +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/__init__.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/__main__.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/anon/__init__.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/anon/_hl7data.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/anon/_pools.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/anon/hl7.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/anon/keying.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/anon/leak.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/anon/rules.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/anon/surrogates.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/compare.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/correlate.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/hl7_fields.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/mefor_api.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/mllp.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/relay.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/report.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tee/store.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/_dicom_sample.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/_failover_load_support.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/_fhir_fixtures.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/conftest.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_acceptance_framework.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_ack_capture_runner.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_ack_sent_store.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_active_environment.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_ad_group_scope.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_admin_new_ip.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_adr_analyze.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_ai_policy.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_alert_rules.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_alert_sinks.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_alert_state.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_alerts_edit.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_alerts_rules_api.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_anon_core.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_anon_integration.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_anon_parity.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_api.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_api_alerts.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_api_auth.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_api_reload.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_api_tls.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_approvals.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_asvs_phase0.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_audit_integrity.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_audit_offbox_tee.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_auth_core.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_auth_entry_hardening.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_auth_hardening.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_auth_service.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_auth_session_lifecycle.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_auth_store.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_backup_crypto.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_backup_restore_atleastonce.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_backup_runner.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_batch_claim_fifo.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_batch_claim_locking.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_batch_claim_worker.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_binary_carriage.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_bootstrap_admin_perms.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_builtin_hl7_parity.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_cert_expiry.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_channel_rbac.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_checks.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_checks_lint.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_cli.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_cli_offline_resolution.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_cluster.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_cluster_failover_postgres.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_cluster_failover_sqlserver.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_cluster_graph_gating.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_cluster_lease.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_code_sets.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_codeset_edit.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_config_anchoring.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_config_fingerprint.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_config_source_trust.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_connection_api.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_connection_event_api.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_connection_event_emit.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_connection_event_outbound.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_connection_event_scope.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_connection_event_store.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_connection_resilience.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_connections_cli.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_connections_file.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_connscale_config.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_connscale_driver.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_connscale_profile.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_consistency.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_console_alerts.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_console_auth.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_console_client.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_console_dead_letters.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_console_event_log.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_console_hardening.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_console_icon.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_console_password.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_console_sessions.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_console_shards.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_console_status.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_console_step_up.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_console_theme.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_console_users.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_console_widgets.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_content_search.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_custom_roles.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_database_connector_integration.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_database_transport.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_db_lookup.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_db_lookup_live_runner.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_delivery_settings.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_dependabot_automerge_guardrails.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_dependency_boundaries.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_dicom_codec.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_dicom_scp.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_dicom_scp_security.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_dicom_scu.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_dicom_wiring.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_dicomweb.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_docs_runbooks.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_dr_activation.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_dr_api_status.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_dr_failback.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_dr_rbac.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_dr_run_profile.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_dr_seeding.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_dryrun.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_dual_control_reload.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_ed_documents.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_ed_documents_e2e.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_egress_allowlist.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_email_destination.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_embedded_document_pruning.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_enginepoll_aggregate.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_environments.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_fhir_parsing.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_fhir_resource.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_fhir_transport.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_field_authz.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_field_authz_metadata.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_fifo_index_migration.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_fifo_ordering.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_frozen_launch_smoke.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_generate_cli.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_generated_adt.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_generators_core.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_generators_types.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_group_commit.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_groups.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_harness.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_harness_compose.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_harness_config.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_harness_faults.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_harness_file.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_harness_monitor.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_harness_scenarios.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_hl7_core_features.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_hl7schema.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_inbound_bind.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_ingest_time.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_inline_fast_path.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_keyprovider.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_last_admin_guard.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_last_resort.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_leader_tasks.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_license_notice.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_listener_tls_exposure.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_load_config.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_load_corpus.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_load_failover_postgres.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_load_failover_sqlserver.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_load_failover_unit.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_load_metrics.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_load_profile.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_load_report.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_load_sender.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_load_sink.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_logging.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_message.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_message_split.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_message_timestamps.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_metrics_exporter.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_mfa.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_mllp_encoding_override.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_mllp_tls.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_nonhl7_ingress_size_cap.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_operability_config.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_outbound_signing.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_outbound_simulate.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_packaging.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_parse_tree.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_parsing.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_passthrough.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_passthrough_graph.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_payload_agnostic_ingress.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_per_connection_retention.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_per_lane_wake.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_pool_warm.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_postgres_store.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_priority_resolution.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_reconcile_capture.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_reconcile_compare.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_reconcile_harness.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_redaction.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_reference_sets.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_reingress.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_release_console_installer.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_remotefile_transport.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_response_capture.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_rest_transport.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_restore_verify.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_retention.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_run_context.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_scaffold.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_scaffold_requirements.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_scan_forbidden.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_secrets_dpapi.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_security_notify.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_security_static.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_seq_only_fifo.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_service_control.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_sibling_helper_finder.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_smart_backend.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_soap_transport.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_soap_wssecurity.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_sqlserver_coordinator.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_sqlserver_cursor_close.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_sqlserver_schema_init.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_sqlserver_store.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_staged_pipeline.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_startup_attestation.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_startup_fault_isolation.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_stats_reset.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_step_up.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_store.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_store_backend.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_store_encryption.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_store_file_hardening.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_store_once_deliver_many.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_store_once_graph.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_store_read_pool.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_store_ssl.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_summary.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_supervisor.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_synchronous_baseline.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_task_resilience.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_tcp_transport.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_tee_cli.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_tee_compare.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_tee_correlate.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_tee_hl7_fields.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_tee_mefor_api.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_tee_mllp.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_tee_relay.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_tee_report.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_tee_store.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_timer_source.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_timezone.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_tls_policy.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_totp.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_totp_window.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_transform_offloop.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_transform_state.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_transports.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_update_check.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_verify.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_version.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_win2025_acceptance.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_wiring.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_wiring_engine.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_wiring_reload.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_wiring_serve.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_ws_stats_revalidation.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_x12_parsing.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_x12_rte.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_x12_source_ip_allowlist.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_x12_transport.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_x12_validate.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/tests/test_xml_message.py +0 -0
- {messagefoundry-0.2.12 → messagefoundry-0.2.14}/uv.lock +0 -0
|
@@ -84,7 +84,7 @@ jobs:
|
|
|
84
84
|
MEFOR_STORE_DATABASE: messagefoundry
|
|
85
85
|
MEFOR_STORE_USERNAME: postgres
|
|
86
86
|
MEFOR_STORE_PASSWORD: mefor
|
|
87
|
-
MEFOR_STORE_POOL_SIZE: "5
|
|
87
|
+
MEFOR_STORE_POOL_SIZE: "40" # track the shipped default (ADR 0062: 5 -> 40)
|
|
88
88
|
MEFOR_STORE_ENCRYPT: "false" # plaintext to the container; the TLS-hardening guard needs the escape
|
|
89
89
|
MEFOR_ALLOW_INSECURE_TLS: "1"
|
|
90
90
|
steps:
|
|
@@ -151,7 +151,7 @@ jobs:
|
|
|
151
151
|
MEFOR_STORE_AUTH: sql
|
|
152
152
|
MEFOR_STORE_USERNAME: sa
|
|
153
153
|
MEFOR_STORE_PASSWORD: "Str0ng_P@ssw0rd!"
|
|
154
|
-
MEFOR_STORE_POOL_SIZE: "5
|
|
154
|
+
MEFOR_STORE_POOL_SIZE: "40" # track the shipped default (ADR 0062: 5 -> 40)
|
|
155
155
|
MEFOR_STORE_TRUST_SERVER_CERTIFICATE: "true"
|
|
156
156
|
MEFOR_ALLOW_INSECURE_TLS: "1"
|
|
157
157
|
steps:
|
|
@@ -569,7 +569,7 @@ jobs:
|
|
|
569
569
|
# FORCE a below-default pool (4 connections) so the perf_counter-measured acquire-WAIT
|
|
570
570
|
# histogram (the PRIMARY pool-wait signal) is non-trivial even at small N: ~3N inbound workers
|
|
571
571
|
# contend for 4 connections, so acquires actually queue and the percentiles populate. The
|
|
572
|
-
# default pool (
|
|
572
|
+
# default pool (40) would mask the wall. 4 (not 1-2) is deliberate: GET /status runs
|
|
573
573
|
# db_status()'s four sequential COUNT(*) queries on every poll, and an extremely tiny pool
|
|
574
574
|
# starves those acquires past the poller's HTTP timeout under the empty-claim herd on a slow
|
|
575
575
|
# runner — every poll then fails and the drain loops burn the test budget (the PR #675 hang).
|
|
@@ -6,6 +6,86 @@ All notable changes to MessageFoundry are documented here. The format follows
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.2.14] — 2026-07-01 — Early Access
|
|
10
|
+
|
|
11
|
+
**Delta security-audit remediation.** A focused security audit of the surface added since the
|
|
12
|
+
2026-06-10 full review (v0.2.0 → v0.2.13) surfaced seven verified findings; this release fixes all of
|
|
13
|
+
them. No new critical, no SQL injection, no auth bypass, no RCE — the most serious was an
|
|
14
|
+
unauthenticated memory-exhaustion DoS in the new default HL7 parser. Each fix ships with a regression
|
|
15
|
+
test. See [`docs/reviews/DELTA-REVIEW-2026-07-01.md`](docs/reviews/DELTA-REVIEW-2026-07-01.md).
|
|
16
|
+
|
|
17
|
+
### Security
|
|
18
|
+
- **Bounded the built-in HL7 rich-text repetition escape** (DELTA-01/02;
|
|
19
|
+
[`_builtin_hl7.py`](messagefoundry/parsing/_builtin_hl7.py)). The tolerant built-in parser (now the
|
|
20
|
+
default hot-path backend, ADR 0054) expanded `\.inN\`-style repetition escapes with no cap, so a
|
|
21
|
+
~15-byte inbound field (`\.in2000000000\`) allocated gigabytes synchronously on the event loop
|
|
22
|
+
**before the ACK** — an unauthenticated OOM/denial-of-service. The count is now clamped
|
|
23
|
+
(`MAX_ESCAPE_REPEAT = 512`), and a malformed count no longer raises out of a field read — that had
|
|
24
|
+
severed the connection and dropped a parseable message with **no disposition**, breaking the
|
|
25
|
+
count-and-log invariant.
|
|
26
|
+
- **XML-DSig `verify()` now requires an explicit trust anchor** (DELTA-03;
|
|
27
|
+
[`parsing/xml/signature.py`](messagefoundry/parsing/xml/signature.py)). Called with neither `x509_cert`
|
|
28
|
+
nor `ca_pem_file`, it previously fell back to signxml's default of trusting **any** certificate that
|
|
29
|
+
chains to the host's system CA store (origin-blind verification); it now raises `ValueError`.
|
|
30
|
+
**Behavior change** for the opt-in `[xml]` codec — a caller must pin the expected signer or a partner
|
|
31
|
+
CA. No in-repo caller relied on the old default.
|
|
32
|
+
- **FhirLookup SMART token endpoint is now egress-gated** (DELTA-04;
|
|
33
|
+
[`[egress].allowed_http`](docs/CONFIGURATION.md)). A `fhir_lookup` connection composed with
|
|
34
|
+
`with_smart_backend()` POSTs a signed `client_assertion` to its `smart_token_url`; that host was not
|
|
35
|
+
checked against the egress allowlist (only the FHIR base host was), so a crafted `smart_token_url`
|
|
36
|
+
could exfiltrate the assertion to an un-allowlisted host. The lookup and outbound arms now share one
|
|
37
|
+
gate ([ADR 0043](docs/adr/0043-fhir-read-lookup.md) §D3).
|
|
38
|
+
- **Support bundle no longer discloses the store host/database; its log redaction was widened**
|
|
39
|
+
(DELTA-05/07; [`support/`](messagefoundry/support/)). The offline support bundle's `status.json`
|
|
40
|
+
carried the SQL Server `host/database` verbatim — it is now reduced to the backend kind (file basename
|
|
41
|
+
only for SQLite). The bundled-log redactor previously used a fixed HL7-segment allowlist with no
|
|
42
|
+
free-text name/DOB heuristics; it now delegates to the engine redactor
|
|
43
|
+
([`messagefoundry.redaction`](messagefoundry/redaction.py)) for parity with stored-error redaction.
|
|
44
|
+
- **Inbound HTTP listener rejects ambiguous framing** (DELTA-06;
|
|
45
|
+
[`transports/http_listener.py`](messagefoundry/transports/http_listener.py)). A duplicate
|
|
46
|
+
`Content-Length`, a duplicate `Transfer-Encoding`, or the two present together are now refused with
|
|
47
|
+
`400` per RFC 7230 §3.3.3 — closing an HTTP request-smuggling / desync surface behind a fronting proxy.
|
|
48
|
+
|
|
49
|
+
## [0.2.13] — 2026-07-01 — Early Access
|
|
50
|
+
|
|
51
|
+
The **store connection-scale sizing** wave — right-size the server-DB connection pool to the measured
|
|
52
|
+
inverted-U optimum, guard against over-provisioning, and guarantee the message store stays unified. All
|
|
53
|
+
changes are **server-DB-only**; the single-node SQLite default is unaffected.
|
|
54
|
+
|
|
55
|
+
### Added
|
|
56
|
+
- **Soft store-pool over-provisioning warning** ([ADR 0062](docs/adr/0062-default-store-pool-size.md)) — a
|
|
57
|
+
server-DB engine now logs an advisory `WARNING` at graph start if `[store].pool_size` is sized past the
|
|
58
|
+
connection-pool inverted-U optimum: at/beyond the ~80 catastrophic cliff, or oversized for the engine's
|
|
59
|
+
inbound-interface count (`~2.5 ×` interfaces). Advisory only — it never blocks startup; SQLite has no pool
|
|
60
|
+
so it is skipped, and the default (40) never trips it. Guards the "set a huge pool for 1500 connections"
|
|
61
|
+
footgun (which is a *sharding* problem, not a pool one).
|
|
62
|
+
|
|
63
|
+
### Changed
|
|
64
|
+
- **Default server-DB store connection pool size raised 5 → 40** ([`[store].pool_size`](docs/CONFIGURATION.md),
|
|
65
|
+
env `MEFOR_STORE_POOL_SIZE`; [ADR 0062](docs/adr/0062-default-store-pool-size.md)). A three-sweep
|
|
66
|
+
connection-scale study found the pool is an **inverted-U**: it helps up to ~40 per engine, and
|
|
67
|
+
**over-provisioning is catastrophic** — past ~40 the extra connections thrash one shared SQL instance
|
|
68
|
+
(WRITELOG serialization + per-message finalizer applocks), and ACK latency explodes 30–90×. 40 is the
|
|
69
|
+
measured optimum — **do not set it higher to chase connection count.** **Server-DB backends only** (Postgres
|
|
70
|
+
/ SQL Server) — the default **single-node SQLite** backend is unaffected (fixed read pool + single writer;
|
|
71
|
+
never reads `pool_size`). **Existing explicit `[store].pool_size` / `MEFOR_STORE_POOL_SIZE` values are
|
|
72
|
+
unchanged** — only the unset default moves. Behavioral deltas on server-DB engines: ~**8×** the steady-state
|
|
73
|
+
DB sessions per engine, and the startup pool pre-warm rises from ~2 to **~20 connections per engine**
|
|
74
|
+
(bounded by `warm_pool_timeout`, off the intake path, self-releasing, never raises). **Connection-budget
|
|
75
|
+
caution:** `pool_size` is **per engine**, so on a shared server DB `engines × pool_size` all count against
|
|
76
|
+
one `max_connections` (Postgres default ~100 → ~2 engines at 40) — raise `max_connections`, front the DB
|
|
77
|
+
with a pooler (PgBouncer), or use SQL Server; or size `pool_size` down. **Never split the store** to fit the
|
|
78
|
+
budget ([ADR 0063](docs/adr/0063-no-split-store-unified-store-for-sharding.md)). See
|
|
79
|
+
[`docs/DEPLOY-SERVER-DB.md`](docs/DEPLOY-SERVER-DB.md) §3.
|
|
80
|
+
- **No split data store: multi-shard engine sharding now requires a server DB** ([ADR 0063](docs/adr/0063-no-split-store-unified-store-for-sharding.md),
|
|
81
|
+
amends [ADR 0037](docs/adr/0037-multi-process-sharding-l3.md)). `messagefoundry supervise` with **more than
|
|
82
|
+
one shard** on a **SQLite** store is now **refused at startup** — the old SQLite-file-per-shard behavior
|
|
83
|
+
split the message store into one database per shard, fragmenting search/reporting/audit/replay. A sharded
|
|
84
|
+
deployment must share **one unified store**, so `>1` shard requires `[store].backend = 'postgres'` or
|
|
85
|
+
`'sqlserver'` (every shard connects to the same database). **A single un-sharded engine on SQLite is
|
|
86
|
+
unaffected** (byte-identical to `serve`). Migrating an existing SQLite-sharded deployment: drain each shard
|
|
87
|
+
store to empty, then re-point `supervise` at one server DB (not an offline store merge).
|
|
88
|
+
|
|
9
89
|
## [0.2.12] — 2026-07-01 — Early Access
|
|
10
90
|
|
|
11
91
|
The **throughput & connection-scale wave.** The staged-queue per-message commit chain is shortened
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: messagefoundry
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.14
|
|
4
4
|
Summary: Open-source healthcare integration engine — route, transform, and validate messages across many formats and connection types
|
|
5
5
|
Project-URL: Homepage, https://messagefoundry.org/
|
|
6
6
|
Project-URL: Documentation, https://messagefoundry.org/
|
|
@@ -49,7 +49,7 @@ x-ha-engine-env: &ha-engine-env
|
|
|
49
49
|
MEFOR_STORE_PORT: "5432"
|
|
50
50
|
MEFOR_STORE_DATABASE: "messagefoundry"
|
|
51
51
|
MEFOR_STORE_USERNAME: "mefor"
|
|
52
|
-
MEFOR_STORE_POOL_SIZE: "
|
|
52
|
+
MEFOR_STORE_POOL_SIZE: "40" # default (ADR 0062); >= 2 required under [cluster]
|
|
53
53
|
MEFOR_CLUSTER_ENABLED: "true"
|
|
54
54
|
# DEV-ONLY: the local Postgres has no CA-trusted cert, so verification can't succeed here. This
|
|
55
55
|
# disables TLS verification across ALL transports — it is a CI/lab switch and must NEVER be set in
|
|
@@ -426,6 +426,14 @@ client. "Moderate risk"; not verifiable in offscreen Qt tests, so it deserves a
|
|
|
426
426
|
**FIFO per outbound connection** (simple, safe). Per-key ordering is the leading-edge refinement to
|
|
427
427
|
revisit once FIFO is solid and a real workload needs the parallelism.
|
|
428
428
|
|
|
429
|
+
**Naming (locked 2026-06-30):** the canonical vocabulary for this concept is **sequence key** (the
|
|
430
|
+
per-message partition value — ADT = `facility + MRN`; same key → same lane → FIFO preserved,
|
|
431
|
+
different keys → parallel), **sequence group** (the set of messages sharing a sequence key), and
|
|
432
|
+
**sequence-keyed lanes** / **sequence sharding** (the mechanism). The older terms used elsewhere in
|
|
433
|
+
this item — `partition_key` (config setting) and "order-group sharding" — refer to the same thing.
|
|
434
|
+
"Order-group" was retired because "order" collides with clinical orders (CPOE/ORM); "partition key"
|
|
435
|
+
was retired because "partition" is reserved for the planned store-sharding-by-channel axis.
|
|
436
|
+
|
|
429
437
|
**What:** preserve order only *within* a partition key (e.g. MRN / encounter / sending facility)
|
|
430
438
|
while processing *across* keys in parallel — the sweet spot between strict per-connection FIFO (safe,
|
|
431
439
|
serial) and unordered parallelism (fast, unsafe). Same idiom as a broker partition key. Recent
|
|
@@ -3063,11 +3071,11 @@ parity analysis.
|
|
|
3063
3071
|
|
|
3064
3072
|
**Cluster:** Minor gaps. **Priority:** P3. **Verdict:** demand-gate.
|
|
3065
3073
|
|
|
3066
|
-
**Scope:** Per-connection send pacing
|
|
3074
|
+
**Scope:** Per-connection send pacing and verify the reply's MSA-2 == the sent MSH-10. *(Keep-alive / persistent-reconnect on MLLP/TCP outbounds was promoted out to its own tracked item — see [#97](#97-keep-alive--persistent-outbound-connections--per-connector-setting-p3-on-trigger).)*
|
|
3067
3075
|
|
|
3068
|
-
**Trigger:** build when a partner needs paced sending
|
|
3076
|
+
**Trigger:** build when a partner needs paced sending or strict response-correlation.
|
|
3069
3077
|
|
|
3070
|
-
**Why:**
|
|
3078
|
+
**Why:** Both confirmed (no pacing; `MLLPDestination._check_ack` reads MSA-1/MSA-3 only, never matches MSA-2↔MSH-10). Cheap per-connection-override additions; bundle on real partner need. Keep-alive is tracked separately at #97.
|
|
3071
3079
|
|
|
3072
3080
|
**Source:** promoted from [#52](#52-corepoint-capability-parity-gaps--prioritized-roadmap-input-2026-06-27) gap synthesis (adversarially reviewed, 2026-06-28).
|
|
3073
3081
|
|
|
@@ -3559,6 +3567,81 @@ reconciled the same day.
|
|
|
3559
3567
|
|
|
3560
3568
|
---
|
|
3561
3569
|
|
|
3570
|
+
## 96. Built-in "setup tester" — self-service capacity estimator that benchmarks the deployed setup and reports how much traffic it can handle (P2, adopter-facing)
|
|
3571
|
+
|
|
3572
|
+
**Type:** feature — an operator/adopter-facing **capacity self-test** shipped *with the engine*. It runs the
|
|
3573
|
+
same style of measurement we do for throughput testing, but as a first-class, on-demand command an adopter
|
|
3574
|
+
points at **their own** setup (this box, this store backend, this config) to get back an **estimate of how
|
|
3575
|
+
much traffic that setup can sustain**.
|
|
3576
|
+
|
|
3577
|
+
**What:** a `messagefoundry` subcommand (e.g. `messagefoundry capacity` / `setup-test`) that drives a
|
|
3578
|
+
controlled synthetic load through the real engine and reports an **estimated sustainable throughput** — a
|
|
3579
|
+
headline **msg/s** and **msg/day** figure, ideally **per-inbound-interface** *and* engine-wide, plus the
|
|
3580
|
+
**limiting factor** (commit-bound / pool-saturated / CPU / disk) and a confidence caveat. It ramps to the
|
|
3581
|
+
saturation knee (where `in_pipeline`/`backlog_seconds` start rising faster than drain — the #93 signal) and
|
|
3582
|
+
reports the last rate that drained cleanly with no loss, rather than a raw peak. Reuses the **BUILT load
|
|
3583
|
+
harness** measurement machinery ([`harness/load/`](../harness/load/), [`docs/LOAD-TESTING.md`](LOAD-TESTING.md))
|
|
3584
|
+
— the rate governor, the fast correlation sink (true end-to-end latency), the drain gauge (`in_pipeline`), and
|
|
3585
|
+
the no-loss reconciliation — packaged as a supported engine capability rather than a dev-only tool.
|
|
3586
|
+
|
|
3587
|
+
**Distinct from what already exists (don't duplicate):**
|
|
3588
|
+
- **#28 / #29 (DONE)** are the *developer/benchmark* runs of the harness against a synthetic high-fan-out
|
|
3589
|
+
system-under-test, producing the **project** [`benchmarks/TUNING-BASELINE.md`](benchmarks/TUNING-BASELINE.md)
|
|
3590
|
+
baseline. This item is the *adopter-run* inverse: point it at **the real deployed config on the real box** and
|
|
3591
|
+
get a sizing number for *that* deployment — not a project baseline, and not something that needs the harness's
|
|
3592
|
+
synthetic SUT config or the denylist-guarded estate profiles.
|
|
3593
|
+
- **#93 (P2)** is the *passive, runtime* counterpart — it watches real traffic and **warns** when live load is
|
|
3594
|
+
approaching capacity. This item is the *active, pre-cutover* counterpart — it **measures** where that capacity
|
|
3595
|
+
is in the first place, so #93's overload threshold can be calibrated against it. They pair.
|
|
3596
|
+
- **#40** is the enterprise-hardware CI leg; this tester is what an adopter would run **on their own hardware**
|
|
3597
|
+
to reproduce a sizing number without CI access.
|
|
3598
|
+
|
|
3599
|
+
**Design constraints (for the eventual ADR):**
|
|
3600
|
+
- **Must not pollute production.** A capacity run generates real store writes and would otherwise inflate the
|
|
3601
|
+
true inbound counts (the count-and-log invariant persists *every* received message). It must run against an
|
|
3602
|
+
**isolated/ephemeral store** (temp DB) or a clearly-marked test namespace, and never leave synthetic rows in,
|
|
3603
|
+
or skew the metrics of, the live message store.
|
|
3604
|
+
- **Synthetic payloads only — never real PHI.** Drive it from the conformant generators
|
|
3605
|
+
([`generators/`](../messagefoundry/generators/)) / the anon framework (ADR 0030), consistent with the
|
|
3606
|
+
dryrun/generate PHI rule (never against real PHI, never redirected to a committed file/CI log).
|
|
3607
|
+
- **Respect the per-interface bound.** Report capacity **per inbound interface** and note that a single strictly-
|
|
3608
|
+
ordered feed is core-bound (owner principle: fan out feeds at source, not infinite single-feed speed) — an
|
|
3609
|
+
engine-wide total is the sum across interfaces, not a single-feed number. Sequence-keyed lanes (#3) are the
|
|
3610
|
+
sanctioned single-feed escape hatch when one feed outgrows a core.
|
|
3611
|
+
- **Name the limiting factor**, reusing the #93/#64 signals (commit/write latency, `[store].pool_size`
|
|
3612
|
+
busy/wait, CPU/mem via #74, `in_pipeline` growth) so the output is *"~N msg/s, commit-bound"* rather than a
|
|
3613
|
+
bare number — the sizing memos already conclude the pipeline is serial-per-inbound commit-bound, not
|
|
3614
|
+
disk/CPU/pool-bound on the tested boxes.
|
|
3615
|
+
|
|
3616
|
+
**Why P2 / on-trigger.** Turns capacity sizing — today a manual "run the dev harness + read TUNING-BASELINE by
|
|
3617
|
+
hand" exercise — into a **supported operation** an adopter can self-serve before a cutover (*"will this box carry
|
|
3618
|
+
our ~1.6M ADT/day?"*). The measurement machinery already exists; the net-new is the operator-facing command, the
|
|
3619
|
+
isolated-store harness, the ramp-to-knee estimator, and the capacity report. **Trigger:** a pilot/adopter needing
|
|
3620
|
+
a self-service pre-cutover capacity check on their own hardware (the ADR 0017 consumer-deployment pattern), or the
|
|
3621
|
+
#93 overload-alert threshold needing a per-deployment capacity baseline to calibrate against. Relates to
|
|
3622
|
+
**#28**/**#29** (the harness it wraps), **#40** (enterprise-box runs), **#64** (the throughput-performance
|
|
3623
|
+
roadmap), **#93** (the runtime overload-alert counterpart), and the recorded sizing work (throughput matrix /
|
|
3624
|
+
per-interface bound / commit-bottleneck analyses).
|
|
3625
|
+
|
|
3626
|
+
**Source:** owner request (2026-06-30) — "add a setup tester to the engine … do tests like we're doing for
|
|
3627
|
+
throughput testing and report back an estimate of how much traffic the setup can handle."
|
|
3628
|
+
|
|
3629
|
+
---
|
|
3630
|
+
|
|
3631
|
+
## 97. Keep-alive / persistent outbound connections — per-connector setting (P3, on-trigger)
|
|
3632
|
+
|
|
3633
|
+
> **On-trigger / demand-gate.** Numbered for tracking only — build when the trigger below fires (“demand-gate, don’t schedule”). Promotes the keep-alive sub-scope of [#82](#82-sender-transport-polish-bundle--pacing--msa-2msh-10-matching--tcp-keep-alive) into its own tracked item at the owner's request.
|
|
3634
|
+
|
|
3635
|
+
**Type:** feature — a per-outbound-connection option to **hold the TCP link open across deliveries** (keep-alive / persistent) instead of the current connect-per-message behavior.
|
|
3636
|
+
|
|
3637
|
+
**What:** an opt-in **per-connector setting** (e.g. `keepalive = true` / a `connection_mode = "persistent" | "on_demand"` knob in the outbound's `settings`, default `on_demand` so existing configs stay byte-identical) on the MLLP / raw-TCP / X12 outbound connectors. When enabled, the delivery worker reuses one open connection (reconnecting on drop/idle), rather than opening + closing a fresh socket every message as it does today. Wants: a bounded idle-close / max-lifetime, reconnect-with-backoff on a dropped link, and clean teardown on `stop()`/reload — all per-connection, with the setting validated at build (dry-run / `check`), consistent with the other outbound knobs.
|
|
3638
|
+
|
|
3639
|
+
**Why:** confirmed gap — every TCP-family outbound opens a **fresh connection per delivery** today and there is no toggle: `MLLPDestination` ([`transports/mllp.py`](../messagefoundry/transports/mllp.py), *"Phase 1 opens a fresh connection per delivery … a persistent/pooled connection can come later"*) and `TcpDestination` ([`transports/tcp.py`](../messagefoundry/transports/tcp.py), *"Opens a fresh connection per delivery … pooling can come later"*); listed as an unbuilt MLLP feature gap in [`CONNECTIONS.md`](CONNECTIONS.md) ("keep-connection-open/pooling"). Inbound listeners are already persistent (peer-driven, idle-bounded by `receive_timeout`) — this closes the outbound half. The connect-per-message default is simple and robust to flaky peers, so this is genuinely additive and stays **off by default**; the at-least-once / idempotent-receiver contract is unchanged (a reused link that drops mid-ACK still retries, same as today). **Trigger:** a partner that needs a held-open link (a persistent-session receiver, or a high-rate feed where per-message connect setup is measurable overhead). Relates to **#82** (the sender-polish bundle this splits from — pacing + MSA-2↔MSH-10 matching stay there), **#46** (connection lifecycle events would gain reconnect/retry signals), and **#65** (outbound-connector option surface).
|
|
3640
|
+
|
|
3641
|
+
**Source:** owner request (2026-06-30) — "add keepalive feature for outbound connections, controlled by a setting per outbound connector."
|
|
3642
|
+
|
|
3643
|
+
---
|
|
3644
|
+
|
|
3562
3645
|
*Everything else from the 2026-06-10 full-codebase review (1 critical, 13 high, 33 medium, 31 low —
|
|
3563
3646
|
78 findings) has been remediated; see the review report's §6 action order. The two items it still
|
|
3564
3647
|
sourced — **#1 (SQL Server concurrency)** and **#2 (console off-thread)** — are now both **DONE**
|
|
@@ -77,7 +77,7 @@ is verified against [`config/settings.py`](../messagefoundry/config/settings.py)
|
|
|
77
77
|
| `MEFOR_STORE_DATABASE` | `[store].database` | `messagefoundry` | the database name |
|
|
78
78
|
| `MEFOR_STORE_USERNAME` | `[store].username` | `mefor` | the login |
|
|
79
79
|
| `MEFOR_STORE_PASSWORD` | `[store].password` | *(secret)* | **env/secret only** — never the config file |
|
|
80
|
-
| `MEFOR_STORE_POOL_SIZE` | `[store].pool_size` | `
|
|
80
|
+
| `MEFOR_STORE_POOL_SIZE` | `[store].pool_size` | `40` | default 40, the inverted-U optimum — don't set higher ([ADR 0062](adr/0062-default-store-pool-size.md)); `>= 2` under `[cluster]`. **Budget:** `engines × pool_size` hit one managed-PG `max_connections` (~2 engines at 40/100) — raise it, add a pooler, or size down; never split the store ([DEPLOY-SERVER-DB.md](DEPLOY-SERVER-DB.md) §3) |
|
|
81
81
|
| `MEFOR_CLUSTER_ENABLED` | `[cluster].enabled` | `true` | turns on the leader lease + graph gating |
|
|
82
82
|
| `MEFOR_STORE_REQUIRE_ENCRYPTION` | `[store].require_encryption` | `true` | fail-closed: refuse to start keyless (PHI at rest) |
|
|
83
83
|
| `MEFOR_STORE_ENCRYPTION_KEY` | `[store].encryption_key` | *(secret)* | base64 32 bytes — `messagefoundry gen-key` |
|
|
@@ -66,11 +66,11 @@ backend that consumes the server-DB keys lands incrementally (the settings + val
|
|
|
66
66
|
| `username` | str | — | server DBs (required when `auth = sql`) |
|
|
67
67
|
| `password` | secret | — | **env only** (`MEFOR_STORE_PASSWORD`) |
|
|
68
68
|
| `encrypt`, `trust_server_certificate` | bool | `true`/`false` | TLS to the DB |
|
|
69
|
-
| `pool_size` | int |
|
|
69
|
+
| `pool_size` | int | 40 | server DBs — **server-DB only** (no-op on SQLite). The inverted-U optimum (raised from 5; do **not** set higher — over-provisioning is catastrophic, [ADR 0062](adr/0062-default-store-pool-size.md)). **Per engine:** `engines × pool_size` share one `max_connections` — see [`DEPLOY-SERVER-DB.md`](DEPLOY-SERVER-DB.md) §3 |
|
|
70
70
|
| `connect_timeout`, `command_timeout` | int (s) | 15 / 30 | server DBs |
|
|
71
71
|
| `warm_pool` | bool | `true` | server DBs — pre-open pooled connections in the background on graph start/promotion so a connection burst (the post-promotion delivery workers, or a cold start) finds them warm instead of paying cold connects (TCP+TLS+login). Best-effort, self-releasing, **no-op on SQLite**. On by default (it touches no commit/correctness seam); set `false` to opt out on a connection-constrained/licensed site. |
|
|
72
72
|
| `warm_pool_timeout` | num (s) | 15 | server DBs — upper bound on the background warm-up; on expiry it logs and continues with a partially warm pool. Must be `> 0`. A **clustered** server-DB node also rejects an **explicit** value `>= [cluster].leader_fence_timeout_seconds` (a warm should finish within the leadership term that started it); the default (15 < the 20 fence) never trips this. |
|
|
73
|
-
| `warm_pool_target` | int | — | server DBs — how many connections to pre-open. Unset (default) = a safe fraction of the pool (`min(pool_size-1, pool_size//2)`), so the warm never pins more than half the pool; an explicit value is clamped to `pool_size-1`. A pool of 1 is never warmed. |
|
|
73
|
+
| `warm_pool_target` | int | — | server DBs — how many connections to pre-open. Unset (default) = a safe fraction of the pool (`min(pool_size-1, pool_size//2)`), so the warm never pins more than half the pool; an explicit value is clamped to `pool_size-1`. A pool of 1 is never warmed. At the default `pool_size = 40` this is `min(39, 20) = 20` pre-opened per server-DB engine at startup. |
|
|
74
74
|
| `db_schema`, `application_name` | str | — / `messagefoundry` | optional (`db_schema` ⇒ env `MEFOR_STORE_DB_SCHEMA`) |
|
|
75
75
|
|
|
76
76
|
> Selecting `backend = "sqlserver"` validates that `server`/`database` (and `username` when
|
|
@@ -60,12 +60,44 @@ Configure `[store]` in the service settings (full reference: [`CONFIGURATION.md`
|
|
|
60
60
|
|
|
61
61
|
## 3. Pool sizing
|
|
62
62
|
|
|
63
|
+
The default `[store].pool_size` is **40** (server-DB only; a no-op on the SQLite default, which uses a fixed
|
|
64
|
+
read pool + single writer). Raised from 5 in [ADR 0062](adr/0062-default-store-pool-size.md): the
|
|
65
|
+
connection-scale study found the pool is an **inverted-U** — it helps up to ~40 per engine, and
|
|
66
|
+
**over-provisioning is catastrophic** (past ~40 the extra connections thrash one shared instance — WRITELOG +
|
|
67
|
+
finalizer applocks — and ACK latency explodes 30–90×). 40 is the measured **optimum**, not a floor: **do not
|
|
68
|
+
set it higher to chase connection count** (that path is refuted — scale is *sharding*, not a bigger pool).
|
|
69
|
+
Tunable via `[store].pool_size` / `MEFOR_STORE_POOL_SIZE`; re-measure for a materially different deployment
|
|
70
|
+
shape (transform cost, message size, disk, SQL-box sizing).
|
|
71
|
+
|
|
63
72
|
- **Single node:** `[store].pool_size ≥ 3` recommended. Each stage handoff is a committed round-trip and
|
|
64
73
|
the per-stage workers (router, transform, per-outbound delivery) run concurrently against the pool — a
|
|
65
74
|
pool of 1 serializes them against intake.
|
|
66
75
|
- **Clustered (active-passive):** `pool_size ≥ 2` is **required** (a cross-section validator refuses a
|
|
67
76
|
smaller pool when `[cluster].enabled`), `≥ 3` recommended — a clustered node also drives the
|
|
68
77
|
membership / lease-renewal maintenance loop against the pool.
|
|
78
|
+
- **Connection-budget ceiling (important on a shared server DB):** `pool_size` is **per engine**. Every
|
|
79
|
+
Postgres/SQL Server engine that shares the store — multi-process shards (all connect to the *same*
|
|
80
|
+
database) and the active-passive standby's warm pool — counts against one server limit. So budget
|
|
81
|
+
**peak connections ≈ engines × `pool_size`** (+ the standby's `warm_pool_target`) and keep it well under
|
|
82
|
+
the DB server's `max_connections` (**Postgres default ~100**; SQL Server is bounded by sessions/memory).
|
|
83
|
+
At the default `pool_size = 40`, ~2 co-located engines already reach ~100 — **a config that connected at
|
|
84
|
+
5 can fail to connect at 40.** Co-locating several server-DB engines (a sharded fan-out)? **Raise
|
|
85
|
+
`max_connections`, front the DB with a connection pooler (PgBouncer), or use SQL Server** (more sessions);
|
|
86
|
+
or size `pool_size` **down**. **Do NOT give each shard its own database/server** — that is a split store,
|
|
87
|
+
which is disallowed ([ADR 0063](adr/0063-no-split-store-unified-store-for-sharding.md)); one unified store
|
|
88
|
+
scales *vertically* (faster box/disk) + *cheaper-per-message*, never by fragmenting. Also budget the startup
|
|
89
|
+
warm burst (~20 pre-opened/engine at the default; set `warm_pool_target` or `warm_pool = false` on a
|
|
90
|
+
connection-/license-constrained site).
|
|
91
|
+
- **Commit-depth at high interface counts (`fifo_claim_batch`):** the pool is not the only per-engine wall —
|
|
92
|
+
above ~48 inbound interfaces an engine becomes bound by *commits per message* on the shared store (WRITELOG
|
|
93
|
+
+ the per-message finalizer applock), which a bigger pool **cannot** fix. For a **high-interface-count,
|
|
94
|
+
commit-bound** server-DB engine, set **`[store].fifo_claim_batch = 8`** (range 8–16, [ADR 0058](adr/0058-batch-claim-fifo-prefix.md)):
|
|
95
|
+
the INGRESS/ROUTED FIFO claim then takes the contiguous due head-prefix in one commit instead of one-per-row,
|
|
96
|
+
amortizing the claim commit toward `1/N` on backlogged lanes. It **preserves strict per-lane FIFO (#285) +
|
|
97
|
+
at-least-once**, is **byte-identical at `1` (the default)** and on caught-up (low-backlog) lanes, and never
|
|
98
|
+
batches the outbound/delivery claim. Size it against worst-case message size (N decrypted bodies are resident
|
|
99
|
+
per lane between the claim and its N handoffs). This — not the pool — is the *raise-interfaces-per-engine*
|
|
100
|
+
lever.
|
|
69
101
|
|
|
70
102
|
---
|
|
71
103
|
|
|
@@ -173,7 +205,8 @@ update the pin in lockstep — pin the **CA**, not the leaf, to keep rotations m
|
|
|
173
205
|
- [ ] `[store].encrypt = true` (and **not** `MEFOR_ALLOW_INSECURE_TLS`) for any PHI deployment.
|
|
174
206
|
- [ ] DB CA trusted so `trust_server_certificate = false` validates — Postgres `ssl_root_cert` **or**
|
|
175
207
|
machine-store import; SQL Server **machine store only** (§5). Never `TrustServerCertificate=true`.
|
|
176
|
-
- [ ] `[store].pool_size
|
|
208
|
+
- [ ] `[store].pool_size` sized (default **40**, server-DB only; ≥ 2 hard-required in cluster mode) **and**
|
|
209
|
+
the connection budget checked: engines × `pool_size` (+ standby warm) well under the DB `max_connections` (§3).
|
|
177
210
|
- [ ] Bootstrap login can create the schema on first open, **or** the schema is pre-created.
|
|
178
211
|
- [ ] SQL Server: RCSI enabled (auto, or pre-enabled by a DBA).
|
|
179
212
|
- [ ] Source store drained (`in_pipeline → 0`) before cutover — greenfield, no in-place migration.
|
|
@@ -422,7 +422,7 @@ The built-in HA model is **active-passive failover** (the Corepoint/Rhapsody mod
|
|
|
422
422
|
backend = "postgres" # or "sqlserver"; SQLite cannot cluster
|
|
423
423
|
server = "db.internal"
|
|
424
424
|
database = "messagefoundry"
|
|
425
|
-
pool_size =
|
|
425
|
+
pool_size = 40 # default (ADR 0062); >= 2 (>= 3 preferred)
|
|
426
426
|
|
|
427
427
|
[cluster]
|
|
428
428
|
enabled = true
|