Skip to content
Merged
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
83 changes: 20 additions & 63 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,22 @@

> **Tracking every pull request by Code Orange community members to Bitcoin open-source projects.**
>
> Last updated: 26 September 2026 (full re-verification with `tools/verify_dashboard.py`) | Checked weekly by CI
> Last updated: 29 September 2026 | Link states checked weekly by CI (`tools/verify_dashboard.py`)

---

## Summary

Counted from the links below on 29 September 2026. Every number here is a count of linked PRs, nothing else.

| Metric | Count |
| --- | --- |
| **PRs Merged (direct link for every one)** | **131** |
| **PRs Open / Under Review** | **24** |
| **Total PRs Opened** | **155+** (merged + open; closed-unmerged not counted) |
| **Distinct Projects Contributed To** | **30+** |
| **Active Contributors (linked below)** | **12** |
| **Emerging Contributors (first PR imminent)** | **4** |
| **Merged PRs (each linked below)** | **94** (5 of these predate the author joining Code Orange, marked *) |
| **Open PRs (each linked below)** | **17** |
| **Distinct repositories with a merged PR** | **29** |
| **Contributors with a merged PR** | **11** |

Highlights: **3 merged Bitcoin Core** PRs (Peter ×2, Muhammad), **9 merged rust-payjoin** PRs across three contributors (Vaan ×5, Arowolo ×3, Mwihoti ×1), merged PRs in **rust-bitcoin** (Peter ×2, Vaan, Muhammad, Gradale), **hex-conservative**, **Floresta**, **BDK/bdk-cli/bdk_wallet/bdk-ffi**, **LDK**, and **peer-observer** ×4.
A PR listed here is the work of its author. Listing it records that the author is part of the Code Orange community; it doesn't claim Code Orange wrote, directed or caused it.

---

Expand All @@ -27,18 +27,15 @@ This dashboard is Code Orange's public source for **current PR output**. Histori

| Field | Rule |
| --- | --- |
| **Reporting cutoff** | Full link-level verification through **26 September 2026**. |
| **Reporting cutoff** | Link-level verification through **29 September 2026**. |
| **Attribution** | Count only in-scope Bitcoin OSS PRs with a direct link. PRs made before a developer joined Code Orange may be listed as history, but are excluded from program-outcome claims. |
| **PR state** | *Merged* means accepted upstream. *Open / under review* means submitted and neither merged nor closed at the reporting cutoff. Closed-unmerged PRs are not counted as open. |
| **Active contributor** | A unique named community member with an in-scope PR that is open/under review or had a verified merged contribution in the reporting window. Re-verify the label at each monthly update. |
| **Metric owner** | The named Code Orange **PR Verifier**, recorded in the weekly operating scorecard. |
| **Cadence** | Verify state changes weekly; publish this dashboard's refreshed public snapshot monthly, with the cutoff date shown. |

**Counting note:** the 96 merged total is the sum of the linked developer rows below. The table also contains one prospective contributor whose GitHub handle is pending; that person is not included in the four verified emerging contributors.

---

## Merged Pull Requests by Developer (131)
## Merged Pull Requests by Developer (94)

### Peter ([@pzafonte](https://github.com/pzafonte)) - 30 merged
| Project | PR | Date |
Expand All @@ -61,19 +58,9 @@ This dashboard is Code Orange's public source for **current PR output**. Histori
| bdk_wallet | [#422](https://github.com/bitcoindevkit/bdk_wallet/pull/422) | Apr 2026 |
| esplora-cli | [#3](https://github.com/yancyribbens/esplora-cli/pull/3) | Apr 2026 |

### Chaitika ([@chaitika](https://github.com/chaitika)) - 28 merged (2026)
### Diegodev ([@0xlaga](https://github.com/0xlaga)) - 5 merged
| Project | PR | Date |
| --- | --- | --- |
| shroud (Silent Payments, CypherCommons) | [#151](https://github.com/CypherCommons/shroud/pull/151) · [#150](https://github.com/CypherCommons/shroud/pull/150) · [#145](https://github.com/CypherCommons/shroud/pull/145) · [#144](https://github.com/CypherCommons/shroud/pull/144) · [#141](https://github.com/CypherCommons/shroud/pull/141) · [#138](https://github.com/CypherCommons/shroud/pull/138) · [#134](https://github.com/CypherCommons/shroud/pull/134) · [#130](https://github.com/CypherCommons/shroud/pull/130) · [#118](https://github.com/CypherCommons/shroud/pull/118) · [#124](https://github.com/CypherCommons/shroud/pull/124) · [#123](https://github.com/CypherCommons/shroud/pull/123) · [#122](https://github.com/CypherCommons/shroud/pull/122) · [#121](https://github.com/CypherCommons/shroud/pull/121) · [#120](https://github.com/CypherCommons/shroud/pull/120) · [#114](https://github.com/CypherCommons/shroud/pull/114) · [#108](https://github.com/CypherCommons/shroud/pull/108) · [#103](https://github.com/CypherCommons/shroud/pull/103) · [#102](https://github.com/CypherCommons/shroud/pull/102) · [#101](https://github.com/CypherCommons/shroud/pull/101) · [#93](https://github.com/CypherCommons/shroud/pull/93) · [#89](https://github.com/CypherCommons/shroud/pull/89) · [#86](https://github.com/CypherCommons/shroud/pull/86) · [#83](https://github.com/CypherCommons/shroud/pull/83) · [#79](https://github.com/CypherCommons/shroud/pull/79) · [#76](https://github.com/CypherCommons/shroud/pull/76) · [#73](https://github.com/CypherCommons/shroud/pull/73) · [#67](https://github.com/CypherCommons/shroud/pull/67) | Feb–Jul 2026 |
| shroud-indexer | [#100](https://github.com/CypherCommons/shroud-indexer/pull/100) | Mar 2026 |

Plus 2025 Silent Payments work at the Bitshala Incubator: [silent-pay-wallet](https://github.com/Bitshala-Incubator/silent-pay-wallet/pulls?q=involves%3Achaitika), [silent-pay-indexer](https://github.com/Bitshala-Incubator/silent-pay-indexer/pulls?q=involves%3Achaitika), [silent-pay](https://github.com/Bitshala-Incubator/silent-pay/pulls?q=involves%3Achaitika). <!-- TODO: replace with direct PR links -->

### Diegodev ([@0xlaga](https://github.com/0xlaga)) - 14 merged
| Project | PR | Date |
| --- | --- | --- |
| LN gossip-observer visuals | [#20](https://github.com/bitcoin-visuals/LN_gossip_observer_visuals/pull/20) · [#10](https://github.com/bitcoin-visuals/LN_gossip_observer_visuals/pull/10) · [#9](https://github.com/bitcoin-visuals/LN_gossip_observer_visuals/pull/9) · [#8](https://github.com/bitcoin-visuals/LN_gossip_observer_visuals/pull/8) · [#7](https://github.com/bitcoin-visuals/LN_gossip_observer_visuals/pull/7) · [#6](https://github.com/bitcoin-visuals/LN_gossip_observer_visuals/pull/6) · [#5](https://github.com/bitcoin-visuals/LN_gossip_observer_visuals/pull/5) | Mar–Apr 2026 |
| BINST pilot | [#2](https://github.com/Bitcoin-Institutions/binst-pilot/pull/2) · [#1](https://github.com/Bitcoin-Institutions/binst-pilot/pull/1) | Mar 2026 |
| Master Bitcoin From Command Line (Librería de Satoshi) | [#91](https://github.com/LibreriadeSatoshi/Master-Bitcoin-From-Command-Line/pull/91) · [#90](https://github.com/LibreriadeSatoshi/Master-Bitcoin-From-Command-Line/pull/90) · [#89](https://github.com/LibreriadeSatoshi/Master-Bitcoin-From-Command-Line/pull/89) · [#66](https://github.com/LibreriadeSatoshi/Master-Bitcoin-From-Command-Line/pull/66) · [#65](https://github.com/LibreriadeSatoshi/Master-Bitcoin-From-Command-Line/pull/65) | Feb–Mar 2026 |

### Dayvvo ([@dayvvo](https://github.com/dayvvo)) - 9 merged
Expand All @@ -95,7 +82,6 @@ Plus 2025 Silent Payments work at the Bitshala Incubator: [silent-pay-wallet](ht
| bitcointranscripts | [#615](https://github.com/bitcointranscripts/bitcointranscripts/pull/615) | Mar 2026 |
| Saving Satoshi | [#19](https://github.com/saving-satoshi/saving-satoshi-script/pull/19) | Apr 2026 |

<!-- TODO: BDK Android WIF sweep tool + BIP375 Go from the 2025 report - add direct links or drop -->

### Muhammad ([@muhahahmad68](https://github.com/muhahahmad68)) - 8 merged
| Project | PR | Date |
Expand All @@ -105,7 +91,7 @@ Plus 2025 Silent Payments work at the Bitshala Incubator: [silent-pay-wallet](ht
| **Floresta** | [#1001](https://github.com/getfloresta/Floresta/pull/1001) | Apr 2026 |
| bdk_wallet | [#487](https://github.com/bitcoindevkit/bdk_wallet/pull/487) · [#476](https://github.com/bitcoindevkit/bdk_wallet/pull/476) · [#471](https://github.com/bitcoindevkit/bdk_wallet/pull/471) | May 2026 |
| Cove wallet | [#728](https://github.com/bitcoinppl/cove/pull/728) | May 2026 |
| SeedSigner (kdmukai) | [#12](https://github.com/kdmukai/seedsigner/pull/12) | Apr 2026 |
| SeedSigner (a maintainer's fork, kdmukai/seedsigner) | [#12](https://github.com/kdmukai/seedsigner/pull/12) | Apr 2026 |

### Razor ([@RazorBest](https://github.com/RazorBest)) - 6 merged
| Project | PR | Date |
Expand Down Expand Up @@ -138,65 +124,36 @@ Plus 2025 Silent Payments work at the Bitshala Incubator: [silent-pay-wallet](ht
| --- | --- | --- |
| **rust-payjoin** | [#1589](https://github.com/payjoin/rust-payjoin/pull/1589) | May 2026 |

### Claimed, not yet linked <!-- TODO: verify or remove -->
| Developer | Project | Note |
| --- | --- | --- |
| Bunny Rolling Dice ([@rollingdice](https://github.com/rollingdice)) | BlueWallet | [#315](https://github.com/BlueWallet/BlueWallet/pull/315) Indonesian translation, merged Feb 2019 - predates Code Orange, history only |
| Psychemist | BDK Android · BIP375 Go | From 2025 report - add direct links or drop |

---

## Open / Under Review (24)
## Open / Under Review (17)

Link states re-verified 26 September 2026 with `tools/verify_dashboard.py`.

| Developer | Project | PR |
| --- | --- | --- |
| Peter | kernel-node | [#32](https://github.com/kernel-node/kernel-node/pull/32) |
| Mwihoti | Saving Satoshi | [#20](https://github.com/saving-satoshi/saving-satoshi-script/pull/20) |
| Chaitika | shroud-indexer | [#103](https://github.com/CypherCommons/shroud-indexer/pull/103) |
| Psychemist | BDK devkit-wallet | [#53](https://github.com/bitcoindevkit/devkit-wallet/pull/53) |
| Dayvvo | Btrust website | [#25](https://github.com/btrustteam/website/pull/25) |
| Peter | kernel-node | [#108](https://github.com/kernel-node/kernel-node/pull/108) · [#107](https://github.com/kernel-node/kernel-node/pull/107) |
| Chaitika | shroud | [#164](https://github.com/CypherCommons/shroud/pull/164) · [#162](https://github.com/CypherCommons/shroud/pull/162) · [#161](https://github.com/CypherCommons/shroud/pull/161) · [#160](https://github.com/CypherCommons/shroud/pull/160) · [#148](https://github.com/CypherCommons/shroud/pull/148) · [#135](https://github.com/CypherCommons/shroud/pull/135) |
| Arowolo | BDK (bdk_wallet · bdk-ffi · bdk · coin-select) · Mostro | bdk_wallet [#571](https://github.com/bitcoindevkit/bdk_wallet/pull/571) · [#537](https://github.com/bitcoindevkit/bdk_wallet/pull/537) · bdk-ffi [#1119](https://github.com/bitcoindevkit/bdk-ffi/pull/1119) · [#1114](https://github.com/bitcoindevkit/bdk-ffi/pull/1114) · [#1102](https://github.com/bitcoindevkit/bdk-ffi/pull/1102) · bdk [#2261](https://github.com/bitcoindevkit/bdk/pull/2261) · coin-select [#71](https://github.com/bitcoindevkit/coin-select/pull/71) · mostro [#896](https://github.com/MostroP2P/mostro/pull/896) |
| Muhammad | bdk_wallet | [#528](https://github.com/bitcoindevkit/bdk_wallet/pull/528) |
| Diegodev | gossip_observer · b4os-bitcoin | [#12](https://github.com/jharveyb/gossip_observer/pull/12) · [#5](https://github.com/danielabrozzoni/b4os-bitcoin/pull/5) |

---

## Emerging Contributors (First PR Imminent)

Four contributors below have verified GitHub handles and are included in the summary. The prospective entry is retained for pipeline follow-up but excluded until its handle and target are confirmed.

| Developer | GitHub | Target Project | Expected |
| --- | --- | --- | --- |
| Captain Levi | [@SIDHARTH20K4](https://github.com/SIDHARTH20K4) | BDK | Q3 2026 |
| Yongki | [@ywiyogo](https://github.com/ywiyogo) | Bitcoin Core (C++) | Q3 2026 |
| Ilie | [@Ilie27](https://github.com/Ilie27) | Bitaxe / Stratum V2 | Q3 2026 |
| Elijahhh | [@ElijahMwambazi](https://github.com/ElijahMwambazi) | Lightning Network (Rust) | Q3 2026 |
| Mr Miyagi | *(handle pending)* | Rust Bitcoin OSS | Q3 2026 |

---

## Monthly Tracking Log
## Change Log

### September 2026
- Re-verified every linked PR with the new `tools/verify_dashboard.py` (now run weekly by CI)
- 10 PRs listed as open had merged and moved to merged: Bitcoin Core #35380 (Peter) and #35320 (Muhammad), kernel-node #78 and #31, corepc #547, bitcointranscripts #612, hex-conservative #247, shroud #118/#123/#124 (+10)
- 23 PRs listed as open had been closed unmerged and were removed from the open list, per the data contract
- Alex Xie's 3 merged OpenTollGate PRs now have direct links; the BlueWallet translation claim is linked as pre-Code Orange history
- Added 25 PRs merged since the 12 July cutoff (Peter: 12 kernel-node + rust-bitcoinkernel #213; Chaitika: 8 shroud; Arowolo: 3 Mostro; Gradale: rust-bitcoin #6387) and 17 open ones, applying *How We Count*. Excluded as out of scope: Stellar, Cardano and Docker projects, plus two repos whose Bitcoin relevance couldn't be confirmed (Talent-Index/tangaza, beebozy/fiber-diagnostics)
- Merged total 96 → 131
- 29 Sep: removed one contributor's entries; removed PRs that were self-merged into the author's own orgs (which *How We Count* excludes); all totals recomputed from the remaining links (94 merged, 17 open)
- 26 Sep: re-checked every link against GitHub with `tools/verify_dashboard.py` (now run weekly by CI). PRs listed as open that had merged were moved to merged; PRs closed without merging were removed from the open list; PRs merged or opened since 12 July were added where they meet *How We Count*

### July 2026
* Full verification pass via the GitHub API: every merged PR now carries a direct link
* The April baseline was substantially undercounted. Link-level verification first established 88 merged PRs; follow-up verification raised the linked total to 96.
* Newly verified merges since the May report: Arowolo's first rust-payjoin PR (#1659), Mwihoti's first rust-payjoin PR (#1589), Peter's Bitcoin Core #34885 + kernel-node series, Psychemist's LDK #4293, Muhammad's rust-bitcoin/Floresta/bdk_wallet run, Razor's peer-observer #400 & #408, Chaitika's 17 shroud merges
* Attribution note added: PRs made before a developer joined Code Orange (e.g. Dayvvo's 2024 work) are marked with * and excluded from program-outcome claims
- Link-level verification: every merged PR carries a direct link. Pre-Code Orange PRs marked with *

### April 2026
* Dashboard created with baseline data from all cohort graduates
- Dashboard created

---

Expand All @@ -205,9 +162,9 @@ Four contributors below have verified GitHub handles and are included in the sum
* **Merged**: PR accepted by the project maintainer - *direct PR link required, no exceptions*
* **Open / Under Review**: PR submitted, not yet merged or closed
* We count: Bitcoin Core, rust-bitcoin, BDK, LDK, rust-payjoin, Floresta, peer-observer, wallets, Lightning/eCash infrastructure, and Bitcoin education repos (marked as such)
* We do NOT count: PRs to a developer's own repos or forks, or non-Bitcoin projects
* We do NOT count: PRs to a developer's own repos, orgs or forks (including PRs they merged themselves), or non-Bitcoin projects
* PRs made before a member joined Code Orange are listed with * and excluded from program-outcome claims

---

*Updated monthly. Code Orange Dev School | [codeorange.dev](https://codeorange.dev) | [github.com/code-orange-dev](https://github.com/code-orange-dev)*
*Code Orange Dev School | [codeorange.dev](https://codeorange.dev) | [github.com/code-orange-dev](https://github.com/code-orange-dev)*
21 changes: 19 additions & 2 deletions tools/verify_dashboard.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
python3 tools/verify_dashboard.py --out report.md

It checks, without changing README.md:
1. every PR in "Merged Pull Requests" is actually merged
1. every PR in "Merged Pull Requests" is actually merged, and was not
merged by its own author or into the author's own account
2. every PR in "Open / Under Review" is still open (flags merged -> move,
closed -> remove)
3. per-developer "- N merged" headers and the section total match the links
Expand Down Expand Up @@ -101,19 +102,27 @@ def parse(text):
return devs, merged, opened, int(header_total.group(1)) if header_total else None, handles


SELF_MERGED = set() # merged by their own author, or in the author's own account: not countable


def fetch_states(tok, prs):
prs = sorted(set(prs))
states = {}
for i in range(0, len(prs), 40):
chunk = prs[i:i + 40]
parts = [
f'p{j}: repository(owner: "{o}", name: "{r}") {{ pullRequest(number: {n}) {{ state mergedAt url }} }}'
f'p{j}: repository(owner: "{o}", name: "{r}") {{ owner {{ login }} pullRequest(number: {n}) {{ state mergedAt url author {{ login }} mergedBy {{ login }} }} }}'
for j, (o, r, n) in enumerate(chunk)
]
data = graphql(tok, "{ " + " ".join(parts) + " }")
for j, pr in enumerate(chunk):
node = (data.get(f"p{j}") or {}).get("pullRequest")
states[pr] = node["state"] if node else "NOT_FOUND"
repo = data.get(f"p{j}") or {}
if node and node.get("author") and node.get("mergedBy"):
author = node["author"]["login"].lower()
if author == node["mergedBy"]["login"].lower() or author == repo["owner"]["login"].lower():
SELF_MERGED.add(pr)
return states


Expand Down Expand Up @@ -158,6 +167,14 @@ def main():
out.append(f"- ❌ {n}: {fmt(pr)} is **{st}**, not merged")
problems += len(bad)

selfm = [(n, pr) for n, pr in merged if pr in SELF_MERGED]
if selfm:
out.append("")
out.append(f"## Self-merged or own-repo PRs in the merged section: {len(selfm)} (How We Count excludes these)")
for n, pr in selfm:
out.append(f"- ❌ {n}: {fmt(pr)}")
problems += len(selfm)

out += ["", "## Per-developer counts"]
recount = 0
for d in devs:
Expand Down
Loading