Skip to content

feats: Recurrence constraining by tags, constrain tasks by ANDing tags rather than ORing them

Fox Piacenti requested to merge fox/STAR-2959-better-tag-task-handling into master

This MR makes two changes:

  1. It makes it to where a task will not be created for a user in a checklist unless they have ALL of the tags the checklist definition has, rather than ANY of them.
  2. It allows creation of recurrences that are constrained to team members which have ALL of the tags on a new 'tags' field on Recurrences.

These changes will handle the following cases:

  1. A sprint manager on Deathstar does not have all of the same responsibilities as a sprint manager in a development cell. The 'Sprint manager' tag creates extra tasks for Deathstar's sprint manager. There is no way to prevent this at present, but if we require all tags to be present for a task to be created, we could add another constraining tag, say 'development cell member', which is applied to all team members of a cell focused on development. In that case, only sprint managers who had both the 'sprint manager' and 'development cell member' tags will get these specific tasks.
  2. Sprintcraft currently cannot handle sprints for Deathstar and the meta cell. Fixing this will require significant changes to Sprintcraft which would need to be budgeted. However, we still need the checklists to be created for all team members. Right now, the checklists are being created properly for Serenity, Bebop, and Falcon, because Sprintcraft is managing those and creating runs via the webhook created in This merge request. However, Deathstar's most recent checklist hasn't been created. We need a way to create a recurrence that can be built independently of SprintCraft, but which doesn't create redundant checklists for Bebop, Serenity, and Falcon.

Supporting information

  • Jira ticket: url

Testing instructions

  1. Create a checklist definition with tasks which are tagged, and ones which are untagged
  2. Create users on a team, at least one with all relevant tags for a task, and others with only some or none of them
  3. Create a recurrence with no tags, and run it on a short interval to test
  4. Verify that the checklists are created and that tasks are created always if the tasks have no tags, and if they have tags, are only created if a team member has all of the tags.
  5. Add a couple of tags on the recurrence and let it start again
  6. Verify that the new run's checklists are only created for users who have all tags on the recurrence
Edited by Fox Piacenti

Merge request reports