Skip to Content
🚀 Fund the work, merge the proof, release the reward. Learn more →
7. Manage a bounty

7. Manage a bounty

What you’ll do: Drive a bounty through its middle stages — assignment, optional split, or rejection — before the PR merges.


Assign a contributor

Assign someone on GitHub the normal way (the issue’s Assignees field). TOSS reacts to the assignment:

  • The bot links the contributor a page to connect a Stellar wallet.
  • Until they connect, the bounty parks — no error, it just waits.
  • When they connect, a worker pushes the milestone on-chain and the reward locks.

If you assign someone while the bounty has no amount, the bot says so and the flow waits. Set an amount (tier label or @trustless-oss <amount>) and it resumes automatically.


Split the payout (optional)

By default a merge pays the contributor the full reward. If you want to keep part of it — partial work, a shared effort — save a split before merging.

Comment on the bounty issue or the linked PR
@trustless-oss pay 70
↳ On merge, the contributor receives 70% and the remaining 30% returns to your wallet. Percentage must be 1–99.

The bot confirms with the exact amounts:

RecipientExample on a 100 USDC bounty, pay 70
Contributor70 USDC
Maintainer (you)30 USDC

A split is an intent saved against the bounty, applied at release time. Re-comment @trustless-oss pay <n> anytime before merging to change it. The contributor must have a connected wallet before a split can be saved.


Reject the work

If the work isn’t acceptable, reject it. This disputes the on-chain milestone and refunds the reserved USDC to your wallet.

Comment on the bounty issue or the linked PR
@trustless-oss reject
↳ Disputes the milestone, refunds escrow to your wallet, and cancels the bounty. The issue is marked cancelled.

You can also apply the rejected label to the issue for the same effect.

Rejecting is irreversible and moves funds. It cancels the bounty, refunds the reserved reward to your wallet via an on-chain dispute resolution, and notifies the contributor. The milestone cannot be un-rejected — you’d create a new bounty to try again.


Force a re-check (rarely needed)

The automation parks and resumes on its own, and retries transient failures with backoff. If you ever want to nudge it:

Comment on the bounty issue
@trustless-oss retry
↳ Re-runs the state machine now against the live rules. It cannot force a payout the automation would otherwise refuse.

State reference

StatusMeaning
openPriced, not yet assigned. Amount still editable.
assignedContributor assigned. Locks once their wallet connects.
paidReleased to the contributor. Terminal.
cancelledRejected or closed. Funds refunded. Terminal.

Next: Pay out (merge the PR) · Stuck? Troubleshooting

Last updated on