Skip to content

Fix Pkg.test failure for registered packages (#700) - #701

Merged
CarloLucibello merged 3 commits into
masterfrom
cl/fix-monorepo-test-sources
Jul 31, 2026
Merged

Fix Pkg.test failure for registered packages (#700)#701
CarloLucibello merged 3 commits into
masterfrom
cl/fix-monorepo-test-sources

Conversation

@CarloLucibello

@CarloLucibello CarloLucibello commented Jul 27, 2026

Copy link
Copy Markdown
Member

Fixes #700, plus the pre-existing docs and Mooncake CI failures surfaced on this branch.

1. Pkg.test failure for registered packages (the original #700)

Running Pkg.test on an installed release failed with:

expected package GNNlib [a6a84749] to exist at path …/.julia/packages/GraphNeuralNetworks/GNNlib

The cause was the [sources] section in each package's test/Project.toml, which pointed at sibling packages via relative paths that escape the package directory (e.g. GNNlib = {path = "../../GNNlib"}). These ship inside the registered tarball, so for an end user ../../GNNlib resolves to a nonexistent path.

Fix: remove the escaping ../../ sibling [sources] from the three affected test/Project.toml files, keeping only each package's own non-escaping self-source. Local Pkg.test still resolves siblings to the local dev paths via the top-level [workspace]; a registry install now resolves them from the registry per the existing [compat] bounds. Verified: full local Pkg.test("GraphNeuralNetworks") passes and still uses the local dev siblings.

2. Docs build failure (missing_docs)

The Docs job aborted with 4 docstrings not included in the manual for the GNNlib temporal-cell forward passes tgcn, gconv_gru, gconv_lstm, dcgru. They carried """ docstrings but no @docs block, and Documenter's checkdocs errors on that. (Pre-existing on master.)

Fix: convert those four docstrings to plain # comments, matching the convention for GNNlib's other functional convs (gcn_conv, gat_conv, … are exported but intentionally undocumented). Verified with a full GNNlib/docs/make.jl build.

3. TGCNCell gradient error on the Julia 1.12 ubuntu runner

TGCNCell errored intermittently inside a Mooncake gradient check. Root cause is an upstream Mooncake AD bug, not our layer math: Mooncake returns exactly-zero gradients for some z-gate parameters when differentiating the graph-conv path from an all-zeros initial state (~3% of random inputs), while Zygote and finite differences agree to ~1e-8. It was flaky because the tests use an unseeded RNG (master passed by luck). Only TGCNCell/TGCN are affected; EvolveGCNO is fine, and GConvGRU/GConvLSTM/DCGRU already skip Mooncake.

Fix: skip Mooncake for the TGCNCell and TGCN test items via ad_backends = [Flux.AutoZygote()], the same pattern the sibling cells use, with an explanatory comment. Verified by running the full temporalconv suite (60/60 pass) and confirming Zygote matches finite differences across 60 seeds.

Notes

  • Test/docs-infra only — no CHANGELOG entry or version bump.
  • The [sources] fix reaches end users only once new patch releases are tagged (the broken test/Project.toml is baked into already-registered versions).
  • The Mooncake zero-gradient bug is worth reporting upstream separately.

🤖 Generated with Claude Code

CarloLucibello and others added 3 commits July 27, 2026 18:34
The test/Project.toml files carried `[sources]` entries pointing to
sibling packages via relative paths that escape the package directory
(e.g. `GNNlib = {path = "../../GNNlib"}`). These are shipped inside the
registered tarball, so when an end user runs `Pkg.test` on an installed
release, `../../GNNlib` resolves to a nonexistent path and Pkg errors
with "expected package GNNlib to exist at path .../packages/
GraphNeuralNetworks/GNNlib".

The escaping sibling sources are redundant for local development — the
top-level [workspace] already links the sibling packages as dev
checkouts — so removing them keeps local `Pkg.test` resolving siblings
to the local paths, while a registry install resolves them from the
registry (per the existing [compat] bounds). Each test/Project.toml
keeps only its own non-escaping self-source.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Docs: the GNNlib temporal-cell forward passes (tgcn, gconv_gru,
gconv_lstm, dcgru) had docstrings but no @docs block, so Documenter's
checkdocs aborted the build with "4 docstrings not included in the
manual". Convert them to plain comments, matching the convention for
the other functional convs (gcn_conv, gat_conv, ... are exported but
intentionally undocumented in GNNlib).

Tests: the TGCNCell/TGCN gradient checks errored intermittently on the
Julia 1.12 ubuntu runner. Mooncake returns exactly-zero gradients for
some z-gate params when differentiating the graph-conv path from an
all-zeros initial state (~3% of random inputs); Zygote and finite
differences agree to ~1e-8, so it is an upstream Mooncake bug, not a
layer-math issue. Skip Mooncake for these two items via
ad_backends = [Flux.AutoZygote()], the same pattern GConvGRU/GConvLSTM/
DCGRU already use.

Test/docs only: no changelog entry or version bump.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Traced the flaky TGCNCell/TGCN Mooncake failure to an upstream bug in
Mooncake's gradient through NNlib.sigmoid (reported as
chalk-lab/Mooncake.jl#1257), not the all-zeros initial state as first
thought. Update the ad_backends skip comments to reflect the real cause
and link the issue.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@CarloLucibello
CarloLucibello merged commit b763cdd into master Jul 31, 2026
9 of 10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Testing GraphNeuralNetworks fails

1 participant