ShipGate gate demo

Blocked: 10 errors. Shipped: 0 errors. Every number on this page is generated from the real output of python -m shipgate audit in the pipeline that deployed it. Nothing is mocked.

The loop

  1. An issue labelled shipgate is picked up by the dispatcher, which opens a merge request set to merge when its pipeline succeeds.
  2. CI runs unit tests, the gates, the autonomy guard, SAST and secret detection. Nothing downstream runs while one is red.
  3. A red MR gets a repair commit (max 3 cycles), then a human is called.
  4. Green merges deploy to GitLab Pages; a scheduled monitor audits the live site and opens one issue if it regresses.

1. A broken change is blocked

## ShipGate report: FAIL

errors: 10  warnings: 3

### Errors (block release)

- `a11y.lang` index.html - <html> has no lang attribute
- `seo.title` index.html - missing or empty <title>
- `mobile.viewport` index.html - missing meta viewport
- `a11y.h1` index.html - expected exactly one <h1>, found 2
- `a11y.img-alt` index.html:6 - <img> without alt
- `links.broken` index.html:7 - broken internal reference: nope.html
- `links.broken` index.html:6 - broken internal reference: missing.png
- `security.mixed-content` index.html:8 - insecure http resource: http://cdn.example.test/x.js
- `privacy.phone_jp` index.html:9 - personal data pattern in a published file
- `privacy.private_email` index.html:9 - personal data pattern in a published file

### Warnings

- `seo.description` index.html - missing meta description
- `a11y.heading-order` index.html:5 - heading jumps h1 -> h3
- `a11y.link-text` index.html:7 - vague link text 'click here'

2. The repaired site ships

## ShipGate report: PASS

errors: 0  warnings: 0

Back to the demo site

Deployed from commit f7428738 by this pipeline.