Evidence
Built for verification
Every claim here points to a transaction, a file or a command. Where something is not proven, the label says so.
Contract on NEAR testnet
kintsugi-l2-cihdp.testnetOne approved checker id, 33 bounties, and no mainnet contract. Read it on the explorer, not on this page.
Ledger
The settlement ledger
Every paid bounty on the contract, with the transactions that show how it was decided. Paid by proof and paid by timeout are kept apart on purpose.
Second new module, private secret
An AI agent's fix of a private bug it could not see, proven PASS and paid by the contract. Proved and shrunk on a rented GPU, wrapped to Groth16 on a separate Docker machine; the secret never left the vendor's control.
Agent live run
The agent's fix on the public demo module was proven PASS and paid. It shows the path, not a model's skill: the demo bug is named in the module's comments.
First Level 2 check
Attempt 0 passed and was paid. Attempt 1 was a valid proof of FAIL, which spent that attempt.
New module, private secret
The vendor's proof finished after the 4 hour window, so the contract paid by timeout. Not a proof.
NEAR CLI wallet run
Wallet by hand
Private secret, public demo bug
Paid by timeout, not by a proof: its one attempt came from a team-run account (the owner's account, external agent software), and the vendor's watch does not cover bounty 12.
Timeout split test
The bounty was split equally between two revealed attempts.
Audit rerun
One attempt was rejected by a valid FAIL proof. Another was paid by timeout.
Missing payout account
The contract shows this bounty as Paid, but the payout went to an account that does not exist: the transfer failed and the NEAR stayed in the contract (review finding 8, a known limit).
Bounty 17 is paid by timeout, not by a proof. Its evidence proof says PASS, but it finished after the window and was never submitted.
The Proof Ledger
Every account the contract has paid, how each fix was paid, and each vendor’s on-time record, computed live from every bounty and attempt on chain. No scores, no ranks, no credit for unpaid attempts.
Every account below is run by the Skarbnik team or was seeded by its scripts. An account missing from the team’s list (data/accounts.json) would show as “not known”.
Paid fixes
| Bounty | Attempt | Paid to | How | Paid | Checker | Transaction |
|---|---|---|---|---|---|---|
| Bounty 1 | #0 | kintsugi-res1-prnvm.testnetteam-run | Paid by proofPASS means: passed this checker against the secret and the public tests; it does not prove the patch is secure against everything. | 0.1 NEARplus its own fee back | dd6c5f42…a2fc | CczggiUN…4XeY |
| Bounty 4 | #0 | kintsugi-res1-prnvm.testnetteam-run | Paid by timeoutpaid by the timeout rule: a liveness rule, not a verdict; no proof checked this fix. | 0.1 NEARplus its own fee back | dd6c5f42…a2fc | 2Ga3oSGc…6Tiq |
| Bounty 8 | #0 | ghost-kintsugi-audit-zqx.testnetseeded | Paid on paper, transfer failed (audit finding 8)paid by the timeout rule: a liveness rule, not a verdict; no proof checked this fix.The contract shows this bounty as Paid, but the payout went to an account that does not exist: the transfer failed and the NEAR stayed in the contract (review finding 8, a known limit). | 0 NEAR0.1 NEAR on paper; the transfer failed, no NEAR moved | dd6c5f42…a2fc | AKU4pVTm…1BVk |
| Bounty 9 | #0 | kintsugi-res1-prnvm.testnetteam-run | Paid by timeoutpaid by the timeout rule: a liveness rule, not a verdict; no proof checked this fix. | 0.1 NEARplus its own fee back | dd6c5f42…a2fc | 82M2gLJ5…JQD3 |
| Bounty 11 | #0 | kintsugi-res1-prnvm.testnetteam-run | Paid by timeoutpaid by the timeout rule: a liveness rule, not a verdict; no proof checked this fix. | 0.05 NEARplus its own fee back | dd6c5f42…a2fc | 6uem1gWA…aYpP |
| Bounty 11 | #1 | kintsugi-res2-prnvm.testnetteam-run | Paid by timeoutpaid by the timeout rule: a liveness rule, not a verdict; no proof checked this fix. | 0.05 NEARplus its own fee back | dd6c5f42…a2fc | 6uem1gWA…aYpP |
| Bounty 12 | #0 | the owner's personal testnet accountteam-run | Paid by timeoutpaid by the timeout rule: a liveness rule, not a verdict; no proof checked this fix. | 0.5 NEARplus its own fee back | dd6c5f42…a2fc | not recorded |
| Bounty 13 | #0 | kintsugi-web-1e80c1.testnetseeded | Paid by timeoutpaid by the timeout rule: a liveness rule, not a verdict; no proof checked this fix. | 0.1 NEARplus its own fee back | dd6c5f42…a2fc | BcUEswCd…ibcC |
| Bounty 14 | #0 | the owner's personal testnet accountteam-run | Paid by timeoutpaid by the timeout rule: a liveness rule, not a verdict; no proof checked this fix. | 0.033333 NEARplus its own fee back | dd6c5f42…a2fc | 45tmZsU9…92EV |
| Bounty 14 | #1 | skarbnik-partd-461f99.testnetseeded | Paid by timeoutpaid by the timeout rule: a liveness rule, not a verdict; no proof checked this fix. | 0.033333 NEARplus its own fee back | dd6c5f42…a2fc | 45tmZsU9…92EV |
| Bounty 14 | #2 | skarbnik-partd-461f99.testnetseeded | Paid by timeoutpaid by the timeout rule: a liveness rule, not a verdict; no proof checked this fix. | 0.033333 NEARplus its own fee back | dd6c5f42…a2fc | 45tmZsU9…92EV |
| Bounty 15 | #0 | kintsugi-web-1e80c1.testnetseeded | Paid by timeoutpaid by the timeout rule: a liveness rule, not a verdict; no proof checked this fix. | 0.05 NEARplus its own fee back | dd6c5f42…a2fc | Esz2a9FE…Gbmm |
| Bounty 15 | #1 | kintsugi-web-1e80c1.testnetseeded | Paid by timeoutpaid by the timeout rule: a liveness rule, not a verdict; no proof checked this fix. | 0.05 NEARplus its own fee back | dd6c5f42…a2fc | Esz2a9FE…Gbmm |
| Bounty 16 | #0 | kintsugi-agent-d9410f.testnetteam-run | Paid by proofPASS means: passed this checker against the secret and the public tests; it does not prove the patch is secure against everything. | 0.1 NEARplus its own fee back | dd6c5f42…a2fc | 5NH9rhRM…yUq9 |
| Bounty 17 | #0 | kintsugi-agent-d9410f.testnetteam-run | Paid by timeoutpaid by the timeout rule: a liveness rule, not a verdict; no proof checked this fix. | 0.1 NEARplus its own fee back | dd6c5f42…a2fc | BLcWs7dp…e2mh |
| Bounty 24 | #0 | kintsugi-agent-d9410f.testnetteam-run | Paid by proofPASS means: passed this checker against the secret and the public tests; it does not prove the patch is secure against everything. | 0.1 NEARplus its own fee back | dd6c5f42…a2fc | 9nAK8gi2…gweR |
| Bounty 27 | #0 | skarbnik-agentsmd-960210.testnetseeded | Paid by proofPASS means: passed this checker against the secret and the public tests; it does not prove the patch is secure against everything. | 0.1 NEARplus its own fee back | dd6c5f42…a2fc | 73xzLn4v…fipG |
| Bounty 32 | #0 | skarbnik-agentsmd-960210.testnetseeded | Paid by proofPASS means: passed this checker against the secret and the public tests; it does not prove the patch is secure against everything. | 0.1 NEARplus its own fee back | dd6c5f42…a2fc | 9B7FPyju…pM7y |
Paid accounts
| Account | Who runs it | Fixes paid | By proof | By timeout | Total paid |
|---|---|---|---|---|---|
| kintsugi-res1-prnvm.testnet | team-run | 4 | 1 | 3 | 0.35 NEAR |
| kintsugi-res2-prnvm.testnet | team-run | 1 | 0 | 1 | 0.05 NEAR |
| the owner's personal testnet account | team-run | 2 | 0 | 2 | 0.533333 NEAR |
| kintsugi-web-1e80c1.testnet | seeded | 3 | 0 | 3 | 0.2 NEAR |
| skarbnik-partd-461f99.testnet | seeded | 2 | 0 | 2 | 0.066666 NEAR |
| kintsugi-agent-d9410f.testnet | team-run | 3 | 2 | 1 | 0.3 NEAR |
| skarbnik-agentsmd-960210.testnet | seeded | 2 | 2 | 0 | 0.2 NEAR |
Earnings by account
Every account that committed or was paid. Fees spent are the attempt fees it paid; fees returned came back with a payout or as credit when a bounty closed. Model and compute costs appear only if the agent’s operator supplies them (data/operator_costs.json).
| Account | Who runs it | Attempts | Gross rewards | Fees spent | Fees returned | Proof-checked passes | Timeout payouts | Rejected by a FAIL proof | Released unrevealed | Model and compute cost |
|---|---|---|---|---|---|---|---|---|---|---|
| kintsugi-res1-prnvm.testnet | team-run | 9 | 0.35 NEAR | 0.1 NEAR | 0.04 NEAR | 1 | 3 | 0 | 2 | not supplied |
| kintsugi-res2-prnvm.testnet | team-run | 6 | 0.05 NEAR | 0.095 NEAR | 0.04 NEAR | 0 | 2 | 2 | 0 | not supplied |
| sybil.kintsugi-vendor-prnvm.testnet | seeded | 3 | 0 NEAR | 0.045 NEAR | 0 NEAR | 0 | 0 | 0 | 3 | not supplied |
| the owner's personal testnet account | team-run | 2 | 0.533333 NEAR | 0.02 NEAR | 0.02 NEAR | 0 | 2 | 0 | 0 | not supplied |
| kintsugi-web-1e80c1.testnet | seeded | 3 | 0.2 NEAR | 0.035 NEAR | 0.035 NEAR | 0 | 3 | 0 | 0 | not supplied |
| skarbnik-partd-461f99.testnet | seeded | 2 | 0.066666 NEAR | 0.035 NEAR | 0.035 NEAR | 0 | 2 | 0 | 0 | not supplied |
| kintsugi-agent-d9410f.testnet | team-run | 3 | 0.3 NEAR | 0.03 NEAR | 0.03 NEAR | 2 | 1 | 0 | 0 | not supplied |
| skarbnik-probe-eb33d2.testnet | seeded | 3 | 0 NEAR | 0.045 NEAR | 0 NEAR | 0 | 0 | 0 | 0 | not supplied |
| skarbnik-agentsmd-960210.testnet | seeded | 3 | 0.2 NEAR | 0.03 NEAR | 0.02 NEAR | 2 | 0 | 0 | 0 | not supplied |
| skarbnik-mcp-2fe414.testnet | seeded | 1 | 0 NEAR | 0.015 NEAR | 0 NEAR | 0 | 0 | 0 | 0 | not supplied |
Numbers
From the chain only (every decided attempt); the proving machine from data/provers.json.
| Measure | Value |
|---|---|
| Decided attempts | 20 |
| Settled by a proof | 7 (35%) |
| Settled by the timeout rule (timeout rate) | 13 (65%) |
| Reveal to settlement, proof, laptop | median 1 h 23 min, slowest 1 h 25 min (4 attempts) |
| Reveal to settlement, timeout, none (no proof) | median 4 h 0 min, slowest 4 h 0 min (13 attempts) |
| Reveal to settlement, proof, rented GPU (prove and shrink), then a Docker VPS (Groth16) | median 6 h 11 min, slowest 6 h 11 min (1 attempts) |
| Reveal to settlement, proof, not recorded | median 16 min, slowest 17 min (2 attempts) |
| Distinct outside accounts | 0: every account so far is run or seeded by the team |
by proof: from the reveal to the proof accepted on chain; by timeout: from the reveal to the verdict deadline (the claim came later). Machine-readable: metrics.json.
Vendors: proved in time or not
For each revealed attempt: decided by a proof before its deadline, or not (then the timeout rule paid it, or it is still waiting past its deadline).
| Vendor | Who runs it | Bounties | Proved in time | Not proved in time | Waiting past deadline |
|---|---|---|---|---|---|
| kintsugi-vendor-prnvm.testnet | team-run | 33 | 7 | 13 | 3 |
Machine-readable: ledger.json (a snapshot made by node scripts/gen_ledger.mjs with the same rules). Transaction links come from the files the repository records; amounts and outcomes come from the chain.
Checker
The approved checker
A proof counts only for one checker program. Its fingerprint, the image id, is the only id on the contract’s allowlist, and anyone can rebuild the checker and compare.
Image id on the allowlist
MATCH on rebuild, 2026-10-26dd6c5f42c117ce3a842dbde60cd3fd9f255c85e322317e6bff2357b20533a2fc
Read live: the allowlist holds 1 id, this one.
Rebuild it yourself
Level B of the judge guide. It builds the checker in a pinned container and compares the id.
./scripts/check_image_id.sh
The last line should read MATCH. It took 2 min 20 s with the Docker images cached, and 5 min 12 s with the 7.46 GB image download. Needs Docker.
Shown on one machine so far (docs/evidence/judge/check_image_id_home.txt).
What a match establishes
It does. The id on chain is the id of the public checker source, built the reproducible way.
It does not. It does not show that the checker is complete, or that a passing fix is secure against everything. A proof says one patch passed or failed this defined check.
What the checker runs on every patch
No imports, at most 2,048 bytes, at most 2 memory pages, checked exports.
It must not crash or run out of fuel, 50,000 units per input, in a fresh interpreter each time.
Every answer must match the original program’s.
Drawn from the reveal seed, so a patch cannot be tailored to them. They must match the original.
One or two byte changes of the secret must not crash where the original crashes.
Check it from the repository
Commands run from the root of the Skarbnik repository.
near contract call-function as-read-only kintsugi-l2-cihdp.testnet get_bounty json-args '{"bounty_id":"12"}' network-config testnet now
Or open its raw data.
cargo test -p kintsugi-contract --offline level2_opens_with_the_real_proof0
On testnet: CczggiUN…4XeY, a PASS proof for bounty 1, accepted and paid.
cargo test -p kintsugi-contract --offline s1_the_same_proof_is_refused_on_another_bounty
On testnet: 8fYiFjir…MahM, refused by the contract.
cargo test -p kintsugi-contract --offline
135 with the per-account cap, deployed 2026-10-26 (docs/evidence/account_cap/); the code before it passed 119 (docs/evidence/judge/clean_clone.txt).
docs/AUDIT.md (every finding, fix and known limit) and docs/SECURITY.md (guards and known limits).
Contract
The contract
It holds the money and the deadlines, checks Groth16 proofs with NEAR’s built in curve functions, and applies the rules. It does not run the private evaluation.
Deployment, read live
- Account
- kintsugi-l2-cihdp.testnet
- Code hash
- Gx1JfW7GdpD7sgWf2JwvQhQzfrGy5CnMZyTW2bvFBX6u
- Last deploy
- 83biMoi8…TrTP
- Owner
- The contract account itself
- Fee pool
- 0.09 NEAR, locked. No method takes it out.
- Full access keys
- 1
Read live from testnet just now, except the last deploy (docs/EVIDENCE.md, "Contract code and every deploy" (the reproducible build of commit c74bd5c)).
What was tested
135 contract unit tests pass in the repository. 135 with the per-account cap, deployed 2026-10-26 (docs/evidence/account_cap/); the code before it passed 119 (docs/evidence/judge/clean_clone.txt).
9 proof attacks were refused on chain: proof of another attempt, a FAIL proof presented as a PASS, proof with one bit flipped, proof with a changed journal, proof under another checker image id, second proof for a decided attempt, proof of another bounty, second proof after a PASS, proof after the bounty expired.
A proof for the wrong bounty fails cheaply, at 2.35 Tgas. 8fYiFjir…MahM
These are AI review passes and tests. There is no external security audit.
Read live just now: the contract account has 1 full access key. The testnet contract’s account keeps a full access key, so its owner can replace the code under live bounties. This is deliberate: it’s an experimental testnet contract that will keep changing. The mainnet contract (skarbnik.near) is planned without an upgrade key the owner controls alone (key removed, or upgrades behind a multisig or DAO with a delay). To check that the code has not changed silently, compare the live code hash above with the last deploy in docs/EVIDENCE.md, “Contract code and every deploy”, which lists every deploy transaction.
Refused attacks on testnet
| What was tried | Result | Transaction |
|---|---|---|
| Proof of another attempt | Refused | 3ULvszXn…EANT |
| A FAIL proof presented as a PASS | Refused | JDZNSTe7…a5HT |
| Proof with one bit flipped | Refused | GibfrVyG…3ET7 |
| Proof with a changed journal | Refused | 4Sde4NuT…MYZG |
| Proof under another checker image id | Refused | 4N6oi9Mp…Ay2C |
| Second proof for a decided attempt | Refused | EmKG8Sm9…Hhym |
| Proof of another bounty | Refused | GfZXvdiG…KFvS |
| Second proof after a PASS | Refused | GiHbmMMR…tRGs |
| Proof after the bounty expired | Refused | E5DFg1TV…nrwp |
Recorded in docs/evidence/S6c/transactions.tsv.
Who may call what
| Method | Caller | Rule |
|---|---|---|
| create_bounty | Anyone except a verifier | At least 0.1 NEAR, K from 1 to 16, checker id on the allowlist |
| open_with_groth16 | Anyone | Checks Proof 0 on chain, then opens the bounty |
| commit | Anyone except the vendor | Fee taken from prepaid credit. Ignored when the slots are full |
| reveal | The committer | After the gap, inside the window. Records the block seed |
| submit_groth16 | Anyone | PASS pays and closes. FAIL spends the attempt. A late proof is refused |
| claim_timeout | Anyone, after the deadline | Splits equally among revealed attempts still undecided |
| expire | Anyone, after expiry | Refunds an unpaid bounty to the vendor |
| withdraw_credit | The account, 1 yoctoNEAR | A limited agent key cannot call it |
| set_agent_limits | The account, 1 yoctoNEAR | Caps the fee per commit and fixes the payout account |
| allow_image_id | Owner | Adds a checker id. There is no removal |
Where every fee goes
An attempt fee is taken from your credit in the contract when your commit is counted. It never goes to the vendor.
| How the attempt ends | Where its fee goes | When |
|---|---|---|
| Never revealed in time | Protocol fee pool | When anyone calls release_unrevealed after the reveal window, or at expire |
| Wins with a PASS proof | Back to the winner, with the bounty | Same transaction |
| Paid by the timeout rule | Back to each account that shares the payout, with its share | Same transaction |
| Revealed and still waiting when another attempt wins | Back to the committer as credit | Same transaction |
| Decided FAIL | Level 2 bounties: the protocol fee pool. Level 0: equal shares to the registered verifiers | When anyone calls expire after the bounty’s expiry |
The protocol fee pool cannot be withdrawn: no method takes NEAR out of it. Unspent credit is always yours: withdraw_credit returns it (it needs 1 yoctoNEAR, so only your full key can call it, never an agent’s limited key). docs/SECURITY.md, “Where every fee goes”.
Levels: what you trust
| Level | Who checks the proof | You trust |
|---|---|---|
| L0 | Two registered verifiers sign the same verdict | Those two verifiers |
| L2 | The contract checks a Groth16 proof of the RISC Zero result itself | The maths, a one time setup by RISC Zero, and the published checker (its image id) |
Credit and agent limits, read only
near contract call-function as-read-only kintsugi-l2-cihdp.testnet get_credit json-args '{"account_id":"<account>"}' network-config testnet now
near contract call-function as-read-only kintsugi-l2-cihdp.testnet get_agent_limits json-args '{"account_id":"<account>"}' network-config testnet now
Security Lab
Security Lab: how much can probing learn?
One verdict leaks at most one bit about the secret, so the attempt limit K is the leak budget. A probe agent tried to learn a 4,096 value secret one bit at a time. Step through what was recorded.
What this lab covers: one attack only, learning the secret through many yes or no attempts. It does not cover other attacks: forged and replayed proofs are on the Contract tab, and timing and other side channels are not measured (Limits).
K = 3 attempts
No probes yet. The probe agent knows nothing beyond the size of the secret, 4,096 values.
Bits learned
0 of 12Candidates left for the secret
4,096A 4,096 value secret holds 12 bits. 3 attempts reveal at most 3, which leaves 512 candidates. Verdicts came from the native checker (the same checker code the zkVM guest runs); no proofs were made for the probes.
The recorded run on an earlier testnet contract (bounty.kintsugi-djloo.testnet), where the commit after the cap was ignored.
Guarded vs unguarded
The same probe agent asks one yes or no question per attempt about one bit of a 12 bit secret. Without a cap it learns the whole secret; on the contract the cap stops it after 3 counted attempts, so it can learn at most 3 of 12 bits.
| Measure | Value |
|---|---|
| Attempts sent | 12 |
| Attempts counted | 3cap K = 3; the rest ignored at no cost |
| NEAR spent | 0.045 NEAR in fees + 0.0029 NEAR gas |
| Bits learned | at most 30 in this run: the probes were not revealed, so no verdict was asked for |
| Share of the secret exposed | at most 25% |
NEAR testnet, kintsugi-l2-cihdp.testnet bounty 23, probe account skarbnik-probe-eb33d2.testnet, seeded by the project. First commit Hx8jW2Lj…1h7r, first ignored commit JCCiTAX1…gjGz.
| Measure | Value |
|---|---|
| Attempts sent | 12 |
| Attempts counted | 12no cap |
| NEAR spent | 0, no fee |
| Bits learned | 12the probes named the secret’s value, checked against the secret revealed after the run |
| Share of the secret exposed | 100% |
Never run against the contract: this machine only (native checker), never on the contract; no cap, no fee, crash-variant check off. With the crash variant check on, every probe FAILs and learns 0 bits.
Recorded in docs/evidence/arena_probe/.
Crash variant check on
With the check of 32 variants of the secret input switched on, the same probes all FAIL whatever the secret, so the probe agent learns 0 bits.
| Probe | Verdict |
|---|---|
| probe_1 | FAIL |
| probe_2 | FAIL |
| probe_3 | FAIL |
The same cap on testnet
| What happened | Result | Transaction | Time |
|---|---|---|---|
| Arena bounty created | Succeeded | ANCqPZzL…3q3U | 2026-10-24 10:22 UTC |
| Probe commit 1 | Succeeded | FpUpVqQy…FEDi | 2026-10-24 10:22 UTC |
| Probe commit 2 | Succeeded | 8jMLwGnY…S3yU | 2026-10-24 10:22 UTC |
| Probe commit 3 | Succeeded | AGSSeET6…EDm1 | 2026-10-24 10:23 UTC |
| Probe commit 4 (over the cap: ignored, nothing taken) | Succeeded | 2NuDyLV6…pohX | 2026-10-24 10:23 UTC |
Recorded in docs/evidence/S8/transactions.tsv and docs/evidence/S8/arena_log.json, docs/evidence/S8/arena_run.txt.
Limits
Known limitations, in plain words
These are the points a skeptical reader should check first. None of them is hidden elsewhere.
Testnet only
No mainnet contract exists. Every transaction on this site is a testnet transaction.
No external audit
The contract was reviewed in AI review passes, with every finding reproduced before it was fixed. The checker, scripts, site and agent were outside that review.
Full access key kept on purpose (testnet)
The testnet contract’s account keeps a full access key, so its owner can replace the code under live bounties. This is deliberate: it’s an experimental testnet contract that will keep changing. The mainnet contract (skarbnik.near) is planned without an upgrade key the owner controls alone (key removed, or upgrades behind a multisig or DAO with a delay). Read live: 1 full access key. To check that the code has not changed silently, compare the live code hash on the Contract tab with the last deploy in docs/EVIDENCE.md, “Contract code and every deploy”, which lists every deploy transaction.
Vendor proofs are slow on a laptop
One attempt takes about 1.5 to 2.5 hours to prove on a laptop CPU, plus the shrink step, so it can miss a 4 hour window. Then the timeout rule applies.
GPU proving rents a machine
The vendor’s watch proves each attempt on a rented GPU (bounties 32 and 27): about 17 minutes from reveal to submit, about $0.04 of GPU a proof. The secret sits in that machine’s RAM during the proof, then is wiped. The Groth16 wrap needs Docker on an x86 machine.
A timeout pays whatever was revealed
The contract does not read the fix. Under a silent vendor, an honest fix may get as little as 1/K of the bounty.
Revealed fixes are public
After the reveal a patch is on chain. A one line fix is often the reference fix byte for byte, so a secret reference fix protects little.
Narrow scope
Crash bugs in small WebAssembly modules, patches up to 2,048 bytes. A vendor with a crash but no fix is not supported.
A payout to a missing account is lost
Bounty 8 shows it. The site and the agent check the account before a commit, but the contract does not.
One verdict leaks one bit
K is the leak budget. A per-account cap (deployed 2026-10-26) limits how many slots one account holds, but one person with many accounts can still fill a bounty’s slots.
Level 1 is not built
The OutLayer path exists but never answered on testnet. Every current bounty is Level 2 or the older Level 0.
Wallets are mostly untested
NEAR CLI was clicked through to real transactions. The other wallets were only loaded, not signed in.
Status vocabulary
The same labels everywhere
Mint is used only for a verified outcome, and always with a word and an icon. A timeout is never styled like a proof. The last two labels are the feed’s states for bounties that are not settled.
The contract checked a proof for the paid attempt.
A valid proof said FAIL for an attempt. The bounty is still open.
A patch was revealed and no verdict has arrived yet.
No proof arrived in the window. The contract paid by rule. This is not a proof.
Nothing was paid out. The vendor got the reward back.
Past its expiry and not settled. Anyone can call expire to refund the vendor.
A demo or test bounty, not settled yet. It uses a public input or a test setup.
Opened by its Proof 0 and accepting commits now.
Created, not opened yet. It opens when its Proof 0 is accepted.
Labels for claims
Used in the judge guide. No audit badge is shown, because there is no audit.