Rowgate: the signed contract as a release gate

Vercel
application badge
Created by team Rowgate on September 26, 2026

THE PROBLEM In banking, telco and insurance, partner API integrations are agreed in a signed spreadsheet: status codes, required fields, error body shapes, one row per rule. That document is the contract. It is almost never turned into OpenAPI, and it never enters code review. So a branch changes a status code from 201 to 202, or drops a currency field, and the pull request looks fine. Every change is defensible on its own and the repository's own tests stay green. Nothing in the diff says a signed row just broke. The cost lands after release as failed checkouts and rejected invoices, and nobody can point at the moment it happened. THE SOLUTION Rowgate is a release gate that reads the spreadsheet. Point it at a branch and each finding returns three things: the cell that broke, such as Orders!C14; a failing test named after it; and a human decision. The cell citation is what makes it checkable. A review bot returns an opinion you have to trust. Rowgate returns a claim you can verify in two clicks: open the cell, read the signed rule, run the test. Every test must fail on the branch before the finding stands, so a wrong citation exposes itself. The human then chooses per finding: fix the code, or accept it as a breaking change. Accepting is not a comment thread: Rowgate writes it back into the signed workbook - the status cell becomes BREAKING and a changelog row is added - so the spreadsheet stays the source of truth instead of drifting from the code. WHO USES IT Release owners and backend teams shipping against a partner contract. You run one command, approve a plan, decide per finding. The output is a web page and a single-file dossier where every number is measured, not asserted: code cut from the diff, pass and fail from pytest, workbook edits compared against git. WHAT MAKES IT DIFFERENT Most AI review tools summarise a diff. Rowgate brings in the document the diff cannot see, and it knows what not to flag. It skipped two changes that look like breaks: a field renamed from request_id to req_id, where a serialization alias keeps the wire name identical, and a status value inside the allowed enum. Each skip is shown with its reason. Zero false alarms matters as much as four true ones. DOES IT WORK Three commits broke four signed cells. Rowgate found all four, proved each with a failing test, skipped the two lookalikes, and cost 6.1 Bobcoins. Reading the same diff by hand found two of four in twelve minutes - and that was the author, who already knew where the breaks were. The tests then stay in the repository, so every later pull request is checked by plain pytest in CI, with no model and no tokens. Our demo pull request is red today on the test for the row a human recorded as breaking: a spreadsheet row, written by a person, blocking a merge.

Category tags: