Skip to content

Self-QA reports non-public qualified dependency accesses #67

Description

@ChrisRackauckas-Claude

Reproducer

On clean main at f5884b6:

julia +release --project=. --startup-file=no -e 'using Pkg; Pkg.instantiate(); using SciMLTesting; run_qa(SciMLTesting; JET = nothing)'

ExplicitImports reports NonPublicQualifiedAccessException for:

Base.Docs.Binding
Pkg.dependencies
Core.eval
Base.loaded_modules
Base.Docs.meta
Base.Meta.parseall
Base.structdiff
Aqua.test_all

The full clean-main result was 16 passes, one dependency-compat failure, and three errors. The compat failure and the two source-analyzability errors are independently addressed by #64 and #65. With the analyzability fix applied, the two source checks pass and this public-access error remains directly visible.

Root-cause audit

Three accesses have straightforward local/public replacements:

  • Core.eval(Main, expr) can use Julia's public @eval syntax.
  • Base.structdiff can be replaced by a small local NamedTuple filter.
  • Base.Meta.parseall can be replaced by public Meta.parse over a wrapped block.

The remaining accesses need owner API work or a deliberately documented exception:

  • Aqua.test_all is documented as Aqua's primary entry point, but Aqua declares and exports no API names.
  • Pkg.dependencies is rendered on Pkg's API page, but it is absent from Pkg's Julia 1.12 public declaration.
  • Base exposes no public loaded-module enumeration equivalent to Base.loaded_modules/Base.loaded_modules_array; SciMLTesting uses it to detect loaded SciMLBase/CommonSolve extension functions for Aqua's piracy ownership configuration.
  • Base.Docs.Binding and Base.Docs.meta expose the owner module and source path metadata needed to mirror Documenter's @autodocs Modules/Pages selection. The exported Docs.doc and Docs.hasdoc APIs do not expose an equivalent documented query.

I found no existing Aqua, Pkg, or Julia issue/PR for these specific public-API promotions. This should not be fixed by disguising calls with reflection or by globally disabling/ignoring the ExplicitImports check. The local replacements can be separated from any owner-package promotion work.

Environment

Julia Version 1.12.6
Commit 15346901f00 (2026-04-09 19:20 UTC)
OS: Linux (x86_64-linux-gnu)
CPU: AMD EPYC 7502
LLVM: libLLVM-18.1.7 (ORCJIT, znver2)

🤖 Reported by Codex CLI 0.151.0 (model: gpt-5.6-sol; session: local session ID 01a0598f-11b9-72d1-91d9-b2fbb186557d)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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