Skip to content

Science Not yet confirmed elsewhere1 publisher 2 min read Published

maestro 1.4.0 lets R pipeline authors log row counts and API calls for each run

maestro 1.4.0 lets authors of R pipelines record custom numbers, such as rows read or API calls, with a new update_metric() function. The values stay out of each step's return value, so downstream steps never receive them.

The Scientist · Science desk

How we use AI Send a correction

Each run's metrics are kept beside earlier runs Rows returned by get_metrics() in the release post's example, after the first and second run_schedule() calls.

In the release post's example, the get_metrics() table had 3 rows after the first run_schedule() call and 6 rows after the second. Metrics from both runs were kept and told apart by run_id.

Each run's metrics are kept beside earlier runs
MeasureValueAs ofClaim
After first run_schedule()3 metric rows12
After second run_schedule()6 metric rows13

What happened

  • Before this release maestro tracked execution time and success or failure, with no good way to answer how many rows a pipeline processed or how many API calls it took.
  • After a scheduled run, get_metrics() returns a long data.frame with one row per metric, giving the pipeline name, the run ID, the metric name and its numeric value.
  • Passing increment = TRUE adds to a metric's current value instead of overwriting it, so a loop can count API calls or retry attempts, and a negative value decrements.
  • Outside run_schedule(), such as when a developer tests a pipeline function interactively, update_metric() prints an informational message and records nothing.

Why it matters

  • capability Operators can compare a successful run against the rows it processed. Status and timing data alone could not show a run that succeeded on far less data than usual.
  • decision Each step in a DAG logs under its own run ID, so matching an extract count to a load count from one pass means choosing a key other than run_id.
  • constraint A metric holds one number per name per run, so a latency distribution or a list of values has to be reduced to a single figure before it can be logged.

The release post's example is small. The extract step builds a five-row data frame inside the function as a stand-in for an API call [10] and records rows_read as 5 and bytes_read as 1648 [9]. The second figure comes from as.numeric(object.size(df)) [10]. In our view that measures the object R holds. Against a real API, the bytes transferred would be a different number.

Within one execution, a second call with the same name overwrites the first: the last write wins [11]. Across executions nothing is overwritten. The second run_schedule() call in the post took the output from 3 rows [12] to 6 [13]. That is 3 new rows per call for this two-step DAG [17].

The post calls the plain data.frame a natural fit for monitoring pipeline health over time [14]. The printed table has four columns, and none is a timestamp [5]. Execution time and success or failure sit in get_status() and get_schedule() [15]; nothing in the examples shows whether run_id also appears there. A trend line needs that link, or a timestamp the author adds when writing the table to a database or file.

We think the side channel is sound for a DAG. A step's return value stays the contract between steps [4], and the counters are set from inside the step with just a name and a value [1]. The condition is careful naming, since the metric name is the only label a row carries beyond pipeline and run [5]. maestro is a pipeline orchestration package, and 1.4.0 installs from CRAN with install.packages("maestro") [16].

What to watch

  • Whether a later release adds a timestamp column to get_metrics() or a shared key tying together the steps of one DAG run.
  • Package documentation on whether recorded metrics persist beyond the R session that ran the schedule.

Clarity's read

What the record supports and how the coverage leans. The claims behind it follow.

Reality

Evidence55
Adoption
Insufficient
Hype gap−5
Incentives
Insufficient
Confidence60
Why these scores

Claim ledger

Ranked by verification strength, evidence, and original report placement.

  1. [1]

    The maestro 1.4.0 release lets users record custom metrics from pipelines by calling update_metric() from inside a pipeline with the name of the metric and its value.

    Reported Supported Source: maestro 1.4.0 release post, r-bloggers.comView cited source
  2. [2]

    Before 1.4.0, maestro tracked execution time and success/failure, but there was no good way to answer how many rows a pipeline processed or how many API calls it took.

    Reported Supported Source: maestro 1.4.0 release post, r-bloggers.comView cited source
  3. [3]

    A metric is any value that can be represented as a single number, such as rows processed, bytes read, API calls made, or attempts on a task.

    Reported Supported Source: maestro 1.4.0 release post, r-bloggers.comView cited source

Get this ledger inside ChatGPT. Ask about any of our stories and the answer brings its figure, each claim’s verdict and the sources. Free, no account.

Add to ChatGPTAdd to Claude

Sources

1 independent publisher whose own reporting we read for this story.

  1. r-bloggers.com

    1 article · October 14, 2026

    maestro 1.4.0 adds custom pipeline metrics

Share your take

Let Clarity write the post for you.

Signed-in readers get a short post drafted on this story in the register they choose — narrative, analytical, or a direct position — editable to the last word before it goes anywhere. The share buttons at the top of this story work without an account.

Topics and entities

Follow any of these and your For You feed starts watching them — no settings page required.

Topics

  • Pipeline Orchestration and SchedulingFollow
  • R programmingFollow
  • Pipeline ObservabilityFollow

Entities

Loading related stories