Skip to content

Refactor Good First Issue label handling across .github workflows and scriptsΒ #2178

Description

@cheese-cakee

πŸ§‘β€πŸ’» Intermediate Issue

Welcome! This is an Intermediate Issue touching core repo automation reliability.

🏁 When this issue is complete, you will have:

βœ… Removed inconsistent hardcoded Good First Issue label checks across automation
βœ… Centralized label handling so future renames are low-risk
βœ… Added verification for workflow/script behavior in real issue/PR scenarios
βœ… Delivered a clean, review-ready PR with evidence

🐞 Problem Description

Good First Issue label handling is currently inconsistent across .github automation:

  • Some logic uses exact "Good First Issue"
  • Some logic uses lowercase "good first issue"
  • Some logic already includes fallback forms in search queries (e.g. "skill: good first issue")

Because label checks are split and inconsistent, automation can silently drift or misfire (assignment gating, recommendation bots, spam-list updates, etc.) when labels or matching logic evolve.

This issue matters because these bots directly affect contributor onboarding and maintainer triage workload. Inconsistent label logic creates avoidable operational noise and review burden.

πŸ’‘ Expected Solution

Refactor Good First Issue label usage to a consistent, centralized pattern across relevant .github scripts/workflows, so behavior is reliable today and easy to update in one place later.

The expected outcome is: no behavior regressions, cleaner label matching, and future-proofing for possible label naming updates.

πŸ” Background Research

Investigate these files first (primary scope):

  • .github/scripts/bot-gfi-assign-on-comment.js
  • .github/scripts/bot-assignment-check.sh
  • .github/scripts/bot-next-issue-recommendation.js
  • .github/scripts/update-spam-list.js
  • .github/workflows/bot-intermediate-assignment.yml (uses GFI env)
  • .github/ISSUE_TEMPLATE/02_good_first_issue.yml (canonical reference for current label)

Related recent refactor pattern to follow:

Reference docs:

  • Contribution workflow: docs/sdk_developers/workflow.md
  • Testing guide: docs/sdk_developers/testing.md

πŸ› οΈ Implementation Notes

  • Treat this as sensitive automation work; avoid broad unrelated refactors.
  • Keep scope focused to Good First Issue label handling only.
  • Centralize label constants in shared script config (or equivalent single source of truth).
  • Ensure comparisons are intentionally case-handled where needed.
  • Preserve current expected behavior for existing label(s); do not break active contributor flows.
  • If adding fallback support (e.g., alternate label forms), document it clearly.
  • Exclude archived workflows/scripts unless directly required for active behavior.

πŸ”¬ Technical Domains

  • Intermediate to Advanced Programming (automation logic across scripts/workflows)
  • File Specific Knowledge (.github/scripts + workflow gates)
  • Backward Compatibility (do not break existing issue/assignment flows)
  • Protobuf Alignment
  • Testing (workflow behavior + script-level verification)

🧠 Intermediate Contributors β€” Prerequisites & Expectations

Caution

Intermediate issues are high-risk. We expect more than just a 'working solution' and will recommend beginner issues if the PR does not meet these standards.

🏁 Concrete Prerequisites

  • Advanced Programming Language: Higher level intermediate or advanced programming language.
  • Expertise: Strong understanding of files related to this issue (research before claiming!).
  • Proven History: Successfully completed β‰₯ 5 beginner issues in this repo.

Note

CI/CD Exception: For issues focused on GitHub Actions / Workflows, the repo-specific thresholds above may be waived if the contributor demonstrates intermediate-level proficiency in CI/CD.

If this feels like too big a step, that is completely fine β€” try a beginner issue first or a different intermediate issue first. You can always come back when you are ready.

⚠️ AI Usage Policy

  • Using AI to generate code for Intermediate issues is strictly discouraged.
  • Using AI as the main source of research is strictly discouraged; refer to language and library documentation, protobuf definitions, and other SDKs.

⏱️ Timeline & Workflow

  • Typical time: ~2 weeks / ~25 hours.
  • Completing an intermediate issue in 1–3 days is a red flag.

Tip

Suggested: share your proposed implementation approach as a comment before writing code to get early feedback and avoid wasted effort.

πŸ§ͺ Testing Requirements

For this issue (workflow/script changes), include:

  • Script-level validation for changed paths (targeted tests where present)
  • Fork-based end-to-end verification:
    1. Create/open a test issue with Good First Issue label
    2. Trigger relevant bot path(s) (/assign, assignment guard, recommendation flow)
    3. Capture expected comments/assignment behavior
  • Link evidence in PR:
    • test issue URLs
    • workflow run URLs
    • brief before/after behavior notes

All CI checks must pass before requesting review.

πŸ›‘οΈ Quality & Review Standards

Intermediate PRs must be working, maintainable, and aligned with SDK architecture.

  1. Working: The implementation must solve the problem and meet the acceptance criteria.
  2. Maintainable: Code should be clear and concise enough for others to understand and debug without your assistance.
  3. SDK Alignment: The solution should fit well with existing SDK patterns and abstractions.
  4. Backward Compatibility: Public API signatures must be preserved.
  5. Comprehensive Testing: Must include unit and integration tests covering all new logic paths, edge cases, and failure modes.

⚠️ Breaking changes

  • Before changing any function signature, return type, or public API β€” stop and check.
  • If a breaking change is unavoidable: get explicit maintainer approval before implementing.
  • All existing tests should pass as-is.

βœ… PR Quality Checklist

Before opening your PR, confirm:

  • I have spent the majority of my time researching the problem and solution space extensively, including reviewing relevant code, documentation, and external resources.
  • My implementation works but is also of high quality, including maintainability, readability, and architectural fit.
  • I have checked for breaking changes; no public APIs regress.
  • The system design fits with current Hiero SDK architectural approaches.
  • Every line of code is personally understood and explainable.

Before requesting a review, confirm:

  • I have reviewed the diff line by line.
  • My implementation fully addresses the problem described above.
  • I did not modify files unrelated to this issue.
  • Clean git history β€” no rebase artifacts, merge commits, or unrelated files.
  • My commits are signed: git commit -S -s -m "chore: description".
  • I have applied appropriate linting, code quality, and formatting tools used in this repo.
  • I have included appropriate tests and all CI checks pass.

πŸ“‹ Workflow quick reference

You know the workflow β€” here are the links if you need them:

Step Guide
Claim this issue Comment /assign below
Sync with main https://github.com/hiero-ledger/hiero-sdk-python/blob/main/docs/sdk_developers/rebasing.md
Open a PR and link this issue https://github.com/hiero-ledger/hiero-sdk-python/blob/main/docs/sdk_developers/training/workflow/11_submit_pull_request.md
Resolve merge conflicts https://github.com/hiero-ledger/hiero-sdk-python/blob/main/docs/sdk_developers/merge_conflicts.md
Testing https://github.com/hiero-ledger/hiero-sdk-python/blob/main/docs/sdk_developers/testing.md

πŸ“š Resources & Support

πŸ†˜ Stuck?

Comment on this issue and describe what you have tried. A maintainer will respond.

Metadata

Metadata

Labels

lang: javascriptUses Javascript programming languagenotes: extra carerequires extra attention to detail or requirementsscope: CI/CDinvolves continuous integration or deliveryskill: intermediaterequires some knowledge of the codebase with some defined steps to implement or examples

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions