Skip to content

Issue area labeler workflow fails on every issue — .github/issue-labeler.yml uses (?i) inline groups unsupported by JS RegExp #764

Description

@lg320531124

Summary

The Issue area labeler workflow fails on every new issue because .github/issue-labeler.yml uses (?i) inline case-insensitive groups, which JavaScript RegExp (used by the github/issue-labeler action) does not support. The action throws SyntaxError: Invalid group on the first rule and no area labels are ever applied.

Failure

Run: https://github.com/DeusData/codebase-memory-mcp/actions/runs/28579100257
Triggered by: issues event (filing #763)
Job: triagegithub/issue-labeler@c1b0f9f
Conclusion: failure

Log tail:

Configuration file (path: .github/issue-labeler.yml) does not exist locally, fetching via the API
##[error]SyntaxError: Invalid regular expression: /(?i)\b(windows|win\s?1[01]|powershell|\.ps1|mapped drive|smb share|unc path)\b/: Invalid group

Root cause

.github/issue-labeler.yml — all 7 rules use the (?i) inline group:

"windows":              '(?i)\b(windows|win\s?1[01]|powershell|\.ps1|mapped drive|smb share|unc path)\b'
"stability/performance":'(?i)(out of memory|\boom\b|memory leak|segfault|...)'
"parsing/quality":      '(?i)(trace_path|query_graph|search_graph|calls? edge|missing (edges|nodes)|...)'
"editor/integration":   '(?i)(cursor|vscode|vs code|opencode|codex|...)'
"ux/behavior":          '(?i)(web ui|\bui\b|dashboard|3d graph|...)'
"cypher":               '(?i)\bcypher\b'
"language-request":     '(?i)(language support|hybrid lsp|...)'

(?i) is PCRE / Python / Rust-regex syntax. The github/issue-labeler action runs on Node.js and compiles each pattern with JavaScript RegExp, which rejects (?i)SyntaxError: Invalid group on the very first rule. The workflow aborts before any rule is evaluated, so every issue misses its area label, not just the one matching the failing rule. The whole labeler has been a no-op.

Fix direction

JavaScript RegExp has no inline (?i) and the action exposes no per-rule i flag (its inputs are configuration-path, enable-versioned-regex, include-title, include-body, sync-labels — none toggle case-insensitivity). Two options:

  1. Drop (?i) and use character classes for the case-variant first letters, e.g. [Ww]indows, [Pp]owershell. Smallest diff, keeps current action.
  2. Switch to a case-insensitive-capable config — either move to a labeling action that supports regex flags, or pre-lowercase in the pattern by listing common casings. Heavier, probably not worth it.

I'd lean (1) — minimal, stays on the current action. Happy to open a PR either way.

Side note

This also means the area labels that should have routed #763 (it matches the parsing/quality rule: trace_path, query_graph, calls? edge) never got applied. Fixing this unblocks correct triage routing for the CALLS-edge root-cause issue too.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions