Ecosystem metrics

New Repos
18
New
Commits
567
up 16.7%
Releases
2
down 71.4%
Contributors
48
up 4.3%
Merges
15
up 15.4%

Repository Explorer

7268 commits in all time Jun 19, 2026 19:13 – Sep 17, 2026 19:13 UTC
daniel-makerx puya
Merge 95058493bfc42720e6a3d2c07ea26dc78806cd4e into 27751c364229ae3cd0334fe4071e61690b6879e4
Git Commit 55b227e8 Branch pull/740/merge Document 300/48,477 ++ 28,072 --
Argimirodelpozo puya
chore: compile all
Git Commit 95058493 Branch sink-single-use-pure-op Document 222/13,058 ++ 13,209 --
cce go-algorand
Merge 24a2776119bb6f0081ef667e3db01f0ba6af8a7b into 8cd5eb5f667c01ca6812e4d2f82930a793e23b18
Git Commit 1adbc6e3 Branch pull/6740/merge Document 10/349 ++ 70 --
cce go-algorand
codecov: ignore what the measurement leaves out
scripts/coverpkg.sh decides which packages are instrumented and
.codecov.yml decides which files are counted. The two had nothing in
common: the command line programs, the build and debug tools, the e2e
tree and the test-support packages were dropped from measurement without
being mentioned here, so 158 files and 18,273 lines went quietly
uncounted rather than deliberately excluded.

List them, so the two descriptions of one decision sit together. This
changes no numbers -- Codecov never saw those files -- it only makes the
exclusion legible, and gives the next person something to change when the
measured set changes.

Two measured packages still go uncounted: no test binary links daemon/kmd
or netdeploy/remote/nodecfg, so they produce no coverage data and covdata
has nothing to emit for them. That is 431 lines, all uncovered, worth
0.4pp on the total.
Git Commit 24a27761 Branch pull/6740/merge^2 Document 1/21 ++ 0 --
cce go-algorand
ci: do not let ordinary comments cancel a coverage run
Concurrency is evaluated per workflow run, before the job conditions that
check for /coverage and the commenter, so any comment on the pull request
joined the group and cancelled a run in progress while starting nothing
in its place. Key the group on the run id unless the comment is a request
the authorize job would accept -- including the author check, or anyone
at all could cancel a run by typing /coverage.

Check out the commit resolved during authorization rather than
refs/pull/N/head. That ref moves, so a push while the partitions were
queued could leave them testing different commits from each other and
from the one the upload is attributed to.
Git Commit cbfbdbd6 Branch pull/6740/merge^2 Document 1/12 ++ 3 --
ipaleka frontend
Bugfix for the error in the deferring images routine
Git Commit 50c7a99a Branch main Document 11/233 ++ 14 --
Argimirodelpozo puya
fix: add allow-list of unconditionally movable txn and global fields for correctness + small refactor to simplify iteration
Git Commit b9282413 Branch sink-single-use-pure-op Document 1/143 ++ 61 --
cce go-algorand
codecov: rename the coverage flag to unit, and stop measuring it in ci-pr
Coverage is now always measured across every package, so "full" no longer
distinguishes it from anything. Name the flag after what produced it,
leaving room for an e2e flag beside it later.

Starting a new flag also leaves the old series alone rather than erasing
it: once this is on master, push builds fill the new one with reports
that are measured correctly, and comparisons are right from then on.

Drop the workflow_dispatch input along with it. It ran against a ref
rather than a pull request, so its upload could never be attached to one,
and dispatching ci-pr.yml pulled the whole integration and e2e suite
along to reach the one job that measured anything. Commenting /coverage
does that job properly, so ci-pr.yml no longer deals with coverage at all.
Git Commit 7c0cba3a Branch pull/6740/head Document 3/2 ++ 26 --
cce go-algorand
Merge 8c52c11cfbc1b38f02f1a956335d19bef09ce861 into 8cd5eb5f667c01ca6812e4d2f82930a793e23b18
Git Commit eb9ca75a Branch pull/6740/merge Document 10/328 ++ 55 --
cce go-algorand
ci: share the unit test steps between the coverage workflows
pr-coverage.yml repeated the test invocation and coverage plumbing that
ci-pr.yml and ci-nightly.yml already had. Move it into a composite action
alongside setup-go and setup-test, parameterised by what actually differs
between the three: -short, -p, where test results go, and whether
coverage is measured.

Nightly now measures coverage only on ubuntu-24.04. The other two
platforms were paying for instrumentation whose output was never
uploaded.

Also shorten the comments added along with these workflows.
Git Commit 8c52c11c Branch pull/6740/head Document 7/117 ++ 132 --
cce go-algorand
codecov: report coverage of the change, not of the repository
Project coverage is the least trustworthy number in the comment: it
compares against whichever commit last had an upload, and moves with the
file set as readily as with the tests. Hide it and report patch coverage.

Add components for the subsystems reviews are drawn around, so a ledger
change is measured against ledger rather than against go-algorand.

Wait for every partition before commenting, so a comment is never written
from part of a run. Only pull requests are commented on, so push builds,
which upload two reports rather than six, are unaffected.
Git Commit 6effb081 Branch pull/6740/head Document 1/25 ++ 6 --
cce go-algorand
ci: add "/coverage" on-demand full coverage for pull requests
PR builds no longer measure coverage, so nothing reports the coverage of
a change before it merges. Add a workflow that does it on request:
commenting "/coverage" on a pull request runs the full -coverpkg suite
against its head and uploads the result to Codecov attached to that pull
request, where it can be compared against the baseline the push build
publishes for the merge base.

The run is measured the same way as the push build -- same tags, -race,
no -short, CIRCLECI set -- so the two are comparable. Only the
partitioning differs, 6 runners instead of 2, which changes how tests are
spread but not which of them run.

Codecov is given the head commit, branch and pull request number
explicitly. issue_comment workflows run with the default branch checked
out, so an upload left to infer its own context would be attributed to
master and would overwrite the baseline. A fork's branch is named
"owner:branch", matching Codecov's convention.

Only OWNER, MEMBER and COLLABORATOR comments trigger it, since it builds
and runs the pull request's code. The workflow itself always runs from
the default branch, so a pull request cannot change what it does, and the
job that checks the branch out holds only contents:read and no secrets;
the write permission needed to acknowledge and report lives in separate
jobs that never check out the branch.

Extract the -coverpkg package list to scripts/coverpkg.sh rather than
adding a fourth copy of it; the Makefile and both existing workflows now
use it too. Verified to produce the same 112 packages as the pipeline it
replaces.

Move the coverage uploads to codecov-action@v7, which replaces "file"
with "files", and drop scripts/travis/upload_coverage.sh, which nothing
has referenced since CircleCI went away.
Git Commit cad7383a Branch pull/6740/head Document 6/205 ++ 17 --
cce go-algorand
ci: only upload coverage from full-coverage runs
ci-nightly.yml is the push-to-master job and already measures coverage
with -coverpkg across all go-algorand packages. ci-pr.yml measured it
without -coverpkg -- counting only the lines each package's own tests
exercise -- and uploaded that too. Both kinds of report end up attached to
commits in master's history, so the coverage Codecov reports for a master
commit depends on which workflow happened to upload for it. Adjacent
commits alternate between ~47.9% (639 files, 6 sessions, PR runs) and
~63.8% (481 files, 2 sessions, push runs):

    8cd5eb5f6  63.78%  481 files  2 sessions
    288e1997e  47.90%  639 files  6 sessions
    e8559cc9a  63.82%  481 files  2 sessions
    7b9cb4d53  47.86%  639 files  6 sessions
    3f8045596  63.83%  481 files  2 sessions

A PR's project-coverage delta was therefore decided mostly by which
regime its merge base happened to land in, roughly 16 points of noise
with nothing to do with the change under review.

Stop collecting and uploading coverage on PR runs unless the workflow was
dispatched with full_coverage, so every report Codecov holds is measured
the same way. Ordinary PR runs no longer pay for coverage instrumentation
at all.

Also drop flags.full_coverage.joined, which was meant to keep these
reports out of the project total but did not: on push commits the
full_coverage upload is the only session, so it became the total anyway.
Git Commit 24387b42 Branch pull/6740/head Document 2/24 ++ 13 --
cce go-algorand
ci: merge raw coverage data with "go tool covdata" instead of -coverprofile
When -coverpkg is set, "go test -coverprofile" writes each instrumented
block once per test binary that links the package, and does not combine
them. "go tool cover" sums the duplicates and reads such a profile
correctly, but consumers that take the first or last occurrence instead do
not: on a two-binary run of ./config ./protocol the same profile reads as
58.8% (summed), 49.60% (last-wins) or 11.04% (first-wins).

Codecov appears to be one of those consumers. Comparing the nightly
full-coverage report against the cheaper PR report on adjacent master
commits, 118 of 373 comparable files report *lower* coverage under
-coverpkg, which attribution alone cannot cause: the nightly run executes
a superset of the PR run's tests. Individual files collapse while their
siblings in the same package are untouched --
data/transactions/logic/sourcemap.go 100% -> 0%,
ledger/eval/txntracer.go 92.85% -> 0%, util/metrics/prometheus.go
78.12% -> 0%.

Collect raw coverage data instead ("go test -cover ... -args
-test.gocoverdir=DIR") and merge it with "go tool covdata", which emits
each block exactly once with counts summed across every test binary that
exercised it. Across the whole repository that is 49,425 blocks with no
duplicates, and costs about 1.3s (20MB raw -> 644KB merged -> 3.7MB
profile).

The merge runs as its own step guarded by !cancelled(), matching the
upload step, so a failed test run still uploads the partial coverage it
produced.

One reporting change is not a correction: -coverprofile synthesized 0%
entries for packages that no test binary links, and covdata does not.
That drops daemon/kmd, netdeploy/remote/nodecfg and
ledger/store/trackerdb/testsuite -- 3 files, 431 lines, all at 0% --
raising the reported figure by 0.40pp for denominator reasons alone.

Also reference tool.mod by an absolute path in GOTESTCOMMAND so that
"make cover PACKAGE=X", which cds into the package directory, can find
it; that target has been failing with "go: open tool.mod: no such file or
directory" since it was added.
Git Commit c56914ad Branch pull/6740/head Document 5/77 ++ 7 --
wjbeau connect
chore: switch to beta version (#215)
Git Commit 08f19f9a Branch main Document 1/1 ++ 1 --
wjbeau connect
chore: restore prepare script
Git Commit 517b8d17 Branch pull/215/head Document 1/1 ++ 0 --
wjbeau connect
chore: switch to beta version
Git Commit eea7890d Branch pull/215/head Document 1/1 ++ 2 --
wjbeau connect
fix: make algod configurable (#214)
Git Commit 6439925c Branch main Document 17/480 ++ 48 --
ipaleka frontend
Bugfix for the error in the deferring images routine
Git Commit 9d774277 Branch main Document 9/203 ++ 12 --
wjbeau connect
Merge 46d23283c2b60da2b1d69d2ec027cfb98c539eee into 9240f6512eaccdd60e09c0ce1aba0dd79c3b420a
Git Commit 9088077a Branch pull/214/merge Document 17/480 ++ 48 --
wjbeau connect
fix: make algod configurable
Git Commit 46d23283 Branch wjbeau/algod-override Document 17/480 ++ 48 --
yasin-ce connect
Merge 520de62bdc69229acbc3339a23a30e5e54c5e8d4 into 9240f6512eaccdd60e09c0ce1aba0dd79c3b420a
Git Commit e3f6eaf7 Branch pull/208/merge Document 2/77 ++ 1 --
meetthosar devportal
Merge e389bbd94d6ca2d2cb5117b9dd343479442f9104 into f599fe0b55ab4b2607da0e126e1c0209daed2f80
Git Commit ba80593a Branch pull/667/merge Document 1/15 ++ 0 --