Skip to content

[reference] rxjava-3.0 iteration-2 regen against skill-async-iteration-2#11991

Draft
jordan-wong wants to merge 1 commit into
masterfrom
eval/rxjava-3.0-async-iter2-clean
Draft

[reference] rxjava-3.0 iteration-2 regen against skill-async-iteration-2#11991
jordan-wong wants to merge 1 commit into
masterfrom
eval/rxjava-3.0-async-iter2-clean

Conversation

@jordan-wong

Copy link
Copy Markdown
Contributor

[reference] rxjava-3.0 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 (PR #11990, 13 new rules
encoded on top of master).

Not intended to be merged as-is.

Research context

Iteration-2 of the async research cycle in apm-instrumentation-toolkit.
Partner PR: #11974 (reactor-core-3.1 iter-2, all 6 gaps CLOSED).

Rxjava3 iteration-1 (#11939) surfaced 3 Rule #2 divergences (RI-1 super
alias dropped, RI-2 muzzle fail block missing, RI-3 reactive-streams
version regression) plus 4 reviewer-derived rules from @ygree (NR-1..NR-4).
All 7 were encoded into the iteration-2 skill (#11990). This PR is the
regeneration against that updated skill.

Score against iteration-1 gaps: 2 of 7 CLOSED

Ref Gap iter-2 result
RI-1 super("rxjava", "rxjava-3") alias CLOSED ✅ — restored verbatim
NR-1 helperClassNames() array ordering CLOSED ✅ — matches master
RI-2 muzzle { fail { rxjava2-must-not-match } } block STILL-OPEN ❌ — skill has rule, model did not apply
RI-3 reactive-streams compileOnly 1.0.3 STILL-OPEN ❌ — regenerated as 1.0.0
NR-2 contextStore() hoist Context.class.getName() STILL-OPEN ❌ — inlined 5x instead of hoisted
NR-3 No inline //-comments in Advice methods STILL-OPEN ❌ — advice bodies have narrative comments
NR-4 No banner separator comments in test files STILL-OPEN ❌ — // --- banners still present

The primary finding — rule-adherence gap

The 5 STILL-OPEN gaps are the primary research signal of this PR. All 5
rules exist in the iteration-2 skill draft (#11990) with explicit ❌/✅
examples and source citations. The model read them and generated output
anyway that violates each one.

This is the same problem class the HTTP cycle diagnosed as N-HTTP-2 earlier
this month: "encoding is not the same as adherence." Adding more prose
guidance to the skill produces inconsistent results — the model applies
some rules naturally (RI-1, NR-1) and doesn't apply others (RI-2, RI-3,
NR-2, NR-3, NR-4).

Contrast with reactor-core-3.1 iter-2 (#11974): all 6 gaps CLOSED. The
reactor result shows the rules work when the model naturally applies them;
this rxjava3 result surfaces the residual adherence gap.

Skill-update prescription for #11990 reviewers: consider whether the 5
open rules belong in reviewer_checks/dd_trace_java/ (deterministic
grep-based enforcement, forces a fix-loop) rather than in prose advisories.
All 5 are mechanically grep-able:

  • fail { name = "..." } presence check
  • compileOnly ... version: diff vs master
  • contextStore() body grep for repeated Class.getName()
  • @Advice.OnMethod* body grep for //-comment lines
  • Test-file grep for // --- banner patterns

Cost note

$55.01 for this iter-2 run vs $43.23 for iter-1 — MORE expensive despite
partial-fix output. Root cause: the reviewer step looped because the
toolkit's lint adapter looked for the wrong directory
(dd-java-agent/instrumentation/rxjava3-generated/, doesn't exist) and
could not auto-fix any issues. That's a separate toolkit adapter bug,
unrelated to the skill iteration.

Local verification

:check :muzzle :latestDepTest all green after generation.

Cross-references

🤖 Generated with APM Instrumentation Toolkit

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 — see PR #11990 for the skill).

Not intended to be merged as-is.

Base: master @ 05671ce (iteration-2 skill under test: de407b5)
Cost: \$55.01, wall time ~1h 30m
Local :check :muzzle :latestDepTest all green.

Score against iteration-1 gaps (mixed result — 2/7 CLOSED):

CLOSED:
- RI-1: super("rxjava", "rxjava-3") alias restored (fixes DD_TRACE_RXJAVA_3_ENABLED
  customer opt-out)
- NR-1: helperClassNames() array ordering matches master

STILL-OPEN (rule-adherence gap — rule in skill, model did not apply):
- RI-2: muzzle { fail { name = "rxjava2-must-not-match" } } block missing
- RI-3: reactive-streams compileOnly regressed 1.0.3 -> 1.0.0
- NR-2: contextStore() inlines Context.class.getName() five times instead of hoisting
- NR-3: inline explanatory //-comments in Advice methods
- NR-4: banner-style separator comments in test files

The 5 STILL-OPEN gaps are the primary research signal of this PR for #11990
reviewers: the rules exist in the skill (all 5 are in the iter-2 skill draft)
but the model did not apply them at generation time. Same rule-adherence gap
class as HTTP cycle's N-HTTP-2 finding. Candidate remediation: move these to
reviewer_checks/ grep-based enforcement rather than skill-prose advisories.

Contrast with reactor-core-3.1 iter-2 (#11974): all 6 gaps CLOSED. The
reactor result shows the rules generalize when the model naturally applies
them; this rxjava3 result shows the residual adherence gap.

Full outcome: docs/eval-research/runs/rxjava3/attempt2/outcome.md in
apm-instrumentation-toolkit.
@datadog-datadog-prod-us1-2

This comment has been minimized.

@dd-octo-sts

dd-octo-sts Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

🟢 Java Benchmark SLOs — All performance SLOs passed

Suite Status
Startup 🟢 pass

SLO thresholds are defined here based on automatically generated metrics. A warning is raised when results are within 5% of the threshold.

PR vs. master results
Scenario Candidate master Δ (95% CI of mean)
startup:insecure-bank:iast:Agent 14.09 s 14.01 s [-0.4%; +1.5%] (no difference)
startup:insecure-bank:tracing:Agent 12.93 s 12.99 s [-1.4%; +0.6%] (no difference)
startup:petclinic:appsec:Agent 16.24 s 16.88 s [-8.0%; +0.4%] (no difference)
startup:petclinic:iast:Agent 16.81 s 16.96 s [-1.7%; -0.1%] (maybe better)
startup:petclinic:profiling:Agent 16.75 s 16.74 s [-1.0%; +1.2%] (no difference)
startup:petclinic:sca:Agent 16.91 s 16.80 s [-0.2%; +1.5%] (no difference)
startup:petclinic:tracing:Agent 16.14 s 16.18 s [-1.4%; +0.8%] (no difference)

Commit: e0722d5e · CI Pipeline · Benchmarking Platform UI


Load and DaCapo benchmarks can be triggered manually in the GitLab pipeline. Results will appear in the Benchmarking Platform UI after completion.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant