messagefoundry 0.2.4__tar.gz → 0.2.5__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.4 → messagefoundry-0.2.5}/.github/workflows/ci.yml +10 -1
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/.github/workflows/codeql.yml +2 -2
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/.github/workflows/dependabot-lock-resync.yml +5 -1
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/.github/workflows/release.yml +13 -4
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/.github/workflows/scorecard.yml +2 -2
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/.github/workflows/security.yml +6 -6
- messagefoundry-0.2.5/.github/zizmor.yml +31 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/CHANGELOG.md +19 -1
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/PKG-INFO +1 -1
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/__init__.py +1 -1
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/config/settings.py +3 -3
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/store/sqlserver.py +14 -0
- messagefoundry-0.2.5/tests/test_sqlserver_schema_init.py +96 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/.claude/settings.json +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/.dockerignore +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/.gitattributes +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/.github/CODEOWNERS +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/.github/SECURITY.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/.github/dependabot.yml +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/.github/workflows/benchmark.yml +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/.github/workflows/cla.yml +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/.github/workflows/dependabot-auto-merge.yml +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/.github/workflows/release-sync-check.yml +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/.github/workflows/vuln-metrics.yml +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/.gitignore +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/.gitleaks.toml +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/.pre-commit-config.yaml +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/.semgrep/messagefoundry.yml +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/CLA.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/CLAUDE.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/CODE_OF_CONDUCT.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/COMMERCIAL-LICENSE.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/CONTRIBUTING.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/GOVERNANCE.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/LICENSE +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/MAINTAINERS.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/NOTICE +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/README.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docker/Dockerfile +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docker/README.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docker/compose.yaml +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docker/k8s/secret.example.yaml +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docker/k8s/statefulset.yaml +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docker/locks/requirements-core.lock +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docker/locks/requirements-sqlserver.lock +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docker/secrets.env.example +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docker/smoke/Dockerfile +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docker/smoke/config/IB_Test_ADT.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docker/smoke/send_adt.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/ADOPTER-CI.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/AI.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/ARCHITECTURE.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/BACKLOG.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/CI-QUALITY.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/CLUSTERING.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/CODESETS.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/CONFIGURATION.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/CONNECTIONS.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/CONTAINER-EXPOSURE-EVALUATION.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/CONTRIBUTOR-FIRST-ISSUES.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/CONTRIBUTOR-PROGRAM-PLAN.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/COUNSEL-ENGAGEMENT-BRIEF.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/DEPLOY-SERVER-DB.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/DEPLOYMENT.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/DICOM.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/DUAL_LICENSING_PLAN.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/EARLY-ADOPTER-GUIDE.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/FEATURE-MAP.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/HL7-VALIDATION.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/INSTALL-GUIDE.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/LOAD-TESTING.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/MENTAL-MODEL.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/MessageFoundry-Mental-Model.docx +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/PHI.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/REMOTE-CONSOLE-CUSTOMER-GUIDE.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/REMOTE-CONSOLE.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/SECURITY.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/SERVICE.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/SUPPORT-POLICY.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/SYSTEM-REQUIREMENTS.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/Secure_AI_Development_Standards.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/Secure_Development_Standards.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/TEE-RELAY.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/THROUGHPUT-IMPROVEMENTS.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/USER-GUIDE.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/WORKTREES.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0001-staged-pipeline-architecture.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0002-phase2-transport-security-and-strong-auth.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0003-non-hl7-transports-database-rest-soap.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0004-payload-agnostic-ingress.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0005-transform-accessible-state.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0006-external-data-lookups.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0007-gui-manageable-connections-toml.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0008-cluster-observability-api.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0009-run-scoped-context-providers.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0010-handler-callable-db-lookup.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0011-timer-scheduled-source.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0012-x12-edi-codec.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0013-increment-2-reingress-design.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0013-query-response-orchestration.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0014-alerting-rules-engine.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0015-ws-soap-outbound-mtls-wssecurity.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0016-synchronous-x12-request-response.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0017-consumer-deployment-model.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0018-per-message-signatures-accepted-risk.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0019-pluggable-keyprovider-hsm-kms-vault.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0020-protocol-diagnostic-capture.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0021-inbound-ack-nak-capture-response-sent.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0022-fhir-resource-codec-rest-client.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0024-smart-backend-services-token-provider.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0025-dicom-codec-store-connectors.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0026-off-box-egress-update-check.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0028-base64-binary-carriage-codec.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0030-anonymization-test-harness-tee.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0031-startup-connection-fault-isolation.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0032-console-desktop-launch.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0033-gui-manageable-code-sets.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/README.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/TEMPLATE.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/architecture-components.png +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/architecture-components.svg +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/architecture-config-graph.png +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/architecture-config-graph.svg +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/architecture-diagram.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/architecture-message-flow.png +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/architecture-message-flow.svg +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/architecture-topology.png +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/architecture-topology.svg +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/benchmarks/TUNING-BASELINE.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/benchmarks/results/2026-06-16-ci-linux/environment.txt +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/benchmarks/results/2026-06-16-ci-linux/failover-postgres.json +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/benchmarks/results/2026-06-16-ci-linux/failover-sqlserver.json +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/benchmarks/results/2026-06-16-ci-linux/reference-postgres.json +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/benchmarks/results/2026-06-16-ci-linux/reference-sqlite.json +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/benchmarks/results/2026-06-16-ci-linux/reference-sqlserver.json +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/benchmarks/step-b-write-amplification.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/hl7-message-ordering-reference.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/message-ordering-design.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/releases/ASVS-OPTION-A-MULTISESSION-PLAN.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/releases/ASVS-PARTIALS-SWEEP-MULTISESSION-PLAN.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/releases/DOGFOOD-BACKLOG-MULTISESSION-PLAN.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/releases/MULTISESSION-PLAN-3.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/releases/MULTISESSION-PLAN-v0.2.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/releases/MULTISESSION-PLAN.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/releases/PLAN-3-LANE-HANDOFFS.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/releases/V0.2-LANE-HANDOFFS.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/releases/v0.1-EXECUTION-PLAN.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/releases/v0.1-PLAN.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/releases/v0.1.0-PRETAG-CHECKLIST.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/research/cloud-deployment-research-2026-06.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/research/config-ux-review.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/research/non-hl7-transform-components.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/reviews/DEPENDENCY-INFOSEC-POSTURE-2026-06-23.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/reviews/FULL-REVIEW-2026-06-10.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/security/ADVISORY-PROCESS.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/security/ASVS-FAILS-REMEDIATION-PLAN.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/security/ASVS-L2-PHASE0-CHANGES.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/security/ASVS-L2-REMEDIATION-PLAN.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/security/ASVS-L3-ASSESSMENT.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/security/ASVS-L3-REMEDIATION-PLAN.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/security/ASVS-L3-STATUS.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/security/BEYOND-ASVS-L3-ONEPAGE.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/security/BEYOND-ASVS-L3-REMEDIATION-PLAN-ONEPAGE.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/security/BEYOND-ASVS-L3-REMEDIATION-PLAN.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/security/BEYOND-ASVS-L3.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/security/DEP-CVE-RUNBOOK.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/security/DEPENDENCY-METRICS.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/security/MEFOR-Code-Review-Checklist.xlsx +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/security/PHASE-8C-RBAC.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/security/PUBLISHING.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/security/RCA-TEMPLATE.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/security/RELEASE-GATE.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/security/REMEDIATION-PLAN.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/security/REVIEW-2026-06-07.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/security/SDS-CONFORMANCE-REVIEW-2026-06-12.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/security/SDS-REMEDIATION-PLAN.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/security/SECURITY-POSTURE.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/security/SOUP-DEPENDENCY-HANDLING.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/security/SOUP-REVIEW-2026-06-18.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/security/SOUP-REVIEW-PROCEDURE.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/security/THREAT-MODEL.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/testing/VERIFY.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/testing/WIN2025-ACCEPTANCE.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/testing/WIN2025-TEST-MATRIX.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/testing/WIN2025-TEST-PLAN.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/environments/dev.toml +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/environments/prod.toml +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/README.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/__main__.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/acceptance/__init__.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/acceptance/__main__.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/acceptance/matrix.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/acceptance/probes.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/acceptance/report.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/acceptance/runner.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/compose.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/config/coverage.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/config/load/_shape.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/config/load/graph.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/file_panel.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/file_transport.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/load/__init__.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/load/corpus.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/load/correlator.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/load/enginepoll.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/load/failover.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/load/failover_track.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/load/governor.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/load/ids.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/load/metrics.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/load/profile.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/load/profiles/README.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/load/profiles/closed-loop.toml +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/load/profiles/failover.toml +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/load/profiles/fanout-baseline.toml +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/load/profiles/malformed-load.toml +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/load/profiles/reference.toml +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/load/profiles/smoke-sqlserver.toml +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/load/profiles/smoke.toml +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/load/profiles/soak.toml +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/load/profiles/spike-burst.toml +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/load/profiles/sustained-overload.toml +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/load/profiles/writeamp.toml +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/load/report.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/load/runner.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/load/sender.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/load/sink.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/mllp.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/monitor.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/receive.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/reconcile/__init__.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/reconcile/__main__.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/reconcile/capture.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/reconcile/compare.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/reconcile/normalize.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/reconcile/report.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/scenarios.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/send.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/harness/window.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/.gitignore +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/.vscodeignore +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/README.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/esbuild.js +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/media/hl7schema.json +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/media/icon.png +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/media/icon.svg +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/package-lock.json +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/package.json +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/snippets/messagefoundry.code-snippets +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/src/aiPolicy.ts +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/src/alertEditor.ts +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/src/auth.ts +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/src/chat.ts +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/src/cli.ts +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/src/codeSetEditor.ts +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/src/codesetsTree.ts +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/src/completion.ts +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/src/connectionEditor.ts +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/src/engineClient.ts +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/src/extension.ts +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/src/generate.ts +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/src/git.ts +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/src/graphTree.ts +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/src/home.ts +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/src/newRoute.ts +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/src/promote.ts +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/src/sourceControl.ts +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/src/test/runTest.ts +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/src/test/suite/chat.test.ts +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/src/test/suite/extension.test.ts +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/src/test/suite/index.ts +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/src/testBench.ts +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/src/validate.ts +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/tsconfig.json +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/ide/tsconfig.test.json +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/mefor.code-workspace +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/__main__.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/adr_analyze.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/anon/__init__.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/anon/_pools.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/anon/hl7.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/anon/keying.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/anon/leak.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/anon/rules.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/anon/surrogates.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/api/__init__.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/api/app.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/api/approvals.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/api/auth_models.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/api/auth_routes.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/api/field_authz.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/api/metrics.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/api/models.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/api/security.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/api/tls.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/auth/__init__.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/auth/data/common_passwords.NOTICE +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/auth/data/common_passwords.txt +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/auth/identity.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/auth/ldap.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/auth/notifications.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/auth/passwords.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/auth/permissions.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/auth/policy.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/auth/ratelimit.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/auth/service.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/auth/tokens.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/auth/totp.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/checks.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/config/__init__.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/config/active_environment.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/config/ai_policy.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/config/alerts_edit.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/config/code_sets.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/config/codeset_edit.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/config/connections_edit.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/config/connections_file.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/config/db_lookup.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/config/environments.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/config/ingest_time.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/config/models.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/config/reference.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/config/response.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/config/run_context.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/config/state.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/config/tls_policy.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/config/wiring.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/console/__init__.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/console/__main__.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/console/_async.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/console/alerts_page.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/console/change_password.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/console/client.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/console/connections.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/console/dead_letters_page.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/console/delegates.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/console/event_log_page.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/console/icons/alerts.svg +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/console/icons/connections.svg +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/console/icons/dead-letters.svg +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/console/icons/engine-status.svg +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/console/icons/log-search.svg +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/console/icons/logo-lockup.svg +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/console/icons/users.svg +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/console/login.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/console/mfa.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/console/reauth.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/console/resources/README.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/console/resources/app.ico +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/console/resources/app.svg +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/console/search.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/console/service_control.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/console/sessions.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/console/shell.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/console/status.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/console/theme.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/console/users_page.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/console/widgets.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/generators/README.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/generators/__init__.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/generators/_core.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/generators/_hl7data.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/generators/adt.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/generators/all_types.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/generators/bar.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/generators/dft.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/generators/documents.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/generators/mdm.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/generators/mfn.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/generators/oml.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/generators/orl.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/generators/orm.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/generators/oru.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/generators/ras.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/generators/rde.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/generators/siu.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/generators/vxu.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/hl7schema.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/last_resort.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/logging_setup.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/parsing/__init__.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/parsing/binary.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/parsing/consistency.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/parsing/dicom/__init__.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/parsing/dicom/_deps.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/parsing/dicom/_util.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/parsing/dicom/dataset.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/parsing/dicom/errors.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/parsing/dicom/hl7_map.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/parsing/dicom/peek.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/parsing/fhir/__init__.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/parsing/fhir/_deps.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/parsing/fhir/errors.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/parsing/fhir/peek.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/parsing/fhir/resource.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/parsing/groups.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/parsing/message.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/parsing/peek.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/parsing/split.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/parsing/summary.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/parsing/tree.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/parsing/validate.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/parsing/x12/__init__.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/parsing/x12/delimiters.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/parsing/x12/errors.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/parsing/x12/interchange.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/parsing/x12/message.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/parsing/x12/peek.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/pipeline/__init__.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/pipeline/alert_sinks.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/pipeline/alerts.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/pipeline/cert_expiry.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/pipeline/cluster.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/pipeline/cluster_sqlserver.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/pipeline/config_convergence.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/pipeline/dryrun.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/pipeline/engine.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/pipeline/leader_tasks.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/pipeline/reference_sync.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/pipeline/retention.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/pipeline/security_notify.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/pipeline/state_convergence.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/pipeline/wiring_runner.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/py.typed +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/redaction.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/scaffold.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/secrets_dpapi.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/store/__init__.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/store/audit_tee.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/store/base.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/store/crypto.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/store/keyprovider.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/store/postgres.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/store/store.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/timezone.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/transports/__init__.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/transports/base.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/transports/database.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/transports/dicom.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/transports/dicomweb.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/transports/fhir.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/transports/file.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/transports/framing.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/transports/loopback.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/transports/mllp.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/transports/remotefile.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/transports/rest.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/transports/signing.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/transports/smart.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/transports/soap.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/transports/tcp.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/transports/timer.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/transports/x12.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/verify/__init__.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/verify/checks.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/verify/model.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/verify/report.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/verify/runner.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/messagefoundry/verify/smoke.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/packaging/messagefoundry-harness/README.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/packaging/messagefoundry-harness/pyproject.toml +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/pyproject.toml +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/requirements.lock +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/samples/config/IB_ACME_ADT.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/samples/config/IB_FHIR_INTAKE.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/samples/config/IB_IMMUNIZATION_VXU.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/samples/config/IB_PARTNER_X12.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/samples/config/IB_RADIOLOGY_SR.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/samples/config/IB_RTE_ELIGIBILITY.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/samples/config/adt.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/samples/config/codesets/event_labels.csv +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/samples/config/codesets/facility_mnemonics.toml +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/samples/config/connections.toml +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/samples/consistency/validated_adt.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/samples/dicom/generate_sr_sample.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/samples/messages/adt_a01.hl7 +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/samples/messages/adt_batch.hl7 +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/samples/messages/hapi-hl7v2/.gitattributes +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/samples/messages/hapi-hl7v2/README.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/samples/messages/hapi-hl7v2/adt_a01.txt +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/samples/messages/hapi-hl7v2/adt_a03.txt +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/samples/messages/hapi-hl7v2/batch_18_messages.txt +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/samples/messages/hapi-hl7v2/erp_z99_v231.hl7 +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/samples/messages/hapi-hl7v2/omd_o03.txt +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/samples/messages/hapi-hl7v2/omd_o03_rep.txt +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/samples/messages/hapi-hl7v2/oml_o21.hl7 +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/samples/messages/x12_270_eligibility.edi +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/samples/results_relay/README.md +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/samples/results_relay/codesets/test_codes.csv +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/samples/results_relay/messages/oru_all_cancelled.hl7 +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/samples/results_relay/messages/oru_results.hl7 +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/samples/results_relay/results_relay.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/samples/send_mllp.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/scripts/console/install-console-shortcut.ps1 +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/scripts/console/pack_ico.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/scripts/console/uninstall-console-shortcut.ps1 +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/scripts/dev/postgres.ps1 +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/scripts/dev/sqlserver-docker.ps1 +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/scripts/dev/sqlserver.ps1 +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/scripts/hooks/block-blanket-git-stage.ps1 +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/scripts/publish/check_release_sync.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/scripts/publish/publish-denylist.txt +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/scripts/publish/publish.ps1 +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/scripts/publish/scan_forbidden.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/scripts/security/crypto_inventory_check.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/scripts/security/vuln_metrics.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/scripts/service/import-db-ca.ps1 +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/scripts/service/install-service.ps1 +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/scripts/service/uninstall-service.ps1 +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/scripts/trace_icon.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/scripts/worktree/new.ps1 +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/scripts/worktree/remove.ps1 +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/scripts/worktree/session-context.ps1 +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/scripts/worktree/spawn.ps1 +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tee/__init__.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tee/__main__.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tee/anon/__init__.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tee/anon/_hl7data.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tee/anon/_pools.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tee/anon/hl7.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tee/anon/keying.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tee/anon/leak.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tee/anon/rules.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tee/anon/surrogates.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tee/compare.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tee/correlate.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tee/hl7_fields.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tee/mefor_api.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tee/mllp.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tee/relay.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tee/report.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tee/store.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/_dicom_sample.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/_failover_load_support.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/_fhir_fixtures.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/conftest.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_acceptance_framework.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_ack_capture_runner.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_ack_sent_store.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_active_environment.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_ad_group_scope.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_admin_new_ip.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_adr_analyze.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_ai_policy.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_alert_rules.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_alert_sinks.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_alerts_edit.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_alerts_rules_api.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_anon_core.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_anon_integration.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_anon_parity.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_api.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_api_auth.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_api_reload.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_api_tls.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_approvals.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_asvs_phase0.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_audit_integrity.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_audit_offbox_tee.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_auth_core.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_auth_entry_hardening.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_auth_hardening.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_auth_service.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_auth_session_lifecycle.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_auth_store.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_binary_carriage.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_cert_expiry.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_channel_rbac.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_checks.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_cli.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_cluster.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_cluster_failover_postgres.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_cluster_failover_sqlserver.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_cluster_graph_gating.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_cluster_lease.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_code_sets.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_codeset_edit.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_connection_api.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_connection_event_api.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_connection_event_emit.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_connection_event_outbound.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_connection_event_store.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_connection_resilience.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_connections_cli.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_connections_file.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_consistency.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_console_alerts.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_console_auth.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_console_client.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_console_dead_letters.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_console_event_log.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_console_hardening.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_console_icon.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_console_password.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_console_sessions.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_console_status.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_console_step_up.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_console_theme.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_console_users.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_console_widgets.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_database_connector_integration.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_database_transport.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_db_lookup.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_db_lookup_live_runner.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_delivery_settings.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_dependency_boundaries.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_dicom_codec.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_dicom_scp.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_dicom_scu.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_dicom_wiring.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_dicomweb.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_docs_runbooks.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_dryrun.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_ed_documents.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_ed_documents_e2e.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_egress_allowlist.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_environments.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_fhir_parsing.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_fhir_resource.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_fhir_transport.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_field_authz.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_fifo_ordering.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_generate_cli.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_generated_adt.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_generators_core.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_generators_types.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_groups.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_harness.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_harness_compose.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_harness_config.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_harness_faults.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_harness_file.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_harness_monitor.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_harness_scenarios.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_hl7_core_features.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_hl7schema.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_inbound_bind.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_ingest_time.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_keyprovider.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_last_resort.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_leader_tasks.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_load_config.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_load_corpus.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_load_failover_postgres.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_load_failover_sqlserver.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_load_failover_unit.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_load_metrics.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_load_profile.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_load_report.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_load_runner.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_load_sender.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_load_sink.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_logging.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_message.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_message_split.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_metrics_exporter.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_mfa.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_mllp_encoding_override.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_mllp_tls.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_operability_config.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_outbound_signing.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_outbound_simulate.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_packaging.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_parse_tree.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_parsing.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_payload_agnostic_ingress.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_postgres_store.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_reconcile_capture.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_reconcile_compare.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_reconcile_harness.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_redaction.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_reference_sets.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_reingress.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_remotefile_transport.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_response_capture.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_rest_transport.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_retention.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_run_context.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_scaffold.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_scan_forbidden.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_secrets_dpapi.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_security_notify.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_security_static.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_service_control.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_settings.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_smart_backend.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_soap_transport.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_soap_wssecurity.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_sqlserver_coordinator.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_sqlserver_cursor_close.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_sqlserver_store.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_staged_pipeline.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_startup_fault_isolation.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_stats_reset.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_step_up.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_store.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_store_backend.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_store_encryption.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_store_file_hardening.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_store_read_pool.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_store_ssl.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_summary.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_task_resilience.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_tcp_transport.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_tee_cli.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_tee_compare.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_tee_correlate.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_tee_hl7_fields.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_tee_mefor_api.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_tee_mllp.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_tee_relay.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_tee_report.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_tee_store.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_timer_source.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_timezone.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_tls_policy.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_totp.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_transform_state.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_transports.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_verify.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_version.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_win2025_acceptance.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_wiring.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_wiring_engine.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_wiring_reload.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_wiring_serve.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_x12_parsing.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_x12_rte.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/tests/test_x12_transport.py +0 -0
- {messagefoundry-0.2.4 → messagefoundry-0.2.5}/uv.lock +0 -0
|
@@ -10,6 +10,11 @@ concurrency:
|
|
|
10
10
|
group: ci-${{ github.ref }}
|
|
11
11
|
cancel-in-progress: true
|
|
12
12
|
|
|
13
|
+
# Least privilege: every job here only reads the repo and runs tests/builds (no gh writes, no git push,
|
|
14
|
+
# no secrets), so a read-only default token is sufficient. A job needing more declares its own block.
|
|
15
|
+
permissions:
|
|
16
|
+
contents: read
|
|
17
|
+
|
|
13
18
|
jobs:
|
|
14
19
|
# Lint + type-check + unit tests. The project supports a single Python — 3.14 — so every leg runs it.
|
|
15
20
|
# Linux carries the cheap breadth (1x minutes); Windows Server 2022 + 2025 is the primary deployment
|
|
@@ -809,9 +814,13 @@ jobs:
|
|
|
809
814
|
if: >-
|
|
810
815
|
contains(needs.*.result, 'failure') ||
|
|
811
816
|
contains(needs.*.result, 'cancelled')
|
|
817
|
+
env:
|
|
818
|
+
# Pass the needs context via env, not inline ${{ }} in the run block (defense-in-depth against
|
|
819
|
+
# template injection — a job output could in theory carry a quote that breaks out of echo).
|
|
820
|
+
NEEDS_JSON: ${{ toJSON(needs) }}
|
|
812
821
|
run: |
|
|
813
822
|
echo "::error::A gated CI leg failed or was cancelled."
|
|
814
|
-
echo
|
|
823
|
+
echo "$NEEDS_JSON"
|
|
815
824
|
exit 1
|
|
816
825
|
|
|
817
826
|
- name: Gated legs OK
|
|
@@ -56,12 +56,12 @@ jobs:
|
|
|
56
56
|
with:
|
|
57
57
|
persist-credentials: false # CodeQL uploads via the job token, not a persisted git credential
|
|
58
58
|
- name: Initialize CodeQL
|
|
59
|
-
uses: github/codeql-action/init@
|
|
59
|
+
uses: github/codeql-action/init@dd903d2e4f5405488e5ef1422510ee31c8b32357 # v3.36.2
|
|
60
60
|
with:
|
|
61
61
|
languages: ${{ matrix.language }}
|
|
62
62
|
# security-extended adds higher-recall security queries on top of the default suite.
|
|
63
63
|
queries: security-extended
|
|
64
64
|
- name: Analyze
|
|
65
|
-
uses: github/codeql-action/analyze@
|
|
65
|
+
uses: github/codeql-action/analyze@dd903d2e4f5405488e5ef1422510ee31c8b32357 # v3.36.2
|
|
66
66
|
with:
|
|
67
67
|
category: "/language:${{ matrix.language }}"
|
|
@@ -75,6 +75,10 @@ jobs:
|
|
|
75
75
|
uv export --no-emit-project --no-dev --extra sqlserver --format requirements.txt -o docker/locks/requirements-sqlserver.lock
|
|
76
76
|
|
|
77
77
|
- name: Commit and push the resynced locks
|
|
78
|
+
env:
|
|
79
|
+
# Pass the PR head ref through the environment, NOT inline ${{ }} in the run block, so a branch
|
|
80
|
+
# name containing shell metacharacters can never be evaluated as code (template injection).
|
|
81
|
+
HEAD_REF: ${{ github.event.pull_request.head.ref }}
|
|
78
82
|
run: |
|
|
79
83
|
set -euo pipefail
|
|
80
84
|
git config user.name 'dependabot[bot]'
|
|
@@ -88,4 +92,4 @@ jobs:
|
|
|
88
92
|
# Push with the persisted App-token credential (NOT GITHUB_TOKEN). An App-token push emits a
|
|
89
93
|
# synchronize event so the required checks (DEP-1, ci.yml) re-run on the new commit; a
|
|
90
94
|
# GITHUB_TOKEN push would leave them pending and the PR unmergeable.
|
|
91
|
-
git push origin "HEAD:${
|
|
95
|
+
git push origin "HEAD:${HEAD_REF}"
|
|
@@ -34,16 +34,20 @@ on:
|
|
|
34
34
|
- "v[0-9]+.[0-9]+.[0-9]+-*" # pre-releases: v0.1.0-rc1, …
|
|
35
35
|
workflow_dispatch:
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
id-token: write # Sigstore signing, PyPI Trusted Publishing, + provenance — all via the GitHub OIDC identity
|
|
40
|
-
attestations: write # write the SLSA build-provenance attestation (actions/attest-build-provenance)
|
|
37
|
+
# Deny-all at the workflow level; each job below requests only the scopes it uses (least privilege).
|
|
38
|
+
permissions: {}
|
|
41
39
|
|
|
42
40
|
jobs:
|
|
43
41
|
release:
|
|
44
42
|
runs-on: ubuntu-latest
|
|
43
|
+
permissions:
|
|
44
|
+
contents: write # create the release + upload its assets
|
|
45
|
+
id-token: write # Sigstore signing, PyPI Trusted Publishing, + provenance — all via the GitHub OIDC identity
|
|
46
|
+
attestations: write # write the SLSA build-provenance attestation (actions/attest-build-provenance)
|
|
45
47
|
steps:
|
|
46
48
|
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
49
|
+
with:
|
|
50
|
+
persist-credentials: false # release uses GH_TOKEN env / OIDC, never the persisted git credential
|
|
47
51
|
|
|
48
52
|
- name: Set up Python
|
|
49
53
|
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
|
|
@@ -171,8 +175,13 @@ jobs:
|
|
|
171
175
|
# publish — so a missing harness PyPI project can never red a release.
|
|
172
176
|
needs: release
|
|
173
177
|
runs-on: ubuntu-latest
|
|
178
|
+
permissions:
|
|
179
|
+
contents: write # gh release upload (attach the harness wheel)
|
|
180
|
+
id-token: write # PyPI Trusted Publishing (OIDC) for the harness wheel
|
|
174
181
|
steps:
|
|
175
182
|
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
183
|
+
with:
|
|
184
|
+
persist-credentials: false # gh upload uses GH_TOKEN env / OIDC, never the persisted git credential
|
|
176
185
|
|
|
177
186
|
- name: Set up Python
|
|
178
187
|
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
|
|
@@ -42,7 +42,7 @@ jobs:
|
|
|
42
42
|
with:
|
|
43
43
|
persist-credentials: false
|
|
44
44
|
- name: Run Scorecard
|
|
45
|
-
uses: ossf/scorecard-action@
|
|
45
|
+
uses: ossf/scorecard-action@4eaacf0543bb3f2c246792bd56e8cdeffafb205a # v2.4.3
|
|
46
46
|
with:
|
|
47
47
|
results_file: results.sarif
|
|
48
48
|
results_format: sarif
|
|
@@ -54,6 +54,6 @@ jobs:
|
|
|
54
54
|
path: results.sarif
|
|
55
55
|
retention-days: 5
|
|
56
56
|
- name: Upload to code scanning
|
|
57
|
-
uses: github/codeql-action/upload-sarif@
|
|
57
|
+
uses: github/codeql-action/upload-sarif@dd903d2e4f5405488e5ef1422510ee31c8b32357 # v3.36.2
|
|
58
58
|
with:
|
|
59
59
|
sarif_file: results.sarif
|
|
@@ -214,12 +214,12 @@ jobs:
|
|
|
214
214
|
zizmor:
|
|
215
215
|
name: zizmor (GitHub Actions static analysis)
|
|
216
216
|
runs-on: ubuntu-latest
|
|
217
|
-
#
|
|
218
|
-
#
|
|
219
|
-
#
|
|
220
|
-
#
|
|
221
|
-
#
|
|
222
|
-
|
|
217
|
+
# BLOCKING: static analysis of the workflow files THEMSELVES (Trail of Bits) — template injection,
|
|
218
|
+
# over-broad GITHUB_TOKEN permissions, dangerous triggers, artifact-credential persistence. The
|
|
219
|
+
# baseline is clean — high-confidence findings are fixed in-tree (least-privilege per-job permissions,
|
|
220
|
+
# env-passed refs, persist-credentials: false) and the few safe-by-design ones are recorded with a
|
|
221
|
+
# justification in .github/zizmor.yml — so a NEW workflow-security regression now fails the build.
|
|
222
|
+
# Tune suppressions in .github/zizmor.yml (with a reason), not by relaxing this gate.
|
|
223
223
|
permissions:
|
|
224
224
|
contents: read
|
|
225
225
|
steps:
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# zizmor configuration — https://docs.zizmor.sh/configuration/
|
|
2
|
+
#
|
|
3
|
+
# Each entry below is a REVIEWED, justified non-finding for this repo. Real fixes live in the workflow
|
|
4
|
+
# files themselves (least-privilege permissions, env-passed refs, persist-credentials: false); this file
|
|
5
|
+
# is only for findings that are safe-by-design here. Keep it small and commented — a suppression without
|
|
6
|
+
# a reason is a latent vulnerability.
|
|
7
|
+
rules:
|
|
8
|
+
dangerous-triggers:
|
|
9
|
+
ignore:
|
|
10
|
+
# A CLA assistant REQUIRES pull_request_target to record signatures + comment on fork PRs. This
|
|
11
|
+
# workflow never checks out untrusted PR code, pins the third-party action by SHA, and gates on the
|
|
12
|
+
# immutable comment body / event name — so the usual pull_request_target risk (running attacker
|
|
13
|
+
# code with a write token) does not apply. See the SECURITY note in cla.yml.
|
|
14
|
+
- cla.yml
|
|
15
|
+
|
|
16
|
+
artipacked:
|
|
17
|
+
ignore:
|
|
18
|
+
# artipacked flags a checkout that persists the token's git credential — a risk only if that
|
|
19
|
+
# credential can leak into an uploaded artifact. The jobs below do not push and never upload the
|
|
20
|
+
# repo/.git tree, so the persisted credential is inert noise here.
|
|
21
|
+
#
|
|
22
|
+
# NOT suppressed (fixed at the source instead): release.yml sets persist-credentials: false on both
|
|
23
|
+
# checkouts because it DOES upload build artifacts. dependabot-lock-resync.yml persists a
|
|
24
|
+
# narrowly-scoped App token ON PURPOSE to push the resynced locks (documented inline) and is listed
|
|
25
|
+
# here for that reason.
|
|
26
|
+
- benchmark.yml
|
|
27
|
+
- ci.yml
|
|
28
|
+
- dependabot-lock-resync.yml
|
|
29
|
+
- release-sync-check.yml
|
|
30
|
+
- security.yml
|
|
31
|
+
- vuln-metrics.yml
|
|
@@ -6,6 +6,23 @@ All notable changes to MessageFoundry are documented here. The format follows
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.2.5] — 2026-06-26 — Early Access
|
|
10
|
+
|
|
11
|
+
A bug-fix release hardening SQL Server cluster cold-start.
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
- **SQL Server: concurrent schema-init race on a virgin DB (HA cold start).** Two cluster nodes starting
|
|
15
|
+
simultaneously against an empty database both ran the `IF OBJECT_ID(...) IS NULL CREATE TABLE` guards
|
|
16
|
+
with no cross-node lock, so both issued `CREATE` and the loser died at startup on a `2714` ("There is
|
|
17
|
+
already an object named ..."). `_ensure_schema` now takes an exclusive `sp_getapplock`
|
|
18
|
+
(`mefor:schema_init`) around the DDL — the T-SQL analog of the PostgreSQL store's existing schema
|
|
19
|
+
advisory lock — so the second node serializes and runs the now-no-op guarded CREATEs cleanly. Single-node
|
|
20
|
+
and pre-created schema are unaffected; SQLite and PostgreSQL were already race-safe. (#553)
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
- Docs: the `[cluster]` settings docstring and the pool-size validation error now name both `postgres` and
|
|
24
|
+
`sqlserver` (the cross-section validator already admitted both). (#553)
|
|
25
|
+
|
|
9
26
|
## [0.2.4] — 2026-06-26 — Early Access
|
|
10
27
|
|
|
11
28
|
A bug-fix release that completes the EF-6 SQL Server fix shipped in 0.2.3.
|
|
@@ -186,7 +203,8 @@ tests, but the external code review + penetration test (the bar for a security-c
|
|
|
186
203
|
- Releases are built, SBOM'd (CycloneDX), and signed with [Sigstore](https://www.sigstore.dev/) — see the
|
|
187
204
|
`release` workflow.
|
|
188
205
|
|
|
189
|
-
[Unreleased]: https://github.com/wshallwshall/MessageFoundry/compare/v0.2.
|
|
206
|
+
[Unreleased]: https://github.com/wshallwshall/MessageFoundry/compare/v0.2.5...HEAD
|
|
207
|
+
[0.2.5]: https://github.com/wshallwshall/MessageFoundry/compare/v0.2.4...v0.2.5
|
|
190
208
|
[0.2.4]: https://github.com/wshallwshall/MessageFoundry/compare/v0.2.3...v0.2.4
|
|
191
209
|
[0.2.3]: https://github.com/wshallwshall/MessageFoundry/compare/v0.2.2...v0.2.3
|
|
192
210
|
[0.2.2]: https://github.com/wshallwshall/MessageFoundry/compare/v0.2.1...v0.2.2
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: messagefoundry
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.5
|
|
4
4
|
Summary: Open-source healthcare integration engine — route, transform, and validate messages across many formats and connection types
|
|
5
5
|
License-Expression: AGPL-3.0-or-later
|
|
6
6
|
License-File: LICENSE
|
|
@@ -60,7 +60,7 @@ from messagefoundry.parsing.message import Message, RawMessage
|
|
|
60
60
|
from messagefoundry.parsing.split import split_by_obr
|
|
61
61
|
from messagefoundry.timezone import convert_hl7_timestamp, to_zone
|
|
62
62
|
|
|
63
|
-
__version__ = "0.2.
|
|
63
|
+
__version__ = "0.2.5"
|
|
64
64
|
|
|
65
65
|
__all__ = [
|
|
66
66
|
"Message",
|
|
@@ -1116,8 +1116,8 @@ class ClusterSettings(_Section):
|
|
|
1116
1116
|
``heartbeat_seconds`` to ``DB_now + leader_lease_ttl_seconds``, a standby acquires only once that
|
|
1117
1117
|
lease has expired, and a leader that cannot renew within ``leader_fence_timeout_seconds`` self-fences
|
|
1118
1118
|
before the lease can expire (the split-brain guard). The cross-section validator below requires
|
|
1119
|
-
``[store].backend
|
|
1120
|
-
drives concurrent background work against the pool)."""
|
|
1119
|
+
``[store].backend`` in ``{postgres, sqlserver}`` and ``[store].pool_size >= 2`` when this is enabled
|
|
1120
|
+
(a clustered node drives concurrent background work against the pool)."""
|
|
1121
1121
|
|
|
1122
1122
|
enabled: bool = False
|
|
1123
1123
|
# Override the auto-generated node id (host:pid:hex). Pin it for a stable identity across restarts
|
|
@@ -1306,7 +1306,7 @@ class ServiceSettings(BaseModel):
|
|
|
1306
1306
|
f"(got {self.store.pool_size}); a clustered node drives concurrent background work "
|
|
1307
1307
|
"(the membership/lease maintenance loop + the leader reclaim sweep + the per-stage "
|
|
1308
1308
|
"workers) against the pool, so a pool of 1 would serialize everything — prefer "
|
|
1309
|
-
"pool_size >= 3 for clustered Postgres"
|
|
1309
|
+
"pool_size >= 3 for a clustered node (Postgres or SQL Server)"
|
|
1310
1310
|
)
|
|
1311
1311
|
return self
|
|
1312
1312
|
|
|
@@ -70,6 +70,12 @@ log = logging.getLogger(__name__)
|
|
|
70
70
|
|
|
71
71
|
# Schema (T-SQL). Idempotent: guarded by OBJECT_ID / IndexProperty so re-open is a no-op. Epoch
|
|
72
72
|
# timestamps are FLOAT; ids are NVARCHAR(64) (uuid4 hex); bodies NVARCHAR(MAX).
|
|
73
|
+
#
|
|
74
|
+
# Schema-init is serialized across concurrent opens by this named applock (the T-SQL analog of the
|
|
75
|
+
# Postgres store's ``pg_advisory_xact_lock("mefor_schema_init")`` — store/postgres.py). The OBJECT_ID
|
|
76
|
+
# guards below are check-then-create and do NOT serialize concurrent creators on a virgin DB — see
|
|
77
|
+
# _ensure_schema.
|
|
78
|
+
_SCHEMA_LOCK = "mefor:schema_init"
|
|
73
79
|
_SCHEMA: list[str] = [
|
|
74
80
|
"""IF OBJECT_ID('messages','U') IS NULL CREATE TABLE messages (
|
|
75
81
|
id NVARCHAR(64) NOT NULL PRIMARY KEY, channel_id NVARCHAR(256) NOT NULL,
|
|
@@ -578,6 +584,14 @@ class SqlServerStore:
|
|
|
578
584
|
async def _ensure_schema(self) -> None:
|
|
579
585
|
async with self._acquire() as conn, self._cursor(conn) as cur:
|
|
580
586
|
try:
|
|
587
|
+
# Serialize schema-init across concurrent opens (e.g. a 2-node HA cold start against a
|
|
588
|
+
# virgin DB) — the T-SQL analog of the Postgres store's schema advisory lock. Without it
|
|
589
|
+
# the `IF OBJECT_ID(...) IS NULL CREATE` guards below are check-then-create: two nodes
|
|
590
|
+
# both see NULL and both CREATE, and the loser dies on a 2714 "There is already an object
|
|
591
|
+
# named ...". The applock is transaction-scoped (the autocommit=False pool means this
|
|
592
|
+
# first statement opens the txn), so it auto-releases on the commit/rollback below; the
|
|
593
|
+
# second node then runs the now-no-op guarded CREATEs cleanly.
|
|
594
|
+
await self._applock(cur, _SCHEMA_LOCK)
|
|
581
595
|
for statement in _SCHEMA:
|
|
582
596
|
await cur.execute(statement)
|
|
583
597
|
await conn.commit()
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
+
# Copyright (C) 2026 MessageFoundry Organization and contributors
|
|
3
|
+
"""Finding A: SQL Server schema-init takes the cross-node schema applock BEFORE any CREATE, so two
|
|
4
|
+
nodes doing an HA cold start against a virgin DB serialize the DDL instead of both running the
|
|
5
|
+
check-then-create `IF OBJECT_ID(...) IS NULL CREATE` guards and racing the loser into a 2714 ("There
|
|
6
|
+
is already an object named ..."). The real race needs a real SQL Server + two concurrent opens (the
|
|
7
|
+
gated service-container suite / the dogfood box), but the *contract* — applock first, then DDL, under
|
|
8
|
+
one transaction — is verifiable here with a fake aioodbc conn/cursor and NO ODBC driver.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from __future__ import annotations
|
|
12
|
+
|
|
13
|
+
import types
|
|
14
|
+
from contextlib import asynccontextmanager
|
|
15
|
+
|
|
16
|
+
from messagefoundry.store.sqlserver import _SCHEMA_LOCK, SqlServerStore
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class _FakeCursor:
|
|
20
|
+
def __init__(self, executed: list[tuple[str, object]]):
|
|
21
|
+
self._executed = executed
|
|
22
|
+
self.description = None
|
|
23
|
+
|
|
24
|
+
async def execute(self, sql: str, params: object = None) -> None:
|
|
25
|
+
self._executed.append((sql, params))
|
|
26
|
+
|
|
27
|
+
async def fetchone(self) -> object:
|
|
28
|
+
return (0,) # sp_getapplock return code >= 0 (lock granted)
|
|
29
|
+
|
|
30
|
+
async def fetchall(self) -> list[object]:
|
|
31
|
+
return []
|
|
32
|
+
|
|
33
|
+
async def close(self) -> None:
|
|
34
|
+
pass
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class _FakeConn:
|
|
38
|
+
def __init__(self, executed: list[tuple[str, object]]):
|
|
39
|
+
self.cursor_obj = _FakeCursor(executed)
|
|
40
|
+
self.committed = 0
|
|
41
|
+
self.rolledback = 0
|
|
42
|
+
|
|
43
|
+
async def cursor(self) -> _FakeCursor:
|
|
44
|
+
return self.cursor_obj
|
|
45
|
+
|
|
46
|
+
async def commit(self) -> None:
|
|
47
|
+
self.committed += 1
|
|
48
|
+
|
|
49
|
+
async def rollback(self) -> None:
|
|
50
|
+
self.rolledback += 1
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
class _FakePool:
|
|
54
|
+
def __init__(self, conn: _FakeConn):
|
|
55
|
+
self._conn = conn
|
|
56
|
+
|
|
57
|
+
def acquire(self) -> object:
|
|
58
|
+
conn = self._conn
|
|
59
|
+
|
|
60
|
+
@asynccontextmanager
|
|
61
|
+
async def _cm(): # type: ignore[no-untyped-def]
|
|
62
|
+
yield conn
|
|
63
|
+
|
|
64
|
+
return _cm()
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def _make_store(conn: _FakeConn) -> SqlServerStore:
|
|
68
|
+
store = SqlServerStore.__new__(SqlServerStore)
|
|
69
|
+
store._pool = _FakePool(conn) # type: ignore[assignment]
|
|
70
|
+
store._settings = types.SimpleNamespace(command_timeout=0) # type: ignore[assignment]
|
|
71
|
+
return store
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
async def test_ensure_schema_takes_applock_before_any_create() -> None:
|
|
75
|
+
executed: list[tuple[str, object]] = []
|
|
76
|
+
conn = _FakeConn(executed)
|
|
77
|
+
store = _make_store(conn)
|
|
78
|
+
|
|
79
|
+
await store._ensure_schema()
|
|
80
|
+
|
|
81
|
+
# The very first statement is an exclusive schema applock naming the cross-node resource...
|
|
82
|
+
sql0, params0 = executed[0]
|
|
83
|
+
assert "sp_getapplock" in sql0
|
|
84
|
+
assert params0 is not None and _SCHEMA_LOCK in params0
|
|
85
|
+
# ...and it precedes every CREATE TABLE (so two virgin-DB nodes serialize rather than race to 2714).
|
|
86
|
+
first_create = next(i for i, (sql, _) in enumerate(executed) if "CREATE TABLE" in sql)
|
|
87
|
+
assert first_create > 0
|
|
88
|
+
# Single committed DDL batch; the txn-scoped applock auto-releases on that commit.
|
|
89
|
+
assert conn.committed == 1
|
|
90
|
+
assert conn.rolledback == 0
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
async def test_schema_lock_resource_matches_postgres_name() -> None:
|
|
94
|
+
# Both backends must take the SAME logical schema lock name family ("mefor...schema_init") so the
|
|
95
|
+
# intent is obvious; the SQL Server resource is colon-namespaced like its sibling applocks.
|
|
96
|
+
assert _SCHEMA_LOCK == "mefor:schema_init"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0003-non-hl7-transports-database-rest-soap.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0007-gui-manageable-connections-toml.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0015-ws-soap-outbound-mtls-wssecurity.md
RENAMED
|
File without changes
|
{messagefoundry-0.2.4 → messagefoundry-0.2.5}/docs/adr/0016-synchronous-x12-request-response.md
RENAMED
|
File without changes
|
|
File without changes
|