Sign inSign up

mancube/mergestro-gate

By mancube

Updated 3 months ago

Behavioral merge gate for AI code: mutation-tests your diff before merge.

Image
Integration & delivery
Developer tools
0

266

mancube/mergestro-gate repository overview

Mergestro Gate (mancube/mergestro-gate)

A behavioral merge gate for AI-generated code — it mutation-tests your diff and blocks merges whose new code isn't actually covered by tests.

LLM-written code compiles, looks plausible, and ships with tests that assert nothing. Mergestro Gate runs differential mutation testing on the changed lines: it mutates your diff, reruns the suite, and any mutant that survives is a line your tests don't really check. It also runs static slop, security, and convention lanes over the same diff. One verdict, gate-able in CI.

  • Image: mancube/mergestro-gateslop-gate CLI on Alpine (rust:1-alpine), with the Rust toolchain + cargo-mutants baked in, so the mutation gate runs fully in-container (no toolchain to wire up).
  • Arch: linux/amd64 (arm64 buildable on demand — see Multi-arch below) · Runs as: nonroot (uid 65532)
  • Binary inside: /usr/local/bin/slop-gate (entrypoint) · Workdir / mount point: /work
  • Source / full docs: github.com/lucheeseng827/mergestro-gate · Apache-2.0

Tags

TagNotes
latestnewest release
0.5.0pinned version (= current latest)
0.5latest 0.5.x

Pin a version in CI: mancube/mergestro-gate:0.5.0.

What's inside

  • slop-gate — the gate CLI (entrypoint).
  • cargo + rustc + cargo-mutants — the Rust mutation engine compiles and tests each mutant, so it needs a toolchain at run time. Baked in.
  • git — merge-base / diff against the base ref.

The non-Rust engines (Python / JS / Go / JVM) are advisory PoCs and are not bundled — add their toolchains yourself if you need them.

Quick start

The container's workdir is /workmount your repo there. It must be a git checkout with the base ref fetched (e.g. git fetch origin main).

# Behavioral gate over the working tree's diff vs origin/main:
docker run --rm -v "$PWD:/work" mancube/mergestro-gate:0.5.0 \
  --repo /work --base origin/main

# Predict the mutant workload first, without building/testing (fast):
docker run --rm -v "$PWD:/work" mancube/mergestro-gate:0.5.0 \
  estimate --repo /work --base origin/main

# Summarise telemetry from prior runs (--metrics-file output):
docker run --rm -v "$PWD:/work" mancube/mergestro-gate:0.5.0 \
  analyze --metrics-file /work/slop-gate-metrics.jsonl

# Help / version:
docker run --rm mancube/mergestro-gate:0.5.0 --help

The gate compiles + tests every mutant in your diff, so wall-clock scales with diff size × suite time. Use estimate to size a run before committing to it.

As a CLI base layer

Prefer your own toolchained image? Copy the binary in and bring your own cargo-mutants:

FROM rust:1-bookworm
COPY --from=mancube/mergestro-gate:0.5.0 /usr/local/bin/slop-gate /usr/local/bin/slop-gate
RUN cargo install cargo-mutants
ENTRYPOINT ["slop-gate"]

Multi-arch

Published images are linux/amd64. An arm64 build exists but is opt-in — the arm64 leg compiles cargo-mutants under QEMU emulation (slow), so it's run on demand via the repo's Publish Docker image workflow rather than every release.

In CI

For GitHub Actions, the Mergestro Gate Action is simpler than wiring this image into a job (it runs on a toolchained runner). Use this image for local runs, non-GitHub CI, and as a self-contained gate environment.

Tag summary

Content type

Image

Digest

sha256:8f1f1087b

Size

348.2 MB

Last updated

3 months ago

docker pull mancube/mergestro-gate