The hackathon gate had one output: a line in the terminal saying a task passed, failed, or needed a human. That line is honest, but it is small. It does not tell you what the agent touched, which requirements have a test behind them, which of those tests have ever passed in a browser, or why a task has been blocked since last night.
The rebuild's answer was a dashboard, and it is the pa...
My first series, Your agent might actually lie to you, is about one shape of GuardianKane: a Claude Code Stop hook that will not let the agent finish until Kane CLI has checked the work in a real browser. That shape placed ...
The premise of this series is that you should not take an agent's word that it is done. So I built a gate that makes Claude Code prove each task in a real browser before it may stop. The browser is driven by Kane CLI, which is itself an agent.
The obvious question arrives late and uncomfortably: why would I take that agent's word either?
This is the part of the story where the g...
The smallest PRD in my experiments has a section called "Priority badge". It asks for a badge on each task card, keeps the existing layout, and then says this, which is the whole specification of priority:
just with a small badge showing High/
Medium/Low priority somewhere on the card, defaulting to Mediu...The chart looked fine in the code.
The data pipeline was correct. The chart library call had the right shape. Every prop was passed, every array was populated, and nothing about the component would have looked suspicious in thirty seconds of review. If you had put that diff in front of me cold, I would have approved it.
Then I opened the page. The performance chart was rendering...
Reliable automation starts with stable tests.
In Playwright, test stability improves when we use:
from playwright.sync_api