Ecosystem metrics

New Repos
1,889
New
Commits
272
down 13.1%
Releases
10
up 25.0%
Contributors
36
down 25.0%
Merges
10
up 66.7%

Repository Explorer

3139 commits in all time May 23, 2026 13:35 – Aug 21, 2026 13:35 UTC
tasosbit gGov
perf: pipeline: stage 3 computes concurrently, ingests serially
Stage 3 ran one source at a time, so three multi-minute Indexer window
scans summed instead of overlapping. Splitting it by what each half is
allowed to do lets the reads overlap while the writes stay ordered:

- compute (ledger precheck, window scan, replay, manifest assembly) now
  runs concurrently across sources
- ingest stays strictly serial across sources AND instances. uploadAqFile
  derives box names from account ids the frac *registry* allocates as it
  goes, and that counter is registry-wide, so two instances ingesting at
  once would predict the same ids and all but the first would fail with an
  invalid box reference - the same reason the SDK refuses to parallelize
  the batches within one upload.

Compute returns its per-source outcomes rather than pushing onto the run
context, so the report still reads the same on every run (pMap answers in
input order).

Also, on the same path:
- per-instance ledger prechecks fan out; a multi-instance source (reti runs
  one per validator) spent a serial round trip per instance before any scan
- plugins are built once per run and shared by stages 1 and 3; reti was
  resolving every validator's pools twice
- the manifest genesis hash is read once per run, not once per instance
- stage/phase timings behind the debug flag, so this is measurable at all
Git Commit 33038ca8 Branch chore/pipeline-parallelization Document 1/262 ++ 109 --
Merge c409aa1a99a13bf45312429674f6468edce9e02d into b4ca42f9d605dbb9136f99ac09d5f365fc684a68
Git Commit 2277b6c6 Branch pull/1112/merge Document 1/3 ++ 3 --
mitre88 js-algorand-sdk
Merge 115a4339700aac92ced229b717798f998dd0210e into b4ca42f9d605dbb9136f99ac09d5f365fc684a68
Git Commit 6d495db0 Branch pull/1130/merge Document 2/85 ++ 0 --
iglosiggio go-algorand-sdk
fix: Wrong code on PQAccountTransactionSigner#Equals
Git Commit b4b51f91 Branch pqsig-support Document 1/1 ++ 1 --
Controls pre-registration DRAFT (team-designed, numbers-blind) - not in force
Six-seat zuss (8/9 seats), written under the blindness clause of
PREREG_v41-release-replicate.md 3a(3): methodology only, no session
values. Majority locks Option (a) - crop-shape is NOT part of the
synthetic-control hypothesis, because a synthetic crop null cannot
calibrate or gate the Falcon crop/SHAPE path (non-transfer); the interim
raw-line ruling becomes permanent under it. The minority Option (b) draft
(matched synthetic null family + planted-shape positive control with a
numeric fire condition) is kept in full with the founder decision
criterion, because the split is real. Takes force only as a dated
pre-registration after the release-replicate decision, in the ruled order.

Security Impact: document only, explicitly not in force; no rule changes
until adopted.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Git Commit f03ea3ef Branch feat/vendor-falcon-det1024 Document 1/329 ++ 0 --
Merge 395851bcff8e07d8472dcc8f00e85cb468b06d69 into c74ce198f0e0fc7e29734275cbff04efc023b1de
Git Commit fe55f3d8 Branch undefined Document 2/35 ++ 35 --
falcon-ct: interim controls ruling (synthetic controls judged raw-only) + pre-register the release replicate
Implements the dated interim ruling from the six-seat review of the v4.1
validation session: synthetic controls (control-flat, control-leaky) are
judged on the raw |t| >= 4.5 line ONLY via the new judge_raw_only — the
crop diagnostic does not run for them (crop_empirical_p = None), because a
synthetic loop and the real signing operation do not share a crop null and
judging one against the other is a mismatched reference. Observed live in
the quarantined session: the flat control read "Shape" at raw t = 2.99
against the null-ss bank and flipped controls to NOT OK. The regression
test pins exactly that shape: a flat series whose crop would fire against
a tight real-op bank must still Pass, the leaky control must still Fail on
the raw line, short samples stay INCONCLUSIVE. Whether a crop-shape
control validation returns later — with its own synthetic reference family
AND a synthetic-shape positive control with a numeric fire condition — is
left to its own pre-registration, per the apex ruling that left (a)-vs-(b)
genuinely open. READING_GUIDE documents the ruling in the artifact itself.

Also: PREREG_v41-release-replicate.md — the release-harness replicate
pre-registered BEFORE it can even be built (App Control still blocks fresh
release exes; founder decision pending). One reading (null_raw_t_sd, the
committed bands, registered as a low-information point-estimate call per
review F4), explicit non-readings (no v3.1 re-judgment — that needs a
matched-count 82k bank; banks frozen but unused until the controls pre-reg
and a specified §6.1 exist), and a deviation rule that makes any off-spec
run exploratory with the bands not applied — this morning's lesson,
written down.

V4_BACKLOG §A sweep: A1-A8 verified all closed by the v4/v4.1 work (A1
empty-null fail-closed with the CI session documented in judge_v2; A2
aa_verdict/aa_ok in Controls; A3 READING_GUIDE covers sign-aa; A4 sign-kk
description corrected; A5 no "flat-control null" comments remain; A6
null_reason serialized; A7 per-session null logging; A8 fold_null).

Gates: cargo fmt, clippy pedantic+nursery -D warnings clean, 24 tests
green in falcon-ct (15 lib + 9 bin).

Security Impact: measurement harness only; no crypto code. The change
NARROWS what a control verdict may be based on (raw line only) and cannot
lift any session verdict; the flat control can now block a session only
for a genuine raw-line environment failure. To re-verify: the release
replicate runs under the committed pre-registration once the harness
decision lands.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Git Commit 6df69990 Branch feat/vendor-falcon-det1024 Document 3/176 ++ 12 --
Merge 218e146754117cbafa68eecbd6ca09fe9031c33c into 4bb8bde04aa890c23cdd067bd167c1f0375a632d
Git Commit ce1d295d Branch pull/318/merge Document 35/4,739 ++ 2,177 --
Merge 0fd9f09ff3b88deb954eaa63c04f1689371612b9 into c74ce198f0e0fc7e29734275cbff04efc023b1de
Git Commit d3957732 Branch undefined Document 1/25 ++ 34 --
pbennett reti
fix(ui): recover pool global state the bulk read didn't carry
Moving pool state to a single accountInformation read on the registry left two
gaps where a pool the bulk request missed stayed missed.

`processPoolData` fell back on the presence of the entry, not on what it held. A
pool whose state came back partial decodes to `{}`, which is truthy, so it kept
the empty entry and returned no lastPayout - which the Status column renders as
"Payouts stopped".

`algodVer` lost its fallback entirely. It came off LocalPoolInfo, and
StakingPoolInfo now reads it only from the bulk map; the per-pool read inside the
metrics query keeps lastPayout and discards the algodVer it fetched. Any pool the
map lacks reported its node version as "--" for the rest of the session.

Both now gate on `isPoolGlobalStateComplete`. It tests lastPayout rather than the
field being displayed, because lastPayout is written when the pool is created -
stakingPool.algo.ts sets it to the creation round as the first epoch's baseline -
so every pool has one and its absence can only mean an incomplete read. Gating on
algodVer instead would have been wrong: it is only written once the node daemon
reports in, and 88 of MainNet's 283 pools legitimately have none, so keying on it
would re-read a third of all pools on every visit and still show "--".

The 1020 fixture claimed a missing lastPayout stood for "a pool that has never
paid out", which the contract does not do. It now models the case that does
occur - a pool whose daemon has never reported, so no algodVer - and the tests
around it cover the fallback firing on an incomplete entry and staying put on a
complete one.
Git Commit 8e278262 Branch dev Document 5/98 ++ 14 --
tasosbit gGov
Merge branch 'feat/frac-pipeline-plugins' into feat/ui-pooled-voting-pools
Conflict in frac-delegation-sdk/src/registry/sdkReader.ts (imports only):
the incoming dual ESM/CJS build rewrote relative specifiers to carry .js,
while this branch added a FracInstanceCommitteeStanding type import for
getInstanceCommitteeStandings. Kept both — .js specifiers throughout,
including the new type import.
Git Commit 2071a12a Branch feat/ui-pooled-voting-detail Document 65/13,524 ++ 292 --
JBScaled algokit-utils-py
Merge pull request #326 from algorandfoundation/feat/docs-transactions
Docs: Add Transaction concepts page and examples
Git Commit 1fd84473 Branch docs-staging Document 8/721 ++ 655 --
gabrielkuettel devportal
Merge 18a70a47bf97290139d93a16a32a85c5de565170 into 2cd175e0f03d678500f57d454d1d11f789b996f3
Git Commit 3944e020 Branch undefined Document 300/236,193 ++ 98,876 --
tasosbit gGov
feat: pooled voting pools index, on one registry read
The /pools/$committeeId page from the design: how much of a committee's voting
power sits in staking pools and which pools those are, ranked, with the
AlgoQuarters behind each pool's power and how much of that stake voted. The
committee is the route rather than component state, so a composition is
linkable and shareable; /pools redirects to the current window. Retires the
stub href on the committee detail card, and lifts that card's composition bar
into a component the two share.

Serving it the way the card already did would have cost 373 algod requests
against a 62-instance registry: getExistingInstances is a box-map read plus an
existence lookup per instance, then a snapshot read per instance, then an
AlgoQuarters read per instance. So the registry now answers the whole question
itself.

logInstanceCommittees pages over its own instance ID range - dense, since
lastInstanceNumId only increments and instances boxes are never removed - and
inner-calls each instance's new getCommitteeStanding, which joins the committee
snapshot with its AlgoQuarters ledger where both boxes already are. That join
has to happen on the instance: committeeAq is keyed by the numeric ID only the
snapshot yields, so an outside caller cannot start the second read until the
first lands. Deleted instance apps are skipped on chain via app_params_get
rather than failing the page, which is what removes the per-instance existence
lookup the SDK was doing. An instance that never synced the committee is
reported with committeeNumId 0 rather than dropped, so absence stays provable.
373 requests become 2.

getInstanceCommittee is the singular counterpart, and the reason the struct
lands in the registry's ARC-56 - SDKs decode the log payload from generated
types instead of a hand-maintained copy, the same arrangement
logAccountVotingRecords already has. Page size is 32, from the same
unnamed-reference accounting as the existing paged log readers.

Two figures on the page are honest approximations of what the design asked
for. The liquid-vs-Reti filter reads the instance name, because FracInstance
records no kind; it is only offered when both buckets are populated and carries
a TODO for the contract-side fix. Turnout is AlgoQuarters-weighted - the share
of a pool's stake that cast an internal ballot in the newest period the
committee has opened - because a member-count percentage would need a read per
member.

The e2e spec added here has not run. Every contracts e2e spec currently dies in
algokit's composer with "Not an address", on an untouched checkout as much as
on this branch. scripts/verify-instance-committees.ts covers the same ground
with no vitest in the way, and passes against LocalNet.
Git Commit 87575f5d Branch feat/ui-pooled-voting-detail Document 31/16,680 ++ 6,578 --
tasosbit gGov
feat: pooled voting section on committee detail
Reads each pool's stake in the committee from the frac registry:
getExistingInstances for the pool names and rosters, then that instance's
synced snapshot of the committee for its gGov power. These are a pool's own
power, which is exact, so they carry no approximation marker - unlike a
member's floor-split share of it.

Every figure loads on its own dependencies rather than behind one card-level
gate, and the section goes dark entirely on a network with no frac registry.
The View pools link is a stub href until the pools route exists.

Also reflows the members leaderboard below sm: the share column had a 120px
minimum that left the account column ~46px, clipping addresses on mobile. The
bar now sits inline under the account name, matching the design.
Git Commit dbd9102d Branch chore/pipeline-parallelization Document 5/440 ++ 15 --
meetthosar devportal
Merge 756d70e2255968f9a8ea31159eed45218cae235e into 18a70a47bf97290139d93a16a32a85c5de565170
Git Commit 8cd90707 Branch pull/639/merge Document 5/188 ++ 13 --
meetthosar devportal
docs: add app params fields 11-12 and index column for app_params_set
Git Commit 02ed98c0 Branch feat/box-family-read-write Document 1/9 ++ 5 --
tasosbit gGov
chore: snapshots 64M + xALGO escrow cache from full run
Git Commit 276da9a8 Branch feat/frac-pipeline-plugins Document 3/52,106 ++ 0 --
mitre88 go-algorand-sdk
Add no-op checkSetAllocBounds to sync consensus init with go-algorand
Restores the allocation-bounds loop in init() and
SetConfigurableConsensusProtocols by providing the
checkSetAllocBounds function the SDK previously lacked.
Addresses algorand/go-algorand-sdk#757.
Git Commit f426c749 Branch pull/841/head Document 2/12 ++ 4 --
Merge ef6a35b7ceb77c500aa7b2dd1560d15600f35255 into 100dc5fa507537fffa496e22706c3a6c1e9bca2a
Git Commit d3b1b4e7 Branch pull/600/merge Document 3/81 ++ 7 --
ci: refresh npm audit exclusions/overrides for current advisories
Unblock node-ci by aligning .nsprc and dependency overrides with the
current better-npm-audit DB (including nanoid 1139427). Dev-only paths
only; no runtime package changes. Keeps composer duplicate-txn feature.
Git Commit ef6a35b7 Branch pull/600/head Document 3/81 ++ 7 --
Merge 991c77b886ea0c88c469cf8c56e44f7ac117a008 into dd6de88fbe0e01cb913142453c858b98cecdf97c
Git Commit dc63a625 Branch pull/6687/merge Document 2/12 ++ 12 --
cce go-algorand
Merge 4fb7d5a74e855225413c33831502e171122cbad8 into dd6de88fbe0e01cb913142453c858b98cecdf97c
Git Commit 0c705c7e Branch pull/6659/merge Document 13/2,549 ++ 168 --
tasosbit js-algorand-sdk
Merge 860777d5dcba1c032367b69e69e51fece4b146b6 into f2f2b022b4c334d4df8ae25307fe7adf740dfa35
Git Commit 91fa49e6 Branch pull/1105/merge Document 2/58 ++ 9 --