feat: improve issue submission and triage workflow#1279
feat: improve issue submission and triage workflow#1279
Conversation
Signed-off-by: Rob Walworth <robert.walworth@swirldslabs.com>
Signed-off-by: Rob Walworth <robert.walworth@swirldslabs.com>
Signed-off-by: Rob Walworth <robert.walworth@swirldslabs.com>
|
Hey @rwalworth 👋 thanks for the PR! This comment updates automatically as you push changes -- think of it as your PR's live scoreboard! PR Checks✅ DCO Sign-off -- All commits have valid sign-offs. Nice work! ✅ GPG Signature -- All commits have verified GPG signatures. Locked and loaded! ✅ Merge Conflicts -- No merge conflicts detected. Smooth sailing! ✅ Issue Link -- Linked to #1278 (assigned to you). 🎉 All checks passed! Your PR is ready for review. Great job! |
|
I really like this so many things about this idea, and can see it improves many things. I will need more time to consider this for a review, because there are some situations that have me thinking and understand what sort of costs can be involved. I assume these are not very important right now though |
There was a problem hiding this comment.
I really like this so many things about this idea, and can see it improves many things. I will need more time to consider this for a review, because there are some situations that have me thinking and understand what sort of costs can be involved. I assume these are not very important right now though
Thanks for the detailed review @exploreriii - really helpful!
On the "costs" question, I think we're in good shape on all fronts:
- API rate limits: Each
/finalizeinvocation makes ~4–5 GitHub REST API calls.GITHUB_TOKENin Actions allows 1,000 requests/hr per repository, which means we'd need 200+ finalizations in a single hour before coming close to the limit. That's not a realistic concern for typical triage activity. - Bot maintenance: This shouldn't be a significant ongoing burden. A lot of the complexity is now extracted into shared helpers (
api.js,logger.js), and the snapshot tests mean we'll catch regressions early without needing to manually revisit the logic. Once the implementation stabilizes, there's not much reason to touch it. - Workflow complexity: For the most part, this is how we already handle issue submissions but now it's streamlined and more correct. The old approach of having contributors self-select a skill level was backwards; they don't know what skill level the issue is, and those labels carry real meaning for the backlog. This gives the project team proper control over how issues are categorized, prioritized, and surfaced to contributors - which directly affects the roadmap and contributor experience.
Happy to dig into any specifics if something is still giving you pause!
Signed-off-by: Rob Walworth <robert.walworth@swirldslabs.com>
gsstoykov
left a comment
There was a problem hiding this comment.
Overall looks good.
Btw is the plan to enforce people to use these commands and etc. We should keep in mind that a random person hopping in the SDK would just want to see an issue and contribute not having to know all this stuff.
Signed-off-by: Rob Walworth <robert.walworth@swirldslabs.com>
The From a contributor's perspective, the experience will be exactly the same as before:
There won't be much of a visible change for contributors outside of using the new templates to submit issues - which now no longer allow the issue submitter to decide on the skill level of the issue. |
Summary
This PR overhauls the issue submission and triage workflow for the Hiero C++ SDK. It replaces the five skill-level-specific issue submission templates with three problem-type templates (Bug, Feature, Task), adds a
/finalizebot command that transitions triaged issues to ready-for-dev state, and adds maintainer and contributor documentation to support the new process.Key Changes:
/finalizebot command that validates labels, updates issue title/body, and swaps status labelsapi.js,logger.js) and refactorassign.js/unassign.jsto use themMotivation
Previously, issue submitters chose a skill-level template themselves. Contributors cannot reliably assess implementation complexity, so difficulty labels were inconsistently applied and the triage step was unclear. The new process separates concerns:
/finalize/assignThis makes the contribution experience more predictable for everyone.
Changes
Issue Templates
Removed the five skill-level submission templates that asked contributors to self-assess complexity, which led to mislabeled issues:
01_good_first_issue_candidate.yml02_good_first_issue.yml03_beginner_issue.yml04_intermediate_issue.yml05_advanced_issue.ymlAdded three problem-type templates that focus on describing the issue clearly:
bug.ymlfeature.ymltask.ymlAll three templates now:
status: awaiting triage(instead of a skill-level label)/finalizeBot CommandNew
finalize.jscommand triggered by commenting/finalizeon an issue. The command:status: awaiting triagemust be presentskill:labelpriority:labelkind:label; Feature: 0kind:labels[Beginner]: Fix thing)status: awaiting triage→status: ready for devAll failure paths post informative comments and tag maintainers when manual intervention is needed.
Files Added:
.github/scripts/commands/finalize.js.github/scripts/commands/finalize-comments.jsShared Helpers Extraction
Extracted reusable logic from
assign.jsandunassign.jsinto new shared helper modules:helpers/api.js—swapLabels,postComment,acknowledgeComment,hasLabel,getLabelsByPrefixhelpers/logger.js—createDelegatingLoggerfor consistent log delegation across commandshelpers/constants.js— AddedREADY_FOR_DEVlabel constantRefactored
assign.jsandunassign.jsto import fromhelpersinstead of duplicating logic.Bot Dispatcher Update
Updated
bot-on-comment.jsto route/finalizeto the new handler alongside existing/assignand/unassigncommands.Documentation
docs/contributing/issue-types.mddocs/maintainers/guidelines-triage.md/finalizeusage, edge casesCONTRIBUTING.md/finalizeworkflowTesting
Comprehensive snapshot-based test suite added in
test-finalize-bot.js(778 lines).Test coverage includes:
Updated
test-assign-bot.jsto import helpers from the refactored location.Test Plan:
/finalizecorrectlyFiles Changed Summary
Added (7 files)
.github/scripts/commands/finalize.js.github/scripts/commands/finalize-comments.js.github/scripts/helpers/api.js.github/scripts/helpers/logger.js.github/ISSUE_TEMPLATE/task.ymldocs/contributing/issue-types.mddocs/maintainers/guidelines-triage.mdModified (8 files)
.github/ISSUE_TEMPLATE/bug.yml.github/ISSUE_TEMPLATE/feature.yml.github/scripts/bot-on-comment.js.github/scripts/commands/assign.js.github/scripts/commands/unassign.js.github/scripts/helpers/constants.js.github/scripts/tests/test-assign-bot.jsCONTRIBUTING.mdRemoved (5 files)
.github/ISSUE_TEMPLATE/01_good_first_issue_candidate.yml.github/ISSUE_TEMPLATE/02_good_first_issue.yml.github/ISSUE_TEMPLATE/03_beginner_issue.yml.github/ISSUE_TEMPLATE/04_intermediate_issue.yml.github/ISSUE_TEMPLATE/05_advanced_issue.ymlBreaking Changes
None for SDK consumers. This PR touches only GitHub workflow tooling (issue templates, bot scripts, and documentation). There are no changes to the C++ SDK source, public API, or build system.
Existing issues already labeled
status: ready for devare unaffected. New issues will now use the three-template system and require maintainer triage before becoming available for contributors.