The original discussion: Q144
workOnTask() is not implemented in https://we.phorge.it/source/arcanist/browse/master/src/work/ArcanistWorkEngine.php$208.
Because of that, it's impossible to automatically link diffs to tasks in arcanist:
```
$ arc work T7
...
[2024-07-24 05:09:31] EXCEPTION: (Exception) TODO: Implement this workflow. at [<arcanist>/src/work/ArcanistWorkEngine.php:208]
arcanist(head=master, ref.master=6250296648fa), libletterty(head=main, ref.main=492f9f3a9684)
#0 ArcanistWorkEngine::workOnTask(string) called at [<arcanist>/src/work/ArcanistWorkEngine.php:66]
#1 ArcanistWorkEngine::execute() called at [<arcanist>/src/workflow/ArcanistWorkWorkflow.php:90]
#2 ArcanistWorkWorkflow::runWorkflow(PhutilArgumentParser) called at [<arcanist>/src/workflow/ArcanistWorkflow.php:227]
#3 ArcanistWorkflow::executeWorkflow(PhutilArgumentParser) called at [<arcanist>/src/toolset/ArcanistPhutilWorkflow.php:21]
#4 ArcanistPhutilWorkflow::execute(PhutilArgumentParser) called at [<arcanist>/src/parser/argument/PhutilArgumentParser.php:492]
#5 PhutilArgumentParser::parseWorkflowsFull(array) called at [<arcanist>/src/runtime/ArcanistRuntime.php:171]
#6 ArcanistRuntime::executeCore(array) called at [<arcanist>/src/runtime/ArcanistRuntime.php:37]
#7 ArcanistRuntime::execute(array) called at [<arcanist>/support/init/init-arcanist.php:6]
#8 require_once(string) called at [<arcanist>/bin/arc:10]
```
Arcanist automatically links a branch that contains a task id in the name with the respective task when running `arc diff`. So, it only remains to implement the auto-generation of a branch name from the task id. For example, `arc work T15121` would take T15121's name ("Contributor Agreement"), convert it to a valid branch name ("T15121-contributor-agreement"), and then follow the same steps that `arc work T15121-contributor-agreement` would have done.
We have patched it on our side and have been using it successfully. We'll submit a diff with the fix in case the owners of the main Phorge repository would want to merge it.
== Feature Description ==
| Starting point | Command | What Should Happen |
|-----------------------------|-------------------|--------------------|
| `master` | `arc work T15993` | Creating new branch `T15993-support-for-arc-work-t12345-something-something`, based on master, and checkout there |
| (the branch of `T15993` from the previous line) | `arc work T15993` | Still on that branch |
| (the branch of `T15993` from the previous line) | `arc work T15187` | Creating new branch `T15187-fix-arcanist-something-something`, based on `T15993`, and checkout there |
| `master` | `arc work --start stable T15100` | Creating new branch `T15100-feature-request-option-to-measure-WIP`, based on `stable`, and checkout there |