Failure Details
Failed Jobs and Errors
Only one job failed: Per-Class Coverage Gate
All build and test jobs passed (5702 tests passing across Java 11/17/21/25 + jcstress).
The coverage gate reported regressions in two classes:
1. graphql.execution.directives.QueryDirectivesImpl — Line: −0.4%, Branch: −5.0%, Method: −0.7%
This PR extracts two private methods (toAppliedDirective and toAppliedArgument) from QueryDirectivesImpl into DirectivesResolver as public methods. These extracted methods were fully covered. Removing fully-covered code from a class that isn't at 100% raises the proportion of missed items, causing a percentage drop even though no coverage was actually lost.
Math: Baseline was 82/84 lines = 97.6%. After removing ~10 covered lines, it becomes 72/74 = 97.3%. The 2 missed lines stay the same but now represent a larger fraction.
Verdict: False positive — mathematical artifact of refactoring.
2. graphql.normalized.ExecutableNormalizedOperationFactory — Line: −8.0%, Method: −12.5%
The 4-argument convenience overload createExecutableNormalizedOperation(schema, operationDefinition, fragments, coercedVars) (lines ~311–320) lost its only caller. This PR changes ExecutionContext.mkExecutableNormalizedOperation() to call the 5-arg overload with Options (passing graphQLContext and locale). The 4-arg method is now dead from a test coverage perspective.
Verdict: Real gap — a trivial one-line delegator method lost its only calling path.
Root Cause
The coverage gate correctly flagged that ExecutableNormalizedOperationFactory's 4-arg overload is no longer exercised by any test path. The QueryDirectivesImpl regression is a false positive caused by code extraction.
Recommended Fix
Note: A detailed analysis was already posted to PR #4297 by @andimarek.
Generated by CI Failure Doctor
To install this workflow, run gh aw add githubnext/agentics/workflows/ci-doctor.md@ee50a3b7d1d3eb4a8c409ac9409fd61c9a66b0f5. View source at https://github.com/githubnext/agentics/tree/ee50a3b7d1d3eb4a8c409ac9409fd61c9a66b0f5/workflows/ci-doctor.md.
Failure Details
extract-out-operation-directivesFailed Jobs and Errors
Only one job failed: Per-Class Coverage Gate
All build and test jobs passed (5702 tests passing across Java 11/17/21/25 + jcstress).
The coverage gate reported regressions in two classes:
1.
graphql.execution.directives.QueryDirectivesImpl— Line: −0.4%, Branch: −5.0%, Method: −0.7%This PR extracts two private methods (
toAppliedDirectiveandtoAppliedArgument) fromQueryDirectivesImplintoDirectivesResolveras public methods. These extracted methods were fully covered. Removing fully-covered code from a class that isn't at 100% raises the proportion of missed items, causing a percentage drop even though no coverage was actually lost.Math: Baseline was
82/84 lines = 97.6%. After removing ~10 covered lines, it becomes72/74 = 97.3%. The 2 missed lines stay the same but now represent a larger fraction.Verdict: False positive — mathematical artifact of refactoring.
2.
graphql.normalized.ExecutableNormalizedOperationFactory— Line: −8.0%, Method: −12.5%The 4-argument convenience overload
createExecutableNormalizedOperation(schema, operationDefinition, fragments, coercedVars)(lines ~311–320) lost its only caller. This PR changesExecutionContext.mkExecutableNormalizedOperation()to call the 5-arg overload withOptions(passinggraphQLContextandlocale). The 4-arg method is now dead from a test coverage perspective.Verdict: Real gap — a trivial one-line delegator method lost its only calling path.
Root Cause
The coverage gate correctly flagged that
ExecutableNormalizedOperationFactory's 4-arg overload is no longer exercised by any test path. TheQueryDirectivesImplregression is a false positive caused by code extraction.Recommended Fix
createExecutableNormalizedOperation(schema, operationDefinition, fragments, coercedVars)overload inExecutableNormalizedOperationFactoryTestto restore coverage.test-baseline.jsonto accept the new lower coverage baseline forQueryDirectivesImplandExecutableNormalizedOperationFactory(acceptable if the 4-arg method is considered a trivial convenience wrapper).QueryDirectivesImplfalse positive could be addressed by updating the baseline, since no actual test coverage was lost.