Skip to content

work-items: no tracking-issue resolver for Dependabot alerts — the lane's dedupe pre-flight is title-scoped, so a tracked alert reads as untracked (medley alert #29 vs medley#1658) #1741

Description

@kyle-sexton

This was generated by AI — observed live by autonomous /work-items:work-loop lane instance MELO-LAP-001-worker-202607290838, cycle 1.

The miss

This lane concluded that melodic-software/medley Dependabot alert #29 was tracked by no
issue, and came within one step of filing a near-duplicate. It is tracked:
melodic-software/medley#1658"Dependabot #29: js-yaml 5.2.2 blocked by markdownlint-cli2
exact pin and npm cooldown"
— open, needs-human, with a full analysis of why the alert cannot
be closed yet.

Consequence, in two parts:

  1. A near-duplicate issue was almost filed against an alert already carrying a considered,
    human-gated resolution plan.
  2. A real, open, high-severity alert reads as untracked — so the same wasted investigation
    recurs for free on every future cycle, and any "untracked alerts" count is wrong.

Root cause: title-scoped search, not a title pattern

The originally suspected cause was a title-shape mismatch — detection matching
Dependabot alert #N: while #1658 is titled Dependabot #29:. That is wrong as a root cause.
Measured against the live repository:

Query Result
gh issue list --search 'in:title "Dependabot alert #29"' 0 hits
gh issue list --search 'in:title "Dependabot #29"' #1658
gh issue list --search 'Dependabot alert 29' (unscoped) #1658, #1640, #1659, #1568

The unscoped search finds #1658 even using the "wrong" phrasing, because the alert number is
durably present in the body:

Dependabot alert #29 — …

So the defect is not that the title pattern is wrong. It is that the search was scoped to
titles at all
, discarding the body — where the alert number and its canonical
/security/dependabot/<N> URL actually live, in a form no title convention has to agree on.

There is no single title convention to fix

melodic-software/medley currently uses at least two title shapes for the same concept:

Any fix shaped as "match the right title pattern" cannot cover #1640, and would break again the
next time a batch issue is filed. The reliable linkage keys are the body's alert number and the
/security/dependabot/<N> URL.

What is verified, and what is not

Verified:

The generic path the lane actually follows is specified, and it is title-similarity:

  • plugins/work-items/reference/dogfood-filing.md — "The sequence", beat 1: "Dedupe first
    (mechanical search + model sameness). Before creating anything, run the search-before-create
    pre-flight … the same read track add performs."
  • plugins/work-items/skills/track/actions/add.md:37 — that pre-flight: "If a potential
    duplicate is found (similar title)…"

So a lane about to file an alert issue is routed to a duplicate check whose only stated signal is
title similarity — against a repo where the alert number lives in the body and the titles follow
no single convention. dogfood-filing.md does say sameness is "a model judgment, not a string
match"
, but the mechanical search it feeds is title-scoped, so a body-only match never reaches
the judgment step.

Not verified — flagged explicitly: the exact query this lane issued is not recoverable. The
miss was reported to this session rather than captured with its command, so the table above shows
what title-scoped search does generally, not a replayed transcript of the failing call. Whether
the lane followed add.md:37 or improvised is therefore inference, not evidence — but both land
on the same title-scoped read.

Fix shape deliberately not chosen

Left to a human. Recording only the constraints the evidence imposes on any fix:

Related

Activity

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

    area: securitySecurity-relevant: vulnerability, hardening, or disclosure follow-up.needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.priority: mediumReal value, no hard deadline; normal backlog flow.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions