Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1539 commits
Select commit Hold shift + click to select a range
4d86ba5
leios: Update goldens (rm -rf ouroboros-consensus-cardano/golden/*)
bladyjoker Apr 16, 2026
bcc755a
leios: Bump cardano-ledger to use backward compatible encoding
bladyjoker Apr 16, 2026
84993c7
leios: ForgeBlockArgs for my own sanity
bladyjoker Apr 17, 2026
b622869
leios: Removes PraosHeader BodyType and intro EbAnnouncement (with size)
bladyjoker Apr 21, 2026
8e7f09c
leios: Backwards compat Praos Headers
bladyjoker Apr 21, 2026
4251494
leios: Update goldens
bladyjoker Apr 21, 2026
2510ab2
leios: Keeps forgeType machinery for now with rationale
bladyjoker Apr 21, 2026
1e7c387
leios: Apply fourmoulu
bladyjoker Apr 21, 2026
85aafd4
leios: fix: EB only diffused if announced in forge
bladyjoker Apr 22, 2026
45a0738
leios: Update goldens
bladyjoker Apr 24, 2026
7f4b3c3
leios: Reintroduce Shelley goldens
bladyjoker Apr 24, 2026
0dac445
leios: Backwards compatible Praos Header (and Ledger Block)
bladyjoker Apr 24, 2026
0a198f0
Change BEGIN IMMEDIATE -> BEGIN
ch1bo Apr 27, 2026
2631a1c
Fix performance issues of sqlite insert txs
ch1bo Apr 27, 2026
954488f
Fix Sqlite performance issues (#2012)
ch1bo Apr 27, 2026
83999b4
[Leios prototype] Migrate EB announcement to Praos header (#1978)
bladyjoker Apr 27, 2026
2aeb3e6
leios: Extend the ConwayMeasure with maxTxsPerEb
bladyjoker Apr 27, 2026
15c4361
leios: Fix the minEbItemBytesSize calc
bladyjoker Apr 27, 2026
9791ddc
leios: Certificate with an embedded LeiosPoint (useful to have hashes…
bladyjoker Apr 27, 2026
07fa5c0
leios: Remove dup leiosDbQueryCertificateByPoint
bladyjoker Apr 29, 2026
cd99451
leios: Small compilation fixes
bladyjoker Apr 29, 2026
46f3ab1
leios: Fix handling of minCertificationGap
bladyjoker Apr 29, 2026
35ef963
leios: Use mempty instead of zero
bladyjoker Apr 29, 2026
7ebf968
leios: Remove redundant Wno-orphans
bladyjoker Apr 29, 2026
0d8b0aa
[Leios Prototype] A bunch of bug fixes (#2017)
bladyjoker Apr 29, 2026
430c6df
Move certify decision into shelley-specific parts
ch1bo Apr 29, 2026
3f9afad
Regenerate golden files for header/ledger state
ch1bo May 4, 2026
93426c5
Make previous ChainDepState in forge args a Maybe
ch1bo May 4, 2026
bf69ff2
Fix certification gap property
ch1bo May 4, 2026
4107a8e
Move certify decision into shelley-specific parts (#2018)
ch1bo May 4, 2026
a666aed
Keep a note about a raise database error
ch1bo Mar 22, 2026
8434914
Expect votes in Leios threadnet
ch1bo Mar 22, 2026
88eb419
Do as if we would create votes
ch1bo Mar 22, 2026
30940e4
Expect more from the voting logic
ch1bo Mar 22, 2026
9dbd240
Sketch a plan for the voting thread
ch1bo Mar 22, 2026
298f05f
Use EBStore notification to vote on all complete closures
ch1bo Mar 22, 2026
deaf099
Organize definitions in LeiosDemoTypes
ch1bo Mar 22, 2026
ab1fbc3
Expect the threadnet to diffuse votes
ch1bo Mar 22, 2026
8bc9def
Sketch Committee and LeiosVote types
ch1bo Mar 22, 2026
587c549
Change MsgDone tags and move CDDLs to cardano-blueprint
ch1bo Apr 14, 2026
d3018e5
Re-use KES signing key as voting key and voter identity
ch1bo Apr 17, 2026
aa5b0cf
A little type alias plus a sketch for what could be
ch1bo Apr 17, 2026
5ffd194
Draft a LeiosVoteState handle and its call sites
ch1bo Apr 22, 2026
648da1d
Add MsgLeiosVotes to LeiosNotify protocol
ch1bo Apr 22, 2026
c597934
Add tests for LeiosVoteState and de-duplicate votes
ch1bo Apr 22, 2026
2d703d4
Add votes to LeiosVoteState upon receiving them
ch1bo Apr 22, 2026
8bda1de
Less pipelining and fix trace encoding
ch1bo Apr 23, 2026
08284de
Add ToJSON instances to LeiosVote
ch1bo Apr 28, 2026
9f24eb4
Add voterId to LeiosVoted trace
ch1bo Apr 28, 2026
9b27946
Not re-trigger notifications on old EBs
ch1bo Apr 29, 2026
4559708
Update cardano-blueprint
ch1bo May 5, 2026
2aba5c5
Only run leiosVoting thread if voter key is set
ch1bo May 5, 2026
e43bc4d
Improve threadnet test output
ch1bo May 5, 2026
9cad3f7
Keep a LeiosPoint in LeiosVote
ch1bo May 11, 2026
51cc1f2
Leios: Prototype voting (#1963)
ch1bo May 11, 2026
72707ac
Abstract over vote in LeiosNotify and add json encoder
ch1bo May 11, 2026
936d5a0
Switch cardano-blueprint submodule to HTTPS
ch1bo May 11, 2026
001ea4b
Reset leios-prototype to release-ouroboros-consensus-3.0.1.0 (Leios c…
ch1bo May 19, 2026
629a5a6
Leios mempool access + forging
ch1bo May 19, 2026
bb1aebb
Leios diffusion: LeiosNotify + LeiosFetch mini-protocols + Reception
ch1bo May 19, 2026
43e1b07
Leios resolving + chain inclusion
ch1bo May 19, 2026
8f0750d
Leios voting: LeiosVoteState + leiosVoting thread + threadnet test
ch1bo May 19, 2026
514cc29
Leios demo: ImmDBServer schedule-driven Leios + schedule generator
ch1bo May 19, 2026
e81843d
ResolveLeiosBlock: narrow to chain-dep state
ch1bo May 20, 2026
79d5955
Bump cabal.project
ch1bo May 20, 2026
e56519b
Wire Leios mini-protocols into NodeToNode bundle
ch1bo May 21, 2026
663412f
Reproduce hacked voting key derivation
ch1bo May 25, 2026
bcd6e0b
ci fixes
kderme May 26, 2026
470cf1d
Restore export
kderme May 26, 2026
31b6c0b
Chainsync server resolves Dijkstra Leios cert blocks
kderme May 25, 2026
c88b0d8
More ci fixes
kderme May 26, 2026
9050110
Resotre block backwards compatibility
kderme May 26, 2026
e4c2124
Fix ledger golden tests
kderme May 27, 2026
2a7054f
[Leios prototype] Implement NTC chainsync (#2050)
kderme May 27, 2026
0bd6aac
bump ProtVer to match node (12/11) for Dijkstra
kderme May 27, 2026
eddb8b7
NTC chainsync fix rollback support
kderme May 28, 2026
2a51e1d
Fix LeiosFetch MsgDone encoding key (9)
ch1bo May 31, 2026
cb3a21d
Only hack Leios voting key if shelley credential is set
ch1bo May 31, 2026
0464cd1
Update cardano-blueprint to match prototype
ch1bo Jun 1, 2026
4540745
Sketch a staging area for all blocks arriving
ch1bo Jun 2, 2026
bc3585b
Fetch staged EBs as if they were offered
ch1bo Jun 2, 2026
16a137a
Fix fetching of closure txs and add traces
ch1bo Jun 2, 2026
e51398c
Use the header to resolve certified EB point
ch1bo Jun 3, 2026
80ab3ac
Make sure to synthesize ebTxs offer from staging area
ch1bo Jun 3, 2026
fbaa872
ResolveLeiosBlock when reapplying blocks from immutableDB
ch1bo Jun 4, 2026
6634d25
Trim Leios fetch loop and block BlockFetch on staged CertRBs
ch1bo Jun 4, 2026
3956cfe
Leios: hot fix CertRB staging area + emergency fetch + resolve CertRB…
ch1bo Jun 9, 2026
164dd54
Remove unused code
ch1bo Jun 9, 2026
daad80e
Disable CODEOWNERS for leios-prototype
ch1bo Jun 9, 2026
3281b8b
Catch and trace UNIQUE constraint violoations
ch1bo Jun 9, 2026
a258303
Catch and trace UNIQUE constraint violoations (#2062)
ch1bo Jun 9, 2026
5cb5235
Use DijkstraBlockBodyResolved not so smart constructor
kderme Jun 10, 2026
c6db041
NTC: Fix blocks disk decode
kderme Jun 10, 2026
6d9d712
Add HasLeiosVoting to decide whether to vote
ch1bo May 5, 2026
9560379
Run voting only in latest era
ch1bo May 5, 2026
6310e55
Get VoterId from Committee
ch1bo May 7, 2026
2e0cd53
Access PoolDistr from shelley ledger state
ch1bo May 7, 2026
328028e
Basic committee selection using stake distribution
ch1bo May 7, 2026
3139fa8
Draft vote validation in LeiosVoteState
ch1bo May 8, 2026
feb997e
Update LeiosVoteState tests to cover new API
ch1bo May 8, 2026
cc1eab7
Expect votes being signed
ch1bo May 8, 2026
8606aec
Start using real BLS crypto
ch1bo May 12, 2026
b5c0b6d
Keep track of committee signing keys in tests
ch1bo May 12, 2026
0cc8261
Sign point instead of vote
ch1bo May 12, 2026
03aaae9
Fix LeiosVoteState unit tests
ch1bo May 12, 2026
39bef8d
Fix unsafe derivation of signing keys from pool id
ch1bo May 12, 2026
5d5c82e
Add a golden test for leios vote encoding
ch1bo May 12, 2026
961a00f
Add a todo about disallowing votes from different epochs
ch1bo May 13, 2026
f2debce
Not validate already seen votes
ch1bo May 13, 2026
e9c734d
Move base.cddl to blueprint and add golden LeiosVote test
ch1bo May 25, 2026
8504bc2
Add weights to the Committee and TraceLeiosVoted
ch1bo May 26, 2026
166f018
Property test for mkCommitteeEveryoneVotes
ch1bo May 26, 2026
1adf11f
Add TraceLeiosBlockCertified
ch1bo May 27, 2026
786b3f9
Add HasLeiosVoting and ResolveLeiosBlock instances for Byron/Shelley …
ch1bo May 27, 2026
a87a74a
Remove redundant imports
ch1bo Jun 9, 2026
28c6d67
Fix LeiosDemoDb re-notification when completing eb closure
ch1bo Jun 11, 2026
429f5c4
Bump cardano-ledger SRP to leios-prototype HEAD
ch1bo Jun 11, 2026
13cd960
Leios: Vote signing and committee selection (#2039)
ch1bo Jun 11, 2026
2999407
Update ledger srp
ch1bo Jun 11, 2026
d941d06
Improve trace naming
ch1bo Jun 11, 2026
eaa1339
Drive certification through threadnet test
ch1bo May 13, 2026
46f3e69
Sketch a call site of validateLeiosCertificate
ch1bo May 13, 2026
ae57fab
Use LeiosCert from cardano-base and move cert validation call site
ch1bo Jun 11, 2026
c2ec031
Use blockHasLeiosCert to reapply when CertRB
ch1bo Jun 11, 2026
d449f64
Aggregate votes into certs on addVote
ch1bo Jun 11, 2026
928d655
Use aggregated certificates in forge loop
ch1bo Jun 11, 2026
ca5916d
Keep a note
ch1bo Jun 11, 2026
14a693b
Honor ExperimentalHardForksEnabled in db-synthesizer config parser
dnadales Jun 17, 2026
1250123
Honor ExperimentalHardForksEnabled in db-synthesizer config parser (#…
dnadales Jun 18, 2026
7358132
Fix fourmolu of NTC changes
ch1bo Jun 15, 2026
88c76e9
Ignore zero sized EB offers
ch1bo Jun 15, 2026
9aefdac
Drop currentChain from staging gate parent lookup
ch1bo Jun 15, 2026
7a52bf0
Garbage-collect staged CertRBs and consolidate staging logic
ch1bo Jun 15, 2026
c5bcad2
Keep a FIXME about missing EB announcements
ch1bo Jun 15, 2026
37320f1
Depend on completion notifications per point when same EB hash is used
ch1bo Jun 15, 2026
b326c98
Add test suite for LeiosStagingArea
ch1bo Jun 15, 2026
2e26c62
Add traces to fetch logic to improve observability
ch1bo Jun 15, 2026
7ed9ef8
Test suite for the pure Leios fetch logic
ch1bo Jun 16, 2026
04d0fb5
Fix choosePeerTx size-match predicate
ch1bo Jun 16, 2026
a017eaf
Format cardano-blueprint/flake.nix
ch1bo Jun 16, 2026
134fc07
Separate error cases when announced EB not resolvable
ch1bo Jun 16, 2026
4d0c550
Replace test case as we changed lookup semantics
ch1bo Jun 16, 2026
1609b11
Reduce staging area GC time to 30 seconds
ch1bo Jun 17, 2026
cde319d
Fix test-tools node config
ch1bo Jun 18, 2026
f25fd44
Leios: EB Fetching and staging area fixes (#2074)
ch1bo Jun 18, 2026
b4cb848
leiosNotifyClient: use in-scope var instead of state lookups
nfrisby Jun 18, 2026
aab96a9
leiosFetchClient: eliminate risk of divergent loop during thread init
nfrisby Jun 18, 2026
39b3eef
LeiosDemoLogic: avoid double-refund of budgets in the LeiosFetch payl…
nfrisby Jun 18, 2026
00f223f
LeiosDemoTypes: add TODO on blockingPerEb, unused and goes stale
nfrisby Jun 18, 2026
96bdbb5
LeiosFetch: now tolerating disconnects
nfrisby Jun 18, 2026
6449eb8
Run fourmolu
ch1bo Jun 18, 2026
e3803b0
leios-prototype: prevent leaking LeiosFetch budget on disconnects (#2…
ch1bo Jun 18, 2026
3016b65
leios: used Claude to remove the LeiosStagingArea
nfrisby Jun 16, 2026
6db7af2
Update to latest cardano-base / cardano-ledger versions
ch1bo Jun 17, 2026
f97e3e5
Updates due to contra-tracer >= 0.2
ch1bo Jun 17, 2026
fe65a3d
Update to latest ouroboros-network (+ prototype changes)
ch1bo Jun 17, 2026
81d5c1e
More fixes following 11.1 integration
ch1bo Jun 17, 2026
09bc43b
Replace creation and verification of certs with Cardano.Crypto.Leios …
ch1bo Jun 17, 2026
60974c7
Draft ApplyLeiosTx to have tickThenApply on the CertRB
ch1bo Jun 18, 2026
81fcad9
Refactor and DRY ResolveLeiosBlock interface
ch1bo Jun 18, 2026
8e19379
Remove indirection of cert verification
ch1bo Jun 18, 2026
10917bc
Add debug output to Leios threadnet test
ch1bo Jun 18, 2026
d4b4552
Fix handling of DiffMk in forker
ch1bo Jun 18, 2026
ba09104
Update cardano-crypto-leios and changes due to it
ch1bo Jun 21, 2026
03713ff
Consolidate Leios validation into ResolveLeiosBlock class
ch1bo Jun 22, 2026
13e6a58
Build against newer validation
ch1bo Jun 22, 2026
2729888
Add missing instances of SnapshotPolicyArgs
ch1bo Jun 22, 2026
ccc7926
Add LeiosBlockAnnounced trace on forge
ch1bo Jun 23, 2026
8bc91e2
leios: add the Praos header contains_cert bit and the envelope check
nfrisby Jun 23, 2026
a5414d3
leios: extend ResolveLeiosBlock with the CertRB-recognition methods
nfrisby Jun 23, 2026
50bfccf
leios: enrich the VolatileDB index with each block's Leios dependency
nfrisby Jun 23, 2026
7c46ee9
leios: add the ChainDB-orchestrated LeiosDb peer-store hooks
nfrisby Jun 23, 2026
68f7c7f
leios: park CertRBs in ChainSel until their EB closure is acquired
nfrisby Jun 23, 2026
d03128b
leios: synthesize LeiosFetch offers from CertRB headers; shared peer-…
nfrisby Jun 23, 2026
30882a0
leios: make envelopeCheck more precise
nfrisby Jun 23, 2026
5601658
leios: make sketch the Leios header checks, but defer for now
nfrisby Jun 23, 2026
f008c60
out of order RB and EBs in ChainSel+VolDB (#2076)
nfrisby Jun 23, 2026
9adbc2f
Changes due to Leios{Committee,Vote} rename
ch1bo Jun 26, 2026
fca9e90
Bump SRPs
geo2a Jun 29, 2026
f986fa6
leios: in DB, key completed EBs by EbHash instead of by LeiosPoint
geo2a Jun 23, 2026
76b42d6
Add RbHash
geo2a Jun 23, 2026
1efd476
Vote and certify over the announcing RbHash
geo2a Jun 23, 2026
01486f1
Update to cardano-crypto-leios from CHaP
ch1bo Jun 30, 2026
507392c
Make EB application use the proper Ledger State (and time)
bladyjoker Jun 25, 2026
566e770
Document the slot source for applyLeiosClosure
bladyjoker Jun 29, 2026
a296f0e
fix: Missing sha-256 in cardano-ledger SRP
bladyjoker Jun 30, 2026
804f688
Correct EB application (#2085)
ch1bo Jun 30, 2026
befdb8d
Changes due to dropped Reception types
ch1bo Jun 30, 2026
be5b7d0
Changes due to TxSubmissionV2
ch1bo Jun 30, 2026
8130685
Bump to merged LeiosCert in cardano-ledger
ch1bo Jun 30, 2026
06a76b8
Merge branch 'leios-prototype' into ch1bo/leios-certifying
ch1bo Jun 30, 2026
a335904
Fix some warnings
ch1bo Jun 30, 2026
3483f5a
Revert validity-range tx generation in Leios ThreadNet test
ch1bo Jun 30, 2026
5d493d1
Strengthen Leios ThreadNet voting/certification properties
ch1bo Jun 30, 2026
5c94823
Ignore ledger deprecations of Validated
ch1bo Jun 30, 2026
19711d4
Vote only after 3 and before 7 slots and when selection announced EB
ch1bo Jul 1, 2026
075b3bc
Don't route announcing RbHash through LeiosDB
ch1bo Jul 1, 2026
420c3bc
Fix counting of confirmed tx bytes in applyLeiosClosure
ch1bo Jul 1, 2026
e5d00a3
Delete unused staging area
ch1bo Jul 2, 2026
8cac76d
Fix protocol versionsin threadnet tests following 11.1 integration
ch1bo Jul 2, 2026
71e0ae8
Fix encoders + port golden files from 11.1 integration
ch1bo Jul 2, 2026
c285f7b
Fix encoders of LeiosVote
ch1bo Jul 2, 2026
1c56f33
Resolve a FIXME/Add a TODO
ch1bo Jul 2, 2026
79a435b
Regenerate goldens for ledger state (changed in Leios)
ch1bo Jul 2, 2026
c53dcf5
Regenerate NTC tx golden files as they were wrong on 11.1 integration
ch1bo Jul 2, 2026
953c8e8
Fix a shrinker in leios db tests
ch1bo Jul 2, 2026
3388875
Formatting
ch1bo Jul 2, 2026
32cbd5c
Prototype certificate aggregation and validation (#2068)
ch1bo Jul 3, 2026
a2a678d
Bump ledger SRP for fixed cost models
ch1bo Jul 3, 2026
68d71f3
Add a (hacky) report when CDDL .cbor rules fail
ch1bo Jul 3, 2026
b9cfbbf
Update Praos header codec to match desired Dijkstra era
ch1bo Jul 3, 2026
0eddabc
Make new Praos header backwards compatible
ch1bo Jul 3, 2026
394e5ec
Update cuddle and tools index-state
ch1bo Jul 3, 2026
8287b27
Fix EB announcement hash in Golden example
ch1bo Jul 3, 2026
3944e15
Regenerate header hash related golden files
ch1bo Jul 3, 2026
36aa41b
Accept new encoding of leios announcement in praos state
ch1bo Jul 3, 2026
b966225
Bump ledger SRP
ch1bo Jul 5, 2026
af0aa90
Relax bounds on leios demo db tests
ch1bo Jul 5, 2026
9357c7a
Update Praos header encoding (#2102)
ch1bo Jul 5, 2026
2329220
Fix vote loop to be concurrent
ch1bo Jul 5, 2026
05a82e4
Pre-filter txs to insert in LeiosDemoDb
ch1bo Jul 6, 2026
3d6149d
Fix Leios voting: concurrent vote loop and storage improvements (#2104)
ch1bo Jul 6, 2026
9ed6ac9
Fix resource management of leios db connections
ch1bo Jul 3, 2026
63d4d4e
Fix resource management of leios db connections (#2101)
ch1bo Jul 6, 2026
912a20d
Checkpoint: LeiosDb safety net + LedgerDB per-use bracket + bench ext…
ch1bo Jul 6, 2026
2d139fd
DRY LeiosDemoDb API before reader/writer split
ch1bo Jul 6, 2026
c0ce000
LeiosDb: use JSON1 for batch helpers, drop mem.* temp tables
ch1bo Jul 7, 2026
dad1206
LeiosDb: bracket the loop-scoped stmts in sqlInsertTxs
ch1bo Jul 7, 2026
e355b77
LeiosDb: canary peek on sqlite3 struct integrity
ch1bo Jul 7, 2026
35d07e2
LeiosDb: prepare statements once per connection, finalise at close
ch1bo Jul 7, 2026
9f32e61
LeiosDb: remove temporary asserts
ch1bo Jul 8, 2026
e45c0d9
Leios: error loudly when EB closure is missing at cert-RB apply
ch1bo Jul 8, 2026
0c11599
Fix compilation warnings
bladyjoker Jul 8, 2026
a9f360a
ResolveLeiosBlock: bugfix in headerContainsLeiosCert @HFC method
nfrisby Jul 8, 2026
6be828d
leiosCertRbOffer: eliminate some thunks
nfrisby Jul 8, 2026
4282e73
Leios NTC ChainSync server: restore certificate gate on EB inlining
kderme Jul 8, 2026
907c124
LeiosDemoTypes: define AcquiredLeiosEbs
nfrisby Jul 8, 2026
44de776
cdbAcquiredLeiosEbs: stop using VolDB to prune this TVar
nfrisby Jul 8, 2026
54f4db2
leiosFetchClientPeerPipelined: bugfix, was sometimes discarding sends
nfrisby Jul 8, 2026
8257193
Leios NTC ChainSync server: restore certificate gate on EB inlining
kderme Jul 8, 2026
a3c1430
applyBlock.ApplyVal: slight tidying
nfrisby Jul 9, 2026
401f66a
resolveLeiosBlock: bugfix, don't assume all EBs are certified when re…
nfrisby Jul 9, 2026
74e1069
LeiosNotify: increase pipelining depth
nfrisby Jul 9, 2026
a66db83
LeiosDbHandle: move the EBs-not-older-than scan method to LeiosDbConn…
nfrisby Jul 10, 2026
e409b4e
Leios prototype: bugfix for startup crash race condition of first run…
nfrisby Jul 10, 2026
6b73b1a
Stop applying uncertified EBs from the ImmDB on startup (and increase…
nfrisby Jul 10, 2026
759624e
Fix hlint/fourmolu
bladyjoker Jul 10, 2026
6b464bb
Fix w-unused-imports because GHCs don't agree
bladyjoker Jul 10, 2026
9aa079e
Use the cardano-blueprint#leios-prototype with aligned CDDLs
bladyjoker Jul 10, 2026
e013c20
Leios prototype-2026w27 fixes (#2113)
bladyjoker Jul 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
9 changes: 9 additions & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
### NOTE
# Run `git config blame.ignoreRevsFile .git-blame-ignore-revs`
# from the repository's root to tell `git blame` to ignore
# the commits below.

# 2025
########################################
# Format with fourmolu
70c3258667611a12f7fa8f85b5591830c533d296
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@
# https://github.com/github-linguist/linguist/blob/master/docs/overrides.md

ouroboros-consensus-cardano/golden/**/* linguist-generated=true
docs/website/yarn.lock linguist-generated=true
4 changes: 4 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,7 @@ Also note that:

- New code should be properly tested (even if it does not add new features).
- The fix for a regression should include a test that reproduces said regression.

# WARNING

To update your feature branch if it's stale, please rebase it manually on top of `main`. Don't update your feature branch by merging `main` into it. Your pull request will not pass CI if you do.
4 changes: 2 additions & 2 deletions .github/workflows/cabal.project.no-thunks.local
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import: .github/workflows/cabal.project.default.local

package strict-checked-vars
flags: +checktvarinvariants +checkmvarinvariants
package ouroboros-consensus
flags: +expensive-invariants
65 changes: 31 additions & 34 deletions .github/workflows/checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,35 @@ on:
- reopened
# see https://stackoverflow.com/a/77497491
- edited
# re-evaluate the workflow when labels are added or removed.
- labeled
- unlabeled
merge_group:

jobs:
no-merge-commits:

name: No merge commits in PR

runs-on: ubuntu-latest

defaults:
run:
shell: bash

steps:

- uses: actions/checkout@v6
with:
fetch-depth: 0
# Check out the actual PR head, not the synthetic merge commit that
# actions/checkout produces by default for pull_request events.
ref: ${{ github.event.pull_request.head.sha }}

- env:
BASE_REF: ${{ github.event.pull_request.base.ref }}
run: ./scripts/ci/check-no-merge-commits.sh

consensus-changelog:

name: Changelogs
Expand All @@ -30,7 +56,7 @@ jobs:

steps:

- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
fetch-depth: 0

Expand All @@ -53,28 +79,10 @@ jobs:
with:
cabal-version: "3.10.1.0"

- uses: actions/checkout@v4
- uses: actions/checkout@v6

- name: Cabal check
run: ./scripts/ci/check-cabal-files.sh

check-release-badges:

name: Release badges are updated

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Check README badges
run: |
for f in $(find ouroboros-consensus* *sop* -type f -name "*.cabal"); do
pkg=$(grep "^name: " $f | rev | cut -d' ' -f1 | rev)
ver=$(grep "^version: " $f | rev | cut -d' ' -f1 | rev)
echo "Checking badge for $pkg-$ver"
grep "$(echo $pkg | sed 's/-/--/g')-$ver" README.md
done
run: cabal check

check-build-plans:

Expand All @@ -88,7 +96,7 @@ jobs:
id: setup-haskell
with:
cabal-version: "3.12.1.0"
ghc-version: "9.6.6"
ghc-version: "9.6.7"

- name: Install base libraries
uses: input-output-hk/actions/base@latest
Expand All @@ -104,18 +112,7 @@ jobs:
mkdir -p ${HOME}/.local/bin
mv cabal-plan ${HOME}/.local/bin/cabal-plan

- uses: actions/checkout@v4
- uses: actions/checkout@v6

- name: Diff plans
run: GH=1 ./scripts/release/cabal-plan-diff.sh

xrefcheck:

name: Check references
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- uses: serokell/xrefcheck-action@v1
with:
xrefcheck-version: 0.3.1
125 changes: 90 additions & 35 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ on:
type: boolean
default: false
pull_request:
# re-evaluate the workflow when labels are added or removed.
types: [opened, synchronize, reopened, labeled, unlabeled]
merge_group:
push:
branches:
Expand All @@ -32,13 +34,39 @@ on:
- cron: "0 0 1 * *"

jobs:
# This aggregated job is necessary to make the 'skip-tests' label work consistently
# with branch protection rules.
#
# Set this job as the required check in branch protection rules instead of
# the individual "Build and test" matrix jobs. It reports success when tests
# pass or are intentionally skipped via the 'skip-tests' label.
ci-success-or-skipped:
name: All CI Jobs Successful or Skipped
needs: [build-test-bench-haddocks, benchmarks]
runs-on: ubuntu-latest
steps:
- name: Check results
run: |
build="${{ needs.build-test-bench-haddocks.result }}"
bench="${{ needs.benchmarks.result }}"
for r in "$build" "$bench"; do
if [[ "$r" != "success" && "$r" != "skipped" ]]; then
echo "Job failed with result: $r"
exit 1
fi
done
echo "All jobs passed or were intentionally skipped."

build-test-bench-haddocks:
name: Build and test
# skip building testing and benchmarking if the PR has the 'skip-tests' label attached
if: >-
!contains(github.event.pull_request.labels.*.name, 'skip-tests')
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
ghc: ["9.6.6", "9.10.1", "9.12"]
ghc: ["9.6.7", "9.10.3", "9.12.2", "9.14.1"]
variant: [default, no-thunks]
test-set: [all, no-thunks-safe]
exclude:
Expand All @@ -50,10 +78,17 @@ jobs:
# Modify this value to "invalidate" the Cabal cache.
CABAL_CACHE_VERSION: "2024-07-04"

CABAL: "3.12.1.0"
CABAL: "3.16.1.0"

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
submodules: true

- name: Check CDDLs up-to-date with Blueprints
continue-on-error: true
run: |
./scripts/ci/diff-cddls.sh

- name: Install base libraries
uses: input-output-hk/actions/base@latest
Expand Down Expand Up @@ -108,7 +143,7 @@ jobs:
# Otherwise, we could restore a cache from a previous month, which makes
# caches grow unboundedly.
- name: "Restore cache for cabal-store"
uses: actions/cache/restore@v4
uses: actions/cache/restore@v5
id: restore-cabal-store
with:
path: ${{ steps.setup-haskell.outputs.cabal-store }}
Expand All @@ -128,7 +163,7 @@ jobs:
#
# See https://github.com/actions/cache/tree/v3/save#always-save-cache.
- name: "Save cache for cabal-store"
uses: actions/cache/save@v4
uses: actions/cache/save@v5
id: save-cabal-store
if: steps.build-dependencies.outcome == 'success' && steps.restore-cabal-store.outputs.cache-hit != 'true'
with:
Expand All @@ -138,20 +173,38 @@ jobs:
- name: Build projects [build]
run: cabal build all -j

- name: Install Ruby for CDDL
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.4'
bundler-cache: true

- name: Install cddl tools
if: matrix.ghc != '9.14.1'
run: |
gem install cddlc
cabal install cuddle-1.2.0.0 --index-state="2026-02-23T15:03:19Z" --ignore-project

- name: Install cddl tools (9.14)
if: matrix.ghc == '9.14.1'
run: |
gem install cddlc
cabal install cuddle-1.2.0.0 --allow-newer --index-state="2026-02-23T15:03:19Z" --ignore-project

- name: Test
if: matrix.test-set == 'all'
run: cabal test all -j --test-show-details=streaming
run: cabal test all -j --test-show-details=streaming --test-options '--hide-successes'

- name: Test (NoThunks-safe tests only)
if: matrix.test-set == 'no-thunks-safe'
run: cabal test ouroboros-consensus:consensus-test ouroboros-consensus:doctest ouroboros-consensus:infra-test ouroboros-consensus:storage-test ouroboros-consensus-cardano:byron-test ouroboros-consensus-cardano:shelley-test ouroboros-consensus-diffusion:infra-test ouroboros-consensus-protocol:protocol-test -j --test-show-details=streaming
run: cabal test ouroboros-consensus:consensus-test ouroboros-consensus:doctest ouroboros-consensus:consensus-infra-test ouroboros-consensus:storage-test ouroboros-consensus:byron-test ouroboros-consensus:shelley-test ouroboros-consensus:diffusion-infra-test ouroboros-consensus:protocol-test -j --test-show-details=streaming

- name: Identify benchmark executables
run: |
cp $(cabal list-bin mempool-bench) mempool-bench

- name: Upload benchmark executables
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: benchmark-exes-${{ runner.os }}-${{ matrix.ghc }}
path: mempool-bench
Expand All @@ -163,7 +216,7 @@ jobs:
if: |
github.event_name == 'push'
&& github.ref == 'refs/heads/main'
&& matrix.ghc=='9.10.1'
&& matrix.ghc=='9.10.3'
run: |
# need for latex, dvisvgm and standalone
sudo apt install texlive-latex-extra texlive-latex-base
Expand All @@ -178,8 +231,8 @@ jobs:
if: |
github.event_name == 'push'
&& github.ref == 'refs/heads/main'
&& matrix.ghc=='9.10.1'
uses: actions/upload-artifact@v4
&& matrix.ghc=='9.10.3'
uses: actions/upload-artifact@v7
with:
name: haddocks
path: haddocks.tgz
Expand All @@ -193,18 +246,18 @@ jobs:
strategy:
fail-fast: false
matrix:
ghc: ["9.6.6", "9.10.1"]
ghc: ["9.6.7", "9.10.3"]

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6

- name: Install base libraries
uses: input-output-hk/actions/base@latest
with:
use-sodium-vrf: false

- name: Download benchmark executables
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: benchmark-exes-${{ runner.os }}-${{ matrix.ghc }}

Expand All @@ -228,7 +281,7 @@ jobs:
# run on the `main` branch. If we run this workflow in the context of a PR,
# then we will save the same results we just restored.
- name: Cache benchmark baseline results
uses: actions/cache@v4
uses: actions/cache@v5
with:
path: baseline-mempool-benchmarks.csv
key: baseline-mempool-benchmarks-${{ runner.os }}-${{ matrix.ghc }}-${{ github.run_id }}
Expand All @@ -242,7 +295,7 @@ jobs:
# TODO: this will be necessary when we publish the benchmarks results.
# - name: Upload mempool benchmark baseline results
# if: github.event_name == 'push' && github.ref == 'refs/heads/main'
# uses: actions/upload-artifact@v4
# uses: actions/upload-artifact@v7
# with:
# name: baseline-mempool-benchmarks
# path: baseline-mempool-benchmarks.csv
Expand All @@ -262,22 +315,34 @@ jobs:
echo "Benchmarks comparison skipped."
fi

deploy-documentation:
name: Deploy documentation to GitHub Pages
deploy-website:
name: Deploy website to GitHub Pages
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
needs: build-test-bench-haddocks
runs-on: ubuntu-latest
# Most run steps (yarn install, yarn build, nix build) operate on the
# Docusaurus project, so we default to its directory. The haddock
# extraction step overrides this to run from the repo root, because the
# tarball contains paths relative to the repo root
# (./docs/website/static/haddocks/...).
defaults:
run:
working-directory: ./docs/website
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6

- name: Download haddocks
uses: actions/download-artifact@v8
with:
name: haddocks

- name: Extract haddocks into static directory
working-directory: .
run: tar vzxf haddocks.tgz

- uses: actions/setup-node@v4
- uses: actions/setup-node@v6
with:
node-version: 18
node-version: 24
cache: yarn
cache-dependency-path: './docs/website/yarn.lock'

Expand All @@ -291,29 +356,19 @@ jobs:
nix build -L .#consensus-pdfs
cp -r --no-preserve=mode,ownership result/ static/pdfs

- name: Download haddocks
uses: actions/download-artifact@v4
with:
name: haddocks

- name: Copy haddocks
run: |
cd ../../
tar vzxf haddocks.tgz

- name: Install dependencies
run: yarn install --frozen-lockfile

- name: Build website
run: yarn build

- uses: actions/upload-pages-artifact@v3
- uses: actions/upload-pages-artifact@v5
with:
path: ./docs/website/build

- name: Deploy
id: deployment
uses: actions/deploy-pages@v4
uses: actions/deploy-pages@v5

# https://github.com/actions/deploy-pages
permissions:
Expand Down
Loading
Loading