---
title: Close the known league gate and CI blind spots
type: task
status: planned
description: >-
  Owns the documented blind spots in league cluster gates and CI: gate 2 join widening and its
  negative control, the knex ambiguity check, the Test-skip and worktree-root gaps, and two small
  parked rulings. Each lands as its own commit.
base_uri: user:task/league/close-league-gate-and-ci-blind-spots.md
created_at: '2026-09-30T05:59:27.514Z'
entity_id: c7e633d2-72e4-4fbf-98b0-6f04c8e258b0
owner_identity_uri: █████████████████████████
priority: Medium
public_read: true
tags:
  - user:tag/league-xo-football.md
updated_at: '2026-09-30T05:59:27.514Z'
visibility_analyzed_at: '2026-11-05T23:48:32.199Z'
---

# Close the known league gate and CI blind spots

Several league cluster gates and the CI `Test` workflow have documented blind spots where a green reads as coverage it does not have. Each item below is a separate commit; a gate finding turns master red fleet-wide, so land a widened gate only with its adjudications in the same commit.

## Plan

- [ ] Widen gate 2 of `db/gates/check-renamed-column-consumers.mjs` to `.join`/`.leftJoin` candidate sites and re-adjudicate every reopened pair in one commit — [[████████████████████████-██-██████████████-███████-██████-████-██-██████-█████████]]
- [ ] Give `renamed-column-consumers-gate-2` its negative control and flip `negative_control: true` in `scripts/check-cluster-gates.mjs` (still `false` on 2026-09-30) — [[████████████████████████-██-████████████-████████-████████-██-███████-████████]]
- [ ] Teach `db/gates/check-knex-column-resolution.mjs` the 42702 ambiguity check and projection collection, with an empty false-positive set before it lands — [[████████████████████████-██-██████████████-████-████-██-██████-█████████-██████████]]
- [ ] Diagnose whether `Test` still skips league pushes, and resolve `USER_BASE_ROOTS` from the repo root so `yarn check:cluster` works from a worktree — [[████████████████████████-██-███████████████-██████-██-████-███-███-████-████-███████]]
- [ ] Operator yes/no, then add the multi-commit-push reading of an empty `workflow_runs` to `docs/guides/ship.md` (CLAUDE.md is now a router) — [[████████████████████████-██-█████████████████-█████-██████-████-██-██████████]]
- [x] Operator ruling on what `text/nfl/query/matchup/player-occurrences-vs-specific-defense.sql` answers, then rewrite it and remove its `pending_ruling` adjudication — [[████████████████████████-██-████████████████-██████-███-██████-██████████]] — moot: the query is retired in favor of the game sample engine and its adjudication removed (league `d1eed022c`)

## Notes

Each continuation carries the full brief, measurements and traps. Repo: `repository/active/league`; gate conventions in `db/README.md` and `docs/guides/gates.md`.
