QA: run_qa v1.6 form + ExplicitImports#69
Conversation
Final EI ignore-sweep + compat verification (post make-public releases)Re-verified the public-API ExplicitImports cleanup against the now-registered make-public releases: SciMLBase 3.27.0, SciMLTesting 1.7.0, CommonSolve 0.2.9, ExplicitImports 1.15.0, Aqua 0.8.16 ( Caller-migration ( Ignore-sweep: emptied both public-API ignore tuples, then ran the two checks directly with
Compat: bumped Verification (registered releases, no dev): The 1 Broken in both is the intentional, documented The qa.jl public-API ignore lists are therefore not fully empty -- the 11 surviving entries are all genuine non-public third-party names and remain ALLOWED. No Please ignore until reviewed by @ChrisRackauckas. 🤖 Generated with Claude Code |
Collapse the hand-rolled QA group (test/aqua.jl + test/explicit_imports.jl) into a single SciMLTesting.run_qa call (v1.6 form) and enable all six ExplicitImports checks. - aqua_kwargs preserves the genuine non-broken Aqua disables (ambiguities, persistent_tasks, project_extras, deps_compat). - aqua_broken = (:piracies,) preserves the prior `piracies = (; broken = true)` suppression (intentional ArrayInterfaceCore.can_setindex piracy for FillArrays.AbstractFill and Zygote.OneElement); tracked in SciML#68. - explicit_imports = true turns on all six EI checks. The four structural checks (no_implicit_imports, no_stale_explicit_imports, *_via_owners) pass as-is. The two public-API checks get per-name ignore-lists for third-party and Base non-public names (documented by source package). - test deps: add SciMLTesting (compat "1.6"); drop ExplicitImports (transitive via SciMLTesting) and Aqua (no Aqua sub-check needing it as a direct dep is enabled — ambiguities and piracies are both off). QA group verified locally against released SciMLTesting 1.6.0 (Julia 1.10): 9 Pass, 1 Broken (piracies), 0 Fail/Error. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… libs
SciMLTesting 1.7.0 gates the two public-API ExplicitImports checks
(check_all_qualified_accesses_are_public, check_all_explicit_imports_are_public)
to Julia >= 1.11. With the make-public releases (SciMLBase 3.24.0,
CommonSolve 0.2.9, plus Base.Fix1/Fix2 public on >=1.12), the following
ignore entries are now redundant and are removed:
all_qualified_accesses_are_public: Fix1, Fix2 (Base),
Infeasible, MaxIters, MaxTime, Success, T, Terminated,
NullParameters (SciMLBase)
all_explicit_imports_are_public: init, solve, solve! (CommonSolve)
Surviving entries are genuine internals of non-Chris deps still not made
public: PATHSolver (MCP_* / solve_mcp), Zygote (OneElement),
ArrayInterfaceCore (can_setindex), ForwardDiff (jacobian),
TruncatedStacktraces (@truncate_stacktrace), FillArrays (AbstractFill).
Verified QA group green-or-broken (0 hard fail) on Julia 1.12
(public checks run, 9 pass / 1 broken=piracies) and Julia 1.10 lts
(public checks skipped, 7 pass / 1 broken) against registered releases.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
SciMLTesting 1.7.0 gates the two public-API ExplicitImports checks
(check_all_qualified_accesses_are_public / check_all_explicit_imports_are_public)
to Julia >= 1.11. The previous floor "1.6" allowed the resolver to pick a
pre-gating 1.6.x, under which those checks would also run on the 1.10 LTS and
spuriously flag genuinely-public names (the public-API backport is not seen as
public on 1.10). Raising the floor to "1.7" guarantees CI resolves the gated
release, so the LTS lane correctly skips the public-API checks.
Verified the QA group against the registered releases (SciMLBase 3.27.0,
SciMLTesting 1.7.0, CommonSolve 0.2.9, ExplicitImports 1.15.0, Aqua 0.8.16):
* Julia 1.12 (public-API checks RUN): 9 Pass / 1 Broken (:piracies) / 0 Fail.
With empty public-API ignore lists the two checks flag exactly the genuine
non-public third-party survivors already in the lists -- PATHSolver
(MCP_*/solve_mcp), Zygote (OneElement), ArrayInterfaceCore (can_setindex),
ForwardDiff (jacobian), TruncatedStacktraces (@truncate_stacktrace),
FillArrays (AbstractFill); no SciMLBase/CommonSolve/Base name flags, so the
prior strip of those now-public names stands. The four structural EI checks
are clean.
* Julia 1.10 LTS (public-API checks SKIPPED): 7 Pass / 1 Broken (:piracies) /
0 Fail -- exactly the two public-API checks drop out.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Eliminate 3 of the EI public-API ignore entries by fixing the root cause instead of ignoring: - Migrate the `can_setindex` type piracy from the non-public `ArrayInterfaceCore.can_setindex` to `ArrayInterface.can_setindex` (declared `public` in ArrayInterface >= 7.26 on Julia 1.11+), dropping the `:can_setindex` ignore and the stale ArrayInterfaceCore dependency. The `FillArrays.AbstractFill`/`FillArrays.OneElement` `can_setindex` methods are now provided upstream by ArrayInterface's FillArrays extension, so the redundant `AbstractFill` piracy line is removed (it would otherwise overwrite the extension method and break precompilation). - Replace the archived TruncatedStacktraces.jl dependency with a faithful local no-op `@truncate_stacktrace` macro. The upstream macro already expands to `nothing` on Julia >= 1.10 (its `DISABLE` constant is `true` for that range), which matches this package's `julia = "1.10"` compat floor, so behavior is identical. Drops the `@truncate_stacktrace` explicit-import ignore. Remaining EI ignores are genuinely irreducible external API: - PATHSolver `MCP_*` / `solve_mcp` (no exports, no `public`), - `Zygote.OneElement` (Zygote-internal type used in the documented piracy), - `ForwardDiff.jacobian` (documented but not `public`), - `FillArrays.AbstractFill` (documented but neither exported nor `public`, still needed by `__unfillarray`). Verified GROUP=QA on Julia 1.12 (SciMLTesting 1.7.0): Quality Assurance 9 pass / 1 broken / 0 fail. The 1 broken is the pre-existing intentional `:piracies` Aqua exception (issue SciML#68). Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
8863035 to
8c9bb94
Compare
TruncatedStacktraces.jl is archived and its @truncate_stacktrace expands to `nothing` on julia >= 1.10 (this package's compat floor). The locally-reproduced no-op macro and its 9 call sites therefore did nothing at runtime, so remove them outright instead of keeping the stub. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Please ignore until reviewed by @ChrisRackauckas.
Brings this repo's QA onto the SciMLTesting
run_qav1.6 form and enables ExplicitImports.What changed
test/aqua.jl+test/explicit_imports.jl) into a singlerun_qa(ComplementaritySolve; ...)call intest/qa.jl;test/runtests.jlQA group now includesqa.jl.aqua_kwargspreserves the genuine non-broken Aqua disables:ambiguities = false(too many downstream ambiguities),persistent_tasks = false(PATHSolver precompile workload),project_extras = false,deps_compat = false.aqua_broken = (:piracies,)preserves the priorpiracies = (; broken = true)suppression. The two flagged methods are the intentional, documentedArrayInterfaceCore.can_setindexpiracy forFillArrays.AbstractFillandZygote.OneElementinsrc/ComplementaritySolve.jl. Tracked in QA: Aqua piracies known-broken (intentional ArrayInterfaceCore.can_setindex piracy) #68.explicit_imports = trueenables all six ExplicitImports checks (previously onlyno_implicit_imports+no_stale_explicit_importsran).Test-deps (
test/Project.toml)SciMLTestingwith[compat] SciMLTesting = "1.6".ExplicitImports(now transitive via SciMLTesting) andAqua(no Aqua sub-check that requires it as a direct dep is enabled — bothambiguitiesandpiraciesare off).ExplicitImports findings
no_implicit_imports: pass (module already usesusing X: nameeverywhere).no_stale_explicit_imports: pass (no stale imports; nothing kept-for-downstream).all_explicit_imports_via_owners: pass.all_qualified_accesses_via_owners: pass.all_qualified_accesses_are_public: ignored-list of third-party / Base non-public names (each documented by source pkg):Base.Fix1/Fix2(public in 1.12+);SciMLBase.ReturnCodeenum membersInfeasible/MaxIters/MaxTime/Success/T/TerminatedandSciMLBase.NullParameters;PATHSolverMCP_*/solve_mcp;Zygote.OneElement;ArrayInterfaceCore.can_setindex;ForwardDiff.jacobian.all_explicit_imports_are_public: ignored-listTruncatedStacktraces.@truncate_stacktrace,FillArrays.AbstractFill,CommonSolve.init/solve/solve!.ei_broken; no implicit-imports mass refactor was needed.Verification
Ran the QA group locally against released SciMLTesting 1.6.0 (Julia 1.10) via
Pkg.testwithGROUP=QA BACKEND_GROUP=CPU:Per-check breakdown: Aqua (Unbound type parameters / Undefined exports / Stale dependencies) pass;
aqua: piracies (broken)= 1 Broken; all six ExplicitImports checks pass. 0 Fail / 0 Error.🤖 Generated with Claude Code