{
  "ticket": "U25 #62",
  "generatedAt": "2026-10-26T12:30:38.362286+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)",
    "boot": "4.0.9",
    "framework": "7.0.10",
    "security": "7.0.8",
    "mysql": "127.0.0.1:3306 root empty password, synthetic database u25_<uuid> per run",
    "redis": "127.0.0.1:6379 database 13, own key prefix u25:<uuid>"
  },
  "input": "JAVA_HOME=$(/usr/libexec/java_home -v21) python3 labs/boot-testing/run.py",
  "latestInvocation": {
    "id": "2026-10-26T12:30:24.350747+08:00",
    "finishedAt": "2026-10-26T12:30:38.375715+08:00"
  },
  "artifactSha256": "ed060923e6c064e8da64d6ed5921c3d54691d314bb8b3283d282aeb6a59a33de",
  "runnerSha256": "259471350485738d423832ebe76f2d57ebc145ae8ec4595827ae74e0dfe95c17",
  "exitCode": 0,
  "rawLogs": "/Users/gaochao/.cache/software-engineering-study/java-depth-impl/u25/runtime",
  "results": [
    {
      "name": "all-modules-test",
      "invocationId": "2026-10-26T12:30:24.350747+08:00",
      "startedAt": "2026-10-26T12:30:24.350767+08:00",
      "finishedAt": "2026-10-26T12:30:34.867825+08:00",
      "exitCode": 0,
      "input": [
        "mvn",
        "-q",
        "test"
      ],
      "observed": [
        "U25OBSERVE context ContextRefreshedEvent profiles=[] marker=- ctx@2021601975",
        "U25OBSERVE shared-first profiles=[] marker=- ctx@2021601975",
        "U25OBSERVE shared-second-reuses profiles=[] marker=- ctx@2021601975",
        "U25OBSERVE context ContextRefreshedEvent profiles=[u25] marker=- ctx@1276761134",
        "U25OBSERVE profile-context profiles=[u25] marker=- ctx@1276761134",
        "U25OBSERVE context ContextRefreshedEvent profiles=[] marker=property-probe ctx@2012528704",
        "U25OBSERVE property-context profiles=[] marker=property-probe ctx@2012528704",
        "U25OBSERVE dirty-uses-cached profiles=[] marker=- ctx@2021601975",
        "U25OBSERVE context ContextClosedEvent profiles=[] marker=- ctx@2021601975",
        "U25OBSERVE context ContextRefreshedEvent profiles=[] marker=- ctx@672493939",
        "U25OBSERVE after-dirty-rebuilt profiles=[] marker=- ctx@672493939",
        "U25OBSERVE summary refreshCount=4 closeCount=1 sequence=5",
        "U25OBSERVE tx rollbackGroup visibleInTx=1",
        "U25OBSERVE tx rollbackGroup absentAfterRollback=0",
        "U25OBSERVE tx commitGroup committedByCommitAnnotation",
        "U25OBSERVE tx commitGroup visibleFromFreshServerConnection=1",
        "U25OBSERVE tx syntheticDatabaseDropped=u25_bb0b5f2d09ef46d9afc4035326b24edc",
        "U25OBSERVE mockmvc-filters open=200 anonymous=401 wrongPassword=401 user=200 userOnAdmin=403 ops=200",
        "U25OBSERVE mocked-users mockPassword=200 productionPassword=401",
        "U25OBSERVE standalone anonymousHello=200 anonymousAdmin=200",
        "U25OBSERVE real-port challenge=Basic realm=\"Realm\" serverPort=50609",
        "U25OBSERVE real-port port=50609 open=200 anonymous=401 wrongPassword=401 user=200 userOnAdmin=403 ops=200",
        "U25OBSERVE mockmvc-nofilters anonymousHello=200",
        "U25OBSERVE redis-slice ping=PONG ownKeyDeleted=u25:b50f0096-a922-4687-a45e-83a6d45ad30f:ping",
        "U25OBSERVE redis-slice redisTemplate=1 jdbcBeans=0 controllerBeans=0",
        "U25OBSERVE jdbc-slice jdbcBeans=1 controllerBeans=0 dispatcherServletBeans=0",
        "U25OBSERVE jdbc-slice insertVisibleInTx=1",
        "U25OBSERVE jdbc-slice rowsAfterRollback=0",
        "U25OBSERVE jdbc-slice syntheticDatabaseDropped=u25_4a7dea27acae465980d16add8c71b491",
        "U25OBSERVE webmvc-slice serviceBeans=mock jdbcBeans=0",
        "U25OBSERVE webmvc-slice stubbedBody={\"first\":\"stub-order\",\"count\":1}",
        "U25OBSERVE webmvc-slice securityFilterChains=0 anonymous=200 note=Boot4 slice needs spring-boot-security-test for security",
        "U25OBSERVE webmvc-slice-security securityFilterChains=1 anonymous=401",
        "U25OBSERVE webmvc-slice-security mockedUser=200",
        "U25OBSERVE client controlledServer=127.0.0.1:50666 refusedPort=50667",
        "U25OBSERVE client connectionRefused=ResourceAccessException cause=java.net.ConnectException",
        "U25OBSERVE client successPath=200 body=ok",
        "U25OBSERVE client readTimeout=ResourceAccessException cause=java.net.http.HttpTimeoutException",
        "U25OBSERVE client serverError=500 exchangeHandled=500",
        "U25OBSERVE client controlledServerStopped"
      ]
    },
    {
      "name": "webmvc-slice-missing-service",
      "invocationId": "2026-10-26T12:30:24.350747+08:00",
      "startedAt": "2026-10-26T12:30:34.868367+08:00",
      "finishedAt": "2026-10-26T12:30:36.834631+08:00",
      "exitCode": 1,
      "input": [
        "mvn",
        "-q",
        "-pl",
        "slices",
        "test",
        "-Dtest=WebMvcSliceMissingServiceProbe"
      ]
    },
    {
      "name": "webmvc-slice-missing-service-observed",
      "invocationId": "2026-10-26T12:30:24.350747+08:00",
      "failure": "UnsatisfiedDependencyException: Error creating bean with name 'apiController' defined in file [/Users/gaochao/Documents/面试/software-engineering-study/labs/boot-testing/slices/target/classes/study/testing/slices/ApiController.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'study.testing.slices.OrderService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}",
      "observed": [
        "U25OBSERVE negative slice missing OrderService fails context load"
      ]
    },
    {
      "name": "web-dependency-tree",
      "invocationId": "2026-10-26T12:30:24.350747+08:00",
      "startedAt": "2026-10-26T12:30:36.834974+08:00",
      "finishedAt": "2026-10-26T12:30:38.350147+08:00",
      "exitCode": 0,
      "input": [
        "mvn",
        "-pl",
        "web",
        "dependency:tree",
        "-Dincludes=org.springframework.boot:spring-boot-starter-parent,org.springframework:spring-test,org.springframework.boot:spring-boot-test,org.springframework.boot:spring-boot-webmvc-test,org.springframework.security:spring-security-config"
      ]
    }
  ],
  "limits": [
    "Loopback tests only: MockMvc cases never start a servlet container, TLS or real network dispatch; real-container evidence is limited to the RANDOM_PORT Tomcat cases in the web module",
    "Transaction proofs run against the local MySQL instance with a per-run synthetic database u25_<uuid> that is dropped afterwards; no other database or user data is touched",
    "Redis slice uses database 13 with own u25:<uuid> key prefix and deletes only its own keys; Redis server configuration is untouched",
    "The negative slice probe intentionally fails context load; it is listed as a separate result with exit code 1 and is not part of the passing aggregate run",
    "Client error paths use a JDK built-in HttpServer fixture on loopback; no external service, proxy or production endpoint is contacted"
  ]
}
