Before you open a case
What a repo needs
Requirements for the full S1–S9 run · one GitHub repo with both services
1 · The upstream service Owns the contract
- REST:
contracts/openapi.yaml in the service folder (or the repo root).
- gRPC: a
.proto file directly in contracts/.
- Database: Alembic migrations in
migrations/versions/*.py (new files between base and head).
- A change to compare: a commit that edits those contracts. Paste a
/pull/<n> or
/compare/<base>...<head> link, or SyncSnitch picks the latest contract commit.
2 · The consumer service Gets the fix
- Another folder in the same repo with a
pyproject.toml (a Python project).
- Tests that run with
uv run pytest -q: the Transformer and check V1 use exactly this.
- Real usage of the changed fields in
.py, .sql, .proto files or JSON
fixtures under tests/. No usage means no breaking change for it, and the agents have nothing to fix.
3 · Optional Stronger proof, private repos
- A
Dockerfile in both services and Docker on the machine running the site: V3–V5
run in containers. Without them they are reported as skipped, never as passed.
- Private repos: the server needs
GITHUB_TOKEN; opening the draft PR needs
gh logged in with push access.
Not supported yet: consumers in other languages than Python, and contracts in other
paths. The cold cases on the home page (kshiti26-11/demo: orders-service → billing-service) meet every
requirement.