Home /
Input Output /
cardano-node
May 25, 11-12 AM (0)
May 26, 12-1 AM (0)
May 26, 1-2 AM (0)
May 26, 2-3 AM (0)
May 26, 3-4 AM (0)
May 26, 4-5 AM (0)
May 26, 5-6 AM (0)
May 26, 6-7 AM (0)
May 26, 7-8 AM (1)
May 26, 8-9 AM (0)
May 26, 9-10 AM (0)
May 26, 10-11 AM (1)
May 26, 11-12 PM (0)
May 26, 12-1 PM (0)
May 26, 1-2 PM (0)
May 26, 2-3 PM (0)
May 26, 3-4 PM (0)
May 26, 4-5 PM (0)
May 26, 5-6 PM (0)
May 26, 6-7 PM (0)
May 26, 7-8 PM (0)
May 26, 8-9 PM (0)
May 26, 9-10 PM (0)
May 26, 10-11 PM (0)
May 26, 11-12 AM (0)
May 27, 12-1 AM (0)
May 27, 1-2 AM (1)
May 27, 2-3 AM (0)
May 27, 3-4 AM (0)
May 27, 4-5 AM (28)
May 27, 5-6 AM (0)
May 27, 6-7 AM (2)
May 27, 7-8 AM (0)
May 27, 8-9 AM (0)
May 27, 9-10 AM (6)
May 27, 10-11 AM (8)
May 27, 11-12 PM (0)
May 27, 12-1 PM (1)
May 27, 1-2 PM (0)
May 27, 2-3 PM (0)
May 27, 3-4 PM (0)
May 27, 4-5 PM (0)
May 27, 5-6 PM (0)
May 27, 6-7 PM (0)
May 27, 7-8 PM (0)
May 27, 8-9 PM (1)
May 27, 9-10 PM (0)
May 27, 10-11 PM (0)
May 27, 11-12 AM (0)
May 28, 12-1 AM (0)
May 28, 1-2 AM (0)
May 28, 2-3 AM (0)
May 28, 3-4 AM (0)
May 28, 4-5 AM (0)
May 28, 5-6 AM (2)
May 28, 6-7 AM (0)
May 28, 7-8 AM (1)
May 28, 8-9 AM (1)
May 28, 9-10 AM (11)
May 28, 10-11 AM (3)
May 28, 11-12 PM (0)
May 28, 12-1 PM (0)
May 28, 1-2 PM (0)
May 28, 2-3 PM (0)
May 28, 3-4 PM (0)
May 28, 4-5 PM (0)
May 28, 5-6 PM (1)
May 28, 6-7 PM (0)
May 28, 7-8 PM (0)
May 28, 8-9 PM (0)
May 28, 9-10 PM (0)
May 28, 10-11 PM (1)
May 28, 11-12 AM (0)
May 29, 12-1 AM (2)
May 29, 1-2 AM (3)
May 29, 2-3 AM (0)
May 29, 3-4 AM (0)
May 29, 4-5 AM (0)
May 29, 5-6 AM (0)
May 29, 6-7 AM (1)
May 29, 7-8 AM (0)
May 29, 8-9 AM (1)
May 29, 9-10 AM (0)
May 29, 10-11 AM (1)
May 29, 11-12 PM (0)
May 29, 12-1 PM (13)
May 29, 1-2 PM (10)
May 29, 2-3 PM (2)
May 29, 3-4 PM (0)
May 29, 4-5 PM (0)
May 29, 5-6 PM (8)
May 29, 6-7 PM (1)
May 29, 7-8 PM (0)
May 29, 8-9 PM (0)
May 29, 9-10 PM (0)
May 29, 10-11 PM (0)
May 29, 11-12 AM (0)
May 30, 12-1 AM (1)
May 30, 1-2 AM (0)
May 30, 2-3 AM (0)
May 30, 3-4 AM (0)
May 30, 4-5 AM (0)
May 30, 5-6 AM (0)
May 30, 6-7 AM (0)
May 30, 7-8 AM (0)
May 30, 8-9 AM (0)
May 30, 9-10 AM (0)
May 30, 10-11 AM (0)
May 30, 11-12 PM (1)
May 30, 12-1 PM (0)
May 30, 1-2 PM (0)
May 30, 2-3 PM (0)
May 30, 3-4 PM (0)
May 30, 4-5 PM (0)
May 30, 5-6 PM (0)
May 30, 6-7 PM (0)
May 30, 7-8 PM (0)
May 30, 8-9 PM (0)
May 30, 9-10 PM (0)
May 30, 10-11 PM (0)
May 30, 11-12 AM (1)
May 31, 12-1 AM (0)
May 31, 1-2 AM (0)
May 31, 2-3 AM (0)
May 31, 3-4 AM (0)
May 31, 4-5 AM (0)
May 31, 5-6 AM (0)
May 31, 6-7 AM (0)
May 31, 7-8 AM (0)
May 31, 8-9 AM (0)
May 31, 9-10 AM (0)
May 31, 10-11 AM (0)
May 31, 11-12 PM (0)
May 31, 12-1 PM (0)
May 31, 1-2 PM (0)
May 31, 2-3 PM (0)
May 31, 3-4 PM (0)
May 31, 4-5 PM (0)
May 31, 5-6 PM (0)
May 31, 6-7 PM (0)
May 31, 7-8 PM (0)
May 31, 8-9 PM (0)
May 31, 9-10 PM (0)
May 31, 10-11 PM (0)
May 31, 11-12 AM (0)
Jun 01, 12-1 AM (0)
Jun 01, 1-2 AM (1)
Jun 01, 2-3 AM (1)
Jun 01, 3-4 AM (0)
Jun 01, 4-5 AM (0)
Jun 01, 5-6 AM (0)
Jun 01, 6-7 AM (0)
Jun 01, 7-8 AM (0)
Jun 01, 8-9 AM (30)
Jun 01, 9-10 AM (3)
Jun 01, 10-11 AM (2)
Jun 01, 11-12 PM (0)
Jun 01, 12-1 PM (0)
Jun 01, 1-2 PM (1)
Jun 01, 2-3 PM (0)
Jun 01, 3-4 PM (0)
Jun 01, 4-5 PM (1)
Jun 01, 5-6 PM (2)
Jun 01, 6-7 PM (0)
Jun 01, 7-8 PM (0)
Jun 01, 8-9 PM (0)
Jun 01, 9-10 PM (1)
Jun 01, 10-11 PM (1)
Jun 01, 11-12 AM (0)
157 commits this week
May 26, 2026
-
Jun 02, 2026
Extract functions for strings to avoid repetition
cardano-node, cardano-tracer: track hermod-tracing PR; rename suiEra -> suiLatestSupportedEra
cabal.project: add source-repository-package stanza for hermod-tracing PR #9 (Rename NodeStartupInfo.suiEra to suiLatestSupportedEra), commit 4a3baa5e NodeStartupInfo.hs: update documentFor to reflect new field name and meaning EraSettings.hs: update suiEra -> suiLatestSupportedEra at call site
grafana-datasource: suppress deprecated TypeScript options warning
fix(generate-release-changelog-links): replace turtle with plain IO
turtle ^>= 1.6.x requires optparse-applicative < 0.19, conflicting with the rest of the project. allow-newer would satisfy the solver but turtle 1.6.x fails to compile against 0.19 because of the breaking Doc type change (ansi-wl-pprint -> prettyprinter). Replace turtle usage with standard IO: - Shell monad -> plain list IO with mapM/concat - options/optPath/argPath/argText -> execParser/strOption/argument directly - Pattern URL parser -> Text.breakOn/stripPrefix in Maybe monad - printf/format -> Text concatenation and hPutStrLn stderr - die -> exitFailure helper Also drops foldl and prettyprinter which were only needed via turtle.
TOSQUASH: cardano-testnet/test/cardano-testnet-test/Cardano/Testnet/Test/Rpc/SearchUtxos.hs
Co-authored-by: Copilot Autofix powered by AI <[email protected]>
cardano-node: fix Protocol show instance to say Cardano instead of Byron; Shelley
cardano-tracer, grafana-datasource: /nodes returns {nodeName, slug} objects; slug-based node API
TimeseriesServer.hs:
- /timeseries/nodes: return [{nodeName, slug}] from RouteDictionary instead of bare slugs
- Import Text.Slugify removed (slugs come directly from RouteDictionary keys)
grafana-datasource:
- NodeEntry type: {nodeName, slug} mirroring server response
- fetchNodes: two-column frame (Node Name, Slug)
- metricFindQuery: {text: nodeName, value: slug} so variable displays name, passes slug
- Rename query field nodeName -> nodeNameSlug throughout (types, datasource, QueryEditor, dashboard)
- Dashboard variable node_name -> node_name_slug
- QueryEditor: label "Node Name (slug)", tooltip, updated placeholder
cardano-timeseries-io | cardano-tracer: bump version to 1.1.0 and 0.5.0 respectively and update CHANGELOGs
cardano-timeseries-io | cardano-tracer: fix bugs and style issues from code review
- Elab.hs: fix copy-paste error in binary arithmetic op elab (rhs hole was unified against lhsTy instead of rhsTy); rename evalBinaryArithmethicOpElabProblem to evalBinaryArithmeticOpElabProblem (typo) - Elab.hs: elaborate `metrics` as List Text (was Text); add Str elab case - Elab/Typing.hs, Resolve.hs, Unify.hs: add List Ty to support metrics type - Interp.hs: guard avg/min/max against empty instant vector; fix rate to error on single-point timeseries instead of dividing by zero - Interp/Value.hs: use showFFloat in Show instance for Scalar to avoid scientific notation in JSON output - TimeseriesServer.hs: fix minimumRetentionMillis units (seconds → ms); remove unused RecordWildCards pragma; align sleep delay with Monitoring.hs - Acceptors/Utils.hs: align new imports with surrounding import block
cardano-tracer: add node info/startup/state HTTP endpoints to timeseries server
New routes on the timeseries server:
GET /timeseries/nodes — list connected node IDs
GET /timeseries/node/{id}/info — NodeInfo + uptimeSeconds
GET /timeseries/node/{id}/startup — NodeStartupInfo
GET /timeseries/node/{id}/state (RTVIEW) — sync progress %
The server now receives TracerEnv instead of individual fields so it can
access teDPRequestors, teCurrentDPLock, and teConnectedNodes.
The /state endpoint uses data point key "NodeAddBlock" (the namespace
cardano-node actually stores the NodeState data point under) rather than
"NodeState", which was always empty.
cardano-tracer, grafana-datasource: extend series labels, rename node-state endpoint, misc
- Acceptors/Utils.hs: include node_name alongside node_id in SeriesIdentifier
- Component.hs: generalise insert to accept SeriesIdentifier directly; fix
pruning period default (was 3600 ms ≈ 3.6 s, now 15 min)
- Component/Trace.hs: update TimeseriesTraceInsert to carry SeriesIdentifier;
emit query_text/query_result only at DDetailed; lower Prune severity to Debug
- TimeseriesServer.hs: rename node/state → node/sync-progress; remove #if RTVIEW
guard (endpoint is now unconditionally available); return JSON objects from
GET config/retention and GET config/pruning instead of plain text
- Utils.hs: move NodeStateWrapper (and its FromJSON instance) here from
RTView/Update/NodeState.hs so it can be shared without the RTVIEW flag;
move vector from rtview-only to unconditional build-depends
- RTView/Update/NodeState.hs: remove NodeStateWrapper definition (now in Utils)
- grafana-datasource: rename node-state → node-sync-progress throughout
(QueryEditor, datasource, types, dashboard); rename dashboard to rtview-port
- grafana-datasource: add README with build and run instructions
- grafana-datasource: expose SeriesIdentifier labels as proper Grafana field
labels instead of baking them into the frame name string; add legendFormat
field to queries so users can control the legend via {{label_name}} syntax
grafana-datasource: enable multi-select on node_id variable for panel repeat
cardano-tracer, grafana-datasource: node_name as sole series label; slug-based node API
TimeseriesServer.hs:
- Thread RouteDictionary to timeseriesApp and runTimeseriesServer
- /timeseries/nodes: return slugified node names from RouteDictionary (was raw NodeIds from teConnectedNodes)
- /timeseries/node/{slug}/*: accept slug, resolve to NodeId via RouteDictionary + Bimap reverse-lookup; 404 on unknown slug
- Servers.hs: drop const wrapper; pass shared IO RouteDictionary to runTimeseriesServer
Acceptors/Utils.hs:
- Insert with {node_name} label only; drop node_id label
grafana-datasource:
- Rename nodeId -> nodeName throughout (types, datasource, QueryEditor, dashboard)
- Dashboard variable node_id -> node_name; panel titles and repeats updated
grafana-datasource: add node info/startup/state/uptime query types and dashboard panels
New query types in the datasource plugin: nodes — lists all connected node IDs (used by $node_id variable) node-info — name, protocol, version, commit, start time, uptime node-startup — era, slot length, epoch length, KES period node-state — sync progress % New panels in rtview.json (all repeat by $node_id variable): Connected Nodes table, Node Info table, Startup table, Sync % stat, Uptime stat metricFindQuery populates the $node_id query variable automatically from /timeseries/nodes. $__from/$__to in timeseries queries are pre-processed to valid timestamp expressions before template variable expansion.
bench | grafana-datasource: provisioned RTView dashboard; enable RTView in ci-bench-timeseries
- Add provisioned Grafana dashboard mimicking RTView's four sections: Resources, Blockchain, Leadership, Transactions (26 panels, row-based collapsible sections, byte units for memory/mempool panels) - Pin datasource uid in provisioning so dashboard references are stable - Mount dashboards directory in docker-compose - Enable RTView (hasRTView, port 3300) in ci-bench-timeseries profile alongside the existing timeseries endpoint
timeseries: add noncanonical rule for Duration + Duration
When both operands are known to be Duration but the result type is still a hole, force the hole to Duration and re-queue as the canonical Duration + Duration : Duration problem. This allows standalone expressions like `1s + 2s` to elaborate without needing an outer context to drive the result type.
timeseries: give the elaborator metric-name awareness for better errors
St now carries availableMetrics :: Set MetricIdentifier, populated at the call site via metrics store (or Set.empty in metric-free contexts like the elab test suite). The fallback Variable case — previously an unconditional metric assumption — now checks membership in availableMetrics and throws "Undefined name: <v>" when the name appears neither in the local context nor in the store, replacing the confusing downstream type-mismatch error that occurred before.
bench | grafana-datasource: align query API with Prometheus conventions
- POST /timeseries/query now accepts JSON body {"query": "...", "time": <optional Unix seconds>}
- Success response wrapped in {"status":"success","data":...} envelope
- Error responses use {"status":"error","errorType":"...","error":"..."} format
- errorType mirrors Prometheus: "parse", "bad_data", "execution"
- Plugin updated to send application/json body and unwrap response envelope
- Remove ConfigEditor.tsx (Grafana's built-in URL field suffices)
grafana-datasource: add $__interval step to all dashboard range queries
bench | timeseries: add RangeVector/Scalar arithmetic; fix typing.txt inconsistencies
Implements pointwise arithmetic (add, sub, mul, div) between RangeVector Scalar and Scalar, following the existing InstantVector/Scalar pattern. This enables queries like 'metric[now - 1h; now] / 1048576' in Grafana panels. Fixes ten inconsistencies found in typing.txt: missing List type in grammar, filter_by_label argument order, A->B type formation rule conclusion, := vs ≔ notation, 'Syntax hugar' typo, map variable name mismatch, RangeVector missing type parameter in quantile_over_time, four missing instant_vector_scalar relation rules, mul_instant_vector_scalar missing arguments, and stale metrics return type (Text -> List Text). Adds a precondition note to 'interp' that the input expression must be well-typed.
cardano-profile: introduce 6-dense-timeseries-1h
Add 6-dense-timeseries-1h as a copy of 6-dense-1h with tracerTimeseries enabled: 6 nodes, 1-hour duration, dense topology. The tracerTimeseries combinator in Primitives.hs is retained. Regenerate all-profiles-coay.json. Enable RTView in this profile.