Activity Overview

Commits and releases over time

  • Commits
  • Releases
  • Authors

Repository Explorer

861 commits in all time Jun 19, 2026 18:47 – Sep 17, 2026 18:47 UTC
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 --
cusma go-algorand
Merge 57d5c726730ace182448e6184dd4e4c77d154632 into 97bdf0982deb424da8844999570f47251c2f7873
Git Commit 23377225 Branch pull/6738/merge Document 21/764 ++ 196 --
cusma go-algorand
chore: nit
Git Commit 57d5c726 Branch ed-scheme-support Document 1/17 ++ 15 --
cusma go-algorand
Merge d150a86d61926f70c1794fdf4d31d615e2672477 into 97bdf0982deb424da8844999570f47251c2f7873
Git Commit 29f27fb1 Branch pull/6738/merge Document 21/761 ++ 195 --
cusma go-algorand
chore: cr by @jannotti
Git Commit d150a86d Branch ed-scheme-support Document 3/8 ++ 17 --
cusma go-algorand
Merge 0a29759b41288dd7b7713ca4282a1c7140e01db7 into 97bdf0982deb424da8844999570f47251c2f7873
Git Commit 5abea7bc Branch pull/6738/merge Document 21/765 ++ 190 --
cusma go-algorand
e2e: exercise ed scheme account end to end
Git Commit 0a29759b Branch ed-scheme-support Document 1/35 ++ 3 --
cusma go-algorand
algokey: support ed scheme in pq commands
Git Commit 0ccab545 Branch ed-scheme-support Document 3/189 ++ 81 --
cusma go-algorand
test: ed scheme
Git Commit dcbd465d Branch ed-scheme-support Document 7/171 ++ 137 --
cusma go-algorand
chore: rename FalconSigner to PQSigner
Git Commit c17389a4 Branch ed-scheme-support Document 4/12 ++ 13 --
cusma go-algorand
crypto: batched pqsig (ed scheme only)
Git Commit f515d18c Branch ed-scheme-support Document 7/333 ++ 11 --
cusma go-algorand
config: gate and price the ed scheme
Git Commit a3aece12 Branch ed-scheme-support Document 2/19 ++ 3 --
cusma go-algorand
crypto: add the ed scheme verifier
Git Commit b7ecb5bb Branch ed-scheme-support Document 3/72 ++ 12 --
cusma go-algorand
protocol: add the ed (Ed25519) authorization scheme tag
Git Commit 7b27a494 Branch ed-scheme-support Document 2/8 ++ 4 --
Merge b6e36d117a6e3f005b6b4061d73fef98b07ea0f1 into 8cd5eb5f667c01ca6812e4d2f82930a793e23b18
Git Commit 97d1e089 Branch pull/6735/merge Document 16/650 ++ 504 --
jannotti go-algorand
Merge 399f42e843f89c8b55fc335f58f8f8d69981c24c into 8cd5eb5f667c01ca6812e4d2f82930a793e23b18
Git Commit 7eb55975 Branch pull/6707/merge Document 17/2,342 ++ 60 --
vividvisit go-algorand
Merge 01ad2e0a03d0f6935a732397654025462e08b597 into 8cd5eb5f667c01ca6812e4d2f82930a793e23b18
Git Commit cfe562ca Branch pull/6730/merge Document 1/3 ++ 3 --
Merge 8401ac78d9272865345a33c229c211611ade765b into 8cd5eb5f667c01ca6812e4d2f82930a793e23b18
Git Commit 243faa3f Branch pull/6733/merge Document 2/40 ++ 25 --