Skip to content

PR title checker should reject placeholder JIRA keys like LCORE-0000 #3069

Open

Description

@fullsend-ai-retro

What happened

PR #3053 used the title LCORE-0000: Fix konflux build and passed the pr-title-checker CI gate. The review agent flagged this as a [low] missing-authorization finding, noting the placeholder JIRA key. The current .github/pr-title-checker-config.json uses a prefix-based check (LCORE-, RSPEED-, etc.) that matches any string starting with the prefix, including invalid keys like LCORE-0000, LCORE-, or LCORE-abc. PR #3053 was ultimately closed without merging, but the same placeholder was also used on PRs #3035 and #3048, showing this is a recurring pattern.

What could go better

The PR title checker should enforce that the JIRA key contains a valid issue number (non-zero integer), not just match a prefix string. This would catch placeholder keys deterministically at CI time instead of relying on agent review to flag them. Confidence: high — the pr-title-checker GitHub Action supports regexp checks in addition to prefix checks, making this a simple config change. The AGENTS.md already states that CI enforces JIRA prefixes, so tightening the validation aligns with existing intent.

Proposed change

In .github/pr-title-checker-config.json, replace the prefixes array with a regexp pattern that requires a valid JIRA issue number (one or more digits, not all zeros) after the project prefix. For example:

{
  "CHECKS": {
    "regexp": "^(LCORE|RSPEED|MGTM|OLS|RHIDP|LEADS|CWFHEALTH)-[1-9]\\d*[: ]|^\\[release/"
  }
}

This rejects LCORE-0000, LCORE-0, and LCORE-abc while accepting LCORE-5106, RSPEED-2849, etc. The [release/ prefix continues to work via the alternation.

Validation criteria

After the config change: (1) a PR titled LCORE-0000: test should fail the title check, (2) a PR titled LCORE-5106: test should pass, (3) a PR titled [release/0.8] test should pass. Verify by opening a test PR or checking the pr-title-checker action documentation for local validation.

Related issues checked

Searched: LCORE-0000 placeholder pr title; pr title checker JIRA placeholder validation
No overlapping issues found.


Generated by retro agent from #3053

Activity

  1. fullsend-ai-triage commented on Oct 29, 2026

    @fullsend-ai-triage

    🤖 Finished Triage · ✅ Success · Started 4:19 PM UTC · Completed 4:23 PM UTC

    Commit: 401a7b5 · View workflow run →

    Runtime: pi · Model: opus → claude-opus-4-6 · Effort: high · Cost: $0.90

  2. fullsend-ai-triage commented on Oct 29, 2026

    @fullsend-ai-triage

    The fix is a config-only change to .github/pr-title-checker-config.json — the workflow YAML does not need modification. The thehanimo/pr-title-checker action supports regexp as a direct replacement for prefixes, so this is a drop-in change.

    Proposed test case:

    LCORE-0000: test       → FAIL (all-zero placeholder)
    LCORE-0: test          → FAIL (zero-only number)
    LCORE-abc: test        → FAIL (non-numeric)
    LCORE-5106: test       → PASS (valid key)
    RSPEED-2849: test      → PASS (valid key, different project)
    [release/0.8] test     → PASS (release prefix)
    LCORE-1 fix typo       → PASS (single digit, space separator)
    

    Note: the existing [release/ prefix handling must be preserved in the regex alternation to avoid breaking release branch PRs.


    Next steps:

    • /fs-code — agent creates a PR to implement this issue
    • /fs-code <your instruction> — agent implements with your specific guidance
  3. fullsend-ai-coder commented on Oct 29, 2026

    @fullsend-ai-coder
    Contributor

    🤖 Finished Code · ✅ Success · Started 4:36 PM UTC · Completed 4:40 PM UTC

    Commit: 401a7b5 · View workflow run →

    Runtime: pi · Model: opus → claude-opus-4-6 · Effort: high · Cost: $0.90

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

    bugSomething isn't workingready-for-triageTriggers triage agent dispatchready-to-codeTriggers code agent dispatch

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions