Skip to content

fix(pr-pipeline): fix-ci refuses ci-fix-protected-path when the fix needs no protected path #9320

Closed

Description

@kyle-sexton

Problem

On #9111, pr-unblock's fix-ci stopped with ci-fix-protected-path ("the CI fix changes .github/"), but the fix the PR needed touched no .github/ file. The PR sat red with needs-human for about 12 hours.

The real causes:

  • Two new .sh files were committed with mode 100644 instead of executable.
  • The generate-adapter.test.sh fixture lacked the new required verb get-field-options, which failed check-skills and test-bash.

Issue Triage's worker fixed it by hand in 76e2cba: #9111

Expected

The protected-path refusal fires only when the model's proposed patch actually changes a protected path. A fix that needs no protected path is applied, or the refusal names the protected file it would have touched.

To investigate

  • Whether the refusal is decided from the failing job's location (a .github/workflows job) rather than from the patch's changed paths.
  • Whether a mode-only change (100644 to 100755) is classified as a protected-path change.

Reported by the Issue Triage session (F17).

Activity

  1. added
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 23, 2026
  2. github-actions commented on Oct 23, 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: Knowable
    Flags: none

    Understood: on #9111, fix-ci stopped with ci-fix-protected-path even though the needed fix (file modes and a test fixture) touched nothing under .github/. The PR sat red for about 12 hours. You expect the refusal to fire only when the proposed patch changes a protected path, and to name the file when it does. Two causes are still open: whether the refusal looks at the failing job's location instead of the patch's paths, and whether a mode-only change is counted as protected. Reading the fix-ci guard code should settle both. I found no likely duplicates among the open issues.

    Automated triage, applied by the lanes App.

  3. added
    priority: highSignificant impact, or blocks an imminent release; staff this cycle.
    and removed
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 23, 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.
    and removed
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    on Oct 23, 2026
  5. melodic-automation-lanes commented on Oct 23, 2026

    @melodic-automation-lanes
    Contributor

    Not admitted to the issue lane: Uncertainty knowable is not one of known; it has no - [ ] task list to check. A recorded decision does not change these rules (.github/actions/resolve-config/admission-rules.json); a person who wants it worked adds agent-ready.

  6. added
    status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.
    and removed
    status: needs-decisionAwaiting a human or maintainer judgment call.
    on Oct 23, 2026
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: highSignificant impact, or blocks an imminent release; staff this cycle.status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.

    Type

    Fields

    No fields configured for Bug.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions