AutoFlow PoC: configurable automation for issue status updates
## Iteration 1 ~backend / infrastructure Add a global hardcoded configuration that automates the following tasks: - **trigger:** issue milestone is set to anything but `Backlog` -> **action**: set issue label `ready for development` - **trigger:** issue receives a related MR -> **action**: set issue label `in progress` - **trigger:** issue's related merge request gets a reviewer -> **action**: set issue label `in review` - **trigger:** issue's related merge request is merged -> **action**: set issue label `verification`, add an assignee `QA` Reuse https://gitlab.com/gitlab-org/gitlab/-/merge_requests/136696 and https://gitlab.com/gitlab-org/cluster-integration/gitlab-agent/-/merge_requests/1173 as a foundation ## Iteration 2 ~frontend Add a `Workflow automation` page in global or project settings. At this point, the page should contain a content editor input field where the user can edit an autoflow script (`flow.py`) and save it. ~backend Create an API that can: - send the contents of `flow.py` to the frontend; - receive the requests with updated contents and store it back to the `flow.py` Potentially we could reuse the Editor API to commit the changes to the repository. This would reduce or even fully eliminate the backend workload ### Iteration 3 ~frontend Create a visual builder with a list of triggers and actions | Triggers | Actions | | ------ | ------ | | ![image](/uploads/fbd36ca31392b1f5edee66bdddfed7b8/image.png) | ![image](/uploads/9f6000db5a04ab8edaabffb424cb870c/image.png) | ~backend / ~frontend Implement a "translation" from the visual blocks to autoflow script. Here we can either let frontend send the JSON file generated from visual builder and let backend "translate" it to script, or perform a translation directly on the frontend for now and send the script as a (encoded?) string.
epic