A repair you can check

AI repairs, with receipts.

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)

Read the change on GitLab (opens in a new tab)

Continuity Causeway: how a person finishes while the team repairs the failure

Keyboard blocked

Broken on purpose

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.

  1. What the person sees

    1. Keyboard blocked

      Broken on purpose

      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.

  2. What the team does

Ask GitLab, not the agent.

An agent’s repair is only trusted when GitLab itself says a passing pipeline changed the file the repair names. Check a claim yourself.

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:

Check a lesson

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:

Fixes arrive fast. Trust does not.

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.

When the form breaks, people still finish.

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.

Try it with your own keyboard

A copy of the form, right here. Switch between the broken page and the working one, then press Tab.

Keyboard trial: the same form, two ways

Appointment time

Sample times and a made-up form. Nothing here is saved or booked.

Focuses the first field. Then press Tab, Shift+Tab and the arrow keys.

What the keyboard just did

  1. Nothing yet. Press Start the trial.

Tab order right now

  1. Topic fieldTab stop
  2. Mon 26 Oct, 1:00 pmskipped by Tab
  3. Tue 27 Oct, 10:30 amskipped by Tab
  4. Tue 27 Oct, 2:00 pmskipped by Tab
  5. Name fieldTab stop
  6. Email fieldTab stop

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.

Watch it happen.

A short film recorded from the live site and public GitLab pages. Nothing plays until you press play.

Captions are on by default. Read them as a file.

How the fault was found and fixed.

Each step below is read from GitLab and links to its page. The repair has not been released.

The change

One line

It deletes the line that kept the appointment times out of the Tab order.

Merge request !1apps/web/components/booking-flow.tsx
  name="slot"  onChange={() => setSelectedSlot(slot.id)}Removed:   tabIndex={brokenPrimary ? -1 : undefined}  type="radio"  value={slot.id}

The decision

A person decides

Nothing deploys itself. A person reads the change and the checks, and a person decides every release.

The whole trail, in order

Each status is read from GitLab when it answers. What is not public is marked as recorded, with its time.

  1. 1 The fault

    Reproduced on the broken route

    On /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.

    Recorded 24 Oct, 17:44 UTC

    Open the broken route
  2. 2 Issue #1

    Open

    Fix keyboard accessibility regression in primary booking slot selection

    Read from GitLab 27 Oct, 22:01 UTC

    Read issue #1 (opens in a new tab)
  3. 3 GitLab Duo session #10009278

    Finished: made a one-line change

    GitLab 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.

    Recorded 24 Oct, 22:11 UTC · private project, owner sign-in required

    Open session (owner sign-in) (opens in a new tab)

    The 10 recorded steps

    Session #10009278, developer/v1, finished. Read from the raw trace.

    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. 4 Merge request !1

    Open, needs rebase

    The same one-line change, made by the owner in this repository: delete the line that stops Tab reaching the appointment times.

    Read from GitLab 27 Oct, 22:01 UTC

    Read the diff (opens in a new tab)
  5. 5 Pipeline #2984938201

    success

    Tests, type checks and packaging run on the merge request. The last green run on this merge request was pipeline 2984938201, on 24 Oct.

    Read from GitLab 27 Oct, 22:01 UTC

    Open pipeline (opens in a new tab)
  6. 6 Release to production

    Awaiting approval, needs a rebase first

    Nothing is promoted automatically. A person merges the merge request after reading the diff and the checks.

    Derived from the merge request

    Review and approve (opens in a new tab)

Monitoring, and where it stands.

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

  • Passed
  • Failed
  • Canceled or other
failedPipeline #2986530893 / 25 Oct, 13:07 UTC

Read from the public GitLab API. Left is oldest, right is newest. Arrow keys move along the strip; each bar is a link.

Light check: is the site up?

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.

Deep check: can a person finish?

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.

Most recent finished run

Pipeline #2986530893 (opens in a new tab) failed

Started 25 Oct, 13:07 UTC

A run marked failed can mean GitLab refused to start some jobs because the minutes ran out. Open it to see which.

Open the status console

What this is not.

Seven questions a careful reader should ask, answered before they have to.

Did GitLab Duo run any tests?

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.

Is the repair released?

No. Merge request !1 is open and not merged. A person decides every release, and nothing deploys itself.

Can I open the Duo session?

Not the session page: it ran in a private project. The recorded steps and the raw trace are in this repository.

Is the monitor running right now?

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.

Who wrote merge request !1?

The owner, to match the change Duo made in the private project. Duo did not open it.

Has anyone user-tested this?

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.

Is any of the data real?

No. The service, the appointment times and every booking are made up for the demonstration.

See it for yourself.

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.