bump: cardano-faucet flake input for dijkstra delegation support
Jun 11, 12-1 AM (10)
Jun 11, 1-2 AM (2)
Jun 11, 2-3 AM (0)
Jun 11, 3-4 AM (2)
Jun 11, 4-5 AM (8)
Jun 11, 5-6 AM (12)
Jun 11, 6-7 AM (34)
Jun 11, 7-8 AM (106)
Jun 11, 8-9 AM (37)
Jun 11, 9-10 AM (20)
Jun 11, 10-11 AM (105)
Jun 11, 11-12 PM (25)
Jun 11, 12-1 PM (38)
Jun 11, 1-2 PM (39)
Jun 11, 2-3 PM (15)
Jun 11, 3-4 PM (20)
Jun 11, 4-5 PM (5)
Jun 11, 5-6 PM (7)
Jun 11, 6-7 PM (26)
Jun 11, 7-8 PM (90)
Jun 11, 8-9 PM (11)
Jun 11, 9-10 PM (5)
Jun 11, 10-11 PM (25)
Jun 11, 11-12 AM (5)
Jun 12, 12-1 AM (8)
Jun 12, 1-2 AM (2)
Jun 12, 2-3 AM (2)
Jun 12, 3-4 AM (4)
Jun 12, 4-5 AM (7)
Jun 12, 5-6 AM (15)
Jun 12, 6-7 AM (46)
Jun 12, 7-8 AM (19)
Jun 12, 8-9 AM (28)
Jun 12, 9-10 AM (22)
Jun 12, 10-11 AM (29)
Jun 12, 11-12 PM (42)
Jun 12, 12-1 PM (24)
Jun 12, 1-2 PM (26)
Jun 12, 2-3 PM (22)
Jun 12, 3-4 PM (38)
Jun 12, 4-5 PM (23)
Jun 12, 5-6 PM (19)
Jun 12, 6-7 PM (26)
Jun 12, 7-8 PM (12)
Jun 12, 8-9 PM (17)
Jun 12, 9-10 PM (5)
Jun 12, 10-11 PM (30)
Jun 12, 11-12 AM (6)
Jun 13, 12-1 AM (6)
Jun 13, 1-2 AM (2)
Jun 13, 2-3 AM (0)
Jun 13, 3-4 AM (3)
Jun 13, 4-5 AM (0)
Jun 13, 5-6 AM (3)
Jun 13, 6-7 AM (7)
Jun 13, 7-8 AM (5)
Jun 13, 8-9 AM (6)
Jun 13, 9-10 AM (14)
Jun 13, 10-11 AM (12)
Jun 13, 11-12 PM (2)
Jun 13, 12-1 PM (23)
Jun 13, 1-2 PM (21)
Jun 13, 2-3 PM (8)
Jun 13, 3-4 PM (1)
Jun 13, 4-5 PM (4)
Jun 13, 5-6 PM (4)
Jun 13, 6-7 PM (3)
Jun 13, 7-8 PM (3)
Jun 13, 8-9 PM (7)
Jun 13, 9-10 PM (16)
Jun 13, 10-11 PM (19)
Jun 13, 11-12 AM (24)
Jun 14, 12-1 AM (18)
Jun 14, 1-2 AM (0)
Jun 14, 2-3 AM (0)
Jun 14, 3-4 AM (0)
Jun 14, 4-5 AM (2)
Jun 14, 5-6 AM (0)
Jun 14, 6-7 AM (2)
Jun 14, 7-8 AM (3)
Jun 14, 8-9 AM (0)
Jun 14, 9-10 AM (1)
Jun 14, 10-11 AM (2)
Jun 14, 11-12 PM (10)
Jun 14, 12-1 PM (8)
Jun 14, 1-2 PM (4)
Jun 14, 2-3 PM (8)
Jun 14, 3-4 PM (2)
Jun 14, 4-5 PM (1)
Jun 14, 5-6 PM (1)
Jun 14, 6-7 PM (0)
Jun 14, 7-8 PM (11)
Jun 14, 8-9 PM (1)
Jun 14, 9-10 PM (13)
Jun 14, 10-11 PM (29)
Jun 14, 11-12 AM (23)
Jun 15, 12-1 AM (8)
Jun 15, 1-2 AM (10)
Jun 15, 2-3 AM (4)
Jun 15, 3-4 AM (4)
Jun 15, 4-5 AM (1)
Jun 15, 5-6 AM (4)
Jun 15, 6-7 AM (6)
Jun 15, 7-8 AM (41)
Jun 15, 8-9 AM (26)
Jun 15, 9-10 AM (11)
Jun 15, 10-11 AM (34)
Jun 15, 11-12 PM (25)
Jun 15, 12-1 PM (40)
Jun 15, 1-2 PM (26)
Jun 15, 2-3 PM (21)
Jun 15, 3-4 PM (24)
Jun 15, 4-5 PM (21)
Jun 15, 5-6 PM (13)
Jun 15, 6-7 PM (13)
Jun 15, 7-8 PM (7)
Jun 15, 8-9 PM (26)
Jun 15, 9-10 PM (20)
Jun 15, 10-11 PM (22)
Jun 15, 11-12 AM (39)
Jun 16, 12-1 AM (11)
Jun 16, 1-2 AM (5)
Jun 16, 2-3 AM (1)
Jun 16, 3-4 AM (9)
Jun 16, 4-5 AM (6)
Jun 16, 5-6 AM (1)
Jun 16, 6-7 AM (16)
Jun 16, 7-8 AM (81)
Jun 16, 8-9 AM (18)
Jun 16, 9-10 AM (28)
Jun 16, 10-11 AM (22)
Jun 16, 11-12 PM (31)
Jun 16, 12-1 PM (37)
Jun 16, 1-2 PM (49)
Jun 16, 2-3 PM (34)
Jun 16, 3-4 PM (28)
Jun 16, 4-5 PM (37)
Jun 16, 5-6 PM (17)
Jun 16, 6-7 PM (26)
Jun 16, 7-8 PM (9)
Jun 16, 8-9 PM (11)
Jun 16, 9-10 PM (4)
Jun 16, 10-11 PM (31)
Jun 16, 11-12 AM (9)
Jun 17, 12-1 AM (8)
Jun 17, 1-2 AM (8)
Jun 17, 2-3 AM (11)
Jun 17, 3-4 AM (4)
Jun 17, 4-5 AM (1)
Jun 17, 5-6 AM (6)
Jun 17, 6-7 AM (99)
Jun 17, 7-8 AM (33)
Jun 17, 8-9 AM (22)
Jun 17, 9-10 AM (56)
Jun 17, 10-11 AM (18)
Jun 17, 11-12 PM (19)
Jun 17, 12-1 PM (56)
Jun 17, 1-2 PM (28)
Jun 17, 2-3 PM (37)
Jun 17, 3-4 PM (26)
Jun 17, 4-5 PM (19)
Jun 17, 5-6 PM (16)
Jun 17, 6-7 PM (10)
Jun 17, 7-8 PM (13)
Jun 17, 8-9 PM (12)
Jun 17, 9-10 PM (37)
Jun 17, 10-11 PM (29)
Jun 17, 11-12 AM (14)
Jun 18, 12-1 AM (4)
2,995 commits this week
Jun 11, 2026
-
Jun 18, 2026
:card_file_box: Update status summary [skip ci] [upptime]
:pencil: Update summary in README [skip ci] [upptime]
Artifacts generated from 425d810cb609b9937498d60505b01485e937b0ff
More tests, ensure all errors propagate
fix(chainsync): address review feedback on header sync strategy
- Make trackedConnIdsEqual nil-safe by comparing LocalAddr/RemoteAddr individually instead of via ConnectionId.String(), which panics when either address is nil. The primary-strategy active-peer check routes through this helper, so a partial-nil tracked connection id could crash roll-forward processing. - Exclude stalled peers from the round-robin eligible set so a peer that has stopped delivering headers is not selected as the ingress driver, which would suppress healthy peers' headers until the next rotation. - Use internal/test/testutil channel helpers (RequireReceive / RequireNoReceive) instead of ad-hoc select + time.After in the new chainsync and ouroboros tests, per the repo's test conventions. - Add tests covering stalled-driver exclusion and partial-nil connection id handling. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]> Signed-off-by: Chris Guiney <[email protected]>
Add resume-here checklist for removing the provider PoV lemmas
Records the precise, ordered steps to make this PR faithful to the top-down plan: delete the Certs-PoV provider modules (Certs/Properties/PoV and PoVLemmas, which are #1210's work), drop their imports from Certs/Properties, and lift the facts they provide (CERTS-pov, and later CERTS-coinFromDeposits-updateCertDeposits) to module parameters in Entities.Properties.PoV and the LEDGER-PoV module. Notes that Utxo/Utxow-PoV are already absent (deferred to #1189) and already parameterized, flags the Conway-side touches to re-check, and cross-references the separate coinFromGovDeposit re-derivation. Prose only; to be executed in a session with the Agda toolchain so each step can be typechecked. https://claude.ai/code/session_0174ZBS1RKAGSbBXDsESUwoA
kes: rotate sanchonet
Artifacts generated from 304ed0912b721f57fd2e965ccfeff7032fdd31ba
Fix two preservation-of-value soundness bugs (deposit sign-swap; uncounted gov deposits)
Both bugs are present on master@bd56c87. Only the prerequisites (#1208 hoist, #1214 GovActionState.deposit) are merged; the fixes themselves were still open. Verified against the trusted Conway spec and the Dijkstra GOV rule. Finding A (deposit sign-swap, Utxo.lagda.md): `consumed` carried newCertDeposits (posPart of depositsChange) and `consumedTx` carried govProposalsDeposits, while `produced` carried refundCertDeposits (negPart). Trusted Conway (Conway/Specification/Utxo.lagda.md:431-447) is the opposite under the identical depositsChange = after - before convention: posPart/newDeposits on PRODUCED, negPart/refunds on CONSUMED. The swapped sides let a transaction create value (e.g. a stake-key registration could output its deposit amount in excess of inputs). Fix: move newCertDeposits and govProposalsDeposits to produced, refundCertDeposits to consumed. Finding B (gov deposits uncounted, Ledger.lagda.md): getCoin LedgerState summed getCoin(UTxOState) + rewardsBalance(DState) + coinFromDeposits(CertState), with no governance term. Post-#1214 the GOV rule records gov-action deposits in GovActionState.deposit (Gov.lagda.md:451-453), never in GState.deposits, so coinFromDeposits (which sums the now-vacant GState.deposits pot) misses them. Added coinFromGovDeposit : GovState -> Coin (sum of GovActionState.deposit) to getCoin LedgerState. With Finding A charging govProposalsDeposits = pp.govActionDeposit on produced and GOV-Propose storing exactly that amount, the LEDGER-pov equation balances. The stale "GState growth" comment is rewritten. https://claude.ai/code/session_0174ZBS1RKAGSbBXDsESUwoA
Address PR #1219 Copilot review comments
- Ledger.lagda.md: HasCoin-CertState counts only the rewards balance (getCoin = rewardsBalance ∘ DStateOf), not the deposit pots; correct the prose to say components 3 and 4 (coinFromDeposits, coinFromGovDeposit) are added at the LedgerState level. - CHANGELOG.md: the HasCoin-LedgerState entry now also lists the coinFromGovDeposit summand, not just the three CertState deposit fields. - session-start.sh: enabling flakes keyed only on the presence of any experimental-features line, so a bare `experimental-features = nix-command` would skip flakes. Check for `flakes` specifically and append via extra-experimental-features (which doesn't clobber an existing setting). https://claude.ai/code/session_0174ZBS1RKAGSbBXDsESUwoA
Add Agda typecheck skill + SessionStart hook for the Nix toolchain
The project typechecks only via its Nix flake; there is no system agda. To make Agda checking available to Claude Code (this repo, web sessions): - .claude/skills/agda-typecheck/SKILL.md: documents the `nix develop --command agda <file>` workflow, common Agda error triage, and the project quality gate. - .claude/hooks/session-start.sh + .claude/settings.json: a SessionStart hook that installs nix, enables flakes, points at the cache.nixos.org/cache.iog.io substituters (keys from ci.yml), and pre-warms `nix develop`. Guarded by CLAUDE_CODE_REMOTE; non-fatal and clearly logged if it can't proceed. NETWORK PREREQUISITE: the hook needs the environment network policy to allow nixos.org, cache.nixos.org, cache.iog.io and github.com. The default policy in this session returns 403 for nixos.org and cache.iog.io, so the hook currently logs that and exits 0 without provisioning. Once the policy permits those hosts, the toolchain installs and is cached for subsequent sessions. https://claude.ai/code/session_0174ZBS1RKAGSbBXDsESUwoA
Document post-A&B interface delta for LEDGER-pov assembly
The Ledger/Properties/PoV chain is the previous session's draft, written against the pre-fix spec, and is not yet wired into the build (Ledger/Properties.lagda.md imports only Computational). It predates both soundness fixes: - getCoin LedgerState now has a fourth summand coinFromGovDeposit (GovStateOf s); the chain still models the old three-summand total and uses the now-renamed coinFromDeposit (-> coinFromDeposits). - the Utxo deposit sides were swapped to match Conway. Re-deriving the LEDGER-V chain to thread the gov summand and the swapped sides requires Agda (the project typechecks only via the Nix flake, unavailable in this environment), so the chain body is left unchanged. Recorded as an in-file resume note: corrected the getCoin recall, and specified the two new module parameters a future Gov.Properties.PoV must provide (rmOrphanDRepVotes-coinFromGovDeposit and GOVS-coinFromGovDeposit). posNeg-deposits is a pure posPart/negPart cancellation, verified correct and unaffected by the fixes. https://claude.ai/code/session_0174ZBS1RKAGSbBXDsESUwoA
Artifacts generated from 35b5f908ca81f11b30fba050bc13d87ad25e0a78
Fix flakes detection in SessionStart hook (PR review)
Enabling flakes keyed only on the presence of any experimental-features line, so a bare `experimental-features = nix-command` would skip enabling flakes and `nix develop` would still fail. Check for `flakes` specifically and append via extra-experimental-features, which doesn't clobber an existing setting. https://claude.ai/code/session_0174ZBS1RKAGSbBXDsESUwoA
Address PR #1219 Copilot review comments
- Ledger.lagda.md: HasCoin-CertState counts only the rewards balance (getCoin = rewardsBalance ∘ DStateOf), not the deposit pots; correct the prose to say components 3 and 4 (coinFromDeposits, coinFromGovDeposit) are added at the LedgerState level. - CHANGELOG.md: the HasCoin-LedgerState entry now also lists the coinFromGovDeposit summand, not just the three CertState deposit fields. - session-start.sh: enabling flakes keyed only on the presence of any experimental-features line, so a bare `experimental-features = nix-command` would skip flakes. Check for `flakes` specifically and append via extra-experimental-features (which doesn't clobber an existing setting). https://claude.ai/code/session_0174ZBS1RKAGSbBXDsESUwoA
Add Agda typecheck skill + SessionStart hook for the Nix toolchain
The project typechecks only via its Nix flake; there is no system agda. To make Agda checking available to Claude Code (this repo, web sessions): - .claude/skills/agda-typecheck/SKILL.md: documents the `nix develop --command agda <file>` workflow, common Agda error triage, and the project quality gate. - .claude/hooks/session-start.sh + .claude/settings.json: a SessionStart hook that installs nix, enables flakes, points at the cache.nixos.org/cache.iog.io substituters (keys from ci.yml), and pre-warms `nix develop`. Guarded by CLAUDE_CODE_REMOTE; non-fatal and clearly logged if it can't proceed. NETWORK PREREQUISITE: the hook needs the environment network policy to allow nixos.org, cache.nixos.org, cache.iog.io and github.com. The default policy in this session returns 403 for nixos.org and cache.iog.io, so the hook currently logs that and exits 0 without provisioning. Once the policy permits those hosts, the toolchain installs and is cached for subsequent sessions. https://claude.ai/code/session_0174ZBS1RKAGSbBXDsESUwoA
feat: replace /healthcheck with /health liveness and /healthz readiness endpoints (#457)
Introduce decoupled liveness and readiness probe endpoints to improve stability and traffic routing in orchestrated environments like Kubernetes. - Add GET /health for a lightweight HTTP-server-only liveness check. - Add GET /healthz for node connectivity readiness, backed by a background poller. - Add configuration for background health check interval. - Fix nil pointer risk in submit witnesses parsing and style issues. - Update documentation in README.md. BREAKING CHANGE: The /healthcheck endpoint has been completely removed and replaced with /health and /healthz. Any external health checks/probes targeting /healthcheck will receive a 404 and must be updated. Signed-off-by: Ales Verbic <[email protected]>
feat(chainsync): add configurable multi-active header sync strategy
Add a configurable strategy that decides which eligible ChainSync peer drives ledger ingress when multiple peers offer valid next headers: - primary (default): a single active peer drives ingress with failover; new headers from any eligible peer publish and the active peer replays duplicates first seen elsewhere. Preserves prior behavior. - parallel: every eligible peer supplies headers concurrently; the first reporter wins and duplicates are deduplicated before ledger ingress so a header never enters ledger processing twice. - round-robin: a single rotating ingress driver, advanced on the stall-check cadence. The roll-forward handler runs cross-peer deduplication and fork detection first, then calls State.ShouldPublishHeader to apply the strategy. Tip tracking, observed-header recording, and fork detection remain active for all eligible peers under every strategy, so divergent peer headers still produce fork handling and a stalled or disconnected peer does not strand ingestion. Wire the strategy through YAML (chainsync.strategy), env (DINGO_CHAINSYNC_STRATEGY), and CLI (--chainsync-strategy). Remove the now-dead local sameConnectionId/sameNetAddr copy from ouroboros. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]> Signed-off-by: Chris Guiney <[email protected]>
🟥 keria is down (0 in 0 ms) [skip ci] [upptime]
🟥 get-vote-receipt-api is down (0 in 0 ms) [skip ci] [upptime]
🟥 get-votes-api is down (0 in 0 ms) [skip ci] [upptime]
🟥 cast-vote-api is down (0 in 0 ms) [skip ci] [upptime]