nikolas.sapa
October 2, 2026

What upstream contributions taught me about reliable tools

Recent upstream work kept returning to four questions:

Can a caller see the original failure? Does a seed reproduce the run? Does the public API actually exist? Can a user find the supported configuration?

Each became a concrete merged contribution.

WebdriverIO: preserve the failure during recovery

A stale element can trigger a refetch. If that recovery also fails, the original error still matters.

My WebdriverIO contribution, merged September 20, preserves the original stale-element error when refetch fails.

Recovery paths are part of the interface. Replacing the first failure with an incidental recovery failure can send callers looking in the wrong place.

I now look at the unhappy path earlier: what reaches the caller after every retry has failed?

CapyMOA: a seed needs to cover the actual fit

Reproducibility is a promise about behavior. Accepting a seed in a constructor is only the start.

My GDumb fix in CapyMOA, merged September 24, makes its offline fit reproducible under that seed. Other work in the library covered seed contracts for stochastic classifiers and regressors, and drift-detector reset behavior.

The recurring question is where state enters the computation. Initialization, fitting, and resetting can each introduce state. A reproducibility check needs to reach the operation users actually run.

River: public exports should resolve

A name listed in __all__ looks like a promise. If it no longer resolves, the package advertises an interface it does not provide.

My River contribution, merged September 26, removes stale exports and adds a resolution guard test.

The check protects a small contract: exported names must refer to something real. This kind of test stays useful when implementation details change because it checks the public boundary.

Presidio: supported configuration needs documentation

Presidio's analyzer server supports RECOGNIZER_REGISTRY_CONF_FILE. Users should be able to discover that override without tracing server code.

My documentation contribution, merged September 29, makes it visible.

A feature can already work and still be difficult to use. Documentation closes that gap when it names the actual setting and its scope.

What I take back to my own projects

These changes affect different libraries, but each protects something a user already depends on.

For my npm and PyPI tools, that means checking failure behavior, reproducibility, exports, and documented settings as part of maintenance. The release number alone cannot tell someone whether those contracts hold.

The contribution links show the actual changes and reviews. That is the record I want the portfolio to carry.