Check a repair
Name a pipeline and the file the repair says it changed. Leave the project empty for this one, or name any public GitLab project. GitLab’s public records answer.
Or try one:
STILL watches the journeys people really take. When one breaks, a plain route keeps them going, and an agent’s fix is only trusted once GitLab’s own records back it.
Measured in production on 25 Oct: 12 requests for the last seat, 1 booked, 11 refused. Read the output (opens in a new tab)
On this page the times are skipped when you press Tab, so someone using a keyboard cannot choose one. The page still loads and the health check still says all is well, so an ordinary uptime monitor sees nothing wrong.
How it works. This is not a live reading.
What the person sees
On this page the times are skipped when you press Tab, so someone using a keyboard cannot choose one. The page still loads and the health check still says all is well, so an ordinary uptime monitor sees nothing wrong.
How it works. This is not a live reading.
What the team does
An agent’s repair is only trusted when GitLab itself says a passing pipeline changed the file the repair names. Check a claim yourself.
Name a pipeline and the file the repair says it changed. Leave the project empty for this one, or name any public GitLab project. GitLab’s public records answer.
Or try one:
A lesson is text an agent may read later. Text that tries to talk an agent out of its checks is kept out.
Or try one:
95.9% of one million home pages had accessibility failures that a script can detect, in the 2026 WebAIM check. That count leaves out everything a script cannot see.
WebAIM Million 2026, updated 30 Mar 2026 (opens in a new tab)85% of the developers and technology buyers GitLab surveyed in 2026 agree AI has moved the bottleneck from writing code to reviewing and validating it.
GitLab research, 23 Jun 2026, 1,528 respondents (opens in a new tab)80%+ attack success when researchers poisoned an agent's memory with fewer than 1 in 1,000 bad entries. OWASP now lists memory poisoning as its own agentic risk.
AgentPoison, NeurIPS 2024, and OWASP ASI06, Dec 2025 (opens in a new tab)29.6% of patches that passed the tests behaved differently from the real fix, in one audit of a popular coding benchmark. Passing is not the same as correct.
Wang, Pradel and Liu, arXiv preprint, 2025 (opens in a new tab)Other people’s figures, each linked to its source. STILL’s answer is narrow: it trusts an agent’s fix only once GitLab’s own records back it, and it screens lesson text against a list of known unsafe phrasings. That list is a first screen, not a guarantee.
The main booking form can fail while the page still loads: on the broken page, Tab skips the appointment times and the health check still says 200. STILL keeps a plain route open, so the person books anyway. Book on the plain route.
A copy of the form, right here. Switch between the broken page and the working one, then press Tab.
Focuses the first field. Then press Tab, Shift+Tab and the arrow keys.
What the keyboard just did
Tab order right now
Tab reaches 3 controls and none of the 3 times.
That was a copy. The real page behaves the same way, and the health check still answers 200 while it does.
A short film recorded from the live site and public GitLab pages. Nothing plays until you press play.
Each step below is read from GitLab and links to its page. The repair has not been released.
The change
It deletes the line that kept the appointment times out of the Tab order.
name="slot" onChange={() => setSelectedSlot(slot.id)}Removed: tabIndex={brokenPrimary ? -1 : undefined} type="radio" value={slot.id}The decision
Nothing deploys itself. A person reads the change and the checks, and a person decides every release.
Each status is read from GitLab when it answers. What is not public is marked as recorded, with its time.
1 The fault
Reproduced on the broken routeOn /book?broken=1, pressing Tab skips every appointment time. The page still loads and /health still answers 200, so a plain uptime check sees nothing wrong. Only a test that presses Tab sees it.
Open the broken route2 Issue #1
OpenFix keyboard accessibility regression in primary booking slot selection
Read issue #1 (opens in a new tab)3 GitLab Duo session #10009278
Finished: made a one-line changeGitLab Duo Developer searched the code, edited the booking form and committed a one-line change, in 10 recorded steps. It ran in a private project, so only the owner can open the session, and it ran no tests. The raw record is in this repository. An earlier session, #10006279, stopped at plan approval.
Open session (owner sign-in) (opens in a new tab)The 10 recorded steps
Step 1 of 10 start
Started the flow +0.0s
Starting Flow: Resolve issue #1: the slot radio inputs in apps/web/components/booking-flow.tsx get tabIndex -1 on the broken route, so keyboard users cannot reach appointment times. Make the smallest change that fixes it, commit it to a new branch and open...4 Merge request !1
Open, needs rebaseThe same one-line change, made by the owner in this repository: delete the line that stops Tab reaching the appointment times.
Read the diff (opens in a new tab)5 Pipeline #2984938201
successTests, type checks and packaging run on the merge request. The last green run on this merge request was pipeline 2984938201, on 24 Oct.
Open pipeline (opens in a new tab)6 Release to production
Awaiting approval, needs a rebase firstNothing is promoted automatically. A person merges the merge request after reading the diff and the checks.
Review and approve (opens in a new tab)STILL was set up to check this site every hour. GitLab CI minutes ran out on 25 Oct, so the schedule is switched off and nothing is checking this site on a schedule today.
Last 30 scheduled runs
17 passed, 12 canceled, 1 failed
Read from the public GitLab API. Left is oldest, right is newest. Arrow keys move along the strip; each bar is a link.
Asks the health page and the service list for an answer, and checks that a receipt without a key returns 401. The broken page passes this check, because the page loads.
Opens a real browser and uses only the keyboard on the booking pages. It must pass on the working pages and must report the broken page as failing.
Seven questions a careful reader should ask, answered before they have to.
No. The recorded session searched the code, made a one-line change and opened a draft merge request. It ran no tests. The checks that ran came from the project's own pipeline, on the owner's merge request.
No. Merge request !1 is open and not merged. A person decides every release, and nothing deploys itself.
Not the session page: it ran in a private project. The recorded steps and the raw trace are in this repository.
No. The hourly checks stopped on 25 Oct, when the free GitLab CI minutes ran out. The last runs are in the pipeline history, and the strip above shows them as they were.
The owner, to match the change Duo made in the private project. Duo did not open it.
No. There has been no user study and no screen-reader test. The automated accessibility checks found no violations on the pages they covered, which is not the same thing.
No. The service, the appointment times and every booking are made up for the demonstration.
Book a made-up appointment, or read every line of how it works.
STILL is a demonstration advising service and every booking is made-up data.