Skip to content

ci: run comment-hygiene locally in check-affected so a comment violation fails before push #9648

Open

Description

@kyle-sexton

Problem

The comment-hygiene check is CI-only (scripts/check-affected-gates.txt:32, "comment-hygiene ci-only ci-workflows composite"). Neither the pre-push hook nor check-affected.sh runs it, so a PR that adds an issue number, run id or date to a code comment finds out only after a full CI round. The lint-repo annotation then says only "Hygiene check comment-hygiene finished with outcome: failure", because the composite action's output is not captured, so finding the line takes another step.

On 2026-10-24 this happened three times:

Fix

Run the same patterns locally in check-affected.sh, against the changed files' comment lines. Read them from the pinned ci-workflows check-comment-markers/comment-hygiene-patterns.sh, not from a copy, so the local and CI checks cannot drift. Optionally, have the composite action print the offending file:line to the job log, so the CI annotation points at it.

Who uses it: every builder that pushes, before CI spends a run on it.

Activity

  1. added
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 24, 2026
  2. github-actions commented on Oct 24, 2026

    @github-actions
    Contributor

    Proposed work class: work-class: scoped
    Basis: automated intake triage; the lanes App applied this class.

    Size: Small
    Complexity: Medium
    Uncertainty: Known
    Flags: none

    Understood: the comment-hygiene check runs only in CI, so comment violations (issue numbers, run ids, dates) are found after a full CI round. You propose running the same patterns locally in check-affected.sh. The patterns would be read from the pinned ci-workflows comment-hygiene-patterns.sh, so local and CI can't drift. Optionally the composite action would print the offending file:line to the job log.

    Nothing essential is missing. One point for the implementer to confirm: the pinned ci-workflows file must be reachable locally without a network fetch. I found no likely duplicates among the open issues.

    Automated triage, applied by the lanes App.

  3. added
    priority: mediumReal value, no hard deadline; normal backlog flow.
    and removed
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 24, 2026
  4. added
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.
    status: needs-decisionAwaiting a human or maintainer judgment call.
    and removed
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    on Oct 24, 2026
  5. melodic-automation-lanes commented on Oct 24, 2026

    @melodic-automation-lanes
    Contributor

    Not admitted to the issue lane: no trusted-human acceptance criteria: a listed human must put the confirmed - [ ] criteria in the body or post them as their own comment (owner Q9, #8999). A recorded decision does not change these rules (.github/actions/resolve-config/admission-rules.json); a person who wants it worked adds agent-ready.

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

    priority: mediumReal value, no hard deadline; normal backlog flow.status: needs-decisionAwaiting a human or maintainer judgment call.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.

    Type

    Fields

    No fields configured for Task.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions