[reference] reactor-core-3.1 iteration-2 regen against skill-async-iteration-2#11974
Draft
jordan-wong wants to merge 1 commit into
Draft
[reference] reactor-core-3.1 iteration-2 regen against skill-async-iteration-2#11974jordan-wong wants to merge 1 commit into
jordan-wong wants to merge 1 commit into
Conversation
Reference output from the toolkit's automated instrumentation-authoring workflow, run against the iteration-2 skill draft (feat/skill-async-iteration-2, 5 skill commits on top of master). Iteration-2 was scoped to test whether the skill's new library-native context-map guidance closes the primary iteration-1 gap: dropped ReactorContextBridge + 4 supporting classes that broke Spring WebFlux + Spring Kafka reactive. Not intended to be merged as-is. Base: master @ 05671ce (iteration-2 skill under test: de407b52c2) Cost: \$7.67, wall time ~1h 6m, reviewer approved with 0 todos remaining. Diff scope: 3 net-new Java test files under src/test/java/testdog/trace/instrumentation/reactor/core/. All other generated content (production classes, build.gradle, latestDepTest source set) matches master byte-identically — the skill's Rule #2 preservation strengthenings and library-native context-map prescriptions produced a faithful regeneration of the full 7-class master surface, including ReactorContextBridge and the 4 supporting operator instrumentations that iteration-1 dropped. Score against iteration-1 gaps: all 6 CLOSED (RI-4 package layout, RI-5 enumerate master classes, RI-6 library-native context-map pattern, RI-7 latestDepTest source set, NR-5 test-scope build.gradle deps, NR-6 wrap placement). See docs/eval-research/runs/reactor-core/attempt2/outcome.md in apm-instrumentation-toolkit for the full score table.
Contributor
🟢 Java Benchmark SLOs — All performance SLOs passed
PR vs. master results
Commit: Load and DaCapo benchmarks can be triggered manually in the GitLab pipeline. Results will appear in the Benchmarking Platform UI after completion. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
[reference] reactor-core-3.1 iteration-2 regen against skill-async-iteration-2
Reference output from the toolkit's automated instrumentation-authoring
workflow, run against the iteration-2 skill draft. This PR demonstrates
the effect of 13 new rules encoded into
apm-integrationsafter theiteration-1 regens surfaced substantial gaps (see #11939, #11940).
Not intended to be merged as-is.
Research context
Iteration-2 of the async research cycle in the apm-instrumentation-toolkit.
Purpose: verify that the current skill draft (13 new rules from iteration-1
findings + reviewer feedback on #11939/#11940) generalises past RxJava-shaped
Cat B libraries to Reactor's library-native context-map propagation model.
Primary hypothesis under test: does the skill's new
context-tracking.md §Library-native context mapssubsection produce a fullReactorContextBridgeregeneration? Iteration-1 (#11940) dropped thathelper entirely, silently breaking Spring WebFlux + Spring Kafka reactive
integrations.
Result: yes, decisively. The regen produced a byte-identical
ReactorContextBridge.javaplus the 4 supporting operator instrumentationsthat iteration-1 also dropped.
Skill under test
feat/skill-async-iteration-2(5 commits on top ofmaster)reviewer-derived rules (NR-1..NR-6)
docs/eval-research/http-findings-2026-07-16/FEEDBACK-CONSOLIDATED-2026-07-16.mdin apm-instrumentation-toolkit
Diff scope
3 net-new Java test files under
src/test/java/testdog/trace/instrumentation/reactor/core/:ReactorAsyncResultExtensionTest.java(167 lines)ReactorCoreTest.java(681 lines)SubscriptionTest.java(324 lines)Everything else the toolkit generated (production classes,
build.gradle,src/latestDepTest/source set) matches master byte-identically. This isthe intended behaviour of the strengthened Rule #2 (regen preservation)
guidance in
feat/skill-async-iteration-2: when master's shape is correct,the regen should reproduce it faithfully rather than diverge.
Changes applied on top of eval output
./gradlew spotlessApply) — the generatedReactorCoreTest.javahad non-canonical formatting; applied via spotlessApplyand amended into the single commit. No functional changes.
Score against iteration-1 gaps
reactor.core.*(dotted) vsreactorcore.*(concatenated)datadog/trace/instrumentation/reactor/core— matches master exactly*Instrumentation.javaclasses droppedReactorCoreModule,ReactorContextBridge,ReactorAsyncResultExtension,BlockingPublisherInstrumentation,ContextWritingSubscriberInstrumentation,CorePublisherInstrumentation,OptimizableOperatorInstrumentationdd.spancontext-map propagation not generatedReactorContextBridge.javaregenerated byte-identical to master (7 references todd.span/reactor.util.context.Context)src/latestDepTest/source set not createdsrc/latestDepTest/{groovy,java}/present with all 3 master tests +annotatedsample/CorePublisherInstrumentation+OptimizableOperatorInstrumentation, not per-operator; usesContextStore<Subscriber, Context>(subscriber-lifecycle)All 6 gaps closed at 55% of iteration-1's cost ($7.67 vs $13).
Where to focus review
The new Java test files at
src/test/java/testdog/trace/instrumentation/reactor/core/are the primary review surface. They exercise:
ReactorCoreTest.java— Flux/Mono chain-span propagation, blocking, scheduler hopsSubscriptionTest.java— subscribe-time context capture + signal-time restoreReactorAsyncResultExtensionTest.java— the async-result-extension wrapping pathCoexisting with master's
src/test/groovy/*.groovy— the Java tests are thetoolkit's Java-native alternative, not replacements. Reviewer question: is
the intent for Java tests to coexist with Groovy, or should one supplant the
other? Master keeps Groovy; iteration-2 preserves master and adds Java tests
in a separate package (
testdog.trace.instrumentation.reactor.core).Pre-review checklist
src/test/java/testdog/trace/instrumentation/reactor/core/, no metadata, no siblings, no.analysis/leakage[reference]prefix, "not intended to merge as-is", attributionCross-references
docs/eval-research/runs/reactor-core/attempt2/outcome.mdin apm-instrumentation-toolkitdocs/eval-research/runs/reactor-core/attempt2/skill-provenance.mddocs/eval-research/http-findings-2026-07-16/FEEDBACK-CONSOLIDATED-2026-07-16.md🤖 Generated with APM Instrumentation Toolkit