Skip to content

feat(labels): estate label tooling + auto-triage for new issues - #107

Open
hyperpolymath wants to merge 1 commit into
mainfrom
automated/label-tooling
Open

feat(labels): estate label tooling + auto-triage for new issues#107
hyperpolymath wants to merge 1 commit into
mainfrom
automated/label-tooling

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Ships the canonical label set and the classifier that labels newly-filed issues.

Additive only — never removes a label, never overrides a human's classification, silent when unsure, never fails an issue.

Also adds this repo's two new workflows to .github/workflows/actions.lock as []. That lock is keyed by workflow path and refuses any workflow it does not list — a startup_failure, which produces no check run and is therefore silent. gh actions-lock cannot add these: it records action versions, and both workflows deliberately use none.

See docs/LABELS.adoc in hyperpolymath/.git-private-farm.

🤖 Generated with Claude Code

@coderabbitai

coderabbitai Bot commented Aug 27, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 653cdf4e-0da8-4b81-9297-aa52d946dee1

📥 Commits

Reviewing files that changed from the base of the PR and between 11adfa4 and 95d85e6.

⛔ Files ignored due to path filters (1)
  • .github/workflows/actions.lock is excluded by !**/*.lock
📒 Files selected for processing (5)
  • .github/label-classifier.json
  • .github/labels.json
  • .github/scripts/classify-issue.jq
  • .github/workflows/label-triage.yml
  • .github/workflows/labels.yml

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.

📜 Recent review details
🧰 Additional context used
🪛 zizmor (1.29.0)
.github/workflows/label-triage.yml

[error] 43-43: overly broad permissions (excessive-permissions): issues: write is overly broad at the workflow level

(excessive-permissions)


[warning] 43-43: permissions without explanatory comments (undocumented-permissions): needs an explanatory comment

(undocumented-permissions)


[info] 47-47: workflow or action definition without a name (anonymous-definition): this job

(anonymous-definition)


[warning] 33-40: insufficient job-level concurrency limits (concurrency-limits): workflow is missing concurrency setting

(concurrency-limits)

.github/workflows/labels.yml

[error] 29-29: overly broad permissions (excessive-permissions): issues: write is overly broad at the workflow level

(excessive-permissions)


[warning] 29-29: permissions without explanatory comments (undocumented-permissions): needs an explanatory comment

(undocumented-permissions)


[info] 33-33: workflow or action definition without a name (anonymous-definition): this job

(anonymous-definition)


[warning] 20-26: insufficient job-level concurrency limits (concurrency-limits): workflow is missing concurrency setting

(concurrency-limits)

🔇 Additional comments (5)
.github/label-classifier.json (1)

1-739: LGTM!

.github/labels.json (1)

1-260: LGTM!

.github/scripts/classify-issue.jq (1)

32-164: LGTM!

.github/workflows/label-triage.yml (1)

33-116: LGTM!

.github/workflows/labels.yml (1)

20-105: LGTM!


📝 Walkthrough

Summary by CodeRabbit

  • New Features
    • Added automated labelling for newly opened and reopened issues based on their titles and existing labels.
    • Added a centralised set of 44 repository labels, including types, areas, priorities, statuses, metadata and scopes.
    • Added scheduled and on-demand synchronisation to create and maintain repository labels.
  • Chores
    • Added generated label configuration and classification data to support consistent triage.

Walkthrough

The change adds generated label taxonomy files, a jq-based issue classifier, an additive issue-triage workflow, and a scheduled label-synchronisation workflow.

Changes

Issue Label Automation

Layer / File(s) Summary
Label taxonomy and classification rules
.github/label-classifier.json, .github/labels.json
The generated configuration defines label mappings, tier limits, valid types, frozen labels, precedence, colours, descriptions, and generation metadata.
jq issue classification pipeline
.github/scripts/classify-issue.jq
The script matches title prefixes, bracket tags, keywords, and signals. It enforces tier limits and excludes labels already present on the issue.
Workflow execution and label updates
.github/workflows/label-triage.yml, .github/workflows/labels.yml
The workflows classify opened or reopened issues, add defined labels, and synchronise canonical labels while preserving frozen labels.

Estimated code review effort: 4 (Complex) | ~45 minutes

Merge Risk: ⚪ Minimal · up to 95d85

This additive label tooling change has no actionable merge-blocking risk identified at the current head and is merge-ready after normal checks and review.

Sequence Diagram(s)

sequenceDiagram
  participant IssueEvent
  participant LabelTriageWorkflow
  participant GitHubAPI
  participant ClassifyIssueJQ
  IssueEvent->>LabelTriageWorkflow: trigger on opened or reopened issue
  LabelTriageWorkflow->>GitHubAPI: fetch rules, script, title, and labels
  LabelTriageWorkflow->>ClassifyIssueJQ: classify title with existing labels
  ClassifyIssueJQ->>LabelTriageWorkflow: return candidate labels
  LabelTriageWorkflow->>GitHubAPI: add defined labels to issue
Loading

Poem

A rabbit checks the labels bright

jq sorts each tag just right
Frozen names stay in place
New issue clues join the case
Workflows hop through every night

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely summarises the main changes: label tooling and automatic issue triage.
Description check ✅ Passed The description directly covers the canonical label set, additive-only classifier behaviour, workflows, and actions lock requirements.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (5 skipped: 5 unsupported.)


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@gitar-bot

gitar-bot Bot commented Aug 27, 2026

Copy link
Copy Markdown

Gitar is working

Gitar

@codacy-production

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

AI Reviewer: first review requested successfully. AI can make mistakes. Always validate suggestions.

Run reviewer

TIP This summary will be updated as you push new changes.

Ships the canonical label set and the classifier that labels newly-filed
issues. Additive only: it never removes a label, never overrides a human's
classification, stays silent when unsure, and never fails an issue.

Also adds this repo's two new workflows to .github/workflows/actions.lock as
'[]'. That lock is keyed by workflow path and refuses any workflow it does not
list -- a startup_failure, which produces no check run and is therefore silent.
`gh actions-lock` cannot add these: it records action versions, and both
workflows deliberately use no actions.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@hyperpolymath
hyperpolymath force-pushed the automated/label-tooling branch from df98517 to 95d85e6 Compare August 27, 2026 17:27
@sonarqubecloud

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant