Skip to content

fix: unblock the bounty sync, plus board, disciplines and docs corrections - #208

Merged
thomasgarrison merged 5 commits into
stagingfrom
sl33ty/fix/bounty-sync-issue-perms
Aug 1, 2026
Merged

fix: unblock the bounty sync, plus board, disciplines and docs corrections#208
thomasgarrison merged 5 commits into
stagingfrom
sl33ty/fix/bounty-sync-issue-perms

Conversation

@sl33ty

@sl33ty sl33ty commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Why the board has always been empty

sync-bounties.yml declared permissions: contents: write, pull-requests: write. A permissions: block is a replacement, not an addition, so every scope left out is set to none — including issues. The gh issue list call in scripts/sync-bounties.mjs therefore returned an empty array without erroring, and the job regenerated an empty board, found no diff, and exited green having published nothing.

The evidence is in the last run (30635127205, 31 Jul): it printed zero ::warning:: lines. Had it fetched the two labelled issues and failed to parse them, there would be one warning per issue. Silence means it read nothing at all. Running the same gh issue list locally returns them fine.

Adding issues: read is the whole fix.

Also in here

Bounty table row keys. Rows were keyed on row.title, and hover state tracked by title too. Titles are author-supplied and do collide, which threw a React duplicate-key error and made hovering one row highlight every row sharing its title. Now keyed on the issue URL, hover tracked by index.

Disciplines page on mobile. The page runs to roughly eight phone screens across 9 categories and 43 disciplines, and the category headings live inside DisciplineGrid where Docusaurus never sees them for the "On this page" sidebar — so there was no way to reach Operations except scrolling past everything. Adds a jump bar and card ids. Also swaps the grid track to minmax(min(310px, 100%), 1fr): the fixed 310px minimum forced a column wider than its container below about a 342px viewport and gave the whole page a sideways scroll.

Contributor map notice. It rendered whenever any demo row existed, so the first real registration did not change it — the map went on telling visitors all 26 dots were placeholders while one was a real contributor. Now counts the real rows, and says nothing once the placeholders are gone.

Placeholder award records removed. Previous Bounties and Previous Grants both shipped tables of specific payouts, recipients and completion dates. Neither was a record: both were born fully populated in the initial docs scaffold, the recipient handles appear nowhere in the repo except the cspell dictionary added to make them pass spellcheck, and no bounty has ever reached the board. Replaced with honest empty states. Also deleted docs-bounty/previous-bounties.md, an unreferenced duplicate that kept the invented table reachable by URL.

Video Guide embedded a placeholder YouTube ID that would have served an unrelated video to anyone who found the page. Embed removed until the real one exists.

Docs corrections. What are Bounties claimed every bounty pays in both USDC and ARROW; the form marks both optional and the sync requires only one, so ARROW-only bounties are normal and the page was setting a payment expectation we cannot meet. Its discipline list was also stale, merging Design, Content and Growth into one bullet against the board's nine sections and dropping five disciplines. Creating Bounties had the required-field count wrong (the form enforces five) and now documents the green-but-empty failure mode above.

Bounty table headers move from Departure Mono to Neue Haas Grotesk, to match the project category tabs. Scoped to .theme-doc-markdown .bt-table th so every other table in the docs is untouched.

Verifying the sync fix

This one cannot be proven until it is merged and the workflow is dispatched. After merge: Actions → Sync bounty board data → Run workflow. With at least one bounty-labelled issue present it should open a PR against this branch's base rather than reporting "No bounty data changes".

Note there are currently no bounty-labelled issues: #201 and #167 were test artifacts and have been unlabelled, so a run today would still correctly produce nothing. File a real bounty first, then dispatch.

sl33ty added 4 commits August 1, 2026 15:32
…ties

The permissions block listed only contents and pull-requests. That block is a
replacement rather than an addition, so issues was set to none and the
gh issue list call returned an empty array without erroring. Every run
regenerated an empty board, found no diff, and exited green having published
nothing, which is why no bounty ever reached the board.

Also correct the required-field count in the docs (the form enforces five, not
six) and document the green-but-empty failure mode so the next person checks
the job's permissions before re-checking their own formatting.
…on mobile

BountyTable keyed rows and hover state on the bounty title. Titles are
author-supplied and collide, which produced a React duplicate-key error and made
hovering one row highlight every row sharing its title. Key on the issue URL
instead and track hover by index.

DisciplineGrid ran to roughly eight phone screens with no way to navigate it:
the category headings live inside the component, so Docusaurus never sees them
for the On this page sidebar. Add a jump bar of the nine categories and give each
card an id. Also swap the grid track to minmax(min(310px, 100%), 1fr) — the fixed
310px minimum forced a wider column than its container below about a 342px
viewport and gave the whole page a sideways scroll.
The notice rendered whenever any demo row existed, so the first real
registration did not change it: the map went on telling visitors that all 26
dots were placeholders while one of them was a real contributor. Count the real
rows and say how many there are, and drop the claim entirely once the
placeholders are gone.
… the payout and discipline claims

Previous Bounties and Previous Grants both shipped tables of specific payouts,
recipients and completion dates. Neither was a record: both were born fully
populated in the initial docs scaffold, the recipient handles appear nowhere in
the repo except the cspell dictionary added to make them pass spellcheck, and no
bounty has ever reached the board. Replaced with honest empty states that
explain what will be listed once there is something to list.

What are Bounties claimed every bounty pays in both USDC and ARROW. The form
marks both optional and the sync requires only one, so ARROW-only bounties are
normal and the page was setting a payment expectation we cannot meet. Its
discipline list was also stale, merging Design, Content and Growth into one
bullet against the board's nine sections and dropping five disciplines.

Video Guide embedded a placeholder YouTube ID that would have served an
unrelated video to anyone reaching the page. Embed removed until the real one
exists.

Deleted the unreferenced duplicate at docs-bounty/previous-bounties.md, which
nothing linked to and which kept the invented table reachable by URL.

Also replaces every em dash across the section, and switches the bounty table
headers from Departure Mono to Neue Haas Grotesk to match the project category
tabs. Scoped to .bt-table so other doc tables are untouched.
@sl33ty
sl33ty requested a review from a team as a code owner August 1, 2026 19:37
@cla-bot cla-bot Bot added the cla-signed label Aug 1, 2026
The notice rendered only while demo rows existed, so removing the placeholder
set made it disappear entirely. A near-empty world map with a single dot and no
caption reads as broken rather than as new, which is the wrong impression to
give at exactly the moment we start asking people to register.

Now covers all three states: placeholders only, placeholders alongside real
entries, and real entries only. The last of those is where the map is heading
and was previously the one with nothing to say.
@thomasgarrison
thomasgarrison merged commit 7ca54c1 into staging Aug 1, 2026
4 checks passed
@thomasgarrison
thomasgarrison deleted the sl33ty/fix/bounty-sync-issue-perms branch August 1, 2026 23:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants