GitHub workflow
organisations and developers interact in a Public Solver Quests workflow.1️⃣ Org starts a quest
A whitelisted (admin) member of an organisation can initiate a quest by "stashing" a USD reward of reward_value in a GitHub Issue.
To accomplish this, use the Start a Quest button on the admin dashboard and follow on-screen instructions.
Alternatively, for starting public Quests only, call the stash command in the target Issue, specifying the desired reward_value.
Note there is no currency symbol used in the above command. For now, all integer values are taken as USD by default.
If this is successful you will see a message like:
Click here for common errors with stash.
restash command (see 'Changing Quest reward values' below).2️⃣ Dev attempts a Quest
After a Quest has started, a developer can express interest in solving it by "embarking" on the Quest. Embarking on a Quest does not provide the developer with exclusivity, but it lets the organisation and other solvers know that they intend to solve it.
To embark on a quest, a developer can use the Quine website, following an explicit invitation link received per Quest.
Alternatively, for embarking on public Quests only, a developer can call the embark command in the target Issue on GitHub.
If this is successful you will see a message like:
Now the developer needs to go and submit a Pull Request against the target Issue.
Click here for common errors with embark.
3️⃣ Dev submits a PR
When a developer has created a Pull Request to solve an Issue associated with a Quest, they can link their PR to the relevant Issue (and its stashed reward) via the Quine website, using a GitHub URL to their PR.
Alternatively, for public Quests only, a developer can use the loot command on GitHub.
The loot command can be invoked at any point in the Pull Request lifecycle, but we recommend calling it immediately upon submitting a PR.
The loot command can either be called in the PR body comment when raising the PR (in its first of last line), or in a comment on the PR to follow. The loot command should declare the Issue number that the Pull Request is addressing, referring to the appropriate Issue using it's number in GitHub prepended by a hash symbol, in the form: #{issue_number}. If multiple Quest Issues are being looted under a single PR, they should be separated by a space in the respective comment, and must not include commas or other symbols.
For example, if the developer is looting one Issue (Quest) the formula is:
If the developer is looting three Issues, the syntax becomes:
Note, it is also possible for a developer to loot a Quest in a different repository than the repo where the relevant PR resides. This can occur if, for example, an Issue is raised in one repo, but the solution relates to code in another repo. To do this, the loot command must include a path reference, with the appropriate issue prepended by its repo name. For example:
The above format can also be chained as per other loot commands.
For a successful loot, a message like this will appear on the Pull Request:
And a corresponding message with appear on the related Issue(s) itself, notifying all other members that the Quest is being looted.
Click here for common errors with loot.
4️⃣ Org issues reward
When a pull request has been merged, the organisation must explicitly accept loot claims associated with the Issue.
To confirm a reward for the Quest and close the Quest, a whitelisted org admin must either click the corresponding Award solver button that appears in their admin dashboard after a PR is merged
Alternatively, for public Quests only, call the "reward" command in the Issue hosting the Quest (i.e. where the reward has been stashed).
To do this, use the reward command on the Issue where the Quest is being hosted and reference the @username that is to be rewarded.
For example, if the organisation is rewarding the resolution of one Quest, the command is:
A message like this will appear:
Click here for common errors with reward.
5️⃣ Tipping users
As well as rewarding a developer for a successful solve, an organisation may wish to show its appreciation to others for their contributions to a Quest (for example, for providing partial solutions or other guidance).
In order to support this, we provide a tip functionality.
Tips are freeform (mini) rewards that can be issued to any user at any time during a Quest. All tips are assumed to be a USD amount of tip_value directed to a specific GitHub user using a command in the format:
Note there is no currency symbol used in the above command. For now, all integer values are taken as USD by default.
? Changing Quest reward values
In some scenarios, an organisation may wish to change the value of a reward after a Quest has already started (i.e. after the Quest has originally been 'stashed').
This can be achieved using the restash command in the target Issue, specifying a new reward_value to provide an updated value for the Quest:
Note there is no currency symbol used in the above command. For now, all integer values are taken as USD by default.
If this is successful you will see a message like:
⛔️ Aborting a Quest
In some situations, an organisation might want to abort a Quest. However, this action is not recommended because if a Quest has already started, the work of some developers may go unrewarded.
To abort a Quest, you must call the abort command on the Issue where the Quest was initialised. The Issue number #{issue_number} must be included for added security:
A confirmation message like this will appear in the Issue. Developers who have called embark on the Quest will be notified:
Click here for common errors with abort.
Last updated