Skip to content

SciMLTesting 2.3.0 breaks facade sublibrary QA on inherited reexports #1278

Description

@ChrisRackauckas-Claude

Summary

SciMLTesting 2.3.0 makes the rendered-public-API audit mandatory by default. That breaks QA for facade-style Optimization.jl sublibraries whose public namespace is largely inherited through reexports.

On a clean origin/master checkout at 34a8fd5cb3484c1c7ce471f7964d0bf81bc9796a, OptimizationOptimisers_QA fails only public API is rendered in docs, reporting 300 unrendered names:

Quality Assurance | 18 Pass | 1 Fail | 1 Broken | 20 Total

The same dependency update affects current PR CI independently of its diff:

Both jobs resolve SciMLTesting 2.3.0 and fail only the rendered-public-API check. The corresponding core jobs pass.

Reproduction

Using Julia 1.12.6 from a clean checkout:

GROUP=OptimizationOptimisers_QA JULIA_PKG_PRECOMPILE_AUTO=0 julia +1.12 --startup-file=no --project=. -e 'using Pkg; Pkg.test()'

The dependency boundary is exact:

  • SciMLTesting 2.2.0: the same harness passes (18 Pass, 1 Broken).
  • SciMLTesting 2.3.0: the same harness fails (18 Pass, 1 Fail, 1 Broken).

The upstream behavior change is SciML/SciMLTesting.jl@044d89a, which changes run_api_docs(...; rendered=false) to rendered=true by default.

Existing upstream fix is incomplete

SciML/SciMLTesting.jl#27 is designed to exclude inherited public reexports from the local rendered-doc obligation. I tested its current head (a5ccb593f0f2551b9a325da8960701b754dfd004) with the exact OptimizationOptimisers_QA harness.

It reduces the failure from 300 names to these nine, but QA still fails:

DEFAULT_CALLBACK
DEFAULT_DATA
DebugLevel
ErrorLevel
InfoLevel
MaxSense
MinSense
Silent
WarnLevel

Those are inherited values/constants or enum values. The PR's parentmodule(getfield(pkg, name)) !== pkg classification handles types and functions but cannot reliably recover binding provenance for these values.

The proper fix should preserve rendered-doc enforcement for package-owned API while classifying inherited bindings, including constants and enum values, correctly. Disabling the check, marking it broken, or pinning SciMLTesting would only hide the underlying audit problem.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions