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

RefGapiter-2 result
RI-1super("rxjava", "rxjava-3") aliasCLOSED ✅ — restored verbatim
NR-1helperClassNames() array orderingCLOSED ✅ — matches master
RI-2muzzle { fail { rxjava2-must-not-match } } blockSTILL-OPEN ❌ — skill has rule, model did not apply
RI-3reactive-streams compileOnly 1.0.3STILL-OPEN ❌ — regenerated as 1.0.0
NR-2contextStore() hoist Context.class.getName()STILL-OPEN ❌ — inlined 5x instead of hoisted
NR-3No inline //-comments in Advice methodsSTILL-OPEN ❌ — advice bodies have narrative comments
NR-4No banner separator comments in test filesSTILL-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

Copy link
Copy Markdown
Contributor

🟢 Java Benchmark SLOs — All performance SLOs passed

SuiteStatus
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
ScenarioCandidatemasterΔ (95% CI of mean)
startup:insecure-bank:iast:Agent14.09 s14.01 s[-0.4%; +1.5%] (no difference)
startup:insecure-bank:tracing:Agent12.93 s12.99 s[-1.4%; +0.6%] (no difference)
startup:petclinic:appsec:Agent16.24 s16.88 s[-8.0%; +0.4%] (no difference)
startup:petclinic:iast:Agent16.81 s16.96 s[-1.7%; -0.1%] (maybe better)
startup:petclinic:profiling:Agent16.75 s16.74 s[-1.0%; +1.2%] (no difference)
startup:petclinic:sca:Agent16.91 s16.80 s[-0.2%; +1.5%] (no difference)
startup:petclinic:tracing:Agent16.14 s16.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 freeto 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

@jordan-wong