Skip to content

Javadoc silencers passed on a workflow's mvn command line evade both strictness guards #205

Description

@EtaCassiopeia

Problem

rift-java now has two javadoc-strictness guards, and neither can see a silencer added to a workflow's own Maven command line:

maven-javadoc-plugin binds failOnError and skip to the user properties maven.javadoc.failOnError and maven.javadoc.skip. Those can be supplied with -D on the command line, where they never appear in help:effective-pom output. So adding -Dmaven.javadoc.failOnError=false to the real deploy command in .github/workflows/publish.yml (the deploy step) would silence javadoc errors for the actual Central release while both guards keep reporting "javadoc strictness confirmed".

This is the same self-concealing shape as #197#200#203, relocated one more layer out: from the root pom, to a module pom, to the CI invocation.

Evidence

  • scripts/check-javadoc-strictness.py header states this limitation explicitly ("It cannot see a `-Dmaven.javadoc.failOnError=false` added to a workflow's own mvn command line").
  • CONTRIBUTING.md repeats it in the "Build & verify" section.
  • The deploy command in publish.yml and the sweep's own help:effective-pom invocation in ci.yml are independent hardcoded strings — nothing keeps them consistent.
  • Raised by a silent-failure-hunter review agent during review of PR test(ci): sweep every module's effective javadoc config for silencers (#203) #204; deliberately scoped out of that PR, whose charter was the per-module POM gap.

Proposed Fix Options

This needs a design decision, hence triage not auto-implement.

Option A – assert the workflow commands themselves: a CI step that scans .github/workflows/*.yml for -Dmaven.javadoc. / -Ddoclint= / -Dmaven.javadoc.skip on any mvnw line and fails. Cheap, but it is a literal-string grep at a new layer (the same objection that got the grep option rejected in #200).

Option B – have the release lane assert the resolved value at run time: e.g. a tiny help:evaluate -Dexpression=maven.javadoc.failOnError check inside the same invocation, so whatever the command line actually set is what gets asserted. Closer to the effective-config philosophy already adopted in #203.

Option C – accept and document: the deploy command is a small, rarely-edited, code-reviewed surface.

Note: Option B is the only one that inspects the value Maven actually resolves for the invocation under test, which is the property #203 was chosen to have.

Provenance

Discovered during review of PR #204 (issue #203), merged as 75dbfd3. Pre-existing boundary of both guards, not introduced by that PR.

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

    agent-foundFinding discovered by automated agent reviewneeds-triageIssue awaiting triage and prioritization

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions