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

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions