Ecosystem metrics

New Repos
16
New
Commits
746
down 20.0%
Releases
8
up 100.0%
Contributors
50
up 4.2%
Merges
16
down 65.2%

Repository Explorer

7074 commits in all time Jun 06, 2026 13:21 – Sep 04, 2026 13:21 UTC
nullun falcon
Merge c9b466b773e7c7116775876bf36971019da26579 into 956d9bc0ab8c503e0133259488cd8e0aedc0986d
Git Commit 6706ca9b Branch pull/19/merge Document 14/2,201 ++ 56 --
meetthosar devportal
Merge 02b4e9a81f9040aaa8746548efa85b22333d456f into 623f3c058154e12632360cbd84a2d3c0c078314e
Git Commit ac4e129d Branch pull/660/merge Document 3/1,013 ++ 0 --
meetthosar devportal
docs: add Intermezzo concepts and API reference pages
Git Commit 02b4e9a8 Branch additional-resources-intermezzo Document 3/1,013 ++ 0 --
nullun falcon
Reject malformed deterministic public key headers
falcon_det{1024,512}_pubkey_coeffs skipped the first byte of the key and
decoded the remaining bytes without ever looking at it, so a buffer whose
header byte is wrong (a key for a different logn, or bytes that are not a
Falcon public key at all) was unpacked as though it were valid, returning 0
and a coefficient vector that does not correspond to any det key. The
verify entry points do not have this gap: they go through falcon_verify,
which checks the header before touching the rest of the key. Check the
byte here the same way and return FALCON_ERR_FORMAT, which the header's
"non-zero error code if pubkey is invalid" contract already promises.
Git Commit 2d833e8c Branch pull/19/head Document 3/9 ++ 0 --
nullun falcon
Link only required deterministic variants
deterministic1024.o and deterministic512.o were in the shared OBJ list, so
every binary linked both, including test_falcon and speed, which use
neither, and each KAT driver, which uses only its own variant. Give each
test_deterministic<n> binary its own deterministic<n>.o prerequisite and
keep the generic objects in OBJ, so a binary pulls in only the variant it
exercises. The objects still have their own rules and "clean" still
removes them.
Git Commit c9b466b7 Branch pull/19/head Document 1/6 ++ 6 --
nullun falcon
Merge 03f7403ffd04de08a987a7eb591fdd9b633e8b32 into 956d9bc0ab8c503e0133259488cd8e0aedc0986d
Git Commit 8ff507ca Branch pull/18/merge Document 14/2,089 ++ 49 --
nullun falcon
Makefile: complete the deterministic*.o header prerequisites
deterministic{1024,512}.c include inner.h (and, through it, config.h
and fpr.h), but their object rules named only deterministic.h and
falcon.h, so an edit to e.g. FALCON_FPEMU in config.h left stale
deterministic objects in an incremental build. List the same headers
as the other object rules.
Git Commit ec165724 Branch pull/19/head Document 1/2 ++ 2 --
nullun falcon
deterministic.h: document the get_salt_version length precondition
falcon_det{1024,512}_get_salt_version take no length parameter and
read the signature's second byte unconditionally, unlike the other
entry points, which validate their input's length or take a fixed-size
format. Spell out the resulting >= 2 bytes precondition so callers
handling untrusted input know to check it (as the Go binding does).
Git Commit a8b7f19a Branch pull/19/head Document 1/3 ++ 1 --
nullun falcon
tests: avoid the zero-length VLA in the KAT drivers
test_inner declared its message buffer as uint8_t data[data_len], and
the KAT loop starts at data_len = 0; a zero-length variable-length
array is undefined behavior (C11 6.7.6.2p5) and trips
-fsanitize=vla-bound before the first KAT is checked. data_len is
bounded by NUM_KATS, so use a fixed-size buffer of that length.
Git Commit 91b6c15b Branch pull/19/head Document 2/8 ++ 2 --
nullun falcon
falcon.go: document and pin the inline cgo buffer arguments
The per-call-site "if len(b) == 0 { NULL } else { &b[0] }" branches
look like they should be a shared helper, but the duplication is
load-bearing: cgo enforces its pointer-passing rules against the
syntactic form of the call arguments, so an inline &b[0] is checked
against just the slice's backing array, while the same pointer
returned from a helper is resolved to its entire containing
allocation -- and panics when the caller's slice aliases a struct
that also holds Go pointers, exactly what TestPointerToPointer
constructs. Say so where the next reader would reach for the helper,
and add the det512 mirror of that regression test, which the copied
det512 bindings were missing.
Git Commit 58c12164 Branch pull/19/head Document 2/82 ++ 0 --
nullun falcon
tests: print the CT salt version in its failure diagnostic
The CT-format salt-version check compares vct but its error message
printed the stale v from the earlier compressed-format check, so a
failure would report the (correct) compressed version instead of the
offending CT one.
Git Commit e4cc12f8 Branch pull/19/head Document 2/2 ++ 2 --
nullun falcon
deterministic.c.tmpl: align hash_to_point_ct's temporary buffer
hash_to_point_coeffs declared its scratch space as a uint8_t array,
but Zf(hash_to_point_ct) documents that tmp[] must have 16-bit
alignment (it stores uint16_t through it). Declare the buffer as
uint16_t so the alignment holds by construction; on strict-alignment
targets the byte array was undefined behavior. No output change: the
KATs are unaffected.
Git Commit 39428b70 Branch pull/19/head Document 3/12 ++ 6 --
nullun falcon
deterministic.h: parenthesize the signature-size macros
FALCON_DET{1024,512}_SIG_COMPRESSED_MAXSIZE and _SIG_CT_SIZE expanded
to an unparenthesized "...-40+1", which miscomputes inside a larger
expression such as FALCON_DET512_SIG_CT_SIZE * 2. All existing uses
are value-unchanged.
Git Commit 34b3f3ef Branch pull/19/head Document 1/4 ++ 4 --
nullun falcon
Make deterministic source generation failure-safe
scripts/gen_deterministic.sh built each deterministic<n>.c with a single
pipeline redirected straight into the target. Under "set -e" a pipeline's
status is that of its last command, so a failing "cc -E" (a #error or syntax
error in the template) was masked by unexpand: the script exited 0 and
overwrote the target with whatever cpp had emitted, and because the Makefile
regenerates only when the template is newer, the broken file then counted as
up to date.

Run the stages one at a time into a private mktemp directory so every exit
status is seen, generate all requested files there before moving any into
place, and reject missing or non-numeric arguments up front. A failure now
leaves the existing sources untouched.

Installing with mv rather than redirection has its own edge cases, so tighten
those too. Reject n values with a leading zero and duplicate n, since either
would produce a staged file name that does not correspond one-to-one with the
requested targets. Refuse to run when a target path is a directory: mv would
otherwise place the generated file inside it and report success without
replacing the requested path. Finally install all staged files with a single
mv invocation; each replacement is still atomic because the staging directory
is on the destination filesystem.
Git Commit 03f7403f Branch pull/18/head Document 1/64 ++ 30 --
ipaleka frontend
Added forfeit destination from the chain and interface state function to the Dust Sweep
Git Commit 59d79578 Branch v1_0_0 Document 3/17 ++ 2 --
ipaleka frontend
Added forfeit destination from the chain and interface state function to the Dust Sweep
Git Commit 56b5d7a1 Branch v1_0_0 Document 3/17 ++ 2 --
ipaleka widgets
Added interface state function to the Dust Sweep, carrying the page context it must not lose
Git Commit 3f83e69a Branch main Document 7/688 ++ 170 --
ipaleka frontend
Added forfeit destination from the chain and interface state function to the Dust Sweep
Git Commit 3e42e8ab Branch v1_0_0 Document 3/17 ++ 2 --
Correct the drift timeline: it was not "three months" of public red (#45)
* Correct the drift timeline: it was not "three months" of public red

Four documents (README, AUDIT_READINESS, BLOCKERS, the follow-up workflow)
claimed the live-deployment check "failed in public for three months". Both
halves are false, and git says so:

  2026-06-16  committed contract diverges from deployed app 763809096
  2026-08-13  #12 rebuilds verify_deployment.py so it CAN fail
  2026-08-30  testnet-followup.yml lands; the drift goes red in public
  2026-09-03  closed by deploying 770964251 from the committed artifact

So the divergence was 79 days, not three months -- and for 58 of them
NOTHING DETECTED IT, because the verifier of the day hashed the deployed
program and compared it to the chain. The job that "failed in public" did
not exist until day 75; it was red for 4 days, not 90.

The honest account is worse for us and more useful to a reviewer: this
repo's flagship drift was missed for two months by a check that could not
fail -- the same defect class the project keeps finding. Claiming we left
it red on purpose for three months converted a detection failure into a
discipline story. It also would not have survived first contact with
anyone running `git log`.

Also corrects the guard docstring in
sdk/tests/test_reports_print_on_a_windows_console.py, which said the U+2194
line stayed invisible because "the happy path never touches it". The drift
branch DID run -- on Linux CI, where the stream is UTF-8 and the character
encodes fine. The uncovered case was never the failure path; it was the
failure path on a cp1252 stream.

And drops "which is the property the contract exists to demonstrate" from
the README: I5 is a control the contract enforces, not its purpose. The
contract exists to verify Falcon-1024 on-chain via falcon_verify.

Found by putting the draft write-up to the Apex Council for refutation
before publishing it, per the standing directive. 3 of 4 responding seats
refuted; the arithmetic objection was checkable and correct.

Verification (FALCON_DET1024_LIB set, TRELYAN_REQUIRE_KAT=1):
  sdk/tests  145 passed, 5 skipped
  drift banner + app-id partition + cp1252 guards  35 passed

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* Record that on-chain acceptance is NOT independent verification

AUDIT_READINESS lists the on-chain verifier (go-algorand's falcon_verify)
and the pinned signer source (algorand/falcon @ ce15e75b) as adjacent rows
and never states what follows from putting them together:

  go-algorand go.mod  -> github.com/algorand/falcon v0.1.0 -> ce15e75b
  this repo pins      -> algorand/falcon                      ce15e75b

They are the same C source at the same commit. So "the AVM verified our
signature" is a sign/verify round-trip inside ONE implementation, not
cross-implementation evidence -- and combined with the interop KAT being
unrunnable by construction (det1024 0xBA vs randomized 0x3A), NOTHING
currently checks these signatures against an independent Falcon.

Caught while adversarially reviewing a draft write-up that claimed the AVM
was "a different implementation accepting our bytes". No shipped document
made that claim, so this commit adds no retraction -- it adds the caveat
that stops the claim being made, by us or by a reader reading two rows of
a table in the natural order.

The pin itself is correct and must not be bumped: matching what the chain
runs is the entire point. The defect was leaving the consequence unwritten.

Security impact: documentation only, no code path changes. The caveat
WEAKENS a claim an auditor could otherwise have inferred from this file.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Git Commit f8ae52ce Branch main Document 5/44 ++ 17 --
Record that on-chain acceptance is NOT independent verification
AUDIT_READINESS lists the on-chain verifier (go-algorand's falcon_verify)
and the pinned signer source (algorand/falcon @ ce15e75b) as adjacent rows
and never states what follows from putting them together:

  go-algorand go.mod  -> github.com/algorand/falcon v0.1.0 -> ce15e75b
  this repo pins      -> algorand/falcon                      ce15e75b

They are the same C source at the same commit. So "the AVM verified our
signature" is a sign/verify round-trip inside ONE implementation, not
cross-implementation evidence -- and combined with the interop KAT being
unrunnable by construction (det1024 0xBA vs randomized 0x3A), NOTHING
currently checks these signatures against an independent Falcon.

Caught while adversarially reviewing a draft write-up that claimed the AVM
was "a different implementation accepting our bytes". No shipped document
made that claim, so this commit adds no retraction -- it adds the caveat
that stops the claim being made, by us or by a reader reading two rows of
a table in the natural order.

The pin itself is correct and must not be bumped: matching what the chain
runs is the entire point. The defect was leaving the consequence unwritten.

Security impact: documentation only, no code path changes. The caveat
WEAKENS a claim an auditor could otherwise have inferred from this file.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Git Commit 52668c7b Branch fix/drift-timeline-was-overstated Document 1/12 ++ 0 --
Correct the drift timeline: it was not "three months" of public red
Four documents (README, AUDIT_READINESS, BLOCKERS, the follow-up workflow)
claimed the live-deployment check "failed in public for three months". Both
halves are false, and git says so:

  2026-06-16  committed contract diverges from deployed app 763809096
  2026-08-13  #12 rebuilds verify_deployment.py so it CAN fail
  2026-08-30  testnet-followup.yml lands; the drift goes red in public
  2026-09-03  closed by deploying 770964251 from the committed artifact

So the divergence was 79 days, not three months -- and for 58 of them
NOTHING DETECTED IT, because the verifier of the day hashed the deployed
program and compared it to the chain. The job that "failed in public" did
not exist until day 75; it was red for 4 days, not 90.

The honest account is worse for us and more useful to a reviewer: this
repo's flagship drift was missed for two months by a check that could not
fail -- the same defect class the project keeps finding. Claiming we left
it red on purpose for three months converted a detection failure into a
discipline story. It also would not have survived first contact with
anyone running `git log`.

Also corrects the guard docstring in
sdk/tests/test_reports_print_on_a_windows_console.py, which said the U+2194
line stayed invisible because "the happy path never touches it". The drift
branch DID run -- on Linux CI, where the stream is UTF-8 and the character
encodes fine. The uncovered case was never the failure path; it was the
failure path on a cp1252 stream.

And drops "which is the property the contract exists to demonstrate" from
the README: I5 is a control the contract enforces, not its purpose. The
contract exists to verify Falcon-1024 on-chain via falcon_verify.

Found by putting the draft write-up to the Apex Council for refutation
before publishing it, per the standing directive. 3 of 4 responding seats
refuted; the arithmetic objection was checkable and correct.

Verification (FALCON_DET1024_LIB set, TRELYAN_REQUIRE_KAT=1):
  sdk/tests  145 passed, 5 skipped
  drift banner + app-id partition + cp1252 guards  35 passed

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Git Commit cfd83f5c Branch fix/drift-timeline-was-overstated Document 5/32 ++ 17 --
Merge pull request #44 from brandonjsellam-Releone/fix/drift-banner-crashes-on-windows-consoles
Drift banner crashed a Windows console, downgrading exit 1 (DRIFT) to exit 2 (could not check)
Git Commit 325bc70a Branch main Document 2/85 ++ 1 --
Merge a59598ec20ea3d717f5c4ba3410d7a6d368f7247 into dd7be47db270b641b07a8abb0bb3995360a8e34f
Git Commit b1515d45 Branch pull/912/merge Document 1/1 ++ 1 --
Merge 732f2cd77e2d1484fb00da389b267741482d2c6c into dd7be47db270b641b07a8abb0bb3995360a8e34f
Git Commit 11a37522 Branch pull/913/merge Document 1/1 ++ 1 --