{
  "ticket": "U26 #63",
  "generatedAt": "2026-10-26T13:20:01.130971+08:00",
  "environment": {
    "os": "macOS-27.0.1-arm64-arm-64bit",
    "arch": "arm64",
    "jdk": "openjdk version \"21.0.11\" 2026-04-21 LTS\nOpenJDK Runtime Environment (build 21.0.11+11-LTS)\nOpenJDK 64-Bit Server VM (build 21.0.11+11-LTS, mixed mode, sharing)",
    "reactorCore": "3.8.8",
    "reactorTest": "3.8.8",
    "reactiveStreams": "1.0.4",
    "dependencySource": "spring-boot-starter-parent 4.0.9 (BOM resolves reactor-bom 2025.0.8)",
    "externalServices": "none (pure in-JVM async, no ports, no databases)"
  },
  "input": "JAVA_HOME=$(/usr/libexec/java_home -v21) python3 labs/reactor-core/run.py",
  "latestInvocation": {
    "id": "2026-10-26T13:19:53.322624+08:00",
    "finishedAt": "2026-10-26T13:20:01.148566+08:00"
  },
  "artifactSha256": "5cbdaff75f7ac3c3c4b36fc9fa21bf73151761eabc42ba1a6b5adcffa4ed8eaf",
  "runnerSha256": "dbe66e09edcee594403a6c11afac6a231af00a0545feafdfdb9c4deb7605a95e",
  "exitCode": 0,
  "rawLogs": "/Users/gaochao/.cache/software-engineering-study/java-depth-impl/u26/runtime",
  "results": [
    {
      "name": "all-tests",
      "invocationId": "2026-10-26T13:19:53.322624+08:00",
      "startedAt": "2026-10-26T13:19:53.322640+08:00",
      "finishedAt": "2026-10-26T13:19:59.813608+08:00",
      "exitCode": 0,
      "input": [
        "mvn",
        "-q",
        "test"
      ],
      "observed": [
        "U26OBSERVE cancel usingCleanupOnCancel=true cleanupThread=main",
        "U26OBSERVE cancel matrix manual=(cancel=1,finally=[CANCEL]) takeUpstream=(cancel=1,finally=[CANCEL]) takeDownstream=(cancel=0,finally=[ON_COMPLETE]) error=(cancel=0,finally=[ON_ERROR])",
        "U26OBSERVE cancel timeoutFallback result=fallback-value upstreamCancelled=1",
        "U26OBSERVE cancel dispose frozenAt=10 afterWait=10",
        "U26OBSERVE cancel flatMapInnerCancelled activeInners=0 received=4",
        "U26OBSERVE counter-example pending=236 emittedAtCancel=258 received=20 frozenAfterCancel=true",
        "U26OBSERVE counter-example boundedWindow1 pending=0 emitted=19 received=19",
        "U26OBSERVE retry backoff gapsMs=239,518 totalMs=773 attempts=3",
        "U26OBSERVE retry onErrorResume signals=[next:1, resume:mid-failure, next:99, complete]",
        "U26OBSERVE retry exhausted attempts=3 chain=RetryExhaustedException(Retries exhausted: 2/2) <- IllegalStateException(boom-3) exceptionType=RetryExhaustedException",
        "U26OBSERVE retry errorTerminal signals=[next:1, error:mid-failure]",
        "U26OBSERVE schedulers publishOn before=main after=boundedElastic-1",
        "U26OBSERVE schedulers subscribeOn source=u26-sub-2 without=main",
        "U26OBSERVE schedulers fluxParallel threads=[parallel-4, parallel-5]",
        "U26OBSERVE schedulers scalarBlockBypass=true",
        "U26OBSERVE schedulers blockingOnBoundedElastic=boundedElastic-1 elapsedMs=160",
        "U26OBSERVE schedulers segment source=u26-sub-3 mid=boundedElastic-1",
        "U26OBSERVE schedulers blockOnParallel thread=parallel-7 message=block()/blockFirst()/blockLast() are blocking, which is not supported in thread parallel-7",
        "U26OBSERVE backpressure-latest received=[0, 100, 203, 304]",
        "U26OBSERVE backpressure-error received=5 errorType=reactor.core.Exceptions$OverflowException",
        "U26OBSERVE backpressure-drop received=20 dropped=233",
        "U26OBSERVE backpressure-buffer consecutiveCount=20 first=0 last=19",
        "U26OBSERVE context threadLocalOnOtherThread=null reactorContextOnOtherThread=carried",
        "U26OBSERVE context direction beforeWrite=value afterWrite=absent",
        "U26OBSERVE context traversed=a-1-2:v26",
        "U26OBSERVE cold-hot cold coldSubscriptions=2 producedTotal=6",
        "U26OBSERVE cold-hot live onlyAfterSubscribe=[2, 3] preSubscribeEmit=FAIL_ZERO_SUBSCRIBER",
        "U26OBSERVE cold-hot connect lateSubscriber=[] sourceSubscriptions=1",
        "U26OBSERVE cold-hot replay lateSubscriber=[1, 2, 3, 4]",
        "U26OBSERVE request-contract request2 received=2 completed=0",
        "U26OBSERVE request-contract take2 emitted=2 upstreamCancel=1",
        "U26OBSERVE request-contract stepVerifier request2then3 thenCancel",
        "U26OBSERVE request-contract prefetch downstreamRequest=2 upstreamRequested=256"
      ]
    },
    {
      "name": "dependency-tree",
      "invocationId": "2026-10-26T13:19:53.322624+08:00",
      "startedAt": "2026-10-26T13:19:59.813653+08:00",
      "finishedAt": "2026-10-26T13:20:01.128105+08:00",
      "exitCode": 0,
      "input": [
        "mvn",
        "dependency:tree",
        "-Dincludes=io.projectreactor,org.reactivestreams"
      ]
    }
  ],
  "limits": [
    "Pure in-JVM async experiments: no network IO, no listening ports, no external services; Reactor Netty/HTTP-level backpressure is out of scope (U27)",
    "Retry backoff intervals and interval ticks use real wall-clock time (no virtual time), so observed ms values vary between runs within their asserted bounds",
    "The timeout probe intentionally interrupts the sleeping callable on cancellation; the resulting InterruptedException is reported by Reactor onErrorDropped in the log (observable behavior, not a test failure)",
    "block() non-blocking detection: parallel/single scheduler threads implement NonBlocking and trigger IllegalStateException, but synchronous scalar sources override block() (MonoJust returns its value directly) and bypass the check — asserted explicitly by scalarBlockBypass=true",
    "Reactor 3.8.8 has no onBackpressureFatal operator on Flux; the closest boundary is onBackpressureError() (implemented as onBackpressureDrop with an OverflowException) and onBackpressureBuffer(maxSize, BufferOverflowStrategy)"
  ]
}
