Reliability

Your interfaces live in your git — reviewed, tested, reversible

With MessageFoundry, your integration logic isn't buried in an engine's database. It's ordinary code in your own version-controlled repository — so every change is a reviewable diff, every change is tested by CI against the real engine before it ships, and rolling back is one git command. That's what makes a small team's interfaces dependable.

The usual problem

Where interface logic usually lives

On most legacy engines, a channel's filters and transforms live inside the engine's own database. That has consequences teams feel for years.

Hard to review

Logic in a database blob is hard to diff, peer-review, or reason about. Changes land without the author, history, and review that other code gets.

Drifts between environments

"Someone changed it in the Prod GUI, and now Staging ≠ Prod." Without one source of truth, environments quietly diverge.

Risky to change

No commit-time gate means a broken route or a bad transform is often found in production — and rollback means restoring a database, not reverting a commit.

Config as code

Your interfaces, in a repository you own

Connections, Routers, and Handlers are plain Python in your private git repo — scaffolded by messagefoundry init. The engine itself is a pinned, signed dependency your team installs but never edits.

One reviewed commit of that repo deploys to every environment; only a small per-environment values file differs, so Test can't drift from Prod. Git is the source of truth — and it carries no secrets and no PHI (those come from environment variables, never the repo).

The CI gate

Nothing merges until it passes — against the real engine

messagefoundry init scaffolds a ready-made CI workflow in your repo. It runs on every pull request and every push to main, and the same gate runs in the VS Code editor and an optional pre-commit hook — so a green CI means a green desk.

Validate

Every config module imports and every inbound → router → handler reference resolves. A router named but never defined, a dangling binding, or an import error fails the build.

Dry-run — the one that matters

Synthetic messages route through the engine's real routing core — the same function production runs — with no store, network, or connectors. Green in CI means it routes identically in production; there's no separate test path to drift from reality.

Posture

Catches the environment / security-posture foot-gun that would make the engine refuse to start — at commit time, not at 2 a.m. on the Prod box.

Supply-chain verify

Before install, CI verifies the pinned engine wheel's build provenance (SLSA / Sigstore). A swapped or relabelled wheel fails the build instead of shipping silently.

Branch protection

Make the gate a merge requirement on main: no interface change lands unless validate and dry-run are green and reviewed.

One gate, three places

The exact same check runs in the editor as you work, in your pre-commit hook, and in CI on the PR — so problems surface early and consistently.

What it buys you

Reliability you can see — and prove

Reviewed before it ships

Interface logic gets the same rigor as application code: branch, pull request, review, merge — with CI exercising your routes on representative traffic first.

Reversible by design

Every change has an author and a history; reverting is a git operation. Engine upgrades are a deliberate, pinned, one-line bump you can roll back.

No surprise drift

Promotion is "merge to main, deploy that commit everywhere." Environments stay in lock-step because they run the same reviewed code.

Honest scope

What the gate proves — and what's still on you

The CI gate proves your config loads, wires, and routes representative traffic without error, using the production routing logic. It does not by itself prove that a transform's output matches a downstream system byte-for-byte — a transform can produce valid-but-wrong HL7 and still pass.

Output parity is a separate discipline, and MessageFoundry gives you the tools for it: a synthetic test corpus you build with messagefoundry generate, the standalone test harness (disposition coverage and fault injection), and a reconciliation window (golden in/out pairs, sent-vs-delivered) before and after cutover. We say this plainly because reliability you can trust is reliability stated honestly.

Adopt interfaces you can review, test, and roll back

Scaffold a config repo with the CI gate already wired in, and run your first message in minutes.