Skip to content

fix(ci): install resolve-config's dependencies in intake-triage refine-select before refine.mjs --select #9619

Closed

Description

@github-actions

Filed by the lane sweep (run) from slice A. A model wrote the fenced text below from CI data, which can carry text written to steer it; every cited line was checked against main when filed. Rewrite the issue in your own words before marking it agent-ready.

Problem

The refine-select job of intake-triage.yml failed in all 5 failed runs of the window (window complete, 2026-10-23T06:53Z to 2026-10-24T06:53Z): 40069903845 (issue 9611), 40066367323 (9601), 40063820240 (9592), 40063813155 (9591), 40063806244 (9590). Every run fails at step 'Decide whether the issue is thin' with `Cannot find package 'ajv' imported from .../.base/.github/actions/resolve-config/patch-rules.mjs`, exit code 1. The kill-switch and trusted-actor steps pass. Each failure is a run attempt 1 failure, so refinement never runs and the issue is left unrefined. A rerun cannot succeed because the cause is deterministic.

Root cause

refine.mjs --select dynamically imports resolve-config.mjs, which imports patch-rules.mjs, which imports ajv. The refine-select job only checks out main and runs setup-node. It never runs the resolve-config composite action, which is the step that does `npm ci` for ajv and yaml. Other jobs in the file call that action, so their node_modules exist. Here .base/.github/actions/resolve-config/node_modules is absent, so the import throws.
.github/scripts/intake-triage/refine.mjs:587: const { issueLaneWebHostsFromBase } = await import(new URL("../../actions/resolve-config/resolve-config.mjs", import.meta.url).href);
.github/actions/resolve-config/resolve-config.mjs:15: import { checkPatchRules } from "./patch-rules.mjs";
.github/actions/resolve-config/patch-rules.mjs:5: import Ajv2020 from "ajv/dist/2020.js";
.github/workflows/intake-triage.yml:497: node .base/.github/scripts/intake-triage/refine.mjs --select
.github/actions/resolve-config/action.yml:219: npm ci --ignore-scripts --omit=dev --no-audit --no-fund --prefix "$GITHUB_ACTION_PATH"

Proposed fix

Add an install step to refine-select before 'Decide whether the issue is thin': run `npm ci --ignore-scripts --omit=dev --no-audit --no-fund --prefix .base/.github/actions/resolve-config`. Alternatively, call the resolve-config action as the other jobs do, or make issueLaneWebHostsFromBase avoid loading ajv. Add a test that runs refine.mjs --select from a checkout with no node_modules. Check the apply-verdict.mjs import at line 437 for the same gap.

Where

workflow .github/workflows/intake-triage.yml
job refine-select

Activity

  1. added
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 24, 2026
  2. added
    status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.
    priority: criticalProduction broken, data loss, active exploit, or release blocker.
    and removed
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 24, 2026
  3. kyle-sexton commented on Oct 24, 2026

    @kyle-sexton
    Member

    Triaged (Issue Triage session): confirmed lane defect, priority critical, owner: Issue Triage (fix in #9659). Owner rule 2026-10-24: conveyor-stopping blockers are fixed ASAP.

  4. kyle-sexton commented on Oct 24, 2026

    @kyle-sexton
    Member

    Spec (Issue Triage session, restating this bot-filed issue as trusted text):

    Problem. The intake-triage workflow's refine-select job fails on every run since #9439 (2026-10-24 04:18Z) with Cannot find package 'ajv' imported from .../.base/.github/actions/resolve-config/patch-rules.mjs. That was 22 of 37 intake runs on 2026-10-24 (first 40062339901, last checked 40093933477). refine.mjs --select dynamically imports resolve-config.mjs (refine.mjs:587), which imports ajv through patch-rules.mjs. Only the resolve-config action installs those packages, and refine-select does not run it.

    Done when:

    • The refine-select job installs resolve-config's packages (the same npm ci --ignore-scripts --omit=dev the resolve-config action runs) before refine.mjs --select, gated the same way as the select step.
    • The job's permissions, triggers and token use are unchanged.
    • The PR's CI passes.

    Out of scope: re-firing the issues whose refinement failed; that happens after merge.

  5. added a commit that references this issue on Oct 24, 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: criticalProduction broken, data loss, active exploit, or release blocker.status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions