Document agent-friendly bounty post template#469
Conversation
Refs ramimbo#456 Document the maintainer-facing bounty post template so humans and agents can parse scope, reward, award slots, acceptance criteria, and evidence requirements without guessing. Changes: - docs/bounty-rules.md: add Bounty Post Template section with required fields table, optional fields table, copy-pasteable template, and agent-readable field descriptions for GitHub/API/MCP workflows - docs/admin-runbook.md: update Post a Bounty steps to reference the template and require the title format - .github/ISSUE_TEMPLATE/bounty.yml: restructure to match the documented template with Reward, Max awards, Work Needed, Acceptance Criteria, How To Submit, and optional Out of Scope fields - scripts/docs_smoke.py: add checks for the new template fields Evidence: - docs_smoke.py passes: all required template phrases detected - 414/414 tests pass - ruff format, ruff check, mypy all clean - Compared proposed template against existing bounty issues (ramimbo#405, ramimbo#406, ramimbo#427, ramimbo#456, ramimbo#459) — all already follow this structure
📝 WalkthroughWalkthroughThis PR standardizes the bounty posting template and documentation across the repository. The GitHub issue template form is updated with a combined required ChangesBounty Template and Documentation Standardization
Possibly related issues
Possibly related PRs
🚥 Pre-merge checks | ✅ 5 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Comment |
jtc268
left a comment
There was a problem hiding this comment.
Requested changes after reviewing PR #469 at head 85f36632451725817ce4951d6525a9a826e57101.
The new copy-paste template does not actually carry all of the stable headings Bounty #456 asked this PR to standardize. The #456 acceptance criteria explicitly call for stable fields covering evidence or tests, out of scope, duplicate-work rules, stale-work rules, and public artifact cautions. This PR documents those in the optional-fields table in docs/bounty-rules.md, but the actual template block only includes Work Needed, Acceptance Criteria, and How To Submit.
That leaves the canonical copy-paste path incomplete: a maintainer following the new template would still omit several fields that agents are supposed to parse consistently, so the change does not fully satisfy the bounty's agent-readable template requirement. Please add those optional headings/placeholders to the template block, or otherwise make the template itself preserve the complete documented field set.
Validation run locally:
python3 scripts/docs_smoke.py->docs smoke okpython3 -m pytest tests/test_docs_public_urls.py -q->23 passed.github/ISSUE_TEMPLATE/bounty.ymlparses as YAML
There was a problem hiding this comment.
Actionable comments posted: 3
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 7ffd534f-ffc4-48d0-b678-d0039d8a32ca
📒 Files selected for processing (4)
.github/ISSUE_TEMPLATE/bounty.ymldocs/admin-runbook.mddocs/bounty-rules.mdscripts/docs_smoke.py
GHX5T-SOL
left a comment
There was a problem hiding this comment.
Reviewed current head 85f36632451725817ce4951d6525a9a826e57101.
I am requesting changes because the new template still leaves the machine-readable reward/max-awards contract inconsistent. docs/bounty-rules.md says the canonical body fields are Reward: MRWK per accepted award and `Max awards: `<number> in body code-block lines, and the agent-readable section says agents should parse those body code blocks. However, .github/ISSUE_TEMPLATE/bounty.yml only collects reward and max_awards as separate issue-form inputs on lines 6-21; it does not guide maintainers to repeat the exact canonical body lines. A maintainer using the form can still create an issue body that lacks the body lines the new docs tell agents to parse.
The copy-paste block also has the same contract problem in a different form: lines 94-95 are inside a fenced markdown block but escape the backticks as \``. Copying that block produces literal backslash-backticks, not the canonical Reward: <amount>...`` / Max awards: ``` syntax described in the required-fields table.
The current docs smoke guard does not catch this drift: scripts/docs_smoke.py only checks bare tokens such as Reward: and Max awards:, which are already satisfied by the table text even if the copy-paste template or issue-form output is not canonical. That is why python scripts/docs_smoke.py passes on this head despite the template mismatch.
This is distinct from the existing review note about optional headings. The blocker here is the core reward/max-awards parse contract for the fields Bounty #456 explicitly asked the template and issue form to make agent-readable. Please either make the issue form / copy-paste template emit the exact canonical body lines, or adjust the documented parser contract and smoke checks so they match what maintainers will actually post.
Validation run locally:
/home/kali/money/mergework/.venv/bin/python scripts/docs_smoke.py-> docs smoke ok/home/kali/money/mergework/.venv/bin/python -m pytest tests/test_docs_public_urls.py -q-> 23 passed/home/kali/money/mergework/.venv/bin/python -m pytest -q-> 414 passed/home/kali/money/mergework/.venv/bin/python -m ruff check .-> passed/home/kali/money/mergework/.venv/bin/python -m ruff format --check .-> 79 files already formatted/home/kali/money/mergework/.venv/bin/python -m mypy app-> success, no issues in 30 source files- YAML parse check for
.github/ISSUE_TEMPLATE/*.yml-> all templates parse as mappings git diff --check upstream/main...HEAD-> cleangitleaks detect --no-banner --redact --source . --log-opts upstream/main..HEAD --exit-code 1-> no leaks found
- Issue form now includes canonical Reward/Max awards header block in the textarea default value so parsers can read fields from body - Removed escaped backticks inside code fences that rendered literally and switched template display to indented block instead - Tightened docs_smoke.py checks to use exact headings instead of bare tokens, reducing false-positive risk
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
docs/bounty-rules.md (1)
61-64:⚠️ Potential issue | 🟠 Major | ⚡ Quick winAdd the required MRWK descriptor in this new template section.
Please include that MRWK is a native project coin and may support future snapshots, bridges, and onchain claims to keep public docs policy-consistent.
As per coding guidelines: “MRWK should be described as a native project coin that may support future snapshots, bridges, and onchain claims”.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: a00a6827-5650-4dda-8448-fc462fe93086
📒 Files selected for processing (3)
.github/ISSUE_TEMPLATE/bounty.ymldocs/bounty-rules.mdscripts/docs_smoke.py
|
|
||
|
|
||
| Useful accepted work can include: |
There was a problem hiding this comment.
Fix YAMLlint empty-lines violation in the template block.
Line 42 creates 3 consecutive blank lines in the scalar block, which violates empty-lines (3 > 2) and can fail CI linting.
Proposed fix
## Work Needed
-
-
Useful accepted work can include:📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| Useful accepted work can include: | |
| Useful accepted work can include: |
🧰 Tools
🪛 YAMLlint (1.38.0)
[error] 42-42: too many blank lines (3 > 2)
(empty-lines)
GHX5T-SOL
left a comment
There was a problem hiding this comment.
Reviewed current head 66dbbc173129ebfb0bcc469fcb0335137089d466 after the author follow-up.
My previous reward/max-awards parser-contract blocker is addressed on this head. The issue template now makes the main body textarea start with canonical Reward: / Max awards: lines, the docs copy-paste template no longer emits escaped backticks, and scripts/docs_smoke.py now checks the exact inline-code phrases instead of only bare tokens.
I am leaving this as a comment rather than an approval because the earlier optional stable-heading review still appears unresolved on this same head: the copy-paste template and issue-form default body still do not include Evidence or Tests, Out of Scope, Duplicate-Work Rules, Stale-Work Rules, or Public Artifact Cautions headings even though bounty #456 names those fields. I am not opening a second changes-requested review for that same blocker.
Validation on this head:
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 uv run --extra dev python scripts/docs_smoke.py->docs smoke okPYTEST_DISABLE_PLUGIN_AUTOLOAD=1 uv run --extra dev python -m pytest tests/test_docs_public_urls.py -q->23 passedPYTEST_DISABLE_PLUGIN_AUTOLOAD=1 uv run --extra dev python -m pytest -q->414 passedPYTEST_DISABLE_PLUGIN_AUTOLOAD=1 uv run --extra dev ruff check scripts/docs_smoke.py-> passedPYTEST_DISABLE_PLUGIN_AUTOLOAD=1 uv run --extra dev ruff format --check scripts/docs_smoke.py->1 file already formattedPYTEST_DISABLE_PLUGIN_AUTOLOAD=1 uv run --extra dev python -m mypy app-> success, no issues in 30 source files- YAML parse check for
.github/ISSUE_TEMPLATE/*.ymland.yaml-> all issue templates parse as mappings git diff --check origin/main...HEAD-> cleangit diff --no-ext-diff origin/main..HEAD | gitleaks stdin --no-banner --redact --exit-code 1-> no leaks found
Problem
Bounty #456 asked for a canonical agent-friendly bounty post template so humans and agents can parse scope, reward, award slots, acceptance criteria, and evidence requirements without guessing.
Before this PR, bounty posts relied on convention rather than documented structure. The issue template (
bounty.yml) did not enforce key fields like How To Submit or Out of Scope.Changes
docs/bounty-rules.md: Added a "Bounty Post Template" section with:
docs/admin-runbook.md: Updated "Post a Bounty" steps to reference the documented template and require the
MRWK bounty: <amount> MRWK - <short scope>title format..github/ISSUE_TEMPLATE/bounty.yml: Restructured to match the documented template — added How To Submit and Out of Scope fields, reordered to put Reward and Max Awards first.
scripts/docs_smoke.py: Added checks for the new template section headings and key phrases.
Evidence
Compared the proposed template against existing bounty issues (#405, #406, #427, #456, #459) — all already follow this structure, confirming the template matches real-world usage.
Out of Scope
Summary by CodeRabbit