drag the donut to spin it
COMMITPAY — BOUNTIES FOR MERGED FIXES
Merge the fix. Get paid. Funders post bounties on GitHub issues. A merged fix with tests triggers payment, and the pull request is read from GitHub for real. Payouts are in test mode.
No proof, no payout: payment follows the merged commit hash.
01 / how it pays
A funder posts a bounty on an issue
A bounty is a repository, an issue number and a size in points. The funder slot is empty in this build: no funder is connected.
A maintainer opens a pull request
The fix references the issue and changes at least one test file. No test, no payout.
The pull request is merged
Merged means merged: GitHub reports merged true, who merged it, and the merge commit hash.
Payment follows the commit hash
Each pull request counts once. 20 pts per verified merged fix, and a milestone every 40 pts.
02 / the bounty board
Add a bounty on a public issue, paste a pull request, and watch three checks resolve against api.github.com. No key, no account. A claim that fails prints the exact reason.
live reads from github.com
Bounty board
milestone [....................] 0/40
The issue is read from api.github.com. Nothing is posted anywhere.
+--------------------------------------------+ | no bounties yet. add one above, or use | | the public example. | +--------------------------------------------+
Next milestone in 40 pts. 2 more verified fixes opens it.
· stored only in this browser: your bounties, progress and test-mode balance
03 / why it holds up
No proof, no payout: payment follows the merged commit hash.
How a fix is verified
GET /repos/{owner}/{repo}/pulls/{n}
merged == true [..........] awaiting a claim
merge_commit_sha, merged_by, merged_at
GET /repos/{owner}/{repo}/pulls/{n}/files
a path matching test, tests,
spec or __tests__ [..........] awaiting a claim
title, body or commit message
mentions #N or the issue URLEach failure prints its exact reason: not merged, no reference, no test file, wrong repository. If GitHub rate-limits the request, the page says so and decides nothing.
Why a clone gets it wrong
Counting the verified action honestly is the hard part, and it is the part a clone gets wrong. A star is easy to buy. A promise is easy to make. A merge commit with a test file in it is neither: it is a hash that anyone can look up.
What it refuses
Paying for starsneverPaying for unmerged workneverForced licencesnever
04 / where the rewards come from
rewards pool
Funded by the cut
The platform takes a small cut of each bounty. That cut would fund the rewards pool. Nothing is funded in this build, and no amounts are stated.
pool [................] not live yet
sponsor slots
One slot
no sponsor, no logo
payout options
Shares or stablecoins
At a milestone you could take a fractional share of a listed stock, or a stablecoin.
Named in type only. No brokerage or payout rail is connected: not live yet.
05 / what we measure
No usage statistics appear here, because there are none to report.
06 / faq
Only your progress and test-mode balance, in this browser (localStorage). Your bounties, claims and counted pull requests live there too. Cached GitHub responses live there as well. Nothing is sent to a COMMITPAY server.
No. Payouts are in test mode. Every payout screen says Test mode · nothing was sent and shows what would have been sent. No wallet is connected, no stablecoin or share is moved, and no transaction hash exists.
Yes. The issue, the pull request, its commits and its changed files are read from api.github.com with no key. Results are cached in your browser to save the 60 requests per hour GitHub allows per IP.
Not to use the board. At a milestone you can type an Ethereum address; it is checked by format (and by EIP-55 checksum when it is mixed case) and connected to nothing.
Funders pay the bounties; the platform takes a small cut. No numbers are stated because none are set.
No. Nothing here is financial advice, an offer, or a promise of payment.