Feature/agile 326 multiple active sprints without sharing#24191
Feature/agile 326 multiple active sprints without sharing#24191dombesz wants to merge 12 commits into
Conversation
|
Warning Flaky specs
🤖 Ask Copilot to investigateCopy the prompt below into a new comment on this PR to delegate the investigation to GitHub Copilot. It will look into the flakiness and open a separate pull request with you as reviewer. |
|
Warning Flaky specs
🤖 Ask Copilot to investigateCopy the prompt below into a new comment on this PR to delegate the investigation to GitHub Copilot. It will look into the flakiness and open a separate pull request with you as reviewer. |
3770dc0 to
5ded453
Compare
5c4b8f4 to
447a1bb
Compare
|
Warning Flaky specs
🤖 Ask Copilot to investigateCopy the prompt below into a new comment on this PR to delegate the investigation to GitHub Copilot. It will look into the flakiness and open a separate pull request with you as reviewer. |
d31ec11 to
b262276
Compare
b262276 to
8361ba1
Compare
sprint_sharing_changed? checks whether the key "sprint_sharing" appears
anywhere in the settings_change diff array. A project with MAS enabled
and settings={} (sprint_sharing never explicitly saved, reads as
'no_sharing') has nil in the raw store. An API call that explicitly
sends sprint_sharing='no_sharing' writes
{"sprint_sharing"=>"no_sharing"} into the store, making the key appear
in the diff — sprint_sharing_changed? returns true. The second guard
model.allow_multiple_active_sprints? is also true, so the validator adds
:locked_by_multiple_active_sprints and rejects the update — even though
the effective sprint_sharing value did not change. A project managed via
API that ever explicitly names no_sharing while MAS is on is permanently
locked out of non-MAS updates through the normal UpdateService path.
… during perform in order to avoid concurrent service call race conditions.
|
Warning Flaky specs
🤖 Ask Copilot to investigateCopy the prompt below into a new comment on this PR to delegate the investigation to GitHub Copilot. It will look into the flakiness and open a separate pull request with you as reviewer. |
Ticket
https://community.openproject.org/wp/AGILE-326
What are you trying to accomplish?
Allow multiple sprints inside a project when the project settings permit this.
What approach did you choose and why?
The first commit introduces multiple sprints unconditionally for all the project sharing settings. The second commit adds the project setting called "Allow multiple active sprints" which restricts multiple sprints to projects where this setting is enabled.
The third commit moves the multiple sprints setting to a separate tab in the project settings and adds interaction between sharing and multiple sprints (e.g., deactivate one when the other is enabled).
Todo:
Merge checklist