messagefoundry 0.2.11__tar.gz → 0.2.12__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.11 → messagefoundry-0.2.12}/.github/workflows/ci.yml +74 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/.github/workflows/release.yml +5 -1
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/.gitignore +4 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/CHANGELOG.md +57 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/PKG-INFO +1 -1
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/BACKLOG.md +235 -0
- messagefoundry-0.2.12/docs/BRAND.md +103 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/CLUSTERING.md +7 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/CONFIGURATION.md +2 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0001-staged-pipeline-architecture.md +6 -1
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0055-group-commit-durable-write.md +8 -0
- messagefoundry-0.2.12/docs/adr/0056-engine-managed-vip-failover.md +643 -0
- messagefoundry-0.2.12/docs/adr/0057-inline-step-a-fast-path.md +184 -0
- messagefoundry-0.2.12/docs/adr/0058-batch-claim-fifo-prefix.md +251 -0
- messagefoundry-0.2.12/docs/adr/0059-seq-only-fifo-ordering.md +55 -0
- messagefoundry-0.2.12/docs/adr/0060-rename-based-fifo-index-migration.md +78 -0
- messagefoundry-0.2.12/docs/adr/0061-per-lane-wake-events.md +106 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/benchmarks/step-b-write-amplification.md +16 -2
- messagefoundry-0.2.12/docs/throughput-build-plan.md +102 -0
- messagefoundry-0.2.12/docs/throughput-roadmap.md +361 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/__main__.py +76 -2
- messagefoundry-0.2.12/harness/config/connscale/__init__.py +4 -0
- messagefoundry-0.2.12/harness/config/connscale/_shape.py +111 -0
- messagefoundry-0.2.12/harness/config/connscale/gen_toml.py +106 -0
- messagefoundry-0.2.12/harness/config/connscale/graph.py +91 -0
- messagefoundry-0.2.12/harness/load/connscale/__init__.py +14 -0
- messagefoundry-0.2.12/harness/load/connscale/driver.py +135 -0
- messagefoundry-0.2.12/harness/load/connscale/probe.py +113 -0
- messagefoundry-0.2.12/harness/load/connscale/profile.py +364 -0
- messagefoundry-0.2.12/harness/load/connscale/report.py +300 -0
- messagefoundry-0.2.12/harness/load/connscale/runner.py +622 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/load/enginepoll.py +99 -3
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/load/failover.py +6 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/load/profile.py +5 -1
- messagefoundry-0.2.12/harness/load/profiles/connscale-smoke.toml +31 -0
- messagefoundry-0.2.12/harness/load/profiles/connscale.toml +35 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/load/report.py +10 -2
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/__init__.py +1 -1
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/__main__.py +1 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/api/app.py +62 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/api/models.py +52 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/config/ingest_time.py +8 -1
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/config/settings.py +35 -2
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/config/wiring.py +9 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/console/status.py +12 -1
- messagefoundry-0.2.12/messagefoundry/pipeline/connscale_shim.py +115 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/pipeline/engine.py +12 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/pipeline/wiring_runner.py +577 -241
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/store/base.py +56 -2
- messagefoundry-0.2.12/messagefoundry/store/pool_metrics.py +145 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/store/postgres.py +255 -95
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/store/sqlserver.py +240 -52
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/store/store.py +177 -73
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/support/bundle.py +1 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/scripts/worktree/new.ps1 +4 -4
- messagefoundry-0.2.12/tests/test_batch_claim_fifo.py +371 -0
- messagefoundry-0.2.12/tests/test_batch_claim_locking.py +208 -0
- messagefoundry-0.2.12/tests/test_batch_claim_worker.py +154 -0
- messagefoundry-0.2.12/tests/test_connscale_config.py +85 -0
- messagefoundry-0.2.12/tests/test_connscale_driver.py +105 -0
- messagefoundry-0.2.12/tests/test_connscale_postgres.py +110 -0
- messagefoundry-0.2.12/tests/test_connscale_profile.py +107 -0
- messagefoundry-0.2.12/tests/test_connscale_report.py +150 -0
- messagefoundry-0.2.12/tests/test_connscale_smoke.py +143 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_enginepoll_aggregate.py +2 -0
- messagefoundry-0.2.12/tests/test_fifo_index_migration.py +426 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_fifo_ordering.py +2 -1
- messagefoundry-0.2.12/tests/test_inline_fast_path.py +525 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_load_config.py +7 -3
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_load_report.py +17 -3
- messagefoundry-0.2.12/tests/test_per_lane_wake.py +322 -0
- messagefoundry-0.2.12/tests/test_seq_only_fifo.py +463 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_sqlserver_cursor_close.py +5 -1
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_sqlserver_schema_init.py +44 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_staged_pipeline.py +21 -21
- messagefoundry-0.2.12/tests/test_synchronous_baseline.py +190 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/.claude/settings.json +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/.dockerignore +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/.gitattributes +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/.github/CODEOWNERS +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/.github/SECURITY.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/.github/dependabot.yml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/.github/workflows/benchmark.yml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/.github/workflows/cla.yml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/.github/workflows/codeql.yml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/.github/workflows/dependabot-auto-merge.yml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/.github/workflows/dependabot-lock-resync.yml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/.github/workflows/freethread-smoke.yml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/.github/workflows/manifest-lint.yml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/.github/workflows/release-sync-check.yml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/.github/workflows/scorecard.yml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/.github/workflows/security.yml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/.github/workflows/selfhosted-win2025-sql.yml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/.github/workflows/vuln-metrics.yml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/.github/zizmor.yml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/.gitleaks.toml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/.mefor-hooks/pre-commit +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/.pre-commit-config.yaml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/.semgrep/messagefoundry.yml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/CLA.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/CLAUDE.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/CODE_OF_CONDUCT.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/COMMERCIAL-LICENSE.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/CONTRIBUTING.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/GOVERNANCE.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/LICENSE +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/MAINTAINERS.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/NOTICE +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/README.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docker/Dockerfile +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docker/README.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docker/compose.yaml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docker/k8s/ha-postgres.yaml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docker/k8s/secret.example.yaml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docker/k8s/statefulset.yaml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docker/locks/requirements-core.lock +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docker/locks/requirements-sqlserver.lock +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docker/secrets.env.example +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docker/smoke/Dockerfile +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docker/smoke/config/IB_Test_ADT.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docker/smoke/send_adt.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/ADOPTER-CI.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/AI.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/ANTIVIRUS-FIREWALL.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/ARCHITECTURE.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/CI-QUALITY.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/CLOUD-DEPLOYMENT.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/CLOUD-PHI-HIPAA.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/CODESETS.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/CONNECTIONS.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/CONTAINER-EXPOSURE-EVALUATION.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/CONTRIBUTOR-FIRST-ISSUES.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/CONTRIBUTOR-PROGRAM-PLAN.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/COUNSEL-ENGAGEMENT-BRIEF.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/DEPLOY-SERVER-DB.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/DEPLOYMENT.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/DICOM.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/DUAL_LICENSING_PLAN.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/EARLY-ADOPTER-GUIDE.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/FEATURE-MAP.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/HL7-VALIDATION.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/INSTALL-GUIDE.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/LOAD-TESTING.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/MENTAL-MODEL.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/MessageFoundry-Mental-Model.docx +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/PHI.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/POSITIONING.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/REMOTE-CONSOLE-CUSTOMER-GUIDE.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/REMOTE-CONSOLE.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/SECURITY-REMEDIATION-LEDGER.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/SECURITY.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/SERVICE.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/SUPPORT-POLICY.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/SYSTEM-REQUIREMENTS.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/Secure_AI_Development_Standards.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/Secure_Development_Standards.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/TEE-RELAY.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/THROUGHPUT-IMPROVEMENTS.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/USER-GUIDE.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/WORKTREES.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0002-phase2-transport-security-and-strong-auth.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0003-non-hl7-transports-database-rest-soap.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0004-payload-agnostic-ingress.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0005-transform-accessible-state.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0006-external-data-lookups.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0007-gui-manageable-connections-toml.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0008-cluster-observability-api.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0009-run-scoped-context-providers.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0010-handler-callable-db-lookup.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0011-timer-scheduled-source.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0012-x12-edi-codec.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0013-increment-2-reingress-design.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0013-query-response-orchestration.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0014-alerting-rules-engine.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0015-ws-soap-outbound-mtls-wssecurity.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0016-synchronous-x12-request-response.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0017-consumer-deployment-model.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0018-per-message-signatures-accepted-risk.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0019-pluggable-keyprovider-hsm-kms-vault.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0020-protocol-diagnostic-capture.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0021-inbound-ack-nak-capture-response-sent.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0022-fhir-resource-codec-rest-client.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0023-inbound-http-listener.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0024-smart-backend-services-token-provider.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0025-dicom-codec-store-connectors.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0026-off-box-egress-update-check.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0027-per-connection-retention.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0028-base64-binary-carriage-codec.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0029-email-smtp-destination.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0030-anonymization-test-harness-tee.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0031-startup-connection-fault-isolation.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0032-console-desktop-launch.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0033-gui-manageable-code-sets.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0034-static-analysis-triage-policy-accepted-risk-register.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0035-ide-extension-workspace-trust-and-scope.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0036-windows-config-source-trust.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0037-multi-process-sharding-l3.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0038-internal-pass-through-connector.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0039-database-tier-sharding-l5.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0040-free-threaded-engine-support.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0041-load-path-attestation-and-change-attribution.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0042-embedded-document-pruning.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0043-fhir-read-lookup.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0044-operator-alert-state.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0045-custom-rbac-roles.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0046-message-content-search.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0047-cloud-kubernetes-ha-deployment-packaging.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0048-third-tier-disaster-recovery-standby.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0049-turnkey-dr-backup-restore-verify.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0050-single-project-root-config-anchoring.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0051-corepoint-throughput-parity-strategy.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0052-enterprise-scale-target.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0053-free-threaded-multicore-engine.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0054-low-allocation-builtins-hl7-parser.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/README.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/TEMPLATE.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/architecture-components.png +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/architecture-components.svg +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/architecture-config-graph.png +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/architecture-config-graph.svg +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/architecture-diagram.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/architecture-message-flow.png +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/architecture-message-flow.svg +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/architecture-topology.png +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/architecture-topology.svg +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/benchmarks/TUNING-BASELINE.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/benchmarks/results/2026-06-16-ci-linux/environment.txt +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/benchmarks/results/2026-06-16-ci-linux/failover-postgres.json +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/benchmarks/results/2026-06-16-ci-linux/failover-sqlserver.json +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/benchmarks/results/2026-06-16-ci-linux/reference-postgres.json +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/benchmarks/results/2026-06-16-ci-linux/reference-sqlite.json +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/benchmarks/results/2026-06-16-ci-linux/reference-sqlserver.json +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/design/dbshard.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/design/freethread-spike.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/design/freethread.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/design/multiproc.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/hl7-message-ordering-reference.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/message-ordering-design.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/releases/ASVS-OPTION-A-MULTISESSION-PLAN.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/releases/ASVS-PARTIALS-SWEEP-MULTISESSION-PLAN.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/releases/DOGFOOD-BACKLOG-MULTISESSION-PLAN.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/releases/MULTISESSION-PLAN-3.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/releases/MULTISESSION-PLAN-4.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/releases/MULTISESSION-PLAN-5.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/releases/MULTISESSION-PLAN-6.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/releases/MULTISESSION-PLAN-v0.2.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/releases/MULTISESSION-PLAN.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/releases/PLAN-3-LANE-HANDOFFS.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/releases/V0.2-LANE-HANDOFFS.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/releases/v0.1-EXECUTION-PLAN.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/releases/v0.1-PLAN.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/releases/v0.1.0-PRETAG-CHECKLIST.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/research/cloud-deployment-research-2026-06.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/research/config-ux-review.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/research/non-hl7-transform-components.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/reviews/DEPENDENCY-INFOSEC-POSTURE-2026-06-23.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/reviews/FULL-REVIEW-2026-06-10.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/security/ADVISORY-PROCESS.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/security/ASVS-FAILS-REMEDIATION-PLAN.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/security/ASVS-L2-PHASE0-CHANGES.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/security/ASVS-L2-REMEDIATION-PLAN.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/security/ASVS-L3-ASSESSMENT.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/security/ASVS-L3-REMEDIATION-PLAN.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/security/ASVS-L3-STATUS.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/security/BEYOND-ASVS-L3-ONEPAGE.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/security/BEYOND-ASVS-L3-REMEDIATION-PLAN-ONEPAGE.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/security/BEYOND-ASVS-L3-REMEDIATION-PLAN.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/security/BEYOND-ASVS-L3.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/security/DEP-CVE-RUNBOOK.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/security/DEPENDENCY-METRICS.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/security/MEFOR-Code-Review-Checklist.xlsx +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/security/PHASE-8C-RBAC.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/security/PUBLISHING.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/security/RCA-TEMPLATE.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/security/RELEASE-GATE.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/security/REMEDIATION-PLAN.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/security/REVIEW-2026-06-07.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/security/SDS-CONFORMANCE-REVIEW-2026-06-12.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/security/SDS-REMEDIATION-PLAN.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/security/SECURITY-POSTURE.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/security/SOUP-DEPENDENCY-HANDLING.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/security/SOUP-REVIEW-2026-06-18.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/security/SOUP-REVIEW-PROCEDURE.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/security/THREAT-MODEL.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/testing/VERIFY.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/testing/WIN2025-ACCEPTANCE.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/testing/WIN2025-TEST-MATRIX.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/testing/WIN2025-TEST-PLAN.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/environments/dev.toml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/environments/prod.toml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/README.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/acceptance/__init__.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/acceptance/__main__.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/acceptance/matrix.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/acceptance/probes.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/acceptance/report.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/acceptance/runner.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/compose.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/config/coverage.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/config/load/_shape.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/config/load/graph.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/config/passthrough/graph.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/config/store_once/graph.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/file_panel.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/file_transport.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/load/__init__.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/load/corpus.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/load/correlator.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/load/failover_track.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/load/governor.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/load/ids.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/load/metrics.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/load/profiles/README.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/load/profiles/adt-fanout-stress.toml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/load/profiles/closed-loop.toml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/load/profiles/failover.toml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/load/profiles/fanout-baseline.toml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/load/profiles/malformed-load.toml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/load/profiles/reference.toml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/load/profiles/smoke-sqlserver.toml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/load/profiles/smoke.toml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/load/profiles/soak.toml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/load/profiles/spike-burst.toml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/load/profiles/sustained-overload.toml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/load/profiles/writeamp.toml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/load/runner.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/load/sender.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/load/sink.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/mllp.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/monitor.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/receive.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/reconcile/__init__.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/reconcile/__main__.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/reconcile/capture.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/reconcile/compare.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/reconcile/normalize.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/reconcile/report.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/scenarios.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/send.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/harness/window.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/.gitignore +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/.vscodeignore +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/README.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/esbuild.js +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/media/hl7schema.json +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/media/icon-amber.svg +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/media/icon.png +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/media/icon.svg +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/package-lock.json +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/package.json +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/snippets/messagefoundry.code-snippets +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/aiPolicy.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/alertEditor.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/auth.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/chat.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/cli.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/codeSetEditor.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/codesetsTree.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/completion.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/connectionEditor.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/editorToolbar.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/engineClient.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/engineTarget.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/extension.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/generate.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/git.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/graphTree.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/home.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/insertElement.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/newRoute.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/promote.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/promoteTarget.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/sourceControl.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/test/runTest.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/test/suite/ai-policy.test.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/test/suite/chat.test.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/test/suite/editor-toolbar.test.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/test/suite/engine-target.test.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/test/suite/extension.test.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/test/suite/index.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/test/suite/insert-element.test.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/test/suite/promote-target.test.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/test/suite/pythonpath.test.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/test/suite/settings-scope.test.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/testBench.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/src/validate.ts +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/tsconfig.json +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/ide/tsconfig.test.json +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/mefor.code-workspace +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/adr_analyze.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/anon/__init__.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/anon/_pools.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/anon/hl7.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/anon/keying.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/anon/leak.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/anon/rules.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/anon/surrogates.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/api/__init__.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/api/approvals.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/api/auth_models.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/api/auth_routes.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/api/field_authz.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/api/metrics.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/api/security.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/api/tls.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/auth/__init__.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/auth/data/common_passwords.NOTICE +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/auth/data/common_passwords.txt +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/auth/identity.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/auth/ldap.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/auth/notifications.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/auth/passwords.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/auth/permissions.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/auth/policy.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/auth/ratelimit.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/auth/service.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/auth/tokens.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/auth/totp.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/checks.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/config/__init__.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/config/active_environment.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/config/ai_policy.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/config/alerts_edit.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/config/anchor.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/config/code_sets.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/config/codeset_edit.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/config/connections_edit.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/config/connections_file.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/config/db_lookup.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/config/environments.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/config/fhir_lookup.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/config/fingerprint.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/config/models.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/config/reference.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/config/response.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/config/run_context.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/config/state.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/config/tls_policy.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/console/__init__.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/console/__main__.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/console/_async.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/console/alerts_page.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/console/change_password.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/console/client.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/console/connections.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/console/dead_letters_page.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/console/delegates.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/console/event_log_page.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/console/icons/alerts.svg +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/console/icons/connections.svg +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/console/icons/dead-letters.svg +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/console/icons/engine-status.svg +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/console/icons/log-search.svg +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/console/icons/logo-lockup.svg +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/console/icons/users.svg +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/console/login.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/console/mfa.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/console/reauth.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/console/resources/README.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/console/resources/app.ico +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/console/resources/app.svg +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/console/search.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/console/service_control.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/console/sessions.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/console/shards.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/console/shell.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/console/theme.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/console/users_page.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/console/widgets.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/generators/README.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/generators/__init__.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/generators/_core.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/generators/_hl7data.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/generators/adt.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/generators/all_types.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/generators/bar.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/generators/dft.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/generators/documents.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/generators/mdm.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/generators/mfn.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/generators/oml.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/generators/orl.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/generators/orm.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/generators/oru.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/generators/ras.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/generators/rde.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/generators/siu.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/generators/vxu.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/hl7schema.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/integrity.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/last_resort.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/logging_setup.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/__init__.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/_backend.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/_builtin_hl7.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/binary.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/consistency.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/dicom/__init__.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/dicom/_deps.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/dicom/_util.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/dicom/dataset.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/dicom/errors.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/dicom/hl7_map.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/dicom/peek.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/fhir/__init__.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/fhir/_deps.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/fhir/errors.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/fhir/peek.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/fhir/resource.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/groups.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/message.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/peek.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/split.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/summary.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/tree.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/validate.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/x12/__init__.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/x12/_deps.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/x12/delimiters.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/x12/errors.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/x12/interchange.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/x12/message.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/x12/peek.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/x12/validate.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/xml/__init__.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/xml/_deps.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/xml/errors.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/xml/harden.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/xml/message.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/xml/schema.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/parsing/xml/signature.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/pipeline/__init__.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/pipeline/alert_sinks.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/pipeline/alerts.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/pipeline/cert_expiry.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/pipeline/cluster.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/pipeline/cluster_sqlserver.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/pipeline/config_convergence.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/pipeline/dr.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/pipeline/dr_backup.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/pipeline/dryrun.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/pipeline/leader_tasks.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/pipeline/reference_sync.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/pipeline/retention.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/pipeline/security_notify.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/pipeline/sharding.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/pipeline/state_convergence.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/pipeline/supervisor.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/pipeline/update_check.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/py.typed +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/redaction.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/scaffold.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/secrets_dpapi.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/store/__init__.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/store/audit_tee.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/store/backup_codec.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/store/content_search.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/store/crypto.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/store/document_strip.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/store/keyprovider.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/support/__init__.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/support/redact.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/timezone.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/transports/__init__.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/transports/base.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/transports/database.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/transports/dicom.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/transports/dicomweb.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/transports/email.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/transports/fhir.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/transports/file.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/transports/framing.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/transports/http_listener.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/transports/loopback.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/transports/mllp.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/transports/passthrough.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/transports/remotefile.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/transports/rest.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/transports/signing.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/transports/smart.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/transports/soap.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/transports/tcp.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/transports/timer.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/transports/x12.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/verify/__init__.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/verify/checks.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/verify/model.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/verify/report.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/verify/runner.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/messagefoundry/verify/smoke.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/packaging/console-installer/README.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/packaging/console-installer/THIRD-PARTY-NOTICES.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/packaging/console-installer/THIRD-PARTY-NOTICES.txt +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/packaging/console-installer/console_launcher.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/packaging/console-installer/licenses/GPL-3.0.txt +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/packaging/console-installer/licenses/LGPL-3.0.txt +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/packaging/console-installer/messagefoundry-console.iss +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/packaging/console-installer/messagefoundry-console.spec +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/packaging/messagefoundry-harness/README.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/packaging/messagefoundry-harness/pyproject.toml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/pyproject.toml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/requirements.lock +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/samples/config/IB_ACME_ADT.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/samples/config/IB_FHIR_INTAKE.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/samples/config/IB_IMMUNIZATION_VXU.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/samples/config/IB_PARTNER_X12.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/samples/config/IB_RADIOLOGY_SR.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/samples/config/IB_RTE_ELIGIBILITY.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/samples/config/adt.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/samples/config/codesets/event_labels.csv +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/samples/config/codesets/facility_mnemonics.toml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/samples/config/connections.toml +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/samples/consistency/validated_adt.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/samples/dicom/generate_sr_sample.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/samples/messages/adt_a01.hl7 +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/samples/messages/adt_batch.hl7 +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/samples/messages/hapi-hl7v2/.gitattributes +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/samples/messages/hapi-hl7v2/README.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/samples/messages/hapi-hl7v2/adt_a01.txt +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/samples/messages/hapi-hl7v2/adt_a03.txt +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/samples/messages/hapi-hl7v2/batch_18_messages.txt +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/samples/messages/hapi-hl7v2/erp_z99_v231.hl7 +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/samples/messages/hapi-hl7v2/omd_o03.txt +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/samples/messages/hapi-hl7v2/omd_o03_rep.txt +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/samples/messages/hapi-hl7v2/oml_o21.hl7 +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/samples/messages/x12_270_eligibility.edi +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/samples/results_relay/README.md +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/samples/results_relay/codesets/test_codes.csv +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/samples/results_relay/messages/oru_all_cancelled.hl7 +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/samples/results_relay/messages/oru_results.hl7 +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/samples/results_relay/results_relay.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/samples/send_mllp.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/scripts/console/install-console-shortcut.ps1 +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/scripts/console/pack_ico.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/scripts/console/uninstall-console-shortcut.ps1 +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/scripts/dev/postgres.ps1 +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/scripts/dev/sqlserver-docker.ps1 +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/scripts/dev/sqlserver.ps1 +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/scripts/hooks/block-blanket-git-stage.ps1 +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/scripts/publish/check_release_sync.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/scripts/publish/publish-denylist.txt +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/scripts/publish/publish.ps1 +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/scripts/publish/scan_forbidden.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/scripts/security/crypto_inventory_check.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/scripts/security/vuln_metrics.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/scripts/service/import-db-ca.ps1 +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/scripts/service/install-service.ps1 +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/scripts/service/uninstall-service.ps1 +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/scripts/trace_icon.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/scripts/worktree/remove.ps1 +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/scripts/worktree/session-context.ps1 +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/scripts/worktree/spawn.ps1 +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tee/__init__.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tee/__main__.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tee/anon/__init__.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tee/anon/_hl7data.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tee/anon/_pools.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tee/anon/hl7.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tee/anon/keying.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tee/anon/leak.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tee/anon/rules.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tee/anon/surrogates.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tee/compare.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tee/correlate.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tee/hl7_fields.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tee/mefor_api.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tee/mllp.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tee/relay.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tee/report.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tee/store.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/_dicom_sample.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/_failover_load_support.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/_fhir_fixtures.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/conftest.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_acceptance_framework.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_ack_capture_runner.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_ack_sent_store.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_active_environment.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_ad_group_scope.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_admin_new_ip.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_adr_analyze.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_ai_policy.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_alert_rules.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_alert_sinks.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_alert_state.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_alerts_edit.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_alerts_rules_api.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_anon_core.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_anon_integration.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_anon_parity.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_api.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_api_alerts.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_api_auth.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_api_reload.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_api_tls.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_approvals.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_asvs_phase0.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_audit_integrity.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_audit_offbox_tee.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_auth_core.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_auth_entry_hardening.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_auth_hardening.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_auth_service.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_auth_session_lifecycle.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_auth_store.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_backup_crypto.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_backup_restore_atleastonce.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_backup_runner.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_binary_carriage.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_bootstrap_admin_perms.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_builtin_hl7_parity.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_cert_expiry.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_channel_rbac.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_checks.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_checks_lint.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_cli.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_cli_offline_resolution.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_cluster.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_cluster_failover_postgres.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_cluster_failover_sqlserver.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_cluster_graph_gating.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_cluster_lease.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_code_sets.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_codeset_edit.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_config_anchoring.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_config_fingerprint.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_config_source_trust.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_connection_api.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_connection_event_api.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_connection_event_emit.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_connection_event_outbound.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_connection_event_scope.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_connection_event_store.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_connection_resilience.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_connections_cli.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_connections_file.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_consistency.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_console_alerts.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_console_auth.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_console_client.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_console_dead_letters.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_console_event_log.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_console_hardening.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_console_icon.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_console_password.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_console_sessions.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_console_shards.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_console_status.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_console_step_up.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_console_theme.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_console_users.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_console_widgets.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_content_search.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_custom_roles.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_database_connector_integration.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_database_transport.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_db_lookup.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_db_lookup_live_runner.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_delivery_settings.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_dependabot_automerge_guardrails.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_dependency_boundaries.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_dicom_codec.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_dicom_scp.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_dicom_scp_security.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_dicom_scu.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_dicom_wiring.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_dicomweb.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_docs_runbooks.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_dr_activation.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_dr_api_status.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_dr_failback.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_dr_rbac.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_dr_run_profile.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_dr_seeding.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_dryrun.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_dual_control_reload.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_ed_documents.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_ed_documents_e2e.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_egress_allowlist.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_email_destination.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_embedded_document_pruning.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_environments.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_fhir_lookup.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_fhir_parsing.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_fhir_resource.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_fhir_transport.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_field_authz.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_field_authz_metadata.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_frozen_launch_smoke.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_generate_cli.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_generated_adt.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_generators_core.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_generators_types.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_group_commit.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_groups.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_harness.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_harness_compose.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_harness_config.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_harness_faults.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_harness_file.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_harness_monitor.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_harness_scenarios.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_hl7_core_features.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_hl7schema.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_inbound_bind.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_inbound_http_source.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_ingest_time.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_keyprovider.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_last_admin_guard.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_last_resort.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_leader_tasks.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_license_notice.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_listener_tls_exposure.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_load_corpus.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_load_failover_postgres.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_load_failover_sqlserver.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_load_failover_unit.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_load_metrics.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_load_profile.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_load_runner.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_load_sender.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_load_sink.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_logging.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_message.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_message_split.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_message_timestamps.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_metrics_exporter.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_mfa.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_mllp_encoding_override.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_mllp_tls.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_nonhl7_ingress_size_cap.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_operability_config.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_outbound_signing.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_outbound_simulate.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_packaging.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_parse_tree.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_parsing.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_passthrough.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_passthrough_graph.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_payload_agnostic_ingress.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_per_connection_retention.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_pool_warm.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_postgres_store.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_priority_resolution.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_reconcile_capture.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_reconcile_compare.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_reconcile_harness.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_redaction.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_reference_sets.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_reingress.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_release_console_installer.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_remotefile_transport.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_response_capture.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_rest_transport.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_restore_verify.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_retention.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_run_context.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_scaffold.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_scaffold_requirements.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_scan_forbidden.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_secrets_dpapi.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_security_notify.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_security_static.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_service_control.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_settings.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_sharding.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_sibling_helper_finder.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_smart_backend.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_soap_transport.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_soap_wssecurity.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_sqlserver_coordinator.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_sqlserver_store.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_startup_attestation.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_startup_fault_isolation.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_stats_reset.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_step_up.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_store.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_store_backend.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_store_encryption.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_store_file_hardening.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_store_once_deliver_many.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_store_once_graph.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_store_read_pool.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_store_ssl.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_summary.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_supervisor.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_support_bundle.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_task_resilience.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_tcp_transport.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_tee_cli.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_tee_compare.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_tee_correlate.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_tee_hl7_fields.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_tee_mefor_api.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_tee_mllp.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_tee_relay.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_tee_report.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_tee_store.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_timer_source.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_timezone.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_tls_policy.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_totp.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_totp_window.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_transform_offloop.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_transform_state.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_transports.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_update_check.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_verify.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_version.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_win2025_acceptance.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_wiring.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_wiring_engine.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_wiring_reload.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_wiring_serve.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_ws_stats_revalidation.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_x12_parsing.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_x12_rte.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_x12_source_ip_allowlist.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_x12_transport.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_x12_validate.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_xml_message.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/tests/test_xml_schema_signature.py +0 -0
- {messagefoundry-0.2.11 → messagefoundry-0.2.12}/uv.lock +0 -0
|
@@ -431,6 +431,33 @@ jobs:
|
|
|
431
431
|
MEFOR_ALLOW_INSECURE_TLS: "1"
|
|
432
432
|
run: pytest tests/test_load_failover_sqlserver.py -v
|
|
433
433
|
|
|
434
|
+
- name: Run the throughput-lever backend invariants on real SQL Server (B1 inline, B2 batch-claim, ...)
|
|
435
|
+
env:
|
|
436
|
+
MEFOR_TEST_SQLSERVER: "1"
|
|
437
|
+
MEFOR_STORE_BACKEND: sqlserver
|
|
438
|
+
MEFOR_STORE_SERVER: localhost
|
|
439
|
+
MEFOR_STORE_PORT: "1433"
|
|
440
|
+
MEFOR_STORE_DATABASE: MessageFoundry
|
|
441
|
+
MEFOR_STORE_AUTH: sql
|
|
442
|
+
MEFOR_STORE_USERNAME: sa
|
|
443
|
+
MEFOR_STORE_PASSWORD: "Str0ng_P@ssw0rd!"
|
|
444
|
+
MEFOR_STORE_TRUST_SERVER_CERTIFICATE: "true"
|
|
445
|
+
MEFOR_ALLOW_INSECURE_TLS: "1"
|
|
446
|
+
# The staged-pipeline throughput levers (ADR 0057 inline fast-path, ADR 0058 batch-claim, ...) carry
|
|
447
|
+
# reliability-core invariant tests — crash-replay, poison-bound, and the per-lane-FIFO locked-head-
|
|
448
|
+
# BLOCKS (#285) gate — that are MEFOR_TEST_SQLSERVER-gated but live in their OWN files, so the named
|
|
449
|
+
# suites above never picked them up and they ran only on SQLite. Run them here against the real
|
|
450
|
+
# backend. APPEND each new lever's test file per docs/throughput-build-plan.md.
|
|
451
|
+
run: >-
|
|
452
|
+
pytest -v
|
|
453
|
+
tests/test_inline_fast_path.py
|
|
454
|
+
tests/test_batch_claim_fifo.py
|
|
455
|
+
tests/test_batch_claim_worker.py
|
|
456
|
+
tests/test_batch_claim_locking.py
|
|
457
|
+
tests/test_seq_only_fifo.py
|
|
458
|
+
tests/test_fifo_index_migration.py
|
|
459
|
+
tests/test_per_lane_wake.py
|
|
460
|
+
|
|
434
461
|
# Postgres store backend (Track B): run the gated store suite against a real PostgreSQL service
|
|
435
462
|
# container (Linux, so 1x minutes). Skipped on PRs like the other server-DB job to save spend; runs
|
|
436
463
|
# on push to main and on-demand (workflow_dispatch — use `gh workflow run ci.yml --ref <branch>` to
|
|
@@ -504,6 +531,53 @@ jobs:
|
|
|
504
531
|
MEFOR_ALLOW_INSECURE_TLS: "1"
|
|
505
532
|
run: pytest tests/test_load_failover_postgres.py -v
|
|
506
533
|
|
|
534
|
+
- name: Run the throughput-lever backend invariants on real Postgres (B1 inline, B2 batch-claim, ...)
|
|
535
|
+
env:
|
|
536
|
+
MEFOR_TEST_POSTGRES: "1"
|
|
537
|
+
MEFOR_STORE_BACKEND: postgres
|
|
538
|
+
MEFOR_STORE_SERVER: localhost
|
|
539
|
+
MEFOR_STORE_PORT: "5432"
|
|
540
|
+
MEFOR_STORE_DATABASE: messagefoundry
|
|
541
|
+
MEFOR_STORE_USERNAME: postgres
|
|
542
|
+
MEFOR_STORE_PASSWORD: mefor
|
|
543
|
+
MEFOR_STORE_ENCRYPT: "false"
|
|
544
|
+
MEFOR_ALLOW_INSECURE_TLS: "1"
|
|
545
|
+
# The throughput levers' MEFOR_TEST_POSTGRES-gated invariants (esp. the FOR-UPDATE no-SKIP-LOCKED
|
|
546
|
+
# locked-head-BLOCKS twin of #285, and the batch FIFO/crash tests) live in their own files. APPEND
|
|
547
|
+
# each new lever's test file per docs/throughput-build-plan.md.
|
|
548
|
+
run: >-
|
|
549
|
+
pytest -v
|
|
550
|
+
tests/test_inline_fast_path.py
|
|
551
|
+
tests/test_batch_claim_fifo.py
|
|
552
|
+
tests/test_batch_claim_worker.py
|
|
553
|
+
tests/test_batch_claim_locking.py
|
|
554
|
+
tests/test_seq_only_fifo.py
|
|
555
|
+
tests/test_fifo_index_migration.py
|
|
556
|
+
tests/test_per_lane_wake.py
|
|
557
|
+
|
|
558
|
+
- name: Run the connection-scale pool-wait smoke on real Postgres (B11 wall #2, tiny pool)
|
|
559
|
+
env:
|
|
560
|
+
MEFOR_TEST_POSTGRES: "1"
|
|
561
|
+
MEFOR_STORE_BACKEND: postgres
|
|
562
|
+
MEFOR_STORE_SERVER: localhost
|
|
563
|
+
MEFOR_STORE_PORT: "5432"
|
|
564
|
+
MEFOR_STORE_DATABASE: messagefoundry
|
|
565
|
+
MEFOR_STORE_USERNAME: postgres
|
|
566
|
+
MEFOR_STORE_PASSWORD: mefor
|
|
567
|
+
MEFOR_STORE_ENCRYPT: "false"
|
|
568
|
+
MEFOR_ALLOW_INSECURE_TLS: "1"
|
|
569
|
+
# FORCE a below-default pool (4 connections) so the perf_counter-measured acquire-WAIT
|
|
570
|
+
# histogram (the PRIMARY pool-wait signal) is non-trivial even at small N: ~3N inbound workers
|
|
571
|
+
# contend for 4 connections, so acquires actually queue and the percentiles populate. The
|
|
572
|
+
# default pool (5+) would mask the wall. 4 (not 1-2) is deliberate: GET /status runs
|
|
573
|
+
# db_status()'s four sequential COUNT(*) queries on every poll, and an extremely tiny pool
|
|
574
|
+
# starves those acquires past the poller's HTTP timeout under the empty-claim herd on a slow
|
|
575
|
+
# runner — every poll then fails and the drain loops burn the test budget (the PR #675 hang).
|
|
576
|
+
# This still gives the B11 pool-wait instrumentation real regression coverage SQLite (no pool)
|
|
577
|
+
# cannot — the connscale harness OWNS the engine subprocess and inherits this env.
|
|
578
|
+
MEFOR_STORE_POOL_SIZE: "4"
|
|
579
|
+
run: pytest tests/test_connscale_postgres.py -v
|
|
580
|
+
|
|
507
581
|
# Headless load test (Track B / throughput): serve the synthetic high-fan-out load config (auth
|
|
508
582
|
# off, small fan-out) and drive the smoke profile through the real `python -m harness --load` CLI,
|
|
509
583
|
# asserting zero message loss + all SLOs (exit 0) and uploading the JSON/CSV report. Skipped on PRs
|
|
@@ -347,7 +347,11 @@ jobs:
|
|
|
347
347
|
MEFOR_FROZEN_CONSOLE_DIR: dist/messagefoundry-console
|
|
348
348
|
QT_QPA_PLATFORM: offscreen
|
|
349
349
|
run: |
|
|
350
|
-
|
|
350
|
+
# pytest-timeout is required: the repo's pyproject `addopts` sets `--timeout=60
|
|
351
|
+
# --timeout-method=thread`, so a bare `pip install pytest` aborts the run with
|
|
352
|
+
# "unrecognized arguments: --timeout" before the smoke ever executes (it leaves the per-test
|
|
353
|
+
# watchdog intact instead of stripping addopts).
|
|
354
|
+
pip install pytest pytest-timeout
|
|
351
355
|
python -m pytest tests/test_frozen_launch_smoke.py -v -p no:cacheprovider
|
|
352
356
|
|
|
353
357
|
- name: Install Inno Setup (pinned)
|
|
@@ -80,6 +80,10 @@ TRANSCRIPTS.md
|
|
|
80
80
|
# Still usable by name (they sit in PROFILES_DIR) and copy-on to the test box.
|
|
81
81
|
/harness/load/profiles/hospital-baseline.toml
|
|
82
82
|
/harness/load/profiles/soak-12h.toml
|
|
83
|
+
# Deep-research survey of alternative OSS DB backends for the shared-DB commit-wall — local working
|
|
84
|
+
# note, not a committed artifact (the conclusion is carried in the throughput ADRs / AI memory).
|
|
85
|
+
/docs/research/db-commit-wall-backend-survey.md
|
|
86
|
+
|
|
83
87
|
# --- MessageFoundry ---
|
|
84
88
|
.mefor/
|
|
85
89
|
*.db*
|
|
@@ -6,6 +6,63 @@ All notable changes to MessageFoundry are documented here. The format follows
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.2.12] — 2026-07-01 — Early Access
|
|
10
|
+
|
|
11
|
+
The **throughput & connection-scale wave.** The staged-queue per-message commit chain is shortened
|
|
12
|
+
(opt-in inline fast-path + batch-claim, plus a result-preserving seq-only FIFO ordering that drops a
|
|
13
|
+
per-handoff round-trip); a connection-scale measurement harness + read-only engine instrumentation lands;
|
|
14
|
+
**per-lane wake events** (opt-in) eliminate the thundering-herd empty-claim storm that dominates at high
|
|
15
|
+
connection counts; and ADR 0059's seq-only FIFO index re-key now reaches **upgraded** databases via a
|
|
16
|
+
one-time on-open migration. All new *runtime* behavior is opt-in / off-by-default unless noted — the
|
|
17
|
+
seq-only ordering (B3) and the index migration (B10) are result-preserving.
|
|
18
|
+
|
|
19
|
+
### Added
|
|
20
|
+
- **Inline Step-A fast-path** ([ADR 0057](docs/adr/0057-inline-step-a-fast-path.md)) — **opt-in per
|
|
21
|
+
inbound via `inline`**: for the pure all-deliver message (no filter/state/pass-through), fuse
|
|
22
|
+
route+transform+handoff into **one committed transaction**, cutting the per-message commit depth from 7
|
|
23
|
+
to 5 durable round-trips. Off by default → byte-identical to the split path; ineligible messages fall
|
|
24
|
+
back automatically.
|
|
25
|
+
- **Batch-claim** (#671, [ADR 0058](docs/adr/0058-batch-claim-fifo-prefix.md)) — **opt-in via
|
|
26
|
+
`[store].fifo_claim_batch`** (>1): the INGRESS/ROUTED FIFO claim takes the contiguous due head-prefix in
|
|
27
|
+
one commit instead of one row per commit, processed in strict FIFO order. Default `1` = off
|
|
28
|
+
(byte-identical); preserves per-lane FIFO (#285) and at-least-once.
|
|
29
|
+
- **Per-lane wake events** (#678, [ADR 0061](docs/adr/0061-per-lane-wake-events.md)) — **opt-in via
|
|
30
|
+
`[pipeline].per_lane_wake`**: a committed message wakes **only its own `(stage, lane)` worker** instead
|
|
31
|
+
of every worker of that stage, eliminating the thundering-herd empty-claim storm at high **connection**
|
|
32
|
+
counts (~1,500 inbounds). Default off + byte-identical; the FIFO claim and the lost-wakeup poll backstop
|
|
33
|
+
are unchanged (a missed wake self-heals). Env override `MEFOR_PIPELINE_PER_LANE_WAKE` for the harness A/B.
|
|
34
|
+
- **Connection-scale measurement harness + read-only engine instrumentation** (#675) — a headless harness
|
|
35
|
+
that spins N inbound connections at a low per-connection rate and reads the connection-scale walls
|
|
36
|
+
(executor saturation, server-store pool wait, idle-poll storm, FD/socket count, config-reload + ACK
|
|
37
|
+
latency) vs connection count. The supporting engine instrumentation is **additive + read-only**, surfaced
|
|
38
|
+
via `/stats` + `/status`: empty-claim counters split into idle-poll vs per-commit wake-fanout, and (on a
|
|
39
|
+
server store) connection-pool acquire-wait percentiles + size/idle occupancy. Counters default to 0 /
|
|
40
|
+
`None` — byte-identical when unused.
|
|
41
|
+
|
|
42
|
+
### Changed
|
|
43
|
+
- **Seq-only per-lane FIFO ordering** (#673, [ADR 0059](docs/adr/0059-seq-only-fifo-ordering.md)) — the
|
|
44
|
+
per-lane FIFO claim now orders by the DB-assigned `seq` (rowid on SQLite) **alone** instead of
|
|
45
|
+
`(created_at, seq)`, and the per-insert `SELECT MAX(created_at)` clamp is removed from **every stage
|
|
46
|
+
handoff** (one fewer round-trip per produced row). **Result-preserving** (proven order-isomorphic to the
|
|
47
|
+
prior clamped ordering) and strictly more robust under clock skew / failover (`seq` has no wall-clock
|
|
48
|
+
dependence). `created_at` stays a real ingest-time/metrics timestamp — it is simply no longer an ordering
|
|
49
|
+
key. The FIFO covering indexes re-key to trail in `seq` (see the migration below).
|
|
50
|
+
- **Rename-based FIFO covering-index migration** (#676, [ADR 0060](docs/adr/0060-rename-based-fifo-index-migration.md)) —
|
|
51
|
+
ADR 0059 re-keyed the per-lane FIFO indexes to trail in `seq` for the seq-only claim, but kept their names
|
|
52
|
+
under `IF NOT EXISTS` guards, so **only fresh databases** adopted the new index — an upgraded DB silently
|
|
53
|
+
kept its old `created_at`-trailing index and never got ADR 0059's throughput win. The seq-trailing indexes
|
|
54
|
+
are now named `ix_queue_fifo_in_seq` / `ix_queue_fifo_out_seq`, and a one-time, idempotent **on-open
|
|
55
|
+
migration drops the old-named index and builds the new one** on all three backends, so upgraded databases
|
|
56
|
+
adopt it. Correctness is unchanged (the claim orders by `seq`/`rowid` and names no index, so the migration
|
|
57
|
+
only restores speed). Operational notes: the first open after upgrade pays a **one-time index rebuild** on
|
|
58
|
+
the `queue` table (SQLite/Postgres blocking, SQL Server offline — bounded by live queue depth, at cold start
|
|
59
|
+
before serving); on a very large SQLite queue a *concurrent* second opener may hit a transient, non-corrupting
|
|
60
|
+
open failure during the rebuild; the shared-DB backends (SQL Server / Postgres) should upgrade **stop-the-world
|
|
61
|
+
/ under a drain window** (a mixed-version fleet or a live rejoin can re-create or contend on the index); a
|
|
62
|
+
downgrade re-creates the old-named index (drop `ix_queue_fifo_in/out` manually if downgrading permanently).
|
|
63
|
+
- **`/status` DB observability** — the SQLite journal mode and `synchronous` durability setting are now
|
|
64
|
+
surfaced in the DB status (`synchronous=NORMAL` remains the crash-safe-under-WAL default).
|
|
65
|
+
|
|
9
66
|
## [0.2.11] — 2026-06-29 — Early Access
|
|
10
67
|
|
|
11
68
|
The **Plan-6 disaster-recovery + cloud/HA wave** — turnkey DR backup/restore-verify and a third-tier DR
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: messagefoundry
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.12
|
|
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/
|
|
@@ -114,6 +114,7 @@ protects the minimal-dep, on-prem, code-first identity.
|
|
|
114
114
|
| **ASVS 4.1.5 per-message signing** | Med | **done** | — | #378 merged (`9c00b88`). Prune the stale `asvs-415-msg-signing` worktree. |
|
|
115
115
|
| **#74 host CPU/mem metrics** | Med | **do-next** | S | Promoted from the #52 gap synthesis (2026-06-28) — the one zero-identity-tension additive win: host CPU/mem (psutil) on the metrics surface beside the #50 disk meter. Adds `psutil` (vet + re-lock). SQL-internals sub-scope demand-gated. |
|
|
116
116
|
| **Publish the VS Code extension (Marketplace + Open VSX)** | Med | do-next | M | Publish the `ide/` extension to the **VS Code Marketplace** + **Open VSX** (`.vsix` via `vsce`/`ovsx`) so users install it instead of F5-from-source; add a CI publish leg + publisher accounts. **Owner: do soon, AFTER the planned IDE-focused improvements land** (not now — recorded 2026-06-26). Not a PyPI artifact (different ecosystem). |
|
|
117
|
+
| **#95 engine-brokered AI assist** | Low | on-trigger | L | BYO already covers "use our existing AI subscription" (Copilot/Claude via `vscode.lm`, or an in-house model surfaced through VS Code) with **zero** engine work; this is the documented P1/P2 broker — engine-centralized, **per-use-audited** egress to a customer's managed subscription or self-hosted/in-house endpoint, wiring in the reserved `[ai]` `endpoint`/`provider`/`model` keys. ADR-first. **Trigger:** a customer wants engine-brokered AI to their own instance, or we have bandwidth. |
|
|
117
118
|
|
|
118
119
|
**Top strategic calls** *(2026-06-19; updated 2026-06-28)*:
|
|
119
120
|
1. ✅ **v0.2 locked and shipped** through `0.2.10` (#28/#29 evidence published; #22b shipped). The release-close move is done.
|
|
@@ -3324,6 +3325,240 @@ deep-dive + console-medium evaluation (2026-06-29).
|
|
|
3324
3325
|
|
|
3325
3326
|
---
|
|
3326
3327
|
|
|
3328
|
+
## 93. Engine + database performance monitoring — engine-wide volume/connection KPI roll-up + a throughput-overload (saturation) alert (P2)
|
|
3329
|
+
|
|
3330
|
+
**Type:** feature — observability + alerting. A **connective** item: most of the operator-facing monitoring
|
|
3331
|
+
surface this asks for is **already tracked** (and partly shipped) under sibling items — this entry exists to name
|
|
3332
|
+
the two genuine **net-new** slivers none of them owns and to cross-link the rest, not to re-pitch built work.
|
|
3333
|
+
|
|
3334
|
+
**Already tracked / shipped (don't duplicate).** The request — "display total message volume + connection count;
|
|
3335
|
+
monitor everything that affects throughput; alert when the system is becoming overloaded" — is largely covered:
|
|
3336
|
+
- **#21 (DONE, PR #407)** — the Prometheus `/metrics` exporter (+ optional OpenTelemetry): per-connection
|
|
3337
|
+
received / delivered / errored / `queue_depth` counters + a `delivery_latency_seconds` histogram (p50/p95/p99).
|
|
3338
|
+
A scraping team gets per-connection throughput/latency and can `rate()`/`sum()` it in Grafana today.
|
|
3339
|
+
- **#56 (SHIPPED 0.2.10, ADR 0044)** — resolvable alert-state: the `alert_instance` table, `GET /alerts/active` +
|
|
3340
|
+
ack/resolve, and the real `ConnectionRow.alerts_active` count (no longer the stubbed `0`).
|
|
3341
|
+
- **#74 (do-next)** — host CPU / memory via `psutil` on the metrics surface.
|
|
3342
|
+
- **#75 (scheduled)** — the zero-install **browser ops dashboard**: live per-connection **In/Out msgs/sec** over
|
|
3343
|
+
`/ws/stats`, Queued / Errors / Last-Activity. The natural home for a live throughput view.
|
|
3344
|
+
- **#76 (demand-gate)** — historical-metrics charting + a status-colored data-flow graph.
|
|
3345
|
+
- **#81 (demand-gate)** — alert escalation tiers + day/time thresholds + content (Action-Point) alerting on top of #56.
|
|
3346
|
+
- **#64 (measure-gated)** — the throughput-*performance* roadmap (group-commit, DB durable-write IOPS as the
|
|
3347
|
+
leading driver). That item makes the engine *faster*; this item *warns* when load approaches capacity — they pair.
|
|
3348
|
+
- **#50 (P3)** — app-log disk metering + a message-stall rule. **#28/#29** — the load/throughput runs that set the baseline.
|
|
3349
|
+
|
|
3350
|
+
**Net-new gap (what no sibling owns):**
|
|
3351
|
+
1. **An engine-wide aggregate KPI headline.** Every count above is **per-connection** (#21) or a live per-connection
|
|
3352
|
+
rate (#75); nothing rolls them up into the operator's literal ask — a single **total messages through the engine**
|
|
3353
|
+
figure, a **combined inbound + outbound connection count** (with running / stopped breakdown), and an **engine-wide
|
|
3354
|
+
msg/s rate** — surfaced as first-class top-line KPIs on `/status` (or a sibling route), the console Engine Status
|
|
3355
|
+
page, and the #75 dashboard. Reuse the existing `recent_done` rate window that already powers `backlog_seconds`
|
|
3356
|
+
— don't add a second sampler. Small; mostly rides #75.
|
|
3357
|
+
2. **A throughput-overload / saturation alert.** Every shipped alert (the **#5** framework, **#56** state, **#81**
|
|
3358
|
+
escalation) keys on an **absolute** per-connection/per-resource snapshot — depth/oldest-age ceilings — so a bursty-
|
|
3359
|
+
but-draining lane and a genuinely-overloaded engine look identical until the ceiling trips. Nothing fires on the
|
|
3360
|
+
*derivative*: a **rising** `backlog_seconds`, a **growing** `in_pipeline`, or **ingest rate exceeding drain rate**
|
|
3361
|
+
over a sampling window = "the system is *becoming* overloaded." Add a new ADR 0014 alert event keyed on that
|
|
3362
|
+
comparison (new `AlertSink` event + emit site + `AlertRule` dimension + a small per-lane / engine-wide rate
|
|
3363
|
+
history), bounded by the existing `realert_seconds` throttle and routed through the same notifier/rules path. It is
|
|
3364
|
+
distinct from #81 (a policy layer *on top of* existing alerts, not a new detector) and from #64 (performance tuning,
|
|
3365
|
+
not operational alerting). ADR 0014 already declined timed multi-stage escalation; this adds a rate/saturation
|
|
3366
|
+
**dimension**, which wants that scope decision settled first.
|
|
3367
|
+
|
|
3368
|
+
**Database performance monitoring.** Surface the throughput-affecting **DB** signals — write/commit latency and
|
|
3369
|
+
connection-pool busy/wait/saturation (the pipeline is commit-bound; `[store].pool_size` exists but emits no
|
|
3370
|
+
saturation metric) and router/transform-worker lag — as **metrics first** (extend `/metrics` + `db_status()`), then
|
|
3371
|
+
optionally as overload-alert inputs. `storage_threshold` today alerts only on DB **file size** vs
|
|
3372
|
+
`[retention].max_db_mb`, not commit/pool health. **SQL-internal** DB metrics stay **DBA-delegated / demand-gated**
|
|
3373
|
+
(parity with #74's SQL-internal sub-scope and the DB-tier-HA decline).
|
|
3374
|
+
|
|
3375
|
+
**Why P2 / on-trigger.** #21 + the scheduled #74/#75 already answer the "where's the dashboard?" ask cheaply; the
|
|
3376
|
+
net-new is the small aggregate KPI roll-up (rides #75) + the overload/saturation alert, which is genuine new engine
|
|
3377
|
+
work and matters most once a real high-volume estate exists to overload. **Trigger:** a pilot/production estate
|
|
3378
|
+
approaching the commit-bound capacity ceiling that needs an *early-warning* overload signal rather than after-the-fact
|
|
3379
|
+
`queue_buildup`; calibrating the threshold wants a #28/#29/#64 capacity baseline first. Relates to **#21**, **#56**,
|
|
3380
|
+
**#64**, **#74**, **#75**, **#76**, **#81**, **#50**, **#28**/**#29**, and the **#5** AlertSink/rules framework it extends.
|
|
3381
|
+
|
|
3382
|
+
**Source:** owner request (2026-06-30) — "engine + database performance monitoring and alerting; display the total
|
|
3383
|
+
volume of messages going through the engine and the number of connections; monitor for all the things that affect
|
|
3384
|
+
throughput and alert when the system(s) are becoming overloaded." Overlap against the existing observability/alerting
|
|
3385
|
+
items (#21/#56/#64/#74/#75/#76/#81) reconciled the same day.
|
|
3386
|
+
|
|
3387
|
+
---
|
|
3388
|
+
|
|
3389
|
+
## 94. External BLOB-server offload for embedded documents — replace inline base64 with a stored-object pointer (OBX-5 RP) (P2, on-trigger)
|
|
3390
|
+
|
|
3391
|
+
**Type:** feature — storage minimization + customer-infrastructure integration. The ingest-time **offload**
|
|
3392
|
+
half of **#47** (its deferred fork (b)), but targeting the **customer's existing object/BLOB store** instead
|
|
3393
|
+
of a MessageFoundry-internal attachment table — and replacing the inline blob with an **in-message pointer**,
|
|
3394
|
+
not a private reattach token.
|
|
3395
|
+
|
|
3396
|
+
**The ask.** Large base64 embedded documents (PDF reports, CCD/C-CDA, scanned images) ride inline in **OBX-5**
|
|
3397
|
+
(ED data type) and generically via the ADR 0028 `mfb64:v1:` carriage marker
|
|
3398
|
+
([`adr/0028-base64-binary-carriage-codec.md`](adr/0028-base64-binary-carriage-codec.md)). Today they are stored
|
|
3399
|
+
verbatim in the raw message at **every** persisted stage (`ingress` → `routed` → `outbound`), bloating the store
|
|
3400
|
+
far out of proportion to message count (#47's premise). Instead of pruning them *after* a window (#47(a)) or
|
|
3401
|
+
carrying them more compactly *inside* our store (#62), **offload the blob to the customer's BLOB server at
|
|
3402
|
+
ingest, take back the storage key/URL it returns, and embed that pointer into the corresponding OBX segment** —
|
|
3403
|
+
so the bulky document never persists in our store at all.
|
|
3404
|
+
|
|
3405
|
+
**Why distinct from the siblings.**
|
|
3406
|
+
- **#47(a)** prunes the embedded doc *after* a per-connection window — the blob still bloats all three stages
|
|
3407
|
+
until the window elapses, and it stays in our store meanwhile. This eliminates it *from the start*.
|
|
3408
|
+
- **#47(b)** is the same ingest-time-offload shape but offloads to a **MessageFoundry-managed attachment store**
|
|
3409
|
+
(Mirth's `d_ma<channelId>` table + `${ATTACH:...}` token, reattached on outbound). This offloads to
|
|
3410
|
+
**infrastructure the customer already owns** and leaves a **standards-shaped pointer in the message**, not a
|
|
3411
|
+
private token.
|
|
3412
|
+
- **#62** keeps the bytes in our store, just as `VARBINARY`/`BLOB`/`bytea` instead of base64-in-text. Here the
|
|
3413
|
+
bytes **leave** our store entirely.
|
|
3414
|
+
|
|
3415
|
+
**Design forks (for the ADR):**
|
|
3416
|
+
- **Pointer representation.** Replace the OBX-5 **ED** embed with the HL7 **RP (reference pointer)** data type — a
|
|
3417
|
+
`<pointer>^<application ID>^<type of data>^<subtype>` reference downstream systems understand natively — versus
|
|
3418
|
+
an opaque MessageFoundry token (#47(b)-style) that we must reattach before delivery. RP is interoperable but
|
|
3419
|
+
assumes the partner can dereference the BLOB; a token keeps the message self-contained but makes us re-fetch +
|
|
3420
|
+
re-embed on outbound. For the generic `mfb64:v1:` carriage, a sibling `mfref:`-style pointer marker. **Never
|
|
3421
|
+
string-slice raw HL7** (CLAUDE.md §8) — rewrite via the parsed model/codec and re-encode.
|
|
3422
|
+
- **Credential-bearing pointers — embed a reference, not a capability.** The message must carry a pointer a
|
|
3423
|
+
consumer can resolve, but a BLOB store often hands back (or we would mint) a **presigned URL / SAS token with the
|
|
3424
|
+
access grant baked into the string**. That must **not** be what we persist: a presigned URL in OBX-5 is a bearer
|
|
3425
|
+
credential to PHI living in a persisted-and-forwarded artifact (store, outbox, the partner's inbox, our logs), it
|
|
3426
|
+
**expires** — colliding with at-least-once **replay**, queued **retries**, **dead-letter**, and **retention** (a
|
|
3427
|
+
message re-sent past the TTL carries a dead pointer) — and it can't be revoked independently of the document.
|
|
3428
|
+
Separate the two capabilities: the **upload** grant (the presigned PUT, or MessageFoundry's own write creds) is
|
|
3429
|
+
used **once and discarded**; what we **embed** is a **stable, opaque, non-capability reference** — ideally a
|
|
3430
|
+
content-addressed object key plus the store identity (the HL7 **RP** components map cleanly: *Application ID* =
|
|
3431
|
+
which BLOB store, *Pointer* = the opaque key), with the consumer authenticating to the store with its **own**
|
|
3432
|
+
credentials (it owns the store — the premise of this feature). If a partner genuinely needs a no-auth
|
|
3433
|
+
dereferenceable URL, **mint a short-lived presigned URL late, at delivery** (the reattach-on-outbound fork below),
|
|
3434
|
+
never at ingest and never persisted — so the capability exists only transiently on the wire within a bounded TTL.
|
|
3435
|
+
Clean default: MessageFoundry writes with its own creds, embeds the opaque key, readers use theirs, and no
|
|
3436
|
+
credential URL ever touches the store or the logs.
|
|
3437
|
+
- **Reattach-on-outbound or not.** If the receiving partner reads the BLOB itself, the pointer *is* the
|
|
3438
|
+
deliverable. If it needs the actual document, MessageFoundry must **re-fetch from the BLOB and re-embed** on the
|
|
3439
|
+
outbound — or **mint a fresh short-lived pointer** at send time (above) — a new read side-effect + egress
|
|
3440
|
+
dependency on delivery. Per-outbound choice.
|
|
3441
|
+
- **Where the offload runs vs the reliability invariant.** This is a **write side-effect**, which collides with
|
|
3442
|
+
the "routers/transforms must be pure, every stage is at-least-once / re-runnable" invariant (CLAUDE.md §2). A
|
|
3443
|
+
stage re-run must not double-store or orphan blobs — favor **content-addressed keys** (hash of the bytes) so a
|
|
3444
|
+
PUT is idempotent. And it adds an **external dependency** to the path: if the offload sits *before* the ACK
|
|
3445
|
+
(alongside ingress persistence), a BLOB-server outage blocks intake/ACK; if it sits as its own pipeline stage
|
|
3446
|
+
*after* the ACK, intake survives but a failed offload dead-letters post-ACK (no NAK) — the ADR must pick.
|
|
3447
|
+
|
|
3448
|
+
**Scope (when built):**
|
|
3449
|
+
- A **pluggable BLOB connector** registered like the destination transports (`transports/`, registry — never
|
|
3450
|
+
special-cased in `pipeline/`): S3 / Azure Blob / GCS / on-prem object store / plain HTTP PUT, selected +
|
|
3451
|
+
configured per connection. Gated by `[egress].allowed_*` allow-lists; credentials via `env()` / `MEFOR_*` (the
|
|
3452
|
+
connector-credential SecretProvider-seam candidate). Off the event loop.
|
|
3453
|
+
- A **per-connection offload setting** (size threshold + target BLOB connection), layered over a global default —
|
|
3454
|
+
the same **global-default + per-connection-override** model as FIFO / `RetryPolicy` / #34 / #47, authored on the
|
|
3455
|
+
inbound `ConnectionSpec` and/or `connections.toml` (ADR 0007) so it stays hand-/GUI-editable.
|
|
3456
|
+
- Target **both** carriage forms (HL7 OBX-5 ED and the generic `mfb64:v1:` marker) across **all three** backends
|
|
3457
|
+
(SQLite / Postgres / SQL Server). Preserve every invariant — never delete the row, message stays parseable after
|
|
3458
|
+
the rewrite, **one audit entry per offload** (key + size + content-type + connection, no content). Offload is
|
|
3459
|
+
irreversible from our side once the inline bytes are dropped — surface a distinct flag so an operator viewing the
|
|
3460
|
+
message knows the document was externalized vs never present, and audit any later **retrieval**.
|
|
3461
|
+
|
|
3462
|
+
**PHI note + scope boundary.** Offloading *shrinks our* at-rest PHI footprint (a data-minimization win) — the
|
|
3463
|
+
bulky document leaves our store for the customer's BLOB. **The security of that BLOB server is explicitly out of
|
|
3464
|
+
scope:** PHI handling, **encryption-at-rest**, and access control on the customer's store are the **customer's**
|
|
3465
|
+
responsibility — the same trust posture we already take toward a customer database in `db_lookup`
|
|
3466
|
+
([ADR 0010](adr/0010-handler-callable-db-lookup.md)). MessageFoundry treats the BLOB server as trusted customer-owned
|
|
3467
|
+
infrastructure and does **not** encrypt the offloaded objects or enforce remote-store PHI controls itself. What
|
|
3468
|
+
stays **in** scope (our responsibility): **never log a presigned/SAS URL or an identifier-bearing object key**
|
|
3469
|
+
(§9) — the former is a bearer credential to PHI, the latter is PHI itself; an opaque, auth-gated reference is safe
|
|
3470
|
+
to log. And **audit each retrieval** as a PHI access. (Logging is still stdlib with no structlog redaction yet, so
|
|
3471
|
+
this is a deliberate connector-level "log the object key/length, never the signed URL" discipline, not an
|
|
3472
|
+
automatic scrub.) The customer's BAA must cover the BLOB store; restate this boundary in [`PHI.md`](PHI.md) when
|
|
3473
|
+
built.
|
|
3474
|
+
|
|
3475
|
+
**Why P2 / on-trigger.** This is the strongest store-bloat lever for heavy document feeds (radiology PDFs, CCDs)
|
|
3476
|
+
and the cleanest fit for a customer who **already runs** object/BLOB infrastructure and wants their documents
|
|
3477
|
+
living there. But it is a side-effecting pipeline change touching the purity / at-least-once invariant **plus** a
|
|
3478
|
+
new connector family — it wants its own ADR (the forks above) before code, and is not an open exposure on the
|
|
3479
|
+
shipping config. **Trigger:** an adopter with an existing BLOB/object store and a document-heavy feed who wants the
|
|
3480
|
+
documents offloaded out of our store. Relates to **#47** (the in-store prune/offload sibling — shared
|
|
3481
|
+
per-connection plumbing; this realizes its deferred fork (b) against external storage), **#62** (in-store binary
|
|
3482
|
+
carriage), **#34** (per-connection retention), **ADR 0028** (base64 carriage), **ADR 0007** (`connections.toml`),
|
|
3483
|
+
and the connector-credential **SecretProvider** seam.
|
|
3484
|
+
|
|
3485
|
+
**Source:** owner request (2026-06-30) — "integrate with the customer's existing BLOB servers to offload base64
|
|
3486
|
+
documents; eliminate the base64 documents from our data store — instead get a pointer back from the BLOB and embed
|
|
3487
|
+
that into the corresponding OBX segment." Reconciled against the in-store siblings #47 / #62 the same day.
|
|
3488
|
+
|
|
3489
|
+
---
|
|
3490
|
+
|
|
3491
|
+
## 95. Engine-brokered AI assistance — integrate the IDE coding assistant with a customer's managed AI subscription or in-house LLM instance (P3, on-trigger)
|
|
3492
|
+
|
|
3493
|
+
**Type:** feature — AI governance + customer-infrastructure integration. Turns the **reserved-but-unused**
|
|
3494
|
+
`[ai]` broker config keys into a real integration: let the **engine broker** the IDE assistant's model calls to a
|
|
3495
|
+
provider the *customer already runs* — their own cloud AI subscription (Azure OpenAI, Anthropic/Bedrock, an internal
|
|
3496
|
+
Copilot-compatible gateway) or a **self-hosted / on-prem LLM endpoint** (vLLM, Ollama, an internal inference service)
|
|
3497
|
+
— under central, **per-use-auditable** egress control. The policy model, config schema, RBAC, and policy endpoint
|
|
3498
|
+
**already exist** ([`AI.md`](AI.md)); this builds the broker they were designed for.
|
|
3499
|
+
|
|
3500
|
+
**Already there (don't duplicate).** A customer's existing AI **subscription** is *already* the integration point
|
|
3501
|
+
today, via **BYO** ([`../ide/src/chat.ts`](../ide/src/chat.ts)): the assistant is provider-agnostic and uses whatever
|
|
3502
|
+
model the developer picked in VS Code's Chat view (Copilot / Copilot Enterprise under the org BAA, Claude, etc.)
|
|
3503
|
+
through the `vscode.lm` Language Model API — and **any in-house instance that registers as a VS Code language-model
|
|
3504
|
+
provider** (a Copilot-compatible internal proxy or a custom chat-model extension) is picked up the same way,
|
|
3505
|
+
engine-blind. The governance around it is built too — the `[ai]` policy (`mode` × `data_scope`,
|
|
3506
|
+
production-posture-clamped), the `ai:assist` RBAC permission, `GET /ai/policy` + the `messagefoundry ai-policy` CLI,
|
|
3507
|
+
and the central-*off* switch honored on every workstation. What is **not** built is the **engine-brokered** path:
|
|
3508
|
+
`managed_claude` / `managed_claude_baa` are accepted as policy values but the IDE deliberately refuses to service them
|
|
3509
|
+
(it will **not** silently fall back to BYO), and the `provider` / `model` / `baa_attested` / `endpoint` config keys
|
|
3510
|
+
are **accepted but unused** — placeholders the broker was meant to consume.
|
|
3511
|
+
|
|
3512
|
+
**Net-new gap (what no sibling owns):**
|
|
3513
|
+
1. **The engine-side broker.** AI.md's *Future direction* (P1/P2) puts model egress behind the **engine** — not the
|
|
3514
|
+
dev's IDE — so a central operator controls and **per-use audits** every call, and `phi` scope becomes reachable
|
|
3515
|
+
only under `managed_claude_baa` over a **BAA + zero-data-retention** connection. None of this exists: it needs a
|
|
3516
|
+
new engine API surface (the engine proxies the chat request), the IDE client switching from `vscode.lm` to the
|
|
3517
|
+
engine for managed modes, and per-use egress auditing (today even policy *reads* aren't audited — that arrives
|
|
3518
|
+
*with* the broker).
|
|
3519
|
+
2. **A generic customer-endpoint mode, beyond Anthropic-managed Claude.** The only future modes named today
|
|
3520
|
+
(`managed_claude` / `managed_claude_baa`) are framed around an **Anthropic-managed** Claude. A customer's **own
|
|
3521
|
+
subscription** (their Azure OpenAI / Bedrock keys, their internal gateway) or a **self-hosted endpoint** is a
|
|
3522
|
+
*different* shape: the customer supplies `endpoint` + `provider` + `model` + credentials and MEFOR just brokers to
|
|
3523
|
+
it. That wants either a new `managed_endpoint` (engine-brokered, customer-keyed) mode or an explicit
|
|
3524
|
+
generalization of `managed_claude`, finally wiring in the reserved `endpoint` / `provider` / `model` keys.
|
|
3525
|
+
|
|
3526
|
+
**Design forks (for the ADR):**
|
|
3527
|
+
- **Why broker at all when BYO already works?** BYO's limit is that it is **dev-machine-local and engine-blind** —
|
|
3528
|
+
ops can centrally turn it *off* and cap scope, but cannot *see* or *audit* individual calls, and the model is
|
|
3529
|
+
whatever the dev configured in VS Code. The broker buys central egress control, per-use audit, and a single
|
|
3530
|
+
operator-pinned `endpoint` / `model` — at the cost of routing AI traffic through the engine. Some customers want
|
|
3531
|
+
exactly the opposite (keep AI entirely off the engine), so this is **additive, never a replacement** for BYO.
|
|
3532
|
+
- **`managed_endpoint` vs generalize `managed_claude`.** A new mode keeps the existing Claude modes clean;
|
|
3533
|
+
generalizing avoids mode-proliferation. Either way the IDE's current "managed → disabled" branch flips to
|
|
3534
|
+
"managed → call the engine broker."
|
|
3535
|
+
- **Credentials + egress.** Customer keys / endpoint via `env()` / `MEFOR_*` (the connector-credential
|
|
3536
|
+
**SecretProvider** seam), gated by an `[egress].allowed_http` allow-list like `fhir_lookup` / SMART; the broker
|
|
3537
|
+
call runs **off the event loop**. A self-hosted endpoint (vLLM / Ollama) often needs no BAA (on-prem) — but the
|
|
3538
|
+
**`data_scope` ceiling still applies**: `phi` stays reachable *only* under the BAA + ZDR attestation, never merely
|
|
3539
|
+
because the endpoint is on-prem.
|
|
3540
|
+
- **PHI boundary unchanged for the MVP scopes.** Until de-id wiring into the AI scope path and the broker land
|
|
3541
|
+
together, the assistant still attaches **`code_only`** context regardless of mode — the broker changes *who makes
|
|
3542
|
+
the call and how it's audited*, not *what data* may be sent without a posture change.
|
|
3543
|
+
|
|
3544
|
+
**Why P3 / on-trigger.** BYO already covers "use our existing AI subscription" for the common case
|
|
3545
|
+
(Copilot-under-BAA, or an in-house model surfaced through VS Code) with **zero** engine work — so this is genuine new
|
|
3546
|
+
engine + IDE + audit surface that earns its cost only when a customer specifically wants **engine-centralized,
|
|
3547
|
+
audited** AI egress to **their** managed / self-hosted endpoint (e.g. a security team that mandates all AI traffic
|
|
3548
|
+
flow through one audited choke point, or an estate whose only LLM is an internal one not exposed to VS Code).
|
|
3549
|
+
**Trigger:** a customer asks for engine-brokered AI to their own subscription / in-house instance, **or** we have the
|
|
3550
|
+
bandwidth to build out the documented P1/P2 broker. ADR-first (the forks above). Relates to [`AI.md`](AI.md) (the
|
|
3551
|
+
policy model + reserved keys this realizes), [`PHI.md`](PHI.md) §9 (de-id, the gate to scopes above `code_only`), the
|
|
3552
|
+
**SMART** / `fhir_lookup` egress-allow-list + off-loop precedent ([ADR 0024](adr/0024-smart-backend-services-token-provider.md) /
|
|
3553
|
+
[ADR 0043](adr/0043-fhir-read-lookup.md)), and the connector-credential **SecretProvider** seam.
|
|
3554
|
+
|
|
3555
|
+
**Source:** owner request (2026-06-30) — add the engine-brokered "integrate the IDE coding assistant with a
|
|
3556
|
+
customer's existing AI subscriptions or in-house instances" capability as a demand-/bandwidth-gated item; build when
|
|
3557
|
+
a customer wants it or when we have bandwidth. The already-shipped BYO coverage + the reserved broker config keys were
|
|
3558
|
+
reconciled the same day.
|
|
3559
|
+
|
|
3560
|
+
---
|
|
3561
|
+
|
|
3327
3562
|
*Everything else from the 2026-06-10 full-codebase review (1 critical, 13 high, 33 medium, 31 low —
|
|
3328
3563
|
78 findings) has been remediated; see the review report's §6 action order. The two items it still
|
|
3329
3564
|
sourced — **#1 (SQL Server concurrency)** and **#2 (console off-thread)** — are now both **DONE**
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
<!-- Source of truth: MessageFoundry Wordmark Guidelines (brand guidelines, June 2026), MEFOR-ORG. -->
|
|
2
|
+
|
|
3
|
+
# MessageFoundry — Brand & Wordmark Guidelines
|
|
4
|
+
|
|
5
|
+
How to set the **MessageFoundry** wordmark — the amber accent, type, the ™ mark, and reproducing it
|
|
6
|
+
in Microsoft Word.
|
|
7
|
+
|
|
8
|
+
## The wordmark
|
|
9
|
+
|
|
10
|
+
The wordmark is the single word **MessageFoundry** — never split, re-cased, or re-colored.
|
|
11
|
+
|
|
12
|
+
- **"Message"** — the base text color: white on dark, near-black **`#0f172a`** on light.
|
|
13
|
+
- **"Foundry"** — **always molten amber `#f59e0b`**, in every context.
|
|
14
|
+
- **Casing** — camelCase `MessageFoundry`, one word, no space.
|
|
15
|
+
- **Code name is separate** — the package/import token `messagefoundry` is lowercase plain text;
|
|
16
|
+
**never** style it as the wordmark.
|
|
17
|
+
|
|
18
|
+
## Color
|
|
19
|
+
|
|
20
|
+
Only **"Foundry"** is colored, and only with the amber below — the same value the logo, favicon, and
|
|
21
|
+
Open-Graph art use. The other tones belong to the wider palette, **not** the wordmark.
|
|
22
|
+
|
|
23
|
+
**Molten amber — the "Foundry" accent:** HEX `#f59e0b` · RGB `245, 158, 11` · CSS `--accent`.
|
|
24
|
+
|
|
25
|
+
**Supporting palette — _not_ for the wordmark:**
|
|
26
|
+
|
|
27
|
+
| Hex | Name | Use |
|
|
28
|
+
|---|---|---|
|
|
29
|
+
| `#f97316` | molten orange | headline gradient only |
|
|
30
|
+
| `#7c2d12` | deep accent ink | accent text on light |
|
|
31
|
+
| `#0b1220` | deep slate | dark backgrounds |
|
|
32
|
+
| `#0f172a` | primary text | "Message" on light |
|
|
33
|
+
|
|
34
|
+
## Typography & the amber rule
|
|
35
|
+
|
|
36
|
+
- **Typeface** — system sans, **Segoe UI** on Windows (Aptos or Calibri are acceptable fallbacks).
|
|
37
|
+
No serif, script, or display faces.
|
|
38
|
+
- **Weight** — 800 / extra-bold (or the boldest available).
|
|
39
|
+
- **Tracking** — letter-spacing −0.02em (≈ "Condensed, By 0.2 pt" in Word). Never loosen it.
|
|
40
|
+
|
|
41
|
+
> **Amber is for marks & headings — never body text.** Color "Foundry" amber only in the **wordmark,
|
|
42
|
+
> headings, and mastheads**. In running copy, write MessageFoundry in the **normal text color**.
|
|
43
|
+
> (Applies to documents as well as the website.)
|
|
44
|
+
|
|
45
|
+
## The ™ trademark mark — when to include it
|
|
46
|
+
|
|
47
|
+
MessageFoundry and the MessageFoundry wordmark are trademarks of **MEFOR-ORG**. Use the ™
|
|
48
|
+
**deliberately, not on every mention.**
|
|
49
|
+
|
|
50
|
+
**Include the ™:**
|
|
51
|
+
- On the primary logo lockup (anvil + wordmark) in a header / cover.
|
|
52
|
+
- On the **first or most prominent** appearance in a document.
|
|
53
|
+
- In standalone logo use — slides, letterhead, avatars.
|
|
54
|
+
|
|
55
|
+
**Leave it off:**
|
|
56
|
+
- On repeated inline mentions in running text (once is enough).
|
|
57
|
+
- In code, URLs, file names, and the package name `messagefoundry`.
|
|
58
|
+
- Where a legal trademark line already states ownership.
|
|
59
|
+
|
|
60
|
+
**How it's set:** a superscript ™ right after "Foundry", about **0.6–0.7× the wordmark size**, in a
|
|
61
|
+
**muted gray, medium weight**.
|
|
62
|
+
|
|
63
|
+
## Clear space, size & backgrounds
|
|
64
|
+
|
|
65
|
+
- **Clear space** — keep margin equal to the cap-height of the "M" on all sides (about the anvil's
|
|
66
|
+
height for the lockup).
|
|
67
|
+
- **Minimum size** — not below ~9 pt in print / ~16 px on screen; keep the anvil mark ≥ ~20 px.
|
|
68
|
+
- **Lockup** — anvil mark, a gap of ~half the mark's width, then the wordmark, vertically centered.
|
|
69
|
+
- **Contrast** — amber on white is borderline for small text — another reason to keep the accent to
|
|
70
|
+
large/heading use, never body copy.
|
|
71
|
+
|
|
72
|
+
## Recreating the wordmark in Microsoft Word
|
|
73
|
+
|
|
74
|
+
No special font or asset needed — Word users already have the typeface. The one detail to get exactly
|
|
75
|
+
right is the amber.
|
|
76
|
+
|
|
77
|
+
1. Type it as one word — `MessageFoundry` (no space), then apply **Bold**.
|
|
78
|
+
2. Set the font — **Segoe UI** (Windows default); Aptos or Calibri are acceptable fallbacks.
|
|
79
|
+
3. **Color only "Foundry"** — select the letters `Foundry` → Home → Font Color ▾ → More Colors →
|
|
80
|
+
Custom → Hex `F59E0B` (RGB 245, 158, 11). Leave "Message" on the default color.
|
|
81
|
+
4. Optional tracking — select the word → Ctrl+D → Advanced → Spacing **Condensed, By 0.2 pt**.
|
|
82
|
+
5. Add the ™ (prominent use only) — after "Foundry" type `(TM)` (auto-corrects to ™, or Alt+0153) →
|
|
83
|
+
select it → **Superscript** (Ctrl+Shift+=), optionally **gray and one size smaller**.
|
|
84
|
+
6. Full lockup — Insert → Pictures → the anvil logo → size to the wordmark's cap-height → place left
|
|
85
|
+
with a small gap → select both and **Group**.
|
|
86
|
+
|
|
87
|
+
**Don't** recolor or outline the letters, stretch/skew the text, or apply WordArt, shadow, or glow.
|
|
88
|
+
It's bold sans type with one amber word — nothing more.
|
|
89
|
+
|
|
90
|
+
### Do / Don't
|
|
91
|
+
|
|
92
|
+
| Do | Don't |
|
|
93
|
+
|---|---|
|
|
94
|
+
| One word, camelCase: **MessageFoundry** | Add a space, or lowercase the brand in prose |
|
|
95
|
+
| Color only "Foundry", only amber `#f59e0b` | Color the whole word, or color "Message" |
|
|
96
|
+
| Bold, clean system sans | Tint "Foundry" amber in body text |
|
|
97
|
+
| ™ on the lockup and first prominent use | Use a different orange or the gradient on the wordmark |
|
|
98
|
+
| Keep clear space and contrast | Stretch, skew, outline, or repeat ™ everywhere |
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
© 2026 MEFOR-ORG, a non-profit. MessageFoundry and the MessageFoundry wordmark are trademarks of
|
|
103
|
+
MEFOR-ORG. The amber accent is `#f59e0b` (RGB 245, 158, 11).
|
|
@@ -247,6 +247,13 @@ does not replicate the store itself.
|
|
|
247
247
|
Like Rhapsody/Corepoint, clients reach "the engine" through a **floating VIP or load balancer**, not a
|
|
248
248
|
fixed node — so a failover is transparent to senders (modulo a reconnect):
|
|
249
249
|
|
|
250
|
+
> **Planned alternative — engine-managed VIP (Windows-only).** [ADR 0056](adr/0056-engine-managed-vip-failover.md)
|
|
251
|
+
> proposes an **opt-in** mode where the **engine itself** owns the VIP (no external LB/VRRP/WSFC), moving it
|
|
252
|
+
> in lockstep with the leadership lease. It is **Windows-only** and **not yet built**. Until it ships — and
|
|
253
|
+
> on **Linux/containerized** deployments, which it does **not** cover — use the external floating VIP / LB
|
|
254
|
+
> described here, which stays the **cross-platform** default and the recommended posture for the strictest
|
|
255
|
+
> split-brain guarantee.
|
|
256
|
+
|
|
250
257
|
- **MLLP / TCP inbound (per listener).** Use a VIP per inbound port whose health check is a **TCP
|
|
251
258
|
connect to that port**. Because only the **primary** binds the port (the active-passive graph gating),
|
|
252
259
|
the check passes only on the primary, so the VIP routes inbound traffic to it automatically; on
|
|
@@ -54,6 +54,7 @@ backend that consumes the server-DB keys lands incrementally (the settings + val
|
|
|
54
54
|
| `backend` | enum | `sqlite` | `sqlite` · `sqlserver` · (later `postgres`/`mysql`/`oracle`) |
|
|
55
55
|
| `path` | str | `./messagefoundry.db` | SQLite only |
|
|
56
56
|
| `synchronous` | enum | `normal` | SQLite: `normal`/`full` |
|
|
57
|
+
| `fifo_claim_batch` | int | `1` | all backends (ADR 0058). Max rows the **INGRESS/ROUTED** FIFO claim takes per commit. `1` = **OFF** (the workers claim one row per commit — byte-identical to before). `> 1` (clamped `1..64`) claims the **contiguous due head-prefix** in one commit and then processes each row in strict FIFO order with its own off-loop route/transform + separate handoff, amortizing the standalone claim commit toward 1/N. A not-due or producer-locked head still blocks the lane (strict per-lane FIFO, #285). The **outbound/delivery** claim is never batched. Opt-in throughput tuning (recommend `8`–`16`); size against worst-case message size, since N decrypted bodies are resident per lane between the claim and the N handoffs. |
|
|
57
58
|
| `encryption_key` | secret | — | **env only** (`MEFOR_STORE_ENCRYPTION_KEY`); base64 32-byte **active** key — when set, PHI columns (`raw`/`payload` + `error`/`last_error`/`detail`) are AES-256-GCM-encrypted at rest. Mint one with `messagefoundry gen-key`. Empty = off. See [PHI.md §3](PHI.md#3-encryption-at-rest). |
|
|
58
59
|
| `encryption_keys_retired` | secret | — | **env only** (`MEFOR_STORE_ENCRYPTION_KEYS_RETIRED`); comma-separated base64 **decrypt-only** keys kept available during a rotation until `messagefoundry rotate-key` finishes re-encrypting under the active key (ASVS 11.2.2). |
|
|
59
60
|
| `key_provider` | enum | `auto` | selects **how** the active/retired DEK bytes are *sourced* — never how they are used (the cipher, keyring, and `mfenc:v1` format are unchanged; ADR 0019, ASVS 13.3.3). `auto` (default) is the env-then-DPAPI ladder, **byte-identical** to the pre-seam behavior; `env`/`dpapi` pin a single built-in source; `aws_kms`·`azure_kv`·`gcp_kms`·`vault`·`pkcs11` envelope-decrypt a wrapped DEK inside an HSM/KMS/Vault (lazy **optional extras — not built yet**; selecting one **fails closed** at `serve`, never a silent downgrade). Names a *provider*, not key material, so it is **not** a secret. |
|
|
@@ -467,6 +468,7 @@ Because the local diff is cheap and PHI-safe it is **on by default** (zero phone
|
|
|
467
468
|
| Key | Type | Default | Notes |
|
|
468
469
|
|---|---|---|---|
|
|
469
470
|
| `max_correlation_depth` | int (≥1) | 8 | **Re-ingress loop cap** (ADR 0013 Increment 2). When a captured reply is re-ingressed (`reingress_to=`/`Loopback()`), the re-ingressed message carries a `correlation_depth`; a message at this depth still routes, but the next hop (depth+1) **dead-letters** its re-ingress work-row and marks the origin `ERROR`. Coarse by design — it bounds *total work*, not topology, so a chain that legitimately bounces A→B→A a few times needs headroom. 8 is safe for typical request→response→route feeds; raise it for deep correlation chains, lower it to fence a misbehaving loop. (A value of 0 would dead-letter every re-ingress, so the floor is 1.) |
|
|
471
|
+
| `per_lane_wake` | bool | `false` | **Per-lane wake events** (B12, [ADR 0061](adr/0061-per-lane-wake-events.md)). **Reliability-core, default-OFF.** When `false`, a committed message wakes every worker of its stage via an engine-wide event (the historical behavior). When `true`, it wakes **only its own (stage, lane) worker**, eliminating the thundering-herd empty-claim storm that dominates at high **connection** counts (~1,500 inbounds). Correctness is unchanged (the FIFO claim + the 0.25 s lost-wakeup poll backstop are untouched; a missed wake self-heals within the poll). **Read once at engine start — a `/config/reload` does NOT toggle it (restart to change).** Env override (for the connection-scale harness A/B): `MEFOR_PIPELINE_PER_LANE_WAKE=true`. Leave `false` until connection scale (hundreds+ of inbounds) makes the herd a measured cost. |
|
|
470
472
|
|
|
471
473
|
### `[diagnostics]`
|
|
472
474
|
The Corepoint-style **event log** (#46) — a metadata-only record of connection lifecycle / pre-ingress
|
{messagefoundry-0.2.11 → messagefoundry-0.2.12}/docs/adr/0001-staged-pipeline-architecture.md
RENAMED
|
@@ -134,7 +134,12 @@ expectation, not just a convention).
|
|
|
134
134
|
Use a **single generic staged-queue table** with a `stage` discriminator, mirroring the proven outbox
|
|
135
135
|
shape: `id, message_id, stage, payload, status, attempts, next_attempt_at, last_error, created_at,
|
|
136
136
|
updated_at`, indexed `(stage, status, next_attempt_at)` for the claim and ordered `(created_at, rowid)`
|
|
137
|
-
for FIFO.
|
|
137
|
+
for FIFO. **(Superseded by [ADR 0059](0059-seq-only-fifo-ordering.md): per-lane FIFO now orders by
|
|
138
|
+
`seq` alone — SQLite `rowid`, SQL Server `BIGINT IDENTITY`, Postgres `BIGSERIAL` — dropping the
|
|
139
|
+
`_fifo_created_at` write-time clamp. `created_at` stays a real ingest-time/metrics timestamp but is no
|
|
140
|
+
longer the ordering key; one serial writer per lane makes seq order == receive order with zero
|
|
141
|
+
wall-clock dependence. The reliability invariant and the #285 no-skip / head-of-line-blocking lock
|
|
142
|
+
semantics below are unchanged.)** The current **outbox becomes "the outbound stage's rows"** of this model. The Phase-1 store
|
|
138
143
|
methods generalize to take a `stage`: `claim_next_fifo` / `claim_ready`, `mark_done` / `mark_failed` /
|
|
139
144
|
`dead_letter_now`, `reset_stale_inflight`, `pending_depth`. The Phase-1 worker (FIFO/unordered,
|
|
140
145
|
retry-policy, internal-error policy, buildup alert) becomes a **per-stage worker** parameterized by
|
|
@@ -10,6 +10,14 @@
|
|
|
10
10
|
· [0005](0005-transform-accessible-state.md) (the read-through state caches) · [0037](0037-multi-process-sharding-l3.md)
|
|
11
11
|
(sharding — composes per shard) · [CLAUDE.md](../../CLAUDE.md) §2 (reliability + count-and-log invariants)
|
|
12
12
|
· BACKLOG #64 · `docs/research/db-commit-wall-backend-survey.md` (gitignored)
|
|
13
|
+
- **Correction (2026-06-30):** the `commit_delay`/`commit_siblings` "native group-commit" referenced
|
|
14
|
+
below is a **PostgreSQL-ONLY** GUC. **SQL Server has no durability-neutral group-commit knob** — its
|
|
15
|
+
only commit-coalescing control is `DELAYED_DURABILITY`, which *relaxes* durability (it could ACK a
|
|
16
|
+
crash-erasable message) and is therefore **rejected** for the PHI store. So the "server-DB native
|
|
17
|
+
group-commit" path here is Postgres-only; SQL Server's scale path is the concurrent pool + sharding
|
|
18
|
+
([ADR 0037](0037-multi-process-sharding-l3.md)), not a native GUC. **As built (#660) the committer is
|
|
19
|
+
SQLite-only**; Postgres `commit_delay` adoption remains a future **gated, off-by-default** increment,
|
|
20
|
+
measurement-deferred until sharding supplies enough concurrent in-flight commits to coalesce.
|
|
13
21
|
|
|
14
22
|
---
|
|
15
23
|
|