Skip to content

TEST — do not merge: prove the CI gates refuse malformed data - #1

Closed
shutz-c0de wants to merge 1 commit into
mainfrom
test/ci-gate-proof
Closed

shutz-c0de wants to merge 1 commit into
mainfrom
test/ci-gate-proof

Conversation

@shutz-c0de

Copy link
Copy Markdown
Member

Do not merge. This PR exists to be refused.

Verification item 8 of the specification: "a gate that has never failed has never been
tested."
validate.yml had never run against anything — it was written before the repo was
hosted. This proves it actually blocks bad data rather than merely existing.

The added file is entirely synthetic: an invented site, in the reserved country code
ZZ, at coordinates that are not a place. It deliberately violates seven rules at once:

Rule Violation
id is an OpenExits id "not-a-ulid-at-all"
provenance REQUIRED, non-empty empty array
WGS84 ranges lat: 999.0
direction is degrees true 0–359 "north-west", a compass word
measurements carry method + date both omitted
status: seasonal ⇒ seasonalClosure missing
the Commons ships empty a site record exists at all

Locally python ci/run_gates.py --changed … reports 1/7 gates failed on the schema
validation gate. The expectation here is that CI reports the same and the merge is blocked.

Once CI has gone red, this branch gets deleted. The failing run is the artifact worth
keeping — it is the evidence that the gate works, which is what a reviewer of this project's
neutrality claim would want to see.

🤖 Generated with Claude Code

Verification item 8. Not for merge. Invented site, reserved country code
ZZ, coordinates that are not a place. Violates seven normative rules at
once so a single run exercises the schema gate broadly.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@shutz-c0de

Copy link
Copy Markdown
Member Author

Closing as intended — this PR existed to be refused, and it was.

It also found a real defect, which is why it was worth running.

The first run failed, but for the wrong reason: FileNotFoundError: no *.schema.json found.
The validator resolved the schema directory relative to the source tree, so an editable
install worked and the wheel CI installs did not — the package installed cleanly and then
raised on first use. The gate was red at everything it was handed, valid or invalid, while
looking like it was working. It would have rejected genuine contributions on day one.

That defect also made the published validator useless to anyone outside this repository,
which is the audience the standard exists to attract: a reference implementation that needs a
separate checkout of the schemas is not a reference implementation.

Fixed in specification v2.0.1 — setup.py copies ../schema into the package at build
time, so a wheel is self-contained while the schemas stay single-source in git. Verified from
a clean virtualenv outside the repository: 6 schemas bundled, a valid fixture passes, an
invalid one fails.

After the fix, the gate caught all seven planted violations, each by rule id:

OE-R02  lat 999.0 out of range [-90, 90] — lat/lon transposed?
OE-R04  heightAgl.reference is None — must be landing | talus | ground
OE-R05  rockdrop missing ['method', 'measuredAt']
OE-R06  id 'not-a-ulid-at-all' is not a ULID/UUID — vendor ids belong in sameAs
OE-R07  provenance is required and non-empty
OE-R10  exitDirectionDeg is 'north-west' — degrees TRUE 0-359, never a compass word
OE-R14  status is 'seasonal' but seasonalClosure is missing

One further gap closed: the red check did not previously prevent anything. main now has
branch protection requiring the gates check, so this PR reports BLOCKED rather than merely
looking unhealthy. enforce_admins is deliberately off — a solo maintainer must not be locked
out of their own repository — and review requirements are not enabled for the same reason.
Both should be revisited once there are three maintainers.

🤖 Generated with Claude Code

@shutz-c0de shutz-c0de closed this Sep 4, 2026
@shutz-c0de
shutz-c0de deleted the test/ci-gate-proof branch September 4, 2026 13:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant