Selim: “I am a bit getting tired of finding the same issues again.” Before the day was half over the company had a new role, and two of his bugs had gone from red to green.
a bug caught once
The idea is simple: “when I report a bug, I want that to be captured in the test first.” A reported bug becomes a case that fails, for the reason he saw, before anyone touches the fix. The fix comes in the next turn. From then on the case guards every merge, in every cube app it reaches, so a bug caught once is caught everywhere.
Selim answered the study that proposed it: “I like that, the regression keeper. Let’s hire that role as part of the testing team.” And he kept the start small: “let’s implement this on master first, only master, and we will see how the practice works.” He doubted that a free GitHub account with private repos could hold such a gate. The finding: the checks do run, but GitHub won’t let them block a merge there. So the gate binds by a written rule: no merge into master while a case that should hold is red.
two cases, two reds
The first case was Selim’s own report: to-do names strung together in a line under Todarch’s cube. “That is too much text there. It’s wrong.” The second was the first case every cube app must hold: scroll down a long level, open the last piece, step out, and the page must be where it was.
The cases play Mosaic’s real build against a made-up world, with no backend. The first try could not see the scroll bug, because on a tall test phone the list barely scrolls. So the case now names a smaller phone, and says “cannot here” when the page does not scroll, so it never passes for nothing. Then it failed in six apps: Todarch, the grouped home, the cube home, agents, people and the company cloud. Each one landed back at the top.
A reported bug is written as a case that fails first; the fix turns it green, and from then on it guards every merge.
and then green
The text under the cube was removed, and the runner said “now holds: mark it green”. The order mattered: marking it green before the fix reached master would have failed everyone else’s merges, so the green mark waits in a pull request of its own.
The scroll bug was harder. One jump back was not enough: the old screen leaving, the zoom-in animation and the router’s own scroll to the top each undid it within a frame. Logging the scroll and the page height frame by frame showed it, and holding the scroll until the page stood still fixed it. The case now holds in all six apps. Three threads split the work, each agreeing on a file layout with the others in one message before writing.