A webhook is not a data source
Workbench brings GitLab changes into an open browser in under five seconds. The webhook accelerates the route, while truth stays in GitLab and the local projection stays disposable.
Posts tagged
Workbench brings GitLab changes into an open browser in under five seconds. The webhook accelerates the route, while truth stays in GitLab and the local projection stays disposable.
Every board eventually fails the same way – it remembers which column a card is in, and from then on that memory has to be maintained. Workbench never records it: columns are rules, evaluated on read.
We built a multi-tenant view across several GitLab instances without becoming a second source of truth. The design rule that made it work: the local database is disposable, and reconciliation – not webhooks – is what makes it correct.
A security review pointed out that our secrets manager trusted its own administrators. The fix was zero-knowledge end-to-end encryption – and the honest part of the design is the list of three places where the server still sees plaintext, and why we accepted each one.
Workbench could drop its database and rebuild it. This one polls Graylog and files GitLab issues – and a side effect has no upstream. Why dry-run became a database column, why the dashboard has no delete button, and why the safety guard sits at the HTTP boundary rather than in configuration.