Replies: 2 comments 3 replies
|
Steve gave his view in the associated issue - #344 (comment) - namely: don't change status types, labels can be leveraged to do this, or use a table extension. For myself, I've twisted many times on how to use status vs labels vs tags when trying to figure out how GH issues, trello, jira, and many nameless others could be used for my work. Tracking systems seem to be inherently tilted towards ever increasing complexity. Frightfully easy to start joyous -- this works! -- only to become rube goldberg monstrosities demanding constant feeding and maintenance as each extra is applied. So yeah, customization is needed, the initiating itches are real, but apply remedies carefully and be ready to rip them off and try something else. Don't commit early to a particular architecture. |
|
First, my apologies for not responding sooner. I was out of town visiting family for Thanksgiving and am just now catching up on GitHub. @maphew, regarding your note that your comment felt a bit “hand-wavy,” that was totally fine and actually welcomed. Informal brainstorming and cautionary thoughts help frame open questions and guide future work. So please don’t hesitate. I’m always open to feedback, thoughts, or opinions, as I feel it improves the overall quality of communication. |
Uh oh!
There was an error while loading. Please reload this page.
I was reviewing issue #341 posted by @ejconlon and I think his recommendation for adding a status for "review" is a good idea and it got me thinking about the potential for adding custom status states that could be added by the user.
I'm curious about the implications of making issue status options expandable by users adding custom status states by enabling them to add additional allowed statuses via
bd config.That way users using or building multi-step pipelines to process issues (where each step of their issue processing pipeline correlates to a specified issue status) can define an optional issue status enum as a comma separated string saved in the db config table. (i.e. Table:
configby addingissue.status.enum=awaiting_review, review_in_progress, awaiting_merge, merge_in_progress) This could default to additional statuses to the existing ones ie. open, in_progress, closed, etc. OR another config such asuse.default.issue.statuses=truefor if to include the default statuses. (I anticipate that that may be problematic, I'm just tossing up the idea.)This would enable various teams/collaborators or their agents (which may be configured for performing certain operations on specific issue states) to claim issues based on issue status signaling the issue is in a state that is ready for their domain or step of the user's issue processing pipeline.
Some custom
awaiting_<next_step>status examples :awaiting_verificationawaiting_docsawaiting_testingawaiting_human_reviewawaiting_agent_reviewawaiting_mergeSome custom
<process_step>_in_progressstatus examples :verification_in_progressdocs_in_progresstesting_in_progresshuman_review_in_progressagent_review_in_progressmerge_in_progressNeed for 'custom status states'
As one might imagine there could be any number and variation of potential status+state scenarios that users may need for their unique workflows.
Benefit of 'custom status states'
Adding custom status state would enable more flexibility in how users may use beads along with clearer implementation intent when designing systems that integrate beads for issue tracking (such as multi-step issue processing pipelines or agent orchestrators).
Being able to define custom status states for issues would allow for beads to also track each issues status and issue state with expandable to any arbitrary number of status/states. Instead of needing to add additional logic for handling a new 'state' field this would allow storing the state with the status using just the status field (thus minimizing additional re-work).
How I would actually use this
I'm currently building a multi-step issue processing pipeline that uses beads for issue tracking and a custom orchestration flow to process various aspects of issues. I've been considering how I'm going to handle orchestrating issue state transition (i.e. each processing step a issue needs to transition between) and I would prefer to not have to handle it with separate logic outside of beads nor use beads labels (using labels seems like a hacky work around for what should be defined by the issue status.)
Alternative method to achieve similar results
Using a combination of the current statuses and labels or assignees could potentially achieve the same results.
For example if status is
openandassignee= 'docs_agent' andlabel= 'awaiting_docs'. However this would be inflexible and convoluted especially in scenarios when multiple agents of the samedocs_agenttype wouldn't have a way to set individual agent instances of the same type as the assignee with unique names e.g. 'docs_agent_1', 'docs_agent_2', etc.However in my opinion:
labelsshould only be for issue classification and categorization filteringassigneeshould be for delegating the specific individual actor instance on a specific issue that is responsible for the issue at any given time.statusshould be for describing the current issue stateCompare to scenario with 'custom status states'
Propose (for an external processing pipeline) that status is
awaiting_docswhich allows any agents/collaborators authorized to process issues with statusawaiting_docsmay claim the issue or an agent-orchestrator sets an individual assignee (i.e. agent instance or person name) of a agent/collaborator authorized to process issues with statusawaiting_docs. This would allow multiple agents/collaborators authorized according to issue status to claim an issue or they can be individually assigned to and process an issue that has the appropriate status.I would like to hear others thoughts on this regarding viability, project consistency, usefulness, etc. or if there are better ways to achieve configurable issue states.
Please comment on this issue with any thoughts, opinions, and/or critiques.
If enough people like this and a maintainer endorses this plan I'll implement it and create a PR for it.
I'm looking forward to any replies.
Thanks for reading :)
All reactions