messagefoundry 0.2.3__tar.gz → 0.2.4__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/.github/workflows/codeql.yml +67 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/.github/workflows/release.yml +69 -0
- messagefoundry-0.2.4/.github/workflows/scorecard.yml +59 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/.github/workflows/security.yml +63 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/CHANGELOG.md +17 -1
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/PKG-INFO +32 -6
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/README.md +18 -5
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/BACKLOG.md +1 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/__init__.py +1 -1
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/store/sqlserver.py +90 -104
- messagefoundry-0.2.4/packaging/messagefoundry-harness/README.md +30 -0
- messagefoundry-0.2.4/packaging/messagefoundry-harness/pyproject.toml +54 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/pyproject.toml +15 -0
- messagefoundry-0.2.4/tests/test_sqlserver_cursor_close.py +158 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/.claude/settings.json +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/.dockerignore +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/.gitattributes +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/.github/CODEOWNERS +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/.github/SECURITY.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/.github/dependabot.yml +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/.github/workflows/benchmark.yml +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/.github/workflows/ci.yml +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/.github/workflows/cla.yml +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/.github/workflows/dependabot-auto-merge.yml +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/.github/workflows/dependabot-lock-resync.yml +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/.github/workflows/release-sync-check.yml +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/.github/workflows/vuln-metrics.yml +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/.gitignore +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/.gitleaks.toml +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/.pre-commit-config.yaml +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/.semgrep/messagefoundry.yml +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/CLA.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/CLAUDE.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/CODE_OF_CONDUCT.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/COMMERCIAL-LICENSE.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/CONTRIBUTING.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/GOVERNANCE.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/LICENSE +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/MAINTAINERS.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/NOTICE +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docker/Dockerfile +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docker/README.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docker/compose.yaml +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docker/k8s/secret.example.yaml +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docker/k8s/statefulset.yaml +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docker/locks/requirements-core.lock +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docker/locks/requirements-sqlserver.lock +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docker/secrets.env.example +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docker/smoke/Dockerfile +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docker/smoke/config/IB_Test_ADT.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docker/smoke/send_adt.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/ADOPTER-CI.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/AI.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/ARCHITECTURE.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/CI-QUALITY.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/CLUSTERING.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/CODESETS.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/CONFIGURATION.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/CONNECTIONS.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/CONTAINER-EXPOSURE-EVALUATION.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/CONTRIBUTOR-FIRST-ISSUES.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/CONTRIBUTOR-PROGRAM-PLAN.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/COUNSEL-ENGAGEMENT-BRIEF.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/DEPLOY-SERVER-DB.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/DEPLOYMENT.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/DICOM.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/DUAL_LICENSING_PLAN.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/EARLY-ADOPTER-GUIDE.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/FEATURE-MAP.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/HL7-VALIDATION.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/INSTALL-GUIDE.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/LOAD-TESTING.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/MENTAL-MODEL.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/MessageFoundry-Mental-Model.docx +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/PHI.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/REMOTE-CONSOLE-CUSTOMER-GUIDE.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/REMOTE-CONSOLE.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/SECURITY.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/SERVICE.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/SUPPORT-POLICY.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/SYSTEM-REQUIREMENTS.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/Secure_AI_Development_Standards.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/Secure_Development_Standards.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/TEE-RELAY.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/THROUGHPUT-IMPROVEMENTS.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/USER-GUIDE.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/WORKTREES.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/adr/0001-staged-pipeline-architecture.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/adr/0002-phase2-transport-security-and-strong-auth.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/adr/0003-non-hl7-transports-database-rest-soap.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/adr/0004-payload-agnostic-ingress.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/adr/0005-transform-accessible-state.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/adr/0006-external-data-lookups.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/adr/0007-gui-manageable-connections-toml.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/adr/0008-cluster-observability-api.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/adr/0009-run-scoped-context-providers.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/adr/0010-handler-callable-db-lookup.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/adr/0011-timer-scheduled-source.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/adr/0012-x12-edi-codec.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/adr/0013-increment-2-reingress-design.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/adr/0013-query-response-orchestration.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/adr/0014-alerting-rules-engine.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/adr/0015-ws-soap-outbound-mtls-wssecurity.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/adr/0016-synchronous-x12-request-response.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/adr/0017-consumer-deployment-model.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/adr/0018-per-message-signatures-accepted-risk.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/adr/0019-pluggable-keyprovider-hsm-kms-vault.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/adr/0020-protocol-diagnostic-capture.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/adr/0021-inbound-ack-nak-capture-response-sent.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/adr/0022-fhir-resource-codec-rest-client.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/adr/0024-smart-backend-services-token-provider.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/adr/0025-dicom-codec-store-connectors.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/adr/0026-off-box-egress-update-check.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/adr/0028-base64-binary-carriage-codec.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/adr/0030-anonymization-test-harness-tee.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/adr/0031-startup-connection-fault-isolation.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/adr/0032-console-desktop-launch.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/adr/0033-gui-manageable-code-sets.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/adr/README.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/adr/TEMPLATE.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/architecture-components.png +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/architecture-components.svg +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/architecture-config-graph.png +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/architecture-config-graph.svg +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/architecture-diagram.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/architecture-message-flow.png +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/architecture-message-flow.svg +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/architecture-topology.png +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/architecture-topology.svg +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/benchmarks/TUNING-BASELINE.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/benchmarks/results/2026-06-16-ci-linux/environment.txt +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/benchmarks/results/2026-06-16-ci-linux/failover-postgres.json +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/benchmarks/results/2026-06-16-ci-linux/failover-sqlserver.json +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/benchmarks/results/2026-06-16-ci-linux/reference-postgres.json +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/benchmarks/results/2026-06-16-ci-linux/reference-sqlite.json +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/benchmarks/results/2026-06-16-ci-linux/reference-sqlserver.json +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/benchmarks/step-b-write-amplification.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/hl7-message-ordering-reference.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/message-ordering-design.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/releases/ASVS-OPTION-A-MULTISESSION-PLAN.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/releases/ASVS-PARTIALS-SWEEP-MULTISESSION-PLAN.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/releases/DOGFOOD-BACKLOG-MULTISESSION-PLAN.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/releases/MULTISESSION-PLAN-3.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/releases/MULTISESSION-PLAN-v0.2.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/releases/MULTISESSION-PLAN.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/releases/PLAN-3-LANE-HANDOFFS.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/releases/V0.2-LANE-HANDOFFS.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/releases/v0.1-EXECUTION-PLAN.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/releases/v0.1-PLAN.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/releases/v0.1.0-PRETAG-CHECKLIST.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/research/cloud-deployment-research-2026-06.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/research/config-ux-review.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/research/non-hl7-transform-components.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/reviews/DEPENDENCY-INFOSEC-POSTURE-2026-06-23.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/reviews/FULL-REVIEW-2026-06-10.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/security/ADVISORY-PROCESS.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/security/ASVS-FAILS-REMEDIATION-PLAN.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/security/ASVS-L2-PHASE0-CHANGES.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/security/ASVS-L2-REMEDIATION-PLAN.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/security/ASVS-L3-ASSESSMENT.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/security/ASVS-L3-REMEDIATION-PLAN.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/security/ASVS-L3-STATUS.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/security/BEYOND-ASVS-L3-ONEPAGE.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/security/BEYOND-ASVS-L3-REMEDIATION-PLAN-ONEPAGE.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/security/BEYOND-ASVS-L3-REMEDIATION-PLAN.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/security/BEYOND-ASVS-L3.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/security/DEP-CVE-RUNBOOK.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/security/DEPENDENCY-METRICS.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/security/MEFOR-Code-Review-Checklist.xlsx +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/security/PHASE-8C-RBAC.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/security/PUBLISHING.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/security/RCA-TEMPLATE.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/security/RELEASE-GATE.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/security/REMEDIATION-PLAN.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/security/REVIEW-2026-06-07.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/security/SDS-CONFORMANCE-REVIEW-2026-06-12.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/security/SDS-REMEDIATION-PLAN.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/security/SECURITY-POSTURE.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/security/SOUP-DEPENDENCY-HANDLING.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/security/SOUP-REVIEW-2026-06-18.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/security/SOUP-REVIEW-PROCEDURE.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/security/THREAT-MODEL.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/testing/VERIFY.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/testing/WIN2025-ACCEPTANCE.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/testing/WIN2025-TEST-MATRIX.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/docs/testing/WIN2025-TEST-PLAN.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/environments/dev.toml +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/environments/prod.toml +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/README.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/__main__.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/acceptance/__init__.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/acceptance/__main__.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/acceptance/matrix.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/acceptance/probes.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/acceptance/report.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/acceptance/runner.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/compose.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/config/coverage.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/config/load/_shape.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/config/load/graph.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/file_panel.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/file_transport.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/load/__init__.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/load/corpus.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/load/correlator.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/load/enginepoll.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/load/failover.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/load/failover_track.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/load/governor.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/load/ids.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/load/metrics.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/load/profile.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/load/profiles/README.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/load/profiles/closed-loop.toml +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/load/profiles/failover.toml +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/load/profiles/fanout-baseline.toml +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/load/profiles/malformed-load.toml +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/load/profiles/reference.toml +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/load/profiles/smoke-sqlserver.toml +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/load/profiles/smoke.toml +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/load/profiles/soak.toml +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/load/profiles/spike-burst.toml +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/load/profiles/sustained-overload.toml +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/load/profiles/writeamp.toml +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/load/report.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/load/runner.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/load/sender.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/load/sink.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/mllp.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/monitor.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/receive.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/reconcile/__init__.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/reconcile/__main__.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/reconcile/capture.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/reconcile/compare.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/reconcile/normalize.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/reconcile/report.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/scenarios.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/send.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/harness/window.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/.gitignore +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/.vscodeignore +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/README.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/esbuild.js +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/media/hl7schema.json +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/media/icon.png +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/media/icon.svg +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/package-lock.json +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/package.json +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/snippets/messagefoundry.code-snippets +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/src/aiPolicy.ts +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/src/alertEditor.ts +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/src/auth.ts +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/src/chat.ts +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/src/cli.ts +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/src/codeSetEditor.ts +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/src/codesetsTree.ts +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/src/completion.ts +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/src/connectionEditor.ts +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/src/engineClient.ts +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/src/extension.ts +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/src/generate.ts +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/src/git.ts +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/src/graphTree.ts +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/src/home.ts +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/src/newRoute.ts +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/src/promote.ts +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/src/sourceControl.ts +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/src/test/runTest.ts +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/src/test/suite/chat.test.ts +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/src/test/suite/extension.test.ts +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/src/test/suite/index.ts +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/src/testBench.ts +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/src/validate.ts +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/tsconfig.json +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/ide/tsconfig.test.json +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/mefor.code-workspace +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/__main__.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/adr_analyze.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/anon/__init__.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/anon/_pools.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/anon/hl7.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/anon/keying.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/anon/leak.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/anon/rules.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/anon/surrogates.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/api/__init__.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/api/app.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/api/approvals.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/api/auth_models.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/api/auth_routes.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/api/field_authz.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/api/metrics.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/api/models.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/api/security.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/api/tls.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/auth/__init__.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/auth/data/common_passwords.NOTICE +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/auth/data/common_passwords.txt +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/auth/identity.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/auth/ldap.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/auth/notifications.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/auth/passwords.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/auth/permissions.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/auth/policy.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/auth/ratelimit.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/auth/service.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/auth/tokens.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/auth/totp.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/checks.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/config/__init__.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/config/active_environment.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/config/ai_policy.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/config/alerts_edit.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/config/code_sets.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/config/codeset_edit.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/config/connections_edit.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/config/connections_file.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/config/db_lookup.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/config/environments.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/config/ingest_time.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/config/models.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/config/reference.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/config/response.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/config/run_context.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/config/settings.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/config/state.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/config/tls_policy.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/config/wiring.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/console/__init__.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/console/__main__.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/console/_async.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/console/alerts_page.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/console/change_password.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/console/client.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/console/connections.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/console/dead_letters_page.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/console/delegates.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/console/event_log_page.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/console/icons/alerts.svg +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/console/icons/connections.svg +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/console/icons/dead-letters.svg +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/console/icons/engine-status.svg +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/console/icons/log-search.svg +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/console/icons/logo-lockup.svg +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/console/icons/users.svg +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/console/login.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/console/mfa.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/console/reauth.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/console/resources/README.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/console/resources/app.ico +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/console/resources/app.svg +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/console/search.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/console/service_control.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/console/sessions.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/console/shell.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/console/status.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/console/theme.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/console/users_page.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/console/widgets.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/generators/README.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/generators/__init__.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/generators/_core.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/generators/_hl7data.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/generators/adt.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/generators/all_types.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/generators/bar.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/generators/dft.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/generators/documents.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/generators/mdm.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/generators/mfn.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/generators/oml.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/generators/orl.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/generators/orm.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/generators/oru.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/generators/ras.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/generators/rde.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/generators/siu.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/generators/vxu.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/hl7schema.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/last_resort.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/logging_setup.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/parsing/__init__.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/parsing/binary.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/parsing/consistency.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/parsing/dicom/__init__.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/parsing/dicom/_deps.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/parsing/dicom/_util.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/parsing/dicom/dataset.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/parsing/dicom/errors.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/parsing/dicom/hl7_map.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/parsing/dicom/peek.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/parsing/fhir/__init__.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/parsing/fhir/_deps.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/parsing/fhir/errors.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/parsing/fhir/peek.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/parsing/fhir/resource.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/parsing/groups.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/parsing/message.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/parsing/peek.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/parsing/split.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/parsing/summary.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/parsing/tree.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/parsing/validate.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/parsing/x12/__init__.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/parsing/x12/delimiters.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/parsing/x12/errors.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/parsing/x12/interchange.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/parsing/x12/message.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/parsing/x12/peek.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/pipeline/__init__.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/pipeline/alert_sinks.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/pipeline/alerts.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/pipeline/cert_expiry.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/pipeline/cluster.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/pipeline/cluster_sqlserver.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/pipeline/config_convergence.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/pipeline/dryrun.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/pipeline/engine.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/pipeline/leader_tasks.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/pipeline/reference_sync.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/pipeline/retention.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/pipeline/security_notify.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/pipeline/state_convergence.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/pipeline/wiring_runner.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/py.typed +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/redaction.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/scaffold.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/secrets_dpapi.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/store/__init__.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/store/audit_tee.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/store/base.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/store/crypto.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/store/keyprovider.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/store/postgres.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/store/store.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/timezone.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/transports/__init__.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/transports/base.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/transports/database.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/transports/dicom.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/transports/dicomweb.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/transports/fhir.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/transports/file.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/transports/framing.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/transports/loopback.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/transports/mllp.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/transports/remotefile.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/transports/rest.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/transports/signing.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/transports/smart.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/transports/soap.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/transports/tcp.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/transports/timer.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/transports/x12.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/verify/__init__.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/verify/checks.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/verify/model.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/verify/report.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/verify/runner.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/messagefoundry/verify/smoke.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/requirements.lock +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/samples/config/IB_ACME_ADT.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/samples/config/IB_FHIR_INTAKE.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/samples/config/IB_IMMUNIZATION_VXU.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/samples/config/IB_PARTNER_X12.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/samples/config/IB_RADIOLOGY_SR.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/samples/config/IB_RTE_ELIGIBILITY.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/samples/config/adt.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/samples/config/codesets/event_labels.csv +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/samples/config/codesets/facility_mnemonics.toml +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/samples/config/connections.toml +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/samples/consistency/validated_adt.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/samples/dicom/generate_sr_sample.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/samples/messages/adt_a01.hl7 +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/samples/messages/adt_batch.hl7 +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/samples/messages/hapi-hl7v2/.gitattributes +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/samples/messages/hapi-hl7v2/README.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/samples/messages/hapi-hl7v2/adt_a01.txt +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/samples/messages/hapi-hl7v2/adt_a03.txt +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/samples/messages/hapi-hl7v2/batch_18_messages.txt +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/samples/messages/hapi-hl7v2/erp_z99_v231.hl7 +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/samples/messages/hapi-hl7v2/omd_o03.txt +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/samples/messages/hapi-hl7v2/omd_o03_rep.txt +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/samples/messages/hapi-hl7v2/oml_o21.hl7 +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/samples/messages/x12_270_eligibility.edi +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/samples/results_relay/README.md +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/samples/results_relay/codesets/test_codes.csv +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/samples/results_relay/messages/oru_all_cancelled.hl7 +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/samples/results_relay/messages/oru_results.hl7 +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/samples/results_relay/results_relay.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/samples/send_mllp.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/scripts/console/install-console-shortcut.ps1 +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/scripts/console/pack_ico.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/scripts/console/uninstall-console-shortcut.ps1 +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/scripts/dev/postgres.ps1 +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/scripts/dev/sqlserver-docker.ps1 +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/scripts/dev/sqlserver.ps1 +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/scripts/hooks/block-blanket-git-stage.ps1 +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/scripts/publish/check_release_sync.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/scripts/publish/publish-denylist.txt +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/scripts/publish/publish.ps1 +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/scripts/publish/scan_forbidden.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/scripts/security/crypto_inventory_check.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/scripts/security/vuln_metrics.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/scripts/service/import-db-ca.ps1 +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/scripts/service/install-service.ps1 +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/scripts/service/uninstall-service.ps1 +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/scripts/trace_icon.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/scripts/worktree/new.ps1 +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/scripts/worktree/remove.ps1 +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/scripts/worktree/session-context.ps1 +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/scripts/worktree/spawn.ps1 +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tee/__init__.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tee/__main__.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tee/anon/__init__.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tee/anon/_hl7data.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tee/anon/_pools.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tee/anon/hl7.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tee/anon/keying.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tee/anon/leak.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tee/anon/rules.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tee/anon/surrogates.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tee/compare.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tee/correlate.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tee/hl7_fields.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tee/mefor_api.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tee/mllp.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tee/relay.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tee/report.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tee/store.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/_dicom_sample.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/_failover_load_support.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/_fhir_fixtures.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/conftest.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_acceptance_framework.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_ack_capture_runner.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_ack_sent_store.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_active_environment.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_ad_group_scope.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_admin_new_ip.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_adr_analyze.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_ai_policy.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_alert_rules.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_alert_sinks.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_alerts_edit.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_alerts_rules_api.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_anon_core.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_anon_integration.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_anon_parity.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_api.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_api_auth.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_api_reload.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_api_tls.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_approvals.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_asvs_phase0.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_audit_integrity.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_audit_offbox_tee.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_auth_core.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_auth_entry_hardening.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_auth_hardening.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_auth_service.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_auth_session_lifecycle.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_auth_store.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_binary_carriage.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_cert_expiry.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_channel_rbac.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_checks.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_cli.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_cluster.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_cluster_failover_postgres.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_cluster_failover_sqlserver.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_cluster_graph_gating.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_cluster_lease.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_code_sets.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_codeset_edit.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_connection_api.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_connection_event_api.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_connection_event_emit.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_connection_event_outbound.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_connection_event_store.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_connection_resilience.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_connections_cli.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_connections_file.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_consistency.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_console_alerts.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_console_auth.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_console_client.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_console_dead_letters.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_console_event_log.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_console_hardening.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_console_icon.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_console_password.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_console_sessions.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_console_status.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_console_step_up.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_console_theme.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_console_users.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_console_widgets.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_database_connector_integration.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_database_transport.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_db_lookup.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_db_lookup_live_runner.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_delivery_settings.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_dependency_boundaries.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_dicom_codec.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_dicom_scp.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_dicom_scu.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_dicom_wiring.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_dicomweb.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_docs_runbooks.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_dryrun.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_ed_documents.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_ed_documents_e2e.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_egress_allowlist.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_environments.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_fhir_parsing.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_fhir_resource.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_fhir_transport.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_field_authz.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_fifo_ordering.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_generate_cli.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_generated_adt.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_generators_core.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_generators_types.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_groups.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_harness.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_harness_compose.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_harness_config.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_harness_faults.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_harness_file.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_harness_monitor.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_harness_scenarios.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_hl7_core_features.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_hl7schema.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_inbound_bind.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_ingest_time.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_keyprovider.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_last_resort.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_leader_tasks.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_load_config.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_load_corpus.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_load_failover_postgres.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_load_failover_sqlserver.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_load_failover_unit.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_load_metrics.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_load_profile.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_load_report.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_load_runner.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_load_sender.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_load_sink.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_logging.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_message.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_message_split.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_metrics_exporter.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_mfa.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_mllp_encoding_override.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_mllp_tls.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_operability_config.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_outbound_signing.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_outbound_simulate.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_packaging.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_parse_tree.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_parsing.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_payload_agnostic_ingress.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_postgres_store.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_reconcile_capture.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_reconcile_compare.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_reconcile_harness.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_redaction.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_reference_sets.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_reingress.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_remotefile_transport.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_response_capture.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_rest_transport.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_retention.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_run_context.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_scaffold.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_scan_forbidden.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_secrets_dpapi.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_security_notify.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_security_static.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_service_control.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_settings.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_smart_backend.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_soap_transport.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_soap_wssecurity.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_sqlserver_coordinator.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_sqlserver_store.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_staged_pipeline.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_startup_fault_isolation.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_stats_reset.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_step_up.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_store.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_store_backend.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_store_encryption.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_store_file_hardening.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_store_read_pool.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_store_ssl.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_summary.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_task_resilience.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_tcp_transport.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_tee_cli.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_tee_compare.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_tee_correlate.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_tee_hl7_fields.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_tee_mefor_api.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_tee_mllp.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_tee_relay.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_tee_report.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_tee_store.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_timer_source.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_timezone.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_tls_policy.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_totp.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_transform_state.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_transports.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_verify.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_version.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_win2025_acceptance.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_wiring.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_wiring_engine.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_wiring_reload.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_wiring_serve.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_x12_parsing.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_x12_rte.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/tests/test_x12_transport.py +0 -0
- {messagefoundry-0.2.3 → messagefoundry-0.2.4}/uv.lock +0 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
name: CodeQL
|
|
2
|
+
|
|
3
|
+
# Deep semantic SAST (taint / data-flow analysis) that complements bandit and the curated semgrep
|
|
4
|
+
# rules in security.yml — it finds vulnerable flows those pattern matchers can't, e.g. untrusted
|
|
5
|
+
# HL7/config data reaching a sink across function boundaries.
|
|
6
|
+
#
|
|
7
|
+
# WHY THIS IS GUARDED TO THE MIRROR: CodeQL uploads results to GitHub code scanning, which on a
|
|
8
|
+
# PRIVATE repo requires paid GitHub Advanced Security (see security.yml's header note). This repo's
|
|
9
|
+
# source of truth is private, but the OSS mirror MEFORORG/MessageFoundry is PUBLIC, where CodeQL +
|
|
10
|
+
# code scanning are FREE. So the analyze job is gated on the repo slug: it is SKIPPED (a no-op) on the
|
|
11
|
+
# private source repo and runs only once publish.ps1 mirrors this file to MEFORORG/MessageFoundry.
|
|
12
|
+
# Nothing to pay, nothing to fail on the private side.
|
|
13
|
+
#
|
|
14
|
+
# PINNING CAVEAT: this repo SHA-pins every Action for supply-chain integrity. actions/checkout below
|
|
15
|
+
# reuses the repo's existing v7.0.0 pin; the github/codeql-action steps are on the v3 tag for now
|
|
16
|
+
# because the live commit SHA must be looked up at authoring — SHA-pin them before treating this as a
|
|
17
|
+
# hardened gate (OSSF Scorecard / zizmor would flag the unpinned tags).
|
|
18
|
+
#
|
|
19
|
+
# ALTERNATIVE (no file): on the public mirror you can instead enable CodeQL "default setup" from
|
|
20
|
+
# Settings -> Security -> Code scanning (one toggle, auto-pinned, auto-updated). Default setup and this
|
|
21
|
+
# advanced workflow are mutually exclusive — if you turn default setup ON, delete this file.
|
|
22
|
+
on:
|
|
23
|
+
push:
|
|
24
|
+
branches: [main]
|
|
25
|
+
pull_request:
|
|
26
|
+
branches: [main]
|
|
27
|
+
schedule:
|
|
28
|
+
# Weekly, so newly-shipped CodeQL queries run against unchanged code (same rationale as the daily
|
|
29
|
+
# pip-audit cron: a fresh finding against a quiet codebase shouldn't wait for the next push).
|
|
30
|
+
- cron: "0 7 * * 1"
|
|
31
|
+
workflow_dispatch:
|
|
32
|
+
|
|
33
|
+
permissions:
|
|
34
|
+
contents: read
|
|
35
|
+
|
|
36
|
+
jobs:
|
|
37
|
+
analyze:
|
|
38
|
+
name: CodeQL (${{ matrix.language }})
|
|
39
|
+
# ONLY on the public mirror — code scanning is free there; on the private source repo it would need
|
|
40
|
+
# paid GHAS, so this is a skipped no-op there. (GitHub Actions string == is case-insensitive.)
|
|
41
|
+
if: github.repository == 'MEFORORG/MessageFoundry'
|
|
42
|
+
runs-on: ubuntu-latest
|
|
43
|
+
permissions:
|
|
44
|
+
contents: read
|
|
45
|
+
security-events: write # upload the SARIF results to code scanning
|
|
46
|
+
actions: read
|
|
47
|
+
strategy:
|
|
48
|
+
fail-fast: false
|
|
49
|
+
matrix:
|
|
50
|
+
# python = the engine; javascript-typescript = the ide/ VS Code extension (both ship to the
|
|
51
|
+
# mirror). Both are interpreted — CodeQL needs no build step. Drop a language to narrow scope.
|
|
52
|
+
language: [python, javascript-typescript]
|
|
53
|
+
steps:
|
|
54
|
+
- name: Checkout
|
|
55
|
+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
56
|
+
with:
|
|
57
|
+
persist-credentials: false # CodeQL uploads via the job token, not a persisted git credential
|
|
58
|
+
- name: Initialize CodeQL
|
|
59
|
+
uses: github/codeql-action/init@v3 # TODO: SHA-pin (repo convention)
|
|
60
|
+
with:
|
|
61
|
+
languages: ${{ matrix.language }}
|
|
62
|
+
# security-extended adds higher-recall security queries on top of the default suite.
|
|
63
|
+
queries: security-extended
|
|
64
|
+
- name: Analyze
|
|
65
|
+
uses: github/codeql-action/analyze@v3 # TODO: SHA-pin (repo convention)
|
|
66
|
+
with:
|
|
67
|
+
category: "/language:${{ matrix.language }}"
|
|
@@ -15,6 +15,14 @@
|
|
|
15
15
|
# `-*` tags publish to PRODUCTION PyPI (a TestPyPI route would need its own Trusted Publisher). Cut the tag
|
|
16
16
|
# only AFTER the py.typed marker (WS-3) is on main — the wheel smoke step enforces this on a tag.
|
|
17
17
|
#
|
|
18
|
+
# SECOND distribution — `messagefoundry-harness` (the synthetic test/load/failover harness,
|
|
19
|
+
# packaging/messagefoundry-harness/) — is built + published in lockstep by the `release-harness` job
|
|
20
|
+
# below (same version, same tag). Its PyPI publish is GATED on the `PUBLISH_HARNESS` repo variable so it
|
|
21
|
+
# stays a no-op until the OWNER (one-time): (1) configures a `messagefoundry-harness` PyPI Trusted
|
|
22
|
+
# Publisher — a PENDING publisher for repo wshallwshall/MessageFoundry + workflow `release.yml` (blank
|
|
23
|
+
# environment, matching the engine) — then (2) sets repo variable PUBLISH_HARNESS=true. Until then the
|
|
24
|
+
# job still BUILDS + version-checks the harness wheel each release and attaches it to the GitHub release.
|
|
25
|
+
#
|
|
18
26
|
# The version is single-sourced from messagefoundry/__init__.py (hatchling dynamic version), so the built
|
|
19
27
|
# artifact's version must match the tag.
|
|
20
28
|
name: release
|
|
@@ -151,3 +159,64 @@ jobs:
|
|
|
151
159
|
packages-dir: dist-pub/
|
|
152
160
|
skip-existing: true
|
|
153
161
|
attestations: true
|
|
162
|
+
|
|
163
|
+
release-harness:
|
|
164
|
+
# Build + publish the SEPARATE `messagefoundry-harness` distribution (the synthetic test/load/failover
|
|
165
|
+
# harness, packaging/messagefoundry-harness/) in lockstep with the engine — same version, same tag.
|
|
166
|
+
# Isolated from the `release` job so a harness-side issue can never jeopardize the engine release;
|
|
167
|
+
# `needs: release` so the engine ships (and its GitHub release exists) first. Inherits the workflow's
|
|
168
|
+
# contents:write + id-token:write. The PyPI publish is GATED on the `PUBLISH_HARNESS` repo variable:
|
|
169
|
+
# until the owner sets up the harness Trusted Publisher AND PUBLISH_HARNESS=true (see the header note),
|
|
170
|
+
# this job still BUILDS + version-checks the wheel and attaches it to the GitHub release, but does not
|
|
171
|
+
# publish — so a missing harness PyPI project can never red a release.
|
|
172
|
+
needs: release
|
|
173
|
+
runs-on: ubuntu-latest
|
|
174
|
+
steps:
|
|
175
|
+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
176
|
+
|
|
177
|
+
- name: Set up Python
|
|
178
|
+
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
|
|
179
|
+
with:
|
|
180
|
+
python-version: "3.14"
|
|
181
|
+
|
|
182
|
+
- name: Build the harness wheel (wheel-only — harness/ is force-included from the repo root)
|
|
183
|
+
run: |
|
|
184
|
+
python -m pip install --upgrade pip build
|
|
185
|
+
# Wheel-only on purpose: the harness source (harness/) lives OUTSIDE this project dir (it is
|
|
186
|
+
# force-included from ../../harness), so an sdist would not be self-contained. Pure-Python, so a
|
|
187
|
+
# wheel suffices. Version is read from messagefoundry/__init__.py (lockstep with the engine).
|
|
188
|
+
python -m build --wheel ./packaging/messagefoundry-harness --outdir harness-dist
|
|
189
|
+
ls -l harness-dist/
|
|
190
|
+
|
|
191
|
+
- name: Smoke-check the harness wheel (version == engine == tag)
|
|
192
|
+
run: |
|
|
193
|
+
built=$(python -c "import glob,re; print(re.search(r'messagefoundry_harness-([^-]+)-', glob.glob('harness-dist/*.whl')[0]).group(1))")
|
|
194
|
+
echo "harness wheel version: $built"
|
|
195
|
+
if [ "${GITHUB_REF_TYPE:-}" = "tag" ]; then
|
|
196
|
+
want="${GITHUB_REF_NAME#v}"
|
|
197
|
+
[ "$built" = "$want" ] || { echo "::error::harness wheel version $built != tag $want"; exit 1; }
|
|
198
|
+
fi
|
|
199
|
+
|
|
200
|
+
- name: Attach the harness wheel to the GitHub release
|
|
201
|
+
if: startsWith(github.ref, 'refs/tags/')
|
|
202
|
+
env:
|
|
203
|
+
GH_TOKEN: ${{ github.token }}
|
|
204
|
+
run: gh release upload "${GITHUB_REF_NAME}" harness-dist/*.whl --clobber
|
|
205
|
+
|
|
206
|
+
- name: Upload harness artifact (dry-run / always)
|
|
207
|
+
if: always()
|
|
208
|
+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
|
|
209
|
+
with:
|
|
210
|
+
name: harness-artifacts
|
|
211
|
+
path: harness-dist/
|
|
212
|
+
if-no-files-found: ignore
|
|
213
|
+
|
|
214
|
+
# GATED: no-op until the owner configures the messagefoundry-harness PyPI Trusted Publisher AND sets
|
|
215
|
+
# repo variable PUBLISH_HARNESS=true. The build + version-check above still run every release.
|
|
216
|
+
- name: Publish messagefoundry-harness to PyPI (Trusted Publishing / OIDC)
|
|
217
|
+
if: ${{ startsWith(github.ref, 'refs/tags/') && vars.PUBLISH_HARNESS == 'true' }}
|
|
218
|
+
uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0
|
|
219
|
+
with:
|
|
220
|
+
packages-dir: harness-dist/
|
|
221
|
+
skip-existing: true
|
|
222
|
+
attestations: true
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
name: Scorecard
|
|
2
|
+
|
|
3
|
+
# OpenSSF Scorecard — a holistic supply-chain hygiene score (Pinned-Dependencies, Dangerous-Workflow,
|
|
4
|
+
# Token-Permissions, Branch-Protection, Maintained, SAST-present, ...). It validates the hardening this
|
|
5
|
+
# repo already does (SHA-pinned Actions, least-privilege tokens) and catches regressions, and yields a
|
|
6
|
+
# public OpenSSF badge.
|
|
7
|
+
#
|
|
8
|
+
# WHY GUARDED TO THE MIRROR: like CodeQL, Scorecard uploads SARIF to GitHub code scanning (paid GHAS on
|
|
9
|
+
# a private repo) and `publish_results: true` requires a PUBLIC repo. So this is gated to the public
|
|
10
|
+
# mirror MEFORORG/MessageFoundry — a skipped no-op on the private source repo, free on the mirror after
|
|
11
|
+
# publish.ps1 mirrors this file. NOTE: the Branch-Protection check then reflects the MIRROR's settings,
|
|
12
|
+
# not the private repo's; the workflow-hardening checks (Pinned-Dependencies / Dangerous-Workflow /
|
|
13
|
+
# Token-Permissions) assess the shared source and are the signal that transfers.
|
|
14
|
+
#
|
|
15
|
+
# PINNING CAVEAT: actions/checkout + actions/upload-artifact reuse this repo's existing SHA pins; the
|
|
16
|
+
# ossf/scorecard-action and github/codeql-action/upload-sarif steps are on version tags pending a
|
|
17
|
+
# SHA-pin lookup (zizmor / Scorecard itself will flag them).
|
|
18
|
+
on:
|
|
19
|
+
branch_protection_rule:
|
|
20
|
+
schedule:
|
|
21
|
+
- cron: "0 8 * * 1" # weekly (Mon 08:00 UTC)
|
|
22
|
+
push:
|
|
23
|
+
branches: [main]
|
|
24
|
+
workflow_dispatch:
|
|
25
|
+
|
|
26
|
+
permissions: read-all
|
|
27
|
+
|
|
28
|
+
jobs:
|
|
29
|
+
analysis:
|
|
30
|
+
name: Scorecard analysis
|
|
31
|
+
# ONLY on the public mirror (free code scanning + public badge); skipped no-op on the private repo.
|
|
32
|
+
if: github.repository == 'MEFORORG/MessageFoundry'
|
|
33
|
+
runs-on: ubuntu-latest
|
|
34
|
+
permissions:
|
|
35
|
+
security-events: write # upload the SARIF results to code scanning
|
|
36
|
+
id-token: write # publish results to the public OpenSSF Scorecard API (the badge)
|
|
37
|
+
contents: read
|
|
38
|
+
actions: read
|
|
39
|
+
steps:
|
|
40
|
+
- name: Checkout
|
|
41
|
+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
42
|
+
with:
|
|
43
|
+
persist-credentials: false
|
|
44
|
+
- name: Run Scorecard
|
|
45
|
+
uses: ossf/scorecard-action@v2 # TODO: SHA-pin (repo convention)
|
|
46
|
+
with:
|
|
47
|
+
results_file: results.sarif
|
|
48
|
+
results_format: sarif
|
|
49
|
+
publish_results: true
|
|
50
|
+
- name: Upload the SARIF artifact
|
|
51
|
+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
|
|
52
|
+
with:
|
|
53
|
+
name: scorecard-sarif
|
|
54
|
+
path: results.sarif
|
|
55
|
+
retention-days: 5
|
|
56
|
+
- name: Upload to code scanning
|
|
57
|
+
uses: github/codeql-action/upload-sarif@v3 # TODO: SHA-pin (repo convention)
|
|
58
|
+
with:
|
|
59
|
+
sarif_file: results.sarif
|
|
@@ -109,6 +109,43 @@ jobs:
|
|
|
109
109
|
name: sbom-cyclonedx
|
|
110
110
|
path: sbom.cdx.json
|
|
111
111
|
|
|
112
|
+
trivy:
|
|
113
|
+
name: trivy (container image vulnerabilities)
|
|
114
|
+
runs-on: ubuntu-latest
|
|
115
|
+
# ADVISORY for its first cycle (continue-on-error): scan the built engine image for OS-package and
|
|
116
|
+
# Python CVEs — the supply-chain layer pip-audit (lockfile only) and bandit/semgrep (source only)
|
|
117
|
+
# never see: the Debian base, system libs, and (on the -sqlserver variant) the msodbcsql18/unixODBC
|
|
118
|
+
# apt layer. Once a baseline run confirms it's clean, DELETE `continue-on-error` to make it BLOCKING
|
|
119
|
+
# like the other gates here. There's now a real docker/Dockerfile, so the image is a live surface.
|
|
120
|
+
continue-on-error: true
|
|
121
|
+
steps:
|
|
122
|
+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
123
|
+
- name: Build the slim engine image
|
|
124
|
+
# The slim default the docker-smoke leg (ci.yml) and the Dockerfile's `docker build` docs produce.
|
|
125
|
+
run: docker build -f docker/Dockerfile -t messagefoundry:scan .
|
|
126
|
+
- name: Install Trivy (pinned)
|
|
127
|
+
run: |
|
|
128
|
+
# Pin the release; bump deliberately (same posture as the gitleaks job). Verify the tag exists
|
|
129
|
+
# at https://github.com/aquasecurity/trivy/releases if this step 404s.
|
|
130
|
+
VER=0.71.2
|
|
131
|
+
curl -sSfL "https://github.com/aquasecurity/trivy/releases/download/v${VER}/trivy_${VER}_Linux-64bit.tar.gz" \
|
|
132
|
+
| tar -xz -C /tmp trivy
|
|
133
|
+
sudo install -m 0755 /tmp/trivy /usr/local/bin/trivy
|
|
134
|
+
trivy --version
|
|
135
|
+
- name: Scan the image (fixable HIGH/CRITICAL fail the build)
|
|
136
|
+
# --ignore-unfixed keeps the gate ACTIONABLE: a Debian CVE with no upstream fix can't be
|
|
137
|
+
# remediated by us and shouldn't redden CI; only patchable HIGH/CRITICAL fail. --scanners vuln
|
|
138
|
+
# keeps this to CVEs (secrets stay gitleaks' job). Extend to `--target runtime-sqlserver` (more
|
|
139
|
+
# OS surface) once this is green. Trivy auto-pulls its vuln DB from ghcr.io on first run.
|
|
140
|
+
run: |
|
|
141
|
+
trivy image --no-progress --scanners vuln \
|
|
142
|
+
--severity HIGH,CRITICAL --ignore-unfixed --exit-code 1 \
|
|
143
|
+
messagefoundry:scan
|
|
144
|
+
- name: Lint the Dockerfile for misconfig (informational)
|
|
145
|
+
# IaC checks (non-root USER, pinned base, secrets in layers). Informational only — never fails.
|
|
146
|
+
if: always()
|
|
147
|
+
run: trivy config --no-progress --severity HIGH,CRITICAL docker/Dockerfile || true
|
|
148
|
+
|
|
112
149
|
bandit:
|
|
113
150
|
name: bandit (Python SAST)
|
|
114
151
|
runs-on: ubuntu-latest
|
|
@@ -174,6 +211,32 @@ jobs:
|
|
|
174
211
|
# dangerous-sink rules as the engine.
|
|
175
212
|
semgrep --config .semgrep --error --metrics off messagefoundry tee
|
|
176
213
|
|
|
214
|
+
zizmor:
|
|
215
|
+
name: zizmor (GitHub Actions static analysis)
|
|
216
|
+
runs-on: ubuntu-latest
|
|
217
|
+
# ADVISORY for its first cycle (continue-on-error): static analysis of the workflow files THEMSELVES
|
|
218
|
+
# (Trail of Bits) — template injection, over-broad GITHUB_TOKEN permissions, unpinned `uses:`,
|
|
219
|
+
# artifact poisoning. Complements (and enforces) the by-hand SHA-pinning across these workflows.
|
|
220
|
+
# Once a baseline run is reviewed/clean, DELETE `continue-on-error` to make it blocking. (It will
|
|
221
|
+
# flag the `@v3` codeql-action tags in codeql.yml — that's the intended forcing function to pin them.)
|
|
222
|
+
continue-on-error: true
|
|
223
|
+
permissions:
|
|
224
|
+
contents: read
|
|
225
|
+
steps:
|
|
226
|
+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
227
|
+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
|
|
228
|
+
with:
|
|
229
|
+
python-version: "3.14"
|
|
230
|
+
- name: Install zizmor (pinned)
|
|
231
|
+
run: |
|
|
232
|
+
# Pin deliberately; verify the tag at https://github.com/zizmorcore/zizmor/releases if it 404s.
|
|
233
|
+
python -m pip install --upgrade pip "zizmor==1.5.2"
|
|
234
|
+
- name: Analyze the workflows
|
|
235
|
+
env:
|
|
236
|
+
# Lets zizmor run its online audits (e.g. unpinned / known-problematic action refs).
|
|
237
|
+
GH_TOKEN: ${{ github.token }}
|
|
238
|
+
run: zizmor .github/workflows
|
|
239
|
+
|
|
177
240
|
crypto-inventory:
|
|
178
241
|
name: crypto-inventory (ASVS 11.1.3 discovery gate)
|
|
179
242
|
runs-on: ubuntu-latest
|
|
@@ -6,6 +6,21 @@ All notable changes to MessageFoundry are documented here. The format follows
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.2.4] — 2026-06-26 — Early Access
|
|
10
|
+
|
|
11
|
+
A bug-fix release that completes the EF-6 SQL Server fix shipped in 0.2.3.
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
- **SQL Server: EF-6 "Connection is busy with results for another command" fully resolved (0.2.3's fix
|
|
15
|
+
was incomplete).** v0.2.3 (#543) switched the FIFO claim read to `fetchall`, but draining the
|
|
16
|
+
`UPDATE...OUTPUT` *rows* does not free the *statement handle* — without MARS the pooled connection was
|
|
17
|
+
still returned to the aioodbc pool busy, so the error reproduced at every cold start. All pooled cursor
|
|
18
|
+
sites now close the cursor (`SQLFreeStmt`/`SQLCloseCursor`) via a new `_cursor` context manager before
|
|
19
|
+
the connection is released, on both the success and exception paths; `claim_ready` (another
|
|
20
|
+
`UPDATE...OUTPUT`) and the `DELETE...OUTPUT` handoffs had the same latent gap and are covered too. A
|
|
21
|
+
driver-free unit test now asserts the close-before-release invariant so the regression can't recur.
|
|
22
|
+
SQLite and PostgreSQL were unaffected. (#550)
|
|
23
|
+
|
|
9
24
|
## [0.2.3] — 2026-06-26 — Early Access
|
|
10
25
|
|
|
11
26
|
A bug-fix + feature release: the SQL Server store no longer raises "connection busy" errors under
|
|
@@ -171,7 +186,8 @@ tests, but the external code review + penetration test (the bar for a security-c
|
|
|
171
186
|
- Releases are built, SBOM'd (CycloneDX), and signed with [Sigstore](https://www.sigstore.dev/) — see the
|
|
172
187
|
`release` workflow.
|
|
173
188
|
|
|
174
|
-
[Unreleased]: https://github.com/wshallwshall/MessageFoundry/compare/v0.2.
|
|
189
|
+
[Unreleased]: https://github.com/wshallwshall/MessageFoundry/compare/v0.2.4...HEAD
|
|
190
|
+
[0.2.4]: https://github.com/wshallwshall/MessageFoundry/compare/v0.2.3...v0.2.4
|
|
175
191
|
[0.2.3]: https://github.com/wshallwshall/MessageFoundry/compare/v0.2.2...v0.2.3
|
|
176
192
|
[0.2.2]: https://github.com/wshallwshall/MessageFoundry/compare/v0.2.1...v0.2.2
|
|
177
193
|
[0.2.1]: https://github.com/wshallwshall/MessageFoundry/compare/v0.2.0...v0.2.1
|
|
@@ -1,10 +1,23 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: messagefoundry
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.4
|
|
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
|
|
7
7
|
License-File: NOTICE
|
|
8
|
+
Classifier: Development Status :: 4 - Beta
|
|
9
|
+
Classifier: Environment :: Console
|
|
10
|
+
Classifier: Intended Audience :: Developers
|
|
11
|
+
Classifier: Intended Audience :: Healthcare Industry
|
|
12
|
+
Classifier: Intended Audience :: System Administrators
|
|
13
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
14
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
17
|
+
Classifier: Topic :: Communications
|
|
18
|
+
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
|
|
19
|
+
Classifier: Topic :: System :: Networking
|
|
20
|
+
Classifier: Typing :: Typed
|
|
8
21
|
Requires-Python: >=3.14
|
|
9
22
|
Requires-Dist: aiosqlite>=0.20
|
|
10
23
|
Requires-Dist: argon2-cffi>=23.1
|
|
@@ -151,13 +164,20 @@ deliberate — replace `<version>` with the current release shown at the top of
|
|
|
151
164
|
needs (each is opt-in and lazy-imported):
|
|
152
165
|
|
|
153
166
|
```bash
|
|
167
|
+
pip install "messagefoundry[console]==<version>" # admin console (PySide6 GUI) — the operator UI; most operators want this
|
|
154
168
|
pip install "messagefoundry[postgres]==<version>" # PostgreSQL store backend (production server DB)
|
|
155
169
|
pip install "messagefoundry[sqlserver]==<version>" # SQL Server store backend (+ OS-level ODBC Driver 18)
|
|
156
|
-
pip install "messagefoundry[console]==<version>" # PySide6 admin console
|
|
157
170
|
pip install "messagefoundry[sftp]==<version>" # SFTP transport for the REMOTEFILE connector
|
|
158
171
|
pip install "messagefoundry[dicom]==<version>" # DICOM codec + C-STORE SCP (pydicom + pynetdicom)
|
|
159
172
|
```
|
|
160
173
|
|
|
174
|
+
**What's in the `messagefoundry` package — and what isn't.** It is the **engine plus the admin
|
|
175
|
+
console**: the console ships in the same wheel, with its PySide6/GUI dependencies as the opt-in
|
|
176
|
+
`[console]` extra, so a headless server, container, or adopter install stays lean — the console is one
|
|
177
|
+
flag away (`messagefoundry[console]`) when you want the operator UI. The **VS Code extension is a
|
|
178
|
+
separate product, not on PyPI** (a VS Code extension is a different ecosystem); see *VS Code extension &
|
|
179
|
+
test harness* below for where to get it.
|
|
180
|
+
|
|
161
181
|
> **Verify before you install (supply chain).** Every release is built by a GitHub Actions workflow,
|
|
162
182
|
> Sigstore-signed, and carries SLSA build-provenance + PEP 740 attestations. Verify a downloaded
|
|
163
183
|
> wheel against its source commit with
|
|
@@ -201,10 +221,16 @@ python -m messagefoundry.console --url http://127.0.0.1:8765
|
|
|
201
221
|
|
|
202
222
|
- **VS Code extension** ([`ide/`](https://github.com/wshallwshall/MessageFoundry/tree/main/ide/)) — author and test interfaces in your editor: a New Route
|
|
203
223
|
Wizard, validate-on-save, a Test Bench (dry-run `.hl7` files with before/after diffs), Stage →
|
|
204
|
-
Promote to a running engine, and an HL7-aware `@messagefoundry` chat participant.
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
224
|
+
Promote to a running engine, and an HL7-aware `@messagefoundry` chat participant. **It is not on PyPI**
|
|
225
|
+
(a VS Code extension is a different ecosystem) **and not yet on the VS Code Marketplace** — Marketplace
|
|
226
|
+
+ Open VSX publishing is **planned** (see [the backlog](https://github.com/wshallwshall/MessageFoundry/blob/main/docs/BACKLOG.md)). Until then, get it from
|
|
227
|
+
this repo: open the `ide/` folder in VS Code and press **F5** (Extension Development Host), or build the
|
|
228
|
+
VSIX (`cd ide && npm install && npx @vscode/vsce package`) and install the `.vsix`. See
|
|
229
|
+
[ide/README.md](https://github.com/wshallwshall/MessageFoundry/blob/main/ide/README.md).
|
|
230
|
+
- **Test harness** — synthetic-only send/receive (MLLP), load, and failover tooling for exercising a
|
|
231
|
+
running engine. It ships as a **separate distribution, `messagefoundry-harness`**, released in lockstep
|
|
232
|
+
with the engine (it is *not* in the engine wheel): `pip install messagefoundry-harness`, then
|
|
233
|
+
`python -m harness`. From a checkout, run `python -m harness` directly. Synthetic, PHI-free traffic only.
|
|
208
234
|
|
|
209
235
|
## License
|
|
210
236
|
|
|
@@ -98,13 +98,20 @@ deliberate — replace `<version>` with the current release shown at the top of
|
|
|
98
98
|
needs (each is opt-in and lazy-imported):
|
|
99
99
|
|
|
100
100
|
```bash
|
|
101
|
+
pip install "messagefoundry[console]==<version>" # admin console (PySide6 GUI) — the operator UI; most operators want this
|
|
101
102
|
pip install "messagefoundry[postgres]==<version>" # PostgreSQL store backend (production server DB)
|
|
102
103
|
pip install "messagefoundry[sqlserver]==<version>" # SQL Server store backend (+ OS-level ODBC Driver 18)
|
|
103
|
-
pip install "messagefoundry[console]==<version>" # PySide6 admin console
|
|
104
104
|
pip install "messagefoundry[sftp]==<version>" # SFTP transport for the REMOTEFILE connector
|
|
105
105
|
pip install "messagefoundry[dicom]==<version>" # DICOM codec + C-STORE SCP (pydicom + pynetdicom)
|
|
106
106
|
```
|
|
107
107
|
|
|
108
|
+
**What's in the `messagefoundry` package — and what isn't.** It is the **engine plus the admin
|
|
109
|
+
console**: the console ships in the same wheel, with its PySide6/GUI dependencies as the opt-in
|
|
110
|
+
`[console]` extra, so a headless server, container, or adopter install stays lean — the console is one
|
|
111
|
+
flag away (`messagefoundry[console]`) when you want the operator UI. The **VS Code extension is a
|
|
112
|
+
separate product, not on PyPI** (a VS Code extension is a different ecosystem); see *VS Code extension &
|
|
113
|
+
test harness* below for where to get it.
|
|
114
|
+
|
|
108
115
|
> **Verify before you install (supply chain).** Every release is built by a GitHub Actions workflow,
|
|
109
116
|
> Sigstore-signed, and carries SLSA build-provenance + PEP 740 attestations. Verify a downloaded
|
|
110
117
|
> wheel against its source commit with
|
|
@@ -148,10 +155,16 @@ python -m messagefoundry.console --url http://127.0.0.1:8765
|
|
|
148
155
|
|
|
149
156
|
- **VS Code extension** ([`ide/`](https://github.com/wshallwshall/MessageFoundry/tree/main/ide/)) — author and test interfaces in your editor: a New Route
|
|
150
157
|
Wizard, validate-on-save, a Test Bench (dry-run `.hl7` files with before/after diffs), Stage →
|
|
151
|
-
Promote to a running engine, and an HL7-aware `@messagefoundry` chat participant.
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
158
|
+
Promote to a running engine, and an HL7-aware `@messagefoundry` chat participant. **It is not on PyPI**
|
|
159
|
+
(a VS Code extension is a different ecosystem) **and not yet on the VS Code Marketplace** — Marketplace
|
|
160
|
+
+ Open VSX publishing is **planned** (see [the backlog](https://github.com/wshallwshall/MessageFoundry/blob/main/docs/BACKLOG.md)). Until then, get it from
|
|
161
|
+
this repo: open the `ide/` folder in VS Code and press **F5** (Extension Development Host), or build the
|
|
162
|
+
VSIX (`cd ide && npm install && npx @vscode/vsce package`) and install the `.vsix`. See
|
|
163
|
+
[ide/README.md](https://github.com/wshallwshall/MessageFoundry/blob/main/ide/README.md).
|
|
164
|
+
- **Test harness** — synthetic-only send/receive (MLLP), load, and failover tooling for exercising a
|
|
165
|
+
running engine. It ships as a **separate distribution, `messagefoundry-harness`**, released in lockstep
|
|
166
|
+
with the engine (it is *not* in the engine wheel): `pip install messagefoundry-harness`, then
|
|
167
|
+
`python -m harness`. From a checkout, run `python -m harness` directly. Synthetic, PHI-free traffic only.
|
|
155
168
|
|
|
156
169
|
## License
|
|
157
170
|
|
|
@@ -104,6 +104,7 @@ separate owner exercise** — this is the candidate set, not a committed plan.
|
|
|
104
104
|
| **#27 Serial / ASTM** | Low | **confirm-decline** | S | Out-of-scope niche, no demand (recorded #411). Revisit only on a concrete lab-analyzer requirement. |
|
|
105
105
|
| **ASVS 13.3.3 HSM/KMS/Vault KeyProvider** | Med | **done** | — | #377 merged (`d35dbde`). Prune the stale `asvs-1333-keyprovider` worktree — don't fund twice. |
|
|
106
106
|
| **ASVS 4.1.5 per-message signing** | Med | **done** | — | #378 merged (`9c00b88`). Prune the stale `asvs-415-msg-signing` worktree. |
|
|
107
|
+
| **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). |
|
|
107
108
|
|
|
108
109
|
**Top strategic calls:**
|
|
109
110
|
1. **Lock v0.2 now** on fresh #28/#29 evidence + a #22b ship-or-slip — the single highest-leverage release-close move.
|
|
@@ -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.4"
|
|
64
64
|
|
|
65
65
|
__all__ = [
|
|
66
66
|
"Message",
|