Skip to content

[P2] ~97 blocked/infra-attempt/* and blocked/infra-model/* labels have accumulated as unmanaged drift #916

Closed

Description

@itsmiso-ai

Ask: Prune the accumulated blocked/infra-attempt/* and blocked/infra-model/* labels from the misospace/dispatch label set (and add a label-sync guard if the source keeps emitting them) so the kanban filter UI does not have to render 100+ dead labels.

Expected files: .github/labels.yaml, src/app/api/repos/route.ts or whatever reads labels, AGENTS.md (only if a guard rule is added)

Problem: gh label list --repo misospace/dispatch shows ~95 blocked/infra-attempt/N labels (N from 1 to ~95), plus 1 blocked/infra-model/name and 1 blocked/infra parent. These appear to be emitted by a loop somewhere that writes a fresh "blocked/infra-attempt/" per failed GHA attempt, never re-using prior IDs, never pruning them. They are noise on every kanban-board label filter, every repo add-label API call (which auto-creates labels in repos, see issues/label/route.ts comment block), and every audit view. The repo's own labels.yaml (the source of truth for managed labels per #373) does not declare any of them, so they are unmanaged drift. There is no operator-facing reason a single repo failure mode needs 95 unique identifiers.

Evidence:

  • gh label list --repo misospace/dispatch --limit 200 --json name | jq -r '.[].name' | grep '^blocked/infra' | wc -l returns ~97 (95 attempt + 1 model/name + 1 infra).
  • .github/labels.yaml enumerates status/, priority/p, type/, audit, agent/, pr-review-fix, ai-review — no blocked/infra*.
  • issues/label/route.ts comment: "GitHub auto-creates a label that does not exist in the repo." — so a buggy label-emitter on the bridge or pr-followup path is free to spam new labels with no human review.
  • AGENTS.md / SECURITY-ACCEPTED-RISKS.md do not flag this as expected behaviour.

Acceptance: All blocked/infra-attempt/* and blocked/infra-model/* labels are removed from misospace/dispatch via gh CLI or labels.yaml sync (whichever the repo's label-management workflow prefers). If the source emitting them is in-repo code (grep src/ for the literal "blocked/infra-attempt"), include a guard so new labels of that shape cannot be auto-created. Acceptance is a follow-up gh label list showing the blocked/infra* count is 0 or 1 (just the umbrella). Add a brief note in AGENTS.md or a doc in docs/ explaining why the umbrella is allowed and the per-attempt variants are not, so the next person does not regenerate them.

Activity

  1. added
    auditAudit, review, or investigation work.
    status/backlogNot ready for worker pickup yet.
    type/choreRoutine tasks and maintenance
    status/readyReady for Dispatch worker pickup.
    and removed
    status/backlogNot ready for worker pickup yet.
    on Sep 2, 2026
  2. itsmiso-ai commented on Sep 3, 2026

    @itsmiso-ai
    ContributorAuthor

    Groomed: ready for pickup. The acceptance criteria are clear and the evidence is solid. One note for the implementer: .github/workflows/label-sync.yaml exists and is the mechanism that reconciles labels.yaml → GitHub, so the prune step should either go through that workflow or be a one-shot gh label delete loop. The guard belongs in src/app/api/issues/label/route.ts where the auto-create path lives — reject or silently drop any label matching blocked/infra-attempt/\d+ or blocked/infra-model/ unless it is the umbrella blocked/infra.

  3. added a commit that references this issue on Sep 4, 2026
    97702a0
  4. added and removed
    status/in-reviewPull request or human review is in progress.
    on Sep 4, 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

    auditAudit, review, or investigation work.priority/p2Normal priority.status/doneWork is complete.type/choreRoutine tasks and maintenance

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions