Skip to content

The check:*-unwired survey still names both split-gate family members after both landed #8229

Description

@hotlong

Observation filed while implementing #8170 (PR #8227). Not fixed there — out of that card's scope.

The finding

The survey both #8110 and #8170 rest on is: enumerate the root check:* scripts, grep them against .github/workflows/** with YAML comment lines stripped, and treat a script matched by nothing as unwired. That method is sound for its purpose, and its comment-stripping step is what made it correct in the first place.

But the fix both cards landed is a step invoking the script directly:

- name: Self-test the skill-frame freshness gate (self-test half only, never the scan)
  run: node scripts/check-skill-frame-freshness.mjs --self-test

— deliberately not pnpm check:skill-frame-freshness, because the npm script is --self-test && the scan and the scan half must not come along. Same for #8170's step.

The consequence: the npm script name still appears in no workflow, so re-running the same survey today reports both landed gates as unwired. Measured on main plus PR #8227's head, comments stripped:

check:skill-frame-freshness  -> 0 workflow references   (wired since PR #8171)
check:dev-prereqs            -> 0 workflow references   (wired in PR #8227)
check:platform-checklist     -> 0 workflow references   (genuinely out, by policy)

All three columns read identically, and only one of the three is still a real finding. The next agent running this survey re-discovers two cards that are already closed, and the negative half of the survey — the part the original card went out of its way to make reviewable — is what stops being reviewable.

Why it is worth recording

The survey is not a committed script; it lives as prose in #8110 and #8170. So nothing will notice it going stale, and the failure mode is exactly the one the family is about: a check that reads as coverage while measuring the wrong thing.

Dispositions, not a recommendation

  1. Refine the criterion — a script counts as wired if EITHER the npm script name OR scripts/(its file) appears in an uncommented workflow line. One-line change to the method, zero change to the repo. Cheapest, and keeps the survey ad-hoc.
  2. Codify it as a gate — a check: that reconciles the root check:* list against workflow wiring in both directions, with an explicit ledger for the deliberate exclusions (check:platform-checklist, and the scan halves of the two split gates). Real coverage, real cost: the ledger is another hand-kept list, and this repo already carries several.
  3. Do nothing, record the note on check:skill-frame-freshness --self-test runs nowhere in CI, so a broken fixture is invisible until a human runs the gate #8110 / check:dev-prereqs --self-test runs nowhere in CI — the second and only other member of #8110's split-gate family #8170 so the next surveyor reads it before re-deriving.

No recommendation offered — the choice between 1 and 2 is a maintainer call about how much survey tooling the devx surface should carry, and disposition 2 in particular is a new permanent gate rather than a fix.


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions