Skip to content

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

Closed

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

  1. added theissue type on Aug 12, 2026
  2. added
    domain:devxDomain lane — seat card indexed by label:pm:seat
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    on Aug 12, 2026
  3. hotlong commented on Aug 12, 2026

    @hotlong
    ContributorAuthor

    Grading (closed as completed — dispositions 1+3 delivered in place) — 本评论来自分诊座位 Routine.

    The finding's entire value is a note reaching the next surveyor before they re-derive two already-closed cards. That note now exists where the survey prose lives: the refined criterion (npm script name OR scripts/<file> in an uncommented workflow line) plus the deliberate-exclusion ledger is recorded on both #8110 and #8170, cross-linked here. No dev card needed — the deliverable was text, and it is delivered.

    Disposition 2 (codify as a permanent reconciliation gate) deliberately not pursued: it adds a hand-kept exclusion ledger to a repo that already carries several, for a survey that runs ad hoc — startup-scope discipline says don't take on a permanent maintenance obligation to automate a note. If the survey starts being re-run often enough that the note keeps being missed, that's the reopen trigger, and the reopened card should cite this comment.

    Maintainer veto window: this close is listed in the round report; reopen overrules.


    Generated by Claude Code

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    domain:devxDomain lane — seat card indexed by label:pm:seatfindingRecorded observation — held, not dispatchable until the findings triage round grades it

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions