Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions .github/ISSUE_TEMPLATE/verifier_reliability_bounty.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
---
name: Verifier Reliability Bounty
about: Template for creating verifier reliability bounties
title: '[PENDING ACTIVATION] Earn 1 USDC margin by posting a verifier reliability bounty'
labels: 'draft'
assignees: ''
---

## Activation state

This is a replacement inventory draft. **Do not claim, sign, bond, fund a child, or start work yet.**

It becomes an earning bounty only after this issue publishes all of the following from canonical Base-mainnet evidence:

- one exact routed-V3 parent contract;
- full 2.01 USDC funding;
- BountyBecameClaimable;
- valid immutable terms;
- an executable routed-V3 child-preparation path;
- the pinned sandboxed_regression_v1 verifier path.

## Intended earning loop

After activation, the solver posts and fully funds one concrete 1.00 USDC verifier reliability coding child bounty. A different registered participant completes that child and receives canonical settlement. The parent then pays 2.00 USDC, leaving 1.00 USDC parent gross margin before gas or other optional costs.

The activation workflow adds bounty, funded-live, and claimable-live labels only after every readiness check passes. A draft issue, label, transaction plan, signature, or transaction hash is not funding, claimability, completion, or payment. Only canonical BountySettled proves payment.

Discovery feedback requested after activation: explain how you found the bounty, why you attempted it, and the single change that would make the loop easier to complete.

## Activation checklist

- [ ] Parent contract deployed on Base mainnet
- [ ] Contract funded with 2.01 USDC
- [ ] BountyBecameClaimable event emitted
- [ ] Immutable terms validated
- [ ] Child-preparation path verified
- [ ] Verifier path pinned
- [ ] Labels updated (bounty, funded-live, claimable-live)

## Contract details

**Parent contract address:** `TBD`

**Funding transaction:** `TBD`

**BountyBecameClaimable transaction:** `TBD`

## Terms

- Parent bounty value: 2.01 USDC
- Child bounty value: 1.00 USDC
- Expected margin: 1.00 USDC (before gas)
- Network: Base mainnet
- Verifier: sandboxed_regression_v1
86 changes: 86 additions & 0 deletions .github/workflows/activate_bounty.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
name: Activate Bounty

on:
issue_comment:
types: [created]

jobs:
activate:
if: contains(github.event.comment.body, '/activate') && contains(github.event.issue.labels.*.name, 'draft')
runs-on: ubuntu-latest
permissions:
issues: write
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Validate activation requirements
id: validate
uses: actions/github-script@v7
with:
script: |
const issue = context.payload.issue;
const body = issue.body;

const requiredFields = [
'Parent contract address:',
'Funding transaction:',
'BountyBecameClaimable transaction:'
];

const missingFields = requiredFields.filter(field =>
!body.includes(field) || body.includes(`${field} \`TBD\``)
);

if (missingFields.length > 0) {
core.setFailed(`Missing required fields: ${missingFields.join(', ')}`);
return false;
}

return true;

- name: Add activation labels
if: steps.validate.outputs.result == 'true'
uses: actions/github-script@v7
with:
script: |
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
labels: ['bounty', 'funded-live', 'claimable-live']
});

await github.rest.issues.removeLabel({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
name: 'draft'
});

- name: Update issue title
if: steps.validate.outputs.result == 'true'
uses: actions/github-script@v7
with:
script: |
const issue = context.payload.issue;
const newTitle = issue.title.replace('[PENDING ACTIVATION]', '[ACTIVE]');

await github.rest.issues.update({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
title: newTitle
});

- name: Post activation comment
if: steps.validate.outputs.result == 'true'
uses: actions/github-script@v7
with:
script: |
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body: '✅ Bounty activated! All requirements verified. This bounty is now claimable.'
});
Loading