tomato·bazeldocs v0 · latest
Docs/Conformance

Registry conformance

Every invariant here is a zero-row gate: the query selects violations, so an empty result set means the invariant holds and any row is a counterexample you can act on. They run as Bazel targets over a projection of the registry's MODULE.bazel graph.

as of 2026-09-14 · tomato-bazel/bazel-registry @ ce604dd

105
findings
across 6 invariants
2/6
invariants clean
a clean gate returns zero rows
55/83
modules clean
66% of the registry
42/63
atoms converged
one live version each

The invariants#

Five gates today. Each is one .rq file plus one Bazel target, so adding an invariant needs no code change — and the rationale on each page is extracted from the query's own header comment, which is why the documentation cannot drift from the gate it documents.

All five in detail →

Modules#

28 of 83 modules have at least one finding. Worst first, because the point of a scoreboard is to say what to fix next. Each row goes to that module's reference page, where its findings sit beside the bazel_dep lines that cause them.

28 of 83 with findings
rules_agentic_ide 6 D2D3 8 contested forge 5 D2D3 15 contested rules_jsonschema 5 D2D3 10 contested rules_lora 5 D2D3 10 contested tracker 5 D2D3 15 contested botnoc 4 D2D3 19 contested meridian_uiview_core 4 D2D3 19 contested vpn 4 D2D3 19 contested meridian_tui 3 D2D3 19 contested rules_huggingface 3 D2D3 10 contested rules_schema_org 3 D3 8 contested fastverk-app 2 D2D3 8 contested fvkit 2 D2D3 8 contested rules_cloudformation 2 D2D3 10 contested rules_docker_compose 2 D2D3 10 contested rules_gitlab 2 D2 15 contested rules_graphviz 2 D2 8 contested rules_runpod 2 D2D3 10 contested rules_spec 2 D2D3 8 contested rules_uv 2 D2 10 contested wave 2 D2D3 8 contested brand 1 D2 8 contested brando 1 D2 17 contested meridian_chat 1 D3 17 contested meridian_web 1 D3 19 contested rules_cc_cross 1 D2 8 contested rules_openapi 1 D2 11 contested rules_ssh_tui 1 D2 15 contested buildbarn no findings 10 contested crova no findings 8 contested decomposer no findings 8 contested gate no findings 8 contested meridian no findings 19 contested meridian_schemas no findings 17 contested pgast no findings 8 contested pgcatalog no findings 8 contested pgmigrate no findings 8 contested pgquery no findings 8 contested pinax no findings 19 contested rules_aion no findings 21 contested rules_aip no findings 8 contested rules_astro no findings 11 contested rules_autoconf no findings 8 contested rules_beam no findings 8 contested rules_bibtex no findings 8 contested rules_brand no findings 8 contested rules_bun no findings 17 contested rules_chrome no findings 17 contested rules_ci no findings 15 contested rules_eslint no findings 17 contested rules_fastverk no findings 8 contested rules_fastverk_plugin no findings 15 contested rules_github no findings 8 contested rules_helm no findings 8 contested rules_jena no findings 10 contested rules_k8s no findings 17 contested rules_lang no findings 8 contested rules_lean no findings 8 contested rules_macvm no findings 8 contested rules_markdown no findings 15 contested rules_mdbook no findings 8 contested rules_meson no findings 8 contested rules_nextjs no findings 15 contested rules_podman no findings 8 contested rules_postgres no findings 8 contested rules_puml no findings 8 contested rules_rdf no findings 10 contested rules_readme no findings 15 contested rules_storybook no findings 17 contested rules_systemd no findings 8 contested rules_tap no findings 8 contested rules_tectonic no findings 8 contested rules_tla no findings 8 contested rules_tomato no findings 8 contested rules_vite no findings 17 contested rules_vscode no findings 17 contested rules_walkthrough no findings 8 contested rules_web no findings 8 contested rules_xsd no findings 10 contested spec no findings 17 contested sqlast no findings 8 contested tomato_brand no findings 19 contested walk_api no findings 8 contested

How this is produced#

tomato-bazel/gate projects the registry's module graph to RDF, runs every .rq against it as a Bazel target, and emits the result as a tomato.gate.v1.ConformanceReport. This site fetches that message and renders it. Nothing is computed here: every count above is a field in the report, and if one is wrong, the query is wrong.

Not a judgement

A gate reports; it does not rank blame. Registry-level invariants like C1 say "this atom is live at two versions", not "this module is at fault" — so they are counted here and attributed per-module only where a companion query makes that meaningful, as contested atoms.