cardano-rpc: guard against fetching entire UTXO set.
May 14, 5-6 AM (18)
May 14, 6-7 AM (18)
May 14, 7-8 AM (47)
May 14, 8-9 AM (53)
May 14, 9-10 AM (35)
May 14, 10-11 AM (20)
May 14, 11-12 PM (114)
May 14, 12-1 PM (54)
May 14, 1-2 PM (151)
May 14, 2-3 PM (32)
May 14, 3-4 PM (17)
May 14, 4-5 PM (14)
May 14, 5-6 PM (38)
May 14, 6-7 PM (12)
May 14, 7-8 PM (22)
May 14, 8-9 PM (37)
May 14, 9-10 PM (35)
May 14, 10-11 PM (27)
May 14, 11-12 AM (14)
May 15, 12-1 AM (18)
May 15, 1-2 AM (15)
May 15, 2-3 AM (5)
May 15, 3-4 AM (3)
May 15, 4-5 AM (13)
May 15, 5-6 AM (14)
May 15, 6-7 AM (10)
May 15, 7-8 AM (31)
May 15, 8-9 AM (23)
May 15, 9-10 AM (52)
May 15, 10-11 AM (71)
May 15, 11-12 PM (70)
May 15, 12-1 PM (73)
May 15, 1-2 PM (73)
May 15, 2-3 PM (66)
May 15, 3-4 PM (26)
May 15, 4-5 PM (13)
May 15, 5-6 PM (30)
May 15, 6-7 PM (29)
May 15, 7-8 PM (25)
May 15, 8-9 PM (8)
May 15, 9-10 PM (34)
May 15, 10-11 PM (34)
May 15, 11-12 AM (25)
May 16, 12-1 AM (2)
May 16, 1-2 AM (2)
May 16, 2-3 AM (3)
May 16, 3-4 AM (3)
May 16, 4-5 AM (0)
May 16, 5-6 AM (6)
May 16, 6-7 AM (2)
May 16, 7-8 AM (10)
May 16, 8-9 AM (1)
May 16, 9-10 AM (2)
May 16, 10-11 AM (1)
May 16, 11-12 PM (13)
May 16, 12-1 PM (11)
May 16, 1-2 PM (8)
May 16, 2-3 PM (15)
May 16, 3-4 PM (10)
May 16, 4-5 PM (2)
May 16, 5-6 PM (2)
May 16, 6-7 PM (2)
May 16, 7-8 PM (10)
May 16, 8-9 PM (6)
May 16, 9-10 PM (9)
May 16, 10-11 PM (29)
May 16, 11-12 AM (42)
May 17, 12-1 AM (9)
May 17, 1-2 AM (1)
May 17, 2-3 AM (0)
May 17, 3-4 AM (1)
May 17, 4-5 AM (0)
May 17, 5-6 AM (3)
May 17, 6-7 AM (2)
May 17, 7-8 AM (1)
May 17, 8-9 AM (1)
May 17, 9-10 AM (1)
May 17, 10-11 AM (6)
May 17, 11-12 PM (6)
May 17, 12-1 PM (4)
May 17, 1-2 PM (5)
May 17, 2-3 PM (9)
May 17, 3-4 PM (4)
May 17, 4-5 PM (8)
May 17, 5-6 PM (14)
May 17, 6-7 PM (10)
May 17, 7-8 PM (2)
May 17, 8-9 PM (4)
May 17, 9-10 PM (2)
May 17, 10-11 PM (20)
May 17, 11-12 AM (13)
May 18, 12-1 AM (10)
May 18, 1-2 AM (4)
May 18, 2-3 AM (5)
May 18, 3-4 AM (9)
May 18, 4-5 AM (14)
May 18, 5-6 AM (2)
May 18, 6-7 AM (37)
May 18, 7-8 AM (28)
May 18, 8-9 AM (35)
May 18, 9-10 AM (41)
May 18, 10-11 AM (43)
May 18, 11-12 PM (29)
May 18, 12-1 PM (136)
May 18, 1-2 PM (34)
May 18, 2-3 PM (89)
May 18, 3-4 PM (33)
May 18, 4-5 PM (45)
May 18, 5-6 PM (21)
May 18, 6-7 PM (16)
May 18, 7-8 PM (13)
May 18, 8-9 PM (23)
May 18, 9-10 PM (4)
May 18, 10-11 PM (25)
May 18, 11-12 AM (12)
May 19, 12-1 AM (7)
May 19, 1-2 AM (2)
May 19, 2-3 AM (9)
May 19, 3-4 AM (5)
May 19, 4-5 AM (10)
May 19, 5-6 AM (3)
May 19, 6-7 AM (53)
May 19, 7-8 AM (23)
May 19, 8-9 AM (46)
May 19, 9-10 AM (66)
May 19, 10-11 AM (30)
May 19, 11-12 PM (48)
May 19, 12-1 PM (81)
May 19, 1-2 PM (71)
May 19, 2-3 PM (41)
May 19, 3-4 PM (51)
May 19, 4-5 PM (15)
May 19, 5-6 PM (20)
May 19, 6-7 PM (18)
May 19, 7-8 PM (9)
May 19, 8-9 PM (21)
May 19, 9-10 PM (10)
May 19, 10-11 PM (28)
May 19, 11-12 AM (13)
May 20, 12-1 AM (21)
May 20, 1-2 AM (9)
May 20, 2-3 AM (4)
May 20, 3-4 AM (5)
May 20, 4-5 AM (9)
May 20, 5-6 AM (37)
May 20, 6-7 AM (47)
May 20, 7-8 AM (53)
May 20, 8-9 AM (50)
May 20, 9-10 AM (16)
May 20, 10-11 AM (40)
May 20, 11-12 PM (28)
May 20, 12-1 PM (50)
May 20, 1-2 PM (92)
May 20, 2-3 PM (19)
May 20, 3-4 PM (326)
May 20, 4-5 PM (23)
May 20, 5-6 PM (22)
May 20, 6-7 PM (17)
May 20, 7-8 PM (23)
May 20, 8-9 PM (15)
May 20, 9-10 PM (5)
May 20, 10-11 PM (34)
May 20, 11-12 AM (16)
May 21, 12-1 AM (14)
May 21, 1-2 AM (8)
May 21, 2-3 AM (10)
May 21, 3-4 AM (7)
May 21, 4-5 AM (3)
May 21, 5-6 AM (3)
4,227 commits this week
May 14, 2026
-
May 21, 2026
Merge remote-tracking branch 'origin/master' into hkm/builder-v2
project: revert default builderVersion to 1
Switch the project-level `builderVersion` default back to `1` (Setup.hs / comp-builder) so v1 is exercised by all targets that don't explicitly opt in to `builderVersion = 2`. Lets us confirm the branch hasn't regressed v1 while v2 work continues. Projects that want the v2 slicing builder can set `builderVersion = 2` on their project module.
fix: update broken external links from link-check report
docs: add AGENTS.md with project guide for AI assistants (#661)
Signed-off-by: Pat Losoponkul <[email protected]>
Artifacts generated from 743250bedc9bae83388cf2d0a951fffcbeb69f6b
fix Conway modules to use new lemmas in Ledger.Prelude
fix Conway PoV module to use new lemmas in Ledger.Prelude
Add ENTITIES preservation-of-value
Step 4 of the LEDGER preservation-of-value plan (#1187). Chains the
three lemmas already proved in steps 2-3 over the single ENTITIES
constructor:
applyWithdrawals-pov on (wdrls, r₀)
CERTS-pov on the inner ⟦ ... ,CERTS⦈ premise
applyDirectDeposits-pov on (dd, r₁)
The resulting equation is the value-flow statement for the whole rule:
getCoin s + getCoin (DirectDepositsOf Γ)
≡ getCoin s' + getCoin (WithdrawalsOf Γ)
ENTITIES-pov takes the two per-batch NetworkId witnesses as separate
arguments, mirroring extract-netId's output in the old #1190 LEDGER-pov
proof. These witnesses are produced at the call site by the
SUBUTXOW/UTXOW step and threaded into ENTITIES-pov from there.
The module ENTITIES-PoV inherits and re-exports the three set/map
parameters of ApplyToRewards-PoV (∪ˡ-lookup-preserve,
sum-map-proj₂≡getCoin, setToList-Unique), to be discharged in a
follow-up.
Also adds a top-level Entities.Properties module that re-exports the
two property submodules, matching the existing Certs.Properties
convention.
refactor: update completeTxWithFreshCostModels integration and enhance tests
- Refactored imports to streamline the usage of `completeTxWithFreshCostModels` across the codebase. - Updated unit tests to reflect changes in cost model handling, including support for raw arrays and ordering of indexed cost model objects. - Added new test cases to validate the rejection of improperly ordered cost model objects, ensuring robustness in transaction processing.
test/ghc-lib-reinstallable-cabal: disable on aarch64-multiplatform{,-musl}
Cross from x86_64 to aarch64-linux currently breaks the `useLocalGhcLib = true` slicing path. Disable the cabal flavour of the reinstallable-ghc-lib test on both the glibc and musl aarch64 multiplatform targets; native and other cross targets remain enabled.
test/annotations: disable on armv7a-android
`qemu-arm` segfaults running `iserv-proxy-interpreter` when ghc spawns iserv for the annotations TH eval, so the build can't proceed past `Compiling Lib`. The same chain works on `aarch64-android-prebuilt` (qemu-aarch64), so the issue is specific to the 32-bit ARM qemu / iserv interaction rather than something haskell.nix can sidestep. Disable on `isAndroid && isAarch32` — same shape as the existing `th-dlls` guard.
Add validateTx convenience function combining phase 1 and phase 2 validation
Runs both applyTx (phase 1) and evaluateTransactionExecutionUnits (phase 2) independently in a single LocalStateQueryExpr session, returning both results via TxValidationResult.
v2 builder: round-trip cabal.project per-pkg extra-lib-dirs / extra-include-dirs
cabal hashes per-package `extra-lib-dirs:` and `extra-include-dirs:`
into `pkgHashExtraLibDirs` / `pkgHashExtraIncludeDirs`. If the user
puts them in `cabalProjectLocal` to point cabal at a C library that
lives outside the standard `lib/` layout (e.g. mingw-w64 import libs
under `bin/`), plan-nix records the corresponding `--extra-lib-dirs=`
/ `--extra-include-dirs=` flags in plan.json's `configure-args` — but
v2 wasn't pulling those flags through to the slice's own
`cabal.project`, so the slice's cabal recomputed the package's
unit-id without them, diverged from plan-nix, and downstream
consumers couldn't reuse the slice.
Three pieces:
1. `modules/package-options.nix`: new per-package `extraLibDirs` and
`extraIncludeDirs` options.
2. `modules/install-plan/configure-args.nix`: extract
`--extra-lib-dirs=PATH` and `--extra-include-dirs=PATH` from
plan.json's `configure-args` into the new options.
3. `builder/comp-v2-builder.nix`: emit a `package <pkg>\n
extra-lib-dirs: ...\n extra-include-dirs: ...\n` block per
sliced package in the slice's `cabal.project`.
Also update `test/th-dlls-minimal/default.nix` to demonstrate the
pattern: spell test-clib's lib dirs out in `cabalProjectLocal` so
plan-nix's `extra-lib-dirs:` matches the slice's, AND keep
`components.library.libs = [test-clib]` so haskell.nix's module
system can resolve the `extra-libraries: test-clib` entry in
test-lib.cabal (without it, eval fails with
"The Nixpkgs package set does not contain the package: test-clib").
Confirmed:
* x86_64-linux ucrt64 th-dlls-minimal.build (was failing with
`Cabal-4345 Missing (or bad) C library: test-clib`)
* x86_64-linux musl64 githash.run, th-dlls.build
* x86_64-linux native with-packages.run
* x86_64-linux armv7a-android cabal-22.run, c-ffi.run
fix(mediation): add async fallback for the keylist-update response
Addresses review feedback on #566: the mediator may answer a keylist-update either inline in the same HTTP reply or asynchronously as a separate inbound message, and the SDK should handle both. updateKeyListWithDID now registers a MESSAGE listener before sending. When Send resolves with a matching inline response that response is used directly (path A); otherwise the method waits for the response to arrive on the MESSAGE event (path B), racing against the existing 60 s timeout. The response is matched by piuri and by a thread id equal to either the outgoing message id or the registered peer DID. Tests cover the async success path, a response threaded on the peer DID, an async failure result, and a non-matching thid timing out. Signed-off-by: Seydi Charyyev <[email protected]>
Add applyWithdrawals-pov and applyDirectDeposits-pov
Step 3 of the LEDGER preservation-of-value plan (#1187). These two lemmas describe the value flow through the per-transaction withdrawal and direct-deposit handling that bracket the inner CERTS step inside the new ENTITIES rule (#1201): + applyWithdrawals-pov: getCoin rwds ≡ getCoin (applyWithdrawals w r) + getCoin w + applyDirectDeposits-pov: getCoin (applyDirectDeposits d r) ≡ getCoin r + getCoin d Both are proved by induction over setToList of the underlying RewardAddress ⇀ Coin map, with a per-step lemma about applyOne (the lambda body of applyToRewards) at each inductive step. The withdrawal version requires the per-batch NetworkId witness and a Unique-on-stake-projection invariant on the remaining fold list, because truncating subtraction (_∸_) means an already-reduced balance must never be revisited. The direct-deposit version drops both -- addition is total and commutative, so a re-visit is harmless -- and the resulting signature is correspondingly leaner. The module ApplyToRewards-PoV is parameterised over three set/map identities to be discharged in a follow-up: + ∪ˡ-lookup-preserve + sum-map-proj₂≡getCoin + setToList-Unique (used only by applyWithdrawals-pov) File location reflects the post-#1201 home of applyWithdrawals and applyDirectDeposits: Entities.Specification.<...>, not Certs.Specification.<...>.
feat(pollux): wire SD-JWT requiredClaimKeys from presentation request to verify
Extract required claim keys from the presentation request's input_descriptors.constraints.fields and forward them to SDJWT.verify() during presentation verification. Previously hardcoded to [], which meant @sd-jwt/core never enforced that required claims were actually disclosed by the holder. Fixes #366 Signed-off-by: Abhigyan Singh <[email protected]>
Add queryValidateTx: provisional applyTx query for transaction validation
Adds a new local state query that runs applyTx against the current ledger state and returns the raw result. The provisional implementation queries the full EpochState and runs applyTx client-side; this will be replaced by a dedicated node-side consensus query. Exposed from Cardano.Api.Query alongside other queries.
Added cardano-base-0.1.4.0
From https://github.com/IntersectMBO/cardano-base at 9a18592565cf15b900329095d699997b763b6bd3
fix(mediation): add return_route to keylist-update so the response is observable
The previous flow assumed Send.run would resolve to the mediator's keylist-update-response. In practice it always resolved to undefined: DIDCommConnection.send returned the registered handler's result rather than the parsed message, and the SDK never asked the mediator for an inline reply. Per coordinate-mediation 2.0 the mediator only answers synchronously when the request carries `return_route: "all"`, and Mercury auto-attaches that header for the piuris in ReturnRouteProtocols (packages/wasm/didcomm/src/Wrapper.ts) -- but keylist-update was never on that list. So every keylist-update went out without return_route, the mediator dispatched the response asynchronously, and the client never observed it. Add keylist-update to ReturnRouteProtocols, make DIDCommConnection.send return the inline response, and rewrite updateKeyListWithDID to send the message, race the call against a 60 s timeout, assert the response is a Message with the expected piuri and a thid matching the outgoing id, and validate the body via MediationKeysUpdateResponse (throws on any non-success / non-no_change result). Tests cover success, no_change, client_error, server_error, malformed body, timeout, wrong piuri, wrong thid and a missing response. A guard on ReturnRouteProtocols prevents the same kind of regression that originally introduced this bug (PR #85). Closes #391 Signed-off-by: Seydi Charyyev <[email protected]>
fix(mithril-stm): call validate_column_counts in try_new and fix clippy warnings
refactor: use MLockedSizedBytes for secret key material
The plaintext 64-byte ed25519 scalar is now held in sodium_malloc'd memory (MLockedSizedBytes 64) throughout its lifetime: - locked against swapping (mlock) - never moved by the GC - zeroed on release via mlsbFinalize ScrubbedBytes (GC-heap, moveable, swappable) is no longer used for any secret key material. The wrapping key (Argon2id output) remains in ScrubbedBytes for now. All public crypto operations are now IO (Either XPrvError X). The unsafePerformIO facade is gone except for: - the two global IORef initialisations (runtimeKdfParamsRef, randomModeRef) - encryptedDerivePublic (pure EC math, no secret key involved) Callers of encryptedKeyMaterial receive a MLockedSizedBytes 64 and are responsible for calling mlsbFinalize when done with it. Adds cardano-crypto-class to library build-depends.
test(mithril-stm): add typed error tests for IvcCircuitError variants
new helpers in Ledger.Prelude and Certs PoV
+ Add singleton/union/sum lemmas to Ledger.Prelude
Foundational identities used by the Dijkstra preservation-of-value
proofs (#1187) and likely useful elsewhere. All are stated at the
generic `A ⇀ Coin` (or `List A`) level and are independent of any
ledger-era rule.
Added definitions:
+ ≡ᵉ-getCoin, getCoin-cong, indexedSumᵛ'-∪, res-decomp: lift the
abstract-set-theory equational machinery (≡ᵉ, indexedSum-cong,
indexedSumᵐ-∪) to the `getCoin` interface.
+ getCoin-singleton, ∪ˡsingleton∈dom, ∪ˡsingleton∉dom, ∪ˡsingleton0≡:
left-biased union with a single-entry map, with the zero-valued
specialisation that arises in DELEG-delegate / DELEG-dereg.
+ sumConstZero, indexedSumL-proj₂-zero, setToList-∈: small list/set
bookkeeping used by sumConstZero.
+ sum-map-+, +-interleave: list-of-ℕ algebra that the eventual
LEDGER-pov chain will use to interleave summands.
+ dec-de-morgan: de Morgan rewrite for a decidable conjunction.
No semantic change to any ledger rule.
+ Add Certs preservation-of-value lemmas for Dijkstra
Step 2 of the LEDGER preservation-of-value plan (#1187). In Dijkstra
(post-#1201), CERTS is the plain reflexive-transitive closure of CERT,
with withdrawal and direct-deposit handling having migrated to the
surrounding ENTITIES rule. Consequently the value-preservation
statement for CERTS reduces to
getCoin s ≡ getCoin s'
This commit adds two new modules:
+ Certs.Properties.PoVLemmas: the per-step lemma CERT-pov, with all
four sub-rule cases (CERT-deleg DELEG-delegate, CERT-deleg
DELEG-dereg, CERT-pool, CERT-gov). The proofs use the
singleton/union helpers now in Ledger.Prelude.
+ Certs.Properties.PoV: the closure-level CERTS-pov, by induction on
the reflexive-transitive closure using CERT-pov at each step.
A one-line addition to Certs/Properties.lagda.md re-exports both new
modules from the top-level Properties namespace.
No parameterised wrapper modules. Both lemmas are top-level
definitions and threading-free for consumers.